Konferenz BLACK HAT. Wie man ein Spionagetelefon macht. Teil 2

Konferenz BLACK HAT. Wie man ein Spionagetelefon macht. Teil 1

Das nächste, was wir ändern müssen, ist das Manifest. Dies besagt, welche Dienste an der Anwendung beteiligt sind, über welche Berechtigungen sie verfügen usw.

Wir beginnen also mit dem Code selbst und mit dem Code des smali-Verzeichnisses. Wenn Sie sich den Angry Birds-Verzeichnisbaum ansehen, sehen Sie viele Ordner mit verschiedenen Komponenten, die in Form von Unterverzeichnissen angeordnet sind.



Ich weiß nicht einmal, welche dieser Dinge ich wirklich brauche und was sie tun, aber ich brauche sie nicht. Jetzt werde ich eine technische Sache von enormer Komplexität machen - das Droidwhisperer-Verzeichnis von hier aus aus dem SearchableDictionary-Verzeichnis hier in das Unterverzeichnis com / Burstly / Example / android des Smali-Verzeichnisses kopieren. Das ist alles, ich hoffe du verstehst worum es geht.

Daher wurde bei Bedarf eine Kopie unseres Codes eingefügt, aber es müssen noch einige weitere Schritte ausgeführt werden. Ich schaue noch einmal auf meine Cheat-Liste und sehe, dass es jetzt notwendig ist, Änderungen am Manifest vorzunehmen. Wenn wir das Manifest aufgreifen, müssen wir zuerst den Namen der Anwendung herausfinden - ich werde ihn rot hervorheben, später werden wir ihn brauchen, weil wir etwas in den vorhandenen Code eingefügt haben.

Daher ist die Aktualisierung des Manifests erforderlich, um den eingebetteten Spionagedienst und seine Berechtigungen in die Anwendung aufzunehmen. Es besteht aus folgenden Schritten:

- sich den Namen der ursprünglichen Bewerbung für später merken,
- Definition des Droidwhisperer-Dienstes
- Definition der Berechtigungen, die erforderlich sind, damit Droidwhisperer funktioniert.



Also nehme ich dieses Manifest und ziehe es in ein Notizbuch. Das erste, was ich in der Anwendung mache, ist, unseren Service zu definieren. Dazu finde ich die Funktion onCreate im Manifest in der Hauptaktion der Zielanwendung. Im Fall von Angry Birds war es com / rovio / ka3d / App. Danach habe ich den gelb hervorgehobenen Teil des Codes ausgeschnitten und ihn sofort nach dem Aufruf von involk-super in onCreate eingefügt.

Daher haben wir im Manifest angegeben, dass wir den Droidwhisperer-Dienst haben werden, der sofort nach seiner Verfügbarkeit gestartet werden sollte. Deshalb brauchten wir den Namen der ursprünglichen Anwendung com.rovio.ka3d.App. Wir verwenden ihn, um den neuen Namen unserer Anwendung com.rovio.ka3d einzugeben. service.Droidwhisperer.

Als nächstes kopiere ich die Berechtigungen für unsere Spionageanwendung und füge sie an der entsprechenden Stelle im Manifest ein - dies sind die grün hervorgehobenen Zeilen.



Nachdem wir die Änderungen vorgenommen haben, speichern wir das Manifest, das bereits die erforderlichen Berechtigungen enthält, und es wird der Dienst definiert, der beim Booten des Telefons gestartet werden soll. Dies ist also in Ordnung.

Android benötigt eine bestimmte Sache, die Anwendungen startet, daher muss die Angry Birds-Anwendung einen Code enthalten, der meinen Spionagedienst startet, sobald das ursprüngliche Spiel gestartet wird. Jetzt gehe ich in das Spielverzeichnis und finde dort den ka3d-Ordner, öffne ihn und kopiere die darin enthaltene App-Datei in den Editor. Dies ist Smali-Code, eine Version des Assembler-Codes für Dalvik. Wir verwenden die in Android enthaltene Funktion onCreate. Ich benutze die Notebook-Suche, um den Ort dieser Funktion zu finden. Hier benötigen Sie ein wenig Wissen über die Funktionsweise des Android-Betriebssystems. Mit der Funktion onCreate können Sie beispielsweise Superklassen aufrufen, dh Anwendungsaktivitäten erstellen oder neu starten. Hier füge ich meinen Code ein, der den Start eines Spionagedienstes einleiten soll. Ich kehre zu meinem Spickzettel zurück, kopiere die erforderlichen Zeilen von dort und füge sie hier ein.
Woher wusste ich, welchen Code ich hier einfügen sollte? Ich habe es gerade aus der ursprünglichen Anwendung kopiert, die ich geschrieben habe. Ich sagte, dass es für smali eine hervorragende Dokumentation gibt, sodass Sie sich nicht mit allem befassen müssen, um dies zu tun.



Erst kürzlich wurden einige "Verbindungs" -Sätze angekündigt, mit denen Sie den Empfang des erforderlichen Codes automatisieren können. Erst vor wenigen Wochen wurden solche Android-Entwickler-Toolkits veröffentlicht, mit denen Sie jeden Dienst erstellen und in eine vorhandene Anwendung implementieren können. All dies kann manuell erfolgen.

Sobald die onCreate-Funktion aufgerufen wird, wird unser Service aktiviert. Vergessen Sie nicht, dass Sie danach die geänderte Datei speichern müssen. Nachdem wir die entsprechende technische Schulung durchgeführt haben, müssen wir unsere modifizierte Anwendung zusammenstellen. Also gehe ich zurück zu Apk_tool und sammle Teile aus dem Angry Birds-Verzeichnis in das birds.apk-Verzeichnis. Also haben wir die ursprüngliche Anwendung neu erstellt, die erforderlichen Änderungen daran vorgenommen und die neue Assembly in einer Datei namens birds.apk abgelegt.

Wenn Sie versuchen, diese geänderte Anwendung jetzt auf Ihrem Android-Telefon zu installieren, wird er Sie darüber informieren, dass diese Anwendung nicht signiert ist. Wir müssen sie daher signieren. Dazu erstelle ich ein selbstsigniertes digitales Zertifikat mit dem entsprechenden öffentlichen Schlüssel und speichere es in meinem Inject-Arbeitsverzeichnis. Dies ist eine Datei namens Schlüssel.



Dies ist nur ein Zertifikat, das ich selbst erstellt habe. Jetzt gehe ich zurück und nehme diesen mächtigen und lakonischen Befehl aus meiner Krippe:

jarsigner -verbose -keystore keys birds.apk alias_name

Um nichts zu verwirren, schneide ich es einfach aus und platziere es an der richtigen Stelle. Also werde ich die Datei birds.apk mit meinem eigenen Schlüssel signieren, es ist ziemlich einfach. Dann gebe ich den Befehl und signiere alle Anwendungskomponenten mit diesem digitalen Schlüssel. Jetzt kann ich es im AppStore bei Google Play platzieren - überall.

Wie ich bereits sagte, hat das Telefon keine Schnittstelle, die den Benutzer anzeigt, der was signiert hat. Sobald die Anwendung signiert ist, kann sie installiert werden. Niemand kann sagen, wer diesen Antrag unterschrieben hat, und das ist einfach großartig.

Die modifizierte Version von Angry Birds sieht also genauso aus wie das ursprüngliche Spiel und funktioniert genauso, außer dass sie meinen Spionagecode enthält. Jetzt sehen Sie auf dem Bildschirm digitale Signaturen von Kevin McNami von Kindsite.
Eine andere interessante Sache, die ich Ihnen zeigen werde, ein wenig zurück. Wir sehen uns die Originalanwendung an - sie ist von Rovio Mobile Ltd. signiert. Sehen Sie sich das Datum der Signatur an - dieses digitale Zertifikat ist bis zum 26. August 2010 gültig, aber die Anwendung ist ohne Frage auf dem Telefon installiert. Selbst wenn sich Ihr digitales Zertifikat in Müll verwandelt hat, haben Sie dennoch das Recht, die Anwendung zu installieren, dh niemand überprüft sie. Ich denke, dies ist eines der schwerwiegenden Mängel des Android-Sicherheitsmodells.

Tatsache ist, dass es keine strikte Überprüfung der verwendeten digitalen Zertifikate gibt. Dieses Problem kann gelöst werden, indem diejenigen, die ein digitales Zertifikat erhalten möchten, zur Registrierung aufgefordert werden. Also zurück zu unserer Präsentation. Ich möchte noch einmal auf digitale Signaturen eingehen.



Alle Bewerbungen müssen unterschrieben sein. Jede alte Signatur bleibt gültig, wenn sie selbst signiert ist. Die Signatur wird nur bei der Installation der Anwendung überprüft. Das heißt, ich kann jede bereits auf dem Telefon installierte APK-Datei ändern, und das System reagiert in keiner Weise darauf. Dies ist eine ziemlich bedeutende Sicherheitslücke. Wenn Sie die APK-Datei auf Ihrem Telefon ändern möchten, müssen Sie Zugriff auf die Verzeichnisse haben, in denen solche Dateien gespeichert sind. Es ist jedoch nicht schwierig, Root-Rechte zu erhalten, um mit dem Telefon etwas zu tun.

Das zweite, was mich stört, ist, dass es keine Benutzeroberfläche gibt, die anzeigt, wer die Anwendung signiert hat. Bei der Installation der Anwendung sollte beispielsweise eine Inschrift angezeigt werden, die von Kevin McNami von Kindsite signiert wurde. Ich stelle fest, dass die Signatur für eine verschobene oder aktualisierte vorhandene Anwendung übereinstimmen muss, sodass ich die vorhandene Version von Angry Birds nicht ersetzen könnte, wenn ich den Namen meiner Spyware nicht geändert hätte. Aber sobald ich das tat, traten keine Probleme auf. Android-Entwickler behaupten, dass das Zertifikat nicht von einem autorisierten Center signiert werden muss und Android-Anwendungen meist selbstsignierte Signaturen verwenden.

Bevor ich anfange, die Fragen zu beantworten, möchte ich sagen, dass es eine ganze Branche von Spyware für Telefone gibt. Sie sollen Ihre Lieben, Ihre Kinder oder Geschäftspartner überwachen.



Früher wurden sie zur Überwachung untreuer Ehepartner eingesetzt, jetzt hat sich ihr Zweck geändert. Sie können beispielsweise Ihre Kinder überwachen, um ihre Sicherheit zu gewährleisten. Dies ist völlig legal. Ich denke jedoch, dass Spionagetelefone besser für die Verwendung im BYOD-System geeignet sind. Sie können dem Spionagemodul jede Funktionalität geben und es in eine beliebige Anwendung einfügen, und der Benutzer weiß nichts darüber. Dies ist ideal für Industriespionagezwecke, daher erweitern diese Geräte den Umfang der laufenden Sicherheitsbedrohungen.

Dies ist also ein voll funktionsfähiges Netzwerkgerät. Wenn ich bei der Arbeit eine Verbindung zu Wi-Fi herstelle, kann ich auf diesem Telefon Software installieren, die Netzwerke nach Schwachstellen durchsucht. Gleichzeitig wird es bei Bedarf aktualisiert und die gestohlenen Informationen an die Command & Control-Website gesendet. Das heißt, ein infiziertes Mobiltelefon ist eine erweiterte Plattform für ständige Sicherheitsbedrohungen mit enormen Angriffsmöglichkeiten. Zum Beispiel geht jemand mit einem solchen Telefon in das Gebäude, scannt die Netzwerke und greift sie dann von innen an. Natürlich schützen Benutzer ihre Internetverbindung durch Firewalls und ähnliche Firewalls, aber dieses Gerät stellt eine direkte Verbindung zu Netzwerken über die Luft her, ein Spionagetelefon stellt überall dort eine Verbindung zum Netzwerk her, wo sich ein Zugangspunkt befindet, und hier hilft keine Firewall. Tatsächlich gelangen Telefone durch die Hintertür in das Netzwerk. Ein Spionagetelefon ist ziemlich cool, aber hier haben wir einen Trojaner mit Fernzugriff, und ich denke, es ist ziemlich gefährlich.

Ich glaube, ich habe alles gesagt, worüber ich sprechen wollte, und jetzt bin ich bereit, alle Fragen zu beantworten.
Die erste Frage ist also, ob diese bestimmte Anwendung versucht, ihre Anwesenheit zu verbergen. Die Antwort lautet "Nein". Dies ist nicht der Fall. Wenn Sie sich die auf dem Telefon ausgeführten Dienste ansehen, werden Sie sie dort sehen. Ich denke, es könnte ein versteckter Prozess sein, aber in diesem Fall wurde unser „Spionagetelefon“ erstellt, um das Konzept einer Bedrohung zu demonstrieren.

Kann unsere Anwendung von einem Antivirenprogramm erkannt werden? Nein, das Antivirenprogramm zählt dieses Spionagemodul nicht, da es nichts darüber weiß. Es wäre möglich, den Code weiter zu verwirren und ihn dann in die Anwendung einzufügen, und ein solcher Prozess kann automatisiert werden.
Was kann einer solchen Spyware-Anwendung entgegengesetzt werden? Sie können in jedem Fall ein Antivirenprogramm verwenden, das bekannte schädliche Anwendungen erkennt. Wir haben uns jedoch auf den Datenverkehr konzentriert, der an die Command & Control-Website gesendet wird. Wahrscheinlich wäre es möglich, den Prozess der Codeverschleierung zu automatisieren, aber es ist sehr schwierig, das Kommunikationsprotokoll mit dem Befehls- und Steuerungsserver im laufenden Betrieb zu ändern. Sie müssen den Server selbst ändern, Clients ändern und all das. Daher empfehlen wir, beide Schutzmethoden zu kombinieren: Virenschutz gegen bekannte schädliche Anwendungen und Überwachung des Netzwerkverkehrs, der vom Spionagegerät an die Command & Control-Website gesendet wird.



Ich werde die Frage beantworten, was die Anforderung für das Zusammentreffen digitaler Signaturen beim Verschieben oder Aktualisieren der Anwendung bedeutet. Wenn Sie die Anwendung zum ersten Mal auf Ihrem Telefon installieren, haben Sie keine Probleme damit. Wenn das Telefon jedoch bereits über die ursprüngliche Anwendung verfügt und Sie diese durch eine neue Kopie mit einer anderen digitalen Signatur oder eine geänderte Anwendung mit demselben Namen ersetzen möchten, ist dies nicht erfolgreich, da das Telefon die ursprüngliche Signatur in der Anwendung mit der geänderten Version und dem Hinweis vergleichen kann dass sie nicht übereinstimmen. In diesem Fall habe ich den Schutz umgangen, indem ich einfach den ursprünglichen Anwendungsnamen durch einen anderen Namen ersetzt habe.

Der Command & Control Server kann mit allen Android-Funktionen interagieren und seine API verwenden. Sie können per Fernzugriff Root-Zugriff erhalten, Dateien auf Ihr Telefon hochladen und im Allgemeinen nach eigenem Ermessen entsorgen, da Android zahlreiche Möglichkeiten für den offenen Zugriff auf Ihr Telefon über das Netzwerk bietet. Ich denke, dass die gleiche Funktionalität auch auf der iOS-Plattform verfügbar ist. Nur die Entwickler dieses Betriebssystems nehmen die Sicherheit neuer Anwendungen ernst. Sie sollten beispielsweise ein Zertifikat von ihnen erhalten, das Ihre Person als Anwendungsentwickler zertifiziert. Die Anwendung selbst wird überprüft, bevor sie in den App Store gelangt, während Google die Anwendung überprüft, nachdem sie im Play Market veröffentlicht wurde.

Ich kenne die Details des Google Play App Store nicht, aber ich denke, wenn der Entwickler einen schlechten Ruf hat oder die Anwendung kompromittiert ist, wird sie nicht im Store angezeigt. Es gibt jedoch viele andere mobile Online-App-Stores, in denen ein Angreifer eine schädliche Anwendung hosten kann. Dies ist eine Art Phishing-Angriff, wenn wir einen Benutzer zwingen, diese Anwendung von überall herunterzuladen, indem wir Links dazu verschieben.
Tatsache ist, dass alle Funktionen in unserer Spyware-Anwendung wie gewohnt aussehen. Es gibt nichts Illegales, das diese Anwendung versuchen würde. Bei der Installation müssen dieselben Berechtigungen wie für legale Anwendungen erteilt werden. Eine andere Sache ist, wie diese Funktionen später verwendet werden. Wenn jemand meldet, dass es sich bei droidwhisperer um einen Virus handelt, können auf dem Telefon installierte Antivirenprogramme keine Installation installieren, die ihn enthält.

Wie ich bereits sagte, kann Spyware von Websites von Drittanbietern heruntergeladen werden. In diesem Fall besteht der Phishing-Angriff darin, dass Sie detaillierte Installationsanweisungen erhalten und anbieten, dieses Spiel kostenlos herunterzuladen, da es ein so cooles Spiel ist und Sie nicht dafür bezahlen müssen, indem Sie das Original im Google Store herunterladen. Normalerweise wird der Benutzer von einem solchen Angebot verführt.

Ich stelle fest, dass wir uns nicht vorgenommen haben, durch Verschlüsselung geschützte Netzwerke zu durchdringen, sondern einfach mit einem verfügbaren Netzwerk verbunden zu sein. Danke für die Aufmerksamkeit!



Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden empfehlen, einen Rabatt von 30% für Habr-Benutzer auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s bis Januar kostenlos, wenn Sie für einen Zeitraum von sechs Monaten bezahlen, können Sie hier bestellen.

Dell R730xd 2 mal günstiger? Nur wir haben 2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?

Source: https://habr.com/ru/post/de434054/


All Articles