Raspberry Pi als „Daten-Abhörstation“?!

von | Aug. 13, 2025 | Virtualisierung | 0 Kommentare

Einleitung

Der Einsatz von Raspberry Pi als „Daten-Abhörstation“ ist ein spannendes Thema, das viele Fragen aufwirft. In diesem Video wird gezeigt, wie man mithilfe eines Raspberry Pi und eines selbst entwickelten Tools den Datenverkehr von IoT-Geräten wie einer smarten Kaffeemaschine überwachen kann. Durch die Verwendung von mitmproxy, mitmweb, hostapd und dnsmasq wird ein transparenter Proxy aufgebaut, der es ermöglicht, den Datenverkehr zu analysieren und sogar die SSL-Kette aufzubrechen.

Das Video zeigt Schritt für Schritt, wie man das Tool installiert und konfiguriert. Es werden auch die Befehle `wget https://raw.githubusercontent.com/it-and-der-bar/YouTube/refs/heads/main/interceptor/setup-interceptor.sh`, `chmod +x setup-interceptor.sh` und `./setup-interceptor.sh` verwendet, um das Tool zu installieren.

Good-to-Know-Themen

  • Das Tool kann auch für die Überwachung von anderen IoT-Geräten wie Smart-Home-Geräten verwendet werden.
  • Es ist wichtig, dass man die rechtlichen Aspekte der Datenüberwachung beachtet.
  • Das Tool kann auch für Penetration-Testing und Netzwerk-Sicherheitstests verwendet werden.

YouTube Video

Best Practices

  • Stellen Sie sicher, dass Sie die neuesten Sicherheitspatches für Ihren Raspberry Pi installiert haben.
  • Verwenden Sie starke Passwörter und Authentifizierungsmethoden, um den Zugriff auf Ihr Tool zu schützen.
  • Überwachen Sie regelmäßig die Log-Dateien, um sicherzustellen, dass keine unbefugten Zugriffe auf Ihr Tool erfolgen.

ToDo’s

  • Installieren Sie das Tool auf Ihrem Raspberry Pi und konfigurieren Sie es entsprechend.
  • Testen Sie das Tool, um sicherzustellen, dass es korrekt funktioniert.
  • Dokumentieren Sie Ihre Erfahrungen und Ergebnisse, um anderen zu helfen.

FAQs

  • Was ist der Zweck des Tools?
  • Das Tool dient zur Überwachung von IoT-Geräten und deren Datenverkehr.

  • Kann ich das Tool für andere Zwecke verwenden?
  • Ja, das Tool kann auch für Penetration-Testing und Netzwerk-Sicherheitstests verwendet werden.

  • Ist das Tool sicher?
  • Das Tool ist sicher, wenn Sie es korrekt konfigurieren und regelmäßig aktualisieren.

Fazit

Insgesamt bietet das Tool eine gute Möglichkeit, den Datenverkehr von IoT-Geräten zu überwachen und ihre Sicherheit zu testen. Es ist jedoch wichtig, dass Sie die rechtlichen Aspekte beachten und das Tool korrekt konfigurieren.

Man-in-the-Middle-Proxy (MITM) – Eine Einführung

Ein Man-in-the-Middle-Proxy (MITM) ist ein Tool, das es ermöglicht, den Datenverkehr zwischen zwei Parteien zu überwachen und zu manipulieren. In diesem Video verwenden wir einen Raspberry Pi und ein eigenes „Abhörtool“ für HTTP/S, um zu sehen, was unsere smarte Kaffeemaschine und andere IoT-Geräte wirklich im Internet treiben. Der MITM-Proxy ermöglicht es uns, den Datenverkehr zwischen diesen Geräten und dem Internet zu überwachen und zu analysieren.

Der Prozess des Aufbaus eines MITM-Proxys umfasst mehrere Schritte. Zunächst müssen wir einen transparenten Proxy auf unserem Raspberry Pi einrichten, der den Datenverkehr zwischen den IoT-Geräten und dem Internet überwacht. Dazu verwenden wir Tools wie mitmproxy, mitmweb, hostapd und dnsmasq. Diese Tools ermöglichen es uns, die SSL-Kette aufzubrechen und eigene Zertifikate auszustellen, um den Datenverkehr zu entschlüsseln und zu analysieren.

  • mitmproxy: Ein Tool für die Überwachung und Manipulation von HTTP/S-Datenverkehr
  • mitmweb: Ein Web-Interface für mitmproxy, um den Datenverkehr zu überwachen und zu analysieren
  • hostapd: Ein Tool für die Einrichtung eines WLAN-Access-Points auf unserem Raspberry Pi
  • dnsmasq: Ein Tool für die Verwaltung von DNS-Anfragen und die Weiterleitung von Datenverkehr

Der Aufbau des MITM-Proxys

Der Aufbau des MITM-Proxys auf unserem Raspberry Pi umfasst mehrere Schritte. Zunächst müssen wir die notwendigen Tools installieren und konfigurieren. Dazu gehören die Installation von mitmproxy, mitmweb, hostapd und dnsmasq.

wget https://raw.githubusercontent.com/it-and-der-bar/YouTube/refs/heads/main/interceptor/setup-interceptor.sh
chmod +x setup-interceptor.sh
./setup-interceptor.sh

Nach der Installation und Konfiguration der Tools können wir den MITM-Proxy starten und beginnen, den Datenverkehr zwischen unseren IoT-Geräten und dem Internet zu überwachen und zu analysieren.

Die Grenzen des MITM-Proxys

Der Einsatz eines MITM-Proxys hat auch seine Grenzen. Einige IoT-Geräte verwenden verschlüsselte Verbindungen, die nicht von unserem MITM-Proxy entschlüsselt werden können. Andere Geräte verwenden alternative Kommunikationsprotokolle, die nicht von unseren Tools unterstützt werden.

Trotz dieser Grenzen bietet der Einsatz eines MITM-Proxys eine gute Möglichkeit, den Datenverkehr zwischen unseren IoT-Geräten und dem Internet zu überwachen und zu analysieren. Durch die Verwendung von Tools wie mitmproxy, mitmweb, hostapd und dnsmasq können wir einen transparenten Proxy auf unserem Raspberry Pi einrichten und beginnen, den Datenverkehr zu überwachen und zu analysieren.

Wichtige Befehle für Einsteiger im WLAN-Setup-Script

In diesem Abschnitt werden 4-8 wichtige Befehle aus dem bereitgestellten Script-Code für Einsteiger erklärt. Diese Befehle sind entscheidend für das Verständnis und die Konfiguration des WLAN-Setups.

1. `set -euo pipefail`

Der Befehl `set -euo pipefail` wird am Anfang des Scripts verwendet, um bestimmte Shell-Optionen zu aktivieren. Die Option `-e` bewirkt, dass das Script bei einem Fehler beendet wird. Die Option `-u` behandelt unbekannte Variablen als Fehler. Die Option `-o pipefail` setzt den Exit-Status eines Pipelines auf den Status des letzten Befehls, der einen Fehler zurückgegeben hat.

2. `read -rp „SSID für WLAN (default: InterceptorAP): “ SSID`

Dieser Befehl liest die Eingabe des Benutzers für den SSID (Network-Name) des WLANs. Der Parameter `-r` verhindert, dass die Eingabe durch Backslash-Zeichen beeinflusst wird. Der Parameter `-p` ermöglicht es, eine Prompt-Nachricht anzuzeigen, in diesem Fall „SSID für WLAN (default: InterceptorAP): „. Die Variable `SSID` speichert den eingegebenen Wert.

3. `if [ „${#WLAN_PASS}“ -lt 8 ]; then`

Dieser Befehl prüft, ob die Länge des eingegebenen WLAN-Passworts (`WLAN_PASS`) kleiner als 8 Zeichen ist. Wenn dies der Fall ist, wird eine Fehlermeldung ausgegeben und das Script beendet.

4. `apt update` und `DEBIAN_FRONTEND=noninteractive apt install -y …`

Diese Befehle aktualisieren die Paketlisten (`apt update`) und installieren dann erforderliche Pakete in nicht-interaktiver Mode (`DEBIAN_FRONTEND=noninteractive`). Die Option `-y` bestätigt automatisch alle Fragen, um eine interaktive Eingabe zu vermeiden.

5. `systemctl daemon-reload` und `systemctl enable …`

Diese Befehle laden die systemd-Daemon-Konfiguration neu (`systemctl daemon-reload`) und aktivieren bestimmte Dienste, damit sie beim Systemstart automatisch gestartet werden (`systemctl enable …`).

6. `iptables -t nat -A POSTROUTING -o ${ETH_IFACE} -j MASQUERADE`

Dieser Befehl konfiguriert die iptables-Regeln, um den Netzwerkverkehr von Clients im WLAN auf das Ethernet-Interface (`${ETH_IFACE}`) zu masqueraden. Dies ermöglicht es Clients, über das Internet zuzugreifen.

7. `echo „nameserver 9.9.9.9“ > /etc/resolv.conf`

Dieser Befehl setzt den DNS-Server für das System auf `9.9.9.9`. Der `/etc/resolv.conf`-Eintrag wird direkt überschrieben.

8. `useradd –system –no-create-home –group nogroup mitm`

Dieser Befehl erstellt einen neuen Systembenutzer namens `mitm`, der für den Betrieb von mitmproxy erforderlich ist. Der Benutzer wird ohne Home-Verzeichnis erstellt und der Gruppe `nogroup` hinzugefügt.

  • set -euo pipefail: Aktiviert Shell-Optionen für Fehlerbehandlung und Exit-Status.
  • read -rp "SSID für WLAN (default: InterceptorAP): " SSID: Liest den SSID des WLANs vom Benutzer ein.
  • if [ "${#WLAN_PASS}" -lt 8 ]; then: Prüft die Länge des WLAN-Passworts.
  • apt update und DEBIAN_FRONTEND=noninteractive apt install -y ...: Aktualisiert Paketlisten und installiert erforderliche Pakete.
  • systemctl daemon-reload und systemctl enable ...: Lädt systemd-Konfiguration neu und aktiviert Dienste.
  • iptables -t nat -A POSTROUTING -o ${ETH_IFACE} -j MASQUERADE: Konfiguriert iptables für Masquerading.
  • echo "nameserver 9.9.9.9" > /etc/resolv.conf: Setzt den DNS-Server.
  • useradd --system --no-create-home --group nogroup mitm: Erstellt einen Systembenutzer für mitmproxy.

Einrichtung eines WLAN-Access-Points mit MITM-Proxy

Das folgende Skript konfiguriert einen Linux-Server als WLAN-Access-Point mit einem transparenten MITM-Proxy. Der Benutzer wird aufgefordert, die erforderlichen Konfigurationsparameter wie SSID, Passwort und Ländercode einzugeben.

  • SSID für das WLAN (Standard: InterceptorAP)
  • Passwort für das WLAN (mindestens 8 Zeichen, Standard: geheim123)
  • Ländercode (2 Buchstaben, z.B. DE)
  • Netzwerkbasis für die WLAN-Clients (nur /24, z.B. 10.3.7.0)

Konfiguration des Access-Points

#!/bin/bash
set -euo pipefail

# Abfrage der Konfiguration
read -rp "SSID für WLAN (default: InterceptorAP): " SSID
SSID=${SSID:-InterceptorAP}

read -rp "Passwort für WLAN (min. 8 Zeichen, default: geheim123): " WLAN_PASS
WLAN_PASS=${WLAN_PASS:-geheim123}

if [ "${#WLAN_PASS}" -lt 8 ]; then
  echo "Passwort muss mind. 8 Zeichen haben."
  exit 1
fi

read -rp "WLAN-Land (2 Buchstaben, z.B. DE): " WLAN_COUNTRY
WLAN_COUNTRY=${WLAN_COUNTRY:-DE}

if ! [[ "$WLAN_COUNTRY" =~ ^[A-Z]{2}$ ]]; then
  echo "Ungültiger Ländercode. Beispiel: DE"
  exit 1
fi

read -rp "Netzwerkbasis für WLAN-Clients (nur /24, z.B. 10.3.7.0): " WLAN_BASE
WLAN_BASE=${WLAN_BASE:-10.3.7.0}

# /24-Validierung
if [[ ! $WLAN_BASE =~ ^([0-9]{1,3}\.){3}0$ ]]; then
  echo "Ungültiger Netzwerkbereich. Format z.B. 10.3.7.0 (nur /24 erlaubt)."
  exit 1
fi

Installation der erforderlichen Pakete

apt update
DEBIAN_FRONTEND=noninteractive apt install -y \
  hostapd dnsmasq iptables-persistent netfilter-persistent dhcpcd5 \
  python3-pip libffi-dev libssl-dev

pip3 install --break-system-packages --upgrade mitmproxy

Konfiguration des MITM-Proxys

cat >/etc/systemd/system/mitmweb.service <<'EOF'
[Unit]
Description=Transparent MITMWeb Proxy
After=network.target
[Service]
ExecStart=/usr/local/bin/mitmweb \
  --mode transparent \
  --showhost \
  --web-port 8081 \
  --listen-host 0.0.0.0 --web-host 0.0.0.0 \
  --ssl-insecure \
  --set confdir=/var/lib/mitmproxy
User=mitm
Group=nogroup
Restart=always
[Install]
WantedBy=multi-user.target
EOF

Nach der Ausführung des Skripts ist der WLAN-Access-Point mit dem MITM-Proxy konfiguriert und startet automatisch nach einem Neustart. Der Benutzer kann den Proxy unter http://<LAN-IP>:8081 erreichen.

Ähnliche Themen