Sonntag, 14. April 2024

[DE] Android App Analyse kleinanzeigen.de (com.ebay.kleinanzeigen)

Inspiriert durch die verschiedenen CTF (Capture the Flag) sowie durch den Podcast "Digital Forensics Now" von Heather Charpentier und Alexis "Brigs" Brignoni habe ich mir vorgenommen, eine App auf einem Android-Gerät zu untersuchen. Hierbei wollte ich eine App analysieren, die ich regelmäßig nutze. Dabei ist die Wahl auf das in Deutschland populäre Kleinanzeigen Portal "kleinanzeigen.de", ehemals "eBay Kleinanzeigen", gefallen. 
Hauptsächlich wird die App in Deutschland als lokale Handelsplattform genutzt. Es wird auch eine Website angeboten. Die Android-App ist im Google PlayStore und auch bei apkpure.com erhältlich. 
Ansicht der App ohne Internetverbindung.
Bei der Nutzung der App fiel auf, dass diese App nur funktioniert, wenn eine aktive Internetverbindung besteht.
 

Genutzte Datensicherungen zur Analyse

1.) Full-File-Datensicherung eines Samsung Galaxy A 22 5G (SM-A226B/DSN) mit Android 13
    com.ebay.kleinanzeigen App-Version  15.23.0 vom 08.03.2024
    com.ebay.kleinanzeigen App-Version  15.26.0 vom 28.03.2024
    com.ebay.kleinanzeigen App-Version  15.27.0 vom 04.04.2024
2.) Full-File-Datensicherung eines Samsung M30s (SM-M307FN/DS) mit Android 11
    com.ebay.kleinanzeigen App-Version   15.16.0 vom 17.12.2023

Vorgefundene Ordnerstruktur in den Datensicherungen

In der Analyse wurden folgende Ordner eingehend untersucht

• \data\data\com.ebay.kleinanzeigen\*
• \data\media\0\Android\data\com.ebay.kleinanzeigen\*
• \data\user_de\0\com.ebay.kleinanzeigen\*

Hier wurden folgende Dateien mit interessantem Inhalt ausgemacht.

• \data\data\com.ebay.kleinanzeigen\shared_prefs\com.ebay.kleinanzeigen_preferences.xml

• \data\data\com.ebay.kleinanzeigen\files\NON_RESETTABLE_RECENT_SEARCHES_CACHE

• \data\data\com.ebay.kleinanzeigen\files\RECENT_SEARCHES_CACHE

• \data\data\com.ebay.kleinanzeigen\databases\messageBoxDatabase.db
\data\data\com.ebay.kleinanzeigen\databases\messageBoxDatabase.db-shm
\data\data\com.ebay.kleinanzeigen\databases\messageBoxDatabase.db-wal

 

Die Datei com.ebay.kleinanzeigen_preferences.xml enthält einige Angaben zum verwendeten Account. Diese Daten sind z.B.

<string name="LAST_EMAIL_USED">email@adress.com</string>

<string name="AUTH_USER_EMAIL">email@adress.com</string>

<string name="USERPROFILE_TRACKING_USER_ACCOUNT_TYPE">private</string>

<string name="AUTH_USER_ID">1000000</string>

<string name="USERPROFILE_LOCATION_LONGITUDE_KEY">13.520000</string>

<string name="USERPROFILE_LOCATION_LATITUDE_KEY">52.4600000</string>

<string name="USERPROFILE_NAME_KEY">Rudi</string>
Die Dateien RECENT_SEARCHES_CACHE und NON_RESETTABLE_RECENT_SEARCHES_CACHE enthalten JSON Datensätze zu den letzten Suchen, die in der App durchgefürt wurden.

{"searchTerm":"apple time capsule","category":{"id":"0","localizedName":"Alle Kategorien","internalName":"Alle Kategorien","hasFakeSubCategory":false,"idAsInt":0},"termSearchTimestamp":1709883798862},

Die Datenbankdatei messageBoxDatabase.db enhthält folgende Tabellen

Interessant ist hier die Tabelle "conversations".

Diese ist wie folgt auf gebaut:

Jede Kontaktaufnahme in der App zu einer Anzeige ist eindeutig über die Spalte "identifier" ansprechbar. Details zu einer Anzeige sind auf dem Gerät nicht gespeichert und liegen nur per API-Zugriff bei der Nutzung der App vor. Die Spalte "ad" enthält JSON-Daten zur Anzeige. Hier die eindeutige Anzeigen-Nummer, den Veröffentlicher der Anzeige sowie die Überschrift der Anzeige.

{"displayImageUrl":"https://img.kleinanzeigen.de/api/v1/prod-ads/images/0a/0a3e00c3-2578-4ed1-9de9-4da78be08bce?rule\u003d$_12.JPG","displayPrice":"","displayTitle":"Meine Kleinanzeige","identifier":"1234567890","poster":{"identifier":"87654321","imageUrl":"","name":"User Seller"}}

Diese Angaben zur Gegenseite sind in der Spalte "counterParty" auch als JSON-Datensatz gespeichert. Der Wert "identifier" enthält die eindeutige Benutzer-ID sowie den angezeigten Benutzer-Namen.

{"identifier":"87654321","imageUrl":"","name":"User Seller"}

Der sehr interessante Teil der Tabelle "conversations" ist die Spalte "messages". Auch hier sind die Daten als JSON vorliegend. Jede neue Nachricht wird dem bereits gespeicherten Wert angefügt. 

{"attachments":[{"mimeType":"image/jpeg","url":"https://api.ebay-kleinanzeigen.de/api/users/1089969/conversation-attachments?messageId\u003d3ded2722-ae46-11ee-8f31-0ff44f34ecac\u0026filename\u003dek-yams-6276062e7f7845c1b6dea7544ebde9ad-977E3451-E4A3-445E-9A23-0A3A8516863E.jpg"}],"identifier":"3ded2722-ae46-11ee-8f31-0ff44f34ecac","sender":"COUNTER_PARTY","sortByDate":"Mon, 08 Jan 2024 17:52:00.704 GMT+01:00","state":"DELIVERED","text":"Viel Spaß damit"}

Der Zeitpunkt der Nachricht ist im Objekt "sortByDate" ersichtlich. Der Text der Nachricht sind in "text" gespeichert. Es können den Nachrichten in der App auch Anhänge (z.B. Bilder) beigefügt werden. Diese werden nach meiner Analyse nicht auf den Gerät gespeichert, sondern beim Abruf der Nachrichten in der App per API-Zugriff heruntergeladen. Der Pfad sowie des Mime-Typs sind im Objekt "attachments" gespeichert. Im Objekt "sender" kann der Gerätebesitzer mit "ME" und das Gegenüber mit "COUNTER_PARTY" verknüpft werden. Den Status der Nachricht sind im Objekt "state" gespeichert. Mit diesen Daten lässt sich der Nachrichtenverlauf rekonstruieren. Ein weiteres Objekt ist "warning" mit den Unterobjekten "links" und "message". Hierbei wird in der App eine Warnung mit der "message" und den "links" angezeigt. 

Eine Ansicht auf dem Smartphone kann wie folgt aussehen

Nachrichten-Ansicht in der App

Zur Auswertung der Daten aus der Analyse habe ich ein Plugin für aLEAPP geschrieben. Mein Plull-Request ist hier zu finden: https://github.com/abrignoni/ALEAPP/pull/474.

Die Auswertung mit aLEAPP sieht wie folgt aus:

Nachrichtenübersicht

Nachrichten Übersicht in aLEAPP

Nachrichtenansicht zu einer Anzeige

Nachrichtenansicht zu einer einzelnen Anzeige

Ansicht in der Navigation

Navigationsansicht



Für Fragen und Anregungen stehe ich zur Verfügung.
🖐🖐

Mein Linkedin Profil: https://www.linkedin.com/in/bruno-fischer-5b4a182b1/


Keine Kommentare:

Kommentar veröffentlichen

[EN] android app analysis kleinanzeigen.de (com.ebay.kleinanzeigen)

Dieser Blog-Post ist auch in Deutsch verfügbar. Inspired by the various CTFs (Capture the Flag) and the podcast " Digital Forensics No...