Operation DragonReturn

aka the fake Indian ITR notice / DcRAT dual-RAT campaign — Seqrite Labs named it Operation DragonReturn; Cyderes Howler Cell and The Hacker News reported the same activity as the fake Income Tax Return notice chain. One campaign, two vendor names
A signed Indian tax-utility executable side-loads nvdaHelperRemote.dll, driving a six-stage in-memory chain that injects a Gh0st/DcRAT derivative and an AsyncRAT/Quasar-family .NET implant into svchost.exe across every logged-in session, over two separate C2 channels.
Threat
Operation DragonReturn
Also tracked as
Fake Indian ITR Notice · DcRAT dual-RAT campaign
Severity
ACTIVE CAMPAIGN
Type
Dual RAT / side-loading / in-memory loader
Access
Fake ITR site → ZIP → signed EXE + malicious DLL
Attribution
SUSPECTED China-nexus
Version
v0.3 · 2026-07-19
Author
HuntPack
Confidence
High (two independent vendor reports, overlapping IOCs)
01

Executive Summary

Naming: this pack is filed under Operation DragonReturn (Seqrite Labs' name). The same campaign is reported elsewhere as the fake Indian ITR notice chain (Cyderes Howler Cell) and as the fake Indian tax filing utility / DcRAT campaign (The Hacker News). All three names describe one operation — same COU_ITR lure, same nvdaHelperRemote.dll side-load, same kkxqbh[.]top and 118.107.0.197 infrastructure. Both names are recorded here deliberately so future triage does not treat them as two threats.

Two vendors independently documented the same campaign against India's tax-filing ecosystem during the AY2026-27 season. Seqrite Labs published it as Operation DragonReturn (first observed 2026-05-18, spear-phishing PDFs linking to govtop[.]one/incometax), and Cyderes' Howler Cell published a deeper reverse-engineering writeup on 2026-07-07 covering a parallel set of lure domains. The two clusters are the same operation: they share the stage-1 DLL hash 2c0de3d5…, the polyglot host 118[.]107[.]0[.]197, and the C2 domain kkxqbh[.]top.

Victims reach a fake Income Tax Department page that abuses Government of India branding, are routed through a bogus "Microsoft Edge Secure Gateway" verification screen, and are served Common_Offline_Utility_ITR-1_to_4_AY2026-27.zip. The archive holds a legitimate, digitally signed executable, COU_ITR-1_to_4_AY2026-27.exe, alongside a malicious companion DLL, nvdaHelperRemote.dll — a name borrowed from the NVDA screen reader. Windows' default DLL search order does the rest: the trusted, signed process loads attacker code with no exploit and no unsigned parent.

From there a six-stage chain runs. Stage 2 checks for Administrators-group membership and re-launches itself with the runas verb to force a UAC prompt; it then stages under C:\Program Files\Windows Media Player\, copies itself to Mixed Reality.exe, and installs an auto-start service MixedSvc with the display name "Windows Mixed Reality Service". It fetches a polyglot JPEG to C:\Windows\background.jpg — a file that renders as a valid image in any browser but carries at least three distinct encrypted payloads appended at different byte offsets. Stages 3 through 5 move entirely into memory via reflective loading, and stage 5 is session-aware: it enumerates every active terminal session and spawns a suspended svchost.exe under a token whose session ID has been reassigned, injecting into each one. The malware therefore reaches every logged-in user, not just the service session.

The two final implants split their C2 deliberately. Stage 6A is a Gh0st RAT derivative reaching kkxqbh[.]top on port 6666, carrying reflectively-loaded zlib, CameraUtil, libturbojpeg and a custom VTCP.dll stack for a self-contained screen-capture-to-JPEG exfil pipeline plus a piped cmd.exe reverse shell. Stage 6B patches AMSI (AmsiOpenSession +0x1C overwritten with 0xFEEB), hosts the CLR from native code, and loads a Quasar/AsyncRAT-family .NET assembly in memory that reaches ouewop[.]com on port 6351. Blocking one channel does not end the intrusion.

Attribution is SUSPECTED, not confirmed. Seqrite assesses with medium-to-high confidence that this is a China-aligned cluster, based on Chinese-language strings in the infrastructure, a Chinese-language DCRat web panel on 223.26.63[.]40, kkxqbh[.]top resolving into ChinaNet AS4134 (Nanchang, Jiangxi), and infrastructure/TTP overlaps with Silver Fox — a Chinese cybercrime group previously tied to tax-themed ValleyRAT phishing. Seqrite itself notes that hosting geography alone is not definitive attribution. Treat "China-nexus" and "Silver Fox overlap" as an analytic assessment, not established fact, in any reporting derived from this pack.

Defender priority: run Q3 first — any PE written into C:\Program Files\Windows Media Player\ is the campaign's highest-fidelity, lowest-false-positive artifact. Windows Media Player is a frozen legacy component; nothing legitimate drops executables there. Pair it with Q4 (the MixedSvc service) and Q8 (svchost.exe egress on 6666/6351) for staging-through-C2 coverage that survives hash and domain rotation.

02

Source Review & Web Hunter Notes

Eight sources were fetched and snapshotted verbatim to OperationDragonReturn-Hunt-sources/. Every atomic indicator shipped in section 10 traces to one of those snapshots; nothing was inferred, reconstructed, or carried from memory.

TierSourceKey findingCarry forward
1 · VendorCyderes Howler Cell — "The Tax Trap" (2026-07-07)Full six-stage reverse engineering, polyglot offsets, host artifacts, named kernel objects, 10 SHA256, C2 ports, EDR detection methodologyYes — primary basis for the hunt logic
1 · VendorSeqrite Labs — Operation DragonReturn (2026-06-26)The pack's namesake and the origin of the v0.1 release. Attribution assessment, campaign timeline, second infrastructure cluster, full ATT&CK table, DCRat panel, and the full 34-hash sample set plus the jiayingjing[.]com / simaqz[.]com / 1kkkkddd[.]com C2 domainsYes — attribution, hashes + additional infrastructure
1 · VendorGurucul Threat Research — Operation DragonReturn (2026-06-29)Independent corroboration of the multi-stage DcRAT / ValleyRAT deployment and the China-nexus assessment via infrastructure and language overlapsPartial — corroboration and attribution weight
2 · PressThe Hacker News (2026-07-06)Ties the Seqrite and Cyderes clusters together; restates the Silver Fox / ValleyRAT lineage argumentPartial — cluster linkage and attribution framing
2 · PressCSO Online (2026-07)Independent confirmation of the dual-malware tax-season campaignPartial — corroboration only
2 · PressCybersecurity News (2026-07)Independent restatement of the six-stage chain; lists the tqkat[.]rest lure domainPartial — one additional lure domain
2 · PressGBHackers (2026-07)Confirms Gh0st RAT and AsyncRAT implant pairingPartial — corroboration only
2 · PressCyberpress (2026-07)Confirms signed-binary abuse framingPartial — corroboration only

Research notes and deliberate exclusions

  • 93dd8b7b… ships as detect, never prevent. That hash is the legitimate, digitally signed Income Tax Department offline utility (also seen renamed to Mixed Reality.exe). It is abused, not malicious. Setting it to prevent would break the genuine ITR filing tool for any Indian-market user and would be a self-inflicted outage. Detect-only, and triage on where it runs from — see Q1 and Q10.
  • C2 ports 6666 and 6351 are not shipped in the import CSV. Falcon IOC Management has no port indicator type. They are carried in the behavioural block and are enforced through Q8 instead.
  • The AES-128 key 3343f6a8… is not shipped as an MD5. It is a 16-byte hardcoded decryption key from the stage-6B loader that happens to be 32 hex characters. Labelling it a hash would produce a permanently-zero-hit IOC. It lives in the behavioural block as a reverse-engineering aid.
  • Host artifacts c:\kkooPPP, c:\ouewo, c:\kkqqexit and c:\debug.txt are behavioural, not CQL-queryable. Falcon file-write telemetry covers PE, ELF, archive and document writes; these are extension-less, non-PE lock and kill files, so no *FileWritten event fires. They are handled in the native audit-log hunts (section 7) and flagged as a coverage gap (section 15).
  • Named kernel objects are not blockable. Global\kkctsbnn, Global\ShitSetupOn26126k and the AsyncRAT mutex 5sGEm6Q4eTNv are excellent DFIR confirmation pivots on a live host but have no Falcon indicator type and no standard sensor event. Behavioural block plus section 7.
  • Perishability: the five IPv4 addresses and the lure domains rotate fastest and carry the shortest expiry. The 43 SHA256 values are durable. kkxqbh[.]top and ouewop[.]com are the highest-value network indicators because both vendor clusters converge on them.
  • Both 1kkkkddd[.]com (digit one) and ikkkkddd[.]com (letter i) ship — this is not a typo. Seqrite documents them as two separately-registered look-alike domains: ikkkkddd.com appears as an in-memory C2 string, and 1kkkkddd.com is listed among the associated infrastructure domains. Correcting either one into the other would silently drop a live indicator, so both are carried verbatim. Anyone hand-transcribing this blocklist should double-check the first character.
  • MixedRealityPortal.exe is not an indicator and is deliberately absent from the import CSV. It is the genuine Microsoft Mixed Reality Portal binary that ships under System32 — no cited source associates it with this campaign, and it is neither attacker-supplied nor the side-load host here (the side-load host is the signed COU_ITR-1_to_4_AY2026-27.exe). It appears in this pack only as a benign-baseline discriminator: it is the legitimate name that makes the campaign's Mixed Reality.exe in the Windows Media Player directory recognisably fake. Shipping it as a blockable atomic IOC would generate pure false positives against a stock Windows component. See Q1 and Q10.
  • No MD5 or SHA1 values are published by any cited source. Rather than compute or infer them, the CSV ships a labelled REPLACE_WITH_ placeholder row.
03

Hunt Brief & Attack Chain

#StageWhat happensTelemetryHunt angle
0LureFake Income Tax Department page on /incometax; fake "Microsoft Edge Secure Gateway" interstitial; ZIP auto-downloadDnsRequest, NetworkConnectIP4, ZipFileWrittenQ5, Q6
1Side-loadSigned COU_ITR-1_to_4_AY2026-27.exe loads companion nvdaHelperRemote.dll from its own directory; DLL decodes shellcode in memoryProcessRollup2, PeFileWrittenQ1, Q2
2DownloaderAdmin-group check → runas UAC relaunch; single-instance global events; stages under C:\Program Files\Windows Media Player\; fetches polyglot to C:\Windows\background.jpg; copies self to Mixed Reality.exe; creates auto-start service MixedSvcProcessRollup2, PeFileWritten, RegGenericValueUpdate, NetworkConnectIP4Q3, Q4, Q7, Q11
3LoaderMixedSvc starts; staged host side-loads the dropped DLL again; shellcode unpacks stage 4 and maps it reflectively — no disk writeProcessRollup2 onlyQ10 · partial gap
4InjectorDynamic API resolution (XOR 0x18 / 0x02); carves a second payload region from the polyglot at offset 0x1587D; injects into svchost.exe via CreateRemoteThreadGap · see section 15
5Session-aware injectorGuarded by Global\kkctsbnn; carves two more payloads (offsets 0x52C04 and 0x165A04); enumerates all terminal sessions and spawns a suspended svchost.exe per session under a re-assigned token; writes c:\debug.txt; watches for kill file c:\kkqqexitProcessRollup2Q9
6AGh0st RAT derivativeLock file c:\kkooPPP; reflective zlib / CameraUtil / libturbojpeg / VTCP modules; screen capture, piped cmd.exe reverse shell, file ops; C2 kkxqbh[.]top:6666DnsRequest, NetworkConnectIP4, ProcessRollup2Q6, Q7, Q8
6BAsyncRAT/Quasar .NETLock file c:\ouewo; AMSI patch at AmsiOpenSession+0x1C; AES-128 decrypt; in-memory CLR hosting via ICLRMetaHostLoad_3; mutex 5sGEm6Q4eTNv; C2 ouewop[.]com:6351DnsRequest, NetworkConnectIP4Q6, Q7, Q8

Hunt hypotheses (ordered by fidelity)

#HypothesisMITREConfExpected FP source
H1A PE was written into the Windows Media Player program directory — the campaign's staging pathT1036.005HighEffectively none; WMP is a frozen component
H2An auto-start service named MixedSvc / displayed as "Windows Mixed Reality Service" was registeredT1543.003HighNone — genuine Mixed Reality uses different service names
H3nvdaHelperRemote.dll was written outside a genuine NVDA screen-reader installT1574.002HighLegitimate NVDA installs and portable NVDA copies
H4svchost.exe is egressing to a non-Microsoft destination on port 6666 or 6351T1571, T1095HighRare; some legacy IRC-era tooling uses 6666
H5svchost.exe was created by a parent other than services.exeT1055.002MedSome EDR/backup agents and installers spawn svchost
H6A host resolved or connected to campaign lure or C2 infrastructureT1071.001HighSecurity-tooling detonation and researcher lookups
H7The ITR utility binary ran from a user-writable path (Downloads / Temp / extracted ZIP) rather than a genuine installT1204.002MedGenuine users running the real utility from Downloads
H8An ITR-themed ZIP was written to disk by a browser processT1566.002MedGenuine taxpayers downloading the real utility
04

Consolidated IOC Table

TypeValueConfActionContextExpiry
SHA25652c19cfd…84330HighPreventDelivery ZIP Common_Offline_Utility_ITR-1_to_4_AY2026-27.zip2027-01-19
SHA25693dd8b7b…f2a8HighDetect onlyLegitimate signed ITR utility, also renamed Mixed Reality.exe — do not block2027-01-19
SHA2562c0de3d5…2148eHighPreventnvdaHelperRemote.dll stage 1 — appears in both vendor clusters2027-01-19
SHA25660ad81d7…1853fHighPreventStage 2 downloader2027-01-19
SHA2563dd5148c…6d1edHighPreventnvdaHelperRemote.dll stage 3 (dropped)2027-01-19
SHA256030b9066…4cbbHighPreventStage 4 injector2027-01-19
SHA2567ee61469…9fb92HighPreventStage 5 session-aware injector2027-01-19
SHA256fd062b40…dc2faHighPreventbackground.jpg polyglot payload container2027-01-19
SHA256fb520caa…19e112HighPreventDecrypted .NET AsyncRAT assembly (stage 6B)2027-01-19
SHA256a1521585…0a6a1HighPreventInjected PE-1, Gh0st RAT derivative (stage 6A)2027-01-19
SHA256 ×332f2f8f92…, 1787d111…, 19ca5fe0…(full set in section 10)HighDetectSeqrite DragonReturn sample set — 33 further samples published with the original DragonReturn report. 2c0de3d5… above is the 34th and is the hash both vendor clusters share.2027-01-19
Domainkkxqbh[.]topHighDetect / blockGh0st RAT C2, port 6666 — converged across both vendor clusters2026-10-19
Domainouewop[.]comHighDetect / blockAsyncRAT C2, port 63512026-10-19
Domainikkkkddd[.]comMedDetectAdditional C2 (Seqrite cluster) — in-memory C2 string. Letter i2026-10-19
Domain1kkkkddd[.]comMedDetectAssociated C2 infrastructure (Seqrite cluster). Digit one — a separate registration from ikkkkddd[.]com, not a typo of it2026-10-19
Domainsimaqz[.]comMedDetectAssociated C2 infrastructure (Seqrite cluster)2026-10-19
Domainjiayingjing[.]comMedDetectAssociated C2 infrastructure (Seqrite cluster)2026-10-19
Domaingovtop[.]oneHighDetect / blockLure host, /incometax path (Seqrite cluster)2026-10-19
Domainimport[.]mom, tqhaq[.]rest, generate[.]lat, meoou[.]rest, kattp[.]homes, tqkat[.]restMedDetect / blockLure hosting, all on the /incometax path2026-10-19
IPv4118[.]107[.]0[.]197HighDetect / blockPolyglot hosting — appears in both vendor clusters2026-10-19
IPv4204[.]194[.]48[.]250MedDetectPolyglot host (lllyd.jpg), Seqrite cluster2026-10-19
IPv4223[.]26[.]63[.]40MedDetectDCRat C2 with exposed Chinese-language panel (port 2671)2026-10-19
IPv427[.]50[.]54[.]191MedDetectCampaign infrastructure (Seqrite cluster)2026-10-19
IPv4117[.]44[.]201[.]119MedDetectkkxqbh[.]top resolution — ChinaNet AS4134, Nanchang2026-10-19
URLhxxp[://]118[.]107[.]0[.]197/ouewo[.]jpgHighDetect / blockPolyglot download URL2026-10-19
Port6666, 6351HighHunt onlyGh0st and AsyncRAT C2 ports — no Falcon indicator type; see Q8
ServiceMixedSvc / "Windows Mixed Reality Service"HighHunt onlyPersistence; see Q4
Mutex / Event5sGEm6Q4eTNv, Global\kkctsbnn, Global\ShitSetupOn26126kHighHunt onlyLive-host DFIR confirmation; see section 7
05

Affected Surface & Telemetry Matrix

SurfaceExposureRequired telemetryPriorityGap risk
Windows endpoints — India-facing finance / tax staffDirect. The lure targets taxpayers, tax professionals and corporate finance teams during filing seasonProcessRollup2, PeFileWritten, ZipFileWrittenCriticalLow
Any Windows host where users install their own softwareDirect. No exploit required; the chain needs only a user double-click plus one UAC approvalProcessRollup2HighLow
Multi-session hosts (RDS, Citrix, shared workstations)Amplified. Stage 5 injects into every active terminal session, so one infection reaches every logged-in userProcessRollup2 with UserName / UserSidCriticalMedium — session attribution can be noisy
Egress / perimeterTwo independent C2 channels on non-standard TCP portsNetworkConnectIP4, DnsRequestHighMedium — depends on egress filtering maturity
Local administrator modelStage 2 aborts unless it can obtain admin. Users who are not local admins face a UAC credential prompt they cannot satisfy — the chain stops at stage 2ProcessRollup2, UserIsAdminCriticalLow — this is the single strongest control
In-memory stages 3–6Reflective loading, in-memory CLR hosting and remote-thread injection leave no file artifactsMemory scanning / AMSI (degraded by the stage-6B patch)MediumHigh — documented gap
06

ATT&CK Mapping

Merged from the ATT&CK tables published by Cyderes and Seqrite. Coverage column reflects this pack's queries.

TacticIDTechniqueObserved behaviourCoverage
Initial AccessT1566.002Phishing: Spearphishing LinkFake ITR pages on /incometax; PDF-embedded link to govtop[.]oneQ5, Q6
Initial AccessT1566.001Phishing: Spearphishing AttachmentPDF attachment carrying the lure link (Seqrite cluster)Q5
ExecutionT1204.002User Execution: Malicious FileUser extracts the ZIP and runs the signed ITR utilityQ1, Q5
ExecutionT1059.003Windows Command ShellGh0st implant's piped cmd.exe reverse shellQ9 (contextual)
ExecutionT1106Native APICreateProcessA, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread resolved at runtimeGap
Persistence / Def. EvasionT1574.002Hijack Execution Flow: DLL Side-LoadingSigned ITR utility loads companion nvdaHelperRemote.dllQ1, Q2, Q3
PersistenceT1543.003Create or Modify System Process: Windows ServiceAuto-start service MixedSvc, display name "Windows Mixed Reality Service"Q4
PersistenceT1547.001Registry Run Keys / Startup FolderReported in the Seqrite clusterQ4 (variant)
Priv. EscalationT1548.002Abuse Elevation Control: UAC / runasStage 2 relaunches itself with runas to force a UAC promptQ11
Priv. EscalationT1134.002Access Token Manipulation: Create Process with TokenStage 5 spawns svchost.exe under a duplicated, session-reassigned tokenQ9
Defense EvasionT1055.002Process Injection: PE InjectionRemote-thread injection into svchost.exe across all sessionsQ9
Defense EvasionT1620Reflective Code LoadingStages 4–6 mapped in memory; in-memory CLR hostingGap
Defense EvasionT1562.001Impair Defenses: Disable or Modify ToolsAMSI patched at AmsiOpenSession+0x1C with 0xFEEBGap — IOA candidate
Defense EvasionT1027.009Obfuscated Files: Embedded PayloadsPolyglot JPEG carrying 3+ payloads at distinct offsetsQ7
Defense EvasionT1027.007Obfuscated Files: Dynamic API ResolutionXOR-decoded (0x18 / 0x02) API name stringsGap
Defense EvasionT1140Deobfuscate/Decode Files or InformationXOR and AES-128 payload decryptionGap
Defense EvasionT1036.005Masquerading: Match Legitimate Name or LocationMixed Reality.exe in the Windows Media Player directory; nvdaHelperRemote.dll borrows an NVDA nameQ2, Q3, Q10
Defense EvasionT1564.001Hide Artifacts: Hidden Files and DirectoriesHidden/system lock files at the filesystem rootGap — section 7
Defense EvasionT1070.004Indicator Removal: File DeletionPrior-run artifacts and services removed before re-stagingGap
DiscoveryT1057 / T1033 / T1082Process, Owner and System DiscoveryProcess enumeration to locate svchost.exe; terminal-session enumerationGap
CollectionT1113Screen CaptureCameraUtil + libturbojpeg screen-capture-to-JPEG pipelineGap
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsPolyglot retrieval over HTTPQ6, Q7
Command and ControlT1095Non-Application Layer ProtocolCustom VTCP.dll TCP stack to kkxqbh[.]top:6666Q8
Command and ControlT1571Non-Standard PortTCP 6666 and 6351Q8
Command and ControlT1573Encrypted ChannelAES-256-CBC encrypt-then-HMAC AsyncRAT config and trafficGap
ExfiltrationT1041Exfiltration Over C2 ChannelScreen frames and files exfiltrated over the implant channelsQ8
07

Native Audit-Log Hunts

These cover the artifacts Falcon telemetry does not surface — extension-less lock files, named kernel objects, and the service registration itself. Run them on any host that hits a section-8 query. All are read-only.

1 · Root-level lock, kill and debug artifacts (hidden + system attributes)

Get-ChildItem -Path C:\ -Force -File |
  Where-Object { $_.Name -in @('kkooPPP','ouewo','kkqqexit','debug.txt') } |
  Select-Object Name, Length, CreationTime, LastWriteTime, Attributes

Any hit is high-confidence. kkooPPP means the Gh0st implant (6A) is or was resident; ouewo means the AsyncRAT loader (6B) is or was resident; kkqqexit is the injector's shutdown signal.

2 · The persistence service

Get-CimInstance Win32_Service |
  Where-Object { $_.Name -eq 'MixedSvc' -or $_.DisplayName -like '*Mixed Reality*' } |
  Select-Object Name, DisplayName, PathName, StartMode, State, Description

A PathName under C:\Program Files\Windows Media Player\ confirms compromise. Genuine Windows Mixed Reality does not register a service called MixedSvc.

3 · Staging directory contents

Get-ChildItem 'C:\Program Files\Windows Media Player\' -Force |
  Where-Object { $_.Name -in @('Mixed Reality.exe','nvdaHelperRemote.dll') } |
  Select-Object Name, Length, CreationTime, VersionInfo

Get-Item C:\Windows\background.jpg -Force -ErrorAction SilentlyContinue |
  Select-Object FullName, Length, CreationTime, LastWriteTime

A background.jpg substantially larger than a plain wallpaper JPEG is the polyglot container. Cyderes documented embedded payload regions at offsets 0x1587D, 0x52C04 and 0x165A04.

4 · Named kernel objects (live hosts only)

Get-ChildItem \\.\GLOBALROOT\BaseNamedObjects\ -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match 'kkctsbnn|ShitSetupOn26126k|5sGEm6Q4eTNv' } |
  Select-Object Name

These vanish on reboot, so a clean result on a rebooted host proves nothing. Present = active infection.

5 · Service-creation events in the System log

Get-WinEvent -FilterHashtable @{ LogName='System'; Id=7045 } -MaxEvents 400 |
  Where-Object { $_.Message -match 'MixedSvc|Mixed Reality|Windows Media Player' } |
  Select-Object TimeCreated, Id, Message

Event ID 7045 records service installation and is the most reliable timestamp for when stage 2 completed.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · ITR offline-utility binary or "Mixed Reality.exe" executing
CONF HIGHFP MEDCOST LOW

Looks for: execution of the signed ITR utility under either of its two observed names. Mixed Reality.exe is the stage-2 self-copy and is always malicious in this context; the COU_ITR name may be a genuine taxpayer. Triage on ImageFileName: a run from Downloads, Temp or an extracted-archive path is the campaign pattern.

Do not confuse this with the real Windows component. Genuine Microsoft Mixed Reality Portal is MixedRealityPortal.exe under System32 — one word, no space, and a Microsoft-signed stock binary. The campaign's file is Mixed Reality.exewith a space — staged under C:\Program Files\Windows Media Player\. The regex above is anchored so it matches only the spaced malicious name; MixedRealityPortal.exe will never hit it, and it must never be added to a blocklist.

// HUNT: Indian ITR offline-utility binary / Mixed Reality.exe execution
// MITRE: T1204.002, T1036.005, T1574.002
// CONF: high | FP: medium | COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: genuine Indian taxpayers running the real offline utility
// TUNING: the "Mixed Reality" name has no benign form here — alert on it separately
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^(COU_ITR-1_to_4_AY2026-27|Mixed Reality)(\.exe)?$/i
| table([ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, CommandLine, SHA256HashData], limit=200)
Q2 · nvdaHelperRemote.dll written outside a genuine NVDA install
CONF HIGHFP LOWCOST LOW

Looks for: the side-loaded DLL landing on disk. The malware borrows the filename from the NVDA screen reader, so the discriminator is location, not name — the negative filter removes real NVDA installs and leaves only the abusive copies.

// HUNT: nvdaHelperRemote.dll dropped outside a real NVDA screen-reader install
// MITRE: T1574.002, T1036.005
// CONF: high | FP: low | COST: low
// REQUIRES: PeFileWritten or NewExecutableWritten
// FALSE POSITIVES: legitimate NVDA installs and portable NVDA copies on USB media
// TUNING: add any approved portable-NVDA directory to the negated regex below
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/nvdaHelperRemote\.dll$/i
| TargetFileName!=/\\NVDA\\/i
| table([ComputerName, UserName, TargetFileName, ContextBaseFileName, FileName, SHA256HashData], limit=200)
Q3 · Any PE written into the Windows Media Player directory  ← RUN FIRST
CONF HIGHFP LOWCOST LOW

Looks for: the campaign's staging directory. Windows Media Player is a frozen legacy component that receives no vendor updates — a new executable or DLL appearing there is anomalous regardless of this campaign. This is the pack's highest-fidelity query and survives hash, filename and domain rotation.

// HUNT: PE written into C:\Program Files\Windows Media Player (campaign staging dir)
// MITRE: T1036.005, T1574.002
// CONF: high | FP: low | COST: low
// REQUIRES: PeFileWritten or NewExecutableWritten
// FALSE POSITIVES: effectively none — WMP is frozen and receives no vendor updates
// TUNING: none expected; investigate every hit
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/\\Windows Media Player\\/i
| table([ComputerName, UserName, TargetFileName, ContextBaseFileName, FileName, SHA256HashData], limit=200)
Q4 · MixedSvc / "Windows Mixed Reality Service" persistence
CONF HIGHFP LOWCOST LOW

Looks for: the auto-start service registration under HKLM\SYSTEM\CurrentControlSet\Services\, matched on the service key name or on any service whose image path points into the Windows Media Player directory. The second clause is the durable form — the service name is trivially changed, the staging path is structural.

// HUNT: MixedSvc service registration / any service imaged from Windows Media Player
// MITRE: T1543.003, T1036.005
// CONF: high | FP: low | COST: low
// REQUIRES: RegGenericValueUpdate or AsepValueUpdate
// FALSE POSITIVES: none known — genuine Mixed Reality does not register MixedSvc
// TUNING: if your tenant emits ServiceInstalled, run the ServiceImagePath variant too
#event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate)$/
| RegObjectName=/CurrentControlSet\\Services\\/i
| RegObjectName=/MixedSvc/i or RegStringValue=/\\Windows Media Player\\/i
| table([ComputerName, UserName, RegObjectName, RegValueName, RegStringValue], limit=200)
Q5 · ITR-themed archive written to disk by a browser
CONF HIGHFP MEDCOST LOW

Looks for: the delivery archive landing in Downloads. Genuine taxpayers also download an identically-named utility from the real Income Tax portal, so this is a scoping query, not an alert — correlate every hit against Q6 to see whether the host also resolved a lure domain.

// HUNT: Common_Offline_Utility ITR archive written to disk
// MITRE: T1566.002, T1204.002
// CONF: high | FP: medium | COST: low
// REQUIRES: ZipFileWritten
// FALSE POSITIVES: genuine taxpayers downloading the real utility from incometax.gov.in
// TUNING: correlate with Q6 — a lure-domain resolution on the same host confirms it
#event_simpleName=/^(ZipFileWritten|PeFileWritten|NewExecutableWritten)$/
| TargetFileName=/Common_Offline_Utility|COU_ITR-1_to_4/i
| table([ComputerName, UserName, TargetFileName, ContextBaseFileName, FileName, SHA256HashData], limit=200)
Q6 · Campaign lure and C2 domain resolution
CONF HIGHFP LOWCOST LOW

Looks for: DNS resolution of any published lure or C2 domain across both vendor clusters. kkxqbh[.]top and ouewop[.]com are the two implant channels; ikkkkddd[.]com, 1kkkkddd[.]com, simaqz[.]com and jiayingjing[.]com are additional C2 infrastructure from the Seqrite cluster; the rest are lure hosting. A resolution of a C2 domain is a confirmed post-exploitation event, not just a click.

Read the first character carefully. 1kkkkddd[.]com begins with the digit one and ikkkkddd[.]com begins with the letter i. Both are genuine, separately-registered domains named in the Seqrite report — the regex intentionally contains both. Neither is a transcription error to be tidied up.

// HUNT: DNS resolution of Operation DragonReturn lure or dual-RAT C2 infrastructure
// MITRE: T1071.001, T1568
// CONF: high | FP: low | COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: sandbox detonation hosts and researcher workstations
// TUNING: exclude your malware-analysis subnet by aid before alerting
// NOTE: 1kkkkddd.com (digit one) and ikkkkddd.com (letter i) are BOTH real, separately
//       registered domains. Do not "correct" either one — you would drop a live C2.
#event_simpleName=DnsRequest
| DomainName=/^(kkxqbh\.top|ouewop\.com|ikkkkddd\.com|1kkkkddd\.com|simaqz\.com|jiayingjing\.com|govtop\.one|import\.mom|tqhaq\.rest|tqkat\.rest|generate\.lat|meoou\.rest|kattp\.homes)$/i
| table([ComputerName, UserName, DomainName, ContextBaseFileName, ContextProcessId, aid], limit=200)
Q7 · Connections to campaign C2 and polyglot-hosting IPs
CONF HIGHFP LOWCOST LOW

Looks for: direct IP connections to published infrastructure. 118.107.0.197 serves the polyglot and appears in both vendor clusters, making it the strongest single network indicator. 223.26.63.40 hosts the Chinese-language DCRat panel on port 2671.

// HUNT: outbound connections to Operation DragonReturn campaign infrastructure
// MITRE: T1071.001, T1027.009
// CONF: high | FP: low | COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: threat-intel enrichment appliances that actively probe indicators
// TUNING: exclude your TI-enrichment host aids before promoting to an alert
#event_simpleName=NetworkConnectIP4
| in(RemoteAddressIP4, values=["118.107.0.197", "204.194.48.250", "223.26.63.40", "27.50.54.191", "117.44.201.119"])
| table([ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort, Protocol, aid], limit=max)
Q8 · svchost.exe egressing on the dual-RAT C2 ports
CONF HIGHFP LOWCOST MED

Looks for: the infrastructure-independent form of the C2 detection. Both implants live inside injected svchost.exe processes and both use fixed, non-standard ports — 6666 for the Gh0st derivative, 6351 for the AsyncRAT loader. svchost.exe has no legitimate reason to reach either port. This query keeps working after every domain and IP in this pack is burned.

// HUNT: svchost.exe outbound on TCP 6666 / 6351 (Gh0st + AsyncRAT C2 ports)
// MITRE: T1571, T1095, T1041
// CONF: high | FP: low | COST: medium
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: rare; legacy IRC-era or game tooling occasionally uses 6666
// TUNING: drop RFC1918 destinations first, then baseline remaining externals by aid
// TUNING: if RemotePort is unpopulated in your tenant, swap in RemotePort_decimal (gate G4)
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^svchost(\.exe)?$/i
| in(RemotePort, values=["6666", "6351"])
| !cidr(RemoteAddressIP4, subnet=["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.0/8"])
| groupBy([ComputerName, RemoteAddressIP4, RemotePort], function=count(as=Connections), limit=500)
| sort(Connections, order=desc, limit=100)
Q9 · svchost.exe created by an unexpected parent (session-aware injection)
CONF MEDFP MEDCOST MED

Looks for: stage 5 spawning suspended svchost.exe processes under duplicated, session-reassigned tokens. On a healthy Windows host essentially every svchost.exe is a child of services.exe. FP: some EDR, backup and imaging agents legitimately spawn svchost — baseline the surviving parent list before alerting.

// HUNT: svchost.exe spawned by a parent other than services.exe
// MITRE: T1055.002, T1134.002
// CONF: medium | FP: medium | COST: medium
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: EDR / backup / imaging agents and some installers spawn svchost
// TUNING: baseline ParentBaseFileName over 30d, then add survivors to the negated list
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^svchost(\.exe)?$/i
| ParentBaseFileName!=/^(services|svchost|MsMpEng)(\.exe)?$/i
| groupBy([ComputerName, ParentBaseFileName, UserName], function=count(as=Spawns), limit=500)
| sort(Spawns, order=desc, limit=100)
Q10 · Any process executing from the Windows Media Player directory
CONF HIGHFP LOWCOST LOW

Looks for: the execution counterpart to Q3 — the staged Mixed Reality.exe running from the staging directory when MixedSvc starts. Negating the genuine WMP binaries leaves only intruders.

Benign baseline for triage: the only executables that legitimately live in C:\Program Files\Windows Media Player\ are wmplayer.exe, setup_wm.exe, wmpshare.exe, wmpnscfg.exe and wmpnetwk.exe, all Microsoft-signed and all negated above. Note that the real Mixed Reality Portal binary, MixedRealityPortal.exe, lives under System32 — not here, so it is not part of this query's baseline and is not an indicator; a hit named Mixed Reality.exe (with a space) in this directory is the campaign, not Microsoft.

// HUNT: execution from C:\Program Files\Windows Media Player (excluding real WMP binaries)
// MITRE: T1036.005, T1543.003
// CONF: high | FP: low | COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: very low — only wmplayer.exe and setup_wm.exe legitimately live here
// TUNING: none expected; investigate every hit
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ImageFileName=/\\Windows Media Player\\/i
| FileName!=/^(wmplayer|setup_wm|wmpshare|wmpnscfg|wmpnetwk)(\.exe)?$/i
| table([ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, CommandLine, SHA256HashData], limit=200)
Q11 · ITR utility re-launching itself elevated (runas UAC pattern)
CONF MEDFP LOWCOST LOW

Looks for: the stage-2 privilege check — the binary re-launches itself with the runas verb, producing a parent/child pair with the same image name where the child is elevated. Comparing the reported IntegrityLevel between the two rows confirms the escalation.

// HUNT: ITR utility spawning a same-named elevated child (runas UAC relaunch)
// MITRE: T1548.002
// CONF: medium | FP: low | COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: installers that legitimately self-elevate on first run
// TUNING: compare IntegrityLevel across the parent and child rows to confirm elevation
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| ParentBaseFileName=/^(COU_ITR-1_to_4_AY2026-27|Mixed Reality)(\.exe)?$/i
| table([ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, IntegrityLevel, CommandLine], limit=200)
Q12 · Published payload hash sweep
CONF HIGHFP LOWCOST LOW

Looks for: any of the 43 published SHA256 values across process and file telemetry — the 10 samples reverse-engineered by Cyderes plus the 33 further samples published with the original Seqrite DragonReturn report. Note: 93dd8b7b… is the legitimate signed ITR utility — a hit on that hash alone is not compromise. Correlate against Q3 or Q10 before escalating.

// HUNT: Operation DragonReturn published SHA256 sweep (43 samples, both vendor clusters)
// MITRE: T1204.002, T1574.002
// CONF: high | FP: low | COST: low
// REQUIRES: ProcessRollup2, PeFileWritten
// FALSE POSITIVES: 93dd8b7b... is the LEGITIMATE signed utility — corroborate before escalating
// TUNING: none; treat every non-93dd8b7b hit as a confirmed compromise
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten)$/
| in(SHA256HashData, values=[
    "52c19cfdc25bd1c1be3386493d60ded19e2fe35e053d81dda2b212d8dde84330",
    "93dd8b7b393289f88493596faa4ae70054d9eb4fe47f2dd334f0c6bb5262f2a8",
    "2c0de3d5432d5a14cb03936a460ceb633b53a51881c4fa4f3dfa87fedef2148e",
    "60ad81d75bd59e12b43392f7abf95bcb66a6e27091a46f9bf5cca51a6c01853f",
    "3dd5148cf3cfc7fe2196d066ef39d8f03d07022dd5e917227164abc8d6c6d1ed",
    "030b90666a581934de0683ef9232f137867db804f6100c0479958826dc2e4cbb",
    "7ee61469f1c171d1631a72720ecaa0516598b4671e320287674f5d6817a9fb92",
    "fd062b4096f22c47bf6124a5b58322940ff676cb8d8fccd40af4d110f93dc2fa",
    "fb520caa54b7e498708a6ebd0029c2492134c87c85324a3301ab450caa19e112",
    "a1521585d54fe29675f906b538d86a6d3b5804db637b714ab1fbf6fb01d0a6f1",
    "03d2b73ecde0575a1e5ea24d6e4f12987cc081c0bc22dadf8c4219e8e38ca6e0",
    "133e4d3f1dcd99a35fec92ad13bafa3790b6d585f8ec46527fe0ae01da98ad22",
    "1787d1119cd3b40e0e5f19d62821958b7d5c2bbe0518bf1e3fb2e44fdeb4fa58",
    "19ca5fe04ca45a18c5bad9658ff73a8f39fe20ced78f690595f1b4c5a90af324",
    "2f2f8f92af86fb962c30c4c1c9d673f9d94886373d0fcf78f8d105c051ffc643",
    "2f72f4b71e33c80f122dbe5360a8d687577260567d4b59cf8c07ee2182e8ceba",
    "34d1231a3bf1e13a9b90daecb5c74d52aea94ca54427b203d77e1adc61a5c4f9",
    "40593369e14c9ab7b5e2fd186a580dbcd790ebb902f3aedc12c92cd617302960",
    "4a040770fd81d0db9e04cb8dbd2e07e61969072962bb4e736b7c7001444cc2fa",
    "589aa1f7252cae74538343cd35443c0a8f58ed280f2016918b6e539a0c09529a",
    "590a75978ab33a97280be1e2ae62a2e416ada45a11bc3f1cb77c99f3eb542b4e",
    "5a00485968679dc0ed6d80b659f48287603864c223e952918d2c2aaddfa2d280",
    "5e97f7c17bf0466355be0438c7cc3e2e4d125e31368f2fbcb8e1d79cb97f137a",
    "6751ad8d0aeb6ac67cd54ea42657ce1f16addc3e3111f9e60b11931ebf58e77d",
    "696f6a1a0fbf7b4ff977cc36382f6d2bc6d7813ed84b0195d925d1f46c24568c",
    "6c774188a54ae07ae896abdf1ea6695cc29f529388888665e05322af3e9178e1",
    "6c9ae8a979ad18da2927ae4fdbd73d3c870ead4ea3d437656a3bdcc81b85a050",
    "7e142c8fa614cc39d0453aa648b12209821c6bcbb77ee02094f70161b40d50ae",
    "8673ce317876e6c3fe868c98524a3b2ae86a79b737536b865f044a52d16a7193",
    "879cfe23a96e822f3873fd90a37d548d7975ba0552ce28527d3d1e292000c59b",
    "8ed95259300ca268279867d2999d9c4f6585c6c45308635fc39af87da27546b5",
    "9e73cd733707e5f7c9091147b029a6974b985d6c90a9cc2cb47bc0ae8a0f9245",
    "a8614dfad5fd2a79302a7c4829a0fed6f3a0a46b11beb28f89531cdfa83d32b3",
    "b0fcd7d9396e70b89e8292f6b80f933607b6fc9a9d3d4dd4ca69b408a2625932",
    "b4fb231356254426e340ab1dba50fa37a69859fc4e8a2dbdfc3e1db082006847",
    "c6651d6ce31c3a00357e579981d48c0da942b5bbe1582bf3d612a07dc3bc0ff6",
    "c6fc06db6a1318152c09200352b40c8fa794f1089988835c1df92174347be8ec",
    "db946f3f2b409370d14a6e69cf029f2818985f19320fa09b63bd3268dc830b02",
    "e6346e3087db2bfba4551fcf89d94ae49aa92dc22f0ec2b718187a96e3a3b83c",
    "ec5d4103b3d97885e9575ad045b2ef5467bf9fccf71828e418e6488d78983146",
    "eccff5c026a01cbe91db45cd0289f8822985aa5183f096d8add69762696d100d",
    "fc17d5b4d64cb61a5aa8fb6bbe1e94885f129b2bf8ee91bca1ccca2b537f6616",
    "fdd9752f4bb03762828e2e2bb6ec26c5f05a664dc28e02457685ddb3650d3e95"])
| table([ComputerName, UserName, FileName, ImageFileName, TargetFileName, SHA256HashData, CommandLine], limit=max)
09

CrowdStrike Custom IOA Recommendations

Three queries are strong enough to promote from hunt to Custom IOA. The rest stay Investigate-only.

FromIOA ruleTypeActionSeverityRationale
Q3PE file written under \Windows Media Player\File CreationDetect → Block after 14d baselineCriticalZero legitimate writers. Catches the campaign at staging, before persistence or any C2.
Q10Process executing from \Windows Media Player\ excluding wmplayer.exe / setup_wm.exeProcess CreationDetectCriticalCatches the persisted service host on every boot even if the file-write event was missed.
Q8svchost.exe network connection to a non-RFC1918 address on TCP 6666 or 6351Network ConnectionDetectHighInfrastructure-independent; survives full domain and IP rotation.
Investigate-only   Q1, Q2, Q4, Q5, Q6, Q7, Q9, Q11, Q12 — either FP-medium (Q1, Q5, Q9, Q11) or better served by IOC Management import than by an IOA (Q6, Q7, Q12).

Alert package — IOA-1 (from Q3)

Scheduled Search name: DETECT — PE Written to Windows Media Player Dir (Operation DragonReturn)

Description: Fires when any executable or DLL is written into C:\Program Files\Windows Media Player\. This is the staging directory used by the fake Indian ITR notice dual-RAT campaign; Windows Media Player is a frozen component with no legitimate writers.

Email subject: [CRITICAL] Detection: Operation DragonReturn — PE staged in Windows Media Player directory

Email body: A PE file was written into the Windows Media Player program directory on <ComputerName> by <ContextBaseFileName>. This directory is the documented staging path for a China-nexus-suspected campaign that side-loads a malicious DLL through a signed Indian tax utility and deploys two remote-access implants into svchost.exe across every logged-in session. Treat as an active intrusion until disproven. Isolate the host via Falcon RTR network containment before further triage — the campaign's stage 5 re-injects continuously and reaches every user session.

Triage checklist

  1. Contain the host in Falcon (network containment) before any on-host action — both implants re-inject on a loop.
  2. Record the writing process (ContextBaseFileName) and the written filename. Mixed Reality.exe or nvdaHelperRemote.dll confirms this campaign.
  3. Run Q4 scoped to the host to confirm or exclude the MixedSvc service registration.
  4. Run native hunt 1 (section 7) for c:\kkooPPP, c:\ouewo, c:\kkqqexit, c:\debug.txt — these tell you which implant(s) landed.
  5. Check for C:\Windows\background.jpg and preserve it — it is the polyglot payload container and the single most useful forensic artifact.
  6. Run Q8 and Q6 scoped to the host over full retention to establish whether C2 was reached and when.
  7. Run Q9 to enumerate injected svchost.exe instances and identify which user sessions were reached.
  8. Identify the delivery vector: Q5 for the ZIP write, then Q6 for the lure domain, then pull the browser history for the /incometax URL.
  9. If C2 was reached, treat every credential used on the host — and every credential visible in a screen capture — as compromised.

Pivot queries

// Host-scoped: full campaign artifact sweep for one endpoint
#event_simpleName=/^(ProcessRollup2|PeFileWritten|NewExecutableWritten|DnsRequest|NetworkConnectIP4)$/
| ComputerName=/^REPLACE_WITH_HOSTNAME$/i
| TargetFileName=/Windows Media Player|nvdaHelperRemote|background\.jpg/i
  or ImageFileName=/Windows Media Player/i
  or DomainName=/kkxqbh\.top|ouewop\.com|ikkkkddd\.com/i
| table([ComputerName, UserName, FileName, ImageFileName, TargetFileName, DomainName, RemoteAddressIP4])

// Environment-wide: which sessions did stage 5 reach?
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^svchost(\.exe)?$/i
| ParentBaseFileName!=/^(services|svchost|MsMpEng)(\.exe)?$/i
| groupBy([ComputerName, UserName, UserSid], function=count(as=Instances), limit=500)
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,52c19cfdc25bd1c1be3386493d60ded19e2fe35e053d81dda2b212d8dde84330,prevent,critical,2027-01-19,Delivery ZIP Common_Offline_Utility ITR-1 to 4 AY2026-27,campaign:DragonReturn
sha256,93dd8b7b393289f88493596faa4ae70054d9eb4fe47f2dd334f0c6bb5262f2a8,detect,low,2027-01-19,LEGITIMATE signed ITR utility abused for side-loading - DO NOT BLOCK,campaign:DragonReturn
sha256,2c0de3d5432d5a14cb03936a460ceb633b53a51881c4fa4f3dfa87fedef2148e,prevent,critical,2027-01-19,nvdaHelperRemote.dll stage 1 side-loaded DLL,campaign:DragonReturn
sha256,60ad81d75bd59e12b43392f7abf95bcb66a6e27091a46f9bf5cca51a6c01853f,prevent,critical,2027-01-19,Stage 2 downloader and service installer,campaign:DragonReturn
sha256,3dd5148cf3cfc7fe2196d066ef39d8f03d07022dd5e917227164abc8d6c6d1ed,prevent,critical,2027-01-19,nvdaHelperRemote.dll stage 3 dropped loader,campaign:DragonReturn
sha256,030b90666a581934de0683ef9232f137867db804f6100c0479958826dc2e4cbb,prevent,critical,2027-01-19,Stage 4 injector,campaign:DragonReturn
sha256,7ee61469f1c171d1631a72720ecaa0516598b4671e320287674f5d6817a9fb92,prevent,critical,2027-01-19,Stage 5 session-aware injector,campaign:DragonReturn
sha256,fd062b4096f22c47bf6124a5b58322940ff676cb8d8fccd40af4d110f93dc2fa,prevent,critical,2027-01-19,background.jpg polyglot payload container,campaign:DragonReturn
sha256,fb520caa54b7e498708a6ebd0029c2492134c87c85324a3301ab450caa19e112,prevent,critical,2027-01-19,Decrypted .NET AsyncRAT Quasar family assembly stage 6B,campaign:DragonReturn
sha256,a1521585d54fe29675f906b538d86a6d3b5804db637b714ab1fbf6fb01d0a6f1,prevent,critical,2027-01-19,Injected PE-1 Gh0st RAT derivative stage 6A,campaign:DragonReturn
sha256,03d2b73ecde0575a1e5ea24d6e4f12987cc081c0bc22dadf8c4219e8e38ca6e0,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,133e4d3f1dcd99a35fec92ad13bafa3790b6d585f8ec46527fe0ae01da98ad22,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,1787d1119cd3b40e0e5f19d62821958b7d5c2bbe0518bf1e3fb2e44fdeb4fa58,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,19ca5fe04ca45a18c5bad9658ff73a8f39fe20ced78f690595f1b4c5a90af324,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,2f2f8f92af86fb962c30c4c1c9d673f9d94886373d0fcf78f8d105c051ffc643,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,2f72f4b71e33c80f122dbe5360a8d687577260567d4b59cf8c07ee2182e8ceba,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,34d1231a3bf1e13a9b90daecb5c74d52aea94ca54427b203d77e1adc61a5c4f9,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,40593369e14c9ab7b5e2fd186a580dbcd790ebb902f3aedc12c92cd617302960,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,4a040770fd81d0db9e04cb8dbd2e07e61969072962bb4e736b7c7001444cc2fa,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,589aa1f7252cae74538343cd35443c0a8f58ed280f2016918b6e539a0c09529a,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,590a75978ab33a97280be1e2ae62a2e416ada45a11bc3f1cb77c99f3eb542b4e,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,5a00485968679dc0ed6d80b659f48287603864c223e952918d2c2aaddfa2d280,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,5e97f7c17bf0466355be0438c7cc3e2e4d125e31368f2fbcb8e1d79cb97f137a,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,6751ad8d0aeb6ac67cd54ea42657ce1f16addc3e3111f9e60b11931ebf58e77d,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,696f6a1a0fbf7b4ff977cc36382f6d2bc6d7813ed84b0195d925d1f46c24568c,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,6c774188a54ae07ae896abdf1ea6695cc29f529388888665e05322af3e9178e1,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,6c9ae8a979ad18da2927ae4fdbd73d3c870ead4ea3d437656a3bdcc81b85a050,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,7e142c8fa614cc39d0453aa648b12209821c6bcbb77ee02094f70161b40d50ae,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,8673ce317876e6c3fe868c98524a3b2ae86a79b737536b865f044a52d16a7193,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,879cfe23a96e822f3873fd90a37d548d7975ba0552ce28527d3d1e292000c59b,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,8ed95259300ca268279867d2999d9c4f6585c6c45308635fc39af87da27546b5,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,9e73cd733707e5f7c9091147b029a6974b985d6c90a9cc2cb47bc0ae8a0f9245,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,a8614dfad5fd2a79302a7c4829a0fed6f3a0a46b11beb28f89531cdfa83d32b3,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,b0fcd7d9396e70b89e8292f6b80f933607b6fc9a9d3d4dd4ca69b408a2625932,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,b4fb231356254426e340ab1dba50fa37a69859fc4e8a2dbdfc3e1db082006847,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,c6651d6ce31c3a00357e579981d48c0da942b5bbe1582bf3d612a07dc3bc0ff6,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,c6fc06db6a1318152c09200352b40c8fa794f1089988835c1df92174347be8ec,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,db946f3f2b409370d14a6e69cf029f2818985f19320fa09b63bd3268dc830b02,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,e6346e3087db2bfba4551fcf89d94ae49aa92dc22f0ec2b718187a96e3a3b83c,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,ec5d4103b3d97885e9575ad045b2ef5467bf9fccf71828e418e6488d78983146,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,eccff5c026a01cbe91db45cd0289f8822985aa5183f096d8add69762696d100d,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,fc17d5b4d64cb61a5aa8fb6bbe1e94885f129b2bf8ee91bca1ccca2b537f6616,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
sha256,fdd9752f4bb03762828e2e2bb6ec26c5f05a664dc28e02457685ddb3650d3e95,detect,high,2027-01-19,DragonReturn sample set published with the original Seqrite report,campaign:DragonReturn
domain,kkxqbh.top,detect,high,2026-10-19,Gh0st RAT derivative C2 on port 6666 - in both vendor clusters,campaign:DragonReturn
domain,ouewop.com,detect,high,2026-10-19,AsyncRAT Quasar family C2 on port 6351,campaign:DragonReturn
domain,ikkkkddd.com,detect,high,2026-10-19,Additional C2 reported in the Seqrite cluster - LETTER i,campaign:DragonReturn
domain,1kkkkddd.com,detect,high,2026-10-19,Associated C2 infrastructure Seqrite cluster - DIGIT ONE - separate registration from ikkkkddd.com not a typo,campaign:DragonReturn
domain,simaqz.com,detect,high,2026-10-19,Associated C2 infrastructure Seqrite cluster,campaign:DragonReturn
domain,jiayingjing.com,detect,high,2026-10-19,Associated C2 infrastructure Seqrite cluster,campaign:DragonReturn
domain,govtop.one,detect,high,2026-10-19,Lure hosting on the /incometax path - Seqrite cluster,campaign:DragonReturn
domain,import.mom,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
domain,tqhaq.rest,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
domain,tqkat.rest,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
domain,generate.lat,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
domain,meoou.rest,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
domain,kattp.homes,detect,high,2026-10-19,Lure hosting on the /incometax path,campaign:DragonReturn
ipv4,118.107.0.197,detect,high,2026-10-19,Polyglot hosting server - appears in both vendor clusters,campaign:DragonReturn
ipv4,204.194.48.250,detect,high,2026-10-19,Polyglot hosting server - Seqrite cluster,campaign:DragonReturn
ipv4,223.26.63.40,detect,high,2026-10-19,DCRat C2 with exposed Chinese-language panel on port 2671,campaign:DragonReturn
ipv4,27.50.54.191,detect,high,2026-10-19,Campaign infrastructure - Seqrite cluster,campaign:DragonReturn
ipv4,117.44.201.119,detect,medium,2026-10-19,kkxqbh.top resolution in ChinaNet AS4134 Nanchang,campaign:DragonReturn
url,http://118.107.0.197/ouewo.jpg,detect,high,2026-10-19,Polyglot payload download URL,campaign:DragonReturn
url,govtop.one/incometax,detect,high,2026-10-19,Lure landing page path,campaign:DragonReturn
md5,REPLACE_WITH_MD5_IF_YOUR_TOOLING_REQUIRES_IT,detect,high,2026-10-19,No cited source publishes MD5 - do not infer or compute,campaign:DragonReturn
sha1,REPLACE_WITH_SHA1_IF_YOUR_TOOLING_REQUIRES_IT,detect,high,2026-10-19,No cited source publishes SHA1 - do not infer or compute,campaign:DragonReturn
Behavioural Signaturesnot importable — hunt these
# Operation DragonReturn behavioural signatures (no atomic IOC form)
# aka fake Indian ITR notice / DcRAT dual-RAT campaign
# Staging and persistence
Any PE written into C:\Program Files\Windows Media Player\
Staged host binary named "Mixed Reality.exe"
Auto-start service key name: MixedSvc
Service display name: Windows Mixed Reality Service
Polyglot container at C:\Windows\background.jpg (embedded payloads at 0x1587D, 0x52C04, 0x165A04)

# Host artifacts (extension-less - no Falcon FileWritten event fires)
c:\kkooPPP     lock file, Gh0st RAT derivative (stage 6A)
c:\ouewo       lock file, AsyncRAT .NET loader (stage 6B)
c:\kkqqexit    kill file, shutdown signal to the injector
c:\debug.txt   hidden + system debug log holding the client PID

# Named kernel objects (live host only - lost on reboot)
Global\kkctsbnn            single-instance guard, stages 2 and 5
Global\ShitSetupOn26126k   setup-phase guard, stage 2
5sGEm6Q4eTNv               AsyncRAT mutex

# Injection and evasion behaviour
svchost.exe created by a parent other than services.exe
CreateRemoteThread / NtCreateThreadEx targeting svchost.exe from a non-system process
Suspended svchost.exe spawned per terminal session under a re-assigned token
VirtualProtect against amsi.dll AmsiOpenSession immediately before CLR load
Native (non-.NET) process loading clrjit.dll with no registered .NET service

# Benign baseline - NOT indicators, never block these
MixedRealityPortal.exe   genuine Microsoft Mixed Reality Portal, lives under System32.
                         One word, no space, Microsoft-signed. It is the LEGITIMATE
                         name the campaign's "Mixed Reality.exe" (with a space, under
                         Windows Media Player) is masquerading against. Use it to tell
                         the two apart during triage - do NOT add it to a blocklist.
wmplayer.exe, setup_wm.exe, wmpshare.exe, wmpnscfg.exe, wmpnetwk.exe
                         the only executables that legitimately live in the Windows
                         Media Player directory. Anything else there is the campaign.

# Reverse-engineering aids (NOT hashes - do not import)
AES-128 key for the stage 6B .NET assembly: 3343f6a8885a308da11ae0d18cd4a7f5
Quasar default PBKDF2 salt: BFEB1E56FBCD973BB219022430A57843003D5644D21E62B9D4F180E7E6C33941
AsyncRAT config version string: Reach 2.0.1
AMSI patch: two bytes at AmsiOpenSession+0x1C overwritten with 0xFEEB
XOR keys for stage 4 API string decoding: 0x18 (most), 0x02 (one)
Network block listproxy / firewall / DNS sinkhole
# NOTE: ikkkkddd.com starts with the LETTER i; 1kkkkddd.com starts with the DIGIT ONE.
# Both are real, separately registered domains. Do not merge or "correct" them.
kkxqbh.top
ouewop.com
ikkkkddd.com
1kkkkddd.com
simaqz.com
jiayingjing.com
govtop.one
import.mom
tqhaq.rest
tqkat.rest
generate.lat
meoou.rest
kattp.homes
118.107.0.197
204.194.48.250
223.26.63.40
27.50.54.191
117.44.201.119
STIX-style JSONTIP ingestion
{
  "campaign": "Operation DragonReturn",
  "aliases": [
    "Fake Indian ITR Notice - Dual RAT Deployment",
    "Fake Indian Tax Filing Utility / DcRAT campaign",
    "The Tax Trap"
  ],
  "alias_note": "Seqrite named it Operation DragonReturn; Cyderes and The Hacker News reported the same activity under the ITR-notice / DcRAT names. One campaign - match on TTPs (COU_ITR lure, nvdaHelperRemote.dll side-load, kkxqbh.top, 118.107.0.197), not on vendor name.",
  "attribution": {
    "assessment": "SUSPECTED China-nexus",
    "confidence": "medium-to-high (Seqrite)",
    "overlaps": ["Silver Fox"],
    "basis": [
      "Chinese-language strings in campaign infrastructure",
      "Chinese-language DCRat web panel on 223.26.63.40",
      "kkxqbh.top resolving into ChinaNet AS4134 Nanchang Jiangxi",
      "infrastructure and TTP overlap with prior tax-themed ValleyRAT activity"
    ],
    "caveat": "NOT CONFIRMED - hosting geography alone is not attribution"
  },
  "first_observed": "2026-05-18",
  "implants": [
    { "family": "Gh0st RAT derivative", "stage": "6A", "c2": "kkxqbh.top", "port": 6666 },
    { "family": "AsyncRAT / Quasar family", "stage": "6B", "c2": "ouewop.com", "port": 6351 }
  ],
  "delivery": {
    "archive": "Common_Offline_Utility_ITR-1_to_4_AY2026-27.zip",
    "signed_host": "COU_ITR-1_to_4_AY2026-27.exe",
    "sideloaded_dll": "nvdaHelperRemote.dll",
    "lure_path": "/incometax"
  },
  "persistence": { "service_name": "MixedSvc", "display_name": "Windows Mixed Reality Service" },
  "sha256": [
    "52c19cfdc25bd1c1be3386493d60ded19e2fe35e053d81dda2b212d8dde84330",
    "93dd8b7b393289f88493596faa4ae70054d9eb4fe47f2dd334f0c6bb5262f2a8",
    "2c0de3d5432d5a14cb03936a460ceb633b53a51881c4fa4f3dfa87fedef2148e",
    "60ad81d75bd59e12b43392f7abf95bcb66a6e27091a46f9bf5cca51a6c01853f",
    "3dd5148cf3cfc7fe2196d066ef39d8f03d07022dd5e917227164abc8d6c6d1ed",
    "030b90666a581934de0683ef9232f137867db804f6100c0479958826dc2e4cbb",
    "7ee61469f1c171d1631a72720ecaa0516598b4671e320287674f5d6817a9fb92",
    "fd062b4096f22c47bf6124a5b58322940ff676cb8d8fccd40af4d110f93dc2fa",
    "fb520caa54b7e498708a6ebd0029c2492134c87c85324a3301ab450caa19e112",
    "a1521585d54fe29675f906b538d86a6d3b5804db637b714ab1fbf6fb01d0a6f1",
    "03d2b73ecde0575a1e5ea24d6e4f12987cc081c0bc22dadf8c4219e8e38ca6e0",
    "133e4d3f1dcd99a35fec92ad13bafa3790b6d585f8ec46527fe0ae01da98ad22",
    "1787d1119cd3b40e0e5f19d62821958b7d5c2bbe0518bf1e3fb2e44fdeb4fa58",
    "19ca5fe04ca45a18c5bad9658ff73a8f39fe20ced78f690595f1b4c5a90af324",
    "2f2f8f92af86fb962c30c4c1c9d673f9d94886373d0fcf78f8d105c051ffc643",
    "2f72f4b71e33c80f122dbe5360a8d687577260567d4b59cf8c07ee2182e8ceba",
    "34d1231a3bf1e13a9b90daecb5c74d52aea94ca54427b203d77e1adc61a5c4f9",
    "40593369e14c9ab7b5e2fd186a580dbcd790ebb902f3aedc12c92cd617302960",
    "4a040770fd81d0db9e04cb8dbd2e07e61969072962bb4e736b7c7001444cc2fa",
    "589aa1f7252cae74538343cd35443c0a8f58ed280f2016918b6e539a0c09529a",
    "590a75978ab33a97280be1e2ae62a2e416ada45a11bc3f1cb77c99f3eb542b4e",
    "5a00485968679dc0ed6d80b659f48287603864c223e952918d2c2aaddfa2d280",
    "5e97f7c17bf0466355be0438c7cc3e2e4d125e31368f2fbcb8e1d79cb97f137a",
    "6751ad8d0aeb6ac67cd54ea42657ce1f16addc3e3111f9e60b11931ebf58e77d",
    "696f6a1a0fbf7b4ff977cc36382f6d2bc6d7813ed84b0195d925d1f46c24568c",
    "6c774188a54ae07ae896abdf1ea6695cc29f529388888665e05322af3e9178e1",
    "6c9ae8a979ad18da2927ae4fdbd73d3c870ead4ea3d437656a3bdcc81b85a050",
    "7e142c8fa614cc39d0453aa648b12209821c6bcbb77ee02094f70161b40d50ae",
    "8673ce317876e6c3fe868c98524a3b2ae86a79b737536b865f044a52d16a7193",
    "879cfe23a96e822f3873fd90a37d548d7975ba0552ce28527d3d1e292000c59b",
    "8ed95259300ca268279867d2999d9c4f6585c6c45308635fc39af87da27546b5",
    "9e73cd733707e5f7c9091147b029a6974b985d6c90a9cc2cb47bc0ae8a0f9245",
    "a8614dfad5fd2a79302a7c4829a0fed6f3a0a46b11beb28f89531cdfa83d32b3",
    "b0fcd7d9396e70b89e8292f6b80f933607b6fc9a9d3d4dd4ca69b408a2625932",
    "b4fb231356254426e340ab1dba50fa37a69859fc4e8a2dbdfc3e1db082006847",
    "c6651d6ce31c3a00357e579981d48c0da942b5bbe1582bf3d612a07dc3bc0ff6",
    "c6fc06db6a1318152c09200352b40c8fa794f1089988835c1df92174347be8ec",
    "db946f3f2b409370d14a6e69cf029f2818985f19320fa09b63bd3268dc830b02",
    "e6346e3087db2bfba4551fcf89d94ae49aa92dc22f0ec2b718187a96e3a3b83c",
    "ec5d4103b3d97885e9575ad045b2ef5467bf9fccf71828e418e6488d78983146",
    "eccff5c026a01cbe91db45cd0289f8822985aa5183f096d8add69762696d100d",
    "fc17d5b4d64cb61a5aa8fb6bbe1e94885f129b2bf8ee91bca1ccca2b537f6616",
    "fdd9752f4bb03762828e2e2bb6ec26c5f05a664dc28e02457685ddb3650d3e95"
  ],
  "note_on_93dd8b7b": "legitimate digitally signed Income Tax Department utility - detect only, never block"
}
11

Detection Validation Gates

Run these before treating a zero-hit result as clean. A query that returns nothing because the telemetry is absent looks identical to a query that returns nothing because the environment is healthy.

#GateHow to prove itIf it fails
G1PE file-write telemetry is flowing#event_simpleName=PeFileWritten | groupBy([ComputerName], function=count(as=Writes), limit=200) should return most of your fleet over 24hQ2, Q3, Q5, Q12 are unreliable. Check sensor policy for file-write visibility.
G2Registry telemetry covers service keys#event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate)$/ | RegObjectName=/CurrentControlSet\\Services\\/i | head(20) should return rowsQ4 is blind. Fall back to native hunt 5 (Event ID 7045).
G3DNS telemetry is present#event_simpleName=DnsRequest | groupBy([ComputerName], function=count(as=Lookups), limit=200)Q6 is blind. Pivot to Q7 (IP) and proxy logs.
G4RemotePort is populated on network events#event_simpleName=NetworkConnectIP4 | RemotePort=* | head(20)Q8 silently returns nothing. Use RemotePort_decimal instead.
G5svchost parent attribution is saneRun Q9 without the campaign framing and confirm services.exe dominates the baselineQ9 is uninterpretable until the parent baseline is understood.
G6Q3 has a believable zeroConfirm G1 passes and that C:\Program Files\Windows Media Player\ exists on sampled hostsA zero on hosts without WMP installed is meaningless, not clean.
G7The pack's IOCs actually importedAfter importing the section-10 CSV, confirm 65 indicators landed and that 93dd8b7b… is detect, not preventBlocking the legitimate signed utility will break genuine ITR filing.
12

Hardening — Tiered & Deployable

The whole chain rests on two user-granted privileges: the ability to run a downloaded executable, and the ability to approve a UAC elevation. Remove either and the campaign stops at stage 2.

Immediate — deploy this week
  • Remove local administrator rights from standard users. (MITRE M1026 Privileged Account Management; CIS Controls v8 5.4; MS Security Baseline) Stage 2 explicitly checks Administrators-group membership and aborts if it cannot elevate. A non-admin user faces a UAC credential prompt they cannot satisfy, so the chain never reaches persistence, the polyglot download, or either implant. This is the single highest-leverage control in the pack.
  • Set UAC to always prompt for credentials on the secure desktop. (M1052 User Account Control; CIS Microsoft Windows Benchmark — "User Account Control: Behavior of the elevation prompt for standard users" = "Prompt for credentials on the secure desktop") Turns the campaign's one-click consent step into a credential challenge.
  • Block the published infrastructure at DNS, proxy and firewall. (M1037 Filter Network Traffic) Use the network block list in section 10. Pair it with an egress rule denying outbound TCP 6666 and 6351 — that rule outlives every domain in this pack.
  • Import the section-10 CSV into Falcon IOC Management, honouring the detect-only setting on 93dd8b7b…. (M1040 Behavior Prevention on Endpoint)
  • Block executable content originating from archives in the mail and browser download path. (M1040; Microsoft ASR "Block executable content from email client and webmail") The delivery vehicle is a ZIP containing an EXE plus a DLL — a shape worth blocking outright for standard users.
Near term — 1 to 4 weeks, pilot on a ring first
  • Application control (WDAC or AppLocker) in audit-then-enforce mode, denying execution from %USERPROFILE%\Downloads, %TEMP% and archive-extraction paths. (M1038 Execution Prevention; CIS Benchmark; Microsoft WDAC guidance) This kills stage 1 outright, before the side-load. Audit for two weeks and mine the logs before enforcing.
  • Enable the ASR rules that target this exact shape. (M1040) "Block executable content from email client and webmail", "Block executable files from running unless they meet a prevalence, age, or trusted list criterion", and "Block process creations originating from PSExec and WMI commands". The prevalence rule is particularly effective against a freshly-built loader DLL.
  • Deny write access to C:\Program Files\Windows Media Player\ beyond TrustedInstaller. (M1022 Restrict File and Directory Permissions) WMP is frozen; nothing legitimate needs to write there. This directly blocks stage 2's staging step. Verify no in-house media tooling depends on the path first.
  • Enable Attack Surface Reduction / behaviour monitoring for AMSI tampering and alert on VirtualProtect against amsi.dll. (M1040) Stage 6B's AMSI patch is a well-defined, detectable primitive.
  • Enforce SmartScreen and Mark-of-the-Web propagation through archive extraction. (M1021 Restrict Web-Based Content) Ensures the extracted EXE still carries the zone identifier that triggers a SmartScreen warning.
Strategic — 1 to 3 months
  • Move to a fully managed software-installation model so no standard user ever needs to run a downloaded installer. (M1038; CIS Controls v8 2.5, 2.7) Removes the entire initial-access class, not just this campaign.
  • Default-deny egress with an authenticated proxy. (M1037) Both implants use raw TCP on fixed non-standard ports via a custom stack; a proxy-only egress model breaks them without needing any indicator.
  • Segment and harden multi-session hosts (RDS / Citrix). (M1030 Network Segmentation) Stage 5's session-aware injection makes one infection on a shared host a compromise of every concurrent user. Prioritise admin-rights removal and application control there first.
  • Run a targeted awareness campaign timed to Indian tax-filing season covering the fake "Microsoft Edge Secure Gateway" interstitial specifically. (M1017 User Training) ⚠ best-practice, no formal benchmark The fake Microsoft verification screen is the campaign's trust-transfer step and is unusually memorable in training.
  • Establish an authoritative-source policy for government utilities — tax software is obtained only from the official portal, never from a link in an email or notice. (M1017) ⚠ best-practice, no formal benchmark
13

Deployable Playbooks

Playbook 1 — Harden UAC elevation behaviour (blocks stage 2)

Applies the CIS-recommended elevation prompt settings. Deploy via GPO or the registry values directly. Test on a pilot ring: help-desk workflows that rely on standard users self-elevating will change.

$p = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'

# Standard users must supply admin credentials on the secure desktop (3 = prompt for credentials)
Set-ItemProperty -Path $p -Name 'ConsentPromptBehaviorUser'  -Value 3 -Type DWord

# Administrators must consent on the secure desktop for every elevation (2 = prompt for consent)
Set-ItemProperty -Path $p -Name 'ConsentPromptBehaviorAdmin' -Value 2 -Type DWord

# Force the secure desktop and keep UAC fully enabled
Set-ItemProperty -Path $p -Name 'PromptOnSecureDesktop'      -Value 1 -Type DWord
Set-ItemProperty -Path $p -Name 'EnableLUA'                  -Value 1 -Type DWord

# Verify
Get-ItemProperty -Path $p |
  Select-Object ConsentPromptBehaviorUser, ConsentPromptBehaviorAdmin, PromptOnSecureDesktop, EnableLUA

GPO equivalent: Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options → "User Account Control: …". Verify with: gpresult /h uac.html.

Playbook 2 — Lock down the Windows Media Player staging directory

Removes write access for everyone except TrustedInstaller, directly blocking stage 2's staging step. Confirm no in-house media tooling writes to this path before deploying fleet-wide.

$dir = 'C:\Program Files\Windows Media Player'

# Report current writable principals first - review before changing anything
(Get-Acl $dir).Access |
  Where-Object { $_.FileSystemRights -match 'Write|Modify|FullControl' -and $_.AccessControlType -eq 'Allow' } |
  Select-Object IdentityReference, FileSystemRights, IsInherited

# Deny write for Users and Authenticated Users
icacls $dir /deny "BUILTIN\Users:(OI)(CI)(W)"
icacls $dir /deny "NT AUTHORITY\Authenticated Users:(OI)(CI)(W)"

# Verify the deny ACEs landed
icacls $dir

Roll back with icacls "C:\Program Files\Windows Media Player" /remove:d "BUILTIN\Users" "NT AUTHORITY\Authenticated Users" if a legitimate dependency surfaces.

Playbook 3 — Enable the relevant ASR rules (audit first)

Deploy in AuditMode for two weeks, mine the ASR event log, then flip to Enabled.

# Block executable content from email client and webmail
Add-MpPreference -AttackSurfaceReductionRules_Ids BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 `
                 -AttackSurfaceReductionRules_Actions AuditMode

# Block executable files unless they meet a prevalence, age, or trusted-list criterion
Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 `
                 -AttackSurfaceReductionRules_Actions AuditMode

# Review what would have been blocked
Get-WinEvent -LogName 'Microsoft-Windows-Windows Defender/Operational' -MaxEvents 500 |
  Where-Object { $_.Id -in 1121,1122 } |
  Select-Object TimeCreated, Id, Message

# Verify current configuration
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids

Playbook 4 — Egress block for the dual-RAT C2 ports

Infrastructure-independent: survives every domain and IP rotation in this campaign.

New-NetFirewallRule -DisplayName 'Block outbound TCP 6666 (Gh0st RAT C2)' `
  -Direction Outbound -Action Block -Protocol TCP -RemotePort 6666 -Profile Any

New-NetFirewallRule -DisplayName 'Block outbound TCP 6351 (AsyncRAT C2)' `
  -Direction Outbound -Action Block -Protocol TCP -RemotePort 6351 -Profile Any

# Verify
Get-NetFirewallRule -DisplayName 'Block outbound TCP*' |
  Get-NetFirewallPortFilter | Select-Object Protocol, RemotePort

CQL spot-check after deployment — Q8 should return zero, and this should confirm the rule is doing the work rather than the malware being absent:

#event_simpleName=NetworkConnectIP4
| in(RemotePort, values=["6666", "6351"])
| groupBy([ComputerName, ContextBaseFileName, RemoteAddressIP4], function=count(as=Attempts), limit=200)

Playbook 5 — Persistence sweep for a suspect host

Read-only. Run via Falcon RTR on any host that hit Q3, Q4 or Q10 after network containment.

# 1. The persistence service
Get-CimInstance Win32_Service |
  Where-Object { $_.Name -eq 'MixedSvc' -or $_.PathName -like '*Windows Media Player*' } |
  Select-Object Name, DisplayName, PathName, StartMode, State

# 2. Staged binaries and the polyglot container
Get-ChildItem 'C:\Program Files\Windows Media Player\' -Force |
  Select-Object Name, Length, CreationTime
Get-Item C:\Windows\background.jpg -Force -ErrorAction SilentlyContinue |
  Select-Object FullName, Length, CreationTime

# 3. Root-level lock, kill and debug artifacts
Get-ChildItem -Path C:\ -Force -File |
  Where-Object { $_.Name -in @('kkooPPP','ouewo','kkqqexit','debug.txt') } |
  Select-Object Name, Length, CreationTime, Attributes

# 4. Service installation timestamp
Get-WinEvent -FilterHashtable @{ LogName='System'; Id=7045 } -MaxEvents 400 |
  Where-Object { $_.Message -match 'MixedSvc|Mixed Reality' } |
  Select-Object TimeCreated, Message

# 5. Injected svchost instances and the sessions they reached
Get-CimInstance Win32_Process -Filter "Name='svchost.exe'" |
  Select-Object ProcessId, ParentProcessId, SessionId, CommandLine
14

Containment Runbook

Phase 1 — Isolate (first 30 minutes)
  1. Network-contain the host in Falcon before touching it. Stage 5 re-injects on a loop across sessions; killing a single implant without containment just restarts the cycle.
  2. Block the section-10 domains and IPs at DNS, proxy and firewall, and add the outbound TCP 6666 / 6351 deny rules (playbook 4) fleet-wide, not just on the affected host.
  3. Run Q6, Q7 and Q8 environment-wide to find every other host that reached the same infrastructure. Assume the lure was sent to more than one recipient.
  4. On a multi-session host (RDS / Citrix), treat every concurrently logged-in user as affected, not just the one who ran the file.
Phase 2 — Scope and eradicate
  1. Preserve evidence before cleanup: capture C:\Windows\background.jpg (the polyglot container), c:\debug.txt, and a memory image if you have the capability. The unpacked implants exist only in memory — reboot destroys them.
  2. Run playbook 5 to enumerate persistence, then stop and delete the service: sc.exe stop MixedSvc followed by sc.exe delete MixedSvc.
  3. Remove the staged files: Mixed Reality.exe and nvdaHelperRemote.dll from the Windows Media Player directory, plus C:\Windows\background.jpg and the root-level lock and kill files.
  4. Reboot to clear the injected svchost.exe instances and the named kernel objects, then re-run playbook 5 to confirm nothing re-staged.
  5. Rebuild is the safer default. Six stages, three in-memory-only, an AMSI patch and injection into every user session mean you cannot prove full eradication from artifact removal alone. Clean only when a rebuild is genuinely impossible, and monitor that host closely afterwards.
Phase 3 — Recover and harden
  1. Reset credentials for every user who had a session on the host, not only the user who executed the file — session-aware injection reached all of them.
  2. Assume screen-capture exfiltration occurred. Review what was plausibly on screen: financial records, tax filings, client PII, credentials being typed, MFA prompts. Scope the disclosure assessment to that content.
  3. Revoke and reissue any certificate, API key or token that was accessible from the host or visible on screen.
  4. Deploy the immediate-tier hardening (section 12) fleet-wide — starting with local admin-rights removal, which alone stops this chain at stage 2.
  5. Add Q3, Q10 and Q8 as standing scheduled searches so a re-infection surfaces without a fresh hunt.
  6. Brief finance and tax staff on the specific lure, and confirm the authoritative-source policy for tax software.
15

Detection Coverage Map

Chain stageCoverageQueriesNotes
0 · Lure and ZIP deliveryGoodQ5, Q6Q5 is FP-medium by design — the real utility shares the filename.
1 · Signed EXE side-loads the DLLGoodQ1, Q2, Q12Falcon has no module-load event here, so coverage is via process execution plus the DLL file-write, not the load itself.
2 · UAC elevationPartialQ11The runas verb leaves no command-line marker; detection relies on the same-name parent/child pair.
2 · Staging and service persistenceStrongQ3, Q4, Q10Best coverage in the pack. Q3 is the run-first query.
2 · Polyglot retrievalGoodQ7Covered as an IP connection. The background.jpg write itself produces no *FileWritten event — it is not a PE.
3 · Reflective loading of stage 4GAPIn-memory only. No file, registry or process event. Detectable only by memory scanning.
4 · Injection into svchostPartialQ9CreateRemoteThread into an existing svchost produces no process-creation event; only the stage-5 spawned instances are visible.
5 · Session-aware injectionGoodQ9The suspended per-session svchost spawns do generate ProcessRollup2. Baseline parents first.
5 · Lock, kill and debug filesGAPExtension-less non-PE files; no Falcon file-write event fires. Covered by native hunt 1 only.
6A · Gh0st C2 and screen captureGoodQ6, Q7, Q8Q8 is the durable form. The capture pipeline itself is in-memory and invisible.
6B · AMSI patch and CLR hostingGAPIOA candidate: VirtualProtect on amsi.dll, and a native process loading clrjit.dll with no .NET service registration. Neither has a standard sensor event.
6B · AsyncRAT C2GoodQ6, Q7, Q8Mutex 5sGEm6Q4eTNv confirms on a live host but is not queryable.
Named kernel objectsGAPNo sensor event. Native hunt 4, live hosts only.

Reading the gaps: every gap sits in the in-memory half of the chain, which is exactly the design intent — the operator traded on-disk footprint away deliberately. The compensating control is that stage 2 must touch disk and the registry to persist, and both implants must reach the network. Q3, Q4, Q10 and Q8 bracket the in-memory stages on either side; a chain that evades all four is not this campaign.

16

Hunt Summary Ticket

TITLE:      Hunt — Operation DragonReturn (aka fake Indian ITR notice) dual-RAT
            via signed-binary DLL side-loading
SEVERITY:   High — active campaign, dual RAT, full remote control, published IOCs
SCOPE:      All Windows endpoints. Prioritise finance, tax and accounting staff, any
            India-facing business unit, and all multi-session hosts (RDS / Citrix),
            where one infection reaches every concurrently logged-in user.

ATTRIB:     SUSPECTED China-nexus. Seqrite assesses medium-to-high confidence based on
            Chinese-language infrastructure strings, a Chinese-language DCRat panel, and
            ChinaNet AS4134 hosting, with TTP overlaps to Silver Fox. NOT CONFIRMED —
            report it as an assessment, never as established attribution.

HYPOTHESIS: A user was lured by a fake Income Tax Department notice, routed through a
            bogus "Microsoft Edge Secure Gateway" page, and downloaded an ITR utility
            ZIP. The legitimate SIGNED executable inside side-loaded a malicious
            nvdaHelperRemote.dll. A six-stage chain then forced a UAC elevation, staged
            under C:\Program Files\Windows Media Player\, persisted as the service
            MixedSvc ("Windows Mixed Reality Service"), pulled a polyglot JPEG to
            C:\Windows\background.jpg, and injected a Gh0st RAT derivative
            (kkxqbh[.]top:6666) plus an AsyncRAT-family .NET implant
            (ouewop[.]com:6351) into svchost.exe in EVERY active session.

QUERIES:    Q1  ITR utility / Mixed Reality.exe execution
            Q2  nvdaHelperRemote.dll outside a real NVDA install
            Q3  PE written to Windows Media Player dir        <-- RUN THIS FIRST
            Q4  MixedSvc service persistence
            Q5  ITR-themed archive written to disk
            Q6  Lure and C2 domain resolution
            Q7  Campaign infrastructure IP connections
            Q8  svchost.exe egress on TCP 6666 / 6351
            Q9  svchost.exe spawned by an unexpected parent
            Q10 Execution from the Windows Media Player dir
            Q11 Same-name elevated child (runas UAC relaunch)
            Q12 Published SHA256 sweep

DO FIRST:   1. Run Q3 across full retention. Near-zero expected FP; any hit is an
               active intrusion until disproven.
            2. Import the section 10 CSV — but confirm 93dd8b7b... imported as DETECT,
               not prevent. It is the LEGITIMATE signed utility; blocking it breaks
               genuine ITR filing.
            3. Deploy the outbound TCP 6666 / 6351 firewall deny (playbook 4) — it
               survives all infrastructure rotation.
            4. Confirm validation gates G1 and G2 before trusting a zero-hit result.

FINDINGS:   [ ] Hosts with Q3 or Q10 hits ........................... ____
            [ ] Hosts with the MixedSvc service (Q4) ................ ____
            [ ] Hosts reaching C2 (Q6 / Q7 / Q8) .................... ____
            [ ] Multi-session hosts affected ....................... ____
            [ ] Distinct user sessions injected (Q9) ................ ____
            [ ] Lure domain and delivery URL captured ............... ____

GAPS:       Stages 3, 4 and 6B are in-memory only — reflective loading, the AMSI patch
            and in-memory CLR hosting produce no discrete sensor telemetry. Root-level
            lock and kill files (c:\kkooPPP, c:\ouewo, c:\kkqqexit, c:\debug.txt) are
            extension-less and generate no *FileWritten event; use native hunt 1.
            Named kernel objects are live-host only and lost on reboot.

ACTIONS:    [ ] Remove local admin rights from standard users (playbook 1 context)
            [ ] Harden UAC elevation prompts (playbook 1)
            [ ] Lock down the Windows Media Player directory (playbook 2)
            [ ] Enable the two ASR rules in audit mode (playbook 3)
            [ ] Deploy the C2 port egress block (playbook 4)
            [ ] Sweep persistence on every suspect host (playbook 5)
            [ ] Reset credentials for ALL users with a session on an affected host
            [ ] Assess screen-capture exfiltration exposure

OWNER:      ____________________
VERSION:    v0.3 (2026-07-19)
17

Changelog

v0.32026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.2 2026-07-19 Refresh — merged the newer Cyderes / The Hacker News reporting into the original Seqrite-based pack. The daily pipeline independently rebuilt this campaign under its other vendor name ("Indian ITR dual-RAT") before the duplication was spotted; rather than discard the richer build, it was merged back into this pack and both vendor names are now recorded prominently so the same collision does not recur.
Added from the newer build: the six-stage reverse-engineered chain, polyglot payload offsets, named kernel objects and host lock files; 10 SHA256 hashes for the individually-attributed stages (the v0.1 pack shipped Seqrite's sample set but none of the per-stage attributions); 5 additional C2 / lure domains (ouewop[.]com, import[.]mom, tqhaq[.]rest, tqkat[.]rest, generate[.]lat, meoou[.]rest, kattp[.]homes); the C2 port pair 6666 / 6351; and 5 additional CQL queries (7 → 12), including the run-first Windows Media Player staging query.
Carried forward from v0.1 so nothing regressed: the 33 remaining Seqrite sample hashes (43 SHA256 total now ship, up from 10 in the newer build) and the C2 domains 1kkkkddd[.]com, simaqz[.]com and jiayingjing[.]com — all re-verified against the saved Seqrite snapshot. The v0.1 note that MixedRealityPortal.exe is the legitimate System32 binary is preserved as a benign-baseline discriminator in Q1 and Q10; it is deliberately not an atomic indicator.
Sources: Gurucul Threat Research added to the citation set and snapshotted, restoring the third original DragonReturn source. Eight sources now snapshotted.
v0.1 2026-07-11 Initial HuntPack — 7 CQL queries, 3 Custom IOA recs, full IOC set (34 SHA256 / 6 domains / 5 IPv4) from Seqrite Labs, Gurucul and The Hacker News, tiered hardening plus playbooks and containment runbook.
18

References

TierSourceUsed forPublishedAccessed
1Cyderes Howler Cell — The Tax Trap: From Fake Indian ITR Notice to Dual RAT Deployment in Six StagesSix-stage chain, polyglot offsets, host artifacts, kernel objects, 10 SHA256, C2 ports, EDR methodology2026-07-072026-07-19
1Seqrite Labs — Operation DragonReturnAttribution assessment, second infrastructure cluster, full ATT&CK table, campaign timeline, the 34-hash sample set and the jiayingjing[.]com / simaqz[.]com / 1kkkkddd[.]com C2 domains2026-06-262026-07-19
1Gurucul Threat Research — Operation DragonReturn: China-Nexus Campaign Targeting India's Tax Infrastructure via DcRATIndependent corroboration of the multi-stage DcRAT / ValleyRAT deployment and the China-nexus assessment2026-06-292026-07-19
2The Hacker News — Suspected China-Nexus Hackers Use Fake Indian Tax Filing Utility to Deploy DcRATLinks the Seqrite and Cyderes clusters; Silver Fox / ValleyRAT lineage framing2026-07-062026-07-19
2CSO Online — Cybercriminals exploit India's tax filing season with a dual-malware campaignIndependent corroboration of campaign scope2026-072026-07-19
2Cybersecurity News — Fake Indian ITR Notice Delivers Dual RAT MalwareCorroboration; source of the tqkat[.]rest lure domain2026-072026-07-19
2GBHackers — Indian Income Tax Department Phishing Lure Deploys Gh0st RAT and AsyncRAT ImplantsCorroboration of the implant pairing2026-072026-07-19
2Cyberpress — Hackers Abuse Signed Windows Binary to Deliver Gh0st RAT and Quasar AsyncRAT PayloadsCorroboration of signed-binary abuse2026-072026-07-19
RefMITRE ATT&CKTechnique and mitigation mapping2026-07-19

Provenance: the verbatim fetched text of all eight sources is saved alongside this pack in OperationDragonReturn-Hunt-sources/. Every atomic indicator in section 10 was verified to appear in that saved text by check_ioc_provenance.py before this pack was released.

Attribution caveat, restated: "China-nexus" and the Silver Fox overlap are an analytic assessment published by Seqrite at medium-to-high confidence, not a confirmed attribution. Anyone re-using this pack's language in customer or executive reporting should carry the caveat with it.