Detection rules › Sigma
Use Short Name Path in Command Line
Detects the use of short name paths (8.3 format) in command lines, which can be used to obfuscate paths or access restricted locations. Windows creates short 8.3 filenames (like PROGRA~1) for compatibility with MS-DOS-based or 16-bit Windows programs. When investigating, examine: - Commands using short paths to access sensitive directories or files - Web servers on Windows (especially Apache) where short filenames could bypass security controls - Correlation with other suspicious behaviors - baseline of short name usage in your environment and look for deviations
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Stealth | T1564.004 Hide Artifacts: NTFS File Attributes |
Event coverage
| Provider | Event | Title |
|---|---|---|
| Sysmon | Event ID 1 | Process creation |
| Security-Auditing | Event ID 4688 | A new process has been created. |
Rule body yaml
title: Use Short Name Path in Command Line
id: 349d891d-fef0-4fe4-bc53-eee623a15969
related:
- id: a96970af-f126-420d-90e1-d37bf25e50e1
type: similar
status: test
description: |
Detects the use of short name paths (8.3 format) in command lines, which can be used to obfuscate paths or access restricted locations.
Windows creates short 8.3 filenames (like PROGRA~1) for compatibility with MS-DOS-based or 16-bit Windows programs.
When investigating, examine:
- Commands using short paths to access sensitive directories or files
- Web servers on Windows (especially Apache) where short filenames could bypass security controls
- Correlation with other suspicious behaviors
- baseline of short name usage in your environment and look for deviations
references:
- https://www.acunetix.com/blog/articles/windows-short-8-3-filenames-web-security-problem/
- https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959352(v=technet.10)
- https://twitter.com/frack113/status/1555830623633375232
author: frack113, Nasreddine Bencherchali
date: 2022-08-07
modified: 2025-10-22
tags:
- attack.stealth
- attack.t1564.004
- detection.threat-hunting
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|contains:
- '~1\'
- '~2\'
filter_main_system_process:
ParentImage:
- 'C:\Windows\System32\Dism.exe'
- 'C:\Windows\System32\cleanmgr.exe'
filter_main_winget:
- ParentImage|endswith: '\winget.exe'
- ParentImage|contains: '\AppData\Local\Temp\WinGet\'
filter_main_csc:
ParentImage|startswith: 'C:\Windows\Microsoft.NET\Framework64\v'
ParentImage|endswith: '\csc.exe'
filter_main_installers:
- Image|contains|all:
- '\AppData\'
- '\Temp\'
- CommandLine|contains: '\AppData\Local\Temp\' # sometimes installers spawn other installers from temp folder
filter_optional_dopus:
ParentImage: 'C:\Program Files\GPSoftware\Directory Opus\dopus.exe'
filter_optional_aurora:
ParentImage|endswith:
- '\aurora-agent-64.exe'
- '\aurora-agent.exe'
filter_optional_thor:
ParentImage|endswith: '\thor\thor64.exe'
filter_optional_git:
CommandLine|contains:
- 'C:\Program Files\Git\post-install.bat'
- 'C:\Program Files\Git\cmd\scalar.exe'
filter_optional_webex:
- ParentImage|endswith: '\WebEx\webexhost.exe'
- CommandLine|contains: '\appdata\local\webex\webex64\meetings\wbxreport.exe'
filter_optional_veeam:
ParentImage|endswith: '\veeam.backup.shell.exe'
filter_optional_everything:
ParentImage|endswith: '\Everything\Everything.exe'
condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
- Applications could use this notation occasionally which might generate some false positives. In that case investigate the parent and child process.
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_* and not 1 of filter_optional_*Stage 1: selection
selection:
CommandLine|contains:
- '~1\'
- '~2\'
Stage 2: not filter_main_*
filter_main_system_process:
ParentImage:
- 'C:\Windows\System32\Dism.exe'
- 'C:\Windows\System32\cleanmgr.exe'
filter_main_winget:
- ParentImage|endswith: '\winget.exe'
- ParentImage|contains: '\AppData\Local\Temp\WinGet\'
filter_main_csc:
ParentImage|startswith: 'C:\Windows\Microsoft.NET\Framework64\v'
ParentImage|endswith: '\csc.exe'
filter_main_installers:
- Image|contains|all:
- '\AppData\'
- '\Temp\'
- CommandLine|contains: '\AppData\Local\Temp\'
Stage 3: not filter_optional_*
filter_optional_dopus:
ParentImage: 'C:\Program Files\GPSoftware\Directory Opus\dopus.exe'
filter_optional_aurora:
ParentImage|endswith:
- '\aurora-agent-64.exe'
- '\aurora-agent.exe'
filter_optional_thor:
ParentImage|endswith: '\thor\thor64.exe'
filter_optional_git:
CommandLine|contains:
- 'C:\Program Files\Git\post-install.bat'
- 'C:\Program Files\Git\cmd\scalar.exe'
filter_optional_webex:
- ParentImage|endswith: '\WebEx\webexhost.exe'
- CommandLine|contains: '\appdata\local\webex\webex64\meetings\wbxreport.exe'
filter_optional_veeam:
ParentImage|endswith: '\veeam.backup.shell.exe'
filter_optional_everything:
ParentImage|endswith: '\Everything\Everything.exe'
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
Image | match | \AppData\ |
Image | match | \Temp\ |
ParentImage | ends_with | \csc.exe |
ParentImage | starts_with | C:\Windows\Microsoft.NET\Framework64\v |
CommandLine | match | \AppData\Local\Temp\ |
ParentImage | ends_with | \winget.exe |
ParentImage | eq | C:\Windows\System32\Dism.exe |
ParentImage | eq | C:\Windows\System32\cleanmgr.exe |
ParentImage | match | \AppData\Local\Temp\WinGet\ |
CommandLine | match | C:\Program Files\Git\cmd\scalar.exe |
CommandLine | match | C:\Program Files\Git\post-install.bat |
CommandLine | match | \appdata\local\webex\webex64\meetings\wbxreport.exe |
ParentImage | ends_with | \Everything\Everything.exe |
ParentImage | ends_with | \WebEx\webexhost.exe |
ParentImage | ends_with | \aurora-agent-64.exe |
ParentImage | ends_with | \aurora-agent.exe |
ParentImage | ends_with | \thor\thor64.exe |
ParentImage | ends_with | \veeam.backup.shell.exe |
ParentImage | eq | C:\Program Files\GPSoftware\Directory Opus\dopus.exe |
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
CommandLine | match |
|