Let's sniff
So, los geht's. Mit Bordmittel konnte
der Fehler nicht beseitigt werden und wir packen unseren Sniffer aus.
Aber wie kommen die interessanten Daten nun zum Sniffer?
Wie kommen die Daten zum Sniffer?
In den heutigen geswitchten Netzen kommen die interessanten Daten nicht unbedingt
ohne mein Zutun am Sniffer vorbei. Ein Switch leitet nur Broadcasts und Frames mit unbekanntem Empfänger
an alle Ports weiter. Hat er die MAC-Adresse des Empfängers in seiner Tabelle, werden die Frames nur an einen
Port gesendet.
Shared Media / Hub
An einem Hub ist es naturgemäß
am einfachsten. Alle Daten kommen an allen Ports vorbei. Sniffer
einstecken und es geht los.
Der Admin kann zum sniffern auch einen Hub in
die betreffende Verbindung einschleifen. Das funktioniert leider nur
bei Halfduplex. Eine Fullduplex-Verbindung wird damit auf
Halfduplex gezwungen und unter Umständen noch zusätzlich
Fehler erzeugen. Allerdings bekommt der Sniffer an einem Hub (und mit der
richtigen Netzwerkkarte) aber auch wirklich alle Frames an den
Sniffer.
Vorsicht bei modernen Hubs die 10
Mbit/s und 100 Mbit/s unterstützen. Diese enthalten zwei
getrennte Backplanes die dann über einen Switch verbunden sind.
Hier sehen also nur Hosts mit der selben Geschwindigkeit die Daten
der jeweils anderen.
Wiretaps und Splitter
Um den Traffic einer Fullduplex Verbindungen aufzuzeichnen, ist ein Splitter recht nützlich.
Der Splitter wird wie ein Hub in die
Verbindung eingeschliffen und ist völlig transparent. Splitter gibt
es für alle Medien von 10BaseT bis Gigabit Ethernet.
Prinzipdarstellung eines Splitters
Bei einem Fullduplex-Link fallen dann
2 mal 100 Mbit/s an. Dazu wird ein Protokollanalyser mit 2
Eingängen (z.B. Network General Sniffer Hardware) benötigt. Im Normalfall tut es
natürlich auch ein PC mit zwei Netzwerkkarten und ein
nachträglicher Merge der Tracefiles mit mergecap von Ethereal.
Von NetOptics gibt es einen
10/100 BASE T Port Aggregator Tap. Dieser erlaubt das
Mitschneiden von Vollduplex-Links mit einer einzigen Netzwerkkarte.
Deutscher Distributor von NetOptics ist die Firma systeam (www.systeam.de)
Taps gibt es von einigen weiteren Anbietern:
NetOptics (www.netoptics.de)
Network Critical (www.networkcritical.co.uk)
Finisar (vormals Shumiti, www.finisar.com)
100BaseT-Tap von NetOptics
In Deutschland werden diese Taps von
BlueNet (www.bluenet.de)
Synapse (www.synapse.de) und
Allmos Elektronik (www.allmoselectronic.de)
vertrieben. Los geht der Spaß bei ca. 500 Euro für einen 100BaseT-Tap.
Network General vertreibt für seinen Sniffer auch einen Tap.
Bei Cisco gibt es als Zubehör zur SwitchProbe verschiedene Taps.
Und wer noch 10Base5 im Einsatz hat kann natürlich einen Vampire Tap einsetzen.
Monitor Port, Portspiegelung
Nahezu alle Hersteller bieten an ihren
Switchen eine Monitorfunktion an. Diese erlaubt es, den Traffic eines
Ports auf einen anderen Port zu spiegeln. Mit diesem Port wird der Sniffer verbunden.
Der Monitor Port wird auch Mirror Port,
SPAN (Switch Port Analyser) Port oder Maintenance Port bezeichnet.
In den meisten Fällen erspart
einem der Monitor Port den Einsatz eines Taps. Allerding werden bei
fast allen Herstellern nicht alle Frames zum Monitor Port gespiegelt.
Defekte Frames werden nicht an den Monitor Port übertragen. Oft
werden auch nur die Frames eines VLANs gespiegelt. Und bei einer
Fullduplex-Verbindung können nur 100 Mbit/s am Monitor Port
ankommen obwohl ja 200 Mbit/s möglich sind.
Tip: Um auf einem Cisco Catalyst 2900 oder 3500 einen Port zu
spiegeln, werden die folgenden Kommandos benötigt:
conf t
int fa0/7 ! auf diesen Port (fa0/7) kommt der Sniffer
port monitor fa0/2 ! und dieser Port (fa0/2) wird gespiegelt
end
! Zur Kontrolle dient das Kommando
show port monitor
! und deaktiviert wird der Spiegelport mit:
conf t
int fa0/7
no port monitor
end
Wichtig ist dabei, dass sich beide Ports im selben VLAN
befinden.
Der Administrator sollte immer darauf achten, daß
der Monitor Port genügend Bandbreite hat. Also keinen
100BaseT-Port auf einen 10BaseT-Port spiegeln. Ansonsten können
zwei Probleme auftreten:
1. Der Switch spiegelt nur einen
Teilmenge der Frames. Damit ist der Trace vollkommen wertlos.
2. Obwohl es in den Unterlagen der
Switchhersteller anders steht: Auch der gespiegelte Port kann in
seiner Performance einbrechen und die Fehlersuche produziert erst wirklich Probleme.
Die folgenden kleinen Gigabit Switches haben die Möglichkeit, einen Spiegelport
einzurichten:
Allnet ALL0478,
Edimax ES-5400D+,
Level One GSW-0841,
Longshine LCS-GS8208 und
TP-LINK TL-SG2109WEB.
Matrix Switche / Insert Switche
Für die Beobachtung mehrerer
Segmente eignen sich Matrix und Insert Switche. Diese Geräte
bieten die Möglichkeit die Monitor Ports vieler Switche auf
einen Analyser zu spiegeln (Matrix) oder viele Verbindungen
abwechselnd auf einen Tap zu schalten (Insert).
Span Port Switch mit 16 Ports (Matrix)
Interessante Produkte kommen von
NetOptics (www.netoptics.de) und
Datacom Systems (www.datacomsystems.com).
Cisco Router
Auf Routern von Cisco gibt es ein
undokumentietes IOS-Kommando zur Anzeige von IP-Daten. Mit
debug ip packet dump
wird eine Dump aller IP-Pakete angezeigt.
Dieses Kommando stellt wirklich nur
eine Notlösung dar. Der Router wird dadurch sehr stark belastet.
Die Ausgabe sollte auf jeden Fall mit einer Access List eingeschränkt werden:
debug ip packet dump acl-nummer
Dadurch werden nur Pakete gedumpt die von der angegebenen ACL erlaubt sind. Auch das Einschränken auf
ein bestimmtes Interface ist sinnvoll.
debug int eth0/1
beschränkt das Debugging auf das
Interface Ethernet 0/1.
Das folgende Perlscript wandelt das Ausgabeformat von Cisco in ein Format um, dass das zu Ethereal
gehörenden Tool text2pcap in ein pcap-File konvertieren kann.
#!/usr/bin/perl
# Convert Cisco dump file format to something text2pcap can read.
# Author: Hamish Moffatt hamish(at)cloud.net.au.
# License: GPL (see www.gnu.org)
sub dumppkt () {
for ($i = 0; $i < scalar(@pkt); $i++) {
if ($i % 16 == 0) {
printf "\n%08X", $i;
}
printf " %02X", $pkt[$i];
}
}
while(<>) {
chomp;
unless (m/[0-9A-F]{8}:/) {
$new_pkt = 1;
dumppkt;
undef @pkt;
next;
}
# Strip the offsets and ASCII dump
$hex = substr $_, 10, 35;
# Remove all spaces
$hex =~ s/ //g;
# Convert hex bytes on this line
while ((length $hex) > 0) {
push @pkt, hex (substr $hex, 0, 2, "");
}
}
dumppkt;
print "\n";
Abbildung: Perlscript cisco2txt.pl
Wenn sich der Dumpoutput in der Datei
cisco.dump befindet würde der Aufruf so aussehen:
perl cisco2txt.pl < cisco.dump | text2pcap – cisco.pcap
Die dabei erzeugte Datei cisco.pcap kann dann z.B. mit Wireshark gelesen werden.
Wireless LAN
Ein Wireless LAN ähnelt einem
großen Hub. Alle Nutzer teilen sich ein shared Media –
die Luft. Mit dem richtigen WEP-Key kann ein Sniffer also problemlos alle
Daten aufzeichnen und auswerten. Einige Wirelessadapter unterstützen
auch einen Monitormode. Mit diesem lassen sich auch Frames
aufzeichnen, die der Steuerung des Netzes dienen.
SNMP und RMON
Via SNMP lassen sich eine Reihe von
Parametern aus Netzkomponenten auslesen. So besteht Zugriff auf Werte
wie „Bytes in“ und „Bytes out“, Errorcounter
und CPU-Auslastung.
RMON geht einen Schritt weiter und
bildet schon in der Netzkomponente Statistiken ohne dadurch Netzlast
zu erzeugen.
Für die Abfrage von SNMP-Variablen eignet sich MIB-Browser.
Auf www.snmplink.org findet der Interessierte
Tools im Überfluss.
Für die Aufzeichnung und
Auswertung über einen längeren Zeitraum eignet sich MRTG.
ARP-Spoofing & Co.
Der Admin wird wohl den
Monitor-Port bevorzugen aber es gibt noch einige unorthodoxe Methoden
um an die interessanten Frames zu kommen. Auch diese sollte der Netzwerker
kennen und sich die einschlägigen Tools im Internet ansehen
(Google ist dein Freund).
ARP-Spoofing / -Poisening
Mittels manipulierter ARP-Frames kann
gezielt den ARP-Cache einzelner Stationen im Netz verändert
werden (RFC 826). So kann man einer Station beispielsweise die
MAC-Adresse des Sniffers als die ihres Default-Gateways
unterschieben. Danach wird diese Station alle Frames für andere
IP-Netze an unseren Sniffer senden. Dort benötigen wir natürlich
ein Stückchen Software das die Frames dann an den wirklichen
Router weiterleitet.
ARP-Spoofing ist eine gute Möglichkeit
an einem Switch zu tracen der keine Portspiegelung unterstüzt.
Mit ettercap können Sie
ARP-Poisoning unter Linux und Windows testen. Das Umleiten der Daten mittels ettercap kostet
natürlich Zeit. Pakete die normalerweise direkt zum Default Gateway gehen, gehen ja dann zuerst
zum Host mit ettercap und von dort erst zum Default Gateway. Die RTT kann dabei von unter 1 ms auf bis 20 ms
ansteigen.
ICMP-Redirects
Durch ICMP-Redirects werden IP-Hosts
angewiesen, Pakete für bestimmte Adressen an bestimmte Router zu
senden. So kann ein Angreifer seinen Sniffer bequem zum Router erklären.
Auch bei dieser Methode müssen die Packte natürlich an
einen richtigen Router geleitet werden damit die Kommunikation nicht
abbricht.
Trigger und Marker
Solange das gesuchte Problem dauerhaft
auftritt oder reproduzierbar ist, sollte eine Aufzeichnung mittels
Sniffer kein Problem sein. Was aber wenn das Problem nur unregelmäßig
auftritt? Sniffer laufen lassen und dann im rechten Moment stoppen
bevor der Capturebuffer wrapped?
Eleganter ist der Einsatz von Triggern.
Network General Sniffer kann auf jedes beliebige Ereigniss im Netz getriggert werden.
Ein ICMP-Ping auf eine Adresse kann die Aufzeichnung starten
und mit einen anderen Ping kann die Aufzeichnung beendet werden.
Es reichen also zwei Scripte auf der Oberfläche eines Anwender-PC’s zur
Steuerung des Sniffers. Der Anwender kann beim Auftreten des Problems
die Auszeichnung starten und der Administrator kann den Trace später in Ruhe auswerten.
Wireshark kann sehr gut von der
Kommandozeile aus gesteuert werden (tshark) und in beliebige Scripte eingebunden werden.
Eine einfache Möglichkeit um
bestimmte Vorgänge im Trace zu identifizieren sind ICMP-Pakete.
Der Anwender bekommt ein Script auf seine Oberfläche,
das einen Ping auf eine im Netz nicht genutzte Adresse absetzt.
Zusätzlich wird auch noch die Größe auf einen
markanten Wert setzen. Wenn das gesuchte Problem nun auftritt, löst
der Anwender einfach das Ping aus. Die ICMP-Pakete lassen sich sehr
leicht im Trace auffinden.
|