
IPv6-Port-Scanner, der für Schnelligkeit ausgelegt ist und auf Internet-Scanning und -Entdeckung abzielt.
fi6s ist ein IPv6-Portscanner, der auf Geschwindigkeit ausgelegt ist und für Internet-Scans und -Entdeckungen konzipiert wurde. Dies wird durch asynchrones Senden und Verarbeiten von Rohpaketen erreicht.
Design und Zielsetzung sind ähnlich wie bei Masscan, wenn auch nicht so funktionsreich.
Bitte beachten Sie die Lizenz.
Zu guter Letzt: Dies ist ein Sicherheitsforschungstool, und Sie (der Benutzer) sind vollständig dafür verantwortlich, die örtlichen Vorschriften einzuhalten und bei Bedarf die erforderliche Genehmigung einzuholen.
Das Erstellen von fi6s ist auf jedem aktuellen Linux-System recht einfach, z.B. unter Ubuntu:
# apt install gcc make git libpcap-dev
$ git clone https://github.com/sfan5/fi6s.git
$ cd fi6s
$ make BUILD_TYPE=release
Die ausführbare Datei befindet sich dann unter ./fi6s.
Beachten Sie, dass fi6s ausschließlich unter Linux entwickelt und getestet wird. Andere UNIX-ähnliche Plattformen sollten funktionieren, Windows wird nicht unterstützt.
fi6s erkennt automatisch die notwendigen Netzwerkdetails (Quell-, Router-MACs und -IPs) für Sie, sodass Sie sofort mit dem Scannen beginnen können:
# ./fi6s -p 80,8000-8100 --max-rate 170 2001:db8::/120
Dieses Beispiel wird:
list-Formatierung auf die Standardausgabe ausgeben (implizite Voreinstellung)Es gibt verschiedene andere Möglichkeiten, einen Adressbereich zum Scannen anzugeben.
Wenn Sie sich nicht sicher sind, was passieren wird, verwenden Sie --print-summary, um einen schnellen
Überblick über den Scan zu erhalten, oder --print-hosts, um alle potenziellen Ziel-IPs auszugeben.
Für weitere fortgeschrittene Funktionen und zusätzliche Erläuterungen konsultieren Sie bitte die Ausgabe von fi6s --help.
Die Daten, die ein entfernter Host als Antwort auf eine neue Verbindung oder Sondenanfrage sendet, werden als "Banner" bezeichnet. fi6s macht es einfach, diese zu sammeln.
Alles, was Sie tun müssen, ist die Option --banners zu übergeben:
# ./fi6s -p 22 --banners 2001:db8::xx
Fügen Sie --udp zu Ihrer Befehlszeile hinzu:
# ./fi6s -p 53 --banners --udp 2001:db8:xx::1
Beachten Sie, dass Sie im Gegensatz zu TCP nur dann nützliche (oder überhaupt) Ergebnisse erhalten, wenn Sie
einen Port scannen, dessen Protokoll von fi6s für Sonden unterstützt wird.
Verwenden Sie fi6s --list-protocols, um eine Liste anzuzeigen.
Da fi6s einen eigenen minimalen TCP/IP-Stack mitbringt, muss das Betriebssystem daran gehindert werden, auf demselben Port, den fi6s verwendet, TCP zu kommunizieren, da dies den Scan-Prozess stören würde.
Standardmäßig bittet fi6s das OS, einen ephemeren Port zu reservieren und diesen für die Dauer des Scans zu verwenden. Dies funktioniert nur unter Linux.
Wenn dies fehlschlägt oder Sie sich auf einer anderen Plattform befinden (fi6s wird es Ihnen mitteilen!) müssen Sie sich für einen Quellport entscheiden und Ihre Firewall so konfigurieren, dass der gesamte Verkehr auf diesem Port verworfen wird, z.B.:
# ipfw add 1000 deny tcp from any to any 12345 in ip6
oder:
# ip6tables -A INPUT -p tcp -m tcp --dport 12345 -j DROP
und dann:
# ./fi6s -p 22 --banners --source-port 12345 2001:db8::xx
Da UDP verbindungslos ist, ist dies nicht erforderlich, aber es ist dennoch eine gute Idee, unnötige ICMPv6-Antworten zu verhindern. fi6s wird dies standardmäßig ebenfalls tun.
Ein großer Vorteil von IPv6 ist der große Adressraum, und eine weitere Möglichkeit, das oben beschriebene Problem zu vermeiden, besteht darin, einfach eine andere Quell-IP zu verwenden.
Diese IP sollte nicht Ihrer lokalen Maschine zugewiesen sein, muss jedoch statisch zu Ihrer Maschine geroutet werden, da fi6s nicht auf NDP-Anfragen antwortet.
Um zu überprüfen, ob Ihr Setup korrekt funktioniert, können Sie einfach eine bekannte öffentliche IP anpingen, z.B.:
# ./fi6s --icmp --source-ip ${chosen_src_ip} 2001:4860:4860::8888
Verwenden Sie --icmp, um einen ICMPv6-Ping-Scan durchzuführen:
# ./fi6s --icmp 2001:xxx0::1
Die Round-Trip-Zeit wird nicht gemessen.
Um das Design von fi6s zu ermöglichen, mussten einige Annahmen über die Netzwerkumgebung getroffen werden. Diese beeinträchtigen die typische Nutzung nicht, sind aber der Vollständigkeit halber hier aufgeführt.
Das bedeutet, dass fi6s möglicherweise nicht wie erwartet funktioniert oder gar nicht funktioniert, wenn:
Beim Sammeln von Bannern ist zu beachten, dass fi6s nicht mit einem echten TCP-Stack ausgestattet ist. Es unterstützt lediglich das Senden einer Abfrage und das Lesen der darauf folgenden Antwortdaten. Erneutes Senden oder Fensterlogik werden nicht implementiert.
Obwohl fi6s Port- und Sequenznummern verwendet, um sicherzustellen, dass die Ergebnisse, die Sie erhalten, mit dem aktuell laufenden Scan zusammenhängen, gibt es keine Prüfung, um die IP, an die eine Sonde gesendet wurde, mit der IP zu vergleichen, die tatsächlich antwortet.
Dies bedeutet, dass z.B. das Ausführen eines Traceroutings während eines Scans die Scan-Ergebnisse nicht beeinträchtigt.
Es ist jedoch möglich, dass in den Scan-Ergebnissen eine IP erscheint, die nicht Teil der Eingabeliste war, wenn ein gescanntes Ziel auf einer anderen IP antwortet. Diese Eigenschaft kann in der Praxis nützlich sein, da einige Router SNMP- oder DNS-Anfragen auf der Nullnetzwerkadresse akzeptieren, aber mit ihrer primären IPv6 antworten.
Beispiel: Scan 3fff:1234:1234:44xx:: -> Antwort von 3fff:1234:1234:44a3:e2a:86ff:fe12:3456
Die Art und Weise, wie fi6s die gescannten IPs randomisiert (--randomize-hosts 1, was die Standardeinstellung ist),
ist bei weitem nicht perfekt.
Es wird:
Zum Beispiel, wenn Sie 3fff::/108 scannen, wird die Reihenfolge von 3fff::1, 3fff::20 und 3fff::300 zufällig sein.
Aber alle Adressen in 3fff::0:* werden vor 3fff::1:*, vor 3fff::2:* usw. gescannt.