Parent : [[INDEX-CYBERSECU]]
Extraction forensique de credentials - Chrome DPAPI, FileZilla, SAM, SSH
Problème
L'archive Ygg contient une extraction massive de credentials depuis une machine Windows : Chrome décrypté (cookies, passwords), FileZilla (serveurs récents), DPAPI keys (Windows Data Protection), Registry SAM (hashes Windows), SSH keys, et SSL certificates. Ces données montrent comment un système compromis révèle TOUT.
Contexte archive Ygg
- Dossier :
04_CREDENTIALS/ - Sous-dossiers :
04a_filezilla/,04b_chrome_decrypted/,04c_chrome_raw/,04d_dpapi_keys/,04e_configs_secrets/,04f_registry_sam/,04g_ssl_certs/,04h_tor_browser/
Données extraites
1. FileZilla (recentservers.xml)
<RecentServers>
<Server>
<Host>example.com</Host>
<Port>21</Port>
<User>admin</User>
<Pass encoding="base64">YWRtaW5wYXNz</Pass>
</Server>
</RecentServers>
Problème : Mots de passe en base64 (pas chiffrés), serveurs récents = historique complet.
2. Chrome décrypté (passwords.json, cookies.json)
{
"url": "https://example.com",
"username": "admin@example.com",
"password": "GoPay2024!Secure"
}
Problème : Chrome stocke les passwords chiffrés avec DPAPI. Avec les DPAPI keys extraites, ils sont décryptables.
3. DPAPI keys
04d_dpapi_keys/
├── 5e816aa7-3c64-4487-861e-cb94f0a42568
├── 79eca71c-11d8-4f34-8673-ecaa929560ce
├── 7c153764-002b-4666-8ae2-01085f193220
├── CREDHIST
└── Preferred
Problème : Les DPAPI keys protègent Chrome Login Data, cookies, et certificats. Une fois extraites, tout est décryptable.
4. Registry SAM dump
04f_registry_sam/
├── secretsdump.sam
├── secretsdump.secrets
└── secretsdump_log.txt
Problème : Contient les hashes NTLM des utilisateurs Windows. Crackable avec hashcat/John.
5. SSH keys
04e_ssh_keys/
├── id_rsa
├── id_rsa.pub
└── known_hosts
Problème : Clés privées SSH = accès à tous les serveurs configurés dans known_hosts.
6. SSL certificates
04g_ssl_certs/
├── server.crt
└── server.key
Problème : Clé privée SSL = MITM possible, déchiffrement de trafic TLS capturé.
Solution protectif — Protection contre l'extraction forensique
1. Empêcher l'extraction Chrome
# Disable Chrome password saving via GPO / Registry
# Windows
Set-ItemProperty -Path "HKLM:\Software\Policies\Google\Chrome" -Name "PasswordManagerEnabled" -Value 0
Set-ItemProperty -Path "HKLM:\Software\Policies\Google\Chrome" -Name "AutofillAddressEnabled" -Value 0
Set-ItemProperty -Path "HKLM:\Software\Policies\Google\Chrome" -Name "PaymentMethodQueryEnabled" -Value 0
# macOS
defaults write com.google.Chrome PasswordManagerEnabled -bool false
# Linux (Chrome policies)
sudo mkdir -p /etc/opt/chrome/policies/managed
cat <<EOF | sudo tee /etc/opt/chrome/policies/managed/security.json
{
"PasswordManagerEnabled": false,
"AutofillAddressEnabled": false,
"PaymentMethodQueryEnabled": false,
"SafeBrowsingEnabled": true
}
EOF
2. Détection d'extraction DPAPI
# detect_dpapi_extraction.ps1
$dpapiPath = "$env:APPDATA\Microsoft\Protect"
$dpapiKeys = Get-ChildItem -Path $dpapiPath -Recurse -File
# Surveiller l'accès aux DPAPI keys
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4663} | Where-Object {
$_.Message -like "*$dpapiPath*"
} | ForEach-Object {
Write-Warning "Accès DPAPI détecté: $($_.Message)"
}
3. FileZilla sécurisé
<!-- filezilla.xml -->
<Settings>
<!-- Désactiver le stockage des mots de passe -->
<Setting name="Kiosk mode">1</Setting>
<!-- ou utiliser un master password -->
<Setting name="Master password">true</Setting>
</Settings>
4. SSH key protection
# ~/.ssh/config
Host *
# Utiliser un agent avec confirmation
AddKeysToAgent confirm
# Ou utiliser un hardware token (YubiKey)
IdentityFile ~/.ssh/id_ed25519_sk # FIDO2 / hardware-backed
# Chiffrer les clés SSH avec une passphrase FORTE
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519
# -a 100 = 100 rounds KDF (lent contre le bruteforce)
5. Détection de forensics tools
# detect_forensics.py — Détecter les outils d'extraction
import psutil
import os
FORENSICS_PROCESSES = [
'mimikatz', 'procdump', 'secretsdump', 'lsass',
'volatility', 'autopsy', 'ftk', 'encase',
'dpapi', 'chromepass', 'webbrowserpassview',
'nirsoft', 'mftexplorer'
]
FORENSICS_PATHS = [
r'C:\Tools\mimikatz',
r'C:\Forensics',
r'%TEMP%\mimikatz',
r'%TEMP%\dpapi',
]
def detect_forensics_activity():
alerts = []
# Vérifier les processus
for proc in psutil.process_iter(['pid', 'name']):
for forensics_name in FORENSICS_PROCESSES:
if forensics_name.lower() in proc.info['name'].lower():
alerts.append(f"Processus forensics: {proc.info['name']} (PID: {proc.info['pid']})")
# Vérifier les chemins suspects
for path in FORENSICS_PATHS:
expanded = os.path.expandvars(path)
if os.path.exists(expanded):
alerts.append(f"Chemin forensics: {expanded}")
# Vérifier l'accès aux fichiers sensibles
sensitive_files = [
os.path.expandvars(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data'),
os.path.expandvars(r'%APPDATA%\Microsoft\Protect'),
]
return alerts
6. YubiKey / FIDO2 pour SSH et password manager
# Générer une clé SSH hardware-backed (ne peut PAS être extraite)
ssh-keygen -t ed25519-sk -O resident -O verify-required
# -t ed25519-sk = Ed25519 avec FIDO2/U2F
# -O resident = stockée sur le YubiKey
# -O verify-required = demande le PIN à chaque usage
Checklist de validation
- Chrome : PasswordManagerEnabled = false (GPO)
- FileZilla : Master password ou Kiosk mode
- SSH : Clés chiffrées avec passphrase (+ hardware token si possible)
- Windows : Credential Guard activé (HVCI)
- Windows : LSA Protection (RunAsPPL)
- Windows : DPAPI isolation (credential guard)
- Pas de stockage de mots de passe en base64/clair
- SSL keys chiffrées avec passphrase
- Détection de processus forensics (Mimikatz, etc.)
- Monitoring accès fichiers sensibles (Login Data, DPAPI, SAM)
- YubiKey/FIDO2 pour les credentials critiques
Anti-pattern associé
KNOW-ANT-011— Unencrypted credential storage
Références
- Archive Ygg :
04_CREDENTIALS/ - Microsoft : Credential Guard
- Windows Defender : LSA Protection
- YubiKey : https://developers.yubico.com