NT-2026.10.02 DOSSIÊ RED TEAM
IMPACKET SMBEXEC: EXECUÇÃO REMOTA VIA SMB EM ACTIVE DIRECTORY
Guia prático do impacket-smbexec: autenticação via credenciais, pass-the-hash, Kerberos, AES key, PowerShell shell, debug, execução não-interativa e mitigações em ambiente Active Directory autorizado.

Introdução
O impacket-smbexec pertence ao conjunto Impacket, uma suíte madura de classes Python e utilitários de linha de comando mantida pela Fortra para trabalhar com protocolos de rede. A ferramenta implementa uma técnica conceitualmente similar ao clássico PsExec, porém evita deliberadamente dropar um binário no alvo. Em vez disso, cria um serviço Windows no host remoto que faz o pipe da saída do comando de volta ao atacante através de um named pipe sobre SMB. Como o serviço executa cada comando através do interpretador de comandos e retorna o resultado a um arquivo temporário em um share, o operador recebe uma experiência responsiva, tipo shell, através da rede.
O utilitário autentica usando vários métodos, incluindo senhas em plaintext, hashes NTLM para ataques pass-the-hash, tickets Kerberos e chaves AES brutas. Essa flexibilidade o torna valioso durante todo um engagement, seja o tester possuindo uma senha crackeada, um hash capturado ou um ticket forjado. Operadores também apreciam que o impacket-smbexec roda comandos no contexto da conta SYSTEM por padrão, concedendo o maior nível de privilégio na máquina comprometida.
Este guia percorre a ferramenta do zero: explica o que é o impacket-smbexec e como opera, então demonstra cada recurso principal através de exemplos práticos executados contra um domínio de laboratório isolado. Cada comando aparece separadamente de sua explicação para que leitores possam copiar e adaptar diretamente, e cada screenshot segue a descrição da técnica que ilustra.
Importante: Todas as demonstrações neste artigo pressupõem ambiente de laboratório autorizado (domínio isolado, credenciais fictícias, IPs RFC1918). Nunca execute estas técnicas contra sistemas sem autorização explícita por escrito.
Explorando o Menu de Ajuda
Antes de executar a ferramenta contra qualquer alvo, o operador deve revisar suas opções disponíveis. Executar impacket-smbexec sem argumentos imprime a mensagem completa de uso, revelando o argumento posicional de target junto com as chaves de conexão, autenticação e shell-related. O output do help agrupa essas opções logicamente, mostrando como selecionar o share de saída, escolher o modo de serviço, definir codec customizado e escolher o processador de comandos para o shell semi-interativo.
impacket-smbexec

Autenticação com Credenciais Plaintext
A forma mais direta de usar a ferramenta é fornecer username e senha conhecidos. O operador fornece as credenciais no formato padrão domínio/usuário:senha, seguido do IP do alvo. A ferramenta autentica, lança o shell semi-interativo e apresenta um prompt de comando Windows enraizado no diretório system32. A partir deste ponto, todo comando que o operador digita executa no host remoto com privilégios de SYSTEM.
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12

Realizando Ataque Pass-the-Hash
Quando um tester recupera um hash NTLM em vez de senha em cleartext, o impacket-smbexec autentica diretamente com esse hash. O operador passa o hash através da flag -hashes usando o formato LMHASH:NTHASH, deixando a porção LM vazia quando apenas o hash NT está disponível. A ferramenta então completa o handshake SMB sem nunca conhecer a senha em plaintext, concedendo o mesmo shell interativo. Esta técnica pass-the-hash prova-se inestimável quando o cracking de senha falha ou quando o tempo do engagement está curto.
impacket-smbexec -hashes :32196B56FFE6F45E294117B91A83BF38 ignite.local/administrator@192.168.1.12

Autenticação com Kerberos
Em ambientes onde Kerberos é o protocolo de autenticação preferido, a ferramenta aproveita um ticket cached em vez de senha ou hash. O operador primeiro garante que um ticket válido resida no credential cache, então invoca a ferramenta com a flag -k para solicitar autenticação Kerberos e a flag -no-pass para pular o prompt de senha. O alvo deve ser referenciado pelo seu fully qualified domain name para que a troca Kerberos resolva corretamente. Este método mistura-se naturalmente ao tráfego normal de domínio e reduz a pegada que o operador deixa para trás.
impacket-smbexec -k -no-pass ignite.local/administrator@dc1.ignite.local

Autenticação com AES Key
Para cenários Kerberos mais fortes, a ferramenta aceita uma chave AES raw através da flag -aesKey, suportando chaves de 128-bit e 256-bit. Esta abordagem serve situações onde o operador extraiu a chave AES da conta e deseja autenticar sem depender de hash NTLM. A ferramenta usa a chave fornecida para completar a autenticação Kerberos e, como em todos os outros casos, entrega um shell semi-interativo no domain controller alvo.
impacket-smbexec ignite.local/administrator@dc1.ignite.local -aesKey e1182a9a34827cabac57a635ae47ce2b2945b4e9397d369b07d4d714c6c525b7

Selecionando Processador PowerShell
Por padrão, o shell semi-interativo roteia comandos através do interpretador de comandos Windows clássico. A flag -shell-type permite ao operador selecionar PowerShell em vez disso, o que desbloqueia capacidades de scripting mais ricas e suporte a cmdlets durante pós-exploração. Após especificar powershell como tipo de shell, o prompt muda para refletir o ambiente PowerShell, e todo comando subsequente executa através do PowerShell no host remoto.
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12 -shell-type powershell

Habilitando Timestamp e Debug Output
Durante troubleshooting ou documentação cuidadosa de um engagement, logging verboso torna-se essencial. A flag -ts adiciona timestamp a cada linha de log, enquanto a flag -debug ativa mensagens de debug detalhadas. Juntas, revelam os passos internos que a ferramenta executa, incluindo o path da biblioteca Impacket, o string binding usado para alcançar o service control manager, e o comando exato que a ferramenta executa para redirecionar output. Esta visibilidade ajuda o operador a entender precisamente como a ferramenta interage com o alvo.
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12 -ts -debug

Executando Comandos Non-Interativamente
A ferramenta nem sempre requer uma sessão interativa. Um operador pode alimentar um único comando a ela e capturar o resultado em uma única passada, o que serve para scripting e automação. Fazer pipe de um comando para a ferramenta com echo executa aquele comando e retorna sua saída imediatamente. O mesmo resultado segue de fornecer o comando através de here-string com o operador triplo menor-que (<<<). No exemplo abaixo, ambas as abordagens rodam ipconfig no alvo e imprimem a configuração de rede sem deixar o operador dentro de um shell persistente.
# Via pipe
echo ipconfig | impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12
# Via here-string
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12 <<< "ipconfig"

Especificando Share de Saída
A ferramenta recupera a saída do comando de um share gravável no alvo, defaultando para o share administrativo C$. Quando um operador precisa apontar a ferramenta para local diferente, a flag -share define o share explicitamente. Nomear o share diretamente dá ao operador controle sobre onde o arquivo temporário de output aterrissa, o que ajuda em ambientes com shares restritos ou monitorados. O exemplo abaixo confirma o comportamento especificando C$ e recebendo o prompt interativo usual.
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12 -share C$

Definindo Target IP
Às vezes o hostname fornecido para autenticação difere do endereço onde o serviço SMB efetivamente escuta. A flag -target-ip resolve isso permitindo ao operador especificar o IP exato da máquina alvo, independente do nome usado na string de credencial. Esta separação prova-se útil ao trabalhar através de quirks de resolução de nome ou ao autenticar contra uma identidade enquanto conecta a um host específico. O comando abaixo embrulha a senha em aspas simples para proteger caracteres especiais e direciona a conexão ao endereço pretendido.
impacket-smbexec ignite.local/administrator:'Ignite@987'@192.168.1.12 -target-ip 192.168.1.12

Customizando Nome do Serviço
Como a ferramenta opera criando um serviço Windows no alvo, o nome desse serviço pode denunciar a atividade a defensores que monitoram criação de serviço incomum. A flag -service-name permite definir um nome customizado para o serviço, evitando nomes padrão como PSEXESVC ou BTOPSVC que são amplamente assinados em regras de detecção.
impacket-smbexec ignite.local/administrator:Ignite@987@192.168.1.12 -service-name MeuServicoCustom
Estratégias de Mitigação
A execução remota via SMB (T1021.002) deixa rastros consistentes que defensores podem monitorar e bloquear:
Hardening de Protocolo e Rede:
- SMB Signing obrigatório e SMB Encryption (SMB 3.0+) impedem tampering e sniffing de tráfego SMB
- Restrição de admin shares (ADMIN$, C$, IPC$) via GPO ou firewall de host para não-administradores
- Firewall de host bloqueando porta 445/TCP de origens não autorizadas
- Segmentação de rede impedindo lateral movement entre tiers
Controle de Credencial e Privilégio:
- Windows LAPS: rotação automática de senhas de admin local únicas por host
- Tiering administrativo (Tier 0/1/2): separação estrita de contas de admin de domínio, servidores, workstations
- PAW (Privileged Access Workstation): estações dedicadas para admin de domínio
- Credential Guard: proteção de segredos LSASS contra dumping
- Restrição NTLM via GPO (Network Security: Restrict NTLM)
Monitoramento e Detecção (Sysmon/Windows Events):
- Event ID 4624 (Logon Type 3 – Network) + 4672 (Special Privileges) — autenticação de rede com privilégios
- Event ID 5145 (SMB Share Access) para ADMIN$, C$, IPC$ — acesso a shares administrativos
- Event ID 4697 (Service Installed) — criação de serviço com nomes suspeitos (PSEXESVC, BTOPSVC, aleatórios)
- Event ID 4688 (Process Creation) — Parent:
services.exe, Image:cmd.exeou payload - Sysmon Event ID 1 — ParentImage:
services.exe, Image:cmd.exe/ payload - Sysmon Event ID 3 — Network Connect, DestinationPort: 445
- Sysmon Event ID 12/13/14 — Registry creation em
HKLM\SYSTEM\CurrentControlSet\Services\
Controle de Aplicação:
- AppLocker / WDAC: allowlist de binários assinados; bloquear execução de
C:\Temp,%APPDATA%,C:\Windows\Temp - EDR com bloqueio comportamental: criação de serviço remoto,
services.exespawn anômalo
A combinação de SMB signing/encryption, LAPS, tiering, monitoramento de Event ID 4697/4688/5145 e AppLocker/WDAC em modo enforcement reduz drasticamente a superfície para execução via SMBExec.
Conclusão
O impacket-smbexec é uma ferramenta versátil e madura para execução remota via SMB em ambientes Active Directory. Sua capacidade de autenticar via múltiplos métodos (plaintext, pass-the-hash, Kerberos ticket, AES key), oferecer shell semi-interativo (CMD ou PowerShell), executar comandos non-interativamente, e customizar parâmetros operacionais (share, service name, target IP) a torna valiosa durante toda a cadeia de pós-exploração.
Para o operador de Red Team praticando Adversary Emulation, o foco não é apenas “rodar o smbexec”, mas entender: qual credencial tenho? Qual método de autenticação é menos detectável no ambiente? Qual share está acessível? Qual nome de serviço evita assinaturas conhecidas? Que evidência minha atividade gerará em 4624, 4697, 4688, 5145, Sysmon 1 e 3?
Para o Blue Team, a lição inversa: não procure apenas o Event ID 4624 Type 3 isolado. Correlacione. A mesma conta autenticando de host incomum → Event ID 4697 com service name suspeito → Event ID 4688 services.exe → cmd.exe → Sysmon Event ID 3 porta 445 → comportamento pós-execução suspeito. Essa cadeia temporal é a assinatura do SMBExec.
A superfície de ataque reduz-se com: SMB signing/encryption obrigatório, eliminação de NTLM onde possível, LAPS para senhas de admin local únicas, tiering administrativo estrito, monitoramento contínuo de criação de serviço (4697) e processos filhos de services.exe, e AppLocker/WDAC bloqueando binários não assinados em paths temporários.
Ferramenta ≠ Técnica ≠ Ameaça. O impacket-smbexec implementa T1021.002; a ameaça real é o operador que sabe navegar as restrições do ambiente. A defesa eficaz foca na cadeia operacional, não no binário.