Tor Exit Node erkennen

Wenn Du wissen willst, ob eine IP-Adresse etwas mit dem TOR Netzwerk zu tun hat, z.B. als Exit Node verwendet wurde, dann gibt es mehrere Möglichkeiten dies zu überprüfen.

Die einfachste Lösung ist natürlich die vom TOR Projekt bereitgestellte Relay Search zu nutzen. Hier gibst Du einfach die IP-Adresse ins Suchformular ein und wenn diese IP als TOR Node gedient hat, bekommst du diverse Informationen über die IP angezeigt. Gerade rechts unten im Screenshot stehen einige interessante Informationen wie, wann die IP das erste mal am TOR Netzwerk mitwirkte, das Land oder weiter oben die Uptime, also wie lange der Rechner schon ohne Neustart läuft.

Weiter unten auf der Seite findest du weitere Informationen wie, mit welcher Wahrscheinlichkeit der Node als Exit Node in der Vergangenheit fungierte

Für einzelne IPs ist das eine schöne Lösung. Wenn du nun eine lange Liste von IPs abgleichen willst, kommt wieder die Bash ins Spiel. Das TOR Projekt stellt nämlich eine Liste mit den aktuellen Exit Nodes bereit. Diese Liste kannst du mit curl holen und ausgeben und dann mit dem Pipe an den Grep weiterleiten. Der Grep nimmt die Vergleichsliste, in der alle IP-Adressen drin sind mit dem Parameter -f. Im Ergebnis bekommst Du hier drei IP-Adressen angezeigt, die in beiden Listen vorhanden waren. Achte darauf dass in Deiner Liste keine Leerzeile drin ist, da Du sonst im Vergleich nach Zeilenende suchst, der in jeder Zeile der geladenen Datei drin ist.

Leider wird die erste Zeile rechts ausgegeben. Wenn Du das Ergebnis aber in eine Datei umleitest, ist es wieder eine normale Liste:

curl https://check.torproject.org/torbulkexitlist | grep -f ip.txt > t.ip

Die vom TOR Netzwerk bereitgestellte Liste wird alle 40 Minuten aktualisiert. Das bedeutet, dass sie nicht historisch ist. Wenn du die Daten aus der Vergangenheit benötigst, solltest Du die Liste ca stündlich herunterladen und archivieren. Das bringt dann zwar nichts für Recherchen die sich auf Zeitpunkte vor Deiner ersten Sicherung beziehen. Aber ab dem Beginn der Sicherungen wären die Daten verfügbar.

Um die Datei herunterzuladen kannst Du den Befehl wget verwenden

wget https://check.torproject.org/torbulkexitlist

Anschließend solltest Du noch die Datei umbenennen, damit sie beim nächsten mal nicht überschrieben wird

mv torbulkexitlist torbulkexitlist$(date +%Y%m%d_%H%M%S).txt

Mv ist der Befehl zum umbenennen von Dateien. Der Befehl sagt also benenne torbulkexitlist in folgenden Dateinamen um. Das $() öffnet eine Subshell, die den Befehl ausführt und das Datum in dem angegebenen Format zurückgibt.

Die beiden Befehle kannst Du auch in ein Bash Script eintragen und die Datei in den Ordner /etc/cron.hourly abspeichern. Dadurch werden die Befehle stündlich ausgeführt.

#!/bin/bash
# Der Pfad muß an Dein System angepasst werden und existieren
wget https://check.torproject.org/torbulkexitlist -o /home/<USER>/exitnodes/torbulkexitlist 
mv /home/<USER>/exitnodes/torbulkexitlist.1 /home/<USER>/exitnodes/torbulkexitlist$(date +%Y%m%d_%H%M%S).txt 
#Pfad anpassen nicht vergessen

Die Datei sollte ausführbar sein. Das kannst du mit dem Befehl chmod erledigen (script.sh steht für Deinen Dateinamen):

chmod +x script.sh

Wenn der Rechner ausgeschaltet wird, wird der stündliche Download natürlich nicht durchgeführt.

Willst Du dann eine Liste von IPs mit den gesammelten Exit-Nodes vergleichen funktioniert das so am besten:

cat torbulk* | sort | uniq | grep -f ip.txt

Mit cat werden alle heruntergeladenen Dateien geöffnet. Natürlich sind viele IPs jetzt dutzende male dabei. Mit sort werden die IPs in eine Reihenfolge gebracht, so dass die selben IPs direkt untereinander stehen. Danach kann der uniq die Zeilen vergleichen und die doppelten entfernen. Der grep vergleicht dann die übrig gebliebenen IPs mit der übergebenen Liste.

Wenn Du dagegen sehen möchtest in welchen Dateien die IPs drin stehen reicht ein einfacher grep:

grep -f ip.txt torbulk*