Zurück zu den Updates
UpdatedJul 28, 2026

tabi — Updated!

BGP-Hijack-Erkennung

Teilen

Fortgeschrittenes Beispiel

Dieses Beispiel zeigt, wie das Modul tabi verwendet wird, um alle möglichen BGP-Hijacks zu erkennen, die von einem BGP-Collector beobachtet werden.

Voraussetzungen

WARNUNG: Bevor Sie dieses Beispiel ausprobieren, stellen Sie sicher, dass Sie mindestens 2 GB freien Arbeitsspeicher auf Ihrem Computer haben.

Das Installationsverfahren wird in der Haupt-README beschrieben.

MRT-Parser

Dieses Beispiel ist kompatibel mit mabo und bgpreader.

Hijacks erkennen

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

Dieses Beispielskript gibt die abnormalen Ereignisse aus, die vom Modul tabi erkannt wurden. Zusätzlich versucht es, die Konflikte, die höchstwahrscheinlich legitim sind, mithilfe der folgenden Methoden herauszufiltern:

  1. Die widersprüchliche Ankündigung wird durch eine ROA abgedeckt.
  2. Die widersprüchliche Ankündigung wird durch ein Route-Objekt abgedeckt.
  3. Es besteht eine administrative Beziehung zwischen den beiden widersprüchlichen AS.
  4. Der AS_PATH des Hijackers enthält die ASN des Opfers.

Diese Heuristiken sind im Modul tabi.annotate dokumentiert.

Interpretation der Ergebnisse

Update-Beispiel

In diesem Beispiel führt die Ankündigung, die die Route von 2403:8600:ea89::/48 aktualisiert und von AS55441 stammt, wahrscheinlich zur Umleitung des Datenverkehrs, der ursprünglich an AS131317 gerichtet war. Dies ist verdächtig, da für die ursprüngliche Route ein gültiges Route-Objekt und eine ROA existieren, nicht jedoch für das letzte Routen-Update.

{
   "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: wann die Ankündigung empfangen wurde (UTC-Zeitstempel)
  • collector: welcher BGP-Collector die Ankündigung empfangen hat
  • peer_ip & peer_as: welcher BGP-Peer die Ankündigung empfangen hat
  • announce: Informationen über die Ankündigung
    • type: entweder U, wenn die Ankündigung aus einem BGP-Update stammt, oder F, wenn sie aus einer vollständigen BGP-Ansicht stammt
  • conflict_with: Informationen über den RIB-Eintrag, der mit der Ankündigung in Konflikt steht
    • valid: Route-Objekte oder ROAs für das Paar prefix & asn

Withdraw-Beispiel

In diesem Beispiel führt die Ankündigung, die die Route 23.192.176.0/20 von AS5570 zurückzieht, wahrscheinlich zur Umleitung des Datenverkehrs zu AS35889, das eine Route für das weniger spezifische Präfix 23.192.0.0/11 ankündigt.

{
   "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: wann die Ankündigung empfangen wurde (UTC-Zeitstempel)
  • collector: welcher BGP-Collector die Ankündigung empfangen hat
  • peer_ip & peer_as: welcher BGP-Peer die Ankündigung empfangen hat
  • withdraw: Informationen zum Withdraw
  • conflict_with: Informationen über den RIB-Eintrag, der mit der Ankündigung in Konflikt steht

Kategorien