Explorer
KNOW-PAT-070

Déchiffrement DPAPI Chrome - Extraction credentials navigateur compromis

Domaine
forensics
Type
pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Déchiffrement DPAPI Chrome - Extraction credentials navigateur compromis

Problème

Chrome v80+ chiffre les identifiants sauvegardés avec AES-256-GCM, la clé étant dérivée via DPAPI (Data Protection API Windows) et protégée par le compte Windows. Avec le mot de passe Administrator récupéré précédemment, le pipeline de déchiffrement est direct : extraction de la clé chiffrée depuis Local State → déchiffrement DPAPI avec les master keys SID-500 → déchiffrement AES de chaque entrée du Login Data SQLite.

Contexte archive Ygg

  • Source : https://yggleak.top/fr/home/ygg-dossier#phase-9-le-navigateur-de-destroy
  • Phase 9 — Le navigateur de Destroy
  • Navigateur : Chrome (v80+)
  • Fichiers : Local State, Login Data (SQLite)
  • DPAPI keys : SID-500 (Administrator)
  • Résultat : Des centaines de mots de passe sauvegardés, exchanges crypto, fournisseurs email, panel d'hébergement, forums underground

Technique d'exploitation

1. Pipeline de déchiffrement DPAPI

1. Extraction de la clé chiffrée depuis Local State
2. Déchiffrement DPAPI avec les master keys SID-500
3. Déchiffrement AES de chaque entrée du Login Data SQLite

2. Fichiers cibles

Fichier Chemin Contenu
Local State %LOCALAPPDATA%\Google\Chrome\User Data\Default\ Clé de chiffrement AES (chiffrée DPAPI)
Login Data %LOCALAPPDATA%\Google\Chrome\User Data\Default\ Base SQLite avec les passwords
Cookies %LOCALAPPDATA%\Google\Chrome\User Data\Default\Network\ Cookies de session
History %LOCALAPPDATA%\Google\Chrome\User Data\Default\ Historique de navigation

3. Cookies de session extraits

Tokens de session actifs pour des dizaines de services :

  • .lolz.live — forum cybercrime russe
  • .stresscat.ru — service DDoS
  • .paypal.com, .proton.me
  • njal.la — registrar anonyme
  • veesp.com — hébergeur bulletproof

Solution protectif — Protection DPAPI et navigateur

1. Désactiver le password manager Chrome via GPO

# chrome-security-gpo.ps1
# Activer les policies Chrome via Registry

$chromePolicies = @{
    "HKLM:\Software\Policies\Google\Chrome" = @{
        "PasswordManagerEnabled" = 0
        "AutofillAddressEnabled" = 0
        "PaymentMethodQueryEnabled" = 0
        "SafeBrowsingEnabled" = 1
        "SyncDisabled" = 1
        "BrowserGuestModeEnabled" = 0
        "IncognitoModeAvailability" = 0  # Forcer le mode Incognito
    }
}

foreach ($path in $chromePolicies.Keys) {
    if (-not (Test-Path $path)) {
        New-Item -Path $path -Force
    }
    foreach ($name in $chromePolicies[$path].Keys) {
        Set-ItemProperty -Path $path -Name $name -Value $chromePolicies[$path][$name]
    }
}

2. Activer Credential Guard (HVCI)

# Activer Windows Defender Credential Guard
dism /online /enable-feature /featurename:IsolatedUserMode
bcdedit /set {current} hypervisorlaunchtype Auto
bcdedit /set {current} vsmlaunchtype Auto

# Vérifier l'état
Get-WmiObject -Class "Win32_DeviceGuard" -Namespace "root\cimv2\security\MicrosoftTpm"

3. Activer LSA Protection (RunAsPPL)

# LSA Protection empêche Mimikatz de lire les credentials en mémoire
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Value 1 -PropertyType DWord

# Vérifier
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL"

4. Détection d'extraction DPAPI

# detect-dpapi-extraction.ps1
$dpapiPath = "$env:APPDATA\Microsoft\Protect"

# Surveiller l'accès aux DPAPI keys
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4663} | 
    Where-Object { $_.Message -like "*$dpapiPath*" } |
    ForEach-Object {
        Write-Warning "[ALERT] Accès DPAPI détecté: $($_.Message)"
    }

# Vérifier les processus suspects accédant à Chrome
$suspiciousProcesses = @("mimikatz", "procdump", "lsass", "chromePass", "webBrowserPassView")
Get-Process | Where-Object { $suspiciousProcesses -contains $_.Name } | 
    ForEach-Object {
        Write-Warning "[ALERT] Processus de déchiffrement détecté: $($_.Name) (PID: $($_.Id))"
    }

5. Isolation du navigateur

## Règles d'or pour un navigateur de production/admin

1. **Navigateur dédié** : Un navigateur UNIQUEMENT pour l'administration, jamais pour la navigation générale
2. **Profile séparé** : Profile Chrome dédié, pas le profile par défaut
3. **Pas de sync** : Désactiver la synchronisation Chrome/Firefox
4. **Pas de password manager** : Utiliser un gestionnaire de mots de passe externe (KeePass, Bitwarden)
5. **Mode Incognito** : Toujours utiliser le mode Incognito pour les sites sensibles
6. **Extensions minimales** : Uniquement uBlock Origin + HTTPS Everywhere
7. **VPN** : Toujours actif pour les recherches/admin
8. **VM** : Navigateur dans une VM dédiée (snapshot après chaque session)
9. **RAM disk** : Cache du navigateur en RAM disk (effacé au reboot)
10. **Auto-clear** : Effacer les données à la fermeture (cookies, cache, history)

6. Détection de session active RDP

# detect-active-rdp.ps1
$rdpSessions = qwinsta | Select-String "RDP-Tcp"

foreach ($session in $rdpSessions) {
    if ($session -match "Active") {
        Write-Warning "[ALERT] Session RDP active détectée: $session"
        
        # Vérifier l'IP source
        $rdpEvent = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624} -MaxEvents 10 | 
            Where-Object { $_.Message -like "*RemoteInteractive*" }
        
        if ($rdpEvent) {
            Write-Warning "[ALERT] Connexion RDP depuis: $($rdpEvent.Message)"
        }
    }
}

Checklist de validation

  • Credential Guard (HVCI) activé
  • LSA Protection (RunAsPPL) activé
  • Password Manager Chrome désactivé via GPO
  • Sync Chrome désactivé
  • Navigateur dédié pour l'administration
  • Profile séparé, pas le profile par défaut
  • Extensions minimales (pas de password manager intégré)
  • Cache navigateur en RAM disk ou auto-clear
  • VPN toujours actif
  • Détection de processus Mimikatz/procdump
  • Audit d'accès aux DPAPI keys
  • Monitoring des sessions RDP actives
  • Pas de sauvegarde de mots de passe dans le navigateur
  • Gestionnaire de mots de passe externe (KeePass/Bitwarden)

Anti-pattern associé

  • KNOW-ANT-014 — Saving passwords in Chrome on production/admin machine

Références

  • Archive Ygg : Phase 9 — Le navigateur de Destroy (YGGLeak)
  • Microsoft : Credential Guard
  • Microsoft : LSA Protection