IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Linux - Server/Internet/Netzwerk - Snoop - Alle Geheimnisse erklärt



Snoop - Alle Geheimnisse erklärt

Beschreibung der Fähigkeiten und Einsatzmöglichkeiten des Netzwerksniffers snoop.


Autor: Jochen Berner (jberner)
Datum: 02-06-2002, 21:13:30
Referenzen: http://www.enteract.com/~lspitz/snoop.html (der englische Originaltext)
Schwierigkeit: Profis
Ansichten: 11412x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Die Geheimnisse von snoop

Die Popularität von sniffern ist in den letzten Jahren explosionsartig gewachsen. Die Bandbreite reicht von Network General's Netxray und Microsofts Network Monitor bis hin zu Public Domain Programmen wie Etherman und Curry Sniffer. Diese Programme werden zu den verschiedensten Zwecken gebraucht, darunter Fehlersuche im Netzwerk, Netzwerkverkehrsanalyse, finden von PCs im Netz etc. Wir werden uns hier mit einem der verbreitetsten und effektivsten Sniffer beschäftigen: snoop. Unter allen Sniffern ist er derjenige, auf den man unter Solaris immer Zugriff hat. Zweck dieses Artikels ist es zu zeigen, wie man snoop am effektivsten einsetzt, zusammen mit Beispielen die sich auf die Netzwerksicherheit konzentrieren.

Was ist snoop?

Snoop ist ein ausführbares Programm, das die Netzwerkkarte(n) im System in den "promiscuous mode" versetzt. In diesem Modus liest snoop alle Pakete im Netzwerk mit, entweder in Echtzeit oder als Datei auf der Festplatte. Was snoop so mächtig macht, ist die Detailliertheit der gesammelten Informationen und seine Flexibilität.

In der ersten Hälfte dieses Artikels werden wir uns auf snoop-Kommandos konzentrieren, d.h. wie wir die Informationen, die wir brauchen, bekommen. Die zweite Hälfte wird sich mit der Analyse (speziell Sicherheitsaspekte) von Netzwerkverkehr aus dem richtigen Leben beschäftigen. Die Beispiele stammen aus der IP-Welt, aber snoop kann auch zum Abfangen und Mitlesen von anderen Netzwerkpaketen wie DECnet oder AppleTalk verwendet werden. Für die Paketanalyse werde ich mich auf das Standard 7-Schichten-OSI Modell beziehen. Für eine Auffrischung siehe Anhang.

Snoop benutzen

Das Erste, über was man sich klar werden muss ist die Frage, ob man die Daten in Echtzeit oder in eine Datei protokolliert haben möchte. Meistens entscheidet man sich für die Datei. In Echtzeit rasen die Daten zu schnell an einem vorbei um gelesen zu werden. Der einzige Zweck besteht hier darin, dass man ein Gefühl dafür bekommt, welcher Verkehr im Netzwerk herrscht. Für eine ernsthafte Analyse speichert man die Daten in eine Datei, damit man sie aller Ruhe analysieren kann.

Um Verkehr in einer Datei zu speichern lautet das Kommando

snoop -o Dateiname

Das speichert sämtliche Daten im Binärformat in die Datei "Dateiname". Um Daten in Echtzeit zu sehen, lassen sie das -o Dateiname einfach weg. Ansonsten ist die Befehlssyntax für snoop immer gleich.

Das erste was wir tun müssen, ist festzulegen, wie viele Pakete snoop abfangen soll. Wird keine Zahl angegeben, wird snoop so lange Pakete sammeln, bis man mit STRG-C abbricht oder die Ressourcen erschöpft sind (d.h. die Festplatte ist voll). Um die Zahl festzulegen nimmt man das Kommando

snoop -o Dateiname -c 1000

snoop fängt 1000 Pakete in ca. 60 Sekunden in einem Standard 10Mbps Netz ab.

Als nächstes legen wir fest, welchen Detailgrad wir brauchen. Snoop bietet drei davon an, summary (Voreinstellung d.h. Zusammenfassung), verbose summary (-V d.h. ausführliche Zusammenfassung) und verbose (-v d.h. ausführlich). Zusammenfassung liefert die wenigsten Informationen, nur die aus den höchsten Protokollschichten 5,6 und 7 sowie Paketquell- und -zieladresse. Unten ist ein einziges Paket in der Zusammenfassung. Dies ist das 27ste abgefangene Paket, es zeigt eine Telnetverbindung zwischen squirrel und meinem Schulzugang. 0,01743 ist die Zeit zwischen Paket 26 und 27.

27 0.01743 squirrel -> ICARUS.CC.UIC.EDU TELNET C port=45330

Ausführliche Zusammenfassung (-V) liefert alle Schichten des OSI-Modells (2,3,4 und 5,6 oder 7), aber in zusammengefasster Form in einer Zeile pro Schicht. Unten sehen wir als Beispiel wieder das Paket 27. Beachten Sie das es uns Schicht 2 (ETHER), Schicht 3 (IP), Schicht 4 (TCP) und Schicht 7 (Telnet) anzeigt. Beachten Sie auch, das SYN und SEQ (sequence number) angezeigt werden. Es gibt kein ACK (Acknowledge number), es ist also das erste Paket für diese Telnetsitzung.

27 0.01743 squirrel -> ICARUS.CC.UIC.EDU ETHER Type=0800 (IP), size = 58 bytes
27 0.01743 squirrel -> ICARUS.CC.UIC.EDU IP D=128.248.121.53 S=208.194.41.20 LEN=44, ID=6082
27 0.01743 squirrel -> ICARUS.CC.UIC.EDU TCP D=23 S=45330 Syn Seq=678057692 Len=0 Win=8760
27 0.01743 squirrel -> ICARUS.CC.UIC.EDU TELNET C port=45330

Ausführlich (-v) gibt uns jedes einzelne Detail von jedem einzelnen Paket, bis ganz herunter auf die Bitschicht des OSI-Modells. Hier sehen wir die detaillierte Information jeder Schicht, Schicht 2 (Ethernet), Schicht 3 (IP) und den Schicht 4 (TCP) Header. Genauere Informationen über spezielle Header findet man hier: RFC 894 (Ether) (http://www.ietf.org/rfc/rfc0894.txt), RFC 791 (IP) (http://www.ietf.org/rfc/rfc0791.txt) und RFC 793 (TCP) (http://www.ietf.org/rfc/rfc0793.txt).

ETHER: ----- Ether Header -----
ETHER:
ETHER: Packet 27 arrived at 10:40:36.07
ETHER: Packet size = 58 bytes
ETHER: Destination = 8:0:20:8d:fc:d2, Sun
ETHER: Source = 8:0:20:c:df:aa, Sun
ETHER: Ethertype = 0800 (IP)
ETHER:
IP: ----- IP Header -----
IP:
IP: Version = 4
IP: Header length = 20 bytes
IP: Type of service = 0x00
IP: xxx. .... = 0 (precedence)
IP: ...0 .... = normal delay
IP: .... 0... = normal throughput
IP: .... .0.. = normal reliability
IP: Total length = 44 bytes
IP: Identification = 6082
IP: Flags = 0x4
IP: .1.. .... = do not fragment
IP: ..0. .... = last fragment
IP: Fragment offset = 0 bytes
IP: Time to live = 255 seconds/hops
IP: Protocol = 6 (TCP)
IP: Header checksum = 7005
IP: Source address = 208.194.41.20, squirrel
IP: Destination address = 128.248.121.53, ICARUS.CC.UIC.EDU
IP: No options
IP:
TCP: ----- TCP Header -----
TCP:
TCP: Source port = 45330
TCP: Destination port = 23 (TELNET)
TCP: Sequence number = 678057692
TCP: Acknowledgement number = 0
TCP: Data offset = 24 bytes
TCP: Flags = 0x02
TCP: ..0. .... = No urgent pointer
TCP: ...0 .... = No acknowledgement
TCP: .... 0... = No push
TCP: .... .0.. = No reset
TCP: .... ..1. = Syn
TCP: .... ...0 = No Fin
TCP: Window = 8760
TCP: Checksum = 0x517a
TCP: Urgent pointer = 0
TCP: Options: (4 bytes)
TCP: - Maximum segment size = 1460 bytes
TCP:
TELNET: ----- TELNET: -----
TELNET:
TELNET: ""
TELNET:

Kein Detailgrad ist "besser" als der andere. Es kommt immer darauf an, welche Art von Informationen man gerade sucht. Man sollte allerdings im Hinterkopf behalten, das snoop resourcenintensiv sein kann. Im ausführlichen Modus kann snoop das System überlasten und dadurch, je nach Netzlast, zwingen Pakete zu verwerfen, In einigen Fällen kann es, abhängig vom Detailgrad und der Zahl der gesammelten Pakete, nötig sein einen eigenen Server für snoop einzurichten. Um 1000 Pakete im Modus ausführliche Zusammenfassung zu sammeln dient das Kommando

snoop -V -o Dateiname -c 1000

Um eine Datei mit gesammelten Informationen zu lesen dient das Kommando -i Dateiname. Falls die Pakete im Modus ausführlich gesammelt wurden, kann man die Datei in den Modi Zusammenfassung, ausführliche Zusammenfassung oder ausführlich lesen. Ich empfehle, die Datei im Zusammenfassungsmodus zu durchsuchen um herauszufinden welche Pakete interessant sind um sich diese dann im ausführlichen Modus anzeigen zu lassen. Um sich ein einzelnes Paket anzusehen dient der Schalter -p"Paketnummer". Hier ist ein Beispiel, wie man sich die Pakete 10-32 und 56 im ausführlichen Modus anzeigen lassen kann.

snoop -i Dateiname -v -p10-32,56

Jetzt wollen wir die ganze Stärke von snoop nutzen. Snoop hat eine Vielzahl von Filterwerkzeugen, die es uns erlauben, auf die Art Pakete zu konzentrieren, die wir abfangen wollen, egal ob Quelle, Ziel, Protokollschicht etc. Wir werden hier einige der gebräuchlichsten Optionen vorstellen. Für eine vollständige Beschreibung lesen Sie bitte die man-pages über snoop.

Als erstes können wir einschränken, per MAC (Schicht 2) oder IP/Hostname (Schicht 3), welche Systeme belauscht werden sollen. Dies limitiert welche Pakete an der Netzwerkkarte abgefangen werden. Will man nur einen Rechner belauschen, nimmt man seine IP-Adresse. Will man mehrere Rechner belauschen kann man "and" oder "or" zwischen die Namen setzen. Man kann den Fokus sogar noch weiter einengen, indem man die Bedingungen "from" oder "to" für die Quell- bzw. Zieladresse verwendet. Die Bedingungen "!" und "not" stehen für ein logisches NOT. Zuguterletzt filtert die Option "net" alle Pakete, die zu einem bestimmten Netzwerk gehören. Der untenstehende Befehl fängt alle Pakete die von zeus kommen und nach 8:0:20:f1:b3:51 gehen oder Pakete die zum Netz 192.168.3.0 gehören, außer 192.168.3.58. Beachten Sie, dass der Hostname zeus auflösbar sein muss, entweder von /etc/hosts oder per DNS.

snoop -o filename from zeus or to 8:0:20:f1:b3:51 or net 192.168.3.0 not 192.168.3.58

Genauso wie wir spezielle Hosts oder Netzwerke auf Schicht 2 oder 3 angeben können, können wir auch abgefangene Pakete auf den Schichten 4,5,6 und 7 filtern. Auf Schicht 4 können wir "tcp", "udp" oder "icmp" angeben (RFC 792 legt eigentlich fest, das icmp ein Schicht 3 Protokoll ist, aber ich habe es hierhin gepackt um snoops man-pages wiederzugeben). Für die Schichten 5,6 und 7 nutzt man die Optionen "port" und "rpc" (gemäß der Dateien /etc/services und /etc/rpc). Dieses Kommando fängt sämtliche DNS oder NFS Pakete ab:

snoop -o filename -V port domain or rpc nfs

Snoop und Sicherheit

Nachdem wir die Flexibilität von snoop kennengelernt haben, wollen wir es auf Ihre Netzwerksicherheit anwenden. Mit snoop sitzt man unsichtbar im Netzwerk und sammelt Daten. Anders als bei aktiven Maßnahmen wie Netzwerkanalyse per ICMP, macht snoop niemanden auf seine Gegenwart aufmerksam. Dies erlaubt es, die Sicherheit des Netzes zu analysieren, ohne jemanden aufmerksam zu machen. Außerdem kann man snoop über eine lange Zeit laufen lassen, im Vergleich zu aktiven Maßnahmen, die nur zu einem bestimmten Zeitpunkt laufen. Falls ein Server für einige Minuten ausfällt, während man das Netz anpingt, wird man ihn nicht bemerken. Snoop wird ihn finden, sobald er Netzwerkverkehr sendet oder empfängt.

Snoop tut zwei sicherheitsrelevante Dinge: es verrät wer im Netz ist und wer was tut. Zuerst muss man sich Gedanken über die Art der Sicherheitsbedenken machen und dann snoop so konfigurieren, dass es diese Information findet.

Vom Standpunkt der Sicherheit aus ist es oft bedenklich, einen Host oder ein Gateway im Netz zu haben, über den man nichts weiß. Dieses System könnte ein unschuldiger Dial-Up Server sein, vielleicht aber auch ein Gateway, das ein Hacker installiert hat. Ich kenne eine Firma, in der kürzlich eine unbekannte Internetverbindung mit einem Sniffer identifiziert wurde. Aktive Maßnahmen verraten, wer im Netz ist, aber nur, wenn die Maschine läuft. Aber was, wenn ein System nur nachts an ist oder so konfiguriert wurde, das es auf ICMP_REPLY nicht reagiert? Mit den oben erklärten Optionen kann snoop Informationen im Netzwerk sammeln. Mit einem perl oder shell Skript kann man diese Informationen verarbeiten und so unbekannte Systeme im Netz identifizieren.

Eine andere Sicherheitsfrage ist die, was im Netzwerk los ist. Vielleicht macht man sich Sorgen über bestimmte Webseiten oder Downloads. Vielleicht ist man besorgt darüber, das Benutzer sich die neuesten Hackerattacken herunterladen. Man kann snoop im Netzwerk einsetzen, um nach FTP-Downloads von bekannten Webseiten zu suchen. Ich weiß von einem kürzlich passierten Vorfall, bei dem ein Angestellter während einer routinemäßigen Netzwerkanalyse erwischt wurde.

Vielleicht haben sie auch mehrere wichtige Server, die mit denial-of-service Attacken wie land.c oder dem "ping of death" angegriffen wurden. Man kann snoop anweisen nach land.c zu suchen, indem man Pakete mit gleicher Quell- und Zieladresse filtert. Den "ping of death" findet man, indem man nach extrem großen ICMP-Paketen sucht.

Bis jetzt haben wir aufgezählt, was snoop kann. Jetzt beschäftigen wir uns damit, was snoop nicht kann. Anders als aktive Maßnahmen kann snoop, wie die meisten Sniffer, nicht in einer geswitchten Umgebung arbeiten. Snoop zeichnet nur die Pakete auf, die an seiner Netzwerkkarte vorbeikommen. IP-Pakete werden basierend auf ihrer MAC-Adresse (Schicht 2) von Switches entweder weitergeleitet oder verworfen. Wenn man einen Switch hat, wird snoop nur die Pakete in seiner eigenen Kollisionsdomäne ("collision domain") aufzeichnen.

Wo man Pakete abfängt ist genauso wichtig wie das, was man abfängt. Wenn Sie den gesamten Verkehr in ihrem Netzwerk protokollieren möchten, plazieren sie den Sniffer an den Internetrouter. Auf diese Weise empfangen Sie den gesamten Internetverkehr und sind nicht an Kollisionsdomänen gebunden.

Diese Einschränkung von snoop können Sie auch zu Ihrem Vorteil einsetzen. Eine gängige Vorgehensweise von Hackern ist es, ein System zu kompromittieren und dann einen Sniffer zu installieren. Ist das erstmal passiert, fängt der Sniffer Benutzernamen und Passwörter ab. Vor einigen Monaten wurde das SANS Institut durch ebendiese Methode kompromittiert. Eine ideale Zielscheibe für dieses Vorgehen sind Systeme in Ihrer DMZ oder dem Netzwerksegment das zwischen Ihrem Internetrouter und der Firewall liegt. Firmen stellen oft ungesicherte Systeme wie Webserver vor die Firewall. Sind diese aber erstmal kompromittiert, sind sie ideale Plattformen um Benutzernamen und Kennwörter abzufangen. Um das Netz zu schützen stellen Sie diese Systeme hinter einen Switch. Wenn sie kompromittiert werden sind sie immer noch in Ihrer Kollisionsdomäne isoliert und schützen so ihr Netzwerk vor Sniffern.

Anmerkung: Wenn möglich, sollten Sie überlegen, ob Sie die MAC-Adresse am Switch speziellen Ports fest zuweisen.

Snoop ist ein sehr mächtiges und flexibles Programm. Seine Einsatzmöglichkeiten sind ebenso vielfältig wie seine Optionen. Die Ideen und Konzepte, die in diesem Artikel entwickelt wurden, stellen nur eine Einführung in seine Möglichkeiten dar.

ANHANG

OSI 7 Schichten Modell

Das OSI Modell (Open Systems Interconnection Modell) wurde 1974 durch die International Standards Organization entwickelt. Dieses sieben Schichten Modell ist ein internationaler Standard der es Systemen erlaubt, miteinander zu kommunizieren als ob sie das gleiche System wären. Jede Schicht hat ihren speziellen Zweck, der unabhängig von allen anderen ist. Ein Paket startet in der Anwendungsschicht (Application layer) und arbeitet sich durch den Stapel nach unten durch und wird dann an ein anderes System geschickt. Dieses System empfängt das Paket in der ersten Schicht und schickt es dann durch die Schichten nach oben. Nicht alle Schichten, speziell 5 und 6, müssen genutzt werden.

Schicht 7: Anwendungsschicht (Application Layer; z.B. SMTP, Telnet o.ä.)
Anfragen werden von Anwendungen entgegengenommen und ausgeführt

Schicht 6: Darstellungsschicht (Presentation Layer; z.B. Verschlüsselung)
Der Partner versteht die gleiche Sprache

Schicht 5: Sitzungsschicht (Session Layer)
Es werden Sitzungen zwischen Partnern durchgeführt

Schicht 4: Transportschicht (Transport Layer; z.B. TCP, UDP)
Nachrichten kommen (sicher) beim Partner(programm) an

Schicht 3: Vermittlungsschicht (Network Layer; z.B. IP, IPX, AppleTalk)
Es kommen Nachrichten im Zielrechner an

Schicht 2: Sicherungsschicht (Data Link Layer; z.B. Ethernet, Token Ring)
Es kommen Nachrichten sicher im Nachbarrechner an

Schicht 1: Bitübertragungsschicht (Physical Layer; z.B. Medium, Spannungsunterschiede)
Es kommen Bits im Nachbarrechner an

Anm. d. Übers.

Ich bin kein professioneller Übersetzer, deswegen ist es sehr wahrscheinlich, das man vieles besser hätte formulieren können. Trotzdem hoffe ich das sich nirgendwo grobe Sinnentstellungen oder gar Fehler eingeschlichen haben. Wenn doch, oder auch bei sonstiger Kritik oder gar Lob, kurze e-mail reicht und dann wird korrigiert. Der Originalartikel ist hier zu finden: http://www.enteract.com/~lspitz/snoop.html
Die URLs bei denen man die im Text genannten RFCs nachlesen kann habe ich angepasst, da die im Original genannten nicht mehr erreichbar waren. Die deutschen Übersetzungen der Schichtnamen im Anhang sowie die Kurzerklärung zu den einzelnen Schichten habe ich von hier übernommen: http://www.selflinux.de/d_netzwerkgrundlagen/index.html



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1157
Comments: 0