
scanner de limitação de taxa global no Linux (CVE-2016-5696)
grill, também conhecido como limitação global de taxa no Linux, é um scanner para
CVE-2016-5696 (TCP puro off-path).
$ go get github.com/nogoegst/grill
Nunca use links sem fio no caminho até os hosts. A perda constante de pacotes e retransmissões reduzem drasticamente a precisão do scan.
Use o mínimo de NATs possível (até 0), eles introduzem atrasos e alteram pacotes.
Atualmente, o grill usa cerca de 400KBit/s em média e no máximo 500Kbit/s de largura de banda de saída (16 scans simultâneos).
Para evitar interferência do kernel durante o scan, adicione uma regra ao seu firewall para descartar pacotes RST de saída.
Para PF (/etc/pf.conf):
block drop out quick proto tcp flags R/R
então # pfctl -f /etc/pf.conf.
Para NetFilter:
# iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
O grill lê stdin e escaneia hosts a partir dele (até 16 scans simultâneos). O formato de entrada é host port\n.
# cat probe | grill -i interface -dll gateway-MAC [-sll src-MAC] [-sip src-IP] > results
O formato de saída é host:port,recievedChACKs,1stBurstSendingTime,2ndBurstSendingTime.
Para obter resultados legíveis, passe os resultados pelo utilitário verdict (está no diretório verdict):
cat results | verdict
É a vida. Divirtam-se e façam amor.
Para escanear relays da rede Tor, basta buscar e formatar o último consenso:
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
E então basta passar o arquivo resultante para a entrada do grill.
Atualmente, escanear a rede Tor inteira deve levar menos de 30m (16 scans simultâneos).
Consegui escanear a rede inteira em 7m44s usando 127 scans simultâneos e em 6m30s reduzindo ainda mais o timeout para 1.7s (isso provavelmente não é seguro devido a perda de pacotes, congestionamento, etc).
Observe que 127 é o número máximo (e razoável) de BPFs abertos no OpenBSD. No Linux, esse limite é maior, mas fará seu kernel quase travar. De qualquer forma, boa sorte.
O grill é fortemente inspirado no scanner Scapy semelhante de David Stainton [https://github.com/david415/scan_for_rfc5961] e no PoC de violentshell [https://github.com/violentshell/rover].