
CVE-2016-5195 dirtycow von timwr automatisiertes Multi-Datei-Patch-Tool
BITTE BEACHTEN SIE, DASS ICH DIESEN CODE NICHT FORMELL TESTE ER WIRD ALS LEHRWERKZEUG ENTWICKELT
Was macht es? android-dirtycow-replacer nutzt den CVE-2016-5195 DirtyCOW-Exploit, um eine Liste von über 1000 Dateien zu patchen. Sie können es auf 10000 erweitern, aber 1000 sollte reichen. Es prüft zuerst, ob sich die Dateien unterscheiden; falls nicht, wird versucht zu ersetzen, und bei Fehler wird angehalten. Es ist Ihre Aufgabe, die Dateien bereitzustellen, indem Sie sie bearbeiten, Ihr SELinux patchen oder was auch immer. DirtyCOW ersetzt nur, was es lesen kann, und deshalb ist dieses Tool nicht das endgültige.
Entschuldigung, falls ich etwas doppelt gesagt habe, ich habe Programmiererkopf Dieser Code wurde auf einem Note 5 getestet und scheint korrekt zu funktionieren. Allerdings... Dieser Code ist größtenteils ungetestet und nicht das endgültige Projekt. Ich entwerfe einen toolbox.c DirtyCOW-Exploit, der normalerweise unlesbare Dateien wie init überschreiben wird. Warum toolbox? Weil ich root + den benötigten Kontext erlangen kann, indem ich toolbox ausnutze und dann alle Dateien lese, die ich möchte.
Erfordert Linux, wie die neueste Version von Ubuntu (kostenlos), sowie das Android SDK & Android NDK (auch kostenlos).
Anleitung Erstellen Sie eine Datei namens files.txt mit Pfaden links/rechts von dem, was Sie ersetzen möchten. /system/build.prop /data/local/tmp/replace/build.prop Stellen Sie sicher, dass Ihre Dateien auf beiden Seiten der Gleichung existieren – ziemlich einfache Sache, hoffe ich! Ich empfehle, die Datei zu caten, bevor Sie sie überhaupt zur Liste hinzufügen. Beispiel: adb shell cat /init Pfad auf der linken Seite ist die zu ersetzende Datei (beachten Sie das Leerzeichen) Pfad auf der rechten Seite ist die Datei, durch die ersetzt wird
Beispiel enthalten Eine Beispiel-datei files.txt ist in diesem Beispiel enthalten. Sie zeigt auf Testdateien (bearbeiten Sie sie, um sie zu sehen) Es gibt auch zwei Verzeichnisse mit Testdateien. replace/ und replacewith/ Im Verzeichnis replace/ befinden sich 4 Dateien: beingpatched1, beingpatched2, ..3, ..4 beingpatched#-Text == unpatched001 --- unpatched004 Die Dateien in replacedwith/ enthalten den Text patchingdon1 bis patchingdon4 Wenn Sie 'make push' eingeben, wird es kompiliert, und diese Verzeichnisse, files.txt und replacer werden nach /data/local/tmp/ geschoben ..noch dabei?, Eigentliche Anleitung für das Beispiel Entpacken Sie in einen Ordner, klicken Sie mit der rechten Maustaste und öffnen Sie zwei Terminals in diesem Ordner ......Tipp: Wenn Sie auf ein Terminalfenster klicken und dann auf das andere, bleiben beide Terminalfenster sichtbar
Geben Sie in einem Terminalfenster ein: make log
Geben Sie im nächsten Terminalfenster ein: make push <===Keine Fehler, oder?
adb shell dann cd data/local/tmp dann ./replacer
Überblick über das Hauptprojekt – Nicht dieses Projekt Die Vergleichsfunktion wird als Auslöser für toolbox.c entwickelt Die Vergleichsfunktion vergleicht Dateien Byte für Byte, um festzustellen, ob sie sich unterscheiden. Dies wird der Auslöser für toolbox.c sein, um zu versuchen, /init neu zu laden. Als nächstes wird toolbox.c eine Logdatei schreiben (der nächste Schlüsselauslöser auch) toolbox.c wird den Post-Versuch in eine weitere Logdatei protokollieren (der endgültige Auslöser), die uns mitteilt, dass alle Funktionen versucht wurden. Dies wird es uns ermöglichen, für jede Phase mehrere Kontexte bei Fehlschlag zu versuchen, bevor wir aufgeben – wahrscheinlich notwendig.
android-dirtycow-replacer Mein Ziel ist es, ein automatisiertes dirtycow.c-Ersetzungstool zu entwerfen, das als Exploit innerhalb von toolbox.c oder dumpstat.c verwendet wird. android-dirtycow-replacer liest zu patchende Dateien aus einer Textdatei, testet dann, ob sich die Dateien unterscheiden, und wenn ja, nur dann patcht android-dirtycow-replacer die Dateien mit dirtycow.c. Noch einmal: Dieser Code wird entwickelt, um in toolbox.c / dumpstate.c integriert zu werden, um unpatchebare Dateien zu patchen! Mein endgültiger Code wird wahrscheinlich mit UID- und Kontextverarbeitungscode verwoben sein. Dies ist die Gabelung in meinem eigenen Code.
Diese App könnte andere Verwendungen haben Aber ich entwerfe sie derzeit nicht für andere Verwendungen. Die naheliegendste Verwendung, die mir einfällt, ist das Ersetzen einer konstanten Liste von Dateien nach dem Booten, wie z.B. Schriftarten oder das Entfernen von Berechtigungen für Apps, um Zugriff auf das Internet zu haben, während der Bildschirm ausgeschaltet ist. Oder viele, viele andere Einstellungen unter /etc, die nach jedem Booten repariert werden.
ERFORDERLICH
Software wird derzeit nicht aktualisiert. Software wird als Beispielcode aufgeführt Ich persönlich glaube, dass dieses Tool Root auf jedem Gerät im Rahmen des Möglichen erreichen könnte. Ich glaube auch, dass es ein mächtiges Organisationstool ist, um genau dieses Ziel zu erreichen. Das Problem für mich ist, dass ich kein Interesse daran habe, Root auf meinem persönlichen Handy zu bekommen. Ich habe gerade genug Sachen zum Absturz gebracht, dass mein Note 5 so erstaunlich ist und es eine schwierige Aufgabe ist, es wieder einzurichten. BITTE BEACHTEN SIE, DASS ICH DIESEN CODE NIEMALS IRGENDWO TESTE! ER WIRD ALS LEHRWERKZEUG ENTWICKELT
Wenn Sie ein Problem haben Bitte listen Sie das Problem auf, und ich werde es korrigieren, sobald ich kann, solange ich es sicher auf meinem Testgerät tun kann.