Windows Process Creation: Detecting csc.exe Used to Compile .NET Code
Alerts when csc.exe is launched from user/temp-like paths, indicating potential on-the-fly .NET compilation.
FreeUnreviewedSigmamediumv1
windows-process-creation-detecting-csc-exe-used-to-compile-net-code-dcaa3f04
title: "Windows Process Creation: Detecting csc.exe Used to Compile .NET Code"
id: 69ff7134-baf0-4d40-b387-00a55f329b85
status: test
description: This rule flags Windows executions of csc.exe (the .NET C# compiler) where the command line suggests the compiler is being run from user-accessible or temporary locations. Attackers may use on-the-fly compilation to prepare payloads or tooling during other stages of an intrusion. The detection relies on process creation telemetry, using the process image ending in csc.exe and matching suspicious command-line path indicators while excluding several known legitimate parent processes and commands.
references:
- https://securityboulevard.com/2019/08/agent-tesla-evading-edr-by-removing-api-hooks/
- https://www.clearskysec.com/wp-content/uploads/2018/11/MuddyWater-Operations-in-Lebanon-and-Oman.pdf
- https://app.any.run/tasks/c6993447-d1d8-414e-b856-675325e5aa09/
- https://twitter.com/gN3mes1s/status/1206874118282448897
- https://github.com/redcanaryco/atomic-red-team/blob/b27a3cb25025161d49ac861cb216db68c46a3537/atomics/T1027.004/T1027.004.md#atomic-test-1---compile-after-delivery-using-cscexe
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_csc_susp_dynamic_compilation.yml
author: Florian Roth (Nextron Systems), X__Junior (Nextron Systems), Huntrule Team
date: 2019-08-24
modified: 2026-03-23
tags:
- attack.stealth
- attack.t1027.004
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith: \csc.exe
selection_susp_location_1:
CommandLine|contains:
- :\Perflogs\
- :\Users\Public\
- \AppData\Local\Temp\
- \Temporary Internet
- \Windows\Temp\
selection_susp_location_2:
- CommandLine|contains|all:
- :\Users\
- \Favorites\
- CommandLine|contains|all:
- :\Users\
- \Favourites\
- CommandLine|contains|all:
- :\Users\
- \Contacts\
- CommandLine|contains|all:
- :\Users\
- \Pictures\
selection_susp_location_3:
CommandLine|re: (?:[Pp]rogram[Dd]ata|%(?:[Ll]ocal)?[Aa]pp[Dd]ata%|\\[Aa]pp[Dd]ata\\(?:[Ll]ocal(?:[Ll]ow)?|[Rr]oaming))\\[^\\]{1,256}$
filter_main_programfiles:
ParentImage|startswith:
- C:\Program Files (x86)\
- C:\Program Files\
filter_main_sdiagnhost:
ParentImage: C:\Windows\System32\sdiagnhost.exe
filter_main_w3p:
ParentImage: C:\Windows\System32\inetsrv\w3wp.exe
filter_optional_chocolatey:
ParentImage:
- C:\ProgramData\chocolatey\choco.exe
- C:\ProgramData\chocolatey\tools\shimgen.exe
filter_optional_defender:
ParentCommandLine|contains: \ProgramData\Microsoft\Windows Defender Advanced Threat Protection
filter_optional_ansible:
ParentCommandLine|contains:
- JwB7ACIAZgBhAGkAbABlAGQAIgA6AHQAcgB1AGUALAAiAG0AcwBnACIAOgAiAEEAbgBzAGkAYgBsAGUAIAByAGUAcQB1AGkAcgBlAHMAIABQAG8AdwBlAHIAUwBoAGUAbABsACAAdgAzAC4AMAAgAG8AcgAgAG4AZQB3AGUAcgAiAH0AJw
- cAewAiAGYAYQBpAGwAZQBkACIAOgB0AHIAdQBlACwAIgBtAHMAZwAiADoAIgBBAG4AcwBpAGIAbABlACAAcgBlAHEAdQBpAHIAZQBzACAAUABvAHcAZQByAFMAaABlAGwAbAAgAHYAMwAuADAAIABvAHIAIABuAGUAdwBlAHIAIgB9ACcA
- nAHsAIgBmAGEAaQBsAGUAZAAiADoAdAByAHUAZQAsACIAbQBzAGcAIgA6ACIAQQBuAHMAaQBiAGwAZQAgAHIAZQBxAHUAaQByAGUAcwAgAFAAbwB3AGUAcgBTAGgAZQBsAGwAIAB2ADMALgAwACAAbwByACAAbgBlAHcAZQByACIAfQAnA
condition: selection_img and 1 of selection_susp_location_* and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
- Legitimate software from program files - https://twitter.com/gN3mes1s/status/1206874118282448897
- Legitimate Microsoft software - https://twitter.com/gabriele_pippi/status/1206907900268072962
- Ansible
level: medium
license: DRL-1.1
related:
- id: dcaa3f04-70c3-427a-80b4-b870d73c94c4
type: derived
What it detects
This rule flags Windows executions of csc.exe (the .NET C# compiler) where the command line suggests the compiler is being run from user-accessible or temporary locations. Attackers may use on-the-fly compilation to prepare payloads or tooling during other stages of an intrusion. The detection relies on process creation telemetry, using the process image ending in csc.exe and matching suspicious command-line path indicators while excluding several known legitimate parent processes and commands.
Known false positives
- Legitimate software from program files - https://twitter.com/gN3mes1s/status/1206874118282448897
- Legitimate Microsoft software - https://twitter.com/gabriele_pippi/status/1206907900268072962
- Ansible
Detection content is published as a reviewed draft. Tune thresholds and exclusions against your own telemetry before enabling this rule for alerting.