Add ARP/Ethernet document.

master
Icedream 2018-03-21 20:09:56 +01:00
parent 39b43b9eb2
commit 0d73833565
Signed by: icedream
GPG Key ID: 1573F6D8EFE4D0CF
9 changed files with 226 additions and 0 deletions

226
07-Kittelberger_Carl_ARP.md Normal file
View File

@ -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:
![](img/07-arp/wireshark_a_http.png)
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:
![](img/07-arp/wireshark_b_eth.png)
Der Inhalt ist wie folgt:
![](img/07-arp/wireshark_c_data.png)
### 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
![](img/07-arp/wireshark_d_answer.png)
### 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:
![](img/07-arp/cmd_arp_a.png)
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:
![](img/07-arp/cmd_arp_flush.png)
Jetzt wird Firefox gestartet und http://bild.de aufgerufen und folgende ARP-Anfrage
und dazugehörige Antwort werden sichtbar:
![](img/07-arp/arp_request.png)
![](img/07-arp/arp_response.png)
\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

BIN
img/07-arp/arp_request.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
img/07-arp/arp_response.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
img/07-arp/cmd_arp_a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB