Netzwerkanalyse mit Ethereal Von: Bendikt Arnold (11041025) [email protected] Christian Fehmer (11042419) [email protected] Ioannis Chouklis (11042438) [email protected] Dimitrios Ramnalis (11039518) Fachhochschule Köln Kommunikationstechnik 2 Prof. Dr. Stahl Netzwerkanalyse mit Ethereal 2 Kommunikationstechnik 2 Inhaltsverzeichnis .............................................................................................................................................................. 2 1 Vorbereitung...................................................................................................................................... 3 1.1 Was ist Ethereal? (www.ethereal.com)......................................................................................3 1.2 Wozu wird es verwendet?..........................................................................................................3 1.3 Welche Möglichkeiten bietet es?............................................................................................... 3 1.4 Wo finden wir Hilfen?............................................................................................................... 4 1.5 Welche Dateiformate werden unterstützt?.................................................................................4 1.6 Welche Konfigurationsparameter gibt es? ................................................................................5 2 Projektaufgabe................................................................................................................................... 5 2.1 Konzept......................................................................................................................................5 2.1.1 Analyse von verschiedenen Paketen.................................................................................. 5 2.1.2 Analyse einer POP3 Verbindung....................................................................................... 6 2.2 Lösung........................................................................................................................................7 2.2.1 Analyse von verschiedenen Paketen....................................................................................... 7 2.2.2 Analyse einer POP3 Verbindung.......................................................................................... 15 3 Querschnittsaufgaben...................................................................................................................... 25 3.1 Konzept....................................................................................................................................25 3.2 Lösung......................................................................................................................................25 3.2.1 Einrichtung eines Mailclient............................................................................................ 25 3.2.2 Einrichtung eines Webbrowser........................................................................................ 25 3.2.3 Konfiguration der Netzwerkschnittstelle über dhcp.........................................................25 Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 3 1 Vorbereitung 1 Vorbereitung 1.1 Was ist Ethereal? (www.ethereal.com) Ethereal ist ein kostenloser, Open Source Netzwerkprotokoll-Analysator mit Benutzeroberfläche (GUI) für Linux,UNIX und Windows. Es sammelt Netzwerkpakete und bietet die Möglichkeit, diese so detailliert wie gewünscht darzustellen. 1.2 Wozu wird es verwendet? Ethereal wird verwendet: • zur Problembehebung im Netzwerk • zum Überprüfen von Sicherheitsproblemen • zur Prüfung von Protokollimplementierungen • zur Software- und Protokollentwicklung • zum Erlernen der Arbeitsweise der Protokolle 1.3 Welche Möglichkeiten bietet es? Ethereal ermöglicht ein einfaches Durchsuchen von mitprotokollierten Daten die entweder in Echtzeit abgefangen werden oder von zuvor erzeugten tcpdump-Dateien stammen. Gekoppelt mit der Laufzeitfilterung für eine gezielte Suche sowie einer SNMPUnterstützung und der Möglichkeit, Daten über Standard-Ethernet, FDDI, PPP und Token Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 4 1 Vorbereitung Ring abzufangen, ist es eine gute Wahl. Des Weiteren können Details zu jedem einzelnen Paket angezeigt werden. Zusätzlich verfügt Ethereal über leistungsfähige Analyse- und Summary-Funktionen, sowie eine eigene Sprache zum Filtern von Netzwerkpaketen. 1.4 Wo finden wir Hilfen? Hilfe kann man im Internet unter der URL: http://www.ethereal.com/ oder in der Manpage von Ethereal (man 1 ethereal) unter einem UNIX System finden. Bild 2 – Ethereal’s website 1.5 Welche Dateiformate werden unterstützt? Ethereal kann die Capture-Files in folgendem Format speichern: • Ethereal und alle Formate die die libpcap Bibliothek verwenden (wie z.B. tcpdump) • Sun Snoop • Novell LANalyzer • Microsoft Network Monitor 1.x, 2.x • Network Associates Sniffer • Visual Networks traffic capture • Accellent 5Views capture • Network Instruments Observer version 9 Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 5 1 Vorbereitung Ebenfalls kann es Capture-Files in folgendem Format Importieren: • Libcap, tcpdump und andere Programme die die libpcap Bibliothek verwenden • Snoop und atmsnoop • AIX iptrace • pppd Logs • IPLog Format aus der Cisco Secure Intrusion Detection System • AG Group/WildPackets EtherPeek etc. • mehr kann man unter der manpage von ethereal finden 1.6 Welche Konfigurationsparameter gibt es? Es gibt viele Konfigurationsparameter zur Analyse des Netzwerkverkehrs einige (die wichtigsten) davon sind. • -k: Startet sofort das Sammelverfahren. • -i: Setzt den Name der Netzwerk Interface für die Sammelverfahren • -f: Setzt den Capture Filter Expression. • -b: Setzt die maximale Größe der Capture-File • -r: Liest Paketdaten aus einer Datei Da eine Grafische Oberfläche verfügbar ist, kann man diese und auch mehr Konfigurationsparameter mittels Menü anwenden, um das Programm zu konfigurieren. 2 Projektaufgabe 2.1 Konzept Das Labornetz ist durch einen Hub verbunden. So ist es im Promiscous-Modes möglich alle Pakete, auch die, die nicht an die eigene MAC adressiert sind mitzulesen. 2.1.1 Analyse von verschiedenen Paketen Wir erzeugen die jeweils zu untersuchenden Pakete auf einem zweiten Rechner mit den Programmen, die das jeweilige Paket erzeugen können: - Ethernet und ICMP Pakete erzeugen wir mit Ping. - IP Paket erzeugen wir, indem wir eine Anfrage an einen Webserver richten. - Ein UDP Paket lässt sich mit einer Nameserveranfrage erzeugen. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 6 2 Projektaufgabe Die Auswertung erfolgt jeweils durch Ethereal mit einem passend eingestellten Displayfilter. Ein Displayfilter filtert die Ausgabe des aufgezeichneten Netzwerkverkehrs (z.B nach Protokollen, IP-Adressen, MAC usw.). 2.1.2 Analyse einer POP3 Verbindung Wir stellen den Displayfilter so ein, dass nur Pakete mit Sender- oder Empfängeradresse angezeigt werden. Alle Pakete der zu analysierenden Schritte lassen sich durch das Abfragen von E-Mails mit einem passenden Client von einem POP3 Server erzeugen. Die ARP Anfrage kann fehlen, wenn sich die MAC Adresse des Servers im ARP Cache befindet. Erzwingen kann man eine erneute Anfrage durch Löschen des ARP Caches. Alle weiteren Schritte werden dokumentiert, indem wir die aufgezeichneten Pakete mit Ethereal analysieren. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 7 2 Projektaufgabe 2.2 Lösung 2.2.1 Analyse von verschiedenen Paketen 1. Analysieren Sie die Struktur eines Ethernet-Frames und setzen Sie die Header-Inhalte Bezug zu den verwendeten Rechnern. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address (contd.) | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address (contd.) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP header, then TCP header, etc | | | ... | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + . . . Data . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Frame Check Sequence | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Abb. 1 – Ethernet-Frame Die Präambel Die Präambel ist ein 8 Byte langes Feld, das der Synchronisation der Netzwerkgeräte dient. Sie besteht aus einer alternierenden Bitfolge (abwechselnd Einsen und Nullen). So können sich die beteiligten Geräte im Netzwerk auf eine eingehende Datenübertragung vorbereiten und sich auf den Takt des Signals synchronisieren. Ziel- und Quell- MAC Adresse Die Zieladresse identifiziert den Zielrechner, der die Daten empfangen soll. Diese Adresse kann auch eine Multicast / Broadcast Adresse sein. Die Quelladresse identifiziert den Sender. Die MACAdresse hat eine Länge von sechs Byte. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 8 2 Projektaufgabe Das Type Feld Gibt Auskunft über das verwendete next-level Protokoll innerhalb der Nutzdaten. Die Nutzdaten Die Nutzdaten können pro Frame zwischen 0 und 1500 Byte lang sein. Sie sind die eigentlichen Informationen, die übertragen werden sollen. Ist das Nutzdaten Feld kleiner als 46 Byte, muss ein PAD Feld angehängt werden, um die Korrektheit des Ethernet II Frames sicherzustellen. Das PAD Feld Wird verwendet, wenn die Nutzdaten < 46 Byte sind, um den Ethernet II Rahmen auf die korrekte Minimalgröße von eben 64 Byte zu bringen. Dieser erstreckt sich von den beiden MAC-Adressen bis zur FCS. FCS (Frame Check Sequence) Das FCS Feld stellt eine 32Bit CRC-Prüfsumme dar. Wenn ein Paket beim Sender erstellt wird, wird eine CRC-Berechnung über die gesamte Bitfolge durchgeführt und die Prüfsumme an das Frame angehängt. Der Empfänger führt nach dem Empfang die selbe Berechnung aus und vergleicht sein Ergebnis mit dem Inhalt des FCS-Feldes. Stimmen die Werte nicht überein, geht der Empfänger von einer fehlerhaften Übertragung aus und das Frame wird verworfen. Als Beispiel betrachten wir folgendes Ethernet-Frame: Frame 5 (98 on wire, 98 captured) Arrival Time: May 27, 2005 19:33:05.617053000 Time delta from previous packet: 0.487764000 seconds Time relative to first packet: 5.478264000 seconds Frame Number: 5 Packet Length: 98 bytes Capture Length: 98 bytes Abb. 2 – Gefangenes Ethernet-Frame In Abbildung 2 ist leicht zu erkennen die Ankunftszeit des Frames, die Zeit vom vorhergehenden Paket, die Zeit im Verhältnis zu erstem Paket, die Frame-Nummer und die Paketlänge. Ethernet II Destination: 00:03:c9:3d:2a:d2 (TECOM_3d:2a:d2) Source: 00:0c:29:05:71:50 (00:0c:29:05:71:50) Type: IP (0x0800) Abb. 3 – Gefangenes Ethernet-Frame Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 9 2 Projektaufgabe In Abbildung 3 sind die Quell- Ziel-MAC-Adressen und den Typ des Protokolls. Internet Protocol, Src Addr: 192.168.0.13 (192.168.0.13), Dst Addr: 192.168.0.12 (192.168.0.12) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 84 Identification: 0x0000 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0xb93f (correct) Source: 192.168.0.13 (192.168.0.13) Destination: 192.168.0.12 (192.168.0.12) Internet Control Message Protocol Type: 8 (Echo (ping) reqest) Code: 0 Checksum: 0xff39 (correct) Identifier: 0x0705 Sequence number: 00:00 Data (56 bytes) Abb. 4 – Gefangenes Ethernet-Frame In Abbildung 4 die Inhalte des IP-Pakets, des ICMP-Pakets und die Nutzdaten. Man sieht, dass dieser Frame drei Header, eine Ethernet-, eine IP- und eine ICMP-Header hat. Die Informationen, die wir von dieser Frame erhalten, ist dass vom Rechner mit MAC-Adresse 00:0c:29:05:71:50 und IP-Adresse 192.168.0.13 ein echo-request zum Rechner mit MAC-Adresse 00:03:c9:3d:2a:d2 und IP-Adresse 192.168.0.12 zugeschickt ist. Das Frame ist nicht fragmentiert (.1.. = Don't fragment: Set) und ist auch das letzte Fragment was zugeschickt ist. 2. Analysieren Sie die Struktur eines kleinen und eines sehr großen ICMP-Pakets. Wie sehen die zugehörigen Ethernet-Frames aus? Zuerst schicken wir ein sehr kleines ICMP-Paket 1 byte groß. debian:~# ping –s 1 –c 1 192.168.0.12 PING 192.168.0.12 (192.168.0.12): 1 data bytes 9 bytes from 192.168.0.12: icmp_seq=0 ttl=128 --- 192.168.0.12 ping statistics --1 packets transmitted, 1 packets received, 0% packet loss Abb. 5 – Übertragung eines kleinen ICMP-Pakets Man sieht dass, das Paket in einem Frame geschickt wird. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 10 2 Projektaufgabe Internet Protocol, Src Addr: 192.168.0.13 (192.168.0.13), Dst Addr: 192.168.0.12 (192.168.0.12) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 29 Identification: 0x0000 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0xb976 (correct) Source: 192.168.0.13 (192.168.0.13) Destination: 192.168.0.12 (192.168.0.12) Internet Control Message Protocol Type: 8 (Echo (ping) request) Code: 0 Checksum: 0xf1fa (correct) Identifier: 0x0605 Sequence number: 00:00 Data (1 byte) Abb. 6 – Gefangenes ICMP-Paket Dieses geschieht, weil die maximale Länge eines Ethernet-Frames 1524 Bytes ist (einschließlich Header-Daten). Wir senden 1 Byte mit dem ping Befehl, also können die Daten in nur einen Frame gesendet werden. Man sieht auch dass, das Don’t fragment flag gesetzt ist. Das heißt, dass das Paket kann in nur einen Frame gesendet und ist keine Notwendigkeit in mehrere Fragmenten zersplittert zu werden. Als nächstens schicken wir ein sehr großes ICMP-Paket, 65000 bytes lang. debian:~# ping –s 65000 –c 1 192.168.0.12 PING 192.168.0.12 (192.168.0.12): 65000 data bytes 65008 bytes from 192.168.0.12: icmp_seq=0 ttl=128 time=2.7 ms --- 192.168.0.12 ping statistics --1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 2.7/2.7/2.7 ms Abb. 7 – Übertragung eines großen ICMP-Pakets Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 11 2 Projektaufgabe Hier sind die ersten zwei Pakete der Datenübertragung: Internet Protocol, Src Addr: 192.168.0.13 (192.168.0.13), Dst Addr: 192.168.0.12 (192.168.0.12) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1388 Identification: 0xea96 Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 63640 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0xaa7d (correct) Source: 192.168.0.13 (192.168.0.13) Destination: 192.168.0.12 (192.168.0.12) Data (1368 bytes) Internet Protocol, Src Addr: 192.168.0.13 (192.168.0.13), Dst Addr: 192.168.0.12 (192.168.0.12) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1500 Identification: 0xea96 Flags: 0x06 .1.. = Don't fragment: Set ..1. = More fragments: Set Fragment offset: 62160 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0x8ac6 (correct) Source: 192.168.0.13 (192.168.0.13) Destination: 192.168.0.12 (192.168.0.12) Data (1480 bytes) Abb. 8 – Gefangene ICMP-Pakete Bei einer größeren Transport Menge, sieht man dass, das Paket in mehreren Fragmenten gespaltet wird. In unserem Fall ist die Menge 65000 bytes und man sieht an Fragment offset wieviele Bytes bleiben, bis die Übertragung komplett ist. Man sieht auch dass, ab das zweite Frame der Flag More fragments gesetzt ist. Das heißt, dass eins oder mehrere Fragmente folgen. 3. Analysieren Sie die Struktur eines IP-Pakets und setzen sie die Header-Inhalte in Bezug zu den verwendenten Rechnern. Ein IP-Paket sieht wie folgt aus: Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 12 2 Projektaufgabe 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Abb. 9 – IP-Header Version: 4 bits Das Versionsfeld zeigt das Format der Internet-Überschrift an. IHL: 4 bits Internet Header Length ist die Länge der internet header in 32 Bitwörtern und zeigt folglich auf den Anfang der Daten. Der Mindestwert für eine korrekte Überschrift ist 5 bytes. Type of Service: 8 bits Type of Sevice liefert eine Hinweis über die abstrakten Parameter der Qualität des Services (Quality of Service) gewünscht. Total length: 16 bits Total length ist die Länge des Datagram, in Octets, einschließlich der Internet header und der Daten. Identification: 16 bits Ist ein kennzeichnender Wert zugewiesen durch den Absender. Es wird benutzt, wenn die Fragmente eines Datagram zusammengebaut werden. Flags: 3 bits Bit 0: reserviert, muss Null sein Bit 1: (DF) 0 = Fragmentiert, 1 = Nicht Fragmentiert Bit 2: (MF) 0 = Letztes Fragment, 1 = Mehrere Fragmente Fragment Offset: 13 bits Dieses Feld zeigt an, wo im Datagram dieses Fragment gehört. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 13 2 Projektaufgabe Time to Live: 8 bits Dieses Feld zeigt an, die maximale Zeit dass das Datagram im Internet-System bleibt. Protocol: 8 bits Dieses Feld zeigt das next level Protokoll an, das im Datenteil des Internet-Datengramms verwendet wird. Header checksum: 16 bits Eine Prüfsumme von der Header. Da einige Header (z.B., Time to Live) werden geändert, Die Prüfsumme wird neugerechnet und wird überprüft an jedem Punkt, daß die Internet-Header verarbeitet ist. Source Address Die Quelladresse. Destination Address Die Zieladresse Options Options können oder nicht in den Datengrammen erscheinen. Sie müssen durch alle IP modules (host und gateways) eingeführt werden. Was wahlweise freigestellt ist, ist ihr Übertragung in jedem bestimmten Datengramm, nicht ihre Implementierung. Als Beispiel betrachten wir das folgende Paket abgefangen von Ethereal: Internet Protocol, Src Addr: 192.168.0.13 (192.168.0.13), Dst Addr: 192.168.0.12 (192.168.0.12) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1500 Identification: 0xea96 Flags: 0x06 .1.. = Don't fragment: Set ..1. = More fragments: Set Fragment offset: 13320 Time to live: 64 Protocol: ICMP (0x01) Header checksum: 0xa29f (correct) Source: 192.168.0.13 (192.168.0.13) Destination: 192.168.0.12 (192.168.0.12) Data (1480 bytes) Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 14 2 Projektaufgabe Abb. 10 – Gefangenes IP-Paket Die Informationen, die wir von diesem Paket erhalten, ist die verwendete IP version (4), die länge des Headers, Information über die Art des Services, die Gesamtlänge des Pakets (1500 bytes), das es ein Fragment ist und sie nicht das letzte ist und wo im Datengramm dieses Fragment gehört. Wir sehen auch das next-level Protokoll dieses Pakets (ICMP (0x01)), die Prüfsumme der Header, die Ziel- und Quell-IP-Adressen und am Ende die Daten. Kurz, ist ein ICMP-Paket vom Rechner mit IP 192.168.0.13 zum Rechner mit IP 192.168.0.12 zugeschickt. 4. Analysieren Sie die Struktur eines UDP-Pakets. 0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... +---------------- ... Abb. 11 – UDP-Header Source Port Source Port ist- ein wahlweise freigestelltes Feld, wenn sinnvoll, zeigt es das Port des sendenden Prozesses an und kann angenommen werden, um das Port zu sein, an das eine Antwort in Ermangelung aller möglicher anderen Informationen adressiert werden sollte. Destination Port Destination Port hat eine Bedeutung innerhalb des Kontextes einer bestimmten Internet-Zieladresse. Length Length ist die Länge in Octets des Datengramms einschließlich dieser Header und der Daten. Checksum Checksum ist die Prüfsumme der Header. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal 15 2 Projektaufgabe Kommunikationstechnik 2 2.2.2 Analyse einer POP3 Verbindung In diesem Teil analysieren wir eine beliebige POP3-Verbindung von einem beliebigen Client an den Mail-Server. Um die Möglichkeiten der Überwachung zu demonstrieren, haben wir jegliche (POP3-)Verbindungen zu dem Mailsserver (mail.intern.ktds-labor.de) mitgehört. Schwerpunk der Analyse ist, neben den Aufgaben zur Netzverwaltung (ARP/DNS) und protokolltechnischen Eigenschaften (Verbindungsaufbau mit 3-Way-Handshake/Verbindungsabbau), die Protokollierung der Nutzdaten. Wir wollen zeigen, das es möglich ist Zugriff auf fremde, vertrauliche Daten zu bekommen. Netzverkehr den unser Rechner (Überwacher) erzeugt wird nicht berücksichtigt. Die Bildschirmfotos von Ethereal beinhalten zum Teil nur Zusammenfassungen der Pakete. Versuchsaufbau: Rechner MAC IP Mailserver 00:50:56:10:60:17 10.23.60.17 Nameserver 00:50:56:10:60:14 10.23.60.14 Client 00:50:56:10:60:29 10.23.60.29 Überwacher 00:50:56:10:60:28 10.23.60.28 Vorbereitung Zuerst stellen wir sicher, dass der Mailserver funktioniert. Dann richten wir Ethereal wie folgt ein: Capture: Setze Netzwerkkarte in den Promiscuous Mode, Filtere alle Pakete, die mail.intern.ktdslabor.de als Source oder Destination haben. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal 16 2 Projektaufgabe Kommunikationstechnik 2 ARP Anfrage (Adress Resolution Protocol) Bei unserem Versuchsaufbau werden maximal 4 ARP-Anfragen gestellt: 1. Der Client erfragt die MAC des Nameservers 2. Der Nameserver erfragt die MAC des Clients 3. Der Client erfragt die MAC des Mailservers 4. Der Mailserver erfragt die MAC des Clients Dies ergibt sich, weil zwei beidseitige Verbindungen notwendig sind. Zuerst fragt der Client die IP des Mail-Servers vom Nameserver an. Dazu benötigt er die MAC des Nameservers (Anfrage 1). Der Nameserver schickt die Nachricht zurück, muss also auch die MAC des Client kennen (Anfrage 2). Das gleiche wiederholt sich bei der Kommunikation zwischen dem Client und dem Mailserver (Anfragen 3 und 4). Die ARP Anfrage kann fehlen, wenn der Rechner die MAC Adresse bereits im ARP Cache hat. Man kann die Anfrage provozieren, indem man den entsprechenden Eintrag im Cache löscht.. (Anzeige des Inhalts mit: arp, Löschen des Caches mit: arp -d) Wir analysieren beispielhaft die vierte ARP-Anfrage. ARP-Anfragen bestehen aus zwei EthernetPaketen. Die ARP-Anfragen und -Antworten sind in Ethernet-Paketen eingebunden, die bereits unter 2.2.1 beschrieben wurden. Wir beachten jetzt nur die Einträge des ARP: Paket 1 Paket 2 Das erste Paket sendet der Nachfrager an die MAC-Broadcast-Adresse ff:ff:ff:ff:ff:ff und fragt nach der Adresse 10.23.60.29 (Target IP address). Das es sich um eine Anfrage(request) handelt, steht im Opcode. Das zweite Paket ist die Antwort(reply), wiederum gekennzeichnet im Opcode. Die Zieladresse ist die MAC ...:17 (Dst im Ethernet-Frame). Das Ergebnis der Anfrage, sprich die gewünschte MACAdresse findet sich unter Sender MAC address. Dieses Paket kann theoretisch von jedem Rechner im Netzwerk kommen, der die MAC-Adresse weiß. In großen Netzwerken ist dies aber meist nicht implementiert, da sonst zu viele Antworten auf eine Nachfrage kommen würden. Hier antwortet nur der “angesprochende” Host selbst. Dies hat den Vorteil, das nicht noch Adressen von nicht mehr existierenden Rechnern ausgeliefert werden. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 17 2 Projektaufgabe DNS Anfrage (Domain Name System) Hier fallen wiederum 2 Anfragen an. 1. Der Client fragt die IP von mail.intern.ktds-labor.de an 2. Der Mailserver fragt den Namen vom Client an Dies ergibt sich, da der Client den Mailserver über einen Namen anspricht (siehe Konfiguration eines Mailsclienten Kapitel 3). Für die Verbindung wird aber die IP benötigt. Der Mailserver braucht den Namen des Clients für die Verbindung nicht, aber für interne Zwecke (z.B. Protokollierung) DNS-Anfragen sind in einem UDP-Paket eingebunden, welches bereits unter 2.2.1 analysiert und dokumentiert wurde. Wir befassen uns hier nur mit der DNS-Anfrage 2: Paket 1: Die Anfrage wird vom Mailserver zum DNS-Server gestellt, zu erkennen an den MAC-Adressen im Ethernet-Frame und an den Src Addr und Dst Addr im IP-Header. Die Anfrage wird am UDP-Port 1026 an den Port 53 (Domain) geschickt. Als Nutzdaten enthält das Paket die Art (Flags 0x0100 Standard Query) und die Anfragen(Queries) an sich. Das aufgezeichnete Paket enthält eine Anfrage, die Anfrage nach dem Namen des Clients. Diese Daten finden wir in der ersten Query: Name: 29.60.23.10.in-addr.arpa entspricht der IP 10.23.60.29. der Type gibt die Art des Eintrages im DNS an, hier also PTR, also eine Auflösung IP->Name. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 18 2 Projektaufgabe Paket 2: Die Antwort erfolgt vom DNS-Server zurück an den Mail-Server, wieder über IP(Auf den Bildschirmfoto abgeschnitten). Die Antwort ist wieder ein UDP-Paket auf der selben „Verbindung“ zurück (UDP Port 53->Port 1026). Wir beachten wieder die DNS Nutzdaten: Es handelt sich um eine Antwort, zu erkennen an den Flags (0x8580 Standard query response). In den Queries sind nochmal die Anfragen aus Paket 1 enthalten, um die Zuordnung herstellen zu können. Unter Answers finden wir am Ende der Zeile schließlich den Namen des Clients (p9.intern.ktds-labor.de). Desweiteren unter Authorative nameservers die Daten des antwortenden Nameservers. TCP 3-Way-Handshake Um eine Verbindung sicher aufzubauen sind 3 Schritte notwendig: 1. Der Client will eine Verbindung aufbauen, und sendet ein SYN-Paket (synchronize) 2. Der Server bestätigt dies (ACK) und initiiert seinerseits auch eine Verbindung (SYN) 3. Der Client bestätigt die Verbindung vom Server mit einem ACK (acknowledge) Durch den 3-Way-Handshake wird sichergestellt, das beide Parteien die Verbindung aufgebaut haben. Diese 3 Schritte sind bei jeder TCP-Verbindung notwending. Hier nun die 3 Pakete in unserem Testfall, Client verbindet sich mit dem Mailserver: Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 19 2 Projektaufgabe Paket 1 Paket vom Client (Src Addr im IP) an den Mailserver (Dsr Addr im IP). Eingebunden ist ein TCP Paket von Port 1033 (zufällig, aber >1024) an den Port 110(pop3). Das es sich hier um ein SYNPaket handelt erkennt man in den Flags (0x0002 SYN). Wichtig ist in den Nutzdaten noch die Sequenznummer, mit der die Verbindung erkannt wird (hier Seq: 0). Paket 2 Rückantwort vom Mailserver an den Client (siehe IP-Protokoll). Die Kommunikation erfolgt wieder auf der selben „Leitung“ also von Port 110->Port 1033. Es handelt sich hier wie erwartet um ein SYN/ACK Paket, zu erkennen in den Flags (0x0012 SYN,ACK). Die Sequenznummer ist eine eigene vom Server, hier allerdings auch 0. Die Ack-Nummer ist die Sequenznummer +1, also hier 1. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 20 2 Projektaufgabe Paket 3 Das dritte Paket geht wieder vom Client zum Server. Es handelt sich um ein ACK-Paket, wiederum an den Flags zu erkennen (0x0010 ACK). Die „Leitung“ ist wieder Port 1033->Port 110. Die Sequenznummer ist die erste Sequenznummer des Clienten +1, die Ack-Nummer die Sequenznummer des Servers +1. Als nächstes folgen die eigendlichen Daten, die über die Verbindung ausgetauscht werden sollen. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 21 2 Projektaufgabe Analyse des Transports der Dateninhalte Alle Daten der POP3-Verbindung gehen über die Aufgebaute TCP/IP Verbindung. Die POP3Pakete werden in TCP, IP und Ethernet-Pakete eingebunden. Die Ethernetpakete unterscheiden sich nur in den Quell- und Zieladressen, in unserem Fall also 1. Src: 00:50:56:10:60:17 Dst 00:50:56:10:60:29 Server->Client 2. Src: 00:50:56:10:60:29 Dst 00:50:56:10:60:17 Client->Server Die eingebetteten IP Pakete verhalten sich ähnlich: 1. Src Addr: 10.23.60.17 Dst Addr: 10.23.60.29 Server->Client 2. Src Addr: 10.23.60.29 Dst Addr: 10.23.60.17 Client->Server Die TCP-Pakete beinhalten Angaben über die Ports, und unterschiedliche ACK und SEQ: 1. Src Port: 110 Dst Port: 1033 Server->Client 2. Src Port: 1033 Dst Port: 110 Client->Server Die POP-Pakete beinhalten schließlich die Nutzdaten. Zur Auswertung der Daten benötigen wir nur die Inhalte der POP-Pakete mit der Angabe, welche Daten vom Client und welche vom Server kommen. Die Abbildung der einzelnen Pakete wird deswegen hier weggelassen. Dazu bietet uns Ethereal die Funktion Follow TCP stream. Die Ausgabe sieht wie folgt aus: +OK POP3 mail.intern.ktds-labor.de v2001.78 server ready AUTH +OK Supported authentication mechanisms: LOGIN . USER user1 +OK User name accepted, password please PASS user1 +OK Mailbox open, 5 messages LIST +OK Mailbox scan listing follows 1 922 2 633 3 630 4 646 5 658 . UIDL +OK Unique-ID listing follows 1 429c777600000001 2 429c777600000002 3 429c777600000003 4 429c777600000004 5 429c777600000005 . RETR 1 +OK 922 octets Return-Path: <[email protected]> Received: from there (kt2g1@[10.23.60.80]) .by debian (8.12.3/8.12.3/Debian-7.1) with SMTP id j4VEN7s2000551 .for <[email protected]>; Tue, 31 May 2005 16:23:08 +0200 Message-Id: <200505311423.j4VEN7s2000551@debian> Content-Type: text/plain; charset="iso-8859-1" From: Karl Ransaier <[email protected]> Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 22 2 Projektaufgabe Reply-To: [email protected] To: KTmailer <[email protected]> Subject: Re: banane Date: Tue, 31 May 2005 07:23:34 +0200 X-Mailer: KMail [version 1.3.2] References: <200505311422.j4VEM5s2000521@debian> <200505311422.j4VEMVs2000538@debian> In-Reply-To: <200505311422.j4VEMVs2000538@debian> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Length: 132 Status: ... On Tuesday 31 May 2005 07:22, you wrote: > schoener foenOn Tuesday 31 May 2005 07:22, you wrote: > > .... > > > > fsdafsdfasdf . RETR 2 +OK 633 octets Return-Path: <[email protected]> Received: from there (kt2g1@[10.23.60.80]) .by debian (8.12.3/8.12.3/Debian-7.1) with SMTP id j4VEQQs2000572 .for <[email protected]>; Tue, 31 May 2005 16:26:26 +0200 Message-Id: <200505311426.j4VEQQs2000572@debian> Content-Type: text/plain; charset="iso-8859-1" From: Karl Ransaier <[email protected]> Reply-To: [email protected] To: [email protected] Date: Tue, 31 May 2005 07:26:50 +0200 X-Mailer: KMail [version 1.3.2] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Length: 11 Status: fghdsfgdsf . RETR 3 [...] RETR 4 [...] RETR 5 [...] DELE 1 +OK Message deleted DELE 2 +OK Message deleted DELE 3 +OK Message deleted DELE 4 +OK Message deleted DELE 5 +OK Message deleted QUIT +OK Sayonara Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 23 2 Projektaufgabe Wir sehen, dass alle Daten unverschlüsselt über das Netz gehen. In einem Netz mit einem Hub können diese Daten von uns mitgelesen werden. Nicht nur, dass wir die eMails dieser Sitzung mitlesen können, wir haben sogar den Benutzernamen und das Passwort des Clienten mitlesen können, und haben so Zugriff auf sein Postfach. Eine Abhilfe schafft die Verwendung von verschlüsselten Verbindungen (pop3s). Abbau der Verbindung Der Abbau der Verbindung muss ebenfalls sicher sein, also von beiden Seiten bestätigt werden. Analog zum Verbindungsaufbau nach dem 3-Way-Handshake Prinzip sind hier wieder 3 Schritte/Pakete notwendig: 1. Client will die Verbindung abbauen, sendet ein FINPakct an den Sever (finalize) 2. Server bestätigt das FIN mit einem ACK und sendet seinerseits wieder ein FIN, dieses kann in einem Paket zusammengefasst werden (FIN/ACK) 3. Der Client bestätigt den Abbau mit einem ACK. Paket 1: Paket vom Client (Src Addr im IP) an den Mailserver (Dsr Addr im IP). Eingebunden ist ein TCP Paket von Port 1033 an den Port 110(pop3). Das es sich hier um ein FIN-Paket handelt erkennt man in den Flags (0x0011 FIN, ACK). Wichtig ist in den Nutzdaten noch die Sequenznummer, mit der die Verbindung erkannt wird (hier Seq: 0). Das ACK ist für den Abbau nicht relevant. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 24 2 Projektaufgabe Paket 2: Rückantwort vom Mailserver an den Client (siehe IP-Protokoll). Die Kommunikation erfolgt wieder auf der selben „Leitung“ also von Port 110->Port 1033. Es handelt sich hier wie erwartet um ein FIN/ACK Paket, zu erkennen in den Flags (0x0011 FIN,ACK). Die Sequenznummer ist eine eigene vom Server, hier allerdings auch 0. Die Ack-Nummer ist die Sequenznummer +1, also hier 1. Paket 3: Das dritte Paket geht wieder vom Client zum Server. Es handelt sich um ein ACK-Paket, wiederum an den Flags zu erkennen (0x0010 ACK). Die „Leitung“ ist wieder Port 1033->Port 110. Die Sequenznummer ist die erste Sequenznummer des Clienten +1, die Ack-Nummer die Sequenznummer des Servers +1. Damit ist die Verbindung auf beiden Seiten abgebaut. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal 25 3 Querschnittsaufgaben Kommunikationstechnik 2 3 Querschnittsaufgaben 3.1 Konzept Wir richten unseren Rechner so ein, dass er seine Hostkonfiguration vom DHCP Server bezieht und in der Lage ist Namensanfragen an DNS Server zu richten. Des weiteren wird ein E-Mail Programm konfiguriert, um E-Mails über einen Server einer andren Gruppe zu senden und zu empfangen. Zu guter Letzt konfigurieren wir einen Browser so, dass er in der Lage ist eine Anfrage an einen HTTP Server zu stellen. 3.2 Lösung 3.2.1 Einrichtung eines Mailclient Folgende Benutzerdaten wurden uns von der Mailservergruppe zugeteilt: E-Mail Adresse: [email protected] Benutzername: user1 Passwort: user1 3.2.2 Einrichtung eines Webbrowser Mit lynx haben wir alle Adressen, die uns die Webserver-Gruppe zur Verfügung gestellt haben, getestet. (z.B. lynx praktikum.ktds-labor.de) Ausgabe: Welcome to Webserver W3 ! Welcome to our new Apache Web Server !!!! _________________________________________________________________ praktikum.ktds-labor.de www.praktikum.ktds-labor.de Links auf weitere Server: Virtual Server www.intern.ktds-labor.de Virtual Server intern.ktds-labor.de Virtual Server www.ktds-labor.de Virtual Server ktds-labor.de 3.2.3 Konfiguration der Netzwerkschnittstelle über dhcp Durch den Aufruf von dhclient werden die relevanten Informationen (IP-Adresse, Subnetzmaske, Gateway, Nameserver) an den Client übertragen. Die dhcp-Anfrage wird an die Broadcast-MAC (ff:ff:ff:ff:ff:ff) gesendet. Prüfen kann man die IP und Subnetzmaske mit ifconfig. debian:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:10:60:28 inet addr:10.23.60.28 Bcast:10.23.60.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:37672 errors:0 dropped:0 overruns:0 frame:0 TX packets:267 errors:0 dropped:0 overruns:0 carrier:0 Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis Netzwerkanalyse mit Ethereal Kommunikationstechnik 2 26 3 Querschnittsaufgaben collisions:0 txqueuelen:100 RX bytes:5611653 (5.3 MiB) TX bytes:24430 (23.8 KiB) Interrupt:18 Base address:0x1080 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:184 errors:0 dropped:0 overruns:0 frame:0 TX packets:184 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:12160 (11.8 KiB) TX bytes:12160 (11.8 KiB) Der Nameserver steht nach der dhclient Abfrage in der Datei /etc/resolv.conf debian:~# cat /etc/resolv.conf search intern.ktds-labor.de nameserver 10.23.60.14 Wenn eine Gatewayadresse übertragen wird, kann diese mit route erfahren werden. Benedikt Arnold - Christian Fehmer - Ioannis Chouklis - Dimitrios Ramnalis