[Frage] Factory-Reset mit freetz verhindern

lexika

Neuer User
Mitglied seit
9 Jan 2022
Beiträge
3
Punkte für Reaktionen
1
Punkte
3
Hallo allerseits,
Ich möchte bei meiner Fritz-Box 6490 Cable die "Factory-Reset (Durch Taste und Telefon)" und "Passwort vergessen (Im Web-GUI)" Funktionalität deaktivieren.

Wäre dies mit freetz möglich, und wenn ja, wie?

Soweit ich verstehe sind große Teile des Fritz-Box Betriebssystems in LUA gemacht, heißt das ich könnte mit freetz einfach das Skript für die zwei oben genannten Funktionen finden, die Funktionalität entfernen, und das Image dann auf meine Fritz Box flashen?

Danke im vorraus!
 
"Passwort vergessen (Im Web-GUI)"
Das geht doch nur die ersten 10 min nach Neustart. Aber ja dass könnte man über die .lua weg bekommen oder noch einfacher indem man das skript welches die .lua anstößt weg nimmt.

(Durch Taste und Telefon)
Meinst du damit #991*15901590*? Das wird schwerer weg zu bekommen sein weil der Telefonteil closed source ist.
 
Soweit ich verstehe sind große Teile des Fritz-Box Betriebssystems in LUA gemacht
Diese "großen Teile" beschränken sich (in erster Linie, wenn man die LTE-Unterstützung mal außen vor läßt) aber nur auf das GUI - da KÖNNTE man tatsächlich die betreffenden Funktionen deaktivieren. Aber wie weit das angesichts der Tatsäche, daß diese über TR-064 (eine von intern erreichbare Programmierschnittstelle) ebenso erreichbar sind, auch noch einen Sinn ergibt, muß man sich schon sehr gut überlegen. Wenn man das alles aus der Firmware entfernt, funktionieren auch viele andere Dinge nicht mehr - das ist in aktuelleren Versionen alles etwas mehr miteinander verquickt, als das noch vor ein paar Jahren der Fall war, wo man TR-069 auch mal (sinnvoll und erfolgreich) ausbauen lassen konnte. Heutzutage verliert man damit i.d.R. automatisch auch noch einige andere Funktionen und inwieweit der dann noch verbleibende Rest den eigenen Anforderungen genügen mag, muß schon jeder selbst testen.

Aber es kommt eben auch darauf an, wie ernst man es mit dem "Verhindern" tatsächlich meint - ich schwöre jedenfalls, daß ich in jede FRITZ!Box, an die ich physisch herankommen kann, auch "einbrechen" kann (immer unter der Annahme, daß da auch ein FRITZ!OS - wie wir es heute kennen - läuft) und das zu mehr als 95% auch ohne irgendwelche "Spuren" zu hinterlassen, die der gewöhnliche FRITZ!Box-Besitzer erkennen würde.

Das Verhindern des Resets per (analogem) Telefon erfordert gar keine geänderten Lua-Dateien (das ist eben nicht Teil des GUI der Box), sondern man müßte eine Binärdatei im Image so patchen, daß die Folge von DTMF-Eingaben nicht mehr erkannt/verarbeitet wird - schon das (EDIT: dauerhafte!) Patchen der binären Datei wäre aber (mit hoher Wahrscheinlichkeit) ein Verstoß gegen die Lizenzbestimmungen für die AVM-Firmware, der weder durch das deutsche Urheber-Gesetz (§ 69e UrhG) noch durch das letztens ergangene Urteil des EuGH (https://curia.europa.eu/juris/docum...DE&mode=lst&dir=&occ=first&part=1&cid=9912038) gedeckt sein dürfte, da es hierbei eben nicht um die Herstellung von Interoperabilität und auch nicht um die Korrektur von Fehlern (die Funktionen sind explizit als solche und auch als "vorhanden" beschrieben, so daß auch keine Abweichung zwischen Funktion und Dokumentation erkennbar wäre) gehen würde.
 
Danke für die schnellen Antworten :)

Die Funktionalität aus dem GUI zu entfernen wäre erst einmal ausreichend.
Wie würde ich nun vorgehen, um dies zu tun?

Ich bin selber Informatiker für Anwendungsentwicklung und würde mich relativ schnell selber im Script/Code zurechtfinden um die Funktionalität zu entfernen.
Ich bräuchte nur einen kleinen Wegweiser in welchem schritt des Build-Prozesses der Firmware ich die Änderungen vornehmen müsste, und wo ich die Verantwortlichen LUA's finden kann.

Mfg
 
Ich bin selber Informatiker
Dann solltest Du ja auch Dokumentationen lesen können ... wie der Build-Prozess abläuft, sieht man auch spätestens dann, wenn man den (mit passendem Info-Level) einmal selbst ablaufen läßt und der Weg dorthin, ist m.E. ausreichend ausführlich beschrieben.

Welche Lua- und ggf. JS-Dateien beim Reset über die Weboberfläche eine Rolle spielen (Tipp dazu: die Firmware verwendet eine "feste" URL als Sprungverteiler für die allermeisten Aktionen), findet man am ehesten mit den Developer-Tools eines aktuellen Browsers heraus. Spätestens dann, wenn man die dabei übermittelten Parameter ermittelt hat und mit deren Namen mittels grep in der entpackten Firmware sucht (ob man dazu dann unbedingt Freetz(-NG) braucht, steht noch einmal auf einem anderen Blatt - es geht hier ja erst mal um die Analyse und Freetz macht schon noch deutlich mehr und vieles anders, als die originale AVM-Firmware), findet man auch die passenden Lua-Files.

Da das auch noch (zumindest in Teilen) von der tatsächlich verwendeten Firmware-Version abhängig ist, wo sich manche Funktion befindet und was da zu ändern wäre (die Versionsnummer der 6490-Firmware wurde bisher ja auch noch verschwiegen), bringt irgendeine "pauschale" Aussage in diesem Punkt ohnehin nichts.

Die Firmware wandelt sich jedenfalls mit jeder weiteren Version immer mehr in Richtung einer "Single-Page Application", bei der serverseitig jede Menge Lua-Code im Spiel ist (die neuesten Inhouse-Versionen zeigen sogar, daß ein zuvor nur angedeutetes serverseitiges Framework als REST-Interface immer mehr Form annimmt - in /usr/rest_api, wenn auch wohl die nächste Version immer noch aus "voll ausimplementierten" Spezial-Seiten bestehen wird), der in Form von Objekten in /usr/lua zu finden ist (ein weiterer Teil sind Glue-Libraries, die Infos aus den proprietären Binärkomponenten über Lua-Interfaces zugänglich machen) und praktisch alles das, was clientseitig innerhalb der "Hauptseite" zu erledigen ist, über ein JS-Framework implementiert wurde.

Die Frage, die Du Dir stellen solltest, ist also nicht die, ob Dir jemand genau sagen kann (will), wo Du da was ändern sollst ... Du müßtest Dir halt die Firmware entpacken und Dir darin dann die Mechanismen durch Analyse der Sourcen erschließen. Wie das Entpacken funktioniert, ist hier im Board mehrfach beschrieben - bei der 6490 muß man dann halt noch beachten, auf welchem Core das GUI letztlich implementiert ist, denn auch das hat sich mit der 06.8x dann geändert. Sogar die passenden Werkzeuge findet man (auch ohne eine Freetz-Toolchain bemühen zu müssen) für x64-Linux in Form von vorkompilierten Programmen.

Ob man das dann lieber mit Freetz macht (und das System dabei deutlich weiter verändert, als nur die gewünschten Funktionen auszubauen - wobei man auch das Wiederherstellen von Einstellungen dann nicht außer acht lassen darf, denn das ist - bei leeren bzw. "standardmäßigem" Inhalt der Sicherungsdatei - auch nicht viel anders als ein Löschen von Einstellungen) oder eben doch "von Hand" und sich dabei auf die selbstgemachten Änderungen beschränkt, ist letztlich wieder nur Geschmackssache.

Da dürfte ein "Plan", wie man dabei tatsächlich vorgehen will, viel mehr wert sein ... denn vermutlich wird es niemandem "aus dem Stand" gelingen, die erforderlichen Änderungen auf einen Schlag exakt so vorzunehmen, wie sie notwendig wären (weder von der korrekten Syntax noch vom Umfang her, denn es gibt da durchaus denkbare Seiteneffekte) - daher wäre es schlauer, man schafft sich erst einmal einen Shell-Zugang zum korrekten Core, auf dem das GUI arbeitet (dazu muß man auch nur ein einziges SquashFS-Image erstellen und flashen und nicht gleich alle vier Partitionen für ein komplettes Set) und mit diesem kann man dann nach Herzenslust an den eigenen Änderungen arbeiten - wenn man die Dateien z.B. durch ein bind-Mount beschreibbar gemacht hat.

Etwas umzusetzen, was tatsächlich den Umfang der Planungen aus #1 hat und das nur durch das ständige neue Erstellen und Flashen kompletter Images, halte ich jedenfalls für das deutlich falsche Herangehen an ein solches Problem - selbst wenn man irgendwann mal mit dem eigenen Signieren von Images beginnen sollte und damit nicht mehr jede Änderung der Firmware über den Bootloader erfolgen müßte.

Mit einer Shell hat man da ebenfalls (wenn man sich zuvor eingelesen und die Mechanismen auch wirklich verstanden hat) deutlich mehr Optionen und auch den Einbau einer GUI-Möglichkeit zur Umschaltung auf das alternative System (um mal etwas Eigenwerbung zu betreiben) sollte man hier in Erwägung ziehen ... eben weil man von dem einen System aus durch simples Kopieren der Image-Datei in die passende Partition schon den gesamten notwendigen "Installationsprozess" erledigt hätte und da nicht jedesmal eine komplette Installation ablaufen lassen muß, nur um irgendwelche Text-Dateien (etwas anderes sind die Lua- und JS-Files ja nicht) zu ändern, weil die vorhergehende Änderung fehlerhaft/nicht vollständig war.
 
Alles klar, danke für die ausführliche Antwort.
Ich werde es trotzdessen mal so probieren wie ich es original vorhatte, wenn ich demnächst mal Zeit finde.

Vielen dank für die Hilfe!
 
  • Like
Reaktionen: KunterBunter
Aber es kommt eben auch darauf an, wie ernst man es mit dem "Verhindern" tatsächlich meint - ich schwöre jedenfalls, daß ich in jede FRITZ!Box, an die ich physisch herankommen kann, auch "einbrechen" kann (immer unter der Annahme, daß da auch ein FRITZ!OS - wie wir es heute kennen - läuft) und das zu mehr als 95% auch ohne irgendwelche "Spuren" zu hinterlassen, die der gewöhnliche FRITZ!Box-Besitzer erkennen würde.
Wie stark darf dieses FritzOS denn verändert sein? ;) Es geht ja hier gerade um Änderungen, also wäre eine Original-Version ja langweilig, das muss dann schon eine "gehärtete" Version sein wie sie hier ja gebaut werden soll.

Und da muss man (zu den bisherigen Erwägungen) noch ein paar mehr Dinge tun, zum Beispiel den Speicher (teilweise) verschlüsseln (wäre doch schade wenn man sich so viel Mühe gibt alles abzusichern und dann lötet jemand einfach schnell den Speicher aus, verändert ihn und lötet ihn wieder ein), den Bootloader etwas verändern (auch der kann ja Resets auslösen, auf mehrere Arten sogar) und secureboot aktivieren (es macht ja keinen Sinn sich soviel Mühe zu geben wenn danach einfach wieder ein Original FritzOS da drauf landet, oder gar eine besondere Version davon die eine Backdoor o.ä. hat).
 
Ich denke mal, die Aussage war klar auf ein originales FRITZ!OS ("so wie wir es heute kennen") bezogen - das schließt also JEDE Veränderung aus. Und auch Chipsätze mit optionalen zusätzlichen Security-Features, die AVM ja ohnehin meist ignoriert - von Virtualisierung bis zu sicheren Enklaven und Signaturen.
 
(wäre doch schade wenn man sich so viel Mühe gibt alles abzusichern und dann lötet jemand einfach schnell den Speicher aus, verändert ihn und lötet ihn wieder ein)
Wozu erst löten. Einfach ein neues TFFS-Image per Bootloader unterschieben… ;)

Edit:
Oder ein "recovered=…" an den Wert einer bestimmten Bootloader-Variable anhängen, wenn man bei der Modifikation vergessen hat die Erkennung/Abarbeitung eines solchen Wertes ebenfalls mit zu deaktivieren.
 
Zuletzt bearbeitet:
Ich denke mal, die Aussage war klar auf ein originales FRITZ!OS ("so wie wir es heute kennen") bezogen - das schließt also JEDE Veränderung aus.
Dann finde ich den ersten Teil aber widersprüchlich:
Aber es kommt eben auch darauf an, wie ernst man es mit dem "Verhindern" tatsächlich meint
Wenn man nichts verändert dann unternimmt man ja nichts zum Verhindern, meint es also keineswegs ernst (bzw. man versucht es nicht einmal irgendwas zu verhindern)....


Einfach ein neues TFFS-Image per Bootloader unterschieben
Deswegen habe ich ja ein patchen des Bootloaders ebenfalls angeführt ;) Den kann man relativ einfach dazu bringen nicht mehr richtig zu funktionieren. Es reicht ja schon den Login "kaputt zu machen" sodass der nicht mehr gelingen kann.
 
Es reicht ja schon den Login "kaputt zu machen" sodass der nicht mehr gelingen kann.
Das wäre doch auch mal eine Idee, also als Login-PW nicht mehr "adam2" sondern das PW verwenden was in der Variable "webgui_pass" steht.
 
Prinzipiell eine gute Idee, allerdings würdest du (mir) damit wieder Tür und Tor öffnen: Speicher auslesen, variable finden und schon ist der bootloader offen ;) Für eine "locked box" darf das also nicht gehen.

Ich vermute mal AVM macht es bewusst nicht so im stock Bootloader weil man so wenn man das Bootloader Environment zerschießt keinen Zugriff mehr bekommt. Je nachdem wie die Produktion abläuft fehlen eventuell auch bestimmte Daten beim ersten Start und die werden erst über den Bootloader geschrieben, wenn das dieses Passwort beinhaltet so müsste man entweder "leere" Logins erlauben wenn noch nichts drin steht oder aber es funktioniert nicht.
 
Für eine "locked box" darf das also nicht gehen.
Dafür war es eigentlich auch nicht gedacht. Ich würde mir eher wünschen, dass das AVM bei neuen Modellen (standardmäßig) einführt. Wenn man dann das AVM Recovery-Tool verwenden möchte (sofern für das jeweilige Modell vorhanden) muss man dann natürlich ebenfalls das Passwort vom Etikett auf der Unterseite der Fritzbox eingeben.

Wenn die Variable fehlt (Produktion) könnte der Bootloader auch wieder "adam2" als PW akzeptieren.
 
muss man dann natürlich ebenfalls das Passwort vom Etikett auf der Unterseite der Fritzbox eingeben.
Und was macht dann der Normali wenn das Etikett fehlt? Hatten wir schon öfters ...
 
Der kommt auch so nicht mehr auf die Box ohne Etikett.

Noch fieser, wenn das Etikett noch vorh. ist aber der Vorbesitzer den Wert der Variable verändert hat… ;)
 
Du denkst aber ganz gemein ... :rolleyes:
 
Die Variable könnte man ja als (über den Bootloader) unveränderbar einstellen.... Dann müsste man, wenn man das will, schon über andere Tricks das ganze verändern.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.