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
| Metrique | Description |
|---|---|
| En cours d'utilisation | RAM actuellement utilisee |
| Disponible | RAM libre + en standby |
| Validee | Memoire "promise" (peut > RAM) |
| Mise en cache | Donnees en cache pour acces rapide |
| Paginee | Dans le page file sur disque |
| Non-paginee | Toujours 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
- View > Select Columns...
- Onglet Process Memory, ajoutez:
- Working Set
- Private Bytes
- Virtual Size
- Peak Working Set
- Page Faults
Etape 2.3: Analyser un processus
- Selectionnez un processus (ex:
explorer.exe) - Clic droit > Properties
- 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
- View > Show Lower Pane
- View > Lower Pane View > DLLs
- 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:
| Type | Couleur | Description |
|---|---|---|
| Image | Jaune | Fichiers executables/DLLs |
| Mapped File | Orange | Fichiers mappe en memoire |
| Shareable | Vert | Memoire partageable |
| Heap | Rouge | Tas du processus |
| Stack | Violet | Piles des threads |
| Private Data | Bleu | Donnees privees |
| Free | Blanc | Non alloue |
Etape 3.3: Identifier les regions
- Cliquez sur une region dans le graphique
- Regardez les details en bas
- Notez l'adresse, la taille, la protection
Protection memoire:
R: LectureW: EcritureX: ExecutionG: 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:
| Type | Description |
|---|---|
| Process Private | Memoire exclusive aux processus |
| Mapped File | Fichiers mappes |
| Shareable | Memoire partageable |
| Page Table | Tables de pagination |
| Nonpaged Pool | Pool kernel non paginable |
| Driver Locked | Verrouille par drivers |
| Standby | En cache, liberale si besoin |
| Modified | Modifiee, 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
- Lancez le script de fuite
- Observez le processus
powershell.exedans Process Explorer - Notez l'evolution du Working Set et Private Bytes
Livrables
-
Captures d'ecran:
- Task Manager onglet Memoire
- Process Explorer avec colonnes memoire
- VMMap d'un processus
- RAMMap vue globale
-
Reponses aux 6 questions
-
Rapport d'analyse (1-2 pages):
- Processus les plus gourmands
- Anomalies detectees
- Recommandations
Criteres d'Evaluation
| Critere | Points |
|---|---|
| Utilisation Task Manager | 15% |
| Process Explorer | 25% |
| VMMap | 25% |
| RAMMap | 15% |
| Script de detection | 20% |
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