
Globale Ratenbegrenzung in Linux (CVE-2016-5696) Scanner
grill, auch bekannt als globales Rate-Limiting in Linux, ist ein Scanner für CVE-2016-5696 (reines TCP-Off-Path).
$ go get github.com/nogoegst/grill
*Verwenden Sie niemals drahtlose Verbindungen auf dem Weg zu den Hosts. Ständige Paketverluste und erneute Übertragungen verschlechtern die Scan-Genauigkeit drastisch.
*Verwenden Sie so wenige NATs wie möglich (am besten 0), da sie Verzögerungen verursachen und Pakete verändern.
Derzeit verwendet grill durchschnittlich etwa 400 KBit/s und maximal 500 KBit/s Ausgangsbandbreite (16 gleichzeitige Scans).
Um Kernel-Interferenz während des Scans zu vermeiden, fügen Sie eine Regel in Ihre Firewall ein, um ausgehende RST-Pakete zu verwerfen.
Für PF (/etc/pf.conf):
block drop out quick proto tcp flags R/R
dann # pfctl -f /etc/pf.conf.
Für NetFilter:
# iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
grill liest von stdin und scannt Hosts daraus (bis zu 16 gleichzeitige Scans). Das Eingabeformat ist host port\n.
# cat probe | grill -i interface -dll gateway-MAC [-sll src-MAC] [-sip src-IP] > results
Das Ausgabeformat ist host:port,recievedChACKs,1stBurstSendingTime,2ndBurstSendingTime.
Um menschenlesbare Ergebnisse zu erhalten, führen Sie die Ergebnisse durch das Dienstprogramm verdict aus (befindet sich im Verzeichnis verdict):
cat results | verdict
So läuft das. Viel Spaß und macht Liebe.
Um Relais des Tor-Netzwerks zu scannen, rufen Sie einfach die letzte Konsensdatei ab und formatieren Sie sie:
curl https://collector.torproject.org/recent/relay-descriptors/consensuses/`date -u +'%Y-%m-%d-%H-00-00-consensus'` | grep '^r '| awk '{print $7" "$8}' > probe-consensus
Übergeben Sie dann die resultierende Datei an die grill-Eingabe. Derzeit sollte das Scannen des gesamten Tor-Netzwerks weniger als 30 Minuten dauern (16 gleichzeitige Scans).
Ich habe es geschafft, das gesamte Netzwerk in 7m44s mit 127 gleichzeitigen Scans und in 6m30s durch weiteres Reduzieren des Timeouts auf 1,7 s zu scannen (dies ist wahrscheinlich aufgrund von Paketverlusten, Überlastung usw. nicht sicher).
Beachten Sie, dass 127 die maximale (und vernünftige) Anzahl geöffneter BPFs in OpenBSD ist. In Linux ist diese Grenze höher, aber es wird Ihren Kernel fast zum Stillstand bringen. Wie auch immer, viel Glück.
grill ist stark inspiriert von einem ähnlichen Scapy-Scanner von David Stainton [https://github.com/david415/scan_for_rfc5961] und einem PoC von violentshell [https://github.com/violentshell/rover].