Solution de KazeTachinuu pour Analyse mémoire 1/5 - Exfiltration

forensics windows mémoire

29 avril 2025

Notre objectif est d’analyser la mémoire et retrouver le malware qui tente d’exfiltrer le document.

1. Analyse préliminaire de l’image mémoire

Avant toute analyse, il est essentiel de vérifier que l’image mémoire est exploitable et d’identifier le profil du système (version de Windows, architecture, etc.).

Identification du profil Windows

On utilise Volatility 3, un outil d’analyse forensique de la mémoire RAM, pour obtenir des informations sur le système :

vol -f analyse-memoire.dmp windows.info.Info

Pourquoi cette commande ?

  • Elle permet de vérifier que l’image mémoire est lisible par Volatility.
  • Elle donne des informations cruciales : version de Windows, architecture (32/64 bits), base du noyau, etc.
  • Cela permet d’adapter les modules d’analyse à la bonne version du système.

Exemple de sortie :

Variable        Value

Kernel Base     0xf80381800000
DTB     0x1ad000
Is64Bit True
IsPAE   False
layer_name      0 WindowsIntel32e
memory_layer    1 WindowsCrashDump64Layer
base_layer      2 FileLayer
KdVersionBlock  0xf8038240f400
Major/Minor     15.19041
MachineType     34404
KeNumberProcessors      6
SystemTime      2025-04-01 22:17:18+00:00
NtSystemRoot    C:\\Windows
NtProductType   NtProductWinNt
NtMajorVersion  10
NtMinorVersion  0
PE MajorOperatingSystemVersion  10
PE MinorOperatingSystemVersion  0
PE Machine      34404
PE TimeDateStamp        Fri Dec 16 15:04:28 2033

On confirme qu’il s’agit d’un Windows 10 64 bits (build 19041).

2. Recherche des connexions réseau actives

L’objectif est de repérer un éventuel malware qui exfiltre des données. Un bon point de départ est d’examiner toutes les connexions réseau actives au moment de la capture mémoire.

Extraction des connexions réseau

On utilise le module windows.netscan.NetScan de Volatility :

vol -f analyse-memoire.dmp windows.netscan.NetScan | grep ESTABLISHED

Pourquoi cette commande ?

  • Elle liste toutes les connexions TCP/UDP actives au moment de la capture mémoire.
  • Pour chaque connexion, on obtient :
    • Le protocole (TCP/UDP)
    • Les adresses IP et ports locaux/distants
    • L’état de la connexion (ESTABLISHED, LISTENING, etc.)
    • Le PID et le nom du processus associé
  • Cela permet d’identifier rapidement les processus qui communiquent avec l’extérieur, ce qui est typique d’une exfiltration.

Filtrage des connexions actives

Pour se concentrer sur les connexions actives (celles qui sont réellement établies), on filtre la sortie pour ne garder que les connexions en état ESTABLISHED :

Exemple de sortie :

Offset Proto LocalAddr  LocalPort ForeignAddr     ForeignPort State    PID   Owner
...
0xa50a2752fab0 TCPv4 10.0.2.15 49683 20.199.120.182 443 ESTABLISHED 3024 svchost.exe
0xa50a27bdd460 TCPv4 10.0.2.15 59261 48.209.108.37 443 ESTABLISHED 2040 MsMpEng.exe
0xa50a297cd270 TCPv4 10.0.2.15 58828 185.89.210.248 443 ESTABLISHED 7232 msedge.exe
0xa50a29eaea60 TCPv4 10.0.2.15 49709 100.68.20.103 443 ESTABLISHED 1800 rundll32.exe
0xa50a29f8b2a0 TCPv4 10.0.2.15 57158 35.214.168.80 443 ESTABLISHED 7232 msedge.exe

3. Identification du processus malveillant

On analyse la liste des connexions pour repérer un comportement anormal.

Analyse des résultats

  • Plusieurs processus ont des connexions actives :
    • svchost.exe : service système Windows (légitime)
    • MsMpEng.exe : Windows Defender (légitime)
    • msedge.exe : navigateur Edge (légitime)
    • rundll32.exe : à surveiller

Pourquoi rundll32.exe est suspect ?

  • rundll32.exe est un utilitaire Windows qui sert à charger et exécuter des fonctions exportées de DLL.
  • Il n’est pas censé maintenir de connexion réseau persistante.
  • Sa présence dans les connexions ESTABLISHED, surtout au démarrage, est très inhabituelle.
  • Les autres processus sont attendus (services système ou navigateur), mais pas rundll32.exe.

On retient donc la connexion suivante comme suspecte :

  • Processus : rundll32.exe
  • PID : 1800
  • IP distante : 100.68.20.103
  • Port distant : 443
  • Protocole : TCP

4. Construction du flag

Le format demandé est :

FCSC{<process_name>:<process_id>:<adresse_ip_distante>:<port_distant>:<protocole>}

En remplissant avec nos valeurs :

FCSC{rundll32.exe:1800:100.68.20.103:443:TCP}

5. Résumé des étapes

  1. Identification du profil système avec Volatility
  2. Extraction des connexions réseau actives
  3. Repérage d’une connexion anormale via rundll32.exe
  4. Construction du flag avec les informations trouvées

Flag

FCSC{rundll32.exe:1800:100.68.20.103:443:TCP}