Skeleton Key-Malware-Analyse

Die Übersetzung des Artikels wurde speziell für Studierende des Reverse Engineering Kurses erstellt.




Zusammenfassung


Forscher der Dell SecureWorks Counter Threat Unit (CTU) haben Malware entdeckt, die Active Directory (AD) -Authentifizierungssysteme umgeht, die die Ein-Faktor-Authentifizierung (nur Kennwort) verwenden. Angreifer können das Passwort ihrer Wahl für die Authentifizierung als beliebiger Benutzer verwenden. Diese Malware wird als "Skeleton Key" (Universalschlüssel) bezeichnet.

CTU-Forscher entdeckten den Skeleton Key in einem Client-Netzwerk, das Single-Factor-Authentifizierung für den Zugriff auf Webmail und VPNs verwendete, um Angreifern ungehinderten Zugriff auf RAS-Dienste zu ermöglichen. Der Hauptschlüssel wird als Patch im Speicher auf den AD-Domänencontrollern des Opfers bereitgestellt, damit sich der Angreifer als jeder Benutzer authentifizieren kann, während legitime Benutzer die Authentifizierung wie gewohnt fortsetzen. Mithilfe der Umgehung der Skeleton Key-Authentifizierung können sich Angreifer mit physischem Zugriff anmelden und Systeme entsperren, die Benutzer auf gefährdeten AD-Domänencontrollern authentifizieren.

Den einzigen zum Zeitpunkt der Veröffentlichung bekannten Skeleton Key-Beispielen fehlte die Persistenz. Sie müssen erneut bereitgestellt werden, wenn der Domänencontroller neu gestartet wird. CTU-Forscher vermuten, dass Angreifer einen Neustart nur anhand ihrer Unfähigkeit, sich erfolgreich zu authentifizieren, identifizieren können, da auf den Domänencontrollern keine andere Malware erkannt wurde. Zwischen acht Stunden und acht Tagen nach dem Neustart verwendeten die Angreifer andere RAS-Malware, die bereits im Netzwerk des Opfers bereitgestellt wurde, um den Skeleton Key erneut auf Domänencontrollern bereitzustellen.

Für die Skeleton Key-Bereitstellung sind Anmeldeinformationen des Domänenadministrators erforderlich. CTU-Forscher beobachteten, wie Angreifer den Skeleton Key mithilfe von Anmeldeinformationen bereitstellten, die von geschäftskritischen Servern, Administratorarbeitsstationen und Zieldomänencontrollern gestohlen wurden.

Analyse


Ursprünglich beobachteten CTU-Forscher ein Skeleton Key-Beispiel mit dem Namen ole64.dll in einem kompromittierten Netzwerk (siehe Tabelle 1).

AttributBedeutung oder Beschreibung
Dateinameole64.dll
md5bf45086e6334f647fda33576e2a05826
sha15083b17ccc50dd0557dfc544f84e2ab55d6acd92
Kompilierungszeit2014-02-19 09:31:29
eingesetztnach Bedarf (normalerweise mit Malware heruntergeladen und nach der Verwendung gelöscht)
Dateigröße49664 Bytes
Abschnitte.text, .rdata, .data, .pdata, .rsrc, .reloc
exportieren

ii (installiert den Patch)

uu (Entfernt den Patch)

dllentrypoint (Standard-DLL-Einstiegspunkt)


Tabelle 1. Beispiel für Skeleton Key ole64.dll .

Während der Untersuchung von ole64.dll entdeckten CTU-Forscher eine ältere Version von msuta64.dll auf einem „Zwischenhost“ im Netzwerk des Opfers (siehe Tabelle 2). Ein Zwischenhost ist jedes System, das zuvor durch böswillige Malware für den Remotezugriff gefährdet war. Diese Option enthält zusätzliche Debug-Operatoren, mit denen der Skeleton Key-Entwickler die am Patch-Prozess beteiligten Speicheradressen beobachten kann.

AttributBedeutung oder Beschreibung
Dateinamemsuta64.dll
md566da7ed621149975f6e643b4f9886cfd
sha1ad61e8daeeba43e442514b177a1b41ad4b7c6727
Kompilierungszeit2012-09-20 08:07:12
eingesetzt2013-09-29 07:58:16
Dateigröße50688 Bytes
Abschnitte.text, .rdata, .data, .pdata, .rsrc, .reloc
exportieren

ii (installiert den Patch)

uu (Entfernt den Patch)

dllentrypoint (Standard-DLL-Einstiegspunkt)


Tabelle 2. Beispiel für Skeleton Key msuta64.dll .

Die Angreifer verwendeten den folgenden Algorithmus, um den Skeleton Key als 64-Bit-DLL-Datei bereitzustellen:

  1. Laden Sie die Skeleton Key-DLL-Datei in das Staging-Verzeichnis auf dem Staging-Host im Opfernetzwerk herunter. CTU-Forscher beobachteten drei Dateinamen, die mit der Skeleton Key-DLL-Datei verknüpft sind: ole64.dll, ole.dll und msuta64.dll. Windows-Systeme enthalten die legitime Datei ole32.dll, sie steht jedoch nicht mit dieser Malware in Verbindung.
  2. Versuchen Sie, mithilfe einer Liste gestohlener Domänenadministratoranmeldeinformationen auf Administratorressourcen auf Domänencontrollern zuzugreifen.
  3. Wenn die gestohlenen Anmeldeinformationen nicht mehr gültig sind, extrahieren Sie die Kennwörter des Domänenadministrators mit den Tools zum Diebstahl von Kennwörtern im Klartext von einer der folgenden Stellen, was bedeutet, dass Sie mit der Umgebung des Opfers vertraut sind:

    • Speicher eines anderen verfügbaren Servers im Netzwerk des Opfers
    • Domain-Administrator-Jobs
    • Zieldomänencontroller
    • Verwenden Sie gültige Domänenadministratoranmeldeinformationen, um die Skeleton Key-DLL in C: \ WINDOWS \ system32 \ auf den Zieldomänencontrollern zu kopieren.
  4. Verwenden Sie das Dienstprogramm PsExec , um die Skeleton Key-DLL-Datei mithilfe des Befehls rundll32 remote auf den Zieldomänencontrollern auszuführen. Das vom Angreifer gewählte Passwort ist als NTLM-Hash-Passwort formatiert und wird nicht im Klartext angezeigt. Nach der Bereitstellung des NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM> kann sich der Angreifer mit dem konfigurierten NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM> Kennwort-Hash wie jeder NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM> Benutzer authentifizieren NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM>
  5. Löschen Sie die Skeleton Key DLL-Datei von C: \ WINDOWS \ system32 \ auf den Zieldomänencontrollern.
  6. Löschen Sie die Skeleton Key-DLL-Datei aus dem Staging-Verzeichnis auf dem Übergangshost.
  7. Testen Sie die erfolgreiche Bereitstellung des Skeleton Keys mithilfe der "net use" -Befehle mit einem AD-Konto und einem Kennwort, das dem konfigurierten NTLM-Hash entspricht.

CTU-Forscher entdeckten ein eingebettetes Kennwortmuster, das darauf hindeutet, dass eine Gruppe von Angreifern den Skeleton Key in mehreren Organisationen bereitgestellt hat.

Die Verwendung von PsExec kann in einer Windows-Umgebung erkannt werden, indem Sie über vom Dienstprogramm generierte Windows-Ereignisse informiert werden. Die folgenden auf den Zieldomänencontrollern beobachteten Ereignis-IDs registrieren das PsExec-Tool, das seinen Dienst installiert, den Dienst startet und den Dienst stoppt. Diese Ereignisse werden bei jeder Verwendung von PsExec generiert. Daher ist eine zusätzliche Ereignisanalyse erforderlich, um festzustellen, ob sie böswillig oder legitim sind:

  • Unerwartete Installationsereignisse für den PSEXESVC-Dienst (Ereigniscode 7045) auf AD-Domänencontrollern:

    Protokollname : System
    Quelle : Dienststeuerungs-Manager
    Zusammenfassung : Auf dem System ist ein Dienst installiert.
    Name der Servicedatei :
    %SystemRoot%\PSEXESVC.exe
  • Unerwartete Start / Stopp-Ereignisse des PSEXESVC-Dienstes (Ereigniscode 7036) auf AD-Domänencontrollern:

    Protokollname : System
    Quelle : Dienststeuerungs-Manager
    Zusammenfassung :
    • "Der PSEXESVC-Dienst ist betriebsbereit."
    • "Der PSEXESVC-Dienst wurde gestoppt."

Als laufender Skeleton Key müssen Sie die folgenden Aufgaben ausführen:

  1. Suchen Sie nach einer der folgenden kompatiblen 64-Bit-Versionen von Windows. Die Malware ist nicht mit 32-Bit-Versionen von Windows oder Windows Server-Versionen ab Windows Server 2012 (6.2) kompatibel.

    • 6.1 (Windows 2008 R2)
    • 6.0 (Windows Server 2008)
    • 5.2 (Windows 2003 R2)
  2. Verwenden Sie die SeDebugPrivilege-Funktion, um die erforderlichen Administratorrechte zum Schreiben in den Dienstprozess des lokalen Sicherheitssubsystems (LSASS) zu erhalten. Dieser Prozess steuert die Sicherheitsfunktionen für die AD-Domäne, einschließlich der Authentifizierung des Benutzerkontos.
  3. Listen Sie die verfügbaren Prozesse auf, um das LSASS-Prozesshandle zu erhalten.
  4. Adressen für authentifizierungsbezogene Funktionen abrufen, die behoben werden:

    • CDLocateCSystem - befindet sich in cryptdll.dll
    • SamIRetrieveMultiplePrimaryCredentials - befindet sich in samsrv.dll
    • SamIRetrievePrimaryCredentials - befindet sich in samsrv.dll
  5. Nehmen Sie die Einstellungen für das jeweilige Betriebssystem mithilfe der globalen Variablen vor, die während der Kompatibilitätsprüfung in Schritt 1 festgelegt wurden.
  6. Verwenden Sie die OpenProcess-Funktion, um das LSASS-Prozesshandle abzurufen.
  7. Reservieren Sie und reservieren Sie den erforderlichen Speicherplatz für das Bearbeiten und Patchen des Speichers des LSASS-Prozesses.
  8. Zugehörige Funktionen basierend auf dem Betriebssystem patchen:

    • CDLocateCSystem (alle kompatiblen Versionen von Windows)
    • SamIRetrieveMultiplePrimaryCredentials (nur Windows 2008 R2 (6.1))
    • SamIRetrievePrimaryCredentials (alle kompatiblen Versionen von Windows mit Ausnahme von Windows 2008 R2 (6.1))

So beheben Sie jede Funktion:

  1. Rufen Sie die VirtualProtectEx-Funktion auf, um den Speicherschutz so zu ändern, dass in die erforderlichen Speicherzuordnungen geschrieben werden kann (PAGE_EXECUTE_READWRITE, 0x40). In diesem Schritt können Sie den Funktionscode im Speicher aktualisieren.
  2. Rufen Sie die WriteProcessMemory-Funktion auf, um die Adresse der Zielfunktion so zu ändern, dass sie auf den korrigierten Code verweist. Diese Änderung bewirkt, dass der Funktionsaufruf den Patch verwendet.
  3. Stellen Sie den ursprünglichen Speicherschutz wieder her, indem Sie VirtualProtectEx mit den ursprünglichen Speicherschutz-Flags aufrufen. Dieser Schritt ist erforderlich, um eine verdächtige Zuweisung von Speicher für die Aufzeichnung und Ausführung zu vermeiden.

Nach dem Patchen kann sich ein Angreifer mit dem während der Bereitstellung konfigurierten Skeleton Key-Kennwort als Domänenbenutzer anmelden. Legitime Benutzer können sich weiterhin mit ihren eigenen Passwörtern anmelden. Diese Umgehung der Authentifizierung gilt für alle Dienste, die One-Way-AD-Authentifizierung verwenden, z. B. Webmail und VPN. Außerdem kann ein Angreifer mit physischem Zugriff auf ein gefährdetes System einen Computer entsperren, indem er ein eingebettetes Kennwort auf der Tastatur eingibt.

Mögliche Zuordnung zu Problemen mit der Domänenreplikation


Schädlicher Code Skeleton Key überträgt keinen Netzwerkverkehr, wodurch die netzwerkbasierte Erkennung wirkungslos wird. Diese Malware ist jedoch auf Probleme mit der Domänenreplikation zurückzuführen, die auf eine Infektion hindeuten könnten. Kurz nach jeder Bereitstellung der von CTU-Forschern entdeckten Skeleton Key-Malware stießen Domänencontroller auf Replikationsprobleme, die vom Microsoft-Support nicht erklärt oder behoben werden konnten. Letztendlich war ein Neustart erforderlich, um diese Probleme zu beheben. Durch diese Neustarts wurde die Skeleton Key-Authentifizierungsumgehung entfernt, da die Malware keinen Persistenzmechanismus aufweist. In Abb. Abbildung 1 zeigt den zeitlichen Ablauf dieser Neustarts sowie den anschließenden Diebstahl von Kennwörtern durch Eindringlinge, die seitliche Erweiterung und den Einsatz des Skeleton Key. Relocations traten normalerweise innerhalb weniger Stunden oder mehrerer Tage nach einem Neustart auf.


Abbildung 1. Beziehung zwischen Bereitstellung und Neustart, beobachtet von CTU-Forschern, April - Juli 2014 (Quelle: Dell SecureWorks)

Gegenmaßnahmen


Schädlicher Code Skeleton Key umgeht die Authentifizierung und generiert keinen Netzwerkverkehr. Infolgedessen erkennen Systeme zur Erkennung und Verhinderung von Netzwerkeinbrüchen (IDS / IPS) diese Bedrohung nicht. Die CTU-Forscher haben jedoch die YARA-Signaturen in Anhang A notiert, um die Skeleton Key-DLL und den Code zu ermitteln, der in den LSASS-Prozessspeicher eingegeben wird.

Bedrohungsanzeigen


Mithilfe der Bedrohungsindikatoren in Tabelle 3 können Aktivitäten im Zusammenhang mit Skeleton Key-Malware erkannt werden.

AnzeigeTypKontext
66da7ed621149975f6e643b4f9886cfdmd5 hashSkeleton Key Patch msuta64.dll
ad61e8daeeba43e442514b177a1b41ad4b7c6727sha1 hashSkeleton Key Patch msuta64.dll
bf45086e6334f647fda33576e2a05826md5 hashSkeleton Key Patch ole64.dl
5083b17ccc50dd0557dfc544f84e2ab55d6acd92sha1 hashSkeleton Key Patch ole64.dl

Tabelle 3. Anzeigen für den Hauptschlüssel.

Fazit


Die CTU Research Group empfiehlt Unternehmen, die folgenden Sicherheitsfunktionen von Skeleton Key zu implementieren:

  • Die Multifaktorauthentifizierung für alle RAS-Lösungen, einschließlich VPN und Remote-E-Mail, ermöglicht es Bedrohungsakteuren nicht, die Einzelfaktorauthentifizierung oder die Authentifizierung mit gestohlenen statischen Anmeldeinformationen zu umgehen.
  • Ein Überwachungsprotokoll zur Prozesserstellung auf Arbeitsstationen und Servern, einschließlich AD-Domänencontrollern, kann Skeleton Key-Bereitstellungen erkennen. Insbesondere sollten Organisationen nach den folgenden Artefakten suchen:

    • Unerwartetes PsExec.exe verarbeitet und verwendet das PsExec-Befehlszeilenargument "-accepteula"
    • Unerwartete rundll32.exe-Prozesse
    • Behandeln Sie Argumente ähnlich wie NTLM-Hash-Codes (32 Zeichen mit den Ziffern 0-9 und AF-Zeichen).
  • Das Überwachen von Windows Service Manager-Ereignissen auf AD-Domänencontrollern kann unerwartete Dienstinstallationsereignisse (Ereigniscode 7045) und Start- / Stoppereignisse (Ereigniscode 7036) für den PSEXESVC-PsExec-Dienst erkennen.

Anhang A - YARA-Signaturen


Die folgenden YARA-Signaturen erkennen das Vorhandensein eines Hauptschlüssels im System, indem sie entweder eine verdächtige Datei oder einen Speicherauszug von Active Directory-Domänencontrollern scannen, die möglicherweise den Hauptschlüssel enthalten.

 rule skeleton_key_patcher { strings: $target_process = "lsass.exe" wide $dll1 = "cryptdll.dll" $dll2 = "samsrv.dll" $name = "HookDC.dll" $patched1 = "CDLocateCSystem" $patched2 = "SamIRetrievePrimaryCredentials" $patched3 = "SamIRetrieveMultiplePrimaryCredentials" condition: all of them } rule skeleton_key_injected_code { strings: $injected = { 33 C0 85 C9 0F 95 C0 48 8B 8C 24 40 01 00 00 48 33 CC E8 4D 02 00 00 48 81 C4 58 01 00 00 C3 } $patch_CDLocateCSystem = { 48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 48 8B FA 8B F1 E8 ?? ?? ?? ?? 48 8B D7 8B CE 48 8B D8 FF 50 10 44 8B D8 85 C0 0F 88 A5 00 00 00 48 85 FF 0F 84 9C 00 00 00 83 FE 17 0F 85 93 00 00 00 48 8B 07 48 85 C0 0F 84 84 00 00 00 48 83 BB 48 01 00 00 00 75 73 48 89 83 48 01 00 00 33 D2 } $patch_SamIRetrievePrimaryCredential = { 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 49 8B F9 49 8B F0 48 8B DA 48 8B E9 48 85 D2 74 2A 48 8B 42 08 48 85 C0 74 21 66 83 3A 26 75 1B 66 83 38 4B 75 15 66 83 78 0E 73 75 0E 66 83 78 1E 4B 75 07 B8 A1 02 00 C0 EB 14 E8 ?? ?? ?? ?? 4C 8B CF 4C 8B C6 48 8B D3 48 8B CD FF 50 18 48 8B 5C 24 30 48 8B 6C 24 38 48 8B 74 24 40 48 83 C4 20 5F C3 } $patch_SamIRetrieveMultiplePrimaryCredential = { 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 41 8B F9 49 8B D8 8B F2 8B E9 4D 85 C0 74 2B 49 8B 40 08 48 85 C0 74 22 66 41 83 38 26 75 1B 66 83 38 4B 75 15 66 83 78 0E 73 75 0E 66 83 78 1E 4B 75 07 B8 A1 02 00 C0 EB 12 E8 ?? ?? ?? ?? 44 8B CF 4C 8B C3 8B D6 8B CD FF 50 20 48 8B 5C 24 30 48 8B 6C 24 38 48 8B 74 24 40 48 83 C4 20 5F C3 } condition: any of them } 

Source: https://habr.com/ru/post/de481778/


All Articles