Skip to content

OSINT: SSH und Tor Hidden Services aufdecken

Mit der Anonymität ist das so eine Sache. Passt man nicht richtig auf oder macht etwas falsch, so kann der ganze Aufwand für die Katz sein. Ein solches Beispiel machte auf Twitter die Runde.

Tor Hidden Services sind eine Möglichkeit, um anonym Informationen anzubieten. Das heißt, der Leser soll herausfinden können, wer diese Informationen anbietet. Neben Webseiten lassen sich die Hidden Services für verschiedene Zwecke einsetzen. Ich nutze die beispielsweise sehr gern, um mich über SSH mit Servern zu verbinden. Dies machen offensichtlich auch andere Leute gern.

Auf der Seite von Tor müssen nur zwei Zeilen geändert werden:

HiddenServiceDir /var/lib/tor/ssh
HiddenServicePort 22 127.0.0.1:22

Nach einem Restart von Tor liegt in /var/lib/tor/ssh/hostname der Name des Hidden Service’. Unter dieser Adresse steht der Dienst zur Verfügung, solange Tor auch läuft.

Jetzt könnte eigentlich alles gut sein. Jedoch spätestens seit zmap und ähnliches Werkzeugen ist das Durchprobieren aller IPv4-Adressen sehr einfach geworden. Ein findiger Angreifer verbindet sich einfach zu allen Adressen auf Port 22 und sammelt den Fingerprint ein, falls sich einer findet. So lassen sich beispielsweise bei Shodan Fingerprints finden.

Wenn ihr nun eine Onion-Adresse seht, hinter der ein SSH-Dienst steckt, verbindet ihr euch mit dem und sucht den Fingerprint in eurer Datenbank. Findet ihr eine Übereinstimmung, kennt ihr die reale IP-Adresse des Dienstes.

Doch was lässt sich dagegen tun? Der einfachste Weg ist, den SSH-Dienst gar nicht mehr öffentlich anzubieten. Mit der Zeile ListenAddress 127.0.0.1 ist der Dienst nur noch lokal und eben als Tor Hidden Service erreichbar. Dies hat den Vorteil, dass auch die nervigen Loginversuche durch Scriptkiddies aufhören. Wenn der Dienst vorher schon als Hidden Service lief, solltet ihr darauf achten, dass ihr die beiden Dateien in dem Verzeichnis /var/lib/tor/ssh/ löscht. Tor wird dann einen neuen Hostnamen mit neuem Fingerprint erzeugen. Damit ist der Dienst wieder nicht mit diesen einfachen Mitteln aufzufinden.

cronjob