Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
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
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
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
Leider auch
[2022-01-12 21:52:09,934] [ERROR] error while starting AI (numpy.ndarray size changed, may indicate binary incompatibility. Expected 44 from C header, got 40 from PyObject)
Lösung
sudo pip3 install numpy==1.20.2 sudo apt-get install python-mpi4py
Meldung bei der Installation und weitere Fehlermeldungen, die mit den oben zusätzlich eingebauten installs verschwinden:
pandas 1.3.5 has requirement numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", but you'll have numpy 1.17.2 which is incompatible. matplotlib 3.5.1 has requirement pillow>=6.2.0, but you'll have pillow 5.4.1 which is incompatible. Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-req-build-xl4h6i4p/
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 airmon-ng start wlan1 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 wlan1mon sudo /usr/bin/bettercap -no-colors -caplet pwnagotchi-auto -iface wlan1mon 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?
- sudo bettercap -caplet https-ui
- 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
- sudo bettercap -caplet pwnagotchi-manual -iface wlan0
- 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“
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, 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
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