Labs Februar 12, 2021

Client-seitige Penetrationstests - T&T Teil 1

Pen-Tests

Die meisten client-seitigen Angriffe basieren auf der Zustellung von E-Mails an das Ziel. Wenn man jedoch die Notwendigkeit unterschätzt, ein angemessenes „Vertrauensniveau“ gegenüber dem Ziel aufzubauen, besteht eine gute Chance, dass die Übung schon in diesem frühen Stadium scheitert. Im Folgenden werden wir zunächst einige Techniken, Überlegungen und Tipps auflisten, wie man E-Mails erfolgreich zustellen und diese „Vertrauensebene“ aufbauen kann.

SMTP im Allgemeinen

SMTP-Server, die als MX für jede Domäne gekennzeichnet sind, akzeptieren Verbindungen von jedem System im Internet und leiten die Nachrichten an ihre Benutzer weiter. Der Begriff „System“ impliziert keine Mailserver, so dass das „System“ nicht unbedingt ein Mailserver sein muss. Jeder kann mit einem Client (Outlook, Thunderbird oder sogar Telnet) eine Verbindung zu dieser Art von SMTP-Server an Port 25 herstellen und eine Nachricht direkt an die Benutzer der Domäne(n) senden. Sofern es sich bei diesem SMTP-Server nicht um ein offenes Relay handelt (was heutzutage sehr selten ist), können Nachrichten nur an Benutzer der von ihm bedienten Domäne(n) weitergeleitet werden; jeder andere Versuch, Nachrichten an andere Domänen zu senden, wird abgewiesen.

MX-Aufzählung

In einem ersten Schritt muss der MX-Server des Ziels, der für das E-Mail-Relaying zuständig ist, identifiziert werden. Dies lässt sich leicht bewerkstelligen, indem Sie einen beliebigen DNS-Server nach den MX-Einträgen des Ziels befragen:

$ host -t mx target.com
target.com mail is handled by 20 mx2.target.com.
target.com mail is handled by 10 mx1.target.com.

Mail-Spoofing-Techniken

Die Wahrscheinlichkeit, dass eine E-Mail legitim erscheint, erhöht sich natürlich drastisch, wenn die Absender-E-Mail-Adresse mit einer E-Mail-Adresse gefälscht wird, die zur Domäne des Ziels gehört. Die Absenderadresse wird in zwei Feldern angegeben.

  • Der SMTP-Befehl „MAIL FROM“, der als „Bounce To“-Adresse verwendet wird, um den Absender im Falle eines Zustellungsfehlers zu erreichen
  • Der Nachrichtenkopf „From: “ (z.B. From: „Spoofed“ <spoofed@target.com>), der die Adresse definiert, die im Mail-Client des Ziels als Absender angezeigt wird

Bei der üblichen E-Mail-Kommunikation mit Clients wie Outlook, Thunderbird usw. kann der Benutzer diese Felder nicht direkt kontrollieren. Beide werden vom Mail-Client mit der E-Mail-Adresse gefüllt, die bei der Erstellung des Benutzerkontos festgelegt wurde.

MAIL FROM Befehl

Im Folgenden wird beschrieben, wie Fehler und Blockiermechanismen bei der Verwendung des MAIL FROM-Befehls erkannt werden können, um die E-Mail des Ziels zu fälschen. Telnet oder ein ähnliches Programm sollte verwendet werden, um solche Mechanismen schnell und korrekt zu identifizieren. Nach der Enumeration des Ziels können die gefälschten E-Mails von jedem E-Mail-Client gesendet werden, der so konfiguriert ist, dass er E-Mails direkt an den MX-Server des Ziels sendet.

Da es mehrere Mechanismen gibt, die das gefälschte „MAIL FROM“ blockieren, ist es am wichtigsten zu prüfen, ob die E-Mail das Ziel erreicht hat.

Die Nachricht kann von jedem SMTP-Server weitergeleitet werden, um den MX-Server des Ziels zu erreichen. Der Grund, warum wir direkt den MX des Ziels für die Kommunikation wählen, ist, dass wir durch Fehlermeldungen, die sonst nicht sichtbar wären (wenn ein zwischengeschaltetes SMTP für die Weiterleitung der Nachricht verwendet wurde), eindeutige Hinweise darauf haben, wenn unsere Nachricht abgelehnt wird (aufgrund von Blockierungstechnologien, die unten erwähnt werden).

Im Folgenden wird ein Beispiel für eine SMTP-Kommunikation mit dem MX-Server des Ziels über Telnet gezeigt.

$ telnet mx1.target.com 25
Connected to mx1.target.com.
Escape character is '^]'.
220 mx1.target.com ESMTP - Welcome
HELO test
250 mx1.target.com says HELO to [xxx.xxx.xxx.xxx:xxxx]
MAIL FROM: <spoofed@target.com>
250 2.1.0 Ok
RCPT TO: <target@target.com>
250 2.1.5 Ok
DATA
354 continue.  finished with "rn.rn"
Date: Fri, 1 Aug 2014 11:12:29 +0300
From: Spoofed <spoofed@target.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0
MIME-Version: 1.0
To: "Target >> Target" <target@target.com>
Subject: Email subject
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
 
Email message
 
.
250 2.0.0 Ok: queued as XX/XX-XXXXX-XXXXXXXX

Achten Sie auf Fehlerreaktionen. Nachstehend finden Sie einige Beispiele für abgelehnte Versuche:

  • Mail-Server lehnt gefälschten Absender ab
    Error msg: 
  • Absender-IP auf schwarze Liste gesetzt:
    Error msg: 554 Client host [xxx.xxx.xx.xx.xx] blocked using spam.target.com=[xx.xx.xx.xx] Spamhaus PBL. Please visit http://www.spamhaus.org/lookup/ for more information on why this message could not be delivered

„Von: “ Überschrift

Wenn die obige Technik fehlschlägt, weil MAIL FROM von einer legitimen zugestellten Domänen-E-Mail-Adresse abgelehnt wird (MX hat keinen Grund, Nachrichten von den Domänen-Benutzern zu akzeptieren, die es bedient, letzteres sollte durch ein anderes SMTP geschehen, das Authentifizierung verwendet), dann können wir den MX-Server möglicherweise mit einem MAIL FROM von einer zufälligen E-Mail-Adresse austricksen, z. B. me@gmail.com, aber den „From:“-Kopf fälschen. Die Verwendung des „From: Header“, um die Absenderadressen beim Senden einer E-Mail zu fälschen, kann fehlschlagen, ohne dass Fehler auftreten. Sie wird daher nur vorgeschlagen, wenn die zuvor beschriebene Technik versagt hat. Im Folgenden wird diese Technik anhand eines Telnet-Clients demonstriert. Wir können E-Mail-Clients für die Befehlszeile verwenden, die einfacher zu bedienen sind und die den Datenteil einer E-Mail über eine bestimmte Datei akzeptieren.

$ telnet mx1.target.com 25
Connected to mx1.target.com.
Escape character is '^]'.
220 mx1.target.com ESMTP - Welcome
HELO test
250 mx1.target.com says HELO to [xxx.xxx.xxx.xxx:xxxx]
MAIL FROM: <me@gmail.com>
250 2.1.0 Ok
RCPT TO: <target@target.com>
250 2.1.5 Ok
DATA
354 continue.  finished with "rn.rn"
Date: Fri, 1 Aug 2014 11:12:29 +0300
From: Spoofed <spoofed@target.com>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0
MIME-Version: 1.0
To: "Target >> Target" <target@target.com>
Subject: Email subject
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
 
Email message
 
.
250 2.0.0 Ok: queued as XX/XX-XXXXX-XXXXXXXX

Blockierung von Technologien

Rahmenwerk für Absenderrichtlinien (SPF)

Da SMTP selbst keine Möglichkeit hat, zu überprüfen, ob die Adresse, die im Befehl MAIL FROM verwendet wird, die richtige ist, wird SPF (ref. Wikipedia https://en.wikipedia.org/wiki/Sender_Policy_Framework) füllt diese Lücke, allerdings nur für den Befehl MAIL FROM und nicht für den From-Header der Nachricht. Das folgende Beispiel zeigt eine Domäne, die SPF bewirbt:

$ dig +short TXT target.com
"v=spf1 ip4:XXX.XXX.XXX.X/XX a mx ?all"

Hinweis: Es ist nicht Aufgabe dieses Artikels, die korrekte Einrichtung von SPF zu erläutern. Wichtig ist jedoch, dass der MX-SMTP-Server so konfiguriert sein muss, dass er SPF-Einträge berücksichtigt, auch für die von ihm bediente(n) Domäne(n).

DomainKeys Identified Mail (DKIM)

Wie bereits erwähnt, überprüft SPF den Inhalt von Nachrichten nicht. Um diese Einschränkung zu überwinden, wird DKIM (Ref. Wikipedia https://en.wikipedia.org/wiki/Dkim) wird verwendet, der die Nachricht signiert, um ihre Herkunft zu bestätigen.

MS Exchange lehnt gefälschte Domänen-E-Mails ab

MS Exchange kann so konfiguriert werden, dass gefälschte E-Mails, die auf autoritative Domänen abzielen, verhindert werden, indem die den MX-SMTP-Servern zugewiesene Berechtigung „ms-exch-smtp-accept-authoritative-domain-sender“ entfernt wird. Für weitere Informationen folgen Sie dem Link (die Konfiguration ist für neuere Versionen von MS Exchange, wie 2010 und 2013, immer noch die gleiche)

Tipps

  • Mailserver können Nachrichten von Systemen ohne FQDN zurückweisen.
  • Nachrichten von dynamischen IPs werden wahrscheinlich abgelehnt, da es gängige Praxis ist, dynamische IP-Bereiche in Spam-Listen aufzunehmen, um Spam zu verhindern.
  • Hängen Sie keine ausführbaren Dateien an E-Mails an, da diese wahrscheinlich blockiert werden.
  • Viele Mailserver blockieren aus offensichtlichen Gründen auch passwortgeschützte Archive