Add ARP/Ethernet document.
|
@ -0,0 +1,226 @@
|
|||
---
|
||||
author: Carl Kittelberger
|
||||
date: 2018-03-22
|
||||
title: "ITS: Ethernet und ARP"
|
||||
institute: "Ferdinand-von-Steinbeis Berufsschule"
|
||||
lang: de-DE
|
||||
babel-lang: ngerman
|
||||
babel-otherlangs:
|
||||
- english
|
||||
polyglossia-lang:
|
||||
name: german
|
||||
options:
|
||||
- spelling=new
|
||||
classoption: oneside
|
||||
colorlinks: true
|
||||
documentclass: report
|
||||
fontsize: 12pt
|
||||
logo: img/steinbeis.png
|
||||
mainfont: Arial
|
||||
papersize: a4
|
||||
sansfont: Arial
|
||||
tables: true
|
||||
template: template.tex
|
||||
|
||||
toc: true
|
||||
|
||||
header-includes:
|
||||
# For \pageref{LastPage}
|
||||
- \usepackage{lastpage}
|
||||
|
||||
# For \textcolor
|
||||
- \usepackage{xcolor}
|
||||
|
||||
# Long tables (used by pandoc latex template itself)
|
||||
#- \usepackage{longtable}
|
||||
|
||||
# Localization to German for all package injections
|
||||
#- \usepackage[ngerman]{babel}
|
||||
|
||||
# Fancy header!
|
||||
- \usepackage{fancyhdr}
|
||||
- \usepackage{graphicx}
|
||||
- \pagestyle{fancy}
|
||||
- \fancyhf{}
|
||||
- \fancyhead[L]{\large{\textit{\textbf{ITS} \\ Ethernet und ARP}}}
|
||||
- \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
|
||||
- \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
|
||||
- \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage{}/\pageref*{LastPage}}}}
|
||||
- \renewcommand{\headrulewidth}{0.4pt}
|
||||
- \renewcommand{\footrulewidth}{0.4pt}
|
||||
- \setlength\headheight{36pt}
|
||||
- \fancypagestyle{plain}{}
|
||||
|
||||
# monospace
|
||||
- \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true}
|
||||
- \lstset{framextopmargin=50pt}
|
||||
---
|
||||
|
||||
\newpage
|
||||
|
||||
# Aufzeichnen und Analysieren von Ethernet-Frames
|
||||
|
||||
Statt der IP-Addresse, die in der Aufgabe vorgegeben wurde, wird während der
|
||||
Analyse die IP-Addresse `212.83.173.97` verwendet. Auf der IP-Addresse läuft
|
||||
der gleiche Webserver wie bei der zuvor genutzten URL http://test.icedream.tech,
|
||||
außer dass der Webserver hier mit HTTP-Fehler 404 antwortet.
|
||||
|
||||
Zuerst die Ansicht mit aktiviertem IPv4-Protokollmodul:
|
||||
|
||||

|
||||
|
||||
Frame `44453` ist der Frame in dem unsere Anfrage abgeschickt wird, und Frame
|
||||
`45270` enthält unsere Antwort, den `404 Not Found` HTTP-Status.
|
||||
|
||||
\clearpage
|
||||
|
||||
## Anfrage
|
||||
|
||||
Nach Deaktivieren des IPv4-Moduls sieht der Anfrageframe wie folgt aus:
|
||||
|
||||

|
||||
|
||||
Der Inhalt ist wie folgt:
|
||||
|
||||

|
||||
|
||||
### MAC-Adresse des eigenen Rechners
|
||||
|
||||
Die MAC-Adresse lässt sich aus dem `Source` Feld des `Ethernet II` Frames auslesen.
|
||||
In diesem Fall ist die eigene MAC-Adresse `00:0c:29:d6:b4:3d`.
|
||||
|
||||
### MAC-Adresse des Zielrechners
|
||||
|
||||
Die MAC-Adresse lässt sich aus dem `Destination` Feld des `Ethernet II` Frames auslesen.
|
||||
In diesem Fall ist die MAC-Adresse des Zielservers `38:10:d5:64:53:ed`.
|
||||
Tatsächlich ist dieser Frame nicht der einzige bei dem diese MAC-Addresse als
|
||||
Ziel gesetzt ist. So gut wieder jeder weitere Frame der ins Internet geht enthält
|
||||
diese MAC-Adresse als Ziel. Das Ziel ist tatsächlich der lokal installierte
|
||||
AVM Fritz!Box Router, der die Pakete ins Internet leitet, auch erkennbar am
|
||||
angezeigten Herstellernamen, den Wireshark daneben anzeigt (`AvmAudio_64:53:ed`).
|
||||
|
||||
### Typ-Feld
|
||||
|
||||
Der Hexwert ist auf den Wert `0x0800` gesetzt.
|
||||
|
||||
### Offset in Daten
|
||||
|
||||
Der Buchstabe `G` der `GET`-Anfrage kann in den Rohdaten des Frames am Byte-Offset
|
||||
`0x0042` (dezimal `66`) gefunden werden.
|
||||
|
||||
## Antwort
|
||||
|
||||

|
||||
|
||||
### MAC-Adresse des Quellrechners
|
||||
|
||||
Im `Source`-Feld des Antwortframes ist nun die MAC `38:10:d5:64:53:ed` und damit
|
||||
wie oben auch identifizierbar unser Router gesetzt.
|
||||
|
||||
### MAC-Adresse des Zielrechners
|
||||
|
||||
Als `Destination` MAC ist jetzt unsere eigene MAC, `00:0c:29:d6:b4:3d` gesetzt.
|
||||
|
||||
### Typ-Feld
|
||||
|
||||
Der Hexwert ist wieder auf den Wert `0x0800` gesetzt.
|
||||
|
||||
### Offset in Daten
|
||||
|
||||
In diesem Fall ist die Antwort leider keine `200 OK`-Antwort. Hier wird
|
||||
stattdessen nun nach den Buchstaben `N` und `F` der `404 Not Found`-Nachricht
|
||||
gesucht.
|
||||
|
||||
Der Buchstabe `N` findet sich an Position `0x004f` (dezimal `79`). Der Buchstabe
|
||||
`F` findet sich danach an Position `0x0053` (dezimal `83`).
|
||||
|
||||
\clearpage
|
||||
|
||||
# ARP-Datagramme
|
||||
|
||||
## Cache
|
||||
|
||||
Beim Ausführen des Befehls `arp -a` gibt der Rechner wie folgt seinen Cache aus:
|
||||
|
||||

|
||||
|
||||
Sichtbar sind der Router (`_gateway`/`192.168.188.1`), der Host-PC der virtuellen
|
||||
Maschine in dem die Analysen stattfinden (`Icedream-HomePC.fritz.box`/`192.168.188.21`)
|
||||
und die virtuelle Maschine selbst (`vm-dev-archlinux.fritz.box`/`192.168.188.33`).
|
||||
|
||||
## Protokollanalyse
|
||||
|
||||
Vor der Analyse wird der ARP-Cache gelöscht. Gelöscht wird mit dem Befehl `ip -s -s neigh flush` mit `root`-Rechten:
|
||||
|
||||

|
||||
|
||||
Jetzt wird Firefox gestartet und http://bild.de aufgerufen und folgende ARP-Anfrage
|
||||
und dazugehörige Antwort werden sichtbar:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
\clearpage
|
||||
|
||||
### Request
|
||||
|
||||
#### Adressen
|
||||
|
||||
- Die Ziel-MAC ist `00:00:00:00:00:00` (Alias für *unbekannte MAC*)
|
||||
- Die Quell-MAC ist `00:0c:29:d6:b4:3d`, die der analysierenden Maschine
|
||||
|
||||
#### Typ
|
||||
|
||||
Das Typenfeld für das Protokoll ist auf `0x0800` (*IPv4*) gesetzt.
|
||||
|
||||
### RFC 826
|
||||
|
||||
#### Offset des `opcode`-Felds
|
||||
|
||||
Das `opcode`-Feld beginnt nach 16 + 16 + 8 + 8 = **48 Bits** im ARP-Payload.
|
||||
|
||||
#### IP-Adresse in ARP-Message
|
||||
|
||||
Eine ARP-Message beinhaltet grundsätzlich Verweise auf MAC-Adressen und IP-Adressen
|
||||
von Sender und Empfänger (oder sie werden auf null gesetzt wenn die Daten dafür
|
||||
nicht verfügbar sind). Die des Senders ist in der Anfrage dabei definitiv enthalten.
|
||||
|
||||
#### `opcode` für Anfragen
|
||||
|
||||
Das `opcode`-Feld wird für Anfragen in Ethernetframes laut RFC auf den Wert
|
||||
von `ares_op$REQUEST` bzw. `1` oder binär `01` gesetzt.
|
||||
|
||||
#### Platzierung der "Frage"
|
||||
|
||||
Im ARP-Paket wird die "Frage" durch das `opcode` Feld und den genullten Wert der
|
||||
Ziel-MAC und -IP dargestellt.
|
||||
|
||||
### Reply
|
||||
|
||||
#### Offset des `opcode`-Felds
|
||||
|
||||
In der Antwort beginnt das `opcode`-Feld `0x14 - 0x0e = 20 - 14 = 6` Bytes
|
||||
und damit wieder nach **48 Bits** im ARP-Payload.
|
||||
|
||||
#### `opcode` für Anfragen
|
||||
|
||||
Das `opcode`-Feld wird für die Antwort auf `2` (*reply*) gesetzt.
|
||||
|
||||
#### Platzierung der "Frage"
|
||||
|
||||
Die Frage selbst ist nicht mehr wirklich im Paket enthalten bis auf die Tatsache,
|
||||
dass als Empfänger dieser Antwort exakt der Sender der Anfrage eingetragen ist.
|
||||
|
||||
#### MAC-Adressen
|
||||
|
||||
- Ziel-MAC: `00:0c:29:d6:b4:3d`
|
||||
- Quell-MAC: `38:10:d5:64:53:ed`
|
||||
|
||||
\clearpage
|
||||
|
||||
# Quellenangaben
|
||||
|
||||
Alle Quellen zuletzt abgerufen am 21.03.2018.
|
||||
|
||||
- RFC 826: https://tools.ietf.org/html/rfc826
|
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 71 KiB |