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

forensics windows mémoire

30 mars 2026

Table des matières

Contexte

On doit faire une analyse d’une empreinte mémoire pour retrouver un malware qui tente d’exfiltrer des documents.
Il faut trouver :

  1. Le nom du processus qui exécute le malware.
  2. Le numéro du PID.
  3. L’adresse contrôlé par l’attaquant.
  4. Le port contrôlé par l’attaquant.
  5. Le protocole utilisé.

Solution

$ python3 vol.py -f analyse-memoire.dmp windows.pslist.PsList > out.txt

$ cat out.txt | grep .exe | awk '{print $3}' | sort | uniq
conhost.exe
csrss.exe
ctfmon.exe
dllhost.exe
DumpIt.exe
dwm.exe
explorer.exe
LockApp.exe
LogonUI.exe
lsass.exe
msedge.exe
MsMpEng.exe
NisSrv.exe
OneDrive.exe
powershell.exe
rundll32.exe
SearchApp.exe
SearchIndexer.
services.exe
sihost.exe
SkypeApp.exe
smss.exe
soffice.exe
spoolsv.exe
svchost.exe
taskhostw.exe
userinit.exe
VBoxTray.exe
wininit.exe
winlogon.exe
WmiPrvSE.exe

On sauvegarde les informations de processus dans un fichier out.txt.
On veut que les fichiers .exe.
On remarque qu’il en a pas beaucoup.

$ python3 vol.py -f analyse-memoire.dmp windows.malfind.Malfind --pid  $(cat out.txt | grep .exe | awk '{print $1}' | sort | uniq) > malfind.txt

$ cat malfind.txt | grep Disabled
1800	rundll32.exe	0x2244dde0000	0x2244dde0fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	N/A	
1800	rundll32.exe	0x2244e9a0000	0x2244ed9ffff	VadS	PAGE_EXECUTE_READWRITE	1024	1	Disabled	MZ header	
2040	MsMpEng.exe	0x1eabf450000	0x1eabf450fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4900000	0x1eac4900fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4910000	0x1eac4910fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4940000	0x1eac4941fff	VadS	PAGE_EXECUTE_READWRITE	2	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4ac0000	0x1eac4ac1fff	VadS	PAGE_EXECUTE_READWRITE	2	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac49f0000	0x1eac49f0fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac49e0000	0x1eac49e2fff	VadS	PAGE_EXECUTE_READWRITE	3	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4b60000	0x1eac4b60fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac4ba0000	0x1eac4baafff	VadS	PAGE_EXECUTE_READWRITE	11	1	Disabled	Function prologue	
2040	MsMpEng.exe	0x1eac68e0000	0x1eac69ecfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eac6b00000	0x1eac6c0cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eac69f0000	0x1eac6afcfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eac7330000	0x1eac743cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eac7440000	0x1eac754cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eacece0000	0x1eaceddffff	VadS	PAGE_EXECUTE_READWRITE	256	1	Disabled	N/A	
2040	MsMpEng.exe	0x1eacede0000	0x1eaceeecfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead4f70000	0x1ead507cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead4110000	0x1ead430ffff	VadS	PAGE_EXECUTE_READWRITE	512	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead4c90000	0x1ead4d9cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead49b0000	0x1ead4abcfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead48a0000	0x1ead49acfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead64f0000	0x1ead65fcfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
2040	MsMpEng.exe	0x1ead6210000	0x1ead631cfff	VadS	PAGE_EXECUTE_READWRITE	269	1	Disabled	N/A	
6720	SearchApp.exe	0x253f9090000	0x253f90affff	VadS	PAGE_EXECUTE_READWRITE	8	1	Disabled	N/A	
6720	SearchApp.exe	0x253f9460000	0x253f94c3fff	VadS	PAGE_EXECUTE_READWRITE	2	1	Disabled	N/A	
8492	OneDrive.exe	0x8dd0000	0x8ddffff	VadS	PAGE_EXECUTE_READWRITE	16	1	Disabled	N/A	
3132	powershell.exe	0x23ae56f0000	0x23ae56fffff	VadS	PAGE_EXECUTE_READWRITE	2	1	Disabled	N/A	
3132	powershell.exe	0x23afddf0000	0x23afde21fff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	N/A	
3132	powershell.exe	0x23afdf10000	0x23afdf1ffff	VadS	PAGE_EXECUTE_READWRITE	8	1	Disabled	N/A	
3132	powershell.exe	0x7df4cf470000	0x7df4cf47ffff	VadS	PAGE_EXECUTE_READWRITE	1	1	Disabled	N/A	
3132	powershell.exe	0x7df4cf480000	0x7df4cf51ffff	VadS	PAGE_EXECUTE_READWRITE	2	1	Disabled	N/A

On récupère les numéros PID des exécutables .exe et on les scanne avec Malfind pour voir si, il y a des comportements bizarres.
On regarde si des choses on été désactivés et on remarque quelque chose qui est intéressent :

1800	rundll32.exe	0x2244e9a0000	0x2244ed9ffff	VadS	PAGE_EXECUTE_READWRITE	1024	1	Disabled	MZ header	

On voit que pour le processus 1800 rundll32.exe, les pages mémoires sont exécutables, en lecture et écriture, ceci permet d’écrite et exécuté du code légitime ou non.
De plus MZ header est désactivé, ça veut dire qu’une partie du code est exécutable mais qu’on a désactivée sa signature pour le caché.
On a une forte chance d’avoir à faire à un malware.

$ python3 vol.py -f analyse-memoire.dmp windows.malfind.Malfind --pid 1800 --dump 

$ ls
pid.1800.vad.0x2244dde0000-0x2244dde0fff.dmp  pid.1800.vad.0x2244e9a0000-0x2244ed9ffff.dmp

$ clamscan 
Loading:    12s, ETA:   0s [========================>]    3.63M/3.63M sigs       
Compiling:   3s, ETA:   0s [========================>]       41/41 tasks 

pid.1800.vad.0x2244e9a0000-0x2244ed9ffff.dmp: Win.Exploit.D388a-9756522-0 FOUND
pid.1800.vad.0x2244dde0000-0x2244dde0fff.dmp: OK

----------- SCAN SUMMARY -----------
Known viruses: 3627731
Engine version: 1.5.2
Scanned directories: 1
Scanned files: 2
Infected files: 1
Data scanned: 4.27 MiB
Data read: 4.00 MiB (ratio 1.07:1)
Time: 19.814 sec (0 m 19 s)
Start Date: 2026:03:30 11:29:55
End Date:   2026:03:30 11:30:15

manalyse pid.1800.vad.0x2244e9a0000-0x2244ed9ffff.dmp
-- Analyse de pid.1800.vad.0x2244e9a0000-0x2244ed9ffff.dmp ---
[*] Warning: Please edit the configuration file (/manalyze/bin/manalyze.conf) with your VirusTotal API key.
[!] Error: ClamAV rules haven't been generated yet!
[!] Error: Please run /manalyze/bin/yara_rules/update_clamav_signatures.py to create them, and refer to the documentation for additional information.
[*] Warning: Yara callback received an unhandled message (6).
* Manalyze 0.9 *

-------------------------------------------------------------------------------
pid.1800.vad.0x2244e9a0000-0x2244ed9ffff.dmp
-------------------------------------------------------------------------------

Summary:
--------
Architecture:     IMAGE_FILE_MACHINE_AMD64
Subsystem:        IMAGE_SUBSYSTEM_WINDOWS_GUI
Compilation Date: 2024-Dec-06 15:29:38

Interesting strings found in the binary:
    Contains domain names:
        https://100.68.20.103

Libraries used to perform cryptographic operations:
    Microsoft's Cryptography API

[ MALICIOUS ] The file headers were tampered with.
    The RICH header checksum is invalid.

[ MALICIOUS ] The PE contains functions mostly used by malware.
    [!] The program may be hiding some of its imports:
        GetProcAddress
        LoadLibraryA
        LoadLibraryW
        LoadLibraryExW
    Functions which can be used for anti-debugging purposes:
        CreateToolhelp32Snapshot
    Code injection capabilities:
        VirtualAllocEx
        OpenProcess
        WriteProcessMemory
        VirtualAlloc
        CreateRemoteThread
    Uses Microsoft's cryptographic API:
        CryptDecodeObjectEx
        CryptImportPublicKeyInfo
        CryptDuplicateKey
        CryptDecrypt
        CryptEncrypt
        CryptImportKey
        CryptGenRandom
        CryptSetKeyParam
        CryptDestroyKey
        CryptReleaseContext
        CryptAcquireContextW
    Memory manipulation functions often used by packers:
        VirtualAllocEx
        VirtualAlloc
        VirtualProtect
        VirtualProtectEx
    Has Internet access capabilities:
        InternetOpenW
        InternetConnectW
        InternetSetOptionW
        InternetReadFile
        InternetCloseHandle
        InternetCrackUrlW
        WinHttpOpen
        WinHttpReadData
        WinHttpGetIEProxyConfigForCurrentUser
        WinHttpGetProxyForUrl
        WinHttpQueryHeaders
        WinHttpReceiveResponse
        WinHttpSendRequest
        WinHttpOpenRequest
        WinHttpSetOption
        WinHttpQueryOption
        WinHttpCloseHandle
        WinHttpConnect
        WinHttpCrackUrl
    Leverages the raw socket API to access the Internet:
        WS2_32.dll
    Functions related to the privilege level:
        AdjustTokenPrivileges
        OpenProcessToken
    Enumerates local disk drives:
        GetVolumeInformationW
    Manipulates other processes:
        OpenProcess
        WriteProcessMemory

The following exploit mitigation techniques have been detected
    Stack Canary: enabled
    SafeSEH: enabled (0 registered handlers)
    ASLR: disabled
    DEP: enabled
    CFG: disabled

[ SUSPICIOUS ] The file contains overlay data.
    3991552 bytes of data starting at offset 0x31800.
    Overlay data amounts for 95.166% of the executable.

On extrait les zones mémoires qui contiennent les données du fichier rundll32.exe.
On scanne les zones mémoires avec un antivirus, ici c’est clamav, il détecte qu’un fichier est un malware (Win.Exploit.D388a-9756522-0), c’est une signature qui indique un malware de meterpreter.
On fait une analyse plus précise du malware avec manalyse et on trouve des choses intéressantes comme :

  1. Une chaîne qui indique une adresse codée en dure en https (port 443) : https://100.68.20.103.
  2. Des méthodes de chiffrements.
  3. Il utilise des entêtes falsifiés avec une somme de contrôle non valide.
  4. Beaucoup de fonctions sont utilisées par des malware.
$ python3 vol.py -f analyse-memoire.dmp windows.netscan.NetScan | grep rundll32.exe
0xa50a29eaea60.0TCPv4	10.0.2.15DB scan49709fin100.68.20.103   443     ESTABLISHED     1800	rundll32.exe	2025-04-01 22:11:15.000000 UTC

On vérifie les informations sur la connexion.
On peut confirmer qu’on a bien les informations suivantes :

  1. Nom : rundll32.exe.
  2. Port distant : 443.
  3. IP distant : 100.68.20.103.
  4. PID : 1800.
  5. Protocole connexion : TCP.