NT-2026.10.02 DOSSIÊ

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.

Diagrama conceitual de movimento lateral em Active Directory: credencial comprometida → enumeração → execução remota via SMB/WMI/WinRM/Scheduled Task/Remote Service → telemetria Blue Team

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
Output do comando impacket-smbexec sem argumentos mostrando todas as opções disponíveis
Evidência técnica: Menu de ajuda do 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
Shell semi-interativo do impacket-smbexec após autenticação com credenciais plaintext
Evidência técnica: Autenticação plaintext obtendo shell SYSTEM

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
Shell obtido via pass-the-hash usando flag -hashes com hash NT
Evidência técnica: Pass-the-Hash com hash NTLM

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
Shell obtido via autenticação Kerberos usando flags -k -no-pass e target FQDN
Evidência técnica: Autenticação Kerberos com ticket cached

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
Shell obtido via autenticação Kerberos com chave AES raw via flag -aesKey
Evidência técnica: Autenticação com chave AES 256-bit

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
Prompt PowerShell remoto no host alvo após usar -shell-type powershell
Evidência técnica: Shell PowerShell remoto via -shell-type

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
Logging detalhado mostrando string binding, service control manager path e command redirect
Evidência técnica: Output com timestamp e debug verboso

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"
Output do comando ipconfig executado remotamente via echo | impacket-smbexec e here-string
Evidência técnica: Execução non-interativa via pipe e here-string

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$
Shell obtido com flag -share C$ confirmando comportamento do share de saída
Evidência técnica: Especificando share de saída customizado

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
Conexão direcionada a IP específico via -target-ip com credenciais protegidas por aspas
Evidência técnica: Definindo target IP separado do hostname

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.exe ou 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.exe spawn 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.