💻 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 o s dados de FILTRO xxx.xxx.xxx.0/22 e xxxx:xxxx::/32 para os prefixo(s) desejado(s). Exemplo:

FILTRO="dst net xxx.xx.x.x.0/20 OR dst net xxxx:xxxx::/32"

nfdump -R nfcapd.202404020800:nfcapd.202404022200 -6 -O bytes -n 400 -A dstip -o csv "($FILTRO) AND dst port 443" \
| tail -n +2 \
| awk -F',' '{print $3}' \
| xargs -I {} descobre_ip_cdn_unico {}

Exemplo da saída:

# FILTRO="dst net xxx.xx.x.x.0/20 OR dst net xxxx:xxxx::/32"
# nfdump -R nfcapd.202404020800:nfcapd.202404022200 -6 -O bytes -n 400 -A dstip -o csv "($FILTRO) AND dst port 443" \
| tail -n +2 \
| awk -F',' '{print $3}' \
| 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