Aller au contenu principal

Lab 11.1: Analyse Memoire des Processus

Objectifs d'Apprentissage​

A la fin de ce laboratoire, vous serez capable de:

  • Utiliser les outils Sysinternals pour analyser la memoire
  • Comprendre le Working Set et les differents types de memoire
  • Identifier les anomalies memoire d'un processus
  • Detecter les processus suspects par leur comportement memoire

Duree Estimee​

45 minutes

Prerequis​

  • VM Windows 10/11
  • Outils Sysinternals (Process Explorer, VMMap, RAMMap)
  • Droits administrateur

Contexte Professionnel​

L'analyse memoire est utilisee pour:

  • Diagnostiquer les fuites memoire
  • Identifier les malwares fileless
  • Analyser les performances applicatives
  • Forensics et investigation d'incidents

Partie 1: Vue Globale avec Task Manager​

Etape 1.1: Ouvrir le Gestionnaire des taches​

Ctrl+Shift+Esc

Allez dans l'onglet Performances > Memoire

Etape 1.2: Comprendre les metriques​

MetriqueDescription
En cours d'utilisationRAM actuellement utilisee
DisponibleRAM libre + en standby
ValideeMemoire "promise" (peut > RAM)
Mise en cacheDonnees en cache pour acces rapide
PagineeDans le page file sur disque
Non-pagineeToujours en RAM (drivers)

Etape 1.3: Vue par processus​

Onglet Details > Clic droit sur les colonnes > Selectionner les colonnes

Ajoutez:

  • Working set (memoire)
  • Memoire (ensemble de travail prive)
  • Memoire (taille de validation)

Question 1: Quel processus utilise le plus de memoire sur votre systeme?


Partie 2: Process Explorer Approfondi​

Etape 2.1: Telecharger et lancer​

# Telecharger Sysinternals Suite si pas deja fait
# https://docs.microsoft.com/en-us/sysinternals/downloads/

# Lancer Process Explorer en admin
.\procexp64.exe

Etape 2.2: Configurer les colonnes memoire​

  1. View > Select Columns...
  2. Onglet Process Memory, ajoutez:
    • Working Set
    • Private Bytes
    • Virtual Size
    • Peak Working Set
    • Page Faults

Etape 2.3: Analyser un processus​

  1. Selectionnez un processus (ex: explorer.exe)
  2. Clic droit > Properties
  3. Onglet Performance

Observez:

  • Working Set: Memoire en RAM actuellement
  • Private Bytes: Memoire exclusive au processus
  • Virtual Size: Espace d'adressage total

Question 2: Quelle est la difference entre Working Set et Private Bytes?

Etape 2.4: Voir les DLLs chargees​

  1. View > Show Lower Pane
  2. View > Lower Pane View > DLLs
  3. Selectionnez un processus

Question 3: Combien de DLLs sont chargees dans explorer.exe?


Partie 3: VMMap pour Analyse Detaillee​

Etape 3.1: Lancer VMMap​

vmmap64.exe

Selectionnez un processus a analyser (ex: notepad.exe - lancez-le d'abord).

Etape 3.2: Comprendre la vue​

VMMap affiche l'espace d'adressage complet:

TypeCouleurDescription
ImageJauneFichiers executables/DLLs
Mapped FileOrangeFichiers mappe en memoire
ShareableVertMemoire partageable
HeapRougeTas du processus
StackVioletPiles des threads
Private DataBleuDonnees privees
FreeBlancNon alloue

Etape 3.3: Identifier les regions​

  1. Cliquez sur une region dans le graphique
  2. Regardez les details en bas
  3. Notez l'adresse, la taille, la protection

Protection memoire:

  • R: Lecture
  • W: Ecriture
  • X: Execution
  • G: Guard page

Etape 3.4: Rechercher des anomalies​

Signaux d'alerte:

  • RWX: Region lisible, ecrivable ET executable (suspect!)
  • Heap tres grand: Possible fuite memoire
  • Private Data inexplique: Possible injection
# Script pour detecter les regions RWX suspectes
# (Necessite des outils specifiques comme WinDbg)

Question 4: Y a-t-il des regions RWX dans notepad.exe? Si oui, lesquelles?


Partie 4: RAMMap pour Vue Globale​

Etape 4.1: Lancer RAMMap​

rammap64.exe

Lancez en tant qu'administrateur.

Etape 4.2: Vue d'ensemble​

Onglet Use Counts:

TypeDescription
Process PrivateMemoire exclusive aux processus
Mapped FileFichiers mappes
ShareableMemoire partageable
Page TableTables de pagination
Nonpaged PoolPool kernel non paginable
Driver LockedVerrouille par drivers
StandbyEn cache, liberale si besoin
ModifiedModifiee, pas encore ecrite sur disque

Etape 4.3: Onglet File Summary​

Montre quels fichiers sont mappes en memoire.

Question 5: Quels fichiers consomment le plus de RAM en cache?

Etape 4.4: Vider le cache​

Menu Empty > Empty Standby List

Attention: A utiliser avec precaution en production!


Partie 5: Detection d'Anomalies​

Etape 5.1: Script de detection​

# Script d'analyse memoire basique
Write-Host "=== ANALYSE MEMOIRE SYSTEME ===" -ForegroundColor Cyan

# Top 10 processus par Working Set
Write-Host "`n[Top 10 Working Set]" -ForegroundColor Yellow
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 |
Format-Table Name, Id, @{N='WorkingSet(MB)';E={[math]::Round($_.WorkingSet64/1MB,2)}}

# Top 10 par Private Bytes
Write-Host "[Top 10 Private Bytes]" -ForegroundColor Yellow
Get-Process | Sort-Object PrivateMemorySize64 -Descending | Select-Object -First 10 |
Format-Table Name, Id, @{N='PrivateBytes(MB)';E={[math]::Round($_.PrivateMemorySize64/1MB,2)}}

# Processus avec ratio suspect (Virtual >> Working Set)
Write-Host "[Ratio suspect Virtual/Working]" -ForegroundColor Yellow
Get-Process | Where-Object {
$_.WorkingSet64 -gt 10MB -and
$_.VirtualMemorySize64 -gt ($_.WorkingSet64 * 100)
} | Format-Table Name, Id,
@{N='Working(MB)';E={[math]::Round($_.WorkingSet64/1MB,2)}},
@{N='Virtual(MB)';E={[math]::Round($_.VirtualMemorySize64/1MB,2)}}

# Info systeme globale
Write-Host "[Info Systeme]" -ForegroundColor Yellow
$os = Get-CimInstance Win32_OperatingSystem
Write-Host " RAM Totale: $([math]::Round($os.TotalVisibleMemorySize/1MB,2)) GB"
Write-Host " RAM Libre: $([math]::Round($os.FreePhysicalMemory/1MB,2)) GB"
Write-Host " Commit Total: $([math]::Round($os.TotalVirtualMemorySize/1MB,2)) GB"

Etape 5.2: Indicateurs de malware​

Signes suspects en memoire:

  • Processus avec nom standard mais emplacement inhabituel
  • Regions RWX (executable heap/stack)
  • Injection dans des processus legitimes
  • Processus "creux" (hollow process)
# Verifier les chemins des processus
Get-Process | Where-Object { $_.Path } | ForEach-Object {
$expectedPaths = @("C:\Windows", "C:\Program Files", "C:\Program Files (x86)")
$isExpected = $expectedPaths | ForEach-Object { $proc.Path -like "$_*" } | Where-Object { $_ }

if (-not $isExpected -and $_.Name -in @("svchost", "csrss", "services", "lsass")) {
Write-Host "[SUSPECT] $($_.Name) - Path: $($_.Path)" -ForegroundColor Red
}
}

Question 6: Avez-vous trouve des processus suspects?


Partie 6: Exercice Pratique​

Etape 6.1: Creer une fuite memoire (simulation)​

# Script qui simule une fuite memoire
# A EXECUTER DANS UNE VM DE TEST

$leak = @()
Write-Host "Simulation de fuite memoire..." -ForegroundColor Yellow
Write-Host "Appuyez sur Ctrl+C pour arreter"

while ($true) {
$leak += [byte[]]::new(10MB) # Alloue 10MB
$totalMB = $leak.Count * 10
Write-Host "Memoire allouee: $totalMB MB" -ForegroundColor Gray
Start-Sleep -Seconds 1

if ($totalMB -ge 500) {
Write-Host "Limite atteinte, arret." -ForegroundColor Red
break
}
}

# Liberer
$leak = $null
[System.GC]::Collect()
Write-Host "Memoire liberee." -ForegroundColor Green

Etape 6.2: Observer avec Process Explorer​

  1. Lancez le script de fuite
  2. Observez le processus powershell.exe dans Process Explorer
  3. Notez l'evolution du Working Set et Private Bytes

Livrables​

  1. Captures d'ecran:

    • Task Manager onglet Memoire
    • Process Explorer avec colonnes memoire
    • VMMap d'un processus
    • RAMMap vue globale
  2. Reponses aux 6 questions

  3. Rapport d'analyse (1-2 pages):

    • Processus les plus gourmands
    • Anomalies detectees
    • Recommandations

Criteres d'Evaluation​

CriterePoints
Utilisation Task Manager15%
Process Explorer25%
VMMap25%
RAMMap15%
Script de detection20%

Commandes de Reference​

# Memoire processus
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10

# Info systeme
Get-CimInstance Win32_OperatingSystem | Select-Object *Memory*

# Page file
Get-WmiObject Win32_PageFileUsage

Depannage​

Process Explorer ne se lance pas​

  • Executez en tant qu'administrateur
  • Verifiez que ce n'est pas bloque par l'antivirus

VMMap affiche peu d'info​

  • Selectionnez le processus dans la liste
  • Assurez-vous que le processus existe encore

Lab developpe dans le cadre du cours Systemes d'Exploitation - MODULE 11