Sirius Backdoor: FedEx Tax-Invoice Fileless Campaign

Blank PDF /Launch to in-memory .NET loaders, ETW patching and Early Bird APC hollowing of msbuild.exe and svchost.exe. Source: Trellix, 2026-10-26.
Threat
Sirius Backdoor (FedEx tax-invoice campaign)
Severity
HIGH
Type
Fileless loader chain, VC++ backdoor
Access
Phishing: ZIP with PDF /Launch
Version
v0.1 (Draft) · 2026-10-30
Author
HuntPack
Confidence
Medium-High (one primary vendor)
01

Executive Summary

Trellix (published 2026-10-26) describes a Korean-language spear-phishing campaign that poses as a FedEx tax invoice and delivers a previously undocumented variant of the Sirius Backdoor, a Microsoft Visual C++ remote-access backdoor. A ZIP carries a visually blank PDF whose /OpenAction and /Launch objects run hidden, encoded PowerShell. Each stage decrypts and reflectively loads the next in memory, the last stage patches ETW to blind endpoint sensors, then hollows msbuild.exe or svchost.exe with Early Bird APC injection to run the backdoor.

The operator gets hidden-desktop (HVNC) control, an embedded SOCKS5 proxy, webcam and microphone capture, a keylogger, a regex-driven cryptocurrency clipboard hijacker and Chromium credential harvesting. Persistence is unusually deep: Run key, scheduled task, Startup items, a logon script hijack, default-profile poisoning and a provisioning package that survives a full Windows reset.

Defensive angle: almost nothing lands on disk, and the stock binaries (svchost.exe, msbuild.exe, powershell.exe) are the cover. The highest-value detections are parent-context hunts: a PDF reader starting PowerShell (Q1), the exact stager flag set (Q2) and a hollowing host with the wrong parent (Q3). Atomic indicators are few and single-origin, so every one ships as detect.

Defender priority: enable the Adobe Reader child-process ASR rule in audit mode this week and run Q1 and Q3 across 30 days. If a host hits, reimage rather than reset: the .ppkg persistence is built to survive Push-Button Reset.

02

Source Review & Web Hunter Notes

TierSourceKey findingCarry forward
1 vendor primaryTrellix, Unveiling Sirius Backdoor (2026-10-26)Full chain, config structure, persistence flags, capabilities, Appendix A hashes and network indicators, defensive recommendationsYES
3 secondaryCyber Security News (2026-10-27)Independent write-up of the Trellix report. Same hash table and network indicators, no new indicatorsPARTIAL

Source independence: the second source republishes Trellix's findings and indicators; it confirms that the values were transcribed consistently but is not independent analysis. Every atomic IOC therefore has one origin, so none ships at prevent or critical severity. Snapshots of both are saved beside this file in Sirius-Backdoor-FedEx-Hunt-sources/.

Decisions: no indicators from related campaigns were added. The sample config values (svchost.exe, %APPDATA%\Microsoft, %TEMP%\msupdate) are treated as a sample variant, so they become path and parent hunts, not blocks. The Trellix threat name is used as published; no other name is coined here.

03

Hunt Brief & Attack Chain

Hunt hypotheses

#HypothesisMITREConfidenceQueries
H1A PDF reader process starts a shell or script host after a user opens the blank invoice.T1204.002, T1059.001HIGHQ1, Q2, Q13
H2A trusted host process (msbuild.exe, svchost.exe) is created by a shell or by something other than services.exe, then makes raw-TCP connections.T1055.004, T1055.012MEDIUMQ3, Q4, Q11
H3The payload or a sideloaded user32.dll is written to disk outside the system directories.T1036.005, T1574.001HIGHQ4, Q5, Q12
H4Behavior-flag persistence leaves registry, scheduled-task and Startup artifacts.T1547.001, T1037.001, T1053.005, T1037.003MEDIUMQ6, Q7, Q8
H5Post-compromise defense impairment: Defender exclusions and shadow copy deletion.T1562.001, T1490MEDIUMQ9
H6Endpoints contact the C2 address or the zeus.dat host.T1071.001, T1095HIGHQ10, Q11

Attack chain

StepBehaviorTelemetry (plain terms, then platforms)Hunt angle
1 LureKorean FedEx tax-invoice email, ZIP with blank PDFMail gateway and archive write (CrowdStrike: ZipFileWritten. SentinelOne: File Creation. Defender: DeviceFileEvents, EmailEvents)Q13, native hunt N1
2 TriggerPDF /OpenAction + /Launch runs hidden encoded PowerShellProcess creation with command line and parent (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents)Q1, Q2
3 Stage 0 to 1AES-256-CBC + GZip decrypt, reflective .NET load, RC4 and 3-to-1 de-interleavePowerShell script block content (Windows event 4104). No endpoint event of its ownNative hunt N2
4 Stage 2Patch EtwEventWrite and NtManageHotPatch, download zeus.dat over HTTP, hollow msbuild or svchost via NtQueueApcThreadProcess creation with parent; outbound connection; DNS lookup (CrowdStrike: NetworkConnectIP4, DnsRequest. SentinelOne: IP Connect, DNS Resolved. Defender: DeviceNetworkEvents)Q3, Q10, Q11
5 InstallPayload written as svchost.exe or user32.dllExecutable file write (CrowdStrike: PeFileWritten, NewExecutableWritten. SentinelOne: File Creation. Defender: DeviceFileEvents)Q4, Q5
6 PersistRun key, scheduled task, Startup .lnk/.vbs, UserInit script, BootExecute, default hive, PPKG, SetupComplete.cmdRegistry value set; process creation; non-PE file creation (CrowdStrike: AsepValueUpdate, RegGenericValueUpdate. SentinelOne: Registry Value Modified. Defender: DeviceRegistryEvents)Q6, Q7, Q8, native N4
7 OperateHVNC, SOCKS5, capture, clipboard hijack, Chromium theft, Defender exclusions, VSS deleteProcess creation; outbound connection (as above)Q9, Q10, Q11
04

Consolidated IOC Table

All values re-derived from the saved Trellix snapshot and cross-read against the second snapshot. All ship as detect: one origin, and none is a legitimate binary. Hashes are mostly for gateway and retrospective search because the loader, injector and backdoor run in memory only.

TypeValueConfidenceActionContextExpiry
sha25687aafaa8bb6444bae4d2ef82e395c46e85daf468a66754169b1e3d762ba04f51highdetectEmail (.eml)2027-04-30
sha2567ec38100faffb910ece1f379cb93ec09cc2beeb35ee8bdb401d7645469dca105highdetectFedex_tax_receipt.zip2027-04-30
sha2566da827caff789c1c33dd9ad380c610541f6dd90678db527c4f5bdf5012e305d4highdetectFedex_tax_receipt.pdf2027-04-30
sha256899fc5fae0593dd47aef9db4b51ffb5aeae27be9d1b6beb41108411baca7ef05highdetect.NET Stage 1 loader2027-04-30
sha256eedd60c6abfc4c18578c960ae55b177ea9ff14e8d41634c46f361cc8680df01chighdetect.NET Stage 2 injector2027-04-30
sha256d6802fce5b918ed247ba85d6aa0545a8120cfbc3734b1c37794c4e381862d4eehighdetectSirius Backdoor (zeus.dat payload)2027-04-30
md53cc5147d1dbe295c63da958afadac6c6highdetectEmail (.eml)2027-04-30
md56ffcf5f7aa4b3b75b06bd7a7f49366a8highdetectFedex_tax_receipt.zip2027-04-30
md539993389e1e95ebbd55aa54058cf7b52highdetectFedex_tax_receipt.pdf2027-04-30
md564a9940fc78de8a895d968a4092ed10bhighdetect.NET Stage 1 loader2027-04-30
md562a458eb260e7aa26092dbdf9c2d8ed4highdetect.NET Stage 2 injector2027-04-30
md5e8b080c276519547e95930ab15028adbhighdetectSirius Backdoor (zeus.dat payload)2027-04-30
ipv4185.114.206.45 (port 4449)highdetectBackdoor C2 from the analysed config2027-01-30
domaindubaitechnicalservice.aehighdetectHosts /prood/zeus.dat; Trellix NX has a named signature for it2027-01-30
behaviorzeus.dat over HTTP from a PowerShell parentmediumhuntFilename of the downloaded final payloadn/a
05

Affected Surface & Telemetry Matrix

SurfaceTelemetry (plain terms, then platforms)PriorityGap
Windows endpoints with a PDF readerProcess creation with parent and command line (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents)P1None
Mail gatewayMessage and attachment inspection, subject and attachment nameP1Outside endpoint telemetry
Hollowed host networkOutbound connection with process name (CrowdStrike: NetworkConnectIP4. SentinelOne: IP Connect. Defender: DeviceNetworkEvents)P2None
Persistence registryRegistry value set (CrowdStrike: AsepValueUpdate, RegGenericValueUpdate. SentinelOne: Registry Value Modified. Defender: DeviceRegistryEvents)P2Hive mounted under HKEY_USERS\SURV_DEFAULT may not be reported uniformly
Startup, PPKG, SetupComplete.cmd filesNon-executable file creationP2Outside endpoint telemetry for the CrowdStrike events used here; use Sysmon event 11 or file-system audit
Injection internalsCross-process memory write and APC queueP3Not a hunt event in the verified Falcon event set; rely on sensor prevention and Q3 context
PowerShell contentScript block logging (Windows event 4104)P2Outside endpoint telemetry; needs the logging policy in Playbook P2
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery or control
Initial AccessT1566.001 Spearphishing AttachmentKorean FedEx invoice email with Fedex_tax_receipt.zipQ13, N1, P6
ExecutionT1204.002 Malicious FileUser opens Fedex_tax_receipt.pdfQ1, Q13
ExecutionT1059.001 PowerShellPDF /Launch runs encoded PowerShellQ1, Q2, P2
ExecutionT1059.003, T1059.005schtasks, logon.cmd, SetupComplete.cmd, updater.vbsQ7, Q8
PersistenceT1547.001 Run Keys / Startup FolderHKCU Run, Startup .lnk and .vbsQ6, Q8, N4
PersistenceT1053.005 Scheduled TaskGenerated XML task, LogonTrigger, HighestAvailableQ7
PersistenceT1037.001 Logon Script (Windows)UserInitMgrLogonScriptName to logon.cmd (Trellix labels this T1547.010)Q6, Q8
PersistenceT1037.003 SetupCompleteC:\Windows\Setup\Scripts\SetupComplete.cmdQ8, N4
PersistenceT1547 Provisioning packageSysConfig_<CRC32>.ppkg in C:\Recovery\CustomizationsQ8, N4
Defense EvasionT1055.004 APC injection; T1055.012 hollowingEarly Bird APC into msbuild.exe or svchost.exeQ3, Q4, Q11
Defense EvasionT1562.002 / T1562.001 Impair defensesPatch EtwEventWrite; Defender exclusionsQ9, N2
Defense EvasionT1140 Deobfuscate; T1620 Reflective loadingAES, GZip, RC4, de-interleave, Assembly.LoadN2
Defense EvasionT1548.002 UAC bypass; T1574.001 DLL sideloadRUNASADMIN flag; user32.dll copyQ5, Q6
Credential AccessT1555.003, T1056.001Chromium harvest, keylogging, clipboardContainment C2
Command and ControlT1071.001, T1095, T1219zeus.dat over HTTP; raw TCP C2; HVNC and SOCKS5Q10, Q11
ImpactT1490 Inhibit RecoveryVolume Shadow Copy deletionQ9
07

Native Audit-Log Hunts

#SourceCheckWhy
N1Mail gatewaySearch 30 days for subject [FedEx] A tax invoice has been issued. and for attachment Fedex_tax_receipt.zip; list recipients and any that opened itLure fingerprint from Trellix; Korean-language recipients are the stated target
N2Windows PowerShell Operational logEvent 4104 with Reflection.Assembly, AesManaged and GZipStream in one script blockReconstructed stager content, per Trellix recommendation. Needs script block logging on
N3Defender Operational logEvents 1121 and 1122 for the Adobe Reader child-process rule GUIDShows blocked or audited PDF-launched children
N4Sysmon or file-system auditFile creation of *.ppkg under C:\Recovery\Customizations, SetupComplete.cmd, updater.vbs, WindowsUpdate.lnk in StartupNon-PE artifacts the Falcon events used here do not cover
N5Windows Security logEvent 4698 (task created) and 4688 with command line for schtasks /create /xmlTask registration cross-check for Q7
N6Proxy or firewallConnections to 185.114.206.45 on 4449/tcp and requests to dubaitechnicalservice.aeNetwork twin of Q10; covers unmanaged hosts
N7Provisioning logMicrosoft-Windows-Provisioning-Diagnostics-Provider/Admin entries for unexpected packagesSurfaces a dropped provisioning package being applied
08

Hunt Queries: CrowdStrike CQL, SentinelOne PowerQuery and Defender XDR KQL

Show all queries in
Pick your tenant's cloud first. Every "Open in Falcon" button below uses this selection.
Q1 · PDF reader launches PowerShell or a script host
CONF HIGHFP LOWCOST LOW

Looks for: The core Sirius trigger: the blank Fedex_tax_receipt.pdf runs powershell.exe through a /Launch action, so the PDF reader is the parent. A PDF reader should almost never start a shell. Trellix recommends alerting on exactly this lineage.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A shell started by a process the agent did not observe starting is not captured.
  • PowerQuery assumes: The process name field holds the base file name, with the .exe extension on Windows; the optional extension in the pattern covers both forms.
  • KQL – Defender XDR: A shell started by a process the sensor did not observe starting is not captured.
  • KQL – Defender XDR assumes: FileName holds the base file name, with the .exe extension on Windows.
// HUNT: PDF reader launches PowerShell or a script host
// MITRE: T1204.002, T1059.001, T1566.001
// CONF: high  FP: low  COST: low | REQUIRES: process creation with parent (ProcessRollup2)
// FALSE POSITIVES: rare PDF workflows that call a helper script
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=/^(AcroRd32|Acrobat|AcroCEF|Foxit.*|SumatraPDF|PDFXCview)(\.exe)?$/i
| FileName=/^(powershell|pwsh|cmd|wscript|cscript|mshta)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q2 · Hidden encoded PowerShell with the stager flag set
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: The exact argument set the PDF passes: hidden window, no profile, non-interactive, execution policy bypass and an encoded command. The conjunction is what makes it specific; any one flag alone is common. FP: software-deployment and endpoint-management agents sometimes use the same flag set. Exclude by parent process, not by blanket flag.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A PowerShell launch whose command line is truncated or hidden from the agent is not captured.
  • PowerQuery assumes: The command line field holds the full untruncated command line; a very long encoded command may be truncated on some tenants.
  • KQL – Defender XDR: A PowerShell launch the sensor did not observe starting is not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine holds the full untruncated command line.
// HUNT: Hidden encoded PowerShell with the stager flag set
// MITRE: T1059.001, T1027, T1140
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with command line (ProcessRollup2)
// FALSE POSITIVES: management and deployment tools that launch hidden encoded PowerShell
// TUNING: exclude your software-deployment agent parent processes and known signed management scripts by ParentBaseFileName; keep PDF readers, Office and browsers in scope
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^(powershell|pwsh)(\.exe)?$/i
| CommandLine=/-w(indowstyle)?\s+h(idden)?\b/i
| CommandLine=/-nop(rofile)?\b/i
| CommandLine=/-noni(nteractive)?\b/i
| CommandLine=/-ep\s+bypass|-executionpolicy\s+bypass/i
| CommandLine=/\s-(e|enc|encodedcommand)\s+[A-Za-z0-9+=]{40,}/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q3 · Process-hollowing host with an anomalous parent
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Stage 2 creates a trusted host (msbuild.exe or svchost.exe) suspended and hollows it. Because the injector runs inside PowerShell, the host's parent is a shell, not Visual Studio or services.exe. The hunt keys on that parent context and never on the stock binary. FP: developer machines running msbuild from a shell, and uncommon svchost launchers. Tune by parent, never by blocking the binary.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A hollowed host started by a creator the agent did not observe is not captured.
  • PowerQuery assumes: The creator name field is populated for the events of interest, which the presence test src.process.name = * requires.
  • KQL – Defender XDR: A hollowed host started by a creator the sensor did not observe is not captured.
  • KQL – Defender XDR assumes: InitiatingProcessFileName is populated for the events of interest.
// HUNT: Process-hollowing host with an anomalous parent
// MITRE: T1055.004, T1055.012, T1036.005
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with parent (ProcessRollup2)
// FALSE POSITIVES: build tooling that legitimately shells msbuild.exe; rare svchost launchers
// TUNING: add parent names that your build servers and developer tooling use for msbuild.exe; for svchost.exe exclude any parent you confirm on a clean host
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=*
| (FileName=/^msbuild(\.exe)?$/i and ParentBaseFileName=/^(powershell|pwsh|cmd|wscript|cscript|mshta|AcroRd32|Acrobat)(\.exe)?$/i) or (FileName=/^svchost(\.exe)?$/i and ParentBaseFileName!=/^services(\.exe)?$/i)
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, CommandLine, aid])
| sort(@timestamp, order=desc)
Q4 · svchost.exe running outside the Windows system directories
CONF HIGHFP LOWCOST LOW

Looks for: The analysed config installs the payload as svchost.exe under %APPDATA%\Microsoft with a fallback of %TEMP%\msupdate. A real svchost only runs from System32, SysWOW64 or WinSxS. This is a path hunt: the name is abused, the binary is not blocked.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A copy that never starts as a new process is not captured.
  • PowerQuery assumes: The image path field holds the full path of the created process.
  • KQL – Defender XDR: A copy that never starts as a new process is not captured.
  • KQL – Defender XDR assumes: FolderPath holds the full image path of the created process, including the file name.
// HUNT: svchost.exe running outside the Windows system directories
// MITRE: T1036.005, T1055
// CONF: high  FP: low  COST: low | REQUIRES: process creation with image path (ProcessRollup2)
// FALSE POSITIVES: none expected; a renamed copy is not legitimate
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^svchost(\.exe)?$/i
| ImageFileName!=/\\Windows\\(System32|SysWOW64|WinSxS)\\/i
| table([@timestamp, ComputerName, UserName, ImageFileName, ParentBaseFileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q5 · Payload drop: svchost.exe outside system paths or user32.dll into System32
CONF HIGHFP LOWCOST LOW

Looks for: Behavior flag 0x0020 copies the backdoor to C:\Windows\System32\user32.dll for sideloading, and the default install writes svchost.exe into a user directory. Either write is anomalous. Pair a hit with the file hash against Q12. FP: Windows servicing replacing user32.dll. The exclusion line removes the servicing writers.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: An existing file overwritten in place raises a modification event rather than a creation event and is not captured.
  • PowerQuery assumes: File Creation covers the executable writes that the CQL reads from its two executable-write events; a file modified in place is not covered.
  • PowerQuery assumes: The file path field holds the full path of the written file.
  • KQL – Defender XDR: An existing file overwritten in place records a modification action rather than a creation and is not captured.
  • KQL – Defender XDR assumes: FileCreated is the action type recorded for an executable written to disk; a file modified in place is not covered.
// HUNT: Payload drop: svchost.exe outside system paths or user32.dll into System32
// MITRE: T1036.005, T1574.001, T1547
// CONF: high  FP: low  COST: low | REQUIRES: executable file write (CrowdStrike: PeFileWritten, NewExecutableWritten)
// FALSE POSITIVES: servicing writes user32.dll via TrustedInstaller and TiWorker
// TUNING: exclude the Windows servicing writers shown below; do not exclude svchost.exe or msbuild.exe as writers because the hollowed host is the likely writer
// LOOKBACK: 30d
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| (TargetFileName=/\\Windows\\System32\\user32\.dll$/i) or (TargetFileName=/\\svchost\.exe$/i and TargetFileName!=/\\Windows\\(System32|SysWOW64|WinSxS)\\/i)
| ContextBaseFileName!=/^(TiWorker|TrustedInstaller|SetupHost|MoUsoCoreWorker)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q6 · Sirius registry persistence: UserInit, BootExecute, default-hive, RUNASADMIN
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Four of the documented persistence switches in one pass: the UserInitMgrLogonScriptName logon script, an appended BootExecute value, the HKEY_USERS\SURV_DEFAULT mount used to poison the Default profile, and ~ RUNASADMIN under AppCompatFlags Layers. FP: BootExecute edits by servicing, and RUNASADMIN set by compatibility tooling. UserInitMgrLogonScriptName and SURV_DEFAULT have no common benign writers.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A key created without a value write is not captured.
  • PowerQuery assumes: Registry Value Modified covers the value-set events that the CQL reads from three registry events.
  • PowerQuery assumes: registry.keyPath holds the full key path and registry.value the written data.
  • KQL – Defender XDR: A key created without a value write is not captured.
  • KQL – Defender XDR assumes: RegistryValueSet is the action type for the value writes of interest; a key created without a value write is not covered.
// HUNT: Sirius registry persistence: UserInit, BootExecute, default-hive, RUNASADMIN
// MITRE: T1547.010, T1547.001, T1548.002, T1112
// CONF: medium  FP: medium  COST: low | REQUIRES: registry value set (CrowdStrike: AsepValueUpdate, RegGenericValueUpdate, RegSystemConfigValueUpdate)
// FALSE POSITIVES: BootExecute servicing, application compatibility settings set by admins
// TUNING: exclude the stock BootExecute value (autocheck autochk *) and RUNASADMIN writes made by your compatibility-management tooling; keep every UserInitMgrLogonScriptName and SURV_DEFAULT hit
// LOOKBACK: 30d
#event_simpleName=/^(AsepValueUpdate|RegGenericValueUpdate|RegSystemConfigValueUpdate)$/
| (RegValueName=/^(UserInitMgrLogonScriptName|BootExecute)$/i) or (RegObjectName=/SURV_DEFAULT/i) or (RegObjectName=/AppCompatFlags\\Layers/i and RegStringValue=/RUNASADMIN/i)
| RegStringValue!=/^autocheck autochk \*$/i
| table([@timestamp, ComputerName, ImageFileName, RegObjectName, RegValueName, RegStringValue, aid])
| sort(@timestamp, order=desc)
Q7 · Scheduled task created from XML by a shell or user-writable path
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Behavior flag 0x0010 writes a generated XML task (LogonTrigger, RunLevel HighestAvailable) and registers it with schtasks.exe. The registering parent is the implant host or a shell, and the XML sits in a user-writable path. FP: software installers and endpoint agents that register tasks from XML in ProgramData.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A task registered through the Task Scheduler API without schtasks is not captured.
  • PowerQuery assumes: The command line field holds the full command line, including the XML path.
  • KQL – Defender XDR: A task registered through the Task Scheduler API without schtasks is not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine holds the full command line, including the XML path.
// HUNT: Scheduled task created from XML by a shell or user-writable path
// MITRE: T1053.005, T1059.003
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with command line (ProcessRollup2)
// FALSE POSITIVES: installers and management agents that register tasks from XML
// TUNING: exclude XML paths under your software-deployment cache and parent processes of your management agent
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^schtasks(\.exe)?$/i
| CommandLine=/\/create/i
| CommandLine=/\/xml/i
| (ParentBaseFileName=/^(svchost|msbuild|powershell|pwsh|wscript|cscript)(\.exe)?$/i) or (CommandLine=/\\(AppData|Temp|ProgramData)\\/i)
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q8 · Execution of Sirius persistence artifacts by name
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Names Trellix documents: updater.vbs in Startup (non-admin fallback), WindowsUpdate.lnk, logon.cmd, SetupComplete.cmd and a SysConfig_<CRC32>.ppkg in C:\Recovery\Customizations. Command-line visibility only; file creation of non-PE artifacts is a telemetry gap (section 15). FP: SetupComplete.cmd is a normal Windows setup hook and provisioning packages are normal in managed fleets.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: An artifact run without its name on any command line is not captured.
  • PowerQuery assumes: The command line field holds the full command line.
  • KQL – Defender XDR: An artifact run without its name on any command line is not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine holds the full command line.
// HUNT: Execution of Sirius persistence artifacts by name
// MITRE: T1547.001, T1037.003, T1059.005, T1547
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with command line (ProcessRollup2)
// FALSE POSITIVES: legitimate SetupComplete.cmd in imaging, legitimate provisioning packages
// TUNING: exclude SetupComplete.cmd and provisioning-package commands on build and imaging hosts or in your Autopilot and provisioning service accounts; updater.vbs and WindowsUpdate.lnk have few benign users
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(updater\.vbs|WindowsUpdate\.lnk|logon\.cmd|SetupComplete\.cmd|SysConfig_[0-9A-Fa-f]{8}\.ppkg|Recovery\\Customizations)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q9 · Defender exclusions and shadow copy deletion
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: Post-compromise defense impairment documented for the backdoor: adding Defender exclusions (commands 0xC5, 0xC7) and deleting Volume Shadow Copies (0xC6). Note the implant may use APIs rather than these command lines, so absence here does not clear a host. FP: IT automation and backup tools that manage Defender or shadow copies.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: Exclusions set through Group Policy, the registry or an API without a command line are not captured.
  • PowerQuery assumes: The command line field holds the full command line.
  • KQL – Defender XDR: Exclusions set through Group Policy, the registry or an API without a command line are not captured.
  • KQL – Defender XDR assumes: ProcessCommandLine holds the full command line.
// HUNT: Defender exclusions and shadow copy deletion
// MITRE: T1562.001, T1490
// CONF: medium  FP: medium  COST: low | REQUIRES: process creation with command line (ProcessRollup2)
// FALSE POSITIVES: backup software, IT automation and security tooling
// TUNING: exclude the parent processes of your backup and IT-automation agents; keep any hit whose parent is powershell, svchost or msbuild started from a user session
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(Add-MpPreference.*-Exclusion(Path|Process|Extension)|Set-MpPreference.*-DisableRealtimeMonitoring|vssadmin(\.exe)?\s+delete\s+shadows|shadowcopy\s+delete)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q10 · Sirius C2 address and payload domain
CONF HIGHFP LOWCOST LOW

Looks for: Both network indicators in one sweep: the backdoor C2 185.114.206.45:4449 and the zeus.dat host dubaitechnicalservice.ae. Run it over the longest retention you have, then re-run Q11 for the behavioral view.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: approximate-analytic, equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: If DNS events are not collected on a tenant, only the address half of the hunt returns rows.
  • PowerQuery assumes: event.dns.request is the populated lookup field on this tenant; some schema versions use dns.request instead.
  • PowerQuery assumes: The substring test also matches a longer name that merely contains the domain.
  • KQL – Defender XDR: A name lookup that never led to a connection is not captured; use the CQL tab for the lookup events.
  • KQL – Defender XDR assumes: RemoteUrl is populated for connections to the payload domain; it can be empty for connections made by address.
// HUNT: Sirius C2 address and payload domain
// MITRE: T1071.001, T1095
// CONF: high  FP: low  COST: low | REQUIRES: outbound connection and DNS lookup (CrowdStrike: NetworkConnectIP4, DnsRequest)
// FALSE POSITIVES: none expected for this IP and domain
// LOOKBACK: 30d
#event_simpleName=/^(NetworkConnectIP4|DnsRequest)$/
| (RemoteAddressIP4="185.114.206.45") or (DomainName=/(^|\.)dubaitechnicalservice\.ae$/i)
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName, RemoteAddressIP4, RemotePort, aid])
| sort(@timestamp, order=desc)
Q11 · msbuild.exe making external connections
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: A hollowed msbuild.exe carries the backdoor's raw-TCP C2. Outside build servers, msbuild rarely talks to the internet. This is the behavioral twin of Q10 and catches a rotated C2. FP: restore and build traffic on developer and build hosts.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: The CQL tab's 500 row grouping cap has no equivalent; the output is capped at 200 rows.
  • PowerQuery assumes: net_rfc1918 covers the 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 ranges that the CQL excludes.
  • PowerQuery assumes: IPv6 destinations are not filtered.
  • KQL – Defender XDR: The CQL tab's 500 row grouping cap has no equivalent; the output is capped at 200 rows.
  • KQL – Defender XDR assumes: ipv4_is_private covers the 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 ranges that the CQL excludes.
  • KQL – Defender XDR assumes: IPv6 destinations are not filtered.
// HUNT: msbuild.exe making external connections
// MITRE: T1127.001, T1055.012, T1071.001
// CONF: medium  FP: medium  COST: medium | REQUIRES: outbound connection with process name (CrowdStrike: NetworkConnectIP4)
// FALSE POSITIVES: package restore and build agents reaching public registries
// TUNING: add your known package-feed and build-service destinations by RemoteAddressIP4 range, or scope the query to hosts outside the build-server asset group
// LOOKBACK: 30d
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^msbuild(\.exe)?$/i
| !cidr(RemoteAddressIP4, subnet=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","127.0.0.0/8","169.254.0.0/16"])
| groupBy([aid, ComputerName, RemoteAddressIP4, RemotePort], function=[count(as=Conns), max(@timestamp, as=LastSeen)], limit=500)
| sort(Conns, order=desc, limit=200)
Q12 · Known Sirius file hashes
CONF HIGHFP LOWCOST LOW

Looks for: Six SHA-256 values from the Trellix appendix. Expect few endpoint hits: the loader, injector and backdoor run only in memory, so the ZIP and PDF are the likeliest on-disk matches. The email hash is for gateway search. Ships as detect only.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: approximate-analytic, equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A sample that is renamed or repacked has a different hash and is not captured.
  • PowerQuery assumes: tgt.process.image.sha256 and tgt.file.sha256 are populated on this tenant; an unpopulated hash returns no rows rather than an error.
  • PowerQuery assumes: File Creation covers archive writes as well as executable writes.
  • KQL – Defender XDR: A sample that is started but whose write was not observed is not captured here; the CQL tab also matches process starts.
  • KQL – Defender XDR: The CQL has no SHA1 or MD5 values, so none are searched.
  • KQL – Defender XDR assumes: SHA256 is populated in DeviceFileEvents on this tenant; Microsoft notes it is often unpopulated on other tables, and an empty column returns no rows rather than an error.
// HUNT: Known Sirius file hashes
// MITRE: T1204.002, T1055
// CONF: high  FP: low  COST: low | REQUIRES: file hash on process or file write (CrowdStrike: ProcessRollup2, PeFileWritten, NewExecutableWritten, ZipFileWritten)
// FALSE POSITIVES: none expected
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|PeFileWritten|NewExecutableWritten|ZipFileWritten)$/
| in(field=SHA256HashData, values=["87aafaa8bb6444bae4d2ef82e395c46e85daf468a66754169b1e3d762ba04f51", "7ec38100faffb910ece1f379cb93ec09cc2beeb35ee8bdb401d7645469dca105", "6da827caff789c1c33dd9ad380c610541f6dd90678db527c4f5bdf5012e305d4", "899fc5fae0593dd47aef9db4b51ffb5aeae27be9d1b6beb41108411baca7ef05", "eedd60c6abfc4c18578c960ae55b177ea9ff14e8d41634c46f361cc8680df01c", "d6802fce5b918ed247ba85d6aa0545a8120cfbc3734b1c37794c4e381862d4ee"])
| table([@timestamp, ComputerName, UserName, #event_simpleName, FileName, TargetFileName, SHA256HashData, aid])
| sort(@timestamp, order=desc)
Q13 · Lure filename: Fedex_tax_receipt
CONF MEDIUMFP LOWCOST LOW

Looks for: Finds the archive landing on disk and the PDF being opened. Filenames are attacker-chosen and trivially changed, so treat a miss as meaningless.

Validation: schema-aligned, static-reviewedAutomated: static-passedEquivalence: approximate-analytic, equivalent-with-schema-assumptionsProfiles: microsoft-defender-xdr, sentinelone-endpoint-ocsf
Known limitations and deployment notes
  • PowerQuery: A lure renamed before it is opened is not captured.
  • PowerQuery assumes: The file path test is a substring match, so a name followed by a further extension also matches.
  • KQL – Defender XDR: A lure named only on a command line, without a file event, is not captured here; the CQL tab also searches command lines.
  • KQL – Defender XDR assumes: The file name is compared as an exact name, so a lure with a further extension is not matched.
// HUNT: Lure filename: Fedex_tax_receipt
// MITRE: T1566.001, T1204.002
// CONF: medium  FP: low  COST: low | REQUIRES: process command line and archive write (CrowdStrike: ProcessRollup2, ZipFileWritten)
// FALSE POSITIVES: a genuine file that reuses the name
// LOOKBACK: 30d
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|ZipFileWritten)$/
| (CommandLine=/Fedex_tax_receipt\.(pdf|zip)/i) or (TargetFileName=/Fedex_tax_receipt\.(pdf|zip)$/i)
| table([@timestamp, ComputerName, UserName, #event_simpleName, ParentBaseFileName, FileName, CommandLine, TargetFileName, aid])
| sort(@timestamp, order=desc)
09

Detection Rules by Platform

Detect-only (Monitor). No rule blocks a stock binary. Blocking for the PDF-child behavior is delivered by the Defender ASR rule in Playbook P1, not by an IOA.

CrowdStrike: Custom IOA

IOA nameFromRule typePatternExclusionsAction
Sirius, PDF Reader Spawns ShellPromote Q1Process Creation (Windows)Parent image AcroRd32.exe or Acrobat.exe; image powershell.exe, cmd.exe, wscript.exe, cscript.exe or mshta.exeNone knownDetect: High
Sirius, Stager Flag SetPromote Q2Process Creation (Windows)Image powershell.exe; command line matches hidden window, -nop, -noni, bypass and -EncodedCommandManagement-agent parentsDetect: Medium
Sirius, Hollow Host Wrong ParentPromote Q3Process Creation (Windows)Image svchost.exe with parent not services.exe; or image msbuild.exe with parent powershell.exeBuild serversDetect: Medium
Sirius, svchost Outside System PathPromote Q4Process Creation (Windows)Image svchost.exe not under \Windows\System32, \SysWOW64 or \WinSxSNone knownDetect: High (never Block: name is abused, binary is stock)
Sirius, UserInit Logon ScriptPromote Q6Registry (Windows)Value name UserInitMgrLogonScriptName writtenNone knownDetect: High

SentinelOne: custom detection rules

RuleSource queryRun asNotes
Sirius, PDF Reader Spawns ShellQ1, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"
Sirius, Stager Flag SetQ2, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"
Sirius, Hollow Host Wrong ParentQ3, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"
Sirius, svchost Outside System PathQ4, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"
Sirius, UserInit Logon ScriptQ6, PowerQuery tabScheduled custom detection ruleBind entities so the alert names the host instead of "Unknown Device"

Create the rule with POST /web/api/v2.1/cloud-detection/rules, queryType: "scheduled" and queryLang: "2.0", with the query in data.scheduledParams.query. Use 2.0 operator spellings: a rule written with the 1.0 token ContainsCIS was accepted and never fired on a tenant. The API does not warn, so lint the body before deploying.

Microsoft Defender: custom detection rules

RuleSource queryRun asNotes
Sirius, PDF Reader Spawns ShellQ1, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself
Sirius, Stager Flag SetQ2, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself
Sirius, Hollow Host Wrong ParentQ3, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself
Sirius, svchost Outside System PathQ4, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself
Sirius, UserInit Logon ScriptQ6, KQL – Defender XDR tabCustom detection rule, alert only, every hourThe query returns Timestamp, ReportId and DeviceId, which Microsoft recommends for Defender for Endpoint tables so alerts carry the device group scope and the process tree. Remove the Timestamp filter and the final sort and take before saving the rule: the service applies the rule's lookback itself

Q5, Q7, Q8, Q9, Q10, Q11, Q12 and Q13 stay a hunt in this pack, not a rule. A rule can generate only 150 alerts per run. Continuous (NRT) frequency needs a single table and no comment lines, so delete the generated comment header from the query first.

10

Machine-Readable IOC Appendix

All CSV rows are detect. Port 4449 is part of the C2 context, not an importable field. The URL form is covered by the domain row.

Falcon IOC Management CSVbulk import, 14 atomic IOCs
type,value,action,severity,expiration,description,tags
sha256,87aafaa8bb6444bae4d2ef82e395c46e85daf468a66754169b1e3d762ba04f51,detect,medium,2027-04-30,Sirius campaign Email (.eml),campaign:SiriusBackdoor
sha256,7ec38100faffb910ece1f379cb93ec09cc2beeb35ee8bdb401d7645469dca105,detect,medium,2027-04-30,Sirius campaign Fedex_tax_receipt.zip,campaign:SiriusBackdoor
sha256,6da827caff789c1c33dd9ad380c610541f6dd90678db527c4f5bdf5012e305d4,detect,medium,2027-04-30,Sirius campaign Fedex_tax_receipt.pdf,campaign:SiriusBackdoor
sha256,899fc5fae0593dd47aef9db4b51ffb5aeae27be9d1b6beb41108411baca7ef05,detect,medium,2027-04-30,Sirius campaign .NET Stage 1 loader,campaign:SiriusBackdoor
sha256,eedd60c6abfc4c18578c960ae55b177ea9ff14e8d41634c46f361cc8680df01c,detect,medium,2027-04-30,Sirius campaign .NET Stage 2 injector,campaign:SiriusBackdoor
sha256,d6802fce5b918ed247ba85d6aa0545a8120cfbc3734b1c37794c4e381862d4ee,detect,medium,2027-04-30,Sirius campaign Sirius Backdoor (zeus.dat payload),campaign:SiriusBackdoor
md5,3cc5147d1dbe295c63da958afadac6c6,detect,medium,2027-04-30,Sirius campaign Email (.eml),campaign:SiriusBackdoor
md5,6ffcf5f7aa4b3b75b06bd7a7f49366a8,detect,medium,2027-04-30,Sirius campaign Fedex_tax_receipt.zip,campaign:SiriusBackdoor
md5,39993389e1e95ebbd55aa54058cf7b52,detect,medium,2027-04-30,Sirius campaign Fedex_tax_receipt.pdf,campaign:SiriusBackdoor
md5,64a9940fc78de8a895d968a4092ed10b,detect,medium,2027-04-30,Sirius campaign .NET Stage 1 loader,campaign:SiriusBackdoor
md5,62a458eb260e7aa26092dbdf9c2d8ed4,detect,medium,2027-04-30,Sirius campaign .NET Stage 2 injector,campaign:SiriusBackdoor
md5,e8b080c276519547e95930ab15028adb,detect,medium,2027-04-30,Sirius campaign Sirius Backdoor (zeus.dat payload),campaign:SiriusBackdoor
ipv4,185.114.206.45,detect,high,2027-01-30,Sirius backdoor C2 port 4449,campaign:SiriusBackdoor
domain,dubaitechnicalservice.ae,detect,high,2027-01-30,Sirius zeus.dat payload host,campaign:SiriusBackdoor
Microsoft Defender indicators CSVSettings, Endpoints, Indicators, Import: audit only
indicatorType,indicatorValue,action,title,description,expirationTime,severity,recommendedActions,rbacGroups,category,mitretechniques,GenerateAlert
FileSha256,87aafaa8bb6444bae4d2ef82e395c46e85daf468a66754169b1e3d762ba04f51,Audit,Sirius campaign Email,Sirius campaign Email (.eml),2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,7ec38100faffb910ece1f379cb93ec09cc2beeb35ee8bdb401d7645469dca105,Audit,Sirius campaign Fedex_tax_receipt.zip,Sirius campaign Fedex_tax_receipt.zip,2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,6da827caff789c1c33dd9ad380c610541f6dd90678db527c4f5bdf5012e305d4,Audit,Sirius campaign Fedex_tax_receipt.pdf,Sirius campaign Fedex_tax_receipt.pdf,2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,899fc5fae0593dd47aef9db4b51ffb5aeae27be9d1b6beb41108411baca7ef05,Audit,Sirius campaign .NET Stage 1 loader,Sirius campaign .NET Stage 1 loader,2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,eedd60c6abfc4c18578c960ae55b177ea9ff14e8d41634c46f361cc8680df01c,Audit,Sirius campaign .NET Stage 2 injector,Sirius campaign .NET Stage 2 injector,2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
FileSha256,d6802fce5b918ed247ba85d6aa0545a8120cfbc3734b1c37794c4e381862d4ee,Audit,Sirius campaign Sirius Backdoor,Sirius campaign Sirius Backdoor (zeus.dat payload),2027-04-30T00:00:00.0Z,Medium,Investigate the device and pivot into the pack's queries,,,,True
IpAddress,185.114.206.45,Audit,Sirius backdoor C2 port 4449,Sirius backdoor C2 port 4449,2027-01-30T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True
DomainName,dubaitechnicalservice.ae,Audit,Sirius zeus.dat payload host,Sirius zeus.dat payload host,2027-01-30T00:00:00.0Z,High,Investigate the device and pivot into the pack's queries,,,,True

Column names and allowed values are from Microsoft's documented parameter table. Left out because this block maps only SHA-1, SHA-256, IPv4, domain and URL indicators: md5 6. Check each expirationTime before importing: an indicator whose date has passed is already expired. Download the sample CSV from the Import page to confirm the column order before a bulk import. Each file takes at most 500 indicators. Learn describes the import per entity type, so if a mixed file is rejected, split it by indicatorType. An imported indicator does nothing unless the matching Advanced features are on (for example Custom network indicators and Allow or block file).

SentinelOne IOC importnot included

This pack does not ship a SentinelOne import block: the import format could not be verified against SentinelOne's own documentation. Export a sample from your console and the block can be added with confidence.

Behavioral Signatureshunt, do not block
# Process lineage (hunt by parent and path, never block the stock binary)
AcroRd32.exe | Acrobat.exe  ->  powershell.exe | cmd.exe | wscript.exe | cscript.exe | mshta.exe
powershell.exe  ->  msbuild.exe | svchost.exe (suspended host, then NtQueueApcThread)
svchost.exe NOT started by services.exe
svchost.exe outside \Windows\System32, \SysWOW64, \WinSxS
# Stager command-line flags
-W h -nop -NOni -ep BYPaSS -EncodedCommand
# Filesystem
%APPDATA%\Microsoft\svchost.exe        (sample config install path)
%TEMP%\msupdate\svchost.exe            (sample config fallback path)
C:\Windows\System32\user32.dll         (written by a non-servicing process)
C:\Recovery\Customizations\SysConfig_<CRC32>.ppkg
C:\Windows\Setup\Scripts\SetupComplete.cmd
%LOCALAPPDATA%\Microsoft\<dir>\<file>  and  %USERPROFILE%\Documents\<dir>\<file>   (non-admin fallback)
Startup folder: WindowsUpdate.lnk (default), updater.vbs
logon.cmd registered by UserInitMgrLogonScriptName
# Registry
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Environment\UserInitMgrLogonScriptName
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager  BootExecute (REG_MULTI_SZ)
HKEY_USERS\SURV_DEFAULT   (Default profile hive mounted by the implant)
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers  value "~ RUNASADMIN"
Named Malware and Toolingstring and name pivots
Malware family       : Sirius Backdoor (name used by Trellix)
Config marker        : <<SIRIUS_STUB_CONFIG>> in memory, or .rsrc resource Caffee_Config
Lure archive         : Fedex_tax_receipt.zip
Lure document        : Fedex_tax_receipt.pdf  (blank page, /OpenAction -> /Launch)
Lure subject         : [FedEx] A tax invoice has been issued.
Payload filename     : zeus.dat  (URL path /prood/zeus.dat)
Injector techniques  : Early Bird APC (CREATE_SUSPENDED, VirtualAllocEx, WriteProcessMemory, NtQueueApcThread, ResumeThread)
EDR blinding         : EtwEventWrite patch in ntdll.dll; NtManageHotPatch patch
Trellix detections   : FE_Backdoor_Win_Sirus_1, FE_Backdoor_Win_Sirus_2, Trojan.Sirius.IPCheck, Downloader.Sirius, Trojan.Sirius.DNS
Patch / ASR / Policy Auditread-only checks
# Patch / ASR / policy audit
ASR rule (Block Adobe Reader from creating child processes): 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c
  Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions
PowerShell script block logging (event 4104):
  Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -ErrorAction SilentlyContinue
PowerShell language mode on a standard user session:
  $ExecutionContext.SessionState.LanguageMode     # expect ConstrainedLanguage where WDAC or AppLocker enforces it
Defender exclusions (review every entry):
  Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension
Persistence spot checks:
  (Get-ItemProperty 'HKCU:\Environment').UserInitMgrLogonScriptName
  (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager').BootExecute
  Get-ChildItem 'C:\Recovery\Customizations' -Force -ErrorAction SilentlyContinue
  Test-Path 'C:\Windows\Setup\Scripts\SetupComplete.cmd'
11

Detection Validation Gates

GateCheckPass condition
Telemetry readyProcess creation with parent and command line (CrowdStrike: ProcessRollup2. SentinelOne: Process Creation. Defender: DeviceProcessEvents); registry value set; outbound connection; executable file writeEach source returns events for a known-good test host in the last 24 hours
Benign baselineRun Q1 to Q9 and Q11 over 30 daysQ1, Q4, Q5, Q10, Q12 return nothing; Q2, Q3, Q6 to Q9, Q11 list only explained parents, which go into TUNING
Positive testsOn an isolated test host: open a harmless PDF-reader child (for example a harmless cmd.exe started by a test harness whose parent is named like a PDF reader) and a renamed copy of a signed binary named svchost.exe in a user folderQ1 and Q4 fire. Do not detonate real malware
PromotionPromote Q1, Q2, Q3, Q4, Q6 as Custom IOAs in Monitor14 days at Monitor with no unexplained hits before any enforcement discussion
12

Hardening: Tiered

Immediate (this week)
  • Block Adobe Reader from creating child processes (ASR GUID 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c), audit first. Cited by Trellix; MITRE M1040 Behavior Prevention on Endpoint. Playbook P1. Verify: Defender events 1121 and 1122.
  • PowerShell Script Block Logging so event 4104 captures the decrypted stager. M1047 Audit; CIS Windows benchmark has a script block logging control. Playbook P2.
  • Mail gateway: quarantine ZIP attachments that contain a PDF with a launch action, and flag the lure subject and attachment name. M1049; best practice, no formal benchmark. Playbook P6.
  • Review Defender exclusions on all hosts; Sirius adds its own. M1047. Playbook P5.
Near term (1 to 4 weeks, pilot first)
  • PowerShell Constrained Language Mode through WDAC or AppLocker, which blocks the dynamic .NET and reflection the stager uses. M1038 Execution Prevention; Trellix recommendation. Pilot in audit mode: it breaks admin scripts.
  • Acrobat Protected View and launch-action restrictions through the product's enterprise policy. M1042 Disable or Remove Feature. Best practice; confirm the exact keys for your Acrobat build. Playbook P4.
  • Restrict who can write C:\Recovery\Customizations, C:\Windows\Setup\Scripts and the Default profile hive to SYSTEM and TrustedInstaller. M1022 Restrict File and Directory Permissions. Best practice; check imaging tools first.
Strategic (1 to 3 months)
  • WDAC allow-listing so a copy of svchost.exe or a DLL in a user path cannot run. M1038 and M1045 Code Signing.
  • Remove PDF readers' ability to launch files by standardising on a reader without launch actions, or sandboxing it. M1042 and M1048 Application Isolation.
  • Reimage standard: include a clean-out of the Recovery Customizations folder in the build so a reset cannot restore implant packages. Best practice, no formal benchmark.

Nothing in this pack recommends blocking svchost.exe, msbuild.exe, powershell.exe or user32.dll by name or hash.

13

Deployable Playbooks

P1 · ASR rule: Block Adobe Reader from creating child processes

Prerequisites: Microsoft Defender Antivirus active and not in passive mode; local admin or MDM; run in audit mode for 14 days and review events first.
Reboot required: No
Rollback: Remove-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c, or set the action to Disabled.

# 1. Audit first
Add-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c -AttackSurfaceReductionRules_Actions AuditMode
# 2. After 14 clean days, enforce
Add-MpPreference -AttackSurfaceReductionRules_Ids 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c -AttackSurfaceReductionRules_Actions Enabled
# 3. Verify
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions

P2 · PowerShell Script Block Logging (event 4104)

Prerequisites: Local admin or GPO. Plan log volume and forwarding; script block logs can be large.
Reboot required: No
Rollback: reg delete the value below, or set it to 0.

reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
# Verify: run any PowerShell command, then look for event 4104
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' -MaxEvents 5 | Where-Object Id -eq 4104

P3 · Persistence audit sweep (read-only)

Prerequisites: Local admin on the host. Read-only except the temporary hive load in the last block.
Reboot required: No
Rollback: none required for the read-only commands; for the hive check run reg unload HKU\TMPDEF.

(Get-ItemProperty 'HKCU:\Environment' -ErrorAction SilentlyContinue).UserInitMgrLogonScriptName
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager').BootExecute
Get-ChildItem 'C:\Recovery\Customizations' -Force -ErrorAction SilentlyContinue
Test-Path 'C:\Windows\Setup\Scripts\SetupComplete.cmd'
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers' -ErrorAction SilentlyContinue
Get-ChildItem "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup" -Force
Get-AuthenticodeSignature 'C:\Windows\System32\user32.dll' | Select-Object Status, SignerCertificate
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension
# Default profile hive check (loads then unloads it)
reg load HKU\TMPDEF C:\Users\Default\NTUSER.DAT
reg query HKU\TMPDEF\Software\Microsoft\Windows\CurrentVersion\Run
reg unload HKU\TMPDEF

P4 · Acrobat Protected View (best practice, confirm keys for your build)

Prerequisites: Acrobat or Reader enterprise policy access; test with a pilot ring. No formal benchmark covers this exact setting.
Reboot required: No (restart the reader)
Rollback: Delete the two values below.

reg add "HKLM\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" /v bProtectedMode /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Adobe\Adobe Acrobat\DC\FeatureLockDown" /v iProtectedView /t REG_DWORD /d 2 /f

P5 · Defender exclusion review

Prerequisites: Local admin. Removing an exclusion can slow a legitimate application; check each entry with its owner first.
Reboot required: No
Rollback: Add-MpPreference -ExclusionPath with the saved value.

# Record, then review every entry
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension | Out-File .\exclusions-before.txt
# After owner sign-off, remove one entry
Remove-MpPreference -ExclusionPath 'C:\Path\To\Unexplained\Entry'

P6 · Mail gateway rule (vendor-neutral outline)

Prerequisites: Mail gateway admin rights; run in tag-only mode first.
Reboot required: No
Rollback: Disable or delete the rule.

Condition A: attachment type ZIP whose inner file is a PDF containing /Launch or /OpenAction
Condition B: subject equals "[FedEx] A tax invoice has been issued."  OR  attachment name equals Fedex_tax_receipt.zip
Action: tag, then quarantine after 7 days of review
14

Containment Runbook

PhaseActionsOwnerEvidence
TriageConfirm which query fired; check Q1, Q3, Q4, Q10 and Q11 on the same aid; identify the user, mail message and time of PDF open.SOC L1Process tree; query output; message trace
IsolateNetwork-contain the host in Falcon. Keep it powered on: the loader and backdoor are memory-only. Capture memory if policy allows.SOC L2Containment time; memory image
Isolate: by platformCrowdStrike: network-contain the host. SentinelOne: network quarantine (Disconnect from Network; confirm the label in your console version). Microsoft Defender: Isolate device (full network isolation). Keep the host powered on for memory capture on all of them.SOC L2Containment time; memory image
CredentialsReset the user's passwords and revoke browser and SaaS sessions; Chromium profiles and cryptocurrency wallets on the host are assumed stolen; move wallet funds and rotate seeds.IAMReset and revocation log
BlockAdd 185.114.206.45 and dubaitechnicalservice.ae to firewall, DNS and proxy blocklists; search Q10 and N6 for other hosts.NetworkHunt results
EradicateReimage. Before any Windows reset, delete C:\Recovery\Customizations\*.ppkg and SetupComplete.cmd: Push-Button Reset restores packages from that folder. Check the Default profile hive and UserInitMgrLogonScriptName on neighbours.Endpoint teamPost-image P3 output
RecoverRestore from a backup taken before the first hit; the implant deletes shadow copies, so rely on off-host backups.ITRestore log
ReportRecord query hits, share any new infrastructure with your intel provider, update this pack.SOC leadTicket
15

Detection Coverage Map

TechniqueBehaviorCQLIOACrowdStrike coverageSentinelOneDefender XDR
T1566.001 Lure deliveryArchive and PDF named Fedex_tax_receiptQ13NoPartialPartial: same limit as CrowdStrikePartial: Q13 approximate
T1204.002 / T1059.001 PDF to PowerShellReader spawns shell, stager flagsQ1, Q2YesGoodGood, with assumptionsGood, with assumptions
T1055.004 / T1055.012 HollowingWrong-parent host, external msbuild trafficQ3, Q11YesPartialPartial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1036.005 / T1574.001 Payload dropsvchost.exe path, user32.dll writeQ4, Q5YesGoodGood, with assumptionsGood, with assumptions
T1547.001 / T1037.001 Registry persistenceUserInit, BootExecute, SURV_DEFAULT, RUNASADMINQ6YesPartialPartial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1053.005 Scheduled taskschtasks /create /xmlQ7NoPartialPartial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1037.003 / T1547 File persistenceppkg, SetupComplete, Startup .lnk and .vbs creationQ8NoGAP: file creation outside Falcon events used; use N4GAP: same limit as CrowdStrikeGAP: same limit as CrowdStrike
T1562.001 / T1490 Impair defensesDefender exclusion, VSS deleteQ9NoPartialPartial: same limit as CrowdStrikePartial: same limit as CrowdStrike
T1562.002 ETW patchEtwEventWrite and NtManageHotPatch patchingNoneNoGAP: no verified hunt event; sensor prevention and N2GAPGAP
T1071.001 / T1095 C2Known IP and domain, hash sweepQ10, Q12NoGoodGood, with assumptionsPartial: Q10 approximate, Q12 approximate
T1219 HVNC / SOCKS5 / captureOperator actions inside the hollowed hostQ11NoGAP: behavior has no direct hunt; rely on network and containmentGAP: same limit as CrowdStrikeGAP: same limit as CrowdStrike

Known gaps are listed above: non-PE file creation, ETW patching and in-memory injection are outside the Falcon events verified for this pack. Validation gates are in section 11.

16

Hunt Summary Ticket

TITLE:      Sirius Backdoor via blank FedEx tax-invoice PDF, fileless loader chain and Early Bird APC hollowing
SEVERITY:   High - Trellix report 2026-10-26; single vendor origin; no named actor
SCOPE:      Windows endpoints with a PDF reader and interactive users, mail gateway, Korean-language and
            finance or accounting recipients first.

HYPOTHESIS: A user opened Fedex_tax_receipt.pdf from a ZIP; the PDF /Launch action ran hidden encoded PowerShell;
            in-memory stages patched ETW and hollowed msbuild.exe or svchost.exe to run a VC++ backdoor with
            HVNC, SOCKS5, capture and clipboard hijack, plus deep persistence including a provisioning package.

QUERIES:    Q1  PDF reader spawns shell                CONF high | FP low | COST low
            Q2  stager flag set                         CONF med  | FP med | COST low
            Q3  hollow host wrong parent                CONF med  | FP med | COST low
            Q4  svchost outside system paths            CONF high | FP low | COST low
            Q5  svchost / user32.dll drop               CONF high | FP low | COST low
            Q6  registry persistence                    CONF med  | FP med | COST low
            Q7  schtasks /create /xml                   CONF med  | FP med | COST low
            Q8  persistence artifact names              CONF med  | FP med | COST low
            Q9  Defender exclusion / VSS delete         CONF med  | FP med | COST low
            Q10 C2 IP and payload domain                CONF high | FP low | COST low
            Q11 msbuild external connections            CONF med  | FP med | COST med
            Q12 file hashes                             CONF high | FP low | COST low
            Q13 lure filename                           CONF med  | FP low | COST low

DO FIRST:   1. Q1, Q3, Q4, Q10 across 30 days
            2. Mail gateway search N1 for the lure subject and attachment
            3. Enable ASR rule in audit mode (P1) and script block logging (P2)

FINDINGS:   [ ] Q1 hits: ______   [ ] Q4 hits: ______   [ ] Q10 hits: ______

GAPS:       Non-PE file creation (ppkg, SetupComplete.cmd, Startup items) is outside endpoint telemetry used here;
            ETW patching and APC injection have no verified hunt event. Use native hunts N2 and N4.

ACTIONS:    [ ] Isolate and reimage any host with a hit (delete Recovery Customizations first)
            [ ] Reset credentials and wallet seeds for affected users
            [ ] Block 185.114.206.45 and dubaitechnicalservice.ae

OWNER:      SOC L2 / Detection engineering
VERSION:    v0.1 (Draft) 2026-10-30 - HuntPack
17

Changelog

v0.12026-10-30Initial draft from the Trellix report of 2026-10-26 and one secondary write-up. 13 queries, 14 atomic IOCs, 5 proposed IOAs, 6 playbooks. SentinelOne PowerQuery and Microsoft Defender KQL tabs added to Q1-Q13: SIEM Query Rosetta release 0.1.0 (public-beta; static-reviewed translations).
18

References

TierSourceUsed forAccess date
1Trellix: Unveiling Sirius BackdoorChain, config, persistence flags, capabilities, IOCs, defensive recommendations2026-10-30
3Cyber Security News: Hackers Use Fake FedEx Invoices to Deploy Sirius BackdoorCorroboration of lure details and indicator transcription2026-10-30

Frameworks cited by name: MITRE ATT&CK techniques and mitigations (M-numbers); CIS Windows benchmark for script block logging. Snapshots: Sirius-Backdoor-FedEx-Hunt-sources/.