 |
 |
 |
Netzwerk: TCPDump der Packet-Capture
|
|
 |
|
Geschrieben von Tomas auf Thursday, 12.June. @ 09:07:38 CEST
von Tomas
|
| |
Ich möchte heute einmal etwas über das Packet-Capture-Programm TCPDump erzählen.
TCPDump gibt Euch die Möglichkeit, bestimmte Packete aus dem Netzwerk
auszulesen und anzuzeigen. Mit diesem Tool könnt Ihr in Eurem Netzwerk auf
Fehlersuche gehen.
TCPDump hat die Möglichkeit Netzwerkpakete, die sich in Euerem Netzwerk befinden,
mit Hilfe von speziellen Filtern auszugeben. Also, Ihr könnt damit Euren
Netzwerkverkehr zwischen Eueren Netzwerkgeräten wie z.B. Firewalls, Router,
Switches, Mailserver usw. abhören und analysieren.
Wie installiere ich TCPDump
In der Regel wird TCPDump von einer der Linux-Distributionen installiert bzw. es
wird als Packet zur Verfügung gestellt. Falls Ihr zur Zeit kein TCPDump Paket zur
Hand habt, könnt Ihr auch von der Website http://www.freshmeat.net das Paket
herunterladen. Beachtet bitte, dass Ihr für dieses Programm die beliebten Root-Rechte
braucht.
Der lauschangriff auf das Netz
Bevor Ihr jetzt Euren ersten Angriff auf das Netzwerk startet, würde ich gern noch
etwas über TCPDump erzählen.
Eigentlich ist die Handhabung von TCPDump recht unkompliziert. Dies ist auch kein
Wunder, da es sich komplett über Konsole steuern lässt. Leider gibt es hier (liegt
in der Natur der Materie) viele Optionen, Funktionen und Filter, die man nutzen kann.
Welche aber soll man nutzen, bzw. wann braucht man was? Diese fragen möchte ich nun
noch weiter vertiefen.
Allgemeine Syntax
Tja, schon die allgemeine Syntax des Programms kann schon nicht als kurz bezeichnet
werden.
Bevor wir uns aber mit den Feldern beschäftigen, sollten wir uns die Optionen und
Argumente ansehen.
Use:
linux:~# tcpdump [Optionen] [-c count] [-C file_size] [-F file] [-i interface] [-m module]
Die Optionen bieten Euch die Grundlage, um grobe Filter für de Netzwerküberwachung
zu setzen.
Hier die wichtigsten (der Rest - siehe Manpages).
-a Versucht Netzwerkstrich und Broadcast in Namen zu wandeln.
-c count bricht ab, wenn ein count - Paket empfangen wurde.
-e zeigt den Link Level Header in jeder Zeile.
-E algo:secret benutzt man, wenn es sich um IPSec ESP Pakete handelt (die sollen ja
entschlüsselt werden).
folgende stehen zur Verfügung: des-cbc (default),
3des,
blowfisch,
rcdrei-cbc,
cast128-cbc,
none
-F File Ihr könnt Euere Filter in der "File" angegebenen Datei sichern.
-i interface gibt das abzuhörende Interface an.
-l Standardausgabezeilen werden gepuffert.
-r file ließt Pakete aus der angegebenen Datei (müssen aber mit
der Option -w erstellt worden sein) aus.
-T Pakete werden nach den angegebenen "expression" selektiert
(zur Zeit): cnfg (cisco NetFlow protocol)
rpc (remode procedure call)
rtp (real Time Application Protocol)
rtcp (real Time Application Control Protocol)
snmp (Simple Network Management Protocol)
vat (Visual Audio Tool)
wb (distributed White Board)
-tttt Uhrzeit, Datum für jede Zeile.
-v der Verbose-Modus zeigt alles an (das liebe ich).
-vv wieder der Verbose-Modus, hier werden aber NFS und SMB-Pakete
vollständig dekodiert.
Die Expressions
Wir haben eben einige der wichtigen Optionen kennengelernt. Jetzt wollen wir uns
mit dem Feld für die Expressions beschäftigen. Dieses Feld gibt Euch die Möglichkeit,
zu bestimmen, welche Pakete im Netzwerk angezeigt werden sollen.
Expressions bestehen in der Regel aus einem oder mehreren Primitives, die aus einer
ID (Name oder Zahl) gefolgt von einem oder mehreren Qualifiers zusammengesetzt werden.
Qualifiers
Ich werde einmal mit der Beschreibung der Qualifiers beginnen (zum Glück gibt es nur drei).
type Dieser Qualifier gibt an, worauf sich die ID bezieht: host (defaultwert)
net (z.B. net 130.9)
port (z.B. port 8080)
dir gibt die Transferrichtung zu und/ oder von einer bestimmten ID an:
src
dst
src or dst (Defaultwert)
src and dst
Beispiel hiefür wäre:
src test
dst net 130.9
src or dst p0rt ssh
Für Null Link Layers wie SLIP können die Qualifiers inbound und outbound zur Richtungs-
angabe benutzt werden.
proto dieser Qualifier reduziert die Treffer auf bestimmte Protokolle wie z.B.:
ether
fddi
tr
ip
ip6
arp
rarp
decnet
tcp
udp
mögliche Beispiele wären: ether src test
arp net 130.9
tcp port 8080
sollte kein Qualifier angegeben werden, treffen alle
Protokolle des gewählten Typs zu.
Bevor wir uns jetzt mit dem Feld Primitives auseinander setzen, sollten wir uns einige
Besonderheiten zu dem Qualifier proto ansehen.
Beachtet bei der Verwendung dieses Qualifiers bitte, dass das Feld fddi eigentlich
ein Synonym für ether ist, daher das Programm TCPDump die beiden gleich behandeln. Ähnlich
verhalten sich auch tr pakete, da auch dieses Feld ein Synonym für ether darstellt.
Primitives
vorab möchte ich Euch darauf hinweisen, dass ihr mit den Schlüsselwörtern and, or und not
diese primitives kombinieren könnt
dst host host Wahr, wenn ipv4- oder ipv6- Zieladressenfeld dem Argumment host entspricht.
src host host Wahr, wenn ipv4- oder ipv6- Quelladressenfeld dem Argumment host entspricht.
host host Wahr, wenn ipv4- oder ipv6- quell- oder Zieladressenfeld des Pakets dem
argumment host entspricht. Ihr könnt jedem der genannten Hostausdrücke
mit folgenden Schlüsselwörten kombinieren: ip
arp
rarp
ip6
z.B. ist der Ausdruck: ip host host Äquivalent zu: ether proto | ip and host host
Es gibt hier aber noch weitere Primitives die Ihr aber auch in den Manpages findet.
Beispiele für TCPDump
Ich werde jetzt noch ein Paar Beispiele und noch einiges zum Thema TCPDump zum besten geben.
Nachdem wir uns etwas mit der Syntax von TCPDump beschäftigt haben, sollten wir uns einige
Beispiele ansehen.
Das erste Beispiel soll TCPDump dazu bringen, alle Pakete, die dem Host test am Interface
eth0 erreichen / verlassen, anzuzeigen.
# tcpdump host test -i eth0
Das Beispiel Nr.2, zeigt den kompletten Netzwerkverkehr Host test, zwischen dem Host test und
entweder dem Host porky oder dem Host trinity (Bitte nicht den Backslash vor dem Sonder-
zeichen vergessen.
# tcpdump host test and /{porky or trinity /}
Um jetzt einmal den gesamten FTP-Traffic, der durch den Internet Gateway trinity geht,
anzuzeigen, müssen wir die Folgende Syntax verwenden.
# tcpdump 'gateway trinity and (port ftp or ftp-data)'
Jetzt brauchen wir alle IP-Pakete, die größer als 500 Byte sind und durch den Gatway
trinity gehen:
# tcpdump 'gateway trinity and ip [2:2]<500'
Sollte jetzt noch einer aller ICMP-Pakete außer den Pings anzeigen wollen, dann sieht
das so aus:
# tcpdump 'icmp[0] != 8 and icmp[0] != 0'
oder die länger Fassung:
# tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echo reply'
Kleiner Hinweis:
Die Ausführungszeichen in den Beispielen wurden verwendet, damit die Shell
diesen Befehlen nicht falsch interpretiert.
Solltet Ihr noch weitere Informationen brauche, dann erhaltet Ihr diesen bei den
folgenden Links:
http://www.tcpdump.org/
http://www-iepm.slac.stanford.edu/monitoring/passive/tcpdump.html
http://windump.polito.it/
http://www.hlug.org/trojan/
http://freshmeat.net/projects/tcpdump/?topic_id=43%2C862%2C152
http://www.qosient.com/argus/tcpdump.1.htm
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/security-guide/s1-ids-net.html
http://windump.polito.it/docs/default.htm
http://www.linuxplanet.com/linuxplanet/tips/1163/1/
http://www.owlriver.com/tips/tcpdump-tech/
|
|
| |
 |
|
 |
| Login |
|
Kostenlos registrieren!. Gestalten Sie Ihr eigenes Erscheinungsbild. Passen Sie das Seitenlayout Ihren Wünschen an
|
|
 |
 |
 |
 |
 |
 |
|
 |
| Artikel Bewertung |
|
durchschnittliche Punktzahl: 4.66 Stimmen: 6

|
|
 |
 |
 |
 |
 |
|