Aller au contenu

OpShieldWall-2

·11 mins· loading · loading · ·
Sherlock Android Forensic Medium Autopsy
Jaybird1291
Auteur
Jaybird1291
Sommaire

Scénario
#

Nous avons rĂ©ussi Ă  confirmer la localisation de l’acteur malveillant qui a compromis le rĂ©seau WiFi de notre gouvernement.

RĂ©cemment, un raid Ă  l’aube dans le cadre de l’OP ERADICATE a Ă©tĂ© menĂ© Ă  une adresse dans la capitale vĂ©lorienne et une quantitĂ© considĂ©rable d’Ă©lĂ©ments de preuve a Ă©tĂ© saisie. On notera en particulier un appareil Android appartenant Ă  l’agent, dont on pense qu’il se trouvait sur le lieu de l’attaque.

Nous avons besoin de votre expertise pour analyser cet appareil et rĂ©pondre aux questions dĂ©taillĂ©es ci-dessous. Vous n’avez pas beaucoup de temps, une rĂ©union du COBR vĂ©lorien a Ă©tĂ© organisĂ©e pour discuter de vos rĂ©sultats…

Fichiers
#

  • opshieldwall2.zip contenant “EVIDENCE-CASE-RAVENSKIAN-AGENT-002” oĂą on le retrouve le dossier “data” et “storage” d’un Android

Cela nous laisse pas mal de marge de manĹ“uvre, en effet, le /data contient Ă©normĂ©ment d’informations telles que :

Cheatsheet SANS FOR585

Avant propos
#

Avant de commencer, voici quelques informations importantes sur Android :

Les donnĂ©es utilisateur peuvent ĂŞtre stockĂ©es en interne et en externe sur Android. Les donnĂ©es internes sont enregistrĂ©es dans la mĂ©moire flash NAND, une mĂ©moire non volatile qui conserve les donnĂ©es mĂŞme en cas de coupure d’alimentation. La NAND stocke le bootloader, le système d’exploitation et les donnĂ©es utilisateur. Les donnĂ©es des applications sont stockĂ©es sur la mĂ©moire flash NAND ou sur la carte SD.

Android est basĂ© sur des variantes des branches LTS (long-term support) du Kernel Linux. Avec Android v8 (Oreo), Google a imposĂ© l’utilisation de la version 4.4 ou supĂ©rieur du Kernel Linux. Par exemple Android v9 (Pie) fonctionne sur les versions 4.4, 4.9 ou 4.14 selon l’appareil. Plus d’info disponnible sur le wiki d’Android OS https://source.android.com/docs/core/architecture/kernel/android-common?hl=fr.

android-mainline est la principale branche de développement des fonctionnalités Android. La ligne principale Linux est fusionnée avec android-mainline chaque fois que Linus Torvalds publie une version ou une version candidate :

Android Common Kemel Branching Model

On retrouve principalement ces systèmes de fichiers :

  • EXT4
  • F2FS
  • YAFFS2
  • exFAT

La plupart des artefacts sont des DB SQLite et des fichiers XML. Android isole les applications au niveau du Kernel, leur attribuant un identifiant unique (UID) pour suivre les applications exécutées.

Android Architecture
#

Architecture

  • Le noyau Linux constitue la base d’Android, supportant des fonctionnalitĂ©s cruciales telles que les threads et la gestion de la mĂ©moire de bas niveau utilisĂ©es par Android Runtime (ART).

  • Le HAL fournit des interfaces standardisĂ©es qui exposent les fonctionnalitĂ©s matĂ©rielles aux API Java de niveau supĂ©rieur. Il est composĂ© de modules de bibliothèque spĂ©cifiques Ă  chaque composant matĂ©riel (comme la camĂ©ra ou le Bluetooth). Lorsqu’une API accède au matĂ©riel, Android charge le module de bibliothèque correspondant

  • L’environnement d’exĂ©cution Android (Android Runtime dit ART) exĂ©cute chaque application dans son propre processus et instance. GĂ©rant plusieurs machines virtuelles sur des appareils Ă  faible mĂ©moire grâce au bytecode DEX spĂ©cialement conçu et optimisĂ© pour Android. Les outils de compilation comme d8 transforment le code Java en bytecode DEX pour l’exĂ©cution sur Android.

  • De nombreux composants et services système Android essentiels, tels qu’ART et HAL, sont créés Ă  partir de code natif nĂ©cessitant des bibliothèques natives Ă©crites en C et C++.

  • Les fonctionnalitĂ©s d’Android sont accessibles via des API Java, facilitant la rĂ©utilisation des principaux composants et services système modulaires comme les notifications, la gestion des ressources et la localisation.

  • Les applications système sont l’ensemble des applications de base fournies avec Android.

Android Virtual Machine
#

Android Virtual Machine

  • Les VM sont utilisĂ©s comme couches d’abstraction entre une application et l’appareil Android sous-jacent.

  • Chaque application fonctionne dans sa propre instance dans une VM, isolant les applications les unes des autres.

  • Les applications Android sont Ă©crites en Java mais sont compilĂ©es et compilĂ©es en bytecode Java.

  • Ce bytecode est ensuite transformĂ© en bytecode Dalvik (fichiers .dex) ou bytecode ART.

  • Dalvik et ART exĂ©cutent le bytecode (.dex) dans une machine virtuelle, permettant aux applications de fonctionner indĂ©pendamment du matĂ©riel sous-jacent.

  • Avant KitKat (v.4.4), Android utilisait des VM Dalvik.

  • Avec Lollipop (v5.0), Android a commencĂ© Ă  utiliser Android Runtime (ART) et a cessĂ© d’utiliser la VM Dalvik.

  • Les deux environnements d’exĂ©cution Dalvik et ART fonctionnent avec le bytecode DEX, mais ART possède de nouvelles fonctionnalitĂ©s d’optimisation.

Directory structure
#

Directory structure

  • /cache : peut contenir des pièces jointes gmail, des tĂ©lĂ©chargements, des donnĂ©es de navigation et des mises Ă  jour OTA
  • /efs : contient des fichiers nĂ©cessaires au fonctionnement de l’appareil en cas de dĂ©faillance
  • /data :
    • /data/data : contient les dossiers des applications (/data/data/com.example.app), les fichiers de configurations des apps, les DB SQLite des apps, leurs logs, cache etc.
    • /app : contient des fichiers .apk du marchĂ© Android *Des malwares peuvent ĂŞtre trouvĂ©s ici
    • /backup : stocke l’API de sauvegarde pour les dĂ©veloppeurs donc les donnĂ©es de sauvegarde des utilisateurs ne sont pas stockĂ©es ici
    • /media : l’emplacement de stockage interne Ă©quivalent Ă  une carte SD. *Des malwares malveillants peuvent ĂŞtre trouvĂ©s ici
    • /misc : les fichiers liĂ©s Ă  Bluetooth, dhcp, vpn, Wi-Fi, etc. sont stockĂ©s ici
    • /system : contient des fichiers clĂ©s tels que gesture.key et passwords.key ; le fichier accounts.db qui contient les usernames et les mots de passe pour l’authentification des fichiers etc.
    • /property : contient les propriĂ©tĂ©s du système, y compris le fuseau horaire, les paramètres de langue, etc.
  • /mnt :
    • /asec : stocke les donnĂ©es non chiffrĂ©s des apps
    • /DCIM : stocke les thumbnails des albums
    • /Pictures : stocke les images de l’appareil photo
    • /downloads : fichiers tĂ©lĂ©chargĂ©s localement
    • /secure/asec : stocke les donnĂ©es chiffrĂ©s des apps
  • /system :
    • /app : contient des fichiers .apk. *Des malwares peuvent ĂŞtre trouvĂ©s ici
    • /priv-app : contient des fichiers & apk avec des permissions au niveau du système. *Des malwares peuvent ĂŞtre trouvĂ©s ici

Pour avoir plus d’informations sur

Setup
#

Au vu des fichiers et du scĂ©nario, je vais utiliser l’outil Autopsy. Cela peut prendre un peu de temps Ă  ce setup, c’est pour cela que j’attaque cela ici.

Si vous ne connaissez pas Autopsy, voici une briève description :

Autopsy est un outil d’investigation numĂ©rique opensource. Il se rapporte Ă  l’interface graphique du Sleuth Kit et d’autres outils de forensic. Il est utilisĂ© pour analyser des disques durs et des smartphones dans le cadre d’enquĂŞtes. Les fonctionnalitĂ©s clĂ©s d’Autopsy incluent la rĂ©cupĂ©ration de fichiers supprimĂ©s, l’analyse des mĂ©tadonnĂ©es, la recherche par mots-clĂ©s, la visualisation des timelines d’activitĂ©s, et l’analyse des systèmes de fichiers etc.

Pour l’utiliser, nous devons crĂ©er une “Case” :

Autopsy

Ici, nous savons que nous n’avons pas Ă  faire Ă  une “Disk Image” ou Ă  une VM, de mĂŞme pour un disque local. Nous choisissons donc l’option appropriĂ©e “Logical Files” :

Autopsy

On attend qu’Autopsy & ses modules terminent l’ingestion. Cela peut prendre un moment.

C’est bon, on peut commencer l’investigation :

Autopsy

Questions
#

Question 1
#

Quelle est l’adresse mail de l’agent qui a Ă©tĂ© utilisĂ©e dans diverses applications/services ?

Pour y rĂ©pondre, je vais utiliser le rapport qu’Autopsy a gĂ©nĂ©rĂ© via ALEAPP (Android Logs Events And Protobuf Parser), un projet open-source qui vise Ă  analyser tous les artefacts Android connus Ă  des fins d’analyse forensic.

Pour trouver rapidement et simplement nous pouvons chercher dans :

  • /data/data/com.android.vending/databases/library.db pour y trouver le compte google utilisĂ© pour download des apps

library.db

  • /data/data/com.android.providers.contacts/databases/contacts2.db pour y trouver le compte google utilisĂ© pour synchroniser ses contacts

contacts2.db

Mais aussi (mais non applicable sur ce challenge) ici :

  • /data/com.android.vending/shared_prefs/lastaccount.xml (dernier compte utilisĂ© sur Google PlayStore (Android 9 et plus))
  • /data/com.google.android.gms/shared_prefs/BackupAccount.xml (email du compte de backup)
  • /data/com.android.email/databases/EmailProvider.db (email accounts, 3rd party app data et les messages associĂ©s aux notifications par emails)

Enfin bref, on se retrouve donc avec le rapport en format html :

ALEAPP

On peut retrouver son adresse mail un peu partout.

Dans l’app “Chrome” par exemple avec la partie “Autofill” (fonctionnalitĂ© qui permet de remplir automatiquement des formulaires avec des informations prĂ©enregistrĂ©es) :

Chrome Autofill

Dans les “Login Data” de Chrome :

Chrome Login Data

Enfin dans la partie “Installed Apps (Library)” nous retrouvons l’adresse mail du compte google utilisĂ© pour download des apps :

Installed App (Library)

Réponse : olegpachinksy@gmail.com

Question 2
#

Quel est le numĂ©ro de contact du gestionnaire (handler) affectĂ© Ă  l’agent qui a Ă©tĂ© arrĂŞtĂ© ?

Dans la partie “Contacts” :

Contacts

Réponse : +323145232315

Question 3
#

RĂ©cupĂ©rer les identifiants et le lien du portail officiel des agents ravenskiens. Cela peut nous donner un avantage en matière de renseignement car nous pouvons utiliser cet accès pour obtenir d’autres informations exploitables sur les opĂ©rations que le gouvernement ravenskien planifie.

Nous avons dĂ©jĂ  trouvĂ© la rĂ©ponse Ă  cette question Ă  la question n°1 via les “Login Data” de Chrome :

Chrome Login Data

Réponse : agent.ravensk.idu.com:olegpachinksy007:HBLKNKD0MADsdfsa2334(*&DSMDB

Question 4
#

Quel est le code de contact utilisĂ© pour confirmer l’identitĂ© de l’agent et du gestionnaire lors de l’utilisation d’un canal de discussion sĂ©curisĂ© ?

Premièrement je vais vérifier les potentiels SMS ici : /data/data/com.android.providers.telephony/databases/mmssms.db.

mmssms.db

Nous n’y trouvons rien.

Nous pourrions aussi chercher ici mais non applicable sur ce challenge :

  • /data/com.google.android.gms/databases/icing_mmssms.db (SMS/MMS)
  • /data/com.google.android.gms/databases/ipa_mmssms.db (SMS/MMS)

Nous devons donc trouver l’app de messagerie utilisĂ©. On peut voir toutes les apps installĂ©es dans la partie “Installed Programs” d’Autopsy :

Installed Programs

On y trouve différente catégorie :

  • Installed Apps (GMS)
  • Installed Apps (Library)
  • Installed Apps (Vending)

Installed Apps - GMS : Cette catĂ©gorie concerne les applications installĂ©es sur l’appareil, quel que soit leur mode d’installation. On peut retrouver ces donnĂ©es ici : /data/com.google.android.gms/databases/.

Installed Apps - Library : Cette catĂ©gorie se rĂ©fère Ă  la bibliothèque d’applications pour l’utilisateur Google utilisant l’appareil. Il est important de noter que cette DB n’est pas liĂ©e aux applications installĂ©es sur l’appareil, elle peut contenir des applications installĂ©es par le mĂŞme compte Google sur un autre appareil ou sur une prĂ©cĂ©dente installation de l’appareil analysĂ©. On peut retrouver ces donnĂ©es ici : /data/com.android.vending/databases/.

Installed Apps - Vending : Cette catĂ©gorie concerne spĂ©cifiquement les applications installĂ©es sur l’appareil via le Google Play Store, excluant celles installĂ©es par d’autres moyens. Ces donnĂ©es ne sont pas supprimĂ©es lorsque l’application est dĂ©sinstallĂ©e. Elles sont stockĂ©es dans une DB SQLite situĂ©e ici : /data/com.android.vending/databases/.

Pour plus de lisibilitĂ© retournons sur ALEAPP et concentrons-nous sur les apps de type “Vending” :

ALEAPP - Installed Apps (Vending)

L’app qui saute au yeux c’est mega.privacy.android.app. Et en effet, c’est une application de messagerie :

MEGA

Justement ALEAPP a parsé les messages échangés via MEGA :

Messages

On peut retrouver ces infomations ici : /data/data/mega.privacy.android.app/karere-TU1IaTh4TUJpdTQKAfO_2P0qU8NMP7zDRlgv.db.

Réponse : REDAPPLEONACAR

Question 5
#

Le gestionnaire a partagĂ© un document avec l’agent en utilisant un service de stockage cloud. Quand ce fichier a-t-il Ă©tĂ© partagĂ© avec l’agent ?

Rien dans les messages. Le document a donc dĂ» ĂŞtre transmis d’une autre manière. Nous savons qu’il n’y a pas d’autre app de messagerie et qu’il n’a pas pu lui communiquer via SMS/MMS.

Dans les app installé nous avons vu com.google.android.apps.docs. Allons donc chercher ici : \data\data\com.google.android.apps.docs.

On y trouve la DB /data/data/com.google.android.apps.docs/app_cello/olegpachinksy@gmail.com/cello.db contenant ces informations :

celo.db

On peut d’ailleurs retrouver ce fichier ici : EVIDENCE-CASE-RAVENSKIAN-AGENT-002/storage/emulated/0/Download/Debrief-Velorian OP Expansion East.pdf :

Debrief-Velorian OP Expansion East

Néanmoins attention, par défaut Autopsy interprète les timestamps avec la time zone de votre ordinateur. Pensez bien à modifier ce paramètre dans Autopsy (Tools > Options > View > Time Zone).

Réponse : 2024-04-01 09:36:41

Question 6
#

Quel est l’URI de tĂ©lĂ©chargement du fichier partagĂ© prĂ©cĂ©demment identifiĂ© ?

Nous savons que le fichier a Ă©tĂ© tĂ©lĂ©chargĂ© car nous l’avons retrouvĂ© dans /storage/emulated/0/Download/.

Nous pouvons donc chercher dans /data/data/com.android.providers.downloads/databases/downloads.db :

downloads.db

Réponse : https://www.googleapis.com/drive/v2internal/files/1iQKKlBU2vuJD1Xet6IYPt7IODVtDHxv1?alt=media&source=downloadUrl&auditContext=fileAction&reason=909&syncType=1&featureLabel=android-sync-classic&openDrive=false&errorRecovery=false&originatorApp=102

Question 7
#

Afin d’obtenir davantage d’informations pour le contre-espionnage de Veloria, quel Ă©tait l’objectif principal de cette cyber-opĂ©ration menĂ©e par le gouvernement de Ravensk ?

Revenons au document :

Debrief-Velorian OP Expansion East

Réponse : Infiltrate the Velorian secured network to gather intelligence on upcoming cyber-attacks, their techniques, and target countries.

Question 8
#

L’identification du gestionnaire est Ă©galement cruciale pour que les forces de l’ordre vĂ©loriennes puissent comprendre l’Ă©tendue de cette opĂ©ration. Quelle est l’adresse Ă©lectronique utilisĂ©e par le manipulateur ?

Nous l’avons dĂ©jĂ  vu dans les messages de l’app MEGA :

MEGA

Réponse : ivoryalex783@gmail.com

Question 9
#

Quel est le nom de l’endroit oĂą l’agent et le gestionnaire se sont rencontrĂ©s ?

Revenons aux messages :

MEGA - Messages

C’est la question qui m’a pris le plus de temps, j’ai dĂ» bloquer une bonne heure dessus.

Premièrement, j’ai cherchĂ© dans les endroits habituels :

  • /data/com.google.android.apps.maps/databases/gmm_storage.db
  • /data/com.google.android.apps.maps/databases/search_history.db
  • /data/com.google.android.apps.maps/databases/da_destination_history
  • /data/com.sec.android.daemonapp/db/weatherClock
  • /data/com.google.android.apps.maps/app_tts-cache/
  • /data/com.google.android.apps.maps/cache/image_manager_disk_cache/

Après n’avoir rien trouvĂ©, je me suis dit qu’il Ă©tait sans doute possible que la rĂ©ponse soit dans les metadatas des images sur le tĂ©lĂ©phone. En effet, on retrouve 48 images dont plusieurs de bar :

Images

Néanmoins, rien de probant.

Je me suis donc posé plusieurs questions :

  • il y a-t-il d’autres applications de navigation / localisation sur le tĂ©lĂ©phone ?
  • est-il sĂ»r que je dois chercher dans l’app Google Maps ?
  1. Non, seulement Google Maps.
  2. Non, il est peut-ĂŞtre possible qu’il ait fait la recherche sur son navigateur et non sur l’app etc.

Ayant dĂ©jĂ  vĂ©rifiĂ© les points habituels des artefacts de google maps j’ai prĂ©fĂ©rĂ© chercher dans le navigateur mais je n’ai rien trouvĂ©.

Je suis donc retourné fouiller dans les artefacts de google maps :

artefacts - Google Maps

  • app : RAS
  • app_offline_downloads : RAS
  • app_offline_hashes : RAS
  • app_textures : RAS
  • app_webview : RAS
  • cache : RAS
  • databases : trop de fichiers, j’y reviendrai plus tard
  • files : “new_recent_history_cache_search.cs”

new_recent_history_cache_search.cs

Je me rends compte que j’aurais simplement pu chercher par mot-clĂ© “Pub” 🤡

Réponse : Levstik Pub

Question 10
#

D’après le chat retrouvĂ© entre l’agent et le gestionnaire, il semble que ce dernier ait envoyĂ© Ă  l’agent arrĂŞtĂ© une image relative Ă  l’infrastructure utilisĂ©e par le gouvernement ravenskien pour cette opĂ©ration de cyberespionnage. Quel est le cadre C2 utilisĂ© par le gouvernement ravenskien ?

Ayant dĂ©jĂ  vĂ©rifiĂ© toutes les images pour rĂ©pondre Ă  la question 9 j’ai dĂ©jĂ  la rĂ©ponse.

C2

Réponse : Empire

Question 11
#

La collecte d’informations sur l’infrastructure, telles que les adresses IP ou les noms d’hĂ´tes, est cruciale pour les autoritĂ©s vĂ©loriennes, qui prĂ©parent une opĂ©ration de contre-offensive. D’après l’image rĂ©cupĂ©rĂ©e envoyĂ©e par le gestionnaire Ă  l’agent, quelle est l’adresse IP de l’un des serveurs C2 exploitĂ©s par les acteurs de la menace ravenskiens ?

Réponse : 98.24.12.45

Success