Trusted Developer Utilities Proxy Execution
Adversaries may take advantage of trusted developer utilities to proxy execution of malicious payloads. Utilities used for software development tasks such as MSBuild, csc.exe, vbc.exe, WinDbg, cdb.exe, tracker.exe, dnx.exe, and rcsi.exe are typically signed with legitimate Microsoft certificates, allowing them to execute code and bypass application control solutions. These utilities can compile and execute inline C#, VB.NET, or native shellcode embedded in project files, scripts, or command-line arguments, effectively masquerading malicious execution as legitimate developer activity. Adversaries also leverage these tools to bypass Smart App Control by abusing the OS trust model for signed binaries that support arbitrary code execution.
let TrustedDevUtils = dynamic([
"msbuild.exe", "csc.exe", "vbc.exe", "jsc.exe",
"dnx.exe", "rcsi.exe", "tracker.exe",
"cdb.exe", "windbg.exe", "kd.exe", "ntsd.exe",
"msdeploy.exe", "xwizard.exe", "mshta.exe"
]);
let SuspiciousParents = dynamic([
"winword.exe", "excel.exe", "powerpnt.exe", "outlook.exe",
"msedge.exe", "chrome.exe", "firefox.exe", "iexplore.exe",
"wscript.exe", "cscript.exe", "mshta.exe", "cmd.exe",
"powershell.exe", "pwsh.exe"
]);
let SuspiciousPaths = dynamic([
"\\Temp\\", "\\AppData\\Local\\Temp\\", "\\AppData\\Roaming\\",
"\\ProgramData\\", "\\Users\\Public\\", "\\Downloads\\"
]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ (TrustedDevUtils)
| extend LaunchedBySuspiciousParent = InitiatingProcessFileName in~ (SuspiciousParents)
| extend FileFromSuspiciousPath = ProcessCommandLine has_any (SuspiciousPaths)
| extend MSBuildInlineTask = FileName =~ "msbuild.exe" and ProcessCommandLine has_any (".csproj", ".proj", ".xml", ".targets", ".tasks")
| extend CompilerFromTemp = FileName in~ ("csc.exe", "vbc.exe", "jsc.exe") and ProcessCommandLine has_any (SuspiciousPaths)
| extend DebuggerShellcode = FileName in~ ("cdb.exe", "windbg.exe", "ntsd.exe", "kd.exe") and ProcessCommandLine has_any ("-pd", "-pv", "-cf", "-c ")
| extend TrackerExec = FileName =~ "tracker.exe" and ProcessCommandLine has_any ("/d3", "/dumpstartuplogging", ".dll", ".exe")
| extend RareUtility = FileName in~ ("dnx.exe", "rcsi.exe")
| where LaunchedBySuspiciousParent
or FileFromSuspiciousPath
or CompilerFromTemp
or DebuggerShellcode
or TrackerExec
or RareUtility
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine,
FolderPath,
LaunchedBySuspiciousParent, FileFromSuspiciousPath, MSBuildInlineTask,
CompilerFromTemp, DebuggerShellcode, TrackerExec, RareUtility
| sort by Timestamp desc Data Sources
Required Tables
False Positives
- Developer workstations where engineers legitimately invoke MSBuild, csc.exe, or vbc.exe from scripts and IDE terminal sessions
- CI/CD agents (Azure DevOps, Jenkins, TeamCity) that build .NET code using MSBuild or csc.exe — often running as SYSTEM or a service account from non-standard working directories
- IT automation frameworks that compile helper DLLs on-demand from scripts (e.g., some Ansible Windows modules use inline C# via csc.exe)
- Debugging and crash analysis workflows where WinDbg or cdb.exe is legitimately invoked by developers or support engineers
- Visual Studio and Roslyn toolchain processes that compile code from user profile temp directories during incremental builds
References (12)
- https://attack.mitre.org/techniques/T1127/
- https://lolbas-project.github.io/lolbas/OtherMSBinaries/Tracker/
- https://enigma0x3.net/2016/11/17/bypassing-application-whitelisting-by-using-dnx-exe/
- https://enigma0x3.net/2016/11/21/bypassing-application-whitelisting-by-using-rcsi-exe/
- https://web.archive.org/web/20160816135945/http://www.exploit-monday.com/2016/08/windbg-cdb-shellcode-runner.html
- https://www.elastic.co/security-labs/dismantling-smart-app-control
- https://support.microsoft.com/en-us/windows/smart-app-control-frequently-asked-questions-285ea03d-fa88-4d56-882e-6698afdb7003
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1127/T1127.md
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_msbuild_susp_parent.yml
- https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-inline-tasks
- https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/cdb-command-line-options
- https://lolbas-project.github.io/lolbas/OtherMSBinaries/Msbuild/
Unlock Pro Content
Get the full detection package for T1127 including response playbook, investigation guide, and atomic red team tests.