permalink

2

ARPwatch – Netzwerk Anomalien schnell und einfach erkennen

Um fremde Rechner oder ARP-Spoofing Angriffe im eigenen Netzwerk rechtzeitig zu erkennen bietet sich ARPwatch an.
Das Tool wertet den gesammten Broadcast-Verkehr aus und schreibt alle MAC und die dazu gehörigen IP-Adressen
in eine Textdatei. Wenn ein neues System oder eine neue MAC-IP Paarung entdeckt wird, löst ARPwatch einen
Alarm aus und protokolliert die Änderung im Syslog. Angreifer können über eine manipulierte MAC Adresse einen Man-in-the-middle-Angriff inszenieren und z.B. den gesammten HTTP Traffic abhören und manipulieren.

I. Installation
Arpwatch 2.1a13-2.1 kann bei Debian einfach über den Paketmanager installiert werden.
libpcap0.8 wird automatisch mitinstalliert.

r-o-f:~# aptitude install arpwatch

II. Pfade und Dateien
/etc/arpwatch.conf -> erlaubt unter Debian eine individuelle Konfiguration für verschiedene Netzwerk-Interfaces
/var/default/arpwatch -> setzt “default” Einstellungen für alle Netzwerk-Interfaces
/var/lib/arpwatch/arp.dat -> MAC- / IP-Datenbank
/usr/share/arpwatch/ethercodes.dat -> Liste mit Herstellerkennungen

III. Report Arten
-new acitvity: MAC-IP Konstellation zum ersten Mal seit 6 Monaten benutzt
-new station: MAC-Adresse zum ersten Mal aufgetaucht
-flip flop: MAC-Adresse hat sich zu einer bereits vorher verwendeten MAC geändert: ARP-SPOOFING
-changed ethernet address: Host hat neue MAC-Adresse

IV. Syslog Meldungen
ethernet broadcast: MAC-Adresse ist eine Broadcast-Adresse oder die IP- o. MAC-Adresse besteht nur aus 1er oder 0er
ip broadcast: IP-Adresse von einem Host ist eine Broadcast-Adresse
bogon: Host-IP ist nicht im lokalen Subnet
ethernet mismatch: Die Quell MAC- / IP-Adresse passt nicht zur Adresse im ARP-Paket
reused old ethernet address: gleich selbe wie “flip flop”, siehe oben
suppressed DECnet flip flop: FlipFlop-Nachricht wurde zurückgehalten weil IP oder MAC eine DECnet-Adresse ist

V. Parameter
arpwatch kann mit folgenden Parametern aufgerufen werden:

-a = bogons werden aus allen IP-Netzen reported sonst nur aus dem Netz, in dem das Listening-Interface ist
-d = debugging Modus, kein Eintrag in arp.dat und kein E-Mail Versand, Events gehen an stderr
-f = Outputfile definieren (Standard: /var/lib/arpwatch/arp.dat)
-i = Listening-Netzwerk Interface definieren (Standard: eth0)
-m = definiert die E-Mail Adresse für die Benachrichtigungen (Standard: root auf lokaler Maschine)
-n = Netzwerk definieren (Standard: Netmask von Listening-Interface)
-N = keine Bogons werden reported
-p = Deaktiviert den promiscuous mode für das entsprechende LAN-Interface
-Q = keine Reports per mail
-r = Inputfile definieren, Netzwerk wird von arpwatch nicht mehr aktiv gescannt (z.B. von Tcpdump)
-R = wenn das LAN-Interface down ist, startet arpwatch nach x Sekunden neu
-s = Pfad zum sendmail Programm, hier kann auch ein eigenes Script gestartet werden z.B. passiver Nagios-Check
-u = definiert den User, unter dem arpwatch läuft, muss Schreibrechte auf das .dat Verzeichnis haben
-z = Ignoriert bestimmten IP-Adressen-Bereich z.B. DHCP, Gäste-Netz

VI. Auswertung
Manchmal ist eine Benachrichtigung aus den verschiedensten Gründen nicht möglich, dann kann man die Logfileauswertung z.B. mit dem Plugin check_logfiles in eine Nagios Monitoring Umgebung einbauen.

VII. Praktische Beispiele:

Beim ersten Start macht es Sinn ARPwatch je nach Netzwerkgröße einige Zeit im debugging Modus laufen zu lassen.
Hierbei kann man live am Bildschirm mitverfolgen, was ARPwatch gerade macht und wird nicht mit zahlreichen E-Mails zugeschütet.

r-o-f:~# arpwatch -d -R 1

Nur ein bestimmtes Netz überwachen:

r-o-f:~# arpwatch -n 192.168.0.0/16

VIII. Beispiel Mail:

From: arpwatch@r-o-f (Arpwatch r-o-f)
To: root@r-o-f
Subject: new station eth0
Message-Id: <E1N3taN-0000ar-02@r-o-f>
Date: Fri, 30 Oct 2009 16:40:19 +0100

            hostname: <unknown>
          ip address: 192.168.0.119
           interface: eth0
    ethernet address: 8:0:27:d6:48:33
     ethernet vendor: Cadmus Computer Systems [PCS Computer Systems GmbH]
           timestamp: Friday, October 30, 2009 16:40:18 +0100