Benutzer-Werkzeuge

Webseiten-Werkzeuge


pwnagotchi

Dies ist eine alte Version des Dokuments!


Pwnagotchi

Auf dem Raspberry Zero mit Buster will ich Pwnagotchi installieren.

Pwnagotchi is an A2C-based “AI” powered by bettercap that learns from its surrounding WiFi environment in order to maximize the crackable WPA key material it captures (either through passive sniffing or by performing deauthentication and association attacks).

Nicht die Anleitung(en) aus dem internet nehmen. Bei mir kamen Fehlermeldungen.

golang

Mit „ sudo apt-get install golang “ wird im Raspberry golang in Version go1.11.6 linux/arm installiert. Dann kommt bei der bettercap Installation der Fehler „package crypto/ed25519: unrecognized import path „crypto/ed25519“ (import path does not begin with hostname)“). Es wird eine neuere Version benötigt, die man hiermit bekommt. Lösung ist hier beschrieben.

nano install_go_pi.sh

#!/bin/bash
cd $HOME
file='go1.17.6.linux-armv6l.tar.gz' # stand 11.01.2021, ehemals go1.17.2.linux-armv6l.tar.gz'
wget "https://golang.org/dl/$file"
sudo tar -C /usr/local -xvf "$file"
cat >> ~/.profile << 'EOF'
export GOPATH=$HOME/go
export PATH=/usr/local/go/bin:$PATH:$GOPATH/bin
EOF
source ~/.profile

bettercap

Install bettercap.

sudo apt-get -y install build-essential libpcap-dev libusb-1.0-0-dev libnetfilter-queue-dev

sudo mkdir /usr/local/bin/bettercap
cd /usr/local/bin/bettercap
go get github.com/bettercap/bettercap

sudo cp /home/pi/go/bin/bettercap /usr/bin/
sudo bettercap -eval "caplets.update; ui.update; quit"

default user/pass ändern in:
sudo nano /usr/local/share/bettercap/caplets/http-ui.cap  # für http
sudo nano /usr/local/share/bettercap/caplets/https-ui.cap # für https

sudo bettercap -caplet https-ui

--> braucht etwas, wegen der Zertifikate

pwngrid

Als nächstes braucht man pwngrid - was ein 4 Zeiler sein sollte. Im Endeffekt musste ich es wieder von den source kompilieren, da der Fehler

/usr/bin/pwngrid: ELF: not found

aufgetreten ist

wget "https://github.com/evilsocket/pwngrid/archive/refs/heads/master.zip"
unzip master.zip
cd pwngrid-master/
make
#sudo make install
#  Created symlink /etc/systemd/system/multi-user.target.wants/pwngrid.service 
#  → /etc/systemd/system/pwngrid.service.
# möglicherweise ist es dieser service, der nach dem Neustart meinen Rechner hängen lässt
# sudo /usr/local/bin/pwngrid -log /var/log/pwngrid.log -env /etc/pwngrid/pwngrid.conf -address 127.0.0.1:8666
cd build
sudo cp pwngrid /usr/bin
sudo pwngrid -generate -keys /etc/pwnagotchi # länger als 2 Minuten

pwnagotchi

Seufz, es gibt 1.5.5 statt 1.4.3 und nach dem Update komme ich nicht mehr auf den zero,… also alles nochmal. Nachdem ich gelesen habe, dass es da auch Probleme gibt, erst mal 1.5.3 und dann 1.5.5?

=== 1.5.3 ===:

wget "https://github.com/evilsocket/pwnagotchi/archive/v1.5.3.zip"
unzip v1.5.3.zip
cd pwnagotchi-1.5.3
# this will install the requirements and pwnagotchi itself
sudo apt-get -y install python3-pip libopenjp2-7 libtiff5 libatlas-base-dev fonts-dejavu fonts-dejavu-core
sudo pip3 install matplotlib==3.2.1 pandas==1.0.3 Werkzeug==1.0.1 # im original nachgeschaut
sudo pip3 install -r requirements.txt
sudo mv builder/data/etc/* .
sudo pip3 install .

sudo ip link set dev wlan1 down
sudo iw phy1 interface add mon0 type monitor
sudo ip link set dev mon0 up

sudo /usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
sudo /usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
sudo /usr/local/bin/pwnagotchi --debug

sudo cp /etc/pwnagotchi/default.toml /etc/pwnagotchi/config.toml
sudo nano /etc/pwnagotchi/config.toml
main.plugins.auto-update.enabled = false
ui.display.enabled = false
sudo rm -r /root/handshakes

=== 1.5.5 ===:

wget "https://github.com/evilsocket/pwnagotchi/archive/v1.5.5.zip"
unzip v1.5.5.zip
cd pwnagotchi-1.5.5
# this will install the requirements and pwnagotchi itself
sudo apt-get -y install python3-pip # sonst gehts erst gar nicht
sudo apt-get -y install libopenjp2-7 libtiff5 # behebt libopenjp2.so.7 und libtiff.so.5 problem
sudo apt-get -y install libatlas-base-dev # behebt libf77blas.so.3 problem in numpy
sudo apt-get -y install fonts-dejavu and fonts-dejavu-core # behebt fonts.init(config) problem
sudo pip3 install pandas==1.2.5
sudo pip3 install matplotlib==2.2.5
sudo pip3 install Werkzeug==0.16.1 # es gibt 2.0.2, da kommen beim start Fehler
sudo pip3 install -r requirements.txt
#da wird was installiert, was beim reboot hängt.
#systemfiles builder/data oder /etc/network/interfaces.d/' oder systemctl enable fstrim.timer
sudo mv builder/data/etc/* .
sudo pip3 install .
# mv builder/data/etc/network/interfaces.d # gefährliches erst mal raus
# mv builder/data/etc/systemd/system       # gefährliches erst mal raus
# in der interfaces.d/wlan0-cfg verbiegt er den normalen WLAN
# in system stehen die services drin

wenn alles an der richtigen stelle ist, werden die services wie folgt gestartet:

sudo /usr/bin/bettercap-launcher
sudo /usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
sudo /usr/bin/pwnagotchi-launcher

falls das nicht geht, weil dann ein JSON-Fehler kommt, muss man das Setzen des Monitor-Modes doch händisch machen

sudo ip link set dev wlan1 down
sudo iw phy1 interface add mon0 type monitor
sudo ip link set dev mon0 up

sudo iw dev # zeigt an, womit der mon0 gebunden ist
sudo iw dev mon0 del # löscht den monitor mode

Fehlermeldungen und mögliche Lösungen

Da nach einiger Zeit die Meldung kommt, dass AI nicht gestartet werden kann, habe ich folgendes probiert, da im image nur version 2.0.0 von mpi4py installiert war, und das nicht so einfach über „sudo pip3 install mpi4py==2.0.0“ installierbar war.

sudo apt-get install python3-dev
sudo apt install libopenmpi-dev
wget https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-2.0.0.tar.gz
tar -zxf mpi4py-2.0.0.tar.gz
cd mpi4py-2.0.0
rm mpi4py.MPI.c # SOLVED by deleting all .c files in all subfolders of mlpy that were created by Cython and were already included in the archive.
compilieren geht nicht, da er zu viel speicher braucht:
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE=512 # ist knapp, geht aber
sudo python3 setup.py build # oder mit --mpicc=/home/pi/mpich-install/bin/mpicc
sudo python3 setup.py install

sudo pip3 uninstall mpi4py
sudo pip3 freeze|grep mph # da sollte jetzt 2.0.0 raus kommen

sudo pip3 install opencv-python==3.4.3.18

sudo apt-get install libjasper-dev
sudo apt-get install libilmbase-dev libopenexr-dev libgstreamer1.0-dev # alle für libImath-2_2.so.23 ?
sudo apt-get install libilmbase23 # reicht wohl für libImath-2_2.so.23
sudo apt-get install ffmpeg # alles wegen libavcodec.so.58
sudo apt-get install libqtgui4 libqt4-test # wegen libQtGui.so.4

Mit meinen Änderungen kommen noch die 2 Meldungen, die daran liegen, dass die entsprechenden Dateien nicht kopiert wurden.

grep: /sys/class/net/usb0/operstate: No such file or directory
grep: /sys/class/net/eth0/operstate: No such file or directory

config

Aus /etc/pwnagotchi/default.toml die Zeilen nach /etc/pwnagotchi/config.toml kopieren. Passwörter und WLAN ändern in:

sudo nano /usr/local/share/bettercap/caplets/http-ui.cap
sudo nano /usr/local/share/bettercap/caplets/https-ui.cap
sudo nano /etc/pwnagotchi/config.toml
sudo nano /usr/local/share/bettercap/caplets/pwnagotchi-auto.cap # auch WLAN
sudo nano /usr/local/share/bettercap/caplets/pwnagotchi-manual.cap # auch WLAN

manuelles starten

Händisch alles erst mal startet:

sudo ip link set dev wlan1 down
sudo iw phy1 interface add mon0 type monitor
sudo ip link set dev mon0 up

sudo /usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
sudo /usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
sudo pwnagotchi --debug
http://192.168.178.32:8080

Wenn beim starten von pwnagotchi der Fehler erscheint, hat man kein Display und muss es in den Konfigs ausschalten

SPI = spidev.SpiDev(0, 0)

Requirement Probleme

Das Installieren der Requierements hat Probleme: tensorflow==1.13.1 (Getötet); tweepy==3.7.0 (no response) Die tensorflow info ist, dass 1.13.1 in debian stretch kompiliert wurde. Erst 1.14.0 tensorflow was compiled in debian buster for python 2.7 & 3.7. da ich aber selber kompiliere sollte das 'kein' Problem sein. Da der Download der wohl-Datei bei 99% abgebrochen ist, habe ich vielleicht ein unvollständiges File. Hier schreibt der Entwickler von pip was über den cache.

sudo pip3 --no-cache-dir  install tensorflow==1.13.1
sudo pip3 install tweepy==3.7.0

tweepy wurde jetzt klaglos installiert.

tensorflow hat wrapt 1.10.11 angemeckert - hat aber wohl nichts gemacht

Noch nicht ganz, jetzt kommt noch

import yaml
ModuleNotFoundError: No module named 'yaml'

sudo python3 -m pip install pyyaml==5.1 # ohne sudo geht es nicht, 5.1 steht doch im requirement!?

Successfully built pwnagotchi!

ok, und jetzt?

  1. sudo bettercap -caplet https-ui
  2. https://192.168.178.32/ (ip of raspberry zero)

nach anpassen der /usr/local/share/bettercap/caplets/pwnagotchi-manual.cap in die ich die https Sachen von der /usr/local/share/bettercap/caplets/https-ui.cap eingebaut habe, geht der Aufruf

  1. sudo bettercap -caplet pwnagotchi-manual -iface wlan0
  2. Anmeldung mit pwnagotchi/pwnagotchi und der API-Url: https://192.168.178.32:8081/api

Ethernet Gadget - mit Raspberry Zero über USB kommunizieren

Adafruit hat einen interessanten Artikel. Zusätzlich habe ich mir das angeschaut.

sudo nano /boot/config.txt
  dtoverlay=dwc2
sudo nano /boot/cmdline.txt
  modules-load=dwc2,g_ether (nach rootwait einfügen)
sudo nano /etc/modules
  dwc2
  g_ether
sudo nano /etc/dhcpcd.conf
  interface usb0
    static ip_address=192.168.7.2/24
    nohook wpa_supplicant

Nach dem Neustart sollte im macOS unter Netzwerk ein „RNDIS/Ethernet Gadget“ auftauchen. Dem muss man eine Manuelle IP/Maske/Router geben 192.168.7.1/255.255.255.0/192.168.7.1

ssh pi@192.168.7.2

Achtung, dann geht das normale Internet vom Mac nicht mehr! Man muss den Eintrag nach unten verschieben, dann geht WLAN wieder. Das gleiche Problem am Raspberry Pi. Dort ist die usb0 route vorrangig. Man kann sie bis zum Neustart löschen mit (erst anzeigen) „route -n“ und dann „sudo route del default gw 10.0.0.1“

pwnagotchi stürzt immer ab

das lag daran, dass wlan1 sich immer verbunden hat. auch ein wlan1 down in den scripts, die den monitor mode aktivieren hat nicht geholfen. Ergebnis brachte

sudo nano /etc/dhcpcd.conf 
denyinterfaces wlan1

re4son kernel für monitor mode vom wlan0

ich habe zwar eine zweite Antenne, aber ich will es noch mal mit re4son probieren. Beim letzten versuch bin ich kläglich gescheitert.

sudo su
cd /usr/local/src
wget  -O re4son-kernel_current.tar.xz https://re4son-kernel.com/download/re4son-kernel-current/
tar -xJf re4son-kernel_current.tar.xz
cd re4son-kernel_4*
./install.sh

Danach checken, ob ich jetzt monitor-mode machen kann

iw phy phy0 info

dann eine bridge installieren, um weiter sowohl monitor-mode als auch normalen zugriff über WLAN zu haben

sudo ip link set dev wlan1 down
sudo iw phy1 interface add mon0 type monitor
sudo ip link set dev mon0 up
oder
sudo iw phy phy0 interface add mon0 type monitor
sudo ifconfig mon0 up

um es dauerhaft einzubinden muss es in

/etc/rc.local

sudo chmod +x /usr/bin/bettercap-launcher
sudo systemctl start pwngrid-peer
sudo systemctl start bettercap

Händisch alles erst mal startet:

sudo /usr/bin/pwngrid -keys /etc/pwnagotchi -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface mon0
sudo /usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface mon0
sudo pwnagotchi --debug
http://192.168.178.32:8080

Den Fehler: „[BUG] pwnagotchi numpy error #1015“ kann man lösen, wennn man libatlas-base-dev installiert.

sudo apt-get install libatlas-base-dev

Zugriffe bei mir:

ssh pi@192.168.178.32 - wlan0
ssh pi@192.168.7.2    - usb0

Jetzt läuft alles über wlan0/mon0. Man braucht die USB-Verbindung nicht.

Bluetooth Verbindung zum Android Telefon

Auch hier eine längere Geschichte, die ich aber dieses Mal kurz halte. Bei mir funktionierte es erst, nachdem ich sowohl persönlichen Hotspot als auch Bluetooth-Tethering am Smartphone angestellt hatte. Ausserdem musste ich die IP-Adresse des Web-UI (natürlich) auf die IP-Adresse einstellen, mit der ich mich mit dem Smartphone verbinde. In meinem Fall 192.168.44.45. Sicherheitshalber auch share_internet auf true gestellt.

was mache ich mit den hashcats

Zum einen wurde ein Ordner unter Root angelegt und das gab Probleme mit bettercap, der es wohl in eine Datei schreiben wollte.

Dann habe ich die Hashcat-Utilities eingespielt,

sudo apt install hashcat-utils
bzw.
wget "https://github.com/hashcat/hashcat-utils/archive/refs/tags/v1.9.tar.gz"
sudo tar -C /usr/local -xvf v1.9.tar.gz
cd /sr/local/hash*/src
sudo make
sudo cp *bin ../bin
/usr/local/hashcat-utils-1.9/bin/cap2hccapx.bin handshakes handshakes.hccapx

um mittels cap2hccapx.bin die Hashcat-Datei aufzuteilen. Bei meinem Netz habe ich dann mittels „aircrack-ng -a2 -b 9C:5C:8E:C9:AB:C0 -w mypwdfile.txt hashcat.cap“ festgestellt, dass es geht, nachdem ich in mypwdfile.txt mein Passwort eingetragen habe ;-) Mehr Informationen dazu habe ich hier gefunden.

Probleme zum Schluß

Der Raspberry Zero ist mit dem ganzen Scannen und Publisher so ausgelastet, dass man mit der Konsole dann kaum mehr was machen kann, auch nicht, wenn man sich per USB aufschaltet. Die Reaktionszeit ist unterirdisch. Leider funktioniert auch das WiFi nicht zuverlässig und bricht ab oder wird erst gar nicht aufgebaut.

Ich werde es noch mal mit einer externen Antenne versuchen.

externe Antenne

beisst sich mit usb - man muss alles was mit usb zu tun hat wieder ausbauen

Auch nachdem ich vermutlich alles rückgängig gemacht habe, friert der Rechner nach ca. 1 Minute ein, nachdem ich den TP-Link WN722N WiFi-Stick eingesteckt habe. Also mal wieder alles platt machen…

Vielleicht beisst es sich auch irgendwo mit dem dhcp, dem dmasq oder dem re4on-kernel, die ich bei der zero-installation, bzw. weiter oben gemacht hab.

Da sie am USB-Anschluss angeschlossen wird, muss man die Änderungen, um mit dem USB am Rechner zu kommunizieren wahrscheinlich rückgängig machen.

sudo nano /etc/dhcpcd.conf
#interface usb0
#    static ip_address=192.168.7.2/24
#    nohook wpa_supplicant

Dann den Monitor-Mode der zweiten Antenne einschalten, und die Einstellung in der /etc/rc.local noch anpassen

sudo iw dev # zeigt, welches device die 2te Antenne ist (mal 1, mal 4 bei mir)
sudo nano /etc/rc.local
sudo iw phy phy1 interface add mon0 type monitor
sudo ifconfig mon1 up

Dann noch den mon0 löschen

sudo iw dev mon0 del

Stand Januar 2022

pwnagotchi.1642953551.txt.gz · Zuletzt geändert: 2022/01/23 15:59 von varnholt