Alle Passwörter aus der FRITZ!Box auslesen

FRITZ! Logo

Wie ich in meinem Artikel beschrieben habe, ist AVM gerade dabei, die Sicherheit der FRITZ!Boxen zu erhöhen. Unter anderem wird die „debug.cfg“ entfernt und das kleine Tool „allcfgconv“ wurde überarbeitet. Mit „allcfgconv“ lassen sich Passwörter und Zugangsdaten aus den Konfigurationsdateien der FRITZ!Box auslesen. In der neuen Version wurde der c-Switch entfernt, wodurch die verschlüsselten Passwörter nicht mehr im Klartext ausgegeben werden können.

Für dieses Problem existiert aber ein relativ einfacher Workaround, den ich euch kurz aufzeigen möchte. Es wird lediglich ein Telnet- bzw. SSH-Zugang zur FRITZ!Box sowie eine ältere Version von „allcfgconv“ benötigt.

Achtung: Es ist möglich, dass AVM diesen Workaround mit zukünftigen Versionen ebenfalls blockieren wird.

  1. Wenn ihr Glück habt, findet ihr noch eine entsprechende Firmware-Version bei AVM: ftp://service.avm.de/Downgrade/ oder http://download.avm.de/fritz.box/. Wenn nicht müsst ihr euch die Firmware von wo anders besorgen.
  2. Anschließend muss die .image-Datei mit 7-Zip geöffnet und zum Pfad „.\var\tmp\“ navigiert werden. Dort interessiert uns die Datei „kernel.image„. Wenn das Entpacken nicht funktioniert, solltet ihr die neueste 7-Zip-Beta-Version verwenden!
  3. Die Datei wiederrum entpacken und anschließend öffnen. Im Ordner „bin“ befindet sich das von uns gesuchte Programm „allcfgconv„. Allerdings handelt es sich bei der Datei „kernel.image“ um das Speichersystems der FRITZ!Box, welches mit dem Dateisystem „squashfs“ formatiert ist. Daher ist das Entpacken nicht ganz so einfach. Weitere Infos findet ihr in diesem Foren-Thread (danke an Speedy!).
  4. Das Programm am besten auf einen USB-Stick kopieren und an die FRITZ!Box anschließen.
  5. Via Telnet oder SSH auf die FRITZ!Box verbinden.
  6. Jetzt muss die neuere Version von „allcfgconv“ mit der älteren Version „übermounted“ werden:
    mount -o bind /var/media/ftp/USB-STICK/allcfgconv /bin/allcfgconv
  7. Gewünschten Befehl aus der Liste weiter unten ausführen. Schon werden alle Passwörter wieder im Klartext angezeigt.
  8. Um die Änderung rückgängig zu machen einfach folgenden Befehl ausführen:
    umount /bin/allcfgconv

Befehle zum Passwörter auslesen

Passwort für Anmeldung am Webinterface:

allcfgconv -C ar7 -c -o - | sed -n -e '/webui/,/}/p' | sed -n -e '/username/,/password/p'

Zugangsdaten DSL:

allcfgconv -C ar7 -c -o - | sed -n -e '/targets/,/}/p' | sed -n -e '/local/,/}/p'| sed -n -e '/username/,/passwd/p'

Zugangsdaten VoIP:

allcfgconv -C voip -c -o - | sed -n -e '/ua/,/}/p' | sed -n -e '/username/,/registrar/p'

Alle Passwörter aus der „ar7.cfg“ entschlüsseln und nach „/var/tmp“ kopieren:

allcfgconv -C ar7 -c -o - > /var/tmp/ar7.tmp

(via)

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter, Facebook, Google+ und Google+ (privat) folgt.

38 Antworten

  1. Speedy sagt:

    Der oben unter Punkt 3) genannte Aspekt funktioniert leider nicht ganz so einfach, da es sich bei der kernel.image nicht um ein gepacktes Archiv handelt, sondern um ein Image einer Partition des Speichersystems der FRITZ!Box. Das verwendete Dateisystem „squashfs“ .
    Unter Linux funktioniert das Auspacken z.B. mit dem Tool“ fwmod“ aus freetz (www.freetz.org) unter Windows könnte es evtl. auch mit den cygwin-Tools funktionieren.

    Quelle: http://www.ip-phone-forum.de/showthread.php?t=187614

  2. Sven sagt:

    Hallo

    Zu Info:
    Deine Seite ist auf heise.de verlinkt.
    ( http://www.heise.de/newsticker/meldung/AVM-Router-Fritzbox-Update-haengt-Bastler-ab-2391292.html )

    Danke werde es gleichmal testen…

    gruss Sven

  3. AVM sagt:

    Mit 7-Zip 9.34 alpha lässt sich die gewünschte Datei aus dem kernel.image entpacken.

    • Tobi sagt:

      Kann ich nach einem kurzen Test nur teilweise bestätigen. Bei der 7270-Firmware funktioniert es, bei der 7390-Firmware jedoch nicht.

    • Speedy sagt:

      @Tobi:
      Die 7270 hat im Gegensatz zur 7390 ein anderes encoding (little-endian) als die 7390. Letztere verwendet (big-endian). Daher mag das eine durchaus funktionieren, während das andere nicht klappt.
      Laut der Versionshistorie (http://7-zip.org/history.txt) soll 7Zip schon seit Version 9.18 beta mit SquashFS umgehen können, allerdings streikt auf meinem Win7 64bit System 7Zip Version 9.20 selbst bei einem kernel.image der 7270.

      Die neue 7-zip Version hat vermutlich Support für ersteres implementiert, jedoch nicht für letzteres.

  4. PeterPawn sagt:

    Es gibt auch einen „rechtlich einwandfreien“ Weg, das Problem zu lösen. Das Auseinanderpuzzlen der Firmware ist eigentlich nach den AVM-Lizenzbestimmungen nicht erlaubt.

    AVM hat aber für den „Onlinespeicher“ ein kleines Tool weiterhin in der Firmware, mit dem eigentlich die Credentials für WebDAV aus der Konfiguration ausgelesen werden sollen.

    Wie man dieses Tool in einer chroot-Umgebung zur kompletten Decodierung aller gespeicherten Kennwörter „mißbrauchen“ kann, habe ich in einem Shell-Skript (yourfritz.de/decode_passwords) gezeigt.

    Rein von den „Vorbereitungshandlungen“ her (Download einer alten Version, Extrahieren, Mounten vs. nur Download und Aufruf), dürfte das auch der kürzere Weg sein, der zumindest bis zur Abschaffung/Änderung des Tools „webdavcfginfo“ sicherlich auch funktionieren wird.

    Daß das Skript nicht „Böses“ macht, kann jeder mit einigermaßen soliden Shell-Kenntnissen anhand des Inhalts der Datei selbst nachvollziehen.

    • Bastian sagt:

      Hi,

      kannst du das etwas genauer beschreiben wie ich dein Skript verwenden kann?

      Gruß
      Basti

    • PeterPawn sagt:

      Download, wahlweise ausführbar machen oder explizit mit „sh“ aufrufen.
      Inzwischen gibt es das auch als „Männer die auf Shell-Code starren“-Version im Freetz-Ticket-System (http://freetz.org/ticket/2558), ist etwas zuverlässiger als eine andere Quelle.
      Ein Aufruf, um die ar7.cfg zu dekodieren, sähe so aus:
      sh /var/decode_passwords </var/flash/ar7.cfg
      Das zeigt den Inhalt der ar7.cfg mit Klartext-Daten auf stdout an.

    • PeterPawn sagt:

      Ist mir noch gar nicht aufgefallen … aber das Skript hat natürlich einen Kommentar als Header, wo die Benutzung erläutert ist. Da ich ohnehin davon ausgehe, daß man sich ein Skript aus einer unbekannten Quelle erst einmal ansieht, hielt ich eine gesonderte Erwähnung dessen nicht für notwendig.

    • jens b sagt:

      Hallo PeterPawn,

      super das Script, damit hab ich innerhalb von 2 Minuten endlich wieder meine t-online Zugangsdaten gehabt!
      Um das script auszuführen hab ich einfach die fritzbox netzwerkfreigabe kurzerhand missbraucht ;-). Script auf die Netzwerkfreigabe kopiert und auf der Box per telnet ausgeführt.
      Das war wirklich einfach! Thx

  5. Lars sagt:

    Ich bin am Auspacken von kernel.image für die 7390 gescheitert. Wie hier schon erwähnt wurde, schluckt 7zip das Kernelimage offenbar nicht. Ein frisch gebautes unsquashfs der squashsf-tools bricht mit „Can’t find a SQUASHFS superblock on kernel.image“ ab. Und fmod aus freetz zum Auspacken des gesamten Images funktionierte auch nicht besser:

    ./freetz-1.2/fwmod -u -d fw6_03 FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.03.image
    STEP 1: UNPACK
    unpacking firmware image
    splitting kernel image
    unpacking filesystem image
    Reading a different endian SQUASHFS filesystem on FW/original/kernel/kernelsquashfs.raw
    [...]/freetz-1.2/tools/freetz_functions: line 116: 22662 Segmentation fault      "$UNSQUASHFS" "$UNSQUASHFS_OPTIONS" -dest "$1" "$2" &gt; /dev/null
    ERROR: modunsqfs: Error in FW/original/kernel/kernelsquashfs.raw

    Es muss doch irgendwie auszupacken sein …

    • Tobi sagt:

      Habs gerade selbst mit Freetz getestet und es funktioniert. Hier meine Vorgehensweise:

      Portable-VirtualBox einrichten.
      Freetz-Linux 1.32 herunterladen und nach dieser Anleitung installieren und updaten.
      Jetzt gehts in der Konsole weiter.

      svn co http://svn.freetz.org/trunk freetz-devel
      cd freetz-devel/
      make menuconfig

      im Menü passende Fritz!Box auswählen und speichern
      Fritz!Firmware nach „freetz-devel/dl“ kopieren

      make tools
      ./fwmod -u -d TEST dl/FRITZ.Box_7390.Int.84.05.23.image

      Wirklich einfacher ist aber die von PeterPawn beschriebene Methode 😉

  6. Lars sagt:

    Vielen Dank für die ausführliche Beschreibung, hat mir weitergeholfen!

    Ich denke beim Subversion-Checkout gibt es einen kleinen Copy-Paste-Fehler: Der HTML-Tag um den Link sollte weggelassen werden.

    Wie Du gewarnt hast, die Updates, Downloads und Compiliervorgänge haben dann das Ganze doch etwas langwierig werden lassen. Und der Punkt, das sich die Gasterweiterungen der VM sich bei mir nicht mounten liessen, machte es etwas umständlich — keine Mausintegration, kein Einbinden externer Verzeichnisse, kein funktionierendes Copy-Paste (ein wget mit dem langen Pfad des Dowgrade-Images wurde recht nervig). Möglicherweise liegt es daran, dass bei mir die Freetz-VM wiederum innerhalb einer Windows-VM liegt, die auf OS X läuft. Tastaturbelegung stimmt natürlich auch nicht, eben alles etwas mühsam.

    Dennoch, ich habe jetzt das gesuchte Programm als TEST/original/filesystem/bin/allcfgconv, habe es über das Netz auf eine Linuxkiste hochgeladen (um auch ohne geteilte Verzeichnisse ranzukommen) und werde es an meiner Fritzbox ausprobieren, wenn ich wieder daheim bin. Und bei Gelegenheit muss ich mir nochmals den Weg von PeterPawn ansehen. Danke nochmals, Tobi!

    • Tobi sagt:

      Ich denke beim Subversion-Checkout gibt es einen kleinen Copy-Paste-Fehler: Der HTML-Tag um den Link sollte weggelassen werden.

      Was genau meinst du damit? Ich kann da keinen HTML-Code erkennen.

  7. Lars sagt:

    Ich bekomme in Zeile 1 nach „Jetzt gehts in der Konsole weiter.“ folgendes (die spitzen Tagklammern textuell, damit die Forumssoftware das nicht verschluckt):

    svn co *öffnende Tagklammer*a href=(Adresse) target=“_blank“ rel=“noreferrer“ style=“cursor:help;display:inline !important;“ *schliessende Tagklammer* http://svn.freetz.org/trunk *öffnende Tagklammer*/a*schliessende Tagklammer* freetz-devel

  8. gwiefterluchs sagt:

    Habe weiter oben in den Kommentaren gelesen das man die Datei aus der kernel.images mit 7-Zip 9.34 alpha entpacken kann.

    Dies kann ich bei einer 7360 v1 bestätigen.
    Habe mit 7-Zip die allcfgconv aus der Downgrade Firmware:

    ftp://service.avm.de/Downgrade/FRITZ!Box_7360v1/deutsch_a-ch/FRITZ.Box_Fon_WLAN_7360.en-de-es-it-fr.111.06.05.image

    entpacken können.

  9. Sidney sagt:

    Hey,
    was bringt es eigentlich, das WebUI Passwort auslesen zu können? Um sich via Telnet anmelden zu können, benötigt man dies doch sowieso. Oder gibt es tatsächlich Methoden, sich ohne Passwort anmelden zu können?

    Viele Grüße!

    • PeterPawn sagt:

      Die meisten suchen nicht ihr eigenes WebUI-Kennwort, sondern VoIP-Credentials, die ihnen von ihrem Provider per TR-069 eingetragen wurden und die der Provider nicht freiwillig herausgibt. Auch vergessene DSL-Anmeldungen sind ein beliebtes Problem.

      Die Anmeldung ohne Kennwort am GUI funktioniert nicht so ohne weiteres. Wenn dieses Kennwort vergessen wurde, ist ohne eine existierende Sicherungsdatei der Einstellungen (fast) nichts mehr zu machen, wobei das Einspielen dieser Sicherungsdatei (wenn sie denn mit eigenem Kennwort erstellt wurde) auch nur dann funktioniert, wenn man deren Kennwort noch kennt.

      Eine Sicherungsdatei, die ohne Kennwort erstellt wurde, ist zwar immer noch verschlüsselt und kann auch nur in die FRITZ!Box wieder eingespielt werden, auf der sie auch erstellt wurde, aber da gibt es tatsächlich die Möglichkeit, eine solche Sicherung und alle darin enthaltenen verschlüsselten Credentials auch dann in einer FRITZ!Box wiederherzustellen, wenn man keine Kenntnis von alten Kennwörtern hat. Allerdings benötigt man dazu physikalischen Zugang zum Gerät, da der Vorgang ein Werksreset beinhaltet und das geht zwar auch aus der Ferne, aber anschließend ist die FRITZ!Box ja nicht erreichbar.

      Und zu guter Letzt gibt es noch den Fall, daß eine FRITZ!Box existierte, deren Einstellungen ohne eigenes Kennwort gesichert wurden und dann genau diese FRITZ!Box das Zeitliche segnet, meist im Zusammenhang mit Unwettern in der Region. Theoretisch wäre jetzt der Inhalt der Sicherungsdatei verloren. Mit Kenntnis einiger Parameter der defekten FRITZ!Box und Zugang zu einer neuen ist dann aber auch noch nicht Hopfen und Malz verloren, wobei es kein Spaziergang ist. Da es in solchen Fällen aber meist um irgendwelche „Init-Briefe“ geht, die der Hund gefressen oder die Schwiegermutter entsorgt hat, reicht in der Regel schon die Kenntnis dieser speziellen Credentials zum Eintragen in die neue FRITZ!Box und der „Kunde“ ist wieder glücklich.

  10. Holger sagt:

    Danke für den entscheidenden Tipp 🙂
    Ich habe (zum Glück) noch eine alte Firmware auf meiner FB, die ich nur als zweites WLan im Haus verwende. Also musste ich keine „allcfgconv“ austauschen.
    Aber ich wäre nie im Leben darauf gekommen, wie man damit das PW ausliest!
    Das habe ich nämlich mal geändert und gleich wieder vergessen und dank deines Artikels hier kann ich mir ersparen, die FB zurückzusetzen und neu einzurichten.

    Weiter so 🙂

  11. Bien sagt:

    Was auch geht: Alte Firmware in Fritzbox einspielen (Ansicht: Erweitert). Und dann mit allcfgconv -c auslesen. Anschließend wieder die aktuelle Firmware einspielen.

    • PeterPawn sagt:

      Das kann aber extrem gefährlich werden, wenn man das tatsächlich „nur“ so macht, wie Du es schreibst. Ein Downgrade der Firmware ist in aller Regel mit einem Werksreset der FRITZ!Box verbunden. Wenn man dann keine passende Sicherung der Einstellungen hat, die sich anschließend wieder einspielen läßt, ist das nur ein ziemlich sicherer Weg, wie man sich um die zu entschlüsselnden Credentials auch künftig keine Sorgen machen muß.
      Also bitte vor einem Downgrade die angebotene Sicherungsdatei (neue Firmware will vorher in jedem Falle von sich aus einen Export machen) auch tatsächlich irgendwo ablegen, wo man sie hinterher auch wieder findet. Landet die nur in den temporären Dateien des Browsers, ist sie sicherlich früher oder später weg.

    • Bien sagt:

      Stimmt, Datensicherung (MIT Kennwort) nicht vergessen! Die muss nach Downgrade wieder eingespielt werden. Damit hat bei mir alles reibungslos funktioniert.

  12. sc911 sagt:

    Die zumindest im Downgrade-Image FRITZ.Box_7490.113.06.03.image der 7490 (ftp://service.avm.de/Downgrade/FRITZ!Box_7490/deutsch/FRITZ.Box_7490.113.06.03.image) findet sich die allcfgconv auch noch unter \var\tmp\filesystem.image\filesystem_core.squashfs\bin\, was sich mit 7zip (9.39beta) öffnen lässt.

  13. Remura sagt:

    Hallo Tobi,

    super Blog – by the way 😉

    Meine Frage — ich erhalte beim entpacken des FRITZ.Box_7490.113.06.03.image ’s mit fwmod wie oben beschrieben (freetz / VirtualBox) folgenden Fehler:

    unpacking firmware image
    Skipping 0 Bytes garabage …/fwmod: Zeile 374: 0x001DEF08 – : Syntax Fehler Operator erwartet. (Fehlerverursachendes Zeichen <>).

    Wo liegt das Problem?
    Oder kann ich 7490 nicht extrahieren?
    Kannst Du helfen?

    😉
    Remura

  14. Remura sagt:

    Ah – ignore previous message

    habe es — wer lesen kann ist klar im Vorteil …

    ich hatte das Image schon ausgepackt und das kernel.image genommen.
    Mit dem komprimierten kompletten image geht es (allcfgconv ist in /TEST/original/filesystem/bin zu finden

    Läuft 😉

  15. Pete sagt:

    Klappt super mit dem script from yourfritz.de/decode_passwords
    einfach
    sh decode_passwords < /var/flash/ar7.cfg | grep user
    und
    sh decode_passwords < /var/flash/ar7.cfg | grep pass
    starten und da sind die Zugangsdaten auch schon – dummerweise hätte ich es mir sparen können, in meinem Fall waren die DSL Zugangsdaten die universellen (o2@dsl.o2online.de Freeway).

  16. Christof sagt:

    Mit meiner 7270v2 Fritz!OS 6.05 geht es leider nicht. Wenn ich den allcfgconv-Befehl ausführe, kommt folgende Fehlermeldung:
    -sh: allcfgconv: not found

    Ich habe die allcfgconv von einer 7170 kopiert.

  17. Christof sagt:

    Funktioniert doch, aber nicht mit der allcfgconv der 7170, sondern aus dem 5.54er-Image der 7270, welches man hier runterladen kann: ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/deutsch/

    Mein Problem war das entpacken der kernel.image, was mit meiner 7-Zip 9.25 nicht ging, aber mit der neuesten Beta (15.05). Vielleicht kannst Du das in das HowTo mit aufnehmen.

  18. Sammie sagt:

    Gibt es eigentlich auch eine Möglichkeit die Passwörter direkt aus der Export-Datei der Sicherung zu entschlüsseln,oder ist das unmöglich? Auf den aktuellen KD-Routern gibts ja kein Telnet/SSH mehr, um direkt ins System zu kommen.

    • Tobi sagt:

      Per Bruteforce auf jeden Fall. Allerdings ist das praktisch wohl nicht praktikabel und bei längeren Passwörtern auch nicht immer erfolgsversprechend.

  19. Philipp Kahn sagt:

    Hallo Tobi,

    die Verbindung/das Auslesen funktioniert aber nur mit den FritzBoxen mit integrierten Tel.Anlagen oder? Oder auch bei den reinen WLAN Fritzboxen?

    • Tobi sagt:

      Doch das funktioniert überall. Bei den Boxen ohne Telefonie fehlen dann halt logischerweise die VoIP-Zugangsdaten.

  20. PeterPawn sagt:

    Ja und nein … bei den Boxen ohne Telefonie ist es auch bei der alten Firmware < 06.30 nicht ganz einfach, den Telnet-Server der Box zu kontaktieren (als Voraussetzung für alles oben stehende).

    Der Telnet-Daemon wird normalerweise (solange der Symlink vorhanden ist, ist aber ein anderes Thema) vom "telefon"-Daemon in der AVM-Firmware gestartet, wenn ein bestimmtes Flag in der Datei /var/flash/fx_conf den Wert 0x01 hat.

    Gibt es keinen "telefon"-Daemon, wird kein Telnet-Server gestartet. Gibt es den "telefon"-Daemon und das Flag ist nicht richtig gesetzt, gibt es immer noch keine Möglichkeit, den telnetd per Telefoncode zu aktivieren, SIP-Clients taugen generell nicht für diese Tastencodes.

    Dann muß man etwas tricksen, um das Flag in der fx_conf zu setzen (geht über Export, Ändern, Import) … aber das steht im IPPF und ich will das Blog hier nicht überstrapazieren.

    Ansonsten bleibt auch da das Pseudo-Image als Zugang (wie bei FW ab 06.30), aber die erwähnte Änderung der fx_conf ist auch bei den 3xxx-Boxen persistent und solange da Firmware < 06.30 vorhanden ist, startet dann der Telnet-Daemon auch dort automatisch, seitdem diese Modelle Internet-Telefonie unterstützen (das Handbuch sagt bei den meisten noch, das wäre nicht der Fall).

  1. 20. Februar 2015

    […] Egal, zum Thema: Sohn Nr.1 kam und bat um längere Netzzeit und ich kam in Verlegenheit, weil ich eben das PW nicht mehr wusste. Da dachte ich mir “wenn Freetz da läuft, dann ist da auch telnet oder ssh, und dann kann ich da vielleicht drauf und irgendwie Linux-mässig das Passwort ändern oder so”. Oder nicht ganz so: Per Telnet kam ich drauf (mit freetz-Account), aber dann kam ich nicht weiter. Die Freetz-Seiten sind voller Informationen, aber natürlich nix Fritzbox-Passwort-spezifisches. Doch eine hilfreiche Seite im Internet sagte mir genau, was ich tun musste: http://www.antary.de/2014/07/23/alle-passwoerter-aus-der-fritzbox-auslesen/ […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *