Phishing Methodology
Reading time: 15 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Методологія
- Розвідка жертви
- Виберіть домен жертви.
- Виконайте базову веб-енумерацію в пошуках порталів для входу, які використовує жертва, і вирішіть, який з них ви будете імітувати.
- Використовуйте деякі OSINT для пошуку електронних адрес.
- Підготуйте середовище
- Купіть домен, який ви будете використовувати для фішингової оцінки.
- Налаштуйте електронну пошту та пов'язані записи (SPF, DMARC, DKIM, rDNS).
- Налаштуйте VPS з gophish.
- Підготуйте кампанію
- Підготуйте шаблон електронної пошти.
- Підготуйте веб-сторінку для крадіжки облікових даних.
- Запустіть кампанію!
Генерація подібних доменних імен або купівля надійного домену
Техніки варіації доменних імен
- Ключове слово: Доменне ім'я містить важливе ключове слово оригінального домену (наприклад, zelster.com-management.com).
- Гіпенізований піддомен: Змініть крапку на дефіс у піддомені (наприклад, www-zelster.com).
- Новий TLD: Той самий домен з використанням нового TLD (наприклад, zelster.org).
- Гомогліф: Він замінює літеру в доменному імені на літери, які виглядають подібно (наприклад, zelfser.com).
- Транспозиція: Він міняє місцями дві літери в доменному імені (наприклад, zelsetr.com).
- Сингуларизація/Плюралізація: Додає або видаляє “s” в кінці доменного імені (наприклад, zeltsers.com).
- Пропуск: Він видаляє одну з літер з доменного імені (наприклад, zelser.com).
- Повторення: Він повторює одну з літер у доменному імені (наприклад, zeltsser.com).
- Замінювання: Як гомогліф, але менш непомітно. Він замінює одну з літер у доменному імені, можливо, на літеру, що знаходиться поруч з оригінальною літерою на клавіатурі (наприклад, zektser.com).
- Піддомен: Введіть крапку всередині доменного імені (наприклад, ze.lster.com).
- Вставка: Він вставляє літеру в доменне ім'я (наприклад, zerltser.com).
- Відсутня крапка: Додайте TLD до доменного імені. (наприклад, zelstercom.com)
Автоматичні інструменти
Вебсайти
- https://dnstwist.it/
- https://dnstwister.report/
- https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/
Бітфліпінг
Існує можливість, що один з бітів, що зберігаються або передаються, може автоматично змінитися через різні фактори, такі як сонячні спалахи, космічні промені або апаратні помилки.
Коли цей концепт застосовується до DNS-запитів, можливо, що домен, отриманий DNS-сервером, не є тим самим доменом, який спочатку запитувався.
Наприклад, одна зміна біта в домені "windows.com" може змінити його на "windnws.com."
Зловмисники можуть використовувати це, реєструючи кілька доменів з бітфліпінгом, які схожі на домен жертви. Їхнє намір — перенаправити легітимних користувачів на свою інфраструктуру.
Для отримання додаткової інформації читайте https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/
Купівля надійного домену
Ви можете шукати на https://www.expireddomains.net/ за простроченим доменом, який ви могли б використовувати.
Щоб переконатися, що прострочений домен, який ви збираєтеся купити, вже має хороший SEO, ви можете перевірити, як він категоризується в:
Виявлення електронних адрес
- https://github.com/laramies/theHarvester (100% безкоштовно)
- https://phonebook.cz/ (100% безкоштовно)
- https://maildb.io/
- https://hunter.io/
- https://anymailfinder.com/
Щоб виявити більше дійсних електронних адрес або перевірити ті, які ви вже виявили, ви можете перевірити, чи можете ви брутфорсити їх SMTP-сервери жертви. Дізнайтеся, як перевірити/виявити електронну адресу тут.
Крім того, не забувайте, що якщо користувачі використовують будь-який веб-портал для доступу до своїх електронних листів, ви можете перевірити, чи він вразливий до брутфорсу імені користувача, і експлуатувати вразливість, якщо це можливо.
Налаштування GoPhish
Встановлення
Ви можете завантажити його з https://github.com/gophish/gophish/releases/tag/v0.11.0
Завантажте та розпакуйте його в /opt/gophish
і виконайте /opt/gophish/gophish
Вам буде надано пароль для адміністратора на порту 3333 виводу. Тому отримайте доступ до цього порту та використовуйте ці облікові дані, щоб змінити пароль адміністратора. Вам, можливо, потрібно буде тунелювати цей порт на локальний:
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
Налаштування
Налаштування TLS сертифіката
Перед цим кроком ви повинні вже купити домен, який ви збираєтеся використовувати, і він повинен вказувати на IP вашого VPS, де ви налаштовуєте gophish.
DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot certonly --standalone -d "$DOMAIN"
mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
Налаштування пошти
Почніть установку: apt-get install postfix
Потім додайте домен до наступних файлів:
- /etc/postfix/virtual_domains
- /etc/postfix/transport
- /etc/postfix/virtual_regexp
Також змініть значення наступних змінних у файлі /etc/postfix/main.cf
myhostname = <domain>
mydestination = $myhostname, <domain>, localhost.com, localhost
Нарешті, змініть файли /etc/hostname
та /etc/mailname
на ваше доменне ім'я та перезавантажте ваш VPS.
Тепер створіть DNS A запис для mail.<domain>
, що вказує на ip-адресу VPS, та DNS MX запис, що вказує на mail.<domain>
Тепер давайте протестуємо відправку електронного листа:
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
Конфігурація Gophish
Зупиніть виконання gophish і давайте налаштуємо його.
Змініть /opt/gophish/config.json
на наступне (зверніть увагу на використання https):
{
"admin_server": {
"listen_url": "127.0.0.1:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key"
},
"phish_server": {
"listen_url": "0.0.0.0:443",
"use_tls": true,
"cert_path": "/opt/gophish/ssl_keys/key.crt",
"key_path": "/opt/gophish/ssl_keys/key.pem"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}
Налаштуйте сервіс gophish
Щоб створити сервіс gophish, щоб його можна було запускати автоматично та керувати ним як сервісом, ви можете створити файл /etc/init.d/gophish
з наступним вмістом:
#!/bin/bash
# /etc/init.d/gophish
# initialization file for stop/start of gophish application server
#
# chkconfig: - 64 36
# description: stops/starts gophish application server
# processname:gophish
# config:/opt/gophish/config.json
# From https://github.com/gophish/gophish/issues/586
# define script variables
processName=Gophish
process=gophish
appDirectory=/opt/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error
start() {
echo 'Starting '${processName}'...'
cd ${appDirectory}
nohup ./$process >>$logfile 2>>$errfile &
sleep 1
}
stop() {
echo 'Stopping '${processName}'...'
pid=$(/bin/pidof ${process})
kill ${pid}
sleep 1
}
status() {
pid=$(/bin/pidof ${process})
if [["$pid" != ""| "$pid" != "" ]]; then
echo ${processName}' is running...'
else
echo ${processName}' is not running...'
fi
}
case $1 in
start|stop|status) "$1" ;;
esac
Завершіть налаштування служби та перевірте її, виконавши:
mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
update-rc.d gophish defaults
#Check the service
service gophish start
service gophish status
ss -l | grep "3333\|443"
service gophish stop
Налаштування поштового сервера та домену
Чекайте та будьте легітимними
Чим старіший домен, тим менше ймовірно, що його сприймуть як спам. Тому вам слід чекати якомога більше часу (принаймні 1 тиждень) перед оцінкою фішингу. Більше того, якщо ви створите сторінку про репутаційний сектор, отримана репутація буде кращою.
Зверніть увагу, що навіть якщо вам потрібно почекати тиждень, ви можете закінчити налаштування всього зараз.
Налаштування зворотного DNS (rDNS) запису
Встановіть запис rDNS (PTR), який перетворює IP-адресу VPS на доменне ім'я.
Запис політики відправника (SPF)
Вам потрібно налаштувати запис SPF для нового домену. Якщо ви не знаєте, що таке запис SPF прочитайте цю сторінку.
Ви можете використовувати https://www.spfwizard.net/ для генерації вашої SPF політики (використовуйте IP-адресу машини VPS)
Це вміст, який потрібно встановити в TXT записі всередині домену:
v=spf1 mx a ip4:ip.ip.ip.ip ?all
Domain-based Message Authentication, Reporting & Conformance (DMARC) Record
Ви повинні налаштувати запис DMARC для нового домену. Якщо ви не знаєте, що таке запис DMARC прочитайте цю сторінку.
Вам потрібно створити новий DNS TXT запис, вказуючи ім'я хоста _dmarc.<domain>
з наступним вмістом:
v=DMARC1; p=none
DomainKeys Identified Mail (DKIM)
Вам потрібно налаштувати DKIM для нового домену. Якщо ви не знаєте, що таке запис DMARC прочитайте цю сторінку.
Цей посібник оснований на: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy
note
Вам потрібно об'єднати обидва значення B64, які генерує ключ DKIM:
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
Test your email configuration score
Ви можете зробити це, використовуючи https://www.mail-tester.com/
Просто перейдіть на сторінку та надішліть електронний лист на адресу, яку вони вам нададуть:
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
Ви також можете перевірити свою конфігурацію електронної пошти, надіславши електронний лист на check-auth@verifier.port25.com
та прочитавши відповідь (для цього вам потрібно буде відкрити порт 25 і побачити відповідь у файлі /var/mail/root, якщо ви надішлете електронний лист як root).
Перевірте, що ви пройшли всі тести:
==========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
Ви також можете надіслати повідомлення на Gmail під вашим контролем і перевірити заголовки електронної пошти у вашій поштовій скриньці Gmail, dkim=pass
має бути присутнім у полі заголовка Authentication-Results
.
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;
Видалення з чорного списку Spamhouse
Сторінка www.mail-tester.com може вказати, чи ваш домен заблоковано Spamhouse. Ви можете запросити видалення вашого домену/IP за адресою: https://www.spamhaus.org/lookup/
Видалення з чорного списку Microsoft
Ви можете запросити видалення вашого домену/IP за адресою https://sender.office.com/.
Створення та запуск кампанії GoPhish
Профіль відправника
- Встановіть ім'я для ідентифікації профілю відправника
- Вирішіть, з якого облікового запису ви будете надсилати фішингові електронні листи. Пропозиції: noreply, support, servicedesk, salesforce...
- Ви можете залишити порожніми ім'я користувача та пароль, але обов'язково перевірте "Ігнорувати помилки сертифіката"
note
Рекомендується використовувати функцію "Надіслати тестовий електронний лист", щоб перевірити, чи все працює.
Я б рекомендував надсилати тестові електронні листи на адреси 10min mails, щоб уникнути потрапляння в чорний список під час тестування.
Шаблон електронного листа
- Встановіть ім'я для ідентифікації шаблону
- Потім напишіть тему (нічого дивного, просто щось, що ви могли б очікувати прочитати в звичайному електронному листі)
- Переконайтеся, що ви відмітили "Додати трекінгове зображення"
- Напишіть шаблон електронного листа (ви можете використовувати змінні, як у наступному прикладі):
<html>
<head>
<title></title>
</head>
<body>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>
<br />
Note: We require all user to login an a very suspicios page before the end of the week, thanks!<br />
<br />
Regards,</span></p>
WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
<p>{{.Tracker}}</p>
</body>
</html>
Зверніть увагу, що для підвищення достовірності електронного листа рекомендується використовувати підпис з електронного листа клієнта. Пропозиції:
- Відправте електронний лист на неіснуючу адресу та перевірте, чи є у відповіді підпис.
- Шукайте публічні електронні адреси такі як info@ex.com або press@ex.com або public@ex.com і надішліть їм електронний лист, а потім чекайте на відповідь.
- Спробуйте зв'язатися з якою-небудь дійсною виявленою електронною адресою та чекайте на відповідь.
note
Шаблон електронного листа також дозволяє додавати файли для відправки. Якщо ви також хочете вкрасти NTLM виклики, використовуючи спеціально підготовлені файли/документи прочитайте цю сторінку.
Лендінг Пейдж
- Напишіть ім'я
- Напишіть HTML код веб-сторінки. Зверніть увагу, що ви можете імпортувати веб-сторінки.
- Позначте Захопити надіслані дані та Захопити паролі
- Встановіть перенаправлення
note
Зазвичай вам потрібно буде змінити HTML код сторінки та провести деякі тести локально (можливо, використовуючи якийсь Apache сервер) поки вам не сподобаються результати. Потім напишіть цей HTML код у вікні.
Зверніть увагу, що якщо вам потрібно використовувати деякі статичні ресурси для HTML (можливо, деякі CSS та JS сторінки), ви можете зберегти їх у /opt/gophish/static/endpoint і потім отримати до них доступ з /static/<filename>
note
Для перенаправлення ви можете перенаправити користувачів на легітимну основну веб-сторінку жертви або перенаправити їх на /static/migration.html, наприклад, поставити крутячий коло (https://loading.io/) на 5 секунд, а потім вказати, що процес був успішним.
Користувачі та Групи
- Встановіть ім'я
- Імпортуйте дані (зверніть увагу, що для використання шаблону для прикладу вам потрібні ім'я, прізвище та електронна адреса кожного користувача)
Кампанія
Нарешті, створіть кампанію, вибравши ім'я, шаблон електронного листа, лендінг пейдж, URL, профіль відправлення та групу. Зверніть увагу, що URL буде посиланням, надісланим жертвам.
Зверніть увагу, що Профіль відправлення дозволяє надіслати тестовий електронний лист, щоб побачити, як виглядатиме фінальний фішинговий електронний лист:
note
Я б рекомендував надсилати тестові електронні листи на адреси 10min mails, щоб уникнути потрапляння в чорний список під час тестування.
Коли все буде готово, просто запустіть кампанію!
Клонування веб-сайту
Якщо з якоїсь причини ви хочете клонувати веб-сайт, перегляньте наступну сторінку:
Документи та файли з бекдором
У деяких фішингових оцінках (в основному для Red Teams) ви також захочете надсилати файли, що містять якийсь бекдор (можливо, C2 або просто щось, що викликає аутентифікацію).
Перегляньте наступну сторінку для деяких прикладів:
Фішинг MFA
Через Proxy MitM
Попередня атака досить хитра, оскільки ви підробляєте реальний веб-сайт і збираєте інформацію, введену користувачем. На жаль, якщо користувач не ввів правильний пароль або якщо програма, яку ви підробили, налаштована на 2FA, ця інформація не дозволить вам видавати себе за обманутого користувача.
Ось де корисні інструменти, такі як evilginx2, CredSniper та muraena. Цей інструмент дозволить вам згенерувати атаку типу MitM. В основному, атака працює наступним чином:
- Ви підробляєте форму входу реальної веб-сторінки.
- Користувач надсилає свої облікові дані на вашу підроблену сторінку, а інструмент надсилає їх на реальну веб-сторінку, перевіряючи, чи працюють облікові дані.
- Якщо обліковий запис налаштований на 2FA, сторінка MitM запитає про це, і як тільки користувач введе його, інструмент надішле його на реальну веб-сторінку.
- Як тільки користувач аутентифікований, ви (як зловмисник) отримаєте захоплені облікові дані, 2FA, куки та будь-яку інформацію про кожну взаємодію, поки інструмент виконує MitM.
Через VNC
Що, якщо замість того, щоб надсилати жертву на шкідливу сторінку з таким же виглядом, як оригінальна, ви надішлете його на сесію VNC з браузером, підключеним до реальної веб-сторінки? Ви зможете бачити, що він робить, вкрасти пароль, використане MFA, куки...
Ви можете зробити це за допомогою EvilnVNC
Виявлення виявлення
Очевидно, один з найкращих способів дізнатися, чи вас викрили, це шукати ваш домен у чорних списках. Якщо він з'являється в списку, ваш домен був виявлений як підозрілий.
Один простий спосіб перевірити, чи ваш домен з'являється в будь-якому чорному списку, це використовувати https://malwareworld.com/
Однак є й інші способи дізнатися, чи жертва активно шукає підозрілу фішингову активність у мережі, як пояснено в:
Ви можете придбати домен з дуже схожою назвою на домен жертви і/або згенерувати сертифікат для піддомену домену, контрольованого вами, який містить ключове слово домену жертви. Якщо жертва виконає будь-який вид DNS або HTTP взаємодії з ними, ви дізнаєтеся, що він активно шукає підозрілі домени, і вам потрібно буде бути дуже обережним.
Оцінка фішингу
Використовуйте Phishious , щоб оцінити, чи ваш електронний лист потрапить у папку спаму або буде заблокований чи успішним.
Посилання
- https://zeltser.com/domain-name-variations-in-phishing/
- https://0xpatrik.com/phishing-domains/
- https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/
- https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.