0x01 Ursprüngliche Absicht und anwendbare Szenarien
Der USB-Debugging-Modus von Android ist für Entwickler konzipiert. Entwickler können ihn zum Debuggen oder Testen von Anwendungen während der Anwendungsentwicklung verwenden.
adb bietet eine Reihe von Funktionen, die für die Entwicklung hilfreich sind, wie z. B. die Installation und Deinstallation von Anwendungen, Sicherung und Wiederherstellung, Protokollausgabe und Filterung, und bietet außerdem eine sehr benutzerfreundliche adb-Shell mit umfangreichen Berechtigungen.
Neben Entwicklern verwenden auch Reverse-Analysten die ADB-Schnittstelle, wenn sie Reverse-Analysen und dynamisches Debuggen von Anwendungen durchführen. Über diese Schnittstelle können sie beispielsweise so oder smali dynamisch debuggen und verfolgen und einige Funktionen dynamisch ausführen Code zur Verifizierung usw.
Allerdings sind Komfort und Sicherheit bis zu einem gewissen Grad umgekehrt proportional. Unter den umfangreichen Funktionen gibt es auch eine Reihe von Sicherheitsproblemen.
0x02 ADB-Informationsverlust- und Berechtigungsverlustprobleme
Wenn die Anwendung die von Logcat ausgegebenen Debugging-Informationen bei der Veröffentlichung nicht löscht, ist es sehr wahrscheinlich, dass vertrauliche Informationen verloren gehen, geringfügig Beispielsweise kann Logcat den von der Anwendung besuchten Weblink oder andere Zwischenvariablen ausdrucken oder auch das Kontokennwort verlieren. Schließlich ist der Schwellenwert für die Android-Entwicklung niedrig und die Entwicklerebene zwangsläufig ungleichmäßig.
Um das Debuggen zu erleichtern, können Entwickler sogar schreiben:
Das Durchsickern von Android-Logcat-Informationen wurde in der Vergangenheit viele Male offengelegt, wie zum Beispiel:
WooYun: Logcat-Informationen der Tuniu.com-App haben Gruppenchat-Chat-Inhalte des Benutzers durchgesickert
WooYun: Beim Surfen im Browser Logcat wurden Benutzer-Textnachrichten angezeigt
WooYun: Anmeldekonto und Passwortinformationen des Android-Kunden der Hangzhou Bank ist lokal durchgesickert
Darüber hinaus konzentrieren sich viele derzeit auf dem Markt erhältliche Plattformen zum Scannen von Schwachstellen in Android-Anwendungen ebenfalls auf die Überprüfung des Missbrauchs von Logcat und stellen ihn in Berichten dar, beispielsweise Tencent King Kong Audit System, Alibaba Security und 360 Danger Spiegel (früherer Insektenjäger) usw. Dies spiegelt auch von außen die Universalität dieses Problems wider.
Zusätzlich zu den Fehlern der Entwickler gibt es auch einige Mängel im Design von ADB selbst. Es gab einmal einen Artikel, der sich speziell mit diesem Problem befasste: „Bittersweet ADB: Attacks and Defenses“.
Über ADB oder eine Android-Anwendung, die ADB-Berechtigungen beantragt hat, können Sie private Informationen wie Textnachrichten und Telefonaufzeichnungen überwachen, ohne Berechtigungen zu beantragen, Bildschirmklickereignisse überwachen/simulieren und auf die privaten Verzeichnisse anderer zugreifen , DoS-Angriffe auf Android-Geräte durchführen usw.
Die meisten der oben genannten Verhaltensweisen können über den Befehl adb shell dumpsys erreicht werden. Weitere Informationen finden Sie unter dem Referenzlink [2].
0x03 Android-Backup-Problem
Dies ist ein sehr altes Problem. Bei Android-Systemen mit niedriger Version werden die privaten Daten dieser Anwendungen gesichert und anschließend extrahiert sie über spezifische Tools, wie unten gezeigt:
Was sind also im Allgemeinen die privaten Daten der Anwendung? Erstens werden es persönliche Daten sein, Identitätsanmeldeinformationen, Kontopasswörter , oder andere Anmeldeinformationen Im Allgemeinen sind Anwendungen sicherer, wenn es um private Daten geht. Daher werden sie von vielen Anwendungen direkt im Klartext gespeichert. Die Daten können beispielsweise entschlüsselt werden. Der von einem bestimmten Client gesicherte Inhalt enthält die folgenden Dateien:
Durch Reverse Engineering der APK können Sie den Entschlüsselungsprozess finden und Sie können es entschlüsseln, indem Sie die Entschlüsselungsklasse und -methode kopieren:
Ein weiterer Artikel ist der Verschlüsselungsprozess der WeChat-Datenbank und die Methode dafür Wenn die lokale WeChat-Datenbank uin und imei gleichzeitig generiert wird, kann der Verschlüsselungsschlüssel der Datenbank auf der Grundlage der beiden letzteren berechnet und die verschlüsselte Datenbank entschlüsselt werden , Sie Alle Chat-Aufzeichnungen waren direkt der Sonne ausgesetzt.
Zusätzlich zur direkten manuellen Entschlüsselung der Daten können Sie die Daten auch über ADB Restore intakt auf einem anderen Telefon wiederherstellen und so die Identität fälschen, wie zum Beispiel im Artikel auf droidsec „Stealing the Weibo of the goddess around you in two“. Minuten" Konto》(Referenzlink [4])
Jemand hat bemerkt, dass Sie bei der Verwendung von ADB-Backup manuell zur Bestätigung klicken müssen, bevor Sie die Sicherung durchführen. Wenn der Angreifer keine Möglichkeit hat, auf den Bildschirm zu klicken, Es wird kein Problem geben, aber Android verfügt über einen Mechanismus, der als Eingabe- und Ausgabesubsystem bezeichnet wird. Der Befehl sendevent kann unter der ADB-Shell ausgeführt werden und kann auf meinem Computer das folgende Ereignis simulieren kann den Klick simulieren und den Vorgang zulassen:
#EV_KEY BTN_TOUCH DOWN sendevent /dev/input/event7 1 330 1 #EV_ABS ABS_MT_POSITION_X 366 sendevent /dev/input/event7 3 53 366 #EV_ABS ABS_MT_POSITION_Y 690 sendevent /dev/input/event7 3 54 690 #EV_SYN SYN_REPORT 00000000 sendevent /dev/input/event7 0 0 0 #EV_KEY BTN_TOUCH UP sendevent /dev/input/event7 1 330 0 #EV_SYN SYN_REPORT 00000000 sendevent /dev/input/event7 0 0 0
0x04 Anhalten durch adb
Da Anwendungen über adb installiert werden können und es geräuschlos ist, kann es natürlich auch ohne aktiviert werden der Benutzer ist sich dessen bewusst.
Normale Pferde verfügen jedoch möglicherweise nicht über Symbole und Schnittstellen, um die Wahrscheinlichkeit zu erhöhen, entdeckt zu werden, und Anwendungen, die nicht gestartet wurden, können nicht ausgeführt werden, was bedeutet, dass der von ihnen registrierte BroadcastReceiver nichts empfangen kann. Dies erfordert einen Weckvorgang.
Glücklicherweise kann die ADB-Shell diesen Weckvorgang auch implementieren. Der Befehl ADB-Shell am kann bestimmte Komponenten bestimmter Anwendungspakete starten, sodass das Pony erfolgreich ausgeführt werden kann.
Natürlich wird es einfacher und grober sein, wenn der Angreifer über eine leistungsfähigere Methode verfügt, wie zum Beispiel das direkte ADB-Pushing eines Exploits und die Erhöhung der Root-Rechte.
0x05 Schadcode-Injektion
Diese Methode ist relativ elegant. Bei Verbindung mit dem USB-Debugging können Sie eine Reihe von Befehlen verwenden, um einen Codeabschnitt in die installierte Anwendung auf dem Telefon einzuschleusen Bösartiger Code, dieser Code kann eine einfache Begrüßung oder eine sehr komplexe Fernbedienung sein.
Um die Glaubwürdigkeit weiter zu erhöhen, können Sie eine Anwendung auswählen, die hohe Berechtigungen für die Injektion beantragt hat. Nach der Injektion wird beispielsweise eine Adressbuchverwaltungssoftware aufgefordert, Ihre Kontaktliste zu lesen mit dem Aufstehen.
Obwohl Wissenschaft und Industrie viele Maßnahmen ergreifen, um das Umpacken zu verhindern, ist die Erfolgsquote dieser Angriffsmethode in tatsächlichen Tests wirklich nicht niedrig, und selbst wenn die Injektion in eine Anwendung fehlschlägt, ist sie die brutalste Methode, die Sie auch verwenden können pm list packets -3, um alle Pakete aufzulisten, und versuchen Sie es erneut.
Unten habe ich ein einfaches Programm geschrieben, um eine Metasploit-Meterpreter-HTTP-Reverse-Shell-Nutzlast in eine Anwendung auf einem Mobiltelefon mit aktiviertem USB-Debugging einzufügen. Während des gesamten Vorgangs müssen keine Vorgänge auf dem Mobiltelefon ausgeführt werden . Der allgemeine Arbeitsablauf ist wie folgt:
Wenn Sie erneut auf die injizierte Anwendung klicken, erhalten Sie eine Meterpreter-Shell auf dem Handler, die auf dem Überwachungsserver geöffnet ist:
Mit den oben genannten Funktionen können Sie Android-Anwendungen auf dem Server fernsteuern. Nachdem Sie die Android Meterpreter-Shell erhalten haben, können Sie viele Dinge tun, einschließlich Datenschutzdiebstahl und Senden von Textnachrichten, Öffnen der Webseite, Erstellen von Screenshots und Fotografieren.
Sie können sogar Ihre Vorder- und Rückkameras zur Echtzeitüberwachung anrufen.
Einige der unterstützten Befehle sind wie folgt:
0x06 Schließlich
In Android-Versionen nach 4.4, wenn Sie eine Verbindung herstellen möchten Das Android-Gerät ADB erfordert eine Fingerabdruckverifizierung des Host-Rechners, wodurch die Möglichkeit eines Angriffs mit diesen Methoden erheblich verringert wird. Die heutige Android-Verwaltungssoftware auf dem PC fordert Sie jedoch dringend dazu auf, das USB-Debugging zu aktivieren, und zeigt Ihnen sogar Schritt für Schritt, wie man es einschaltet, sodass eine beträchtliche Anzahl von Menschen immer noch diesem Risiko ausgesetzt ist.
Wie aus dem Obigen hervorgeht, gibt es immer noch viele Dinge, die mit adb erledigt werden können. Das Obige ist nur eine unvollständige Liste, und es handelt sich um einige häufig verwendete kleine Methoden, wenn Sie dies vollständig verhindern möchten Wenn Sie mit den oben genannten Methoden angegriffen werden, besteht die einfachste und effektivste Möglichkeit darin, das USB-Debugging auszuschalten und zu versuchen, vertrauenswürdige Anwendungen von regulären Anwendungsmärkten herunterzuladen.
Stellen Sie sich vor, Sie befinden sich an einem Bahnhof oder an einem öffentlichen Ort und nutzen eine öffentliche Ladesteckdose, die jemand dort aufgestellt hat, und dahinter steht ein bösartiger Computer, den Sie zufällig ein- oder ausschalten sein Anreiz Als nächstes wird das USB-Debugging aktiviert...