
Продвинутый фишинговый инструмент, объединяющий поток аутентификации OAuth Device Code с QR-кодами для сбора токенов аутентификации Microsoft с помощью предлогов обновления MFA.
SquarePhish — это продвинутый фишинговый инструмент, использующий технику, сочетающую поток аутентификации по OAuth Device Code и QR-коды.
Подробнее об использовании потока OAuth Device Code для фишинговых атак см. в PhishInSuits.
_____ _____ _ _ _
/ ____| | __ \| | (_) | |
| (___ __ _ _ _ __ _ _ __ ___| |__) | |__ _ ___| |__
\___ \ / _` | | | |/ _` | '__/ _ \ ___/| '_ \| / __| '_ \
____) | (_| | |_| | (_| | | | __/ | | | | | \__ \ | | |
|_____/ \__, |\__,_|\__,_|_| \___|_| |_| |_|_|___/_| |_|
| |
|_|
_________
| | /(
| O |/ (
|> |\ ( v0.1.0
|_________| \(
использование: squish.py [-h] {email,server} ...
SquarePhish -- v0.1.0
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
модули:
{email,server}
email отправить вредоносное письмо с QR-кодом указанной жертве
server запустить вредоносный сервер, на который будут указывать QR-коды,
созданные через модуль 'email', и который активирует вредоносный поток OAuth Device Code
Злоумышленник может использовать модуль email SquarePhish для отправки жертве письма с вредоносным QR-кодом. Предлог по умолчанию: жертве необходимо обновить свою аутентификацию Microsoft MFA, чтобы продолжить использование мобильной почты. Используемый идентификатор клиента — приложение Microsoft Authenticator.
Отправляя QR-код заранее, злоумышленник может избежать преждевременного запуска потока OAuth Device Code, который действует всего 15 минут.
Затем жертва сканирует QR-код из тела письма с помощью своего мобильного устройства. QR-код направляет жертву на сервер, контролируемый злоумышленником (работающий с модулем server SquarePhish), с параметром URL, содержащим адрес электронной почты жертвы.
Когда жертва заходит на вредоносный сервер SquarePhish, запускается фоновый процесс, который начинает поток аутентификации OAuth Device Code и отправляет жертве по электронной почте сгенерированный Device Code, который она затем должна ввести на легитимном сайте Microsoft для ввода Device Code (это запускает 15-минутный таймер потока OAuth Device Code).
После этого сервер SquarePhish продолжает опрашивать аутентификацию в фоновом режиме.
[2022-04-08 14:31:51,962] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:31:57,185] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:02,372] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:07,516] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:12,847] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:17,993] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:23,169] [info] [[email protected]] Опрос аутентификации пользователя...
[2022-04-08 14:32:28,492] [info] [[email protected]] Опрос аутентификации пользователя...
Затем жертва переходит на сайт аутентификации Microsoft Device Code либо по ссылке из письма, либо через перенаправление после перехода на URL SquarePhish с мобильного устройства.
Затем жертва вводит полученный Device Code и ей предлагается дать согласие.
После того как жертва проходит аутентификацию и дает согласие, токен аутентификации сохраняется локально и предоставляет злоумышленнику доступ в рамках заданной области действия запрашивающего приложения.
[2022-04-08 14:32:28,796] [info] [[email protected]] Информация о токене сохранена в [email protected]
Текущее определение области действия:
"scope": ".default offline_access profile openid"
!ВАЖНО: Перед использованием любого модуля обновите необходимую информацию в файле settings.config, отмеченную как
Required.
Отправляет целевой жертве сгенерированный QR-код, который запускает поток OAuth Device Code.
использование: squish.py email [-h] [-c CONFIG] [--debug] [-e EMAIL]
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
-c CONFIG, --config CONFIG
файл конфигурации squarephish [По умолчанию: settings.config]
--debug включить отладку сервера
-e EMAIL, --email EMAIL
адрес электронной почты жертвы для отправки начального письма с QR-кодом
-u URL, --url URL принудительно использовать URL, переопределит значение по умолчанию
и не будет работать с потоком устройства по умолчанию или
предлогом, но может быть полезен при использовании squarephish для
отправки приманок, направляющих цели на другие серверы
Запускает сервер, на который будет указывать сгенерированный QR-код, и при запросе запускает поток OAuth Device Code.
использование: squish.py server [-h] [-c CONFIG] [--debug]
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
-c CONFIG, --config CONFIG
файл конфигурации squarephish [По умолчанию: settings.config]
--debug включить отладку сервера
Все применимые настройки для выполнения можно найти и изменить в файле settings.config. Есть несколько обязательных полей, не имеющих значения по умолчанию, которые должен заполнить пользователь: SMTP_EMAIL, SMTP_PASSWORD и SQUAREPHISH_SERVER (только при выполнении модуля email). Все параметры конфигурации задокументированы в файле настроек с помощью встроенных комментариев.
Примечание: Значения SQUAREPHISH_, присутствующие в разделе 'EMAIL' конфигурации, должны соответствовать значениям, установленным при запуске сервера SquarePhish.
[DEFAULT]
SMTP_PORT = 465 # Порт SMTP, по умолчанию 465
SMTP_SERVER = "smtp.gmail.com" # SMTP-сервер, по умолчанию Gmail
SMTP_PROTO = "ssl" # Протокол SMTP: {ssl, tls, None (оставить пустым)}
SMTP_EMAIL = "" # Укажите адрес электронной почты для аутентификации
SMTP_PASSWORD = "" # Укажите пароль для аутентификации
[EMAIL]
SQUAREPHISH_SERVER = "" # Обязательно: укажите IP-адрес/домен размещенного сервера SquarePhish
SQUAREPHISH_PORT = 8443 # Порт размещенного сервера SquarePhish, по умолчанию 8443 (должен совпадать со значением сервера ниже)
SQUAREPHISH_ENDPOINT = "/mfa" # Конечная точка размещенного сервера SquarePhish для запуска потока OAuth Device Code, по умолчанию предлог MFA (должен совпадать со значением сервера ниже)
FROM_EMAIL = "[email protected]" # Адрес FROM по умолчанию при отправке письма
SUBJECT = "ACTION REQUIRED: Multi-Factor Authentication (MFA) Update" # Тема письма по умолчанию при отправке, по умолчанию предлог MFA
EMAIL_TEMPLATE = "pretexts/mfa/qrcode_email.html" # Шаблон тела письма с QR-кодом для жертвы
[SERVER]
PORT = 8443
FROM_EMAIL = "[email protected]" # Адрес FROM по умолчанию при отправке письма
SUBJECT = "ACTION REQUIRED: Multi-Factor Authentication (MFA) Update" # Тема письма по умолчанию при отправке, по умолчанию предлог MFA
CLIENT_ID = "4813382a-8fa7-425e-ab75-3b753aab3abb" # Идентификатор клиента для аутентификации, по умолчанию приложение Microsoft Authenticator
ENDPOINT = "/mfa" # Размещенная конечная точка для запуска потока OAuth Device Code, по умолчанию предлог MFA
CERT_CRT = "" # SSL-сертификат сервера, файл .crt
CERT_KEY = "" # Ключ SSL-сертификата сервера, файл .key
EMAIL_TEMPLATE = "pretexts/mfa/devicecode_email.html" # Шаблон тела письма с device code для жертвы
PERMISSION_SCOPE = ".default offline_access profile openid" # Область разрешений OAuth — https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent
В настоящее время предопределенные предлоги можно найти в папке pretexts.
Для создания собственных предлогов используйте существующий шаблон из папки pretexts/iphone/. Требуется шаблон письма как для первоначального письма с QR-кодом, так и для последующего письма с device code.
Важно: При написании собственного предлога обратите внимание на наличие %s в обоих шаблонах предлогов. Он нужен, чтобы SquarePhish мог подставить правильные данные при генерации писем (данные QR-кода и/или значение device code).
В файле utils.py определены несколько заголовков HTTP-ответа. Эти заголовки предназначены для переопределения любых существующих значений заголовков ответа Flask и для обеспечения более «легитимного» ответа от сервера. Эти значения заголовков можно изменять, удалять и/или добавлять дополнительные заголовки для лучшей OPSEC.
{
"vary": "Accept-Encoding",
"server": "Microsoft-IIS/10.0",
"tls_version": "tls1.3",
"content-type": "text/html; charset=utf-8",
"x-appversion": "1.0.8125.42964",
"x-frame-options": "SAMEORIGIN",
"x-ua-compatible": "IE=Edge;chrome=1",
"x-xss-protection": "1; mode=block",
"x-content-type-options": "nosniff",
"strict-transport-security": "max-age=31536000",
}