
Linuxにおけるグローバルレート制限 (CVE-2016-5696) スキャナ
grill は、別名 Linux におけるグローバルレート制限であり、CVE-2016-5696 (純粋な TCP オフパス) のスキャナーです。
$ go get github.com/nogoegst/grill
ホストへの経路にワイヤレスリンクを絶対に使用しないでください。継続的なパケット損失と再送信により、スキャンの精度が大幅に低下します。
NAT は可能な限り少なくしてください (0 まで)。NAT は遅延を導入し、パケットを変更します。
現在、grill は平均約 400KBit/s、最大 500Kbit/s の出力帯域幅を使用しています (16 同時スキャン)。
スキャン中のカーネル干渉を回避するには、ファイアウォールに発信 RST パケットをドロップするルールを追加してください。
PF (/etc/pf.conf) の場合:
block drop out quick proto tcp flags R/R
その後に # pfctl -f /etc/pf.conf を実行します。
NetFilter の場合:
# iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
grill は stdin を読み取り、そこからホストをスキャンします (最大 16 同時スキャン)。入力形式は host port\n です。
# cat probe | grill -i interface -dll gateway-MAC [-sll src-MAC] [-sip src-IP] > results
出力形式は host:port,recievedChACKs,1stBurstSendingTime,2ndBurstSendingTime です。
人間が読める結果を得るには、結果を verdict ユーティリティ ( verdict ディレクトリ内) に通します:
cat results | verdict
というわけです。楽しんで、愛を育んでください。
Tor ネットワークのリレーをスキャンするには、最新のコンセンサスを取得してフォーマットするだけです:
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
そして、結果のファイルを grill の入力に渡すだけです。
現時点では、Tor ネットワーク全体のスキャンには 30 分未満かかるはずです (16 同時スキャン)。
私は 127 の同時スキャンを使用して 7 分 44 秒でネット全体をスキャンできました。さらにタイムアウトを 1.7 秒に短縮して 6 分 30 秒でスキャンできました (パケットロスや輻輳などのため、これはおそらく安全ではありません)。
127 は OpenBSD で開くことができる BPF の最大 (かつ妥当な) 数であることに注意してください。Linux ではこの制限はより高くなりますが、カーネルがほぼ停止状態になります。とにかく、幸運を祈ります。
grill は、David Stainton による同様の Scapy スキャナー [https://github.com/david415/scan_for_rfc5961] と、violentshell による PoC [https://github.com/violentshell/rover] に大きく触発されています。