Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Detect process injection techniques (T1055) including classic DLL injection, process hollowing, and APC injection by analyzing Sysmon events for cross-process memory operations, remote thread creation, and anomalous DLL loading patterns.
.claude/skills/detecting-t1055-process-injection-with-sysmon/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 18 |
| gemini-3.8-flash | 100% | 1 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-03 | ✗→✓ | ▲ Improved | — | — |
| Concept | Description | |---------|-------------| | T1055.001 | Dynamic-link Library Injection | | T1055.002 | Portable Executable Injection | | T1055.003 | Thread Execution Hijacking | | T1055.004 | Asynchronous Procedure Call (APC) Injection | | T1055.005 | Thread Local Storage | | T1055.012 | Process Hollowing | | T1055.013 | Process Doppelganging | | T1055.015 | ListPlanting | | Sysmon Event 8 | CreateRemoteThread detected | | Sysmon Event 10 | ProcessAccess with memory write permissions | | Sysmon Event 25 | ProcessTampering (image mismatch) | | Access Mask 0x1FFFFF | PROCESS_ALL_ACCESS -- full cross-process control |
| Tool | Purpose | |------|---------| | Sysmon | Primary telemetry source for injection detection | | Process Hacker | Manual investigation of process memory regions | | PE-sieve | Scan running processes for hollowed/injected code | | Moneta | Detect anomalous memory regions in processes | | Splunk / Elastic | SIEM correlation of Sysmon events | | Volatility | Memory forensics for injection artifacts | | Hollows Hunter | Automated scan for hollowed processes |
splindex=sysmon EventCode=8 | where SourceImage!=TargetImage | where NOT match(SourceImage, "(?i)(csrss|lsass|services|svchost|MsMpEng|SecurityHealthService|vmtoolsd)\.exe$") | eval suspicious=if(match(TargetImage, "(?i)(svchost|explorer|lsass|winlogon|csrss|services)\.exe$"), "high_value_target", "normal_target") | where suspicious="high_value_target" | table _time Computer SourceImage SourceProcessId TargetImage TargetProcessId StartFunction NewThreadId
splindex=sysmon EventCode=10 | where SourceImage!=TargetImage | where match(GrantedAccess, "(0x1FFFFF|0x1F3FFF|0x143A|0x0040)") | where match(TargetImage, "(?i)(lsass|svchost|explorer|winlogon)\.exe$") | where NOT match(SourceImage, "(?i)(MsMpEng|csrss|services|svchost|taskmgr|procexp)\.exe$") | table _time Computer SourceImage TargetImage GrantedAccess CallTrace
kqlDeviceEvents | where Timestamp > ago(7d) | where ActionType == "CreateRemoteThreadApiCall" | where InitiatingProcessFileName !in~ ("csrss.exe", "lsass.exe", "services.exe", "svchost.exe") | where FileName in~ ("svchost.exe", "explorer.exe", "lsass.exe", "winlogon.exe") | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine
yamltitle: Process Injection via CreateRemoteThread into System Process status: stable logsource: product: windows category: create_remote_thread detection: selection: TargetImage|endswith: - '\svchost.exe' - '\explorer.exe' - '\lsass.exe' - '\winlogon.exe' filter_legitimate: SourceImage|endswith: - '\csrss.exe' - '\lsass.exe' - '\services.exe' - '\MsMpEng.exe' condition: selection and not filter_legitimate level: high tags: - attack.defense_evasion - attack.t1055
Hunt ID: TH-INJECT-[DATE]-[SEQ]
Host: [Hostname]
Source Process: [Injecting process path]
Source PID: [Process ID]
Target Process: [Target process path]
Target PID: [Process ID]
Injection Type: [DLL/Shellcode/Hollowing/APC]
Sysmon Events: [Event IDs triggered]
Access Mask: [Granted access value]
Risk Level: [Critical/High/Medium/Low]
ATT&CK Sub-Technique: [T1055.xxx]| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-24 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +25 percentage points is the difference between those two pass rates over the 24 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.