T1036.007 Microsoft Sentinel · KQL

Detect Double File Extension in Microsoft Sentinel

Adversaries may abuse a double extension in the filename as a means of masquerading the true file type. A file name may include a secondary file type extension that may cause only the first extension to be displayed (ex: File.txt.exe may render in some views as just File.txt). However, the second extension is the true file type that determines how the file is opened and executed. The real file extension may be hidden by the operating system in the file browser (ex: explorer.exe), as well as in any software configured using or similar to the system's policies. Adversaries may abuse double extensions to attempt to conceal dangerous file types of payloads, commonly tricking a user into opening what they think is a benign file type but is actually executable code. Such files often pose as email attachments and allow an adversary to gain Initial Access via Spearphishing Attachment then User Execution.

MITRE ATT&CK

Tactic
Defense Evasion
Technique
T1036 Masquerading
Sub-technique
T1036.007 Double File Extension
Canonical reference
https://attack.mitre.org/techniques/T1036/007/

KQL Detection Query

Microsoft Sentinel (KQL)
kusto
let ExecutableExtensions = dynamic([".exe", ".scr", ".bat", ".cmd", ".com", ".pif", ".hta", ".lnk", ".vbs", ".vbe", ".js", ".jse", ".wsh", ".wsf", ".msi", ".ps1"]);
let BenignExtensions = dynamic([".txt", ".doc", ".docx", ".pdf", ".jpg", ".jpeg", ".png", ".gif", ".xls", ".xlsx", ".ppt", ".pptx", ".csv", ".rtf", ".bmp", ".mp3", ".mp4"]);
DeviceFileEvents
| where Timestamp > ago(24h)
| where ActionType in ("FileCreated", "FileRenamed")
| extend FileExt = tolower(strcat(".", tostring(split(FileName, ".")[-1])))
| extend SecondToLastExt = tolower(strcat(".", tostring(split(FileName, ".")[-2])))
| extend DotCount = countof(FileName, ".")
| where DotCount >= 2
| where FileExt has_any (ExecutableExtensions)
| where SecondToLastExt has_any (BenignExtensions)
| extend IsDoubleExtension = true
| project Timestamp, DeviceName, ActionType, FileName, FolderPath, FileExt, SecondToLastExt,
         InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| sort by Timestamp desc
high severity high confidence

Detects files created or renamed with double extensions where a benign-looking extension (e.g., .txt, .pdf, .jpg) precedes a dangerous executable extension (e.g., .exe, .scr, .lnk, .hta). Uses DeviceFileEvents to catch both new file creation and file rename operations. The query counts dots in the filename and validates that the final extension is executable while the second-to-last extension appears benign, which is the classic double extension masquerade pattern used by DarkGate, Bazar, Kimsuky, and Mustang Panda.

Data Sources

File: File CreationFile: File ModificationMicrosoft Defender for Endpoint

Required Tables

DeviceFileEvents

False Positives & Tuning

  • Backup software that creates archive files with compound naming conventions (e.g., backup.tar.gz being misidentified if archive extensions are added to the list)
  • Software installers that download temporary files with double extensions to staging directories before execution
  • Developers or build systems generating files with multiple dots in the filename that coincidentally match the pattern (e.g., module.config.exe for legitimate .NET configuration tools)
  • Email security gateways that extract and re-save attachments with original filenames including double extensions for scanning purposes
Download portable Sigma rule (.yml)

Other platforms for T1036.007


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Create Double Extension EXE File

    Expected signal: Sysmon Event ID 11: FileCreate with TargetFilename containing 'report.pdf.exe' in the user's Temp directory. Sysmon Event ID 1: Process Create for cmd.exe with CommandLine containing 'copy' and 'report.pdf.exe'. DeviceFileEvents with ActionType=FileCreated and FileName=report.pdf.exe.

  2. Test 2Create Double Extension LNK File (Kimsuky/DarkGate Pattern)

    Expected signal: Sysmon Event ID 11: FileCreate with TargetFilename ending in 'invoice.pdf.lnk'. Sysmon Event ID 1: Process Create for powershell.exe with CommandLine referencing WScript.Shell and CreateShortcut. DeviceFileEvents with FileName=invoice.pdf.lnk.

  3. Test 3Create and Execute Double Extension SCR File

    Expected signal: Sysmon Event ID 11: FileCreate with TargetFilename 'photo.jpg.scr'. Sysmon Event ID 1: Process Create with Image path ending in 'photo.jpg.scr'. DeviceFileEvents for file creation AND DeviceProcessEvents for process execution, both with the double extension filename.

Unlock Pro Content

Get the full detection package for T1036.007 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections