diff --git a/pages/de/extras/device_inspections.txt b/pages/de/extras/device_inspections.txt new file mode 100644 index 0000000..8607fe0 --- /dev/null +++ b/pages/de/extras/device_inspections.txt @@ -0,0 +1,388 @@ +====== Geräteuntersuchungen mit mitmproxy/wireshark und anderen cleveren Tools ====== + +Dieses Tutorial soll dir helfen, deine Geräte genauer unter die Lupe zu nehmen. Schau dir an, was dein jeweiliges Gerät/Software auf deinem Server, Telefon und Desktop anstellt.\\ +Unten findest du eine kurze Beschreibung und den Link zur Website der Software, die wir hier verwenden. + +\\ +[[https://mitmproxy.org/|mitmproxy]] ist dein Schweizer Taschenmesser für Debugging, Tests, Datenschutzmessungen und Penetrationstests. Es kann verwendet werden, um Webverkehr wie HTTP/1, HTTP/2, WebSockets oder andere SSL/TLS-geschützte Protokolle abzufangen, zu inspizieren, zu modifizieren und wiederzugeben. Du kannst eine Vielzahl von Nachrichtentypen, von HTML bis Protobuf, aufbereiten und dekodieren, bestimmte Nachrichten on-the-fly abfangen, sie verändern, bevor sie ihr Ziel erreichen, und sie später an einen Client oder Server zurückspielen. + +\\ +[[https://www.wireshark.org/|wireshark]] ist ein Netzwerk- und Paketanalyseprogramm. Ein Netzwerk-Paketanalyseprogramm stellt die erfassten Paketdaten so detailliert wie möglich dar.\\ +Man kann sich einen Netzwerk-Paketanalyseprogramm als ein Messgerät vorstellen, mit dem man untersuchen kann, was in einem Netzwerkkabel vor sich geht, so wie ein Elektriker ein Voltmeter verwendet, um zu untersuchen, was in einem Stromkabel vor sich geht (natürlich auf einer höheren Ebene).\\ +In der Vergangenheit waren solche Tools entweder sehr teuer, proprietär oder beides. Mit dem Einsatz von Wireshark hat sich das jedoch geändert. Wireshark ist kostenlos erhältlich, ist Open Source und ist einer der besten Paketanalyseprogramm, die heute verfügbar sind.\\ + +\\ +[[https://frida.re/|frida]] ist ein dynamisches Code-Instrumentierungs-Toolkit. Mit ihm kannst du JavaScript-Schnipsel oder deine eigene Bibliothek in native Apps auf Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD und QNX einfügen. Frida bietet dir auch einige einfache Tools, die auf der Frida-API basieren. Diese können so verwendet werden, wie sie sind, auf Ihre Bedürfnisse angepasst werden oder als Beispiele für die Verwendung der API dienen. + +\\ +[[https://github.com/rofl0r/proxychains-ng|proxychain-ng]] ist ein Hook-Preloader, der es erlaubt, den TCP-Verkehr bestehender dynamisch gelinkter Programme über einen oder mehrere SOCKS- oder HTTP-Proxys umzuleiten. + +\\ +[[https://tsocks.sourceforge.net/|tsocks]] bietet einen transparenten Netzwerkzugang über einen SOCKS Version 4 oder 5 Proxy (normalerweise auf einer Firewall). tsocks fängt die Aufrufe von Anwendungen zum Aufbau von TCP-Verbindungen ab und leitet sie bei Bedarf transparent weiter. + +\\ +[[https://www.tcpdump.org/|tcpdump]] ist ein leistungsfähiger Befehlszeilen-Paketanalyseprogramm; und libpcap, eine portable C/C++-Bibliothek zur Erfassung des Netzwerkverkehrs. + +\\ +[[https://github.com/emanuele-f/PCAPdroid|PCAPdroid]] ist eine datenschutzfreundliche Open-Source-Anwendung, mit der du die von anderen Apps auf deinem Gerät hergestellten Verbindungen verfolgen, analysieren und blockieren kannst. Außerdem kannst du damit einen PCAP-Dump des Datenverkehrs exportieren, HTTP inspizieren, TLS-Datenverkehr entschlüsseln und vieles mehr! + +PCAPdroid simuliert ein VPN, um den Netzwerkverkehr ohne Root zu erfassen. Es verwendet keinen entfernten VPN-Server, sondern die Daten werden lokal auf dem Gerät verarbeitet. + +\\ + +===== mitmproxy ===== + +\\ +==== Paket ==== + + +pacman -S mitmproxy + + +\\ +==== Firewall ==== + +Öffne Port ''1080'' für ''TCP'' und ''UDP'' Protokoll. + +Siehe auch [[/de/server/services/firewalld#selbst_erstellen|firewalld]] und erstelle einen neuen Service namens ''mitmproxy''. + +\\ +==== Start via ... ==== + +Wenn du eine Webansicht bevorzugst, benutze ''mitmweb'' anstelle von ''mitmproxy'' in dem Befehl. + +\\ +=== socks5 === + + +MITMPROXY_SSLKEYLOGFILE="$HOME/.mitmproxy/sslkeylogfile.txt" mitmproxy --mode socks5 --showhost -w +output.mitm + + +\\ +=== WireGuard === + +Dies ist praktisch, wenn du auch schon [[/de/server/services/wireguard|wireguard]] installiert hast. + + +MITMPROXY_SSLKEYLOGFILE="$HOME/.mitmproxy/sslkeylogfile.txt" mitmproxy --mode wireguard --listen-port 1080 --showhost -w +output.mitm + + +\\ +==== .bashrc alias ==== + +Im Folgenden findest du ein Beispiel für deine ''.bashrc''. Verwende einfach ''setproxy'', ''setproxy-wg'' und ''unsetproxy''. + + +# Set socks5 Proxy +function setproxy() { + sudo firewall-cmd --add-service=mitmproxy --zone=home + echo "Start mitmproxy on `date`" + MITMPROXY_SSLKEYLOGFILE="$HOME/.mitmproxy/sslkeylogfile.txt" mitmproxy --mode socks5 --showhost -w +output.mitm +} + +# Set WireGuard Proxy +function setproxy-wg() { + sudo firewall-cmd --add-service=mitmproxy --zone=home + echo "Start mitmproxy on `date`" + MITMPROXY_SSLKEYLOGFILE="$HOME/.mitmproxy/sslkeylogfile.txt" mitmproxy --mode wireguard --listen-port 1080 --showhost -w +output.mitm +} + +# Unset Proxy +function unsetproxy() { + echo "Stopped mitmproxy on `date`" + sudo firewall-cmd --remove-service=mitmproxy --zone=home + unset MITMPROXY_SSLKEYLOGFILE +} + + +\\ +===== Firefox einrichten und Zertifikate herunterladen ===== + + - Um die mitmproxy-Zertifikate herunterzuladen und Webseiten zu überprüfen, installiert man am besten das [[https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search|Firefox Multi-Account Containers]] Addon und erstellt einen neuen Container mit dem Namen z.B. ''%%proxy%%'' und fügt unter Advanced proxy settings den folgenden Link ''%%socks://$mitmproxy_ip:1080%%'' hinzu.\\ Auf diese Weise kannst du nur die neue Proxy-Registerkarte öffnen, anstatt Firefox als Ganzes mit dem Proxy zu verbinden.\\ Wenn du jedoch den gesamten Firefox bevorzugst, folge Option a unten:\\ \\ + - Gehe zu ''about:preferences#general'' und suche nach ''proxy'' oder scroll runter zu dem button ''Network Settings''. + - {{:de:extras:socks5.png?direct&1000|}}\\ \\ + - Gehe zu http://mitm.it/ und lade das Zertifikat für dein spezielles Gerät herunter. + +\\ +==== Zertifikat(e) installieren ==== + +Folge [[/de/server/services/ssl#installation_des_root-zertifikats_auf_allen_geraeten|ssl]] und benutze ''mitmproxy-ca-cert.pem'' anstatt ''rootCA.pem''. + +\\ +===== Proxychains-ng / tsocks ===== + +Du hast zwei Möglichkeiten, wenn das eine oder das andere aus irgendeinem Grund nicht funktionieren sollte. + +\\ +==== Pakete ==== + + +pacman -S proxychains-ng tsocks + + +\\ +==== conf ==== + + +nano /etc/proxychains.conf + + + +#socks4 127.0.0.1 9050 +socks5 $mitmproxy_ip 1080 + + + +nano /etc/tsocks.conf + + + +server = 127.0.0.1 +server_port = 1080 +server_type = 5 +default_user = "" +default_pass = "" + + +\\ +==== Beispiel ==== + + +proxychains $SOFTWARE + + + +export LD_PRELOAD=/lib/libtsocks.so +tsocks $SOFTWARE + + +\\ +===== Wireshark ===== + +Wenn du es vorziehst, Wireshark zur Entschlüsselung zu verwenden, füge ''SSLKEYLOGFILE'' zu Wireshark TLS hinzu. Zum Entschlüsseln via mitmproxies-Zertifikate. + +\\ +==== Paket ==== + + +pacman -S wireshark-qt + + +\\ +==== SSL/TLS ==== + +Gehe zu ''Edit'' -> ''Preferences'' -> ''Protocols'' -> ''TLS'' -> ''(Pre)-Master-Secret log filename'' und füge die Datei hinzu, die sich unter ''~/.mitmproxy/sslkeylogfile.txt'' befinden sollte. + +\\ +==== MAP ==== + +Auf diese Weise kannst du leicht sehen, mit welchen Geräten/Software du eine Verbindung herstellst. Die Übersicht wird auf einer Weltkarte angezeigt (siehe Bild unten). +Du brauchst 3 Dateien in **einem Ordner**: + + - GeoLite2-ASN.mmdb + - GeoLite2-City.mmdb + - GeoLite2-Country.mmdb + +Du kannst sie von https://www.maxmind.com/ herunterladen. Dazu musst du dich registrieren.\\ +Danach findest du diese Dateien unter //__GeoIP2 / GeoLite2__// -> //__Download Files__// + +Extrahiere die Dateien, starte Wireshark und wähle //__Edit__// -> //__Preferences (Ctrl+Shift+P)__// -> //__Name Resolution__// -> //__Enable IP geolocation__// und klicke auf MaxMind database directories //__Edit...__// und wähle den Pfad, in dem sich die extrahierten Dateien befinden. + +Der Screenshot unten zeigt eine Windows 11 VM, die auf einem proxmox Server läuft: + +{{:en:extras:windows11-map.png?direct&1200|}} + +\\ +===== Überprüfe IoT, TV,... Geräte mit Wireshark und ... ===== + +Die folgende Option kann eigentlich mit jeder ssh-Verbindung verwendet werden. Der Benutzer muss lediglich die Erlaubnis haben, tcpdump zu benutzen oder man verwendet ''-t'' und stellt ''sudo'' vor die Befehle (''ssh -t server "sudo ..."''). Der letzte wichtige Befehl funktioniert jedoch nicht auf diese Weise. Der einfachste Weg ist, gleich einen Benutzer mit den richtigen Rechten anzulegen!\\ + +Diese Option beinhaltet keine Entschlüsselung über mitmproxy/wireshark, ist aber dennoch nützlich für die Überprüfung von IoT-Geräten usw., bei denen z. B. die Installation von mitmproxy-Zertifikaten nicht möglich ist. Dennoch kann es dir einen guten Überblick verschaffen, mit wem das Gerät kommuniziert und ob deine Firewall/DNS-Blockliste korrekt eingerichtet ist oder nicht. + +Wenn du nicht in der Lage sein solltest, den Namen und die IP-Adresse deines Geräts herauszufinden, kannst du auch die Ping-Sweep-Option von nmap ausprobieren - ''sudo nmap -sn 192.168.1.0/24''. + +\\ +==== OpenWrt ==== + +Liste der verbundenen Geräte und der zugehörigen IP: + +ssh openwrt "cat /tmp/dhcp.leases | awk {'print\$3,\$4'}" + + +Wenn du mehrere Schnittstellen (vlans, ...) hast, prüfe mit: + + +ssh openwrt "ip -o addr show | grep global | awk '{print\$4,\$2}'" + + +Erstelle einen Piped-Namen, starte Wireshark und führe tcpdump in Echtzeit aus. + +mkfifo openwrt.fifo ; wireshark -k -i openwrt.fifo | ssh openwrt "tcpdump -i wonder-lan host Nasty-little-IoT -U -s0 -w -" > openwrt.fifo + + +Ändere die Schnittstelle (''-i'') ''wonder-lan'' und den Gerätenamen (''host'') ''Nasty-little-IoT''. + +\\ +==== OPNsense ==== + +Liste der verbundenen Geräte und der zugehörigen IP: + + +ssh opnsense "cat /var/dhcpd/var/db/dhcpd.leases | grep -E 'client-hostname|lease' | grep -B 1 'client-hostname' | sed 's/client-hostname//g;s/\"//g;s/;//g;s/{//g;s/lease //g;s/^--*//g;/^$/d;s/ //g'" + + +Wenn du mehrere Schnittstellen (vlans, ...) hast, prüfe mit: + + +ssh opnsense "ifconfig | grep -E 'UP|inet' | awk '{ print \$1, \$2 }' | sed -e 's/flags=.*$//g;s/://g;s/inet //g'" + + +Erstelle einen Piped-Namen, starte Wireshark und führe tcpdump in Echtzeit aus. + +mkfifo opnsense.fifo ; wireshark -k -i opnsense.fifo | ssh opnsense "tcpdump -i wonder-lan host Nasty-little-IoT -U -s0 -w -" > opnsense.fifo + + +Ändere die Schnittstelle (''-i'') ''wonder-lan'' und den Gerätenamen (''host'') ''Nasty-little-IoT''. Der Hostname muss eine IP-Adresse auf Opnsense sein. + +\\ +===== Android mit PCAPdroid ===== + +\\ +==== Download und installiere apk ==== + +Installiere PCAPdroid via [[en:phone:apps:f-droid|F-Droid]] - https://f-droid.org/de/packages/com.emanuelef.remote_capture/. + +\\ +==== mitmproxy socks5 ==== + +Du musst das [[#zertifikat(e)_installieren|mitmproxys-Zertifikat]] auf Deinem Android-Gerät importieren. + +Um [[#start_via_socks5|mitmproxy socks5]] zu verwenden, gehe einfach zu: + + - //__Settings__// + - //__Traffic inspection__// + - //__SOCKS5__// + - Enable //__SOCKS5 redirection__// + - Add your ''$mitmproxy_ip'' under //__Proxy host__// + - Add port ''1080'' under //__Proxy port__// + - Go back to //__STATUS__// + - Click //__No dump__// + - Enable //__HTTP server__// + - Click on //__Ready__// + +\\ +==== Mit wireshark ==== + +Stelle sicher, dass du die [[#wireshark]]-Installation befolgt hast. + +Verbinde dich mit PCAPdroids HTTP-Server: + +curl -NLs http://$android_ip:8080 | wireshark -k -i - + + +\\ +===== Windows 11 ===== + +\\ +==== WireGuard ==== + +Downloade [[https://www.wireguard.com/install/|WireGuard installer]].\\ +Erstelle unter Windows eine Datei ''wireguard.conf'' mit der Ausgabe von mitmweb oder mitmproxy (Shift+E) und importiere sie in wireguard. + +\\ +==== socks ==== + +Aus irgendeinem Grund hat das Socks-Setup auf einer Windows 11 VM nicht funktioniert, zumindest nicht auf dieser Seite des Bildschirms. Aber probier es mal aus, es sollte eigentlich mit den folgenden Konfigurationen funktionieren: + +Gehe zu //__Einstellungen__// -> //__Netzwerk & Internet__// -> //__Proxy__// -> (Manuelle Proxy-Einrichtung) //__Verwendung eines Proxy-Servers__// -> //__Ein__// -> //__Proxy-IP-Adresse__// (deine ''$mitmproxy_IP'') -> //__Port__// (''1080''). + +Für ''$mitmproxy_IP'' versuche auch ''socks=$mitmproxy_IP'' oder ''%%http://socks=$mitmproxy_IP%%''. + +\\ +==== Zertifikat/e ==== + +Nach der Verbindung mit WireGuard oder socks gehe auf https://mitm.it/#Windows und befolge die dortigen Anweisungen.\\ + +Wenn du bestimmte Dinge auch über den Firefox-Browser überprüfen möchtest, musst du auch das Android-Zertifikat herunterladen und direkt im Firefox-Browser installieren. +Gehe dazu auf //__Einstellungen__// und suche nach ''Zertifikate'' und klicke auf //__Zertifikate anzeigen__// -> //__Autoritäten__// -> //__Importieren...__// und wähle die .crt-Datei aus. + +\\ +===== macOS / iOS ===== + +Leider steht kein Gerät/VM für ein "Apple Tutorial" zur Verfügung. + +Es gibt nur weitere Links: + +macOS:\\ +[[https://support.apple.com/en-nz/guide/mac-help/mchlp2591/mac|socks config]]\\ +[[https://mitm.it/#macOS|install certificate]] + +iOS:\\ +[[https://proxyway.com/guides/configure-proxy-iphone|socks config]]\\ +[[https://mitm.it/#iOS|install certificate]]\\ + +\\ +===== frida ===== + +\\ +==== Pakete ==== + + +pacman -S python-pip android-tools + + +\\ +==== Umgebung erstellen ==== + + +mkdir -p ~/env/frida +python -m venv ~/env/frida +~/env/frida/bin/pip install --upgrade frida-tools objection setuptools + + +[[https://github.com/sensepost/objection|Frida-Modul Objection]] ist ein Laufzeit-Toolkit zur Untersuchung mobiler Anwendungen, das auf Frida basiert und dir hilft, die Sicherheit deiner mobilen Anwendungen zu bewerten, ohne dass ein Jailbreak erforderlich ist. + +\\ +==== Android - Pinning mit frida-server deaktivieren ==== + + +Dein Gerät muss in der Lage sein, den [[/de/phone/operating_systems/android#ueberpruefe_deinen_bootloader|Bootloader zu entsperren]] und [[/de/phone/apps/magisk|root auszuführen]]! + +Was ist [[https://de.wikipedia.org/wiki/HTTP_Public_Key_Pinning|ssl pinning]]? + +Lade die neueste Version von [[https://github.com/frida/frida/releases|frida-server]] für dein Gerät herunter. + +Prüfe, welche Architektur du verwendest mit "adb shell getprop ro.product.cpu.abi". + + +wget https://github.com/frida/frida/releases/download/16.2.1/frida-server-16.2.1-android-arm64.xz +unxz frida-server*.xz && mv frida-server* disable-pinning +adb push disable-pinning /data/local/tmp/ +adb root +adb shell "chmod 755 /data/local/tmp/disable-pinning" +adb shell "/data/local/tmp/disable-pinning &" + + +Einige Anwendungen sind möglicherweise in der Lage, den Speicherort des frida-Servers zu erkennen. Eine Umbenennung der frida-server-Binärdatei in einen zufälligen Namen oder das Verschieben an einen anderen Ort wie /dev kann Abhilfe schaffen. + +\\ +=== Alle Apps auflisten und App ohne Pinning starten === + + +~/env/frida/bin/frida-ps -Uai + + +Start fdroid: + +~/env/frida/bin/objection --gadget "org.fdroid.fdroid" explore --startup-command 'android sslpinning disable' + + +\\ +==== Uninstall ==== + + +adb shell "rm /data/local/tmp/disable-pinning" +~/env/frida/bin/pip uninstall frida-tools objection +pacman -Rsn python-pip +rm -rf ~/env/frida + \ No newline at end of file