"Soziale Überwachung." Ergebnis 1: 0 zu unseren Gunsten

Einführung


Die Anwendung kam heraus → sah ein leises Entsetzen → begann negative Bewertungen zu schreiben → sortiert nach den Regalen → Die Anwendung wurde gelöscht (zur Überarbeitung gesendet).

Hallo allerseits, in diesem Artikel möchte ich Ihnen, wenn alles vorbei ist, die beiden wichtigsten Phasen des oben genannten erläutern.

Welche Art von Bewerbung kann hier gelesen werden .
Und über die Ausreden und das Senden zur Überarbeitung hier .

Unter dem Schnitt werden wir mit Ihnen sehen, was wir zu Beginn der Analyse der Anwendung gesehen haben, und alle interessanten Punkte aus dem Code durchgehen. Wir werden die undichte Anwendung genießen und nicht akzeptieren, wie lange wir sie gemacht haben.

Hintergrund


Alles begann für mich im TelegrammkanalIT and COPM “. Ich habe nicht sofort einen Beitrag mit einem Link zur Anwendung im Play Market und den unten stehenden apk gesehen . Erst nach ungefähr 30 Minuten entschied ich mich nach der Anzahl der Beiträge in diesem Kanal zu lesen. Zu diesem Zeitpunkt hatten die Jungs die Anwendung bereits dekompiliert und aktiv beobachtet, wohin die Daten gesendet wurden. Sie zogen einige Endpunkte heraus, Hosts, ein Token, und begannen, Screenshots von Codeteilen zu veröffentlichen. Nachdem sie apk's angewendet hatten, baten sie jemanden, den dekompilierten Code auf GitHub zu veröffentlichen - nach anderthalb Stunden wurde er veröffentlicht . Dann habe ich verbunden ...

Hauptteil


Sichern


Am Anfang möchte ich sagen , dass in der Anwendung ein Token für die Arbeit mit dem war Identix.one Gesichtserkennung Service API . Diese Leute arbeiten so, dass sie zuerst die Benutzerdatenbank mit Fotos und Daten laden müssen, und erst dann können sie Fotos zur Erkennung senden. Das Token befand sich in der Anwendung und arbeitete mit der API dieses Dienstes über den Client und nicht über Ihr Backend. Auf diese Weise kann jeder Benutzer, der einen Token herausgerissen hat, Fotos von Bürgern der Russischen Föderation hochladen und Informationen über diese erhalten. Hört sich toll an. Nachdem ich mir die Tarife dieses Dienstes angesehen hatte, stellte ich fest, dass dies im Allgemeinen für CCTV-Kameras gilt. Für jede Kamera muss man einen guten Betrag bezahlen und war überrascht, wie viel die Anwendungsentwickler dafür bezahlen mussten.





Als ich in den Abschnitt zur API- Dokumentation ging , schien es mir interessant, eine geladene Benutzerbasis und andere Dinge zu erhalten. Also habe ich beschlossen, die Anfrage zu erfüllen und den Token zu überprüfen. Zum Glück oder leider wurde das Token deaktiviert, was ich dem Besitzer des IT- und COPM-Kanals sofort über Twitter mitteilte .

Ich begann mein Studium mit einem Rücken, weil ich dort etwas Interessantes finden wollte ( zum Beispiel sql inj ). Wir hatten bereits Hosts und einen Link, um in das Admin-Panel zu gelangen. Im Admin-Bereich und ging. Bei sofortiger Betrachtung der Abfragen wurde klar, dass dies eine Art Atmosphere Framework ist. Als ich den wilden Arsch in Anfragen sah, wie er markiert, welcher Knopf gedrückt wurde, welche Flagge im Formular gesetzt war, war ich niedergeschlagen. Ich wollte mich nicht damit befassen und habe das Maximum getan, das ich getan habe. Ich habe "Atmosphere Framework CVE" in Google eingefügt. Als ich mir die Schlagzeilen schnell ansah, sah ich nichts Interessantes außer XSS und ging weiter. Und dann ging ich zu anderen Endpunkten, die wir kennen.

Diese Endpunkte waren Stifte zum Starten und Beenden Ihrer Arbeit. Welches würde die Zeitspanne charakterisieren, die bei der Arbeit verbracht wird. Es gab bereits einen Code. Ich öffnete das Projekt, schrubbte an der richtigen Stelle und begann, die Parameter zu studieren. Unter ihnen waren deviceEUI , idxid , Breitengrad und Längengrad. Wenn bei den letzten beiden sofort klar ist, dann bei den ersten - nein. Nachdem ich N die Anzahl der Minuten für den erfolgreichen Abschluss der Anfrage aufgewendet hatte , entschied ich mich für den verweigerten Zugriff .

Um das Studienobjekt zu verstehen, habe ich mich entschlossen, die Anwendung selbst herunterzuladen. Ich habe es heruntergeladen, konnte mich aber nicht mehr anmelden ... Zu diesem Zeitpunkt hatten sie das Backup erstellt (aber ich wusste es noch nicht).

Nachdem ich den Projektcode nicht auf GitHub , sondern vollständig in Ideen geöffnet hatte , suchte ich nach neuen Endpunkten. Gefunden! Name passend: / api / covid / Gerät ...

Ich begann bereits in diesen Stiften zu recherchieren. Lange habe ich nicht verstanden, wie die Autorisierung abläuft, wo sich der Header mit einem Token oder etwas anderem befindet. Und dann dämmerte es mir ... Sie ist weg! Nachdem ich dies sichergestellt hatte, nachdem ich die Verarbeitung und Generierung von Anfragen analysiert hatte, kam ich zu meiner Schlussfolgerung im Backend-Teil und schickte sie erneut an Twitter .

Fazit zum Backend-Teil : Die Registrierung erfolgt durch Senden von Informationen zu Ihrem Gerät (Telefon). Dies beinhaltet die Adresse, Telefonnummer, den Namen usw. Unmittelbar nach der Registrierung benötigen sie ein Foto von Ihnen und laden es in Ihr Profil hoch. Um anzuzeigen, um welches Foto es sich handelt, wird in der Anforderung ein zusätzlicher Parameter angegeben - IMEI . Es befindet sich im Feld deviceId des Device- Modellsdass wir im ersten Schritt der Registrierung gesendet haben. Es gibt keine Bestätigung, dass IMEI Ihnen gehört. Es lohnt sich, jemand anderen zu senden - und Sie haben die Anfrage erfolgreich abgeschlossen, angeblich von einem anderen Gerät. Es ist bemerkenswert , dass unter den Endpunkten ist / api / covid / Gerät / Kennwort ist jedoch die Verarbeitung der Antwort folgt als:



Nach dem vollständigen Registrierung, die API kehrt Berechtigungscode , aber leider dieser Code im Objektfeld und liegt dort gespeichert ist, verstauben. Nicht an der Bildung anderer Anfragen beteiligt.

Ohne Authentifizierung kann daher jeder Benutzer IMEI kennenEine Person (oder das Abholen / Sortieren) kann einen falschen geografischen Standort senden, ein Foto hochladen, den Status über den Beginn des Arbeitstages senden und so weiter.

Ich würde gerne mit einer so lustigen Implementierung spielen, aber leider war alles ausgeschaltet.

Seit dieser Zeit bin ich vollständig auf den Code gestoßen und habe beschrieben, was ich in meinem Telegrammkanal sehe . Es stellte sich als völliger Unsinn heraus, ohne dass ein Zusammenhang zwischen den Absätzen bestand, aber nach diesem Beitrag fand ich die Kraft (es waren bereits 2-3 Nächte), es neu zu schreiben und lesbar zu machen.

Anwendungsanalyse


Es ist sofort erwähnenswert, dass die Anwendung zu diesem Zeitpunkt nicht mehr funktionierte. Daher hatte ich keine Ahnung, dass es visuell sein könnte. Er studierte alles blind und per Code, was bei weitem nicht alles war! Wir alle wissen, was Dekompilierung ist, aber was passiert ist, hat gereicht, um bestimmte Schlussfolgerungen zu ziehen.

Die Anwendung speichert Informationen zu Ihrem Gerät, Namen, Telefonnummer und Adresse. Es gibt dunkle Felder wie Kommentare . Und es gibt interessante - einen Arzt.

Zur Identifizierung von Gesichtern wird der Identix- Dienst verwendet (der gleiche Parameter aus dem hinteren Teil). Hier können Sie Alter, Geschlecht und andere Informationen aus dem hochgeladenen Foto zurückgeben. Es gibt eine eindeutige Kennung einer Person, die in der Anwendung verwendet wird.

Für die Navigation werden zwei Arten von Geräten verwendet: Bluetooth, WLAN. Beide haben einen Namen und RSSI (Signalqualität, die über die Entfernung zu einem Punkt spricht).

Ihre Geolokalisierung erhalten Sie dank Google und GPS- Modul.

Unter den verschiedenen Arten von gespeicherten Informationen gibt es einen Ort. Überraschenderweise hat es eine Vielzahl von Feldern. Einschließlich des Akkuladestandes, der Anzahl der Schritte (trotz des separaten Modells hierfür) und mehr.

In den Einstellungen können Sie das Telemetrieintervall einstellen. Sowohl Abholung als auch Versand. Ich bin mir nicht sicher, ob diese Parameter geändert werden können.

Es gibt drei verschiedene Arten von eindeutigen Kennungen:

  • IMEI-Geräte.
  • Geräte-ID (nicht untersucht).
  • MAC-Adresse von WiFi.

Was ich oben über die Übertragung und Auswahl von IMEI geschrieben habe, ist daher zum besseren Verständnis eine Vereinfachung . Dies ist tatsächlich eine von drei Kennungen.

Ihre ID hängt davon ab, über welche Version des SDK Sie verfügen . Einfach ausgedrückt, ist es möglich, die eine oder andere Art von eindeutiger Kennung zu erhalten. Anwendungsentwickler selbst sind verwirrt und können nicht in einem Namen konvergieren.

Der einzige Ort, an dem ich den Code in den Artikel eingefügt habe.

if (Build.VERSION.SDK_INT >= 29) {
    return getMac(context);
}
return getImei(context);

Und in getImei gibt es ein Wenn:

if (Build.VERSION.SDK_INT >= 26) {
    str = telephonyManager.getImei();
} else {
    str = telephonyManager.getDeviceId();
}

Die Anwendung kann auch eine SIM-Kartennummer erhalten, jedoch nur in schwierigen Fällen. Es gibt eine Gelegenheit - es wird. Mit der Text- ID wird

ein QR- Code generiert , der drei Typen haben kann. Dieses Thema sowie der Gesichtserkennungsdienst wurden von jedermann diskutiert. Ich konzentriere mich nicht . Ein interessantes Merkmal der Anwendung sind Push-Benachrichtigungen an Sie auf dem Gerät. Entwickler können Befehle aus der Ferne senden und werden von Ihnen ausgeführt. Eines der Teams heißt OPEN_CAMERA . Eine andere - SERVER_ADDRESS_KEY - hier höchstwahrscheinlich in Analogie zu Telegram . Wenn es blockiert wurde, wurden neue IPs an alle Benutzer gesendet

Adressen und wir weiterhin den Messenger verwenden. Darüber hinaus können sie das Intervall für das Senden und Sammeln von Telemetrie aus der Ferne festlegen. Hier über mögliche Push- Benachrichtigungen .

Sie können natürlich immer noch über den Avatar sprechen, wie er gedreht werden kann, wie er lokal gespeichert wird und wie er normalisiert wird. Sie können über den Wunsch sprechen, eine automatische Aktualisierung der Anwendung durchzuführen, aber Sie hatten keine Zeit, über die Möglichkeit, nach Nummer zum Dialer zu gehen, eine Kontaktliste zu führen (das primitivste Adressbuch ist Name und Nummer), über die Tatsache, dass sie mit der Anzahl der aktiven Dateipunkte interagieren aber es ist alles langweilig.

Fazit


Weißt du, ich werde nicht sagen, wie schlecht sie sind, ich werde nicht sagen, wie gut sie sind. Jeder wird für sich selbst eine Schlussfolgerung ziehen. Kritische Fehler, Schwachstellen und Spionagesachen, die ich Ihnen skizziert habe. Ich kann nur sagen, dass trotz der Fristen in keinem Fall die Entwicklung einer offensichtlich anfälligen Anwendung erlaubt sein sollte.

Ich kann nur den Zusammenhalt der Menschen bemerken. Jeder begann, seine Erkenntnisse zu teilen, aktiv zu sein und wer dies nicht konnte - setzen Sie 1 in die Bewertungen ein. 4207 Einheiten wurden von mir so weit wie möglich erfasst und das Fehlen (meiner Meinung nach) anderer Bewertungen.

Die gleiche Wahnbotschaft mit Entwürfen und die ursprüngliche Schlussfolgerung auf dem Hintergrund befinden sich in meinem Telegrammkanal und befinden sich unter den Links im Profil.

Das Letzte, was ich Ihnen zeigen möchte, ist, dass dies eine Funktion des "illegalen" Abrufens der MAC- Adresse aus ihrem Code ist und dasselbe beim Stackoverflow (danke ntoskrnl):

Und wie immer, danke fürs Lesen bis hierher!

PS Jeder kann einen Fehler machen und ich bin keine Ausnahme. Vielleicht stimmte etwas nicht, vielleicht verstand ich die Implementierung nicht ganz. Jetzt werden sie kommen und sagen, dass bei der Registrierung die IP gespeichert wird und es unmöglich ist, Anfragen an eine andere Person auszuführen, oder ?! Und ich werde antworten, dass es Unsinn ist und dann der Eigentümer selbst den Zugriff verliert, wenn er sich wieder mit dem Mobilfunknetz verbindet ... Im Allgemeinen sind die Kommentare offen!

All Articles