
tabi — Actualizado!
Marco para detectar y clasificar eventos de secuestro de prefijos IP BGP mediante el procesamiento de archivos de volcado MRT, con soporte para múltiples analizadores de entrada y análisis automatizado de conflictos.
Ejemplo avanzado
Este ejemplo demuestra cómo usar el módulo tabi para detectar todos los posibles secuestros BGP vistos desde un recolector BGP.
Requisitos
ADVERTENCIA: Antes de probar este ejemplo, asegúrate de tener al menos 2 GB de memoria libre en tu computadora.
El procedimiento de instalación se describe en el README principal.
Analizador MRT
Este ejemplo es compatible con mabo y bgpreader.
Detectar los secuestros
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
Este script de ejemplo imprime los eventos anormales que fueron detectados por el módulo tabi. Además, intenta filtrar los conflictos que son más probablemente legítimos utilizando los siguientes métodos:
- el anuncio conflictivo está cubierto por un ROA
- el anuncio conflictivo está cubierto por un objeto de ruta
- hay una relación administrativa entre los dos AS conflictivos
- el
AS_PATHdel secuestrador contiene el ASN del secuestrado
Estas heurísticas están documentadas en el módulo tabi.annotate.
Interpretar los resultados
Ejemplo de actualización
En este ejemplo, el anuncio que actualiza la ruta de 2403:8600:ea89::/48 originado desde AS55441 lleva a la probable redirección del tráfico que inicialmente estaba dirigido hacia AS131317. Esto es sospechoso porque hay objetos de ruta y ROA válidos para la ruta original pero no para la última actualización de ruta.
{
"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: cuándo se recibió el anuncio (marca de tiempo UTC)
- collector: qué recolector BGP recibió el anuncio
- peer_ip & peer_as: qué par BGP recibió el anuncio
- announce: información sobre el anuncio
- type: ya sea
Usi el anuncio se recibió de una actualización BGP oFsi fue de una vista completa BGP
- type: ya sea
- conflict_with: información sobre la entrada RIB que entra en conflicto con el anuncio
- valid: objetos de ruta o ROA en el par
prefix&asn
- valid: objetos de ruta o ROA en el par
Ejemplo de retiro
En este ejemplo, el anuncio que retira la ruta 23.192.176.0/20 de AS5570 lleva a la probable redirección del tráfico hacia AS35889, que está anunciando una ruta al prefijo menos específico 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: cuándo se recibió el anuncio (marca de tiempo UTC)
- collector: qué recolector BGP recibió el anuncio
- peer_ip & peer_as: qué par BGP recibió el anuncio
- withdraw: información sobre el retiro
- conflict_with: información sobre la entrada RIB que entra en conflicto con el anuncio