Scripts
Descobrindo CDNs de um prefixo
Esse script irá tentar ler o certificado da porta 443 e pegando o nome (CN) dessa forma fica facil descobrir pelo domínio.
descobre_ip_cdn.sh
Script tenta obter de um prefixo IPv4
apt install netcat-openbsd wget
wget -O /bin/descobre_ip_cdn https://rrflow.com.br/downloads/descobre_ip_cdn.sh
chmod +x /bin/descobre_ip_cdn
Uso
descobre_ip_cdn <ip/prefixo>
descobre_ip_cdn 192.168.0.0/24
descobre_ip_cdn 192.168.5.5/32
Exemplo de saída:
+--------------------------------------------------+
| 192.168.0.213 » *.ferm1-1.fna.fbcdn.net |
| 192.168.0.222 » *.ferm1-1.fna.fbcdn.net |
| 192.168.0.223 » *.ferm1-1.fna.fbcdn.net |
| 192.168.0.224 » *.ferm1-1.fna.whatsapp.net |
| 192.168.0.226 » *.ferm1-1.fna.fbcdn.net |
+--------------------------------------------------+
descobre_ip_cdn_unico.sh
Script tenta obter de um IPv4/IPv6 único.
apt install netcat-openbsd wget
wget -O /bin/descobre_ip_cdn_unico https://rrflow.com.br/downloads/descobre_ip_cdn_unico.sh
chmod +x /bin/descobre_ip_cdn_unico
Uso
descobre_ip_cdn_unico <ipv4/ipv6>
descobre_ip_cdn_unico 192.168.0.213
descobre_ip_cdn_unico 2001:db8:831d:1::d
Exemplo de saída:
192.168.0.213 » *.ferm1-1.fna.fbcdn.net
2001:db8:831d:1::d » *.googlevideo.com
Magia do terminal
Exemplo de uso pelo terminal para obter de forma rápida possíveis CDNs de operadora.
Rode o whois no ASN da operadora que deseja descobrir seus IPS:
whois AS65530
Exemplo de saída
aut-num: AS65530
owner: NOME DA OPERADORA
ownerid: 00.000.000/0000-00
responsible: Rudimar Remontti
country: BR
owner-c: RRFLOW
routing-c: RRFLOW
abuse-c: RRFLOW
created: 20090101
changed: 20240203
inetnum: xxx.xxx.xxx.0/20
inetnum: yyy.yyy.yyy.0/21
inetnum: xxxx:xxxx::/32
Sendo “inetnum” os prefixos do mesmo.
Agora, vamos utilizar o nfdump combinado com o script descobre_ip_cdn_unico para identificar os 400 IPs desta operadora com os maiores tráfegos. Logo o destino provavelmente seja algum servidor de conteúdo (CDNs).
Entre do diretório da base de dados, exemplo:
cd /var/rr-flows/Border/2024/04/02
Aqui estarei selecionadno os arquivos da base com intervalo de horário de pico, das 20h às 22h. Altere xxx.xxx.xxx.0/22 e xxxx:xxxx::/32 para os prefixo(s) desejado(s). Exemplo:
nfdump -R nfcapd.202404020800:nfcapd.202404022200 \
-6 -O bytes -n 400 -A dstip -o "fmt:descobre_ip_cdn_unico %da" \
'(dst net xxx.xxx.xxx.0/22 OR dst net xxxx:xxxx::/32) AND dst port 443' \
| awk '{print $NF}' | xargs -I {} descobre_ip_cdn_unico {}
Exemplo da saída:
root@dev-rr-flow[/var/rr-flows/Border/2024/04/02]# nfdump -R nfcapd.202404020800:nfcapd.202404022200 \
-6 -O bytes -n 400 -A dstip -o "fmt:descobre_ip_cdn_unico %da" \
'(dst net xxx.xx.x.x.0/20 OR dst net xxxx:xxxx::/32) AND dst port 443' \
| awk '{print $NF}' | xargs -I {} descobre_ip_cdn_unico {}
xxxx:xxxx:f000:134::2 » *.1.oca.nflxvideo.net
xxx.xx.x.x.117 » *.1.oca.nflxvideo.net
xxx.xx.x.x.121 » *.1.oca.nflxvideo.net
xxx.xx.x.x.189 » *.1.oca.nflxvideo.net
xxxx:xxxx:f000:5:face:b00c:0:a7 » *.fpfb1-1.fna.fbcdn.net
177.75.136.3 » *.edge-lala-xap-sc.video.globo.com
xxxx:xxxx:f000:5:face:b00c:3333:a3f » *.fpfb1-1.fna.fbcdn.net
xxxx:xxxx:f000:143::8 » *.flaj1-1.fna.whatsapp.net
xxxx:xxxx:f000:142::9 » *.googlevideo.com
xxxx:xxxx:f000:143::9 » *.googlevideo.com
xxx.xx.x.x.14 » *.googlevideo.com
xxx.xx.x.x.204 » *.googlevideo.com
xxxx:xxxx:f000:142::8 » *.googlevideo.com
xxx.xx.x.x.205 » *.googlevideo.com
...
Agora ficou fácil de você atualizar o fav-asn-prefix-graphs.json
Descobrindo Prefixos de um AS
discover_prefixes.py
Este script obtém os prefixos com base no RADB. Pode ser extremamente útil se o seu roteador não estiver exportando os ASN através do fluxo de dados. Com este script, você pode adicionar esses prefixos, por exemplo, ao arquivo fav-asn-prefix-graphs.json
Instale os pacotes necessários, e baixe o script.
apt install python3-netaddr whois wget
wget https://rrflow.com.br/downloads/discover_prefixes.py
Agora basta executar seu script seguido do ASN que deseja obter os prefixos
Para obter apenas prefixos IPv4:
python3 discover_prefixes.py AS32934 -4
Para obter apenas prefixos IPv6:
python3 discover_prefixes.py AS32934 -6
Para obter ambos:
python3 discover_prefixes.py AS32934
Retorno será:
{
"description": "Prefixos AS32934",
"filter": {
"prefix": [
"31.13.24.0/21",
"31.13.64.0/18",
"45.64.40.0/22",
"57.144.0.0/14",
"66.111.48.0/22",
"66.220.144.0/20",
"69.63.176.0/20",
"69.171.224.0/19",
"74.119.76.0/22",
"102.132.96.0/20",
"103.4.96.0/22",
"129.134.0.0/16",
"147.75.208.0/20",
"157.240.0.0/16",
"163.70.128.0/17",
"163.77.128.0/17",
"173.252.64.0/18",
"179.60.192.0/22",
"185.60.216.0/22",
"185.89.216.0/22",
"204.15.20.0/22",
"2401:db00::/32",
"2620:0:1c00::/40",
"2a03:2880::/31",
"2a03:2887:ff0c::/47",
"2a03:2887:ff0f::/48",
"2a03:2887:ff10::/47",
"2a03:2887:ff13::/48",
"2a03:2887:ff15::/48",
"2a03:2887:ff28::/48",
"2a03:2887:ff2c::/47",
"2a03:2887:ff31::/48",
"2a03:2887:ff32::/48",
"2a03:2887:ff42::/48",
"2a03:2887:ff46::/47",
"2a03:2887:ff58::/47",
"2a03:83e0::/32",
"2a10:f781:10:cee0::/64"
]
}
}
É só você utilizar em seus filtros agora!
Segue uma listinha de AS:
Youtube » AS36040
Google Cloud » AS396982
Google » AS15169
Facebook » AS32934
Valve Corp. » AS32590
Telefonica » AS18881
Amazon » AS16509
Akamai » AS20940
Level3 » AS3356
Fastly » AS54113
ByteDance (Tiktok) » AS396986
ZEN-ECN » AS21859
CloudFlare » AS13335
Netflix » AS2906
CDS Global Cloud » AS63199
CDN77 (Xvideos) » AS60068