SSH für Security Audits


Einleitung

SSH erschien 1995 und entwickelte sich seither zu einem der meistbenutzten Standardwerkzeuge für die Administration von Linux/Unix basierten Servern. Durch die immer größere Verbreitung von IoT Geräten wurden Angriffe auf SSH häufiger. Gerade diese IoT Geräte sind ein lohnendes Ziel, weil diese keine oder nur selten Updates bekommen - auch sind solche Geräte oft aus dem Internet erreichbar. In vielen Fällen sind diese Geräte oft nur durch ein Standardpasswort oder ein einfach zu erratendes Passwort geschützt. Dies ist mitunter auch ein Grund, warum diese Geräte oft sehr schnell in Botnetze integriert werden.

In dieser Artikel-Serie wird beschrieben, wie ein MITM Angriff auf SSH funktioniert und für Security Audits und Honey Pots eingesetzt werden kann.

Der erste Teil dient als Einführung und behandelt als Thema die Überwachung eines IoT Honeypots mit einem SSH MITM Proxy Server.

Im zweiten Teil wird es um ein Security Audit gehen, bei dem nicht nur die SSH Session überwacht sondern auch in diese eingegriffen werden soll.

Im dritten Teil wird auf die technischen Grundlagen von SSH MITM Angriffen eingegangen und warum z.B. eine Public Key Authentifizierung nicht vor einem MITM Angriff schützt.

Teil 1 - Szenario IoT Honey Pot

In diesem Szenario wird ein IoT Gerät als Honey Pot aufgesetzt. Das Monitoring erfolgt über einen SSH MITM Proxy Server, der die Verbindung mitprotokolliert. Auf diese Weise müssen keine Änderungen an dem IoT Gerät vorgenommen werden. Der SSH MITM Proxy Server ist in der Lage die Ein- und Ausgabe der Terminal Session zu speichern, was für eine spätere Analyse des Angriffs herangezogen werden kann. Darüber hinaus ist es möglich sämtliche Dateien, die per SCP und SFTP von oder zum Gerät übertragen wurden, zu speichern.

Der Angreifer (SSH Client) möchte sich mit dem IoT Gerät (SSH Server) verbinden. Jedoch wird die Verbindung von einem SSH MITM Proxy Server unterbrochen, der die gesamte Session für eine spätere Analyse aufzeichnet.

Empfehlung! Es empfiehlt sich das IoT Gerät hinter eine Firewall zu stellen, damit ausgehende Verbindungen kontrolliert und protokolliert werden können.

Installation des SSH MITM Proxy Servers

Als MITM Proxy Server wird das in Python geschriebene SSH MITM (https://pypi.org/project/ssh-mitm/) verwendet. Hierbei handelt es sich um ein sogenanntes Python PIP Packages, was sich unter Linux sehr einfach installieren lässt. Die einzige Voraussetzung ist Python 3.6 oder aktueller.

Für die Installation sollte eine virtuelle Python Umgebung eingerichtet:

python3 -m venv ~/sshmitmenv

Und aktiviert werden:

source ~/sshmitmenv/bin/activate

Danach kann der SSH MITM Proxy Server installiert werden:

pip install ssh-mitm

Starten des Proxy Server

Um den Proxy Server mit dem Honeypot als Ziel zu starten, muss über den Parameter –remote-host die IP-Adresse oder der Hostname des Honeypots angegeben werden.

ssh-mitm --remote-host 192.168.0.x

Der Proxy Server startet standardmäßig auf Port 10022. Um den Proxy Server auf Port 22 starten zu können müsste dieser mit privilegierten Rechten ausgeführt werden, was aber ein Sicherheitsrisiko darstellen könnte. Aus diesem Grund ist es empfehlenswert mit iptables eine Portumleitung zu machen.

iptables -t nat -A PREROUTING -p tcp –dport 22 -j REDIRECT –to-ports 10022

Auf diese Weise ist der Proxy Server über Port 22 von Außen erreichbar und kann über einen Netzwerkscan oder die Suchmaschine Shodan relativ einfach von einem Angreifer als SSH Service identifiziert werden.

Speichern der SSH Session

Standardmäßig werden nur Metadaten der SSH Sessions protokolliert. Diese umfassen z.B: Benutzernamen und Passwörter.

Um die vollständige Session und alle übertragenen Dateien zu speichern ist es notwendig den Proxy Server mit zusätzlichen Parametern zu starten.

Speichern der Terminal Session

Um die Terminal Session zu speichern muss der Parameter –ssh-interface verwendet werden. Dieser erwartet als Argument, welches Interface für die Verarbeitung der Terminal Session verwendet werden soll.

ssh-mitm --remote-host 192.168.0.x --ssh-interface ssh_proxy_server.plugins.ssh.sessionlogger.SSHLogForwarder --ssh-log-dir ~/sshlogs

Die einzelnen Sessions werden dann in dem Verzeichnis ~/sshlogs abgelegt und können dort mit einem Editor oder mit dem Konsolenkommando “scriptreplay” analysiert werden. Für die Verwendung von Script wird auch ein sogenanntes Timing-File erstellt, das notwendig ist, um die gespeicherte Session abzuspielen. (siehe “man scriptreplay”)

Speichern der übertragenen Dateien

Bei der Übertragung von Dateien muss zwischen SCP und SFTP unterschieden werden. Der Proxy Server unterstützt beide Übertragungsverfahren. Jedoch müssen diese separat konfiguriert werden. Dies erfolgt ebenfalls über Kommandozeilenparameter.

Um per SCP übertragene Dateien zu speichern sind folgende Parameter anzugeben:

--scp-interface ssh_proxy_server.plugins.scp.store_file.SCPStorageForwarder --scp-storage ~/scpfiles

Für die mit SFTP übertragenen Dateien sind die Parameter anzugeben.

--sftp-handler ssh_proxy_server.plugins.sftp.store_file.SFTPHandlerStoragePlugin --sftp-storage ~/sftpfiles

Die Dateien werden in den entsprechenden Ordnern mit einem zufällig generierten Namen abgelegt. Über das Logfile bzw. die Logausgabe des Proxy Servers kann die entsprechende Dateiübertragung mit der abglegten Datei zusammengeführt werden.

Ausblick

Der SSH MITM Proxy Server stellt eine Alternative zu klassischen Honeypots dar, weil das Monitoring und der Honeypot voneinander getrennt werden können. Dadurch ist es für den Angreifer sehr schwer die Überwachung zu erkennen und er hat auch keine Möglichkeit das Monitoring des Honeypots zu unterbinden oder zu manipulieren.

In diesem Artikel wurde beschrieben, wie der SSH MITM Proxy Server installiert und gestartet werden kann. Um die einzelnen Sessions zu analysieren können Standard Linux Tools wie z.B. “scriptreplay” verwendet werden. Ebenso können die übertragenen Dateien, falls notwendig, einem Reverse Engineering unterzogen werden.

Im nächsten Teil dieser Artikel Serie soll das erworbene Wissen vertieft und anhand dem Beispiel eines Security Audits beschrieben werden, wie der SSH MITM Proxy Server dazu verwendet werden kann um in eine aktive Terminal Session einzugreifen oder übertragene Dateien durch andere Dateien zu ersetzen.

Back to blog

SSH-MITM Proxy server is open source

and developed by the community. Be a part of this community and...