
Erweitertes Phishing-Tool, das den OAuth-Gerätecode-Authentifizierungsablauf mit QR-Codes kombiniert, um Microsoft-Authentifizierungstoken über MFA-Update-Vorwände zu stehlen.
SquarePhish ist ein fortschrittliches Phishing-Tool, das eine Technik verwendet, die den OAuth-Gerätecode-Authentifizierungsfluss und QR-Codes kombiniert.
Siehe PhishInSuits für weitere Details zur Verwendung des OAuth-Gerätecode-Flows für Phishing-Angriffe.
_____ _____ _ _ _
/ ____| | __ \| | (_) | |
| (___ __ _ _ _ __ _ _ __ ___| |__) | |__ _ ___| |__
\___ \ / _` | | | |/ _` | '__/ _ \ ___/| '_ \| / __| '_ \
____) | (_| | |_| | (_| | | | __/ | | | | | \__ \ | | |
|_____/ \__, |\__,_|\__,_|_| \___|_| |_| |_|_|___/_| |_|
| |
|_|
_________
| | /(
| O |/ (
|> |\ ( v0.1.0
|_________| \(
usage: squish.py [-h] {email,server} ...
SquarePhish -- v0.1.0
optional arguments:
-h, --help Zeigt diese Hilfemeldung an und beendet
modules:
{email,server}
email Senden einer bösartigen QR-Code-E-Mail an ein angegebenes Opfer
server Hosten eines bösartigen Servers, auf den die vom 'email'-Modul generierten QR-Codes verweisen, um den bösartigen OAuth-Gerätecode-Fluss zu aktivieren
Ein Angreifer kann das email-Modul von SquarePhish verwenden, um eine bösartige QR-Code-E-Mail an ein Opfer zu senden. Der Standardvorwand ist, dass das Opfer seine Microsoft MFA-Authentifizierung aktualisieren muss, um mobile E-Mails weiterhin nutzen zu können. Die derzeit verwendete Client-ID ist die der Microsoft Authenticator App.
Durch das vorherige Senden eines QR-Codes kann der Angreifer vermeiden, den nur 15 Minuten gültigen OAuth-Gerätecode-Fluss vorzeitig zu starten.
Das Opfer scannt dann den in der E-Mail gefundenen QR-Code mit seinem Mobilgerät. Der QR-Code leitet das Opfer zum vom Angreifer kontrollierten Server (der das server-Modul von SquarePhish ausführt) weiter, wobei ein URL-Parameter auf die E-Mail-Adresse des Opfers gesetzt ist.
Wenn das Opfer den bösartigen SquarePhish-Server besucht, wird ein Hintergrundprozess ausgelöst, der den OAuth-Gerätecode-Authentifizierungsfluss startet und dem Opfer einen generierten Gerätecode per E-Mail sendet, den es dann auf der legitimen Microsoft-Gerätecode-Website eingeben muss (dies startet den 15-Minuten-Timer des OAuth-Gerätecode-Flusses).
Der SquarePhish-Server wird dann im Hintergrund weiterhin auf Authentifizierung abfragen.
[2022-04-08 14:31:51,962] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:31:57,185] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:02,372] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:07,516] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:12,847] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:17,993] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:23,169] [info] [[email protected]] Polling for user authentication...
[2022-04-08 14:32:28,492] [info] [[email protected]] Polling for user authentication...
Das Opfer besucht dann die Microsoft-Gerätecode-Authentifizierungsseite entweder über den in der E-Mail bereitgestellten Link oder über eine Weiterleitung nach dem Besuch der SquarePhish-URL auf seinem Mobilgerät.
Das Opfer gibt dann den bereitgestellten Gerätecode ein und wird um Zustimmung gebeten.
Nachdem das Opfer authentifiziert und zugestimmt hat, wird ein Authentifizierungstoken lokal gespeichert und bietet dem Angreifer Zugriff über den definierten Bereich der anfordernden Anwendung.
[2022-04-08 14:32:28,796] [info] [[email protected]] Token info saved to [email protected]
Die aktuelle Bereichsdefinition:
"scope": ".default offline_access profile openid"
!WICHTIG: Bevor Sie eines der Module verwenden, aktualisieren Sie die erforderlichen Informationen in der Datei settings.config, die mit
Requiredgekennzeichnet sind.
Senden Sie dem Zielopfer einen generierten QR-Code, der den OAuth-Gerätecode-Fluss auslöst.
usage: squish.py email [-h] [-c CONFIG] [--debug] [-e EMAIL]
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
squarephish config file [Default: settings.config]
--debug enable server debugging
-e EMAIL, --email EMAIL
victim email address to send initial QR code email to
-u URL, --url URL force a url to use, this will override the default
and will not work with default device flow or
pretext but can be useful if using squarephish to
send lures directing targets to other servers
Hosten Sie einen Server, auf den ein generierter QR-Code verweist und der bei einer Anfrage den OAuth-Gerätecode-Fluss auslöst.
usage: squish.py server [-h] [-c CONFIG] [--debug]
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
squarephish config file [Default: settings.config]
--debug enable server debugging
Alle anwendbaren Einstellungen für die Ausführung können in der Datei settings.config gefunden und geändert werden. Es gibt mehrere erforderliche Informationen, die keinen Standardwert haben und vom Benutzer ausgefüllt werden müssen: SMTP_EMAIL, SMTP_PASSWORD und SQUAREPHISH_SERVER (nur bei Ausführung des E-Mail-Moduls). Alle Konfigurationsoptionen wurden in der Einstellungsdatei durch Inline-Kommentare dokumentiert.
Hinweis: Die im 'EMAIL'-Abschnitt der Konfiguration vorhandenen SQUAREPHISH_-Werte sollten mit den beim Ausführen des SquarePhish-Servers festgelegten Werten übereinstimmen.
[DEFAULT]
SMTP_PORT = 465 # SMTP port, defaulted to 465
SMTP_SERVER = "smtp.gmail.com" # SMTP server, defaulted to GMail
SMTP_PROTO = "ssl" # SMTP protocol: {ssl, tls, None (leave empty)}
SMTP_EMAIL = "" # Provide authenticating email address here
SMTP_PASSWORD = "" # Provide authenticating password here
[EMAIL]
SQUAREPHISH_SERVER = "" # Required: Provide IP address/domain name of hosted SquarePhish server
SQUAREPHISH_PORT = 8443 # Hosted SquarePhish server port, defaulted to 8443 (this should match the below server value)
SQUAREPHISH_ENDPOINT = "/mfa" # Hosted SquarePhish endpoint to trigger OAuth Device Code flow, defaulted to an MFA pretext (this should match the below server value)
FROM_EMAIL = "[email protected]" # Default FROM address when sending an email
SUBJECT = "ACTION REQUIRED: Multi-Factor Authentication (MFA) Update" # Default SUBJECT when sending an email, defauled to an MFA pretext
EMAIL_TEMPLATE = "pretexts/mfa/qrcode_email.html" # Email body template for QR code email to victim
[SERVER]
PORT = 8443
FROM_EMAIL = "[email protected]" # Default FROM address when sending an email
SUBJECT = "ACTION REQUIRED: Multi-Factor Authentication (MFA) Update" # Default SUBJECT when sending an email, defauled to an MFA pretext
CLIENT_ID = "4813382a-8fa7-425e-ab75-3b753aab3abb" # Authenticating client ID, defaulted to Microsoft Authenticator App
ENDPOINT = "/mfa" # Hosted endpoint to trigger OAuth Device Code flow, defaulted to an MFA pretext
CERT_CRT = "" # Server SSL certificate .crt file
CERT_KEY = "" # Server SSL certificate .key file
EMAIL_TEMPLATE = "pretexts/mfa/devicecode_email.html" # Email body template for device code email to victim
PERMISSION_SCOPE = ".default offline_access profile openid" # OAuth permission scope - https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent
Derzeit befinden sich die vordefinierten Vorwände im Ordner pretexts.
Um benutzerdefinierte Vorwände zu schreiben, verwenden Sie die vorhandene Vorlage im Ordner pretexts/iphone/. Eine E-Mail-Vorlage ist sowohl für die anfängliche QR-Code-E-Mail als auch für die nachfolgende Gerätecode-E-Mail erforderlich.
Wichtig: Beachten Sie beim Schreiben eines benutzerdefinierten Vorwands das Vorhandensein von %s in beiden Vorwandvorlagen. Dies dient dazu, SquarePhish zu ermöglichen, beim Generieren von E-Mails die korrekten Daten (QR-Code-Daten und/oder Gerätecode-Wert) einzufügen.
Im File utils.py sind mehrere HTTP-Antwortheader definiert. Diese Header dienen dazu, alle vorhandenen Flask-Antwortheaderwerte zu überschreiben und eine 'legitimere' Antwort vom Server zu liefern. Diese Headerwerte können geändert, entfernt und/oder zusätzliche Header für eine bessere OPSEC hinzugefügt werden.
{
"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",
}