-
Notifications
You must be signed in to change notification settings - Fork 454
detection Lateral Movement via BitLocker COM Hijacking #3801
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 6 commits
4de4fdf
1439e50
2605c64
95bbfa4
3fdda4e
8553887
a2b6ad4
c75c510
f6ffe69
522c9f1
d53026d
6e8d570
229a6cb
9bd7ce6
63c4d7a
0a133b7
fd52328
a77da35
5a55867
16b2f3b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,140 @@ | ||
| --- | ||
| name: Lateral Movement via BitLocker COM Hijacking | ||
| id: 990d5907-c022-4358-9ada-f6e5e69514e8 | ||
| version: 1 | ||
| date: '2025-09-28' | ||
| author: AAtashGar | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| status: production | ||
| description: |- | ||
| This detection identifies potential lateral movement activities | ||
| using BitLocker COM hijacking techniques. It monitors for changes | ||
| to the Remote Registry service, new registry values in CLSID paths, | ||
| handle operations on CLSIDs, and executions of specific processes like | ||
| baaupdate.exe and BdeUISrv.exe. These events are correlated by host to | ||
| detect sequences indicative of this attack vector. | ||
| type: Correlation | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| references: | ||
| - https://medium.com/@seripallychetan/bitlocker-com-hijack-a-new-frontier-in-lateral-movement-tactics-ac5039b18dc6 | ||
| - https://ipurple.team/2025/08/04/lateral-movement-bitlocker/ | ||
| search: | | ||
| (`wineventlog_security`) OR (`wineventlog_system`) \ | ||
| EventCode IN (7040, 4657, 4663, 4688) | ||
| [ search `wineventlog_system` EventCode=7040 service="Remote Registry" | ||
| | fields ComputerName | ||
| | dedup ComputerName | ||
| ] | ||
| | where | ||
| (EventCode=7040 AND service="Remote Registry") OR | ||
| (EventCode=4657 AND Operation_Type="New registry value created" | ||
| AND Object_Name LIKE "%CLSID%") OR | ||
| (EventCode=4663 AND Object_Name LIKE "%CLSID%") OR | ||
| (EventCode=4688 AND ( | ||
| (process_name="baaupdate.exe" AND parent_process_name="explorer.exe") OR | ||
| (process_name="BdeUISrv.exe" AND parent_process_name="svchost.exe") | ||
| )) | ||
|
||
| | eval srvchngstsTime=if(EventCode=7040, _time, null) | ||
| | eval regvlsetTime=if(EventCode=4657, _time, null) | ||
| | eval reghandleTime=if(EventCode=4663, _time, null) | ||
| | eval procexecTime=if(EventCode=4688, _time, null) | ||
| | eval ServiceMessage=if(EventCode=7040, Message, null) | ||
| | eval ProcessName_4663=if(EventCode=4663, process, null) | ||
| | eval CLSID_Path=if(EventCode IN (4657, 4663), Object_Name, null) | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| | stats | ||
| values(srvchngstsTime) AS srvchngstsTime | ||
| values(regvlsetTime) AS regvlsetTime | ||
| values(reghandleTime) AS reghandleTime | ||
| values(procexecTime) AS procexecTime | ||
| values(ServiceMessage) AS ServiceMessage | ||
| values(CLSID_Path) AS CLSID_Path | ||
| values(New_Value_Type) AS New_Value_Type | ||
| values(New_Value) AS New_Value | ||
| values(Access_Mask) AS AccessMask | ||
| values(ProcessName_4663) AS ProcessName_4663 | ||
| values(parent_process_id) AS parent_process_id | ||
| values(parent_process_name) AS parent_process_name | ||
| values(process_id) AS process_id | ||
| values(process_name) AS process_name | ||
| values(TimeDiff1) AS TimeDiff_Service_to_Registry | ||
| values(TimeDiff2) AS TimeDiff_Registry_to_Handle | ||
| values(TimeDiff3) AS TimeDiff_Handle_to_Process | ||
| count(eval(EventCode=7040)) AS SrvEvts | ||
| count(eval(EventCode=4657)) AS RegEvts | ||
| count(eval(EventCode=4663)) AS HdlEvts | ||
| count(eval(EventCode=4688)) AS ProcEvts | ||
| by ComputerName | ||
|
||
| | where SrvEvts>0 AND RegEvts>0 AND HdlEvts>0 AND ProcEvts>0 | ||
| | where isnotnull(CLSID_Path) | ||
| | eval srvchngstsTime=strftime(srvchngstsTime, "%Y-%m-%d %H:%M:%S") | ||
| | eval regvlsetTime=strftime(regvlsetTime, "%Y-%m-%d %H:%M:%S") | ||
| | eval reghandleTime=strftime(reghandleTime, "%Y-%m-%d %H:%M:%S") | ||
| | eval procexecTime=strftime(procexecTime, "%Y-%m-%d %H:%M:%S") | ||
| | table | ||
| ComputerName | ||
| srvchngstsTime | ||
| ServiceMessage | ||
| regvlsetTime | ||
| CLSID_Path | ||
| New_Value_Type | ||
| New_Value | ||
| reghandleTime | ||
| ProcessName_4663 | ||
| AccessMask | ||
| procexecTime | ||
| parent_process_id | ||
| parent_process_name | ||
| process_id | ||
| process_name | ||
| | rename | ||
| ComputerName AS "Host" | ||
| CLSID_Path AS "CLSID Path" | ||
| srvchngstsTime AS "Service Change Time" | ||
| ServiceMessage AS "Service Message" | ||
| regvlsetTime AS "Registry Change Time" | ||
| New_Value_Type AS "Registry Value Type" | ||
| New_Value AS "Registry Value" | ||
| reghandleTime AS "Handle Creation Time" | ||
| AccessMask AS "Access Mask" | ||
| ProcessName_4663 AS "Process Accessing Registry" | ||
| procexecTime AS "Process Execution Time" | ||
| parent_process_name AS "Parent Process" | ||
| process_name AS "Process Name" | ||
| parent_process_id AS "Parent Process ID" | ||
| process_id AS "Process ID" | ||
| | sort - "Service Change Time" | ||
| | `lateral_movement_via_bitlocker_com_hijacking_filter` | ||
| how_to_implement: |- | ||
| Ensure Windows Event Logs are being ingested into Splunk, | ||
| particularly from the Security channel (wineventlog). | ||
| This detection requires fields like EventCode, ComputerName, | ||
| service, Operation_Type, Object_Name, process_name, parent_process_name, | ||
| Message, process, New_Value_Type, New_Value, Access_Mask, parent_process_id, | ||
| and process_id. Use Sysmon or Endpoint data models for enhanced coverage. | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| known_false_positives: |- | ||
| Legitimate administrative activities may trigger this detection, | ||
| such as software installations or system configurations involving | ||
| Remote Registry and BitLocker components. Tune based on environment. | ||
| drilldown_searches: | ||
| - name: View the detection results for - "$Host$" | ||
| search: '%original_detection_search% | search Host = "$Host$"' | ||
| earliest_offset: $info_min_time$ | ||
| latest_offset: $info_max_time$ | ||
| - name: View risk events for the last 7 days for - "$Host$" | ||
| search: '| from datamodel Risk.All_Risk | search normalized_risk_object="$Host$" | ||
| starthoursago=168 | stats count min(_time) as firstTime max(_time) | ||
| as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk | ||
| Message" values(analyticstories) as "Analytic Stories" values(annotations._all) | ||
| as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" | ||
| by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`' | ||
| earliest_offset: $info_min_time$ | ||
| latest_offset: $info_max_time$ | ||
| tags: | ||
| analytic_story: | ||
| - BitLocker COM Hijacking Lateral Movement | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| asset_type: Endpoint | ||
| mitre_attack_id: | ||
| - T1546.015 | ||
| product: | ||
| - Splunk Enterprise | ||
| - Splunk Enterprise Security | ||
| - Splunk Cloud | ||
| security_domain: endpoint | ||
nasbench marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| name: lateral_movement_via_bitlocker_com_hijacking_filter | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| definition: search * | ||
| description: Filter macro for Lateral Movement via BitLocker COM Hijacking detection | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| --- | ||
| # Analytic Story: BitLocker COM Hijacking Lateral Movement | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| name: BitLocker COM Hijacking Lateral Movement | ||
| id: 9d1f4a2b-6e3c-4f7d-8a9b-1c5e7f8d3e4f | ||
| version: 1 | ||
| date: '2025-11-23' | ||
| author: Ali Atashgar (AAtashGar) | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| status: production | ||
| description: | | ||
| Detection content for the 2025 BitLocker COM hijacking lateral | ||
nasbench marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| movement technique using HKCU registry manipulation | ||
| of Network Unlock COM object. | ||
| narrative: | | ||
| In August 2025, a novel lateral movement technique was published that abuses | ||
| the BitLocker Network Unlock COM object | ||
| (CLSID {A7A63E5C-3877-4840-8727-C1EA9D7A4D50}). | ||
| Attackers enable RemoteRegistry,write a malicious DLL path to InprocServer32 | ||
| under HKCU\Software\Classes\CLSID for logged-on users, and trigger execution | ||
| via baaupdate.exe (from explorer.exe) or BdeUISrv.exe (from svchost.exe). | ||
| This analytic story provides detection for this advanced persistence and | ||
| lateral movement technique. | ||
| references: | ||
| - https://ipurple.team/2025/08/04/lateral-movement-bitlocker/ | ||
| - https://github.com/rtecCyberSec/BitlockMove | ||
| tags: | ||
| category: | ||
| - Adversary Tactics | ||
| product: | ||
| - Splunk Enterprise | ||
| - Splunk Enterprise Security | ||
| - Splunk Cloud | ||
| usecase: Advanced Threat Detection | ||
Uh oh!
There was an error while loading. Please reload this page.