Re-Port kann verwendet werden, um Firewalls aktiv zu prüfen, um ausgehende oder eingehende Blockierungsregeln aufzulisten. Wenn Sie es richtig verwenden, können Sie die Konfiguration der Firewall abrufen.
Ich habe es hauptsächlich entwickelt, um mir bei der Fehlerbehebung bei Problemen mit einem verteilten Netzwerkscanner zu helfen, den ich gerade entwickle.
Bei diesem Code handelt es sich lediglich um einen PCAP-Parser. Das bedeutet, dass Sie ihm einen ordnungsgemäß erfassten Netzwerkpaket-Dump zur Verfügung stellen müssen, damit er funktioniert. Das Tool gibt dann Ports aus, die (laut PCAP) von der Firewall blockiert sind.
Um es nutzen zu können, benötigen Sie Zugriff auf mindestens zwei Maschinen. Einer sitzt hinter der Firewall, die Sie testen möchten, und der andere auf der anderen Seite.
Es gibt zwei mögliche Anwendungsfälle:
Sie benötigen Tools wie tcpdump, tshark oder wireshark, um den Netzwerkverkehr (oder einen anderen Sniffer) zu erfassen und zu speichern, und Tools wie nmap oder masscan, um die Prüfpakete zu erstellen und zu senden. In den folgenden Beispielen verwende ich masscan und tcpdump.
Falls sich direkt vor der externen Maschine eine weitere Firewall befindet (nicht die hinter der Firewall, die Sie testen möchten), ist es besser, die geltenden Regeln zu kennen. Dies ist jedoch nicht zwingend erforderlich. Sie können es trotzdem herausfinden, indem Sie weitere Tests an verschiedenen Standorten durchführen.
Wenn Sie die folgenden Schritte befolgen, erhalten Sie ein genaues Ergebnis.
Nehmen wir an, wir möchten ausgehende Regeln aufzählen, weil wir später auf diesem Computer einen Netzwerkscanner ausführen möchten und daher sicherstellen möchten, dass kein ausgehender Datenverkehr von unserer Ausgangs-Firewall blockiert wird.
Die Maschine hinter der Firewall hat die IP aaaa
während die äußere Maschine bbbb
hat. Dieser zweite Computer wäre derjenige, auf dem wir den Paket-Sniffer ausführen (in diesem Fall tcpdump
) und der erste, den wir konfigurieren werden.
PCAP-Erwerb
Wir müssen hier einen Paket-Sniffer starten, um zu sehen, welche Prüfpakete nicht am Ziel ankommen. Bedenken Sie, dass auf diesem Computer die öffentliche IP-Adresse bbbb
mit der Netzwerkschnittstelle eth0
verknüpft ist und keine Firewall ausgeführt wird . Wir führen tcpdump wie folgt aus
tcpdump -ni eth0 -w re-port.pcap src host a.a.a.a
Es wird eine Datei re-port.pcap
generiert, die wir nach Abschluss unseres Tests an dieses Tool übergeben. Aber wir werden diesen Teil später sehen.
Verkehr sondieren
Wir werden 65535 SYN
Pakete von der Maschine hinter der Firewall generieren und sie an bbbb
senden.
Dazu verwende ich masscan
. Es ermöglicht uns, die Rate mit der Option --rate
festzulegen und wie viele Pakete für jeden angegebenen Port mit der Option --retries
erstellt werden. Beide Optionen sind für uns wichtig, da wir sicherstellen müssen, dass alle Pakete, die das Ziel erreichen können, auch dort ankommen. Basierend auf der Bandbreite, die Sie am Quell-/Zielort haben, könnten Pakete aufgrund der hohen Sendegeschwindigkeit verloren gehen. Für diesen Test müssen wir langsam und sicher vorgehen. In Italien gibt es ein Sprichwort: „Wer langsam geht, kommt weit“ , das scheint mir hier passend.
masscan -Pn -n -p 1-65535 --wait 5 -e eth0 --rate 350 --retries 2 --open b.b.b.b
Durch einige Tests habe ich herausgefunden, dass 350 Pakete pro Sekunde, die zweimal pro Port gesendet werden, also insgesamt 131072 (128.000) Pakete, ohne Paketverlust etwa neun Minuten dauern.
Firewallregeln aufzählen
An dieser Stelle können wir Re-port
verwenden, um die Liste der geschlossenen Ports abzurufen. Gehen Sie zurück zum ersten Computer, stoppen Sie den Paket-Sniffer CTRL+C
und kopieren Sie die re-port.pcap
in das Verzeichnis, in dem Sie das Re-port-Tool haben. Sie können es nun wie folgt ausführen:
./enumerate.py re-port.pcap
In den vorherigen Beispielen wurden TCP-Blockierungsregeln aufgelistet. Wenn Sie eine Liste aller blockierten UDP-Ports wünschen, befolgen Sie die obigen Schritte und ändern Sie die Befehle wie folgt:
# Machine with b.b.b.b IP
tcpdump -ni eth0 -w re-port.pcap src host a.a.a.a
# Machine with a.a.a.a IP
masscan -Pn -n -p U:1-65535 --wait 5 -e eth0 --rate 350 --retries 2 --open b.b.b.b
# Re-port
./enumerate.py re-port.pcap --udp
Führen Sie ./enumerate.py --help aus, um alle Optionen anzuzeigen
$./enumerate.py --help
usage: enumerate.py [-h] [--address ADDRESS] [--open] [--version] [-u] [-v] pcap
Re-port is a tool to actively enumerate firewall rules.
positional arguments:
pcap PCAP dump of receiving scan traffic
optional arguments:
-h, --help show this help message and exit
--address ADDRESS scanners's IP address. If unset, all the packets in the
PCAP will be used to enumerate closed ports
--open print open ports instead of closed ones
--version show program's version number and exit
-u, --udp search for UDP open ports instead of TCP
-v, --verbose increase output verbosity
Report ist eine Python-Klasse und Sie können sie nach Belieben verwenden/erweitern.
Es ist iterierbar und kann innerhalb einer with
-Anweisung verwendet werden.
with Report('dump.pcap') as r:
r.enumerate_ports('tcp', '127.0.0.1')
r.print_ports()
oder
r = Report('dump.pcap')
r.enumerate_ports('tcp', '127.0.0.1')
for port in r:
print('Open %d' % port)
@r4d10n: für die einfache Idee hinter diesem Tool.