Benutzer-Werkzeuge

Webseiten-Werkzeuge


pwnagotchi

Notizen zum pwnagotchi auf Raspberry Pi 3B+

Leider habe ich bisher weder ein unterstütztes eInk-Display noch einen Pi-Zero, daher hier meine Notizen zu Experimenten auf dem Raspberry Pi 3B+.

Ziel ist nicht mit der onboard-Karte zu arbeiten sondern mit einem Alfa-USB-Stick, das hat vor allem mit den Instabilitäten des nexmon Patches zu tun.

Der Anfang mit Pi3B+ onboard WLAN NIC

Genau prüfen mit diskutil list welche Disk denn nun die richtige ist! Die Disk vor dem dd-Kommando mit sudo diskutil umountdisk /dev/diskX aushängen!

mbp:pwnagotchi BennyE$ sudo dd if=pwnagotchi-raspbian-lite-v1.3.0.img of=/dev/rdisk3 bs=1024k
5168+0 records in
5168+0 records out
5419040768 bytes transferred in 194.591458 secs (27848297 bytes/sec)

Das MBP hängt die Disk danach wieder ein und man kann auf /boot zugreifen um dort eine config.yml zu erstellen. Ich fange mit folgendem Inhalt an:

main:
  name: 'moppel'
  whitelist:
    - 'eigene SSID'
  plugins:
    grid:
      enabled: false
      report: false
      exclude:
        - 'eigene SSID'

ui:
    display:
      enabled: false
      type: 'waveshare_2'
      color: 'black'

Wir lassen „moppel“ nun erst einmal (in meinem Fall mit angeschlossenen LAN-Kabel) booten, damit die Keys erzeugt werden und das System sich einrichtet.

An der Konsole von „moppel“ geben wir eine Route für unser Client-Netz manuell mit:

Eine kleine Herausforderung ist vielleicht die englische Tastatur, mir ist es bisher nicht gelungen diese zu ändern (via SSH hat man dieses Problem dann aber auch nicht). „Shift-ö“ ⇒ „:“, „ß“ ⇒ „-“, „-“ ⇒ „/“

sudo ip route add 192.168.11.0/24 via 192.168.2.10

Im Browser kann man nun auf „moppel“ auf (in meinem Fall) http://192.168.2.178:8080 zugreifen.

Solange „moppel“ in MANU Modus läuft, tut es nichts. Ein Klick auf „Restart in AUTO mode“, startet nur den Dienst neu - also nicht den kompletten Pi.

Um die Route für den nächsten Start „bootfest“ zu machen, habe ich folgende Änderung vorgenommen: sudo cat /etc/network/interfaces.d/eth0-cfg

allow-hotplug eth0
iface eth0 inet dhcp

post-up ip route add 192.168.11.0/24 via 192.168.2.10

Leider ist der nexmon Patch, der es erlaubt mit der onboard-WLAN-Karte des Raspberry Pi in den „Monitor Mode“ zu wechseln, nicht allzu stabil. Dies äußert sich dadurch dass man in der Ausgabe von dmesg nach kurzer Zeit folgendes sieht:

[ 2067.191895] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53360, -110
[ 2070.231937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53364, -110
[ 2073.271945] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53368, -110
[ 2076.311937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53372, -110
[ 2079.351936] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53376, -110
[ 2082.391939] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53380, -110
[ 2085.431935] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53384, -110
[ 2088.471945] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53388, -110
[ 2091.031937] brcmfmac: brcmf_proto_bcdc_query_dcmd: brcmf_proto_bcdc_msg failed w/status -110
[ 2091.031951] brcmfmac: brcmf_cfg80211_get_channel: chanspec failed (-110)
[ 2093.591944] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=53392, -110
[ 2096.151976] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4097, -110
[ 2099.191955] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4098, -110
[ 2102.231913] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4099, -110
[ 2105.271939] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4100, -110
[ 2108.311892] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4101, -110
[ 2111.351933] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4102, -110
[ 2114.391952] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4103, -110
[ 2117.431978] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4104, -110
[ 2120.471943] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4105, -110
[ 2123.511934] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4106, -110
[ 2126.551937] brcmfmac: brcmf_cfg80211_nexmon_set_channel: Set Channel failed: chspec=4107, -110

Dieser Zustand lässt sich nur durch einen (regelmäßigen) Reboot beheben. (Aus diesem Grund wollte ich auch die Route bootfest machen.)

Betrieb des pwnagotchi mit externen WLAN-USB-Adapter

Da ich leider nicht das erste Mal erlebe dass die NEXMON Patches auf dem Pi3B+ nicht sauber funktionieren, werden wir dann in einem folgenden Schritt die onboard-Wireless-Karte deaktivieren und den Alfa-Stick einbinden.

Dafür sind einige Änderungen notwendig, die der Author des pwnagotchi (@evilsocket) vermutlich ablehnen würde, daher sehe ich das hier mal als privaten Workaround an.

Ich arbeite gerne mit dem Alfa AWUS036ACH Dual Band USB Adapter AC1200 und im pwnagotchi Image ist bereits der modifizierte Treiber mit Unterstützung für den „Monitor Mode“ enthalten.

Notwendige Änderungen:

  1. Deaktivieren der Raspberry onboard-WLAN-Schnittstelle
  2. Erstellung einer udev Regel um unseren Adapter beim Einhängen in „mon0“ umzubenennen
  3. Modifizierung der /usr/bin/pwnlib-Datei um unsere Änderung zu verwenden

pi@moppel:~ $ sudo vi /boot/config.txt

[all]
#dtoverlay=vc4-fkms-v3d
dtoverlay=dwc2
dtoverlay=spi1-3cs
dtparam=spi=on
dtparam=i2c_arm=on
dtparam=i2c1=on
gpu_mem=16
dtoverlay=pi3-disable-wifi

pi@moppel:~ $ sudo vi /etc/udev/rules.d/10-wlan.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:ca:a5:AA:BB", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="mon0"

pi@moppel:~ $ sudo vi /usr/bin/pwnlib

# starts mon0
start_monitor_interface() {
 # iw phy phy0 interface add mon0 type monitor && ifconfig mon0 up
  iw mon0 set type monitor && ip link mon0 up
}

Die obigen Änderungen sind notwendig, da der Alfa-Stick mit dem vom pwnagotchi vorgesehen Weg den Monitor Mode zu aktivieren nicht klarkommt und das pwnagotchi keine Daten sieht (keine SSIDs, keine Clients, nichts).

Bitte berücksichtigt dass dies wirklich nur ein Workaround ist, da die Datei beim nächsten Update seitens des Projekts überschrieben werden dürfte (und die manuelle Änderung der Datei /usr/bin/pwnlib damit wieder notwendig wird).

Verwendung von bettercap via CLI

Vorausgesetzt man beendet das pwnagotchi und bettercap, kann man sich in der Umgebung auf die Suche nach interessanten Netzen/Geräten machen.

sudo systemctl stop pwnagotchi
sudo systemctl stop bettercap

Bettercap für Wi-Fi

Bettercap starten

sudo bettercap -iface mon0

Wi-Fi Modul starten

wifi.recon on

Wi-Fi Liste anzeigen

wifi.show

Wi-Fi Netze in der Nähe assoziieren und PMKID auslesen

Dies ist eine bekannte Schwachstelle die eigentlich alle Hersteller geschlossen haben sollten. Leider ist das häufig nicht der Fall .. :(

wifi.assoc all

Wi-Fi Modul beenden

wifi.recon off

Bettercap für BLE

BLE Modul starten

ble.recon on

BLE Übersicht aller Geräte anzeigen

ble.show

BLE Detailansicht zu einem bestimmten Gerät

ble.enum <MAC ADDR>

BLE Modul beenden

ble.recon off
pwnagotchi.txt · Zuletzt geändert: 2019/11/24 18:37 von benny