Volver a actualizaciones
ActualizadaJul 28, 2026

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.

Compartir

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:

  1. el anuncio conflictivo está cubierto por un ROA
  2. el anuncio conflictivo está cubierto por un objeto de ruta
  3. hay una relación administrativa entre los dos AS conflictivos
  4. el AS_PATH del 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 U si el anuncio se recibió de una actualización BGP o F si fue de una vista completa BGP
  • 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

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

Categorías