
tabi — Updated!
Framework per il rilevamento e la classificazione di eventi di hijacking di prefissi IP BGP tramite l'elaborazione di file dump MRT, con supporto per più parser di input e analisi automatizzata dei conflitti.
Esempio avanzato
Questo esempio dimostra come utilizzare il modulo tabi per rilevare tutti i possibili hijack BGP osservati da un collettore BGP.
Requisiti
AVVISO: Prima di provare questo esempio, assicurati di avere almeno 2 GB di memoria libera sul tuo computer
La procedura di installazione è descritta nel README principale.
Parser MRT
Questo esempio è compatibile con mabo e bgpreader.
Rilevare gli hijack
python detect_hijacks.py -c rrc01 -i mabo \
--rpki-roa-file roa.csv \
--irr-ro-file routes.csv \
--irr-mnt-file maintainers.csv \
--irr-org-file organisations.csv \
../../{bview,updates}.*.gz
Questo script di esempio stampa gli eventi anomali rilevati dal modulo tabi. Inoltre, tenta di filtrare i conflitti che sono molto probabilmente legittimi utilizzando i seguenti metodi:
- l'annuncio in conflitto è coperto da una ROA
- l'annuncio in conflitto è coperto da un oggetto di route
- esiste una relazione amministrativa tra i due AS in conflitto
- l'
AS_PATHdell'hijacker contiene l'ASN dell'hijacked
Queste euristiche sono documentate nel modulo tabi.annotate.
Interpretare i risultati
Esempio di update
In questo esempio, l'annuncio che aggiorna la rotta di 2403:8600:ea89::/48 originata da AS55441 porta probabilmente al reindirizzamento del traffico che era inizialmente diretto verso AS131317. Questo è sospetto perché esistono oggetti di route e ROA validi per la rotta originale, ma non per l'ultimo aggiornamento di rotta.
{
"timestamp" : 1451609472,
"collector" : "rrc01",
"peer_ip" : "2001:7f8:4::7992:1",
"peer_as" : 31122,
"announce" : {
"prefix" : "2403:8600:ea89::/48",
"asn" : 55441,
"as_path" : "31122 6939 6453 4755 45820 55441",
"type" : "U"
},
"conflict_with" : {
"prefix" : "2403:8600:ea89::/48",
"asn" : 131317,
"valid" : [
"apnic",
"roa"
]
},
"type" : "ABNORMAL"
}
- timestamp: quando l'annuncio è stato ricevuto (timestamp UTC)
- collector: quale collettore BGP ha ricevuto l'annuncio
- peer_ip e peer_as: quale peer BGP ha ricevuto l'annuncio
- announce: informazioni sull'annuncio
- type:
Use l'annuncio è stato ricevuto da un aggiornamento BGP,Fse da una vista completa BGP
- type:
- conflict_with: informazioni sulla voce RIB in conflitto con l'annuncio
- valid: oggetti di route o ROA sulla coppia
prefixeasn
- valid: oggetti di route o ROA sulla coppia
Esempio di withdraw
In questo esempio, l'annuncio che ritira la rotta 23.192.176.0/20 da AS5570 porta probabilmente al reindirizzamento del traffico verso AS35889, che sta annunciando una rotta per il prefisso meno specifico 23.192.0.0/11.
{
"timestamp" : 1451609643,
"collector" : "rrc01",
"peer_ip" : "195.66.224.138",
"peer_as" : 2914,
"withdraw" : {
"asn" : 55740,
"prefix" : "23.192.176.0/20",
"type" : "W"
},
"conflict_with" : {
"prefix" : "23.192.0.0/11",
"asn" : 35994
},
"type" : "ABNORMAL"
}
- timestamp: quando l'annuncio è stato ricevuto (timestamp UTC)
- collector: quale collettore BGP ha ricevuto l'annuncio
- peer_ip e peer_as: quale peer BGP ha ricevuto l'annuncio
- withdraw: informazioni sul withdraw
- conflict_with: informazioni sulla voce RIB in conflitto con l'annuncio