Windows Phantom DLL Created on Disk


Description

The following analytic detects creation of DLL files with names associated with phantom DLL hijacking opportunities. These DLLs are usually absent from standard Windows installations, but legitimate Windows components or services may attempt to load them when they are present in expected search paths such as System32. Phantom DLL hijacking involves placing a malicious DLL where a legitimate process will search for a non-existent dependency, allowing the attacker-controlled library to execute in that process context. ShieldBreak is one example where the exploit redirects a privileged Defender-driven write into C:\Windows\System32\phoneinfo.dll and then triggers Windows Error Reporting so wermgr.exe loads the planted DLL at SYSTEM integrity. If confirmed malicious, this activity can indicate preparation for code execution, persistence, or local privilege escalation through DLL search order hijacking.

Query · spl

| tstats `security_content_summariesonly`
  count min(_time) as firstTime
        max(_time) as lastTime
from datamodel=Endpoint.Filesystem where

Filesystem.action IN ("created","modified")

Filesystem.file_path IN (
    "*:\\Windows\\System32\\axeonoffhelper.dll",
    "*:\\Windows\\System32\\cdpsgshims.dll",
    "*:\\Windows\\System32\\oci.dll",
    "*:\\Windows\\System32\\offdmpsvc.dll",
    "*:\\Windows\\System32\\shellchromeapi.dll",
    "*:\\Windows\\System32\\TSMSISrv.dll",
    "*:\\Windows\\System32\\TSVIPSrv.dll",
    "*:\\Windows\\System32\\wbem\\wbemcomn.dll",
    "*:\\Windows\\System32\\WLBSCTRL.dll",
    "*:\\Windows\\System32\\wow64log.dll",
    "*:\\Windows\\System32\\WptsExtensions.dll",
    "*\\phoneinfo.dll",
    "*\\SprintCSP.dll"
)
by Filesystem.action Filesystem.dest Filesystem.file_hash
   Filesystem.file_name Filesystem.file_path Filesystem.process_id
   Filesystem.user Filesystem.vendor_product

| `drop_dm_object_name(Filesystem)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `windows_phantom_dll_created_on_disk_filter`

Implementation guide

To successfully implement this search, you need file creation telemetry from Windows endpoints mapped into the Endpoint.Filesystem datamodel. If you are using Sysmon, enable EventID 11 and ensure the FileCreate configuration captures the full target filename for DLL creations in Windows system paths.

Known false positives

  • Some legacy or third-party components may create DLLs with these names for legitimate compatibility reasons, but creation in Windows system paths should be uncommon. Review the creating process, signer, file hash, path, and whether the DLL is expected on the host before tuning.

Analyst notes

Known false positives: Some legacy or third-party components may create DLLs with these names for legitimate compatibility reasons, but creation in Windows system paths should be uncommon. Review the creating process, signer, file hash, path, and whether the DLL is expected on the host before tuning.

Raw source Windows Phantom DLL Created on Disk · SPL
Esc
Published by splunk/security_content ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
name: Windows Phantom DLL Created on Disk
id: 34cb2dfb-1dec-4b6b-bc72-c3904e5e4521
version: 2
creation_date: '2026-08-17'
modification_date: '2026-08-20'
author: Onur Mustafa Erdogan, Nasreddine Bencherchali, Splunk
status: production
type: TTP
description: |-
    The following analytic detects creation of DLL files with names associated with phantom DLL hijacking opportunities.
    These DLLs are usually absent from standard Windows installations, but legitimate Windows components or services may attempt to load them when they are present in expected search paths such as System32.
    Phantom DLL hijacking involves placing a malicious DLL where a legitimate process will search for a non-existent dependency, allowing the attacker-controlled library to execute in that process context.
    ShieldBreak is one example where the exploit redirects a privileged Defender-driven write into C:\Windows\System32\phoneinfo.dll and then triggers Windows Error Reporting so wermgr.exe loads the planted DLL at SYSTEM integrity.
    If confirmed malicious, this activity can indicate preparation for code execution, persistence, or local privilege escalation through DLL search order hijacking.
data_source:
    - Sysmon EventID 11
search: |-
    | tstats `security_content_summariesonly`
      count min(_time) as firstTime
            max(_time) as lastTime
    from datamodel=Endpoint.Filesystem where

    Filesystem.action IN ("created","modified")

    Filesystem.file_path IN (
        "*:\\Windows\\System32\\axeonoffhelper.dll",
        "*:\\Windows\\System32\\cdpsgshims.dll",
        "*:\\Windows\\System32\\oci.dll",
        "*:\\Windows\\System32\\offdmpsvc.dll",
        "*:\\Windows\\System32\\shellchromeapi.dll",
        "*:\\Windows\\System32\\TSMSISrv.dll",
        "*:\\Windows\\System32\\TSVIPSrv.dll",
        "*:\\Windows\\System32\\wbem\\wbemcomn.dll",
        "*:\\Windows\\System32\\WLBSCTRL.dll",
        "*:\\Windows\\System32\\wow64log.dll",
        "*:\\Windows\\System32\\WptsExtensions.dll",
        "*\\phoneinfo.dll",
        "*\\SprintCSP.dll"
    )
    by Filesystem.action Filesystem.dest Filesystem.file_hash
       Filesystem.file_name Filesystem.file_path Filesystem.process_id
       Filesystem.user Filesystem.vendor_product

    | `drop_dm_object_name(Filesystem)`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `windows_phantom_dll_created_on_disk_filter`
how_to_implement: |-
    To successfully implement this search, you need file creation telemetry from Windows endpoints mapped into the Endpoint.Filesystem datamodel.
    If you are using Sysmon, enable EventID 11 and ensure the FileCreate configuration captures the full target filename for DLL creations in Windows system paths.
known_false_positives: |-
    Some legacy or third-party components may create DLLs with these names for legitimate compatibility reasons, but creation in Windows system paths should be uncommon.
    Review the creating process, signer, file hash, path, and whether the DLL is expected on the host before tuning.
references:
    - http://remoteawesomethoughts.blogspot.com/2019/05/windows-10-task-schedulerservice.html
    - https://clement.notin.org/blog/2020/09/12/CVE-2020-7315-McAfee-Agent-DLL-injection/
    - https://decoded.avast.io/martinchlumecky/png-steganography/
    - https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE%20via%20StorSvc
    - https://github.com/Wh04m1001/SysmonEoP
    - https://itm4n.github.io/cdpsvc-dll-hijacking/
    - https://posts.specterops.io/lateral-movement-scm-and-dll-hijacking-primer-d2f61e8ab992
    - https://securelist.com/passiveneuron-campaign-with-apt-implants-and-cobalt-strike/117745/
    - https://www.crowdstrike.com/en-us/blog/4-ways-adversaries-hijack-dlls/
    - https://www.cyderes.com/howler-cell/rogueplanet-windows-zero-day
    - https://www.hexacorn.com/blog/2013/12/08/beyond-good-ol-run-key-part-5/
    - https://www.hexacorn.com/blog/2016/06/02/beyond-good-ol-run-key-part-40/
    - https://www.hexacorn.com/blog/2025/06/14/wermgr-exe-boot-offdmpsvc-dll-lolbin/
    - https://www.hexacorn.com/blog/2025/06/14/wpr-exe-boottrace-phantom-dll-axeonoffhelper-dll-lolbin/
    - https://www.threatlocker.com/blog/nightmareeclipse-releases-new-poc-shieldbreak-exploits-same-weakness-as-rogueplanet
    - https://x.com/0gtweet/status/1564131230941122561
drilldown_searches:
    - name: View the detection results for - "$dest$"
      search: '%original_detection_search% | search  dest = "$dest$"'
      earliest_offset: $info_min_time$
      latest_offset: $info_max_time$
    - name: View risk events for the last 7 days for - "$dest$"
      search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") | 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: 7d
      latest_offset: "0"
finding:
    title: A phantom DLL candidate named [$file_name$] was created at [$file_path$] on [$dest$]
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: file_name
      type: file_name
    - field: file_path
      type: file_path
analytic_story:
    - RoguePlanet
    - Windows Privilege Escalation
    - Windows Defense Evasion Tactics
asset_type: Endpoint
mitre_attack_id:
    - T1574.001
    - T1068
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint
tests:
    - name: True Positive Test
      attack_data:
        - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/emerging_threats/ShieldBreak/phoneinfo_dll_created.log
          source: XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
          sourcetype: XmlWinEventLog
      test_type: unit

Detection rules belong to the projects that publish them and remain under their own licenses. This site indexes and links to them; it claims no rights in them.