BitLocker Lateral Movement: Quando la Sicurezza Diventa un Boomerang
“Ehi, hai mai sentito dire che la strada per l’inferno è lastricata di buone intenzioni? Bene, nel mondo della cybersecurity potremmo dire che è lastricata di feature di sicurezza mal implementate.”
L’Ironia di BitLocker: Da Scudo a Spada
Cari amministratori di sistema e security engineer, mettetevi comodi perché oggi parliamo di una delle ironie più gustose della cybersecurity moderna. BitLocker, quel prezioso alleato che Microsoft ci ha donato per proteggere i nostri dati sensibili, può trasformarsi in un tunnel segreto per i cybercriminali più creativi.
PILLOLA INFORMATIVA: Cos’è BitLocker?
BitLocker è la tecnologia di crittografia completa del disco di Microsoft, progettata per proteggere i dati criptando interi volumi. È come mettere i tuoi file in una cassaforte digitale… peccato che qualcuno abbia lasciato una chiave di servizio sotto lo zerbino.
La Scoperta: Quando la Ricerca Incontra la Realtà
Fabian Mosch (@ShitSecure – già il nickname la dice lunga sulla sua filosofia) ha presentato alla conferenza Troopers 2025 una tecnica di lateral movement che sfrutta BitLocker attraverso la manipolazione remota delle chiavi di registro tramite Windows Management Instrumentation (WMI).
L’Obiettivo dell’Attacco
- Target primario: Hijack di oggetti COM specifici di BitLocker
- Risultato: Esecuzione di codice nel contesto dell’utente interattivo
- Bonus malus: Se l’utente ha privilegi elevati (domain admin), si ottiene l’escalation a livello di dominio
PILLOLA DI CONSAPEVOLEZZA
Non è raro che i threat actor adottino tecniche divulgate dai ricercatori di sicurezza per ridurre i costi operativi e rendere più difficile l’attribuzione. In parole povere: quello che oggi è un PoC accademico, domani potrebbe essere nel toolkit di un ransomware.
Anatomia dell’Attacco: Sezionando BitLockMove
Il Tool del Crimine: BitLockMove
Il tool BitLockMove è l’implementazione pratica di questa tecnica. È scritto in .NET (perché si sa, .NET è il coltellino svizzero dei malware moderni) e sfrutta API non documentate della libreria winsta.dll.
API Utilizzate dal Tool
| API | Funzione | Livello di Sneakiness |
|---|---|---|
WinStationOpenServerW | Apre un handle al server specificato | Medio |
WinStationCloseServer | Chiude l’handle al server | Basso |
WinStationEnumerateW | Enumera tutte le sessioni del sistema | Alto |
WinStationQueryInformationW | Recupera informazioni su una sessione | Medio |
APPROFONDIMENTO TECNICO: Le API Non Documentate
Queste API fanno parte dell’ecosistema interno di Windows e sono utilizzate da strumenti legittimi come qwinsta.exe. Il reverse engineering del binario mostra che:
winsta.dll exports:
├── WinStationOpenServerW
├── WinStationCloseServer
├── WinStationEnumerateW
└── WinStationQueryInformationW
Perché è importante? Microsoft fornisce ufficialmente WTSEnumerateSessionsW (in wtsapi32.dll) per l’enumerazione delle sessioni, ma gli attaccanti preferiscono le API non documentate per evitare le detection più comuni.
Il Cuore dell’Attacco: Manipolazione del Registry
Target: CLSID Specifico
L’attacco si concentra su un CLSID specifico associato a BitLocker:
\SOFTWARE\Classes\CLSID\{A7A63E5C-3877-4840-8727-C1EA9D7A4D50}
PILLOLA TECNICA: Cosa sono i CLSID?
I Class Identifier (CLSID) sono identificatori univoci utilizzati da Windows per registrare e istanziare oggetti COM. Pensateli come “certificati di nascita” per i componenti software. Quando un processo cerca di caricare un oggetto COM, Windows consulta il registry per trovare il percorso della DLL associata.
Il Processo di Hijacking
- Connessione remota via WMI al target
- Abilitazione del servizio Remote Registry (normalmente disabilitato)
- Creazione della chiave di registry malevola
- Puntamento verso la DLL malicious
- Trigger del processo BitLocker
Codice di Esempio: Abilitazione Remote Registry
static void EnableRemoteRegistryViaWMI(string computerName, string username = null, string password = null)
{
ConnectionOptions options = new ConnectionOptions();
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
options.Username = username;
options.Password = password;
}
ManagementScope scope = new ManagementScope($"\\\\{computerName}\\root\\cimv2", options);
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service WHERE Name='RemoteRegistry'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
// Il resto è storia... malicious storia
}
Scenario di Attacco: Il Playbook Completo
Fase 1: Reconnaissance
dotnet inline-execute /home/kali/BitlockMove.exe mode=enum target=10.0.0.6
Questo comando enumera le sessioni attive sul target, identificando potenziali vittime con privilegi elevati.

Fase 2: Exploitation
dotnet inline-execute /home/kali/BitlockMove.exe mode=attack target=10.0.0.6 dllpath=C:\tmp\demon.x64.dll targetuser=ipurple\Administrator command="C:\tmp\demon.x64.exe"

APPROFONDIMENTO: I Processi Coinvolti
Durante l’attacco vengono spawniati diversi processi:
| Processo | Ruolo | Contesto di Esecuzione |
|---|---|---|
BaaUpdate.exe | Vittima del COM hijacking | Interactive User |
BdeUISrv.exe | Processo BitLocker legittimo | Interactive User |
demon.x64.exe | Payload dell’attaccante | Interactive User |
PILLOLA DI CONSAPEVOLEZZA AVANZATA
Il tool esegue automaticamente una “pulizia” eliminando la DLL malevola e le chiavi di registry create. Questo comportamento anti-forensics rende più difficile l’analisi post-incident, ma non impossibile se si monitora in tempo reale.
Strategie di Detection: Come Non Farsi Fregare
1. Monitoring delle API Sospette
Approccio consigliato: Implementare detection per le chiamate alle API di enumerazione sessioni remote.
API da Monitorare
| Libreria | API | Legittimità | Action Required |
|---|---|---|---|
winsta.dll | WinStationEnumerateW | Bassa frequenza | Alert immediato |
wtsapi32.dll | WTSEnumerateSessionsW | Media frequenza | Correlazione necessaria |
Detection Logic:
- Processi non standard che caricano
winsta.dll - Chiamate API da processi che normalmente non gestiscono sessioni remote
- Pattern temporali sospetti (enum + registry changes)
2. Monitoring del Servizio Remote Registry
Il servizio Remote Registry è disabilitato di default su Windows moderni. Qualsiasi modifica al suo stato dovrebbe triggerare un alert.
SIGMA Rule per Remote Registry
title: Detection of Remote Registry Service Enablement
id: d2a4f7c1-6e23-4b88-b9d2-c1f2e8a4b7c5
status: experimental
description: Detects when the RemoteRegistry service start type is changed from Disabled to Manual or Automatic
author: Panos Gkatziroulis
date: 2025-07-31
logsource:
product: windows
service: system
source: Microsoft-Windows-Service Control Manager
detection:
selection:
EventID: 7040
EventData.ServiceName: 'RemoteRegistry'
EventData.OldStartType: 'Disabled'
EventData.NewStartType:
- 'Manual start'
- 'Auto start'
legit_scm:
SubjectProcessName|endswith: '\\services.exe'
SubjectUserName: 'NT AUTHORITY\\SYSTEM'
condition: selection and not legit_scm
falsepositives:
- Administrators manually reconfiguring Remote Registry for remote management
- Enterprise management tools adjusting service start types
level: high
3. Registry Monitoring Avanzato
Chiavi da Monitorare
HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{A7A63E5C-3877-4840-8727-C1EA9D7A4D50}
Eventi Windows da Correlare
| Event ID | Attività | Priorità |
|---|---|---|
| 4657 | Registry Key Creation | 🔴 Alta |
| 4660 | Registry Key Deletion | 🟡 Media |
| 4663 | Access Registry Object | 🟡 Media |
KQL Query per Defender for Endpoint
DeviceRegistryEvents
| where Timestamp >= ago(7d)
| where RegistryKey has @"HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{A7A63E5C-3877-4840-8727-C1EA9D7A4D50}"
| where ActionType in ("RegistryValueSet", "RegNtOpenKey", "RegNtQueryValueKey")
| where InitiatingProcessFileName has "BaaUpdate" or InitiatingProcessCommandLine has "BaaUpdate"
| project
Timestamp,
DeviceName,
RegistryKey,
RegistryValueName,
ActionType,
InitiatingProcessFileName,
InitiatingProcessCommandLine
| sort by Timestamp desc
4. Process Monitoring Behavioral
Processi Sospetti da Monitorare
| Parent Process | Child Process | Legittimità | Action |
|---|---|---|---|
explorer.exe | baaupdate.exe | Sospetto | Investigate |
svchost.exe | BdeUISrv.exe | Contestuale | Correlate |
Query di Threat Hunting
DeviceProcessEvents
| where EventId == 4688
| where FileName == "BdeUISrv.exe"
| where InitiatingProcessFileName == "svchost.exe"
| project Timestamp, DeviceName, AccountName, FileName, InitiatingProcessFileName, ProcessCommandLine
Tattiche di Hardening: La Difesa Proattiva
1. Configurazioni Preventive
Registry Auditing Setup
# Abilitazione auditing per CLSID specifici
$registryPath = "HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID\{A7A63E5C-3877-4840-8727-C1EA9D7A4D50}"
$audit = "SetValue,CreateSubKey,Delete,WriteDac"
$principal = "Everyone"
# Configurazione tramite PowerShell o Group Policy
Service Hardening
- Disabilitare permanentemente Remote Registry dove non necessario
- Implementare Just-In-Time access per servizi critici
- Monitoring continuo delle modifiche ai servizi
2. Detection Engineering Avanzato
Correlation Rules
# Regola di correlazione multi-stage
name: "BitLocker Lateral Movement Chain"
triggers:
- Remote Registry Service Enablement (Event 7040)
- CLSID Registry Modification (Event 4657)
- Suspicious Process Execution (BdeUISrv.exe)
time_window: 5 minutes
confidence: HIGH
Behavioral Analytics
Implementare detection basate su:
- Frequency analysis: Modifiche registry + process spawning inusuali
- User behavior deviation: Esecuzione di processi BitLocker su utenti non amministrativi
- Network correlation: WMI connections + Registry changes
3. Response Playbook
Immediate Actions
- Isolamento del sistema coinvolto
- Analisi delle session attive dell’utente compromesso
- Audit dei sistemi accessibili con le credenziali compromesse
- Revoca immediata delle credenziali dell’utente target
Investigation Deep Dive
# Analisi forensics post-incident
Get-WinEvent -FilterHashtable @{LogName='System'; ID=7040} |
Where-Object {$_.Message -like "*RemoteRegistry*"}
# Check dei processi sospetti
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688} |
Where-Object {$_.Message -like "*BdeUISrv*"}
Lezioni Apprese: La Saggezza dell’Ethical Hacker
Key Takeaways
- Every feature is a potential attack surface – Anche le funzionalità di sicurezza possono essere weaponizzate
- Defense in depth is non-negotiable – Una singola detection non basta mai
- Behavioral analysis beats signature detection – I pattern comportamentali sono più difficili da eludere
- Zero trust everything – Anche i processi “trusted” possono essere sfruttati
Future-Proofing
Raccomandazioni Strategiche
- Implement application allowlisting per processi critici come BitLocker
- Deploy behavioral monitoring che va oltre le signature
- Regular purple team exercises per testare detection capabilities
- Continuous threat hunting focusing su living-off-the-land techniques
Metrics che Contano
- Mean Time to Detection (MTTD) per lateral movement
- False Positive Rate delle detection rules implementate
- Coverage percentage degli attack paths noti
Conclusioni: Il Gioco Infinito della Cybersecurity
“Se pensate che la sicurezza sia costosa, provate un po’ a farvi hackerare.”
La tecnica di lateral movement tramite BitLocker COM Hijacking ci ricorda una verità fondamentale: nel mondo della cybersecurity, non esistono soluzioni definitive, solo miglioramenti incrementali.
Il Verdetto dell’Ethical Hacker
- Per i Red Team: Questa tecnica è un ottimo esempio di LOTL (Living Off The Land) che sfrutta funzionalità native
- Per i Blue Team: È tempo di rivedere le vostre detection rules e implementare monitoring comportamentale avanzato
- Per i Purple Team: Perfetto scenario per esercitazioni che testano la collaborazione offense/defense
Action Items Immediati
- Audit delle configurazioni BitLocker nei vostri ambienti
- Review delle detection capabilities per COM hijacking
- Implementazione delle SIGMA rules fornite in questo articolo
- Training del SOC team su questa specifica tecnica
La Filosofia Finale
Ricordate sempre: gli attaccanti pensano in sistemi, i difensori spesso in silos. Questa tecnica funziona proprio perché sfrutta le interconnessioni tra componenti apparentemente separati (Registry + WMI + COM + BitLocker).
Stay paranoid, stay secure! 🛡️
Articolo riadattato per il pubblico italiano da un ethical hacker che ha visto troppe volte la sicurezza trasformarsi in un boomerang. Se questo contenuto vi ha fatto sudare freddo, vuol dire che stiamo facendo il nostro lavoro.
Riferimenti e Credits
- Ricerca originale: Fabian Mosch (@ShitSecure)
- Tool: BitLockMove
- Conferenza: Troopers 2025
- Detection Rules: Adattate dalla community SIGMA
Contributi e Feedback
Avete trovato nuove varianti? Avete implementato detection aggiuntive? Condividete la vostra esperienza con la community. La cybersecurity è un gioco di squadra, e ogni contributo conta.
Remember: Today’s academic research is tomorrow’s APT technique.