Potential Foxmail Exploitation

Identifies the Foxmail client spawning a child process with arguments pointing to user-profile AppData paths or remote shares. This may indicate exploitation of a Foxmail vulnerability for initial access and execution via a malicious email.

Elastic rule (View on GitHub)

  1[metadata]
  2creation_date = "2024/08/29"
  3integration = ["endpoint", "windows", "system", "sentinel_one_cloud_funnel", "m365_defender", "crowdstrike"]
  4maturity = "production"
  5updated_date = "2026/05/01"
  6
  7[rule]
  8author = ["Elastic"]
  9description = """
 10Identifies the Foxmail client spawning a child process with arguments pointing to user-profile AppData paths or remote
 11shares. This may indicate exploitation of a Foxmail vulnerability for initial access and execution via a malicious email.
 12"""
 13from = "now-9m"
 14index = [
 15    "endgame-*",
 16    "logs-crowdstrike.fdr*",
 17    "logs-endpoint.events.process-*",
 18    "logs-m365_defender.event-*",
 19    "logs-sentinel_one_cloud_funnel.*",
 20    "logs-system.security*",
 21    "logs-windows.forwarded*",
 22    "logs-windows.sysmon_operational-*",
 23    "winlogbeat-*",
 24]
 25language = "eql"
 26license = "Elastic License v2"
 27name = "Potential Foxmail Exploitation"
 28references = ["https://mp.weixin.qq.com/s/F8hNyESBdKhwXkQPgtGpew"]
 29risk_score = 73
 30rule_id = "2c6a6acf-0dcb-404d-89fb-6b0327294cfa"
 31severity = "high"
 32tags = [
 33    "Domain: Endpoint",
 34    "OS: Windows",
 35    "Use Case: Threat Detection",
 36    "Tactic: Initial Access",
 37    "Tactic: Execution",
 38    "Data Source: Elastic Defend",
 39    "Data Source: Sysmon",
 40    "Data Source: Windows Security Event Logs",
 41    "Data Source: Elastic Endgame",
 42    "Data Source: SentinelOne",
 43    "Data Source: Microsoft Defender XDR",
 44    "Data Source: Crowdstrike",
 45    "Resources: Investigation Guide",
 46]
 47timestamp_override = "event.ingested"
 48type = "eql"
 49
 50query = '''
 51process where host.os.type == "windows" and event.type == "start" and
 52 process.parent.name : "Foxmail.exe" and process.args : ("?:\\Users\\*\\AppData\\*", "\\\\*")
 53'''
 54
 55note = """## Triage and analysis
 56
 57### Investigating Potential Foxmail Exploitation
 58
 59#### Possible investigation steps
 60
 61- What exact Foxmail child execution did the alert capture?
 62  - Why: Foxmail exploit attempts execute code in the user's client context; the child process and path argument distinguish payload execution from routine file handling.
 63  - Focus: `process.parent.name`, `process.parent.executable`, child `process.executable`, `process.command_line`, and `process.args`.
 64  - Implication: escalate when Foxmail.exe launches a script host, LOLBin, interpreter, archive utility, installer, or payload from a user-writable or remote-share path; lower suspicion only when the child is a recognized signed Foxmail component with the expected path, argument pattern, and no contradictory process evidence.
 65
 66- Does the Foxmail parent match the installed mail client and user launch context?
 67  - Focus: `process.parent.executable`, `process.parent.command_line`, `process.parent.code_signature.subject_name`, and `process.parent.code_signature.trusted`.
 68  - Implication: escalate when Foxmail runs from a user-writable or portable path, has an unexpected signer or trust state, or appears under an abnormal launch chain; lower suspicion when parent identity and user context match a recognized installed Foxmail workflow. Parent identity never clears the child behavior by itself.
 69
 70- What does the child command line say it was trying to execute or open?
 71  - Why: the user-writable or remote path string in `process.args` is the rule-specific payload anchor; interpret it before relying on broader pivots.
 72  - Focus: `process.executable`, `process.command_line`, `process.args`, and `process.code_signature.subject_name`. $investigate_2
 73  - Implication: escalate when the child runs executable or scriptable content from a user-writable path, mounted archive, or remote share, especially through a LOLBin or interpreter; lower suspicion when signed child, arguments, and path pattern match a locally confirmed Foxmail file-handling action.
 74
 75- Did the Foxmail child launch descendants that change impact or confirm execution?
 76  - Focus: process starts on the same `host.id` where `process.parent.entity_id` matches the child `process.entity_id`, or `process.parent.pid` matches `process.pid` in the alert window; review descendant `process.executable` and `process.command_line`. $investigate_3
 77  - Hint: prefer entity match; use PID only inside the alert window.
 78  - Implication: escalate when descendants include payload staging, scripting, installers, persistence tooling, or commands unrelated to Foxmail; lower suspicion when there are no descendants and the child command from the prior step already matches a recognized helper workflow.
 79
 80- What delivery clue is embedded in the user-writable or remote path argument?
 81  - Focus: file name, extension, UNC host/share, and directory pattern visible in `process.args`, scoped to `host.name` and `user.id`.
 82  - Implication: escalate or broaden when the path suggests executable content, a deceptive attachment-like name, or a remote share that can execute content without local provenance; lower suspicion only as corroboration when the path shape fits a recognized Foxmail file-handling workflow supported by child identity and descendant evidence.
 83
 84- Does related activity history show the same child/path pattern beyond this process?
 85  - Focus: related records for the same `user.id`; compare child `process.executable`, parent-child pair, and distinctive `process.args` fragments. $investigate_0
 86  - Hint: use same-asset related records to separate one user's repeat workflow from multiple users on one host. $investigate_1
 87  - Implication: broaden when the same child binary, remote share, or path fragment appears on unrelated users or hosts; keep response local when related records are absent and local process evidence already proves one recognized workflow.
 88
 89- Based on the Foxmail parent, child command, argument path, descendants, and related activity, what disposition is supported?
 90  - Escalate for suspicious child intent, unexplained descendants, or the same pattern on multiple users or hosts; close only when process evidence and supported recovery prove one exact recognized Foxmail workflow on this host; preserve and escalate mixed, missing, or contradictory evidence, using outside confirmation only to corroborate details telemetry cannot prove.
 91
 92### False positive analysis
 93
 94- Signed Foxmail child processes used for update or file handling and authorized internal tests are plausible benign candidates, but the label is not clearance. Confirm parent path/signer, child path/signer, `process.args`, `host.id`, and `user.id` all align with one workflow or exact test file/share, and verify no suspicious descendants; use prior alerts only to tune a durable exception, not to close the single alert by recurrence alone.
 95- If test records are unavailable, use the process timeline, path shape, and user/host scope as fallback corroboration; do not close on owner confirmation alone when process evidence remains unexplained.
 96- Before creating an exception, require stable anchors such as `process.parent.executable`, `process.executable`, `process.code_signature.subject_name`, the user-writable or remote path pattern in `process.args`, `host.id`, and `user.id`. Avoid exceptions on "Foxmail.exe" alone, temp-path strings alone, or `process.name` alone because exploit chains and benign components can share those surface features.
 97
 98### Response and remediation
 99
100- If confirmed benign, reverse any temporary containment and document the recognized Foxmail component, file-handling, or test workflow, including the expected parent-child pair, signer, path pattern, `host.id`, and `user.id`. Create a narrow exception only when those anchors are stable enough to avoid suppressing lookalike exploit chains.
101- If suspicious but unconfirmed, preserve the alert record, parent and child command lines, `process.entity_id`, `process.pid`, `process.args`, referenced user-writable or remote paths, descendant process identifiers, and case records that identify the delivery path before containment. Apply reversible containment such as temporary quarantine of the referenced artifact, temporary outbound restrictions for the affected host when remote retrieval is indicated, or heightened monitoring on the affected `host.id` and `user.id`; escalate to host isolation only if follow-on execution, staging, or wider compromise appears and the host role can tolerate it.
102- If confirmed malicious, isolate the host and terminate the Foxmail child or descendant payloads only after recording the relevant process identifiers, command lines, path strings, and delivery-path evidence; if direct endpoint response is unavailable, escalate with those preserved artifacts to the team that can act. Quarantine the referenced attachment or payload, block confirmed malicious indicators, and review other recipients, hosts, and users for the same attachment, remote path, or child-process pattern before deleting evidence or resetting accounts.
103- Eradicate only the payloads, persistence mechanisms, or configuration changes identified in the same chain after scoping affected recipients and hosts. Remediate the message source, attachment workflow, or remote share that led to the Foxmail launch.
104- Post-incident hardening: update Foxmail to a current vendor-fixed release, retain endpoint process telemetry and any mail or artifact telemetry used in this case, and document adjacent exploit-chain findings for the detection engineering team.
105"""
106
107setup = """## Setup
108
109This rule is designed for data generated by [Elastic Defend](https://www.elastic.co/security/endpoint-security), which provides native endpoint detection and response, along with event enrichments designed to work with our detection rules.
110
111Setup instructions: https://ela.st/install-elastic-defend
112
113### Additional data sources
114
115This rule also supports the following third-party data sources. For setup instructions, refer to the links below:
116
117- [CrowdStrike](https://ela.st/crowdstrike-integration)
118- [Microsoft Defender XDR](https://ela.st/m365-defender)
119- [SentinelOne Cloud Funnel](https://ela.st/sentinel-one-cloud-funnel)
120- [Sysmon Event ID 1 - Process Creation](https://ela.st/sysmon-event-1-setup)
121- [Windows Process Creation Logs](https://ela.st/audit-process-creation)
122"""
123
124[rule.investigation_fields]
125field_names = [
126    "@timestamp",
127    "host.name",
128    "host.id",
129    "user.id",
130    "process.entity_id",
131    "process.pid",
132    "process.executable",
133    "process.command_line",
134    "process.args",
135    "process.parent.entity_id",
136    "process.parent.executable",
137    "process.parent.command_line",
138    "process.code_signature.subject_name",
139    "process.code_signature.trusted",
140]
141
142[transform]
143
144[[transform.investigate]]
145label = "Alerts associated with the user"
146description = ""
147providers = [
148  [
149    { excluded = false, field = "event.kind", queryType = "phrase", value = "signal", valueType = "string" },
150    { excluded = false, field = "user.id", queryType = "phrase", value = "{{user.id}}", valueType = "string" }
151  ]
152]
153relativeFrom = "now-48h/h"
154relativeTo = "now"
155
156[[transform.investigate]]
157label = "Alerts associated with the host"
158description = ""
159providers = [
160  [
161    { excluded = false, field = "event.kind", queryType = "phrase", value = "signal", valueType = "string" },
162    { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" }
163  ]
164]
165relativeFrom = "now-48h/h"
166relativeTo = "now"
167
168[[transform.investigate]]
169label = "Events for the Foxmail child process"
170description = ""
171providers = [
172  [
173    { excluded = false, field = "event.category", queryType = "phrase", value = "process", valueType = "string" },
174    { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
175    { excluded = false, field = "process.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" }
176  ],
177  [
178    { excluded = false, field = "event.category", queryType = "phrase", value = "process", valueType = "string" },
179    { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
180    { excluded = false, field = "process.pid", queryType = "phrase", value = "{{process.pid}}", valueType = "string" }
181  ]
182]
183relativeFrom = "now-1h"
184relativeTo = "now"
185
186[[transform.investigate]]
187label = "Child processes launched by the Foxmail child"
188description = ""
189providers = [
190  [
191    { excluded = false, field = "event.category", queryType = "phrase", value = "process", valueType = "string" },
192    { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
193    { excluded = false, field = "process.parent.entity_id", queryType = "phrase", value = "{{process.entity_id}}", valueType = "string" }
194  ],
195  [
196    { excluded = false, field = "event.category", queryType = "phrase", value = "process", valueType = "string" },
197    { excluded = false, field = "host.id", queryType = "phrase", value = "{{host.id}}", valueType = "string" },
198    { excluded = false, field = "process.parent.pid", queryType = "phrase", value = "{{process.pid}}", valueType = "string" }
199  ]
200]
201relativeFrom = "now-1h"
202relativeTo = "now"
203
204[[rule.threat]]
205framework = "MITRE ATT&CK"
206
207[[rule.threat.technique]]
208id = "T1203"
209name = "Exploitation for Client Execution"
210reference = "https://attack.mitre.org/techniques/T1203/"
211
212[rule.threat.tactic]
213id = "TA0002"
214name = "Execution"
215reference = "https://attack.mitre.org/tactics/TA0002/"
216
217[[rule.threat]]
218framework = "MITRE ATT&CK"
219
220[[rule.threat.technique]]
221id = "T1566"
222name = "Phishing"
223reference = "https://attack.mitre.org/techniques/T1566/"
224[[rule.threat.technique.subtechnique]]
225id = "T1566.001"
226name = "Spearphishing Attachment"
227reference = "https://attack.mitre.org/techniques/T1566/001/"
228
229[rule.threat.tactic]
230id = "TA0001"
231name = "Initial Access"
232reference = "https://attack.mitre.org/tactics/TA0001/"

Triage and analysis

Investigating Potential Foxmail Exploitation

Possible investigation steps

  • What exact Foxmail child execution did the alert capture?

    • Why: Foxmail exploit attempts execute code in the user's client context; the child process and path argument distinguish payload execution from routine file handling.
    • Focus: process.parent.name, process.parent.executable, child process.executable, process.command_line, and process.args.
    • Implication: escalate when Foxmail.exe launches a script host, LOLBin, interpreter, archive utility, installer, or payload from a user-writable or remote-share path; lower suspicion only when the child is a recognized signed Foxmail component with the expected path, argument pattern, and no contradictory process evidence.
  • Does the Foxmail parent match the installed mail client and user launch context?

    • Focus: process.parent.executable, process.parent.command_line, process.parent.code_signature.subject_name, and process.parent.code_signature.trusted.
    • Implication: escalate when Foxmail runs from a user-writable or portable path, has an unexpected signer or trust state, or appears under an abnormal launch chain; lower suspicion when parent identity and user context match a recognized installed Foxmail workflow. Parent identity never clears the child behavior by itself.
  • What does the child command line say it was trying to execute or open?

    • Why: the user-writable or remote path string in process.args is the rule-specific payload anchor; interpret it before relying on broader pivots.
    • Focus: process.executable, process.command_line, process.args, and process.code_signature.subject_name. $investigate_2
    • Implication: escalate when the child runs executable or scriptable content from a user-writable path, mounted archive, or remote share, especially through a LOLBin or interpreter; lower suspicion when signed child, arguments, and path pattern match a locally confirmed Foxmail file-handling action.
  • Did the Foxmail child launch descendants that change impact or confirm execution?

    • Focus: process starts on the same host.id where process.parent.entity_id matches the child process.entity_id, or process.parent.pid matches process.pid in the alert window; review descendant process.executable and process.command_line. $investigate_3
    • Hint: prefer entity match; use PID only inside the alert window.
    • Implication: escalate when descendants include payload staging, scripting, installers, persistence tooling, or commands unrelated to Foxmail; lower suspicion when there are no descendants and the child command from the prior step already matches a recognized helper workflow.
  • What delivery clue is embedded in the user-writable or remote path argument?

    • Focus: file name, extension, UNC host/share, and directory pattern visible in process.args, scoped to host.name and user.id.
    • Implication: escalate or broaden when the path suggests executable content, a deceptive attachment-like name, or a remote share that can execute content without local provenance; lower suspicion only as corroboration when the path shape fits a recognized Foxmail file-handling workflow supported by child identity and descendant evidence.
  • Does related activity history show the same child/path pattern beyond this process?

    • Focus: related records for the same user.id; compare child process.executable, parent-child pair, and distinctive process.args fragments. $investigate_0
    • Hint: use same-asset related records to separate one user's repeat workflow from multiple users on one host. $investigate_1
    • Implication: broaden when the same child binary, remote share, or path fragment appears on unrelated users or hosts; keep response local when related records are absent and local process evidence already proves one recognized workflow.
  • Based on the Foxmail parent, child command, argument path, descendants, and related activity, what disposition is supported?

    • Escalate for suspicious child intent, unexplained descendants, or the same pattern on multiple users or hosts; close only when process evidence and supported recovery prove one exact recognized Foxmail workflow on this host; preserve and escalate mixed, missing, or contradictory evidence, using outside confirmation only to corroborate details telemetry cannot prove.

False positive analysis

  • Signed Foxmail child processes used for update or file handling and authorized internal tests are plausible benign candidates, but the label is not clearance. Confirm parent path/signer, child path/signer, process.args, host.id, and user.id all align with one workflow or exact test file/share, and verify no suspicious descendants; use prior alerts only to tune a durable exception, not to close the single alert by recurrence alone.
  • If test records are unavailable, use the process timeline, path shape, and user/host scope as fallback corroboration; do not close on owner confirmation alone when process evidence remains unexplained.
  • Before creating an exception, require stable anchors such as process.parent.executable, process.executable, process.code_signature.subject_name, the user-writable or remote path pattern in process.args, host.id, and user.id. Avoid exceptions on "Foxmail.exe" alone, temp-path strings alone, or process.name alone because exploit chains and benign components can share those surface features.

Response and remediation

  • If confirmed benign, reverse any temporary containment and document the recognized Foxmail component, file-handling, or test workflow, including the expected parent-child pair, signer, path pattern, host.id, and user.id. Create a narrow exception only when those anchors are stable enough to avoid suppressing lookalike exploit chains.
  • If suspicious but unconfirmed, preserve the alert record, parent and child command lines, process.entity_id, process.pid, process.args, referenced user-writable or remote paths, descendant process identifiers, and case records that identify the delivery path before containment. Apply reversible containment such as temporary quarantine of the referenced artifact, temporary outbound restrictions for the affected host when remote retrieval is indicated, or heightened monitoring on the affected host.id and user.id; escalate to host isolation only if follow-on execution, staging, or wider compromise appears and the host role can tolerate it.
  • If confirmed malicious, isolate the host and terminate the Foxmail child or descendant payloads only after recording the relevant process identifiers, command lines, path strings, and delivery-path evidence; if direct endpoint response is unavailable, escalate with those preserved artifacts to the team that can act. Quarantine the referenced attachment or payload, block confirmed malicious indicators, and review other recipients, hosts, and users for the same attachment, remote path, or child-process pattern before deleting evidence or resetting accounts.
  • Eradicate only the payloads, persistence mechanisms, or configuration changes identified in the same chain after scoping affected recipients and hosts. Remediate the message source, attachment workflow, or remote share that led to the Foxmail launch.
  • Post-incident hardening: update Foxmail to a current vendor-fixed release, retain endpoint process telemetry and any mail or artifact telemetry used in this case, and document adjacent exploit-chain findings for the detection engineering team.

References

Related rules

to-top