---
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
