PATCHCORD — Afghan Telecom & South Asian Critical Infrastructure Backdoor
Executive Summary
PATCHCORD is a previously undocumented C/C++ backdoor identified by the Acronis Threat Research Unit (TRU — researchers Darrel Virtusio, Santiago Pontiroli, Subhajeet Singha), used in an active espionage campaign against Afghan telecom providers and South Asian critical infrastructure organizations, including India's National Hydroelectric Power Corporation (NHPC) and Afghanistan's Ministry of Communications and IT. The operator's objective is durable, low-noise remote access: PATCHCORD hijacks browser desktop/taskbar/Start Menu shortcuts so the implant launches transparently every time the victim opens Edge, Chrome, or Firefox, then executes operator commands via cmd.exe /c and loads shellcode entirely in memory (VirtualAlloc + CreateThread, no disk write) to minimize forensic footprint.
TRU assesses with moderate confidence that this activity overlaps with APT36 (Transparent Tribe), a suspected Pakistan-linked group active since at least 2013, based on targeting-pattern overlap, tool reuse (HackBrowserData), and infrastructure co-location (GateSentinel, SuperShell). PATCHCORD is part of a broader malware cluster alongside two Go-based siblings — SHEETCORD (abuses the Google Sheets API for C2) and a HACKERAI C2 agent (abuses GitHub Gists) — reflecting an operator actively diversifying toward cloud-service-fronted command channels that blend into normal business traffic.
The single highest-value defensive move in this pack is the registry-based persistence check (Section 8, Query 2): PATCHCORD writes a uniquely-named value, BeaconBrowserHijack, under HKCU\Software\Microsoft\Windows\CurrentVersion\Run. No legitimate software is known to use this value name, so a hit is a high-confidence compromise indicator with effectively zero tuning burden — this should be the first scheduled search enabled from this pack.
BeaconBrowserHijack registry-write hunt (S8·Q2) and the C2-IP network hunt (S8·Q6) today — both are high-confidence, near-zero-FP detections that cover the persistence and command-and-control stages independently. Falcon has no native telemetry event for the LNK shortcut-content rewrite itself or for the VirtualAlloc+CreateThread shellcode pattern — see Section 11 for the two flagged coverage gaps and the Custom IOA compensating control.
Source Review & Web Hunter Notes
Five sources were queued for research; three were fetched directly, two (the Acronis TRU primary and IndustrialCyber) returned HTTP 403 on direct fetch. Per standing research protocol, both blocked sources were reconstructed from search-engine-indexed snippets of the same page (not a raw fetch) and are flagged one confidence tier below a direct primary fetch. No suspicious embedded instructions directed at an AI/assistant were found in any fetched content — all five snapshots were reviewed for prompt-injection text and came back clean. All verbatim/reconstructed snapshots are saved at PATCHCORD-Hunt-sources/ for provenance tracing.
| # | Source | Tier | Access | Contributed |
|---|---|---|---|---|
| 1 | The Hacker News | T2 | Direct fetch — success | Attribution, delivery filenames, C2 IP, persistence summary, related malware |
| 2 | GBHackers | T2 | Direct fetch — success | C2 domain+port (appstoore[.]solutions:8080), technical capability list, SuperShell staging infrastructure, nic-support[.]site/SHEETCORD linkage |
| 3 | SMBtech.au | T2 | Direct fetch — success | Three-family cluster overview, researcher credits, campaign timeline, tool-reuse attribution basis |
| 4 | Acronis TRU (primary) | T1 | 403 — search-index reconstructed | BeaconBrowserHijack registry mechanism, C2 domain/IP/port, NHPC/NIC lure detail, shellcode execution chain, full attribution rationale |
| 5 | Industrial Cyber | T2 | 403 — headline/topic only | Corroboration only — no unique technical claim used from this source |
nic-support[.]site with SHEETCORD distribution (a NIC-impersonating installer lure), not with PATCHCORD's own hardcoded C2 channel. PATCHCORD's own C2 domain is appstoore[.]solutions (IP 46.30.188.13:8080), confirmed independently across sources 1, 2, and 4. Both domains are shipped in this pack — nic-support[.]site labeled explicitly as related-cluster infrastructure rather than a PATCHCORD-primary IOC.
Source 2 also listed three file hashes for campaign binaries; the extracted hash strings failed standard SHA-256 length validation (data-quality defect in the source extraction) and are not shipped anywhere in this pack's IOC tables or CQL queries.
Hunt Brief & Attack Chain
Hypothesis: If PATCHCORD is active in our environment, we should see execution of a telecom/VPN-themed Inno Setup installer, followed within minutes by a BeaconBrowserHijack registry write and outbound connections to 46.30.188.13:8080 or DNS resolution of appstoore[.]solutions.
| Stage | Behavior | Artifact |
|---|---|---|
| 1. Delivery | Sector-specific phishing/social-engineering lure | Archive Telecom_TMS.zip; lure variants impersonate AFTEL VPN, NHPC Fuel Conservation Client, and a "Ministry of Defense Employee Breach Update" (SHEETCORD) |
| 2. Execution | User runs the bundled Inno Setup installer | TMS_AfghanTelecom.exe ("Transport Management System") |
| 3. Persistence | Enumerates Edge/Chrome/Firefox shortcuts (Desktop, Start Menu, Taskbar, Quick Launch); if BeaconBrowserHijack value absent, rewrites .lnk target to implant path (real browser path preserved as an argument, icon preserved) and writes the value | Registry: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\BeaconBrowserHijack |
| 4. C2 registration | Beacons to hardcoded C2, configurable interval | Domain appstoore[.]solutions → IP 46.30.188.13, TCP/8080 |
| 5. Command execution | Process enumeration + arbitrary command execution | cmd.exe /c <operator command> |
| 6. Fileless payload | Decodes/decrypts operator shellcode, allocates RWX memory, executes in a new thread — payload never touches disk | VirtualAlloc + CreateThread (no dedicated Falcon telemetry event — see Section 11) |
Consolidated IOC Table
| Type | Value | Confidence | Action | Context |
|---|---|---|---|---|
| IPv4 | 46.30.188.13 | HIGH | detect | PATCHCORD C2 server, AS199959, historically TCP/8080. Source 1,2,4. |
| Domain | appstoore[.]solutions | HIGH | detect | PATCHCORD's own hardcoded C2 domain, port 8080. Source 2,4. |
| Domain | nic-support[.]site | MEDIUM | hunt | Related-cluster infrastructure impersonating India's NIC; documented as SHEETCORD distribution/lure, not PATCHCORD-primary C2. First seen 2026-07-13. Source 2,4. |
| File name | Telecom_TMS.zip | HIGH | hunt | Delivery archive containing the Inno Setup installer. Source 1,2. |
| File name | TMS_AfghanTelecom.exe | HIGH | hunt | Inno Setup installer, impersonates Afghan Telecom (AFTEL) Transport Management System. Source 1,2. |
| File name | AFTEL_VPN_Setup.exe | MEDIUM | hunt | Fake VPN installer lure variant, same delivery pattern. Source 2. |
| File name | NHPC_Fuel_Conservation_Setup.zip | MEDIUM | hunt | NHPC-themed lure archive, India critical-infrastructure targeting. Source 2, 4. |
| Registry value | BeaconBrowserHijack under HKCU\...\Run | HIGH | detect | Highest-fidelity persistence marker; no known legitimate use. Source 4. |
File hashes: (none independently verified — the single source that published hashes returned malformed/invalid-length SHA-256 strings; excluded from this pack rather than shipped unverified.)
Affected Surface & Telemetry Matrix
| Surface | Telemetry Available | Priority | Gap |
|---|---|---|---|
| Process execution (installer, cmd.exe) | ProcessRollup2 / SyntheticProcessRollup2 | Critical | None — full coverage |
| Registry Run-key persistence | AsepValueUpdate / RegGenericValueUpdate | Critical | None — full coverage, high-fidelity marker |
| Browser .lnk shortcut content (target/icon rewrite) | No dedicated Falcon event for shortcut-content modification | High | GAP — best-effort generic file-write proxy only; Custom IOA + host-based integrity check recommended (Section 9, Section 12) |
| Network C2 (IP/domain/port) | NetworkConnectIP4, DnsRequest | Critical | None — full coverage |
| In-memory shellcode execution (VirtualAlloc/CreateThread) | No API-call-level telemetry in the documented Falcon CQL schema | High | GAP — no direct CQL detection possible; rely on Falcon's ML-based in-memory exploitation detection (Enterprise/Elite) + Custom IOA (Section 9) |
ATT&CK Mapping
| Tactic | Technique | Behavior | Query / Control |
|---|---|---|---|
| Initial Access / Execution | T1204.002 | User runs the malicious Inno Setup installer | S8·Q1 |
| Defense Evasion | T1036.005 | Installer/lure masquerades as legitimate telecom/VPN/government software | S8·Q1 |
| Persistence | T1547.009 | Browser shortcut (.lnk) target rewritten to the implant | S8·Q2b (heuristic) + Custom IOA (S9) |
| Persistence / Defense Evasion | T1112 | BeaconBrowserHijack registry value write | S8·Q2 (high confidence) |
| Execution | T1059.003 | Arbitrary commands executed via cmd.exe /c | S8·Q4, Q4b |
| Defense Evasion / Execution | T1055 / T1620 | Fileless shellcode: decode/decrypt, VirtualAlloc, CreateThread | S8·Q5 (heuristic only) + Custom IOA (S9) |
| Command and Control | T1071.001 | C2 over HTTP(S)-style application-layer protocol | S8·Q6, Q7 |
| Command and Control | T1571 | Non-standard C2 port (8080) | S8·Q6 |
Native Audit-Log Hunts
Falcon/CrowdStrike telemetry covers the full attack chain except the two gaps noted in Sections 5 and 11. For organizations with additional telemetry sources, the following native checks materially close those gaps:
- Windows Shell/Explorer LNK auditing: if Sysmon is deployed alongside Falcon, Event ID 11 (FileCreate) filtered to
TargetFilenameending.lnkin Desktop/Start Menu/Taskbar paths gives file-level visibility Falcon's documented schema does not expose natively. - PowerShell Script Block Logging (Event ID 4104): improves triage speed for any
cmd.exe /cchains that pivot into PowerShell, and for confirming what the implant's remote command execution actually ran. - Mail gateway / attachment sandboxing: flag inbound ZIP attachments containing Inno Setup installers with telecom, VPN, or government-agency-themed filenames — this catches the campaign before Query 1 in Section 8 would ever fire.
- DNS resolver logging: if a dedicated DNS security product is in place, alert on any resolution of
appstoore.solutionsornic-support.siteindependent of endpoint telemetry, to catch non-Windows or unmanaged devices on the network.
CrowdStrike LogScale CQL Hunt Queries
Looks for: execution of the known campaign installer filenames. Requires: Falcon sensor process telemetry.
// HUNT: PATCHCORD - T1204.002 / T1036.005 - Malicious Inno Setup installer masquerading as telecom software // CONF: high FP: low COST: low | REQUIRES: Falcon process telemetry // HYPOTHESIS: PATCHCORD delivery in the environment will show execution of an Inno Setup installer with // a telecom/VPN-themed filename, typically launched after a user opens Telecom_TMS.zip. // FP NOTES: filenames are campaign-specific; not a shared naming convention with legitimate software. // LOOKBACK: 30d (set via console time picker) #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^(TMS_AfghanTelecom|AFTEL_VPN_Setup|NHPC_Fuel_Conservation_Setup)(\.exe)?$/i | groupBy([ComputerName, UserName, aid], function=[count(as=Hits), collect([FileName, ImageFileName, CommandLine, ParentBaseFileName])], limit=500) | sort(Hits, order=desc)
Looks for: the exact registry value name PATCHCORD writes after hijacking browser shortcuts. Requires: Falcon registry (Asep) telemetry.
// HUNT: PATCHCORD - T1547.009 / T1112 - BeaconBrowserHijack persistence registry value write // CONF: high FP: low COST: low | REQUIRES: Falcon registry (Asep) telemetry // HYPOTHESIS: PATCHCORD writes a value named "BeaconBrowserHijack" under HKCU Run to mark a host as // already hijacked and to persist across reboots. // FP NOTES: "BeaconBrowserHijack" is not a standard Windows or third-party Run-key value name; no known // legitimate software uses it. Any hit warrants immediate escalation. // LOOKBACK: 30d #event_simpleName = /AsepValueUpdate|RegGenericValueUpdate/ | RegObjectName = /HKEY_(CURRENT_USER|USERS\\[^\\]+)\\Software\\Microsoft\\Windows\\CurrentVersion\\Run/i | RegValueName = /^BeaconBrowserHijack$/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid]) | sort(@timestamp, order=desc)
Looks for: writes to .lnk files in browser-shortcut locations, as a proxy since Falcon has no dedicated shortcut-modification event. FP: browser auto-updaters and app installers/uninstallers legitimately rewrite their own shortcuts — correlate with Q2 and Q1 before escalating, do not action alone.
// HUNT: PATCHCORD - T1547.009 - Browser shortcut (.lnk) target file modification // CONF: medium FP: medium COST: low | REQUIRES: Falcon generic file-write telemetry // HYPOTHESIS: a .lnk write/modify event in Desktop/Start Menu/Taskbar/Quick Launch, near in time to a // suspected PATCHCORD installer/implant process, is consistent with shortcut hijacking. // TUNING: Falcon has no purpose-built "shortcut modification" event; this uses the generic file-write // event family filtered to .lnk targets, which also fires for legitimate shortcut creation (browser // updates, pinning apps, install/uninstall routines). Exclude known updater/installer parents below and // always correlate with the BeaconBrowserHijack registry write (Q2) before escalating. // LOOKBACK: 14d #event_simpleName = /PeFileWritten|NewExecutableWritten|.*FileWritten/ | TargetFileName = /\.lnk$/i | TargetFileName = /\\(Desktop|Start Menu|Taskbar|Quick Launch)\\/i | ImageFileName != /\\(msedge_installer|msedgeupdate|GoogleUpdate|updater|firefox\\uninstall)\.exe$/i | table([@timestamp, ComputerName, UserName, TargetFileName, ImageFileName, ContextProcessId_decimal, aid]) | sort(@timestamp, order=desc)
Looks for: any process spawned directly by the known campaign installer names. FP: legitimate Inno Setup install tasks (e.g. regsvr32 for COM registration) can also match — review CommandLine context per hit.
// HUNT: PATCHCORD - T1059 - Suspicious child process of Inno Setup installer // CONF: high FP: low COST: low | REQUIRES: Falcon process telemetry // TUNING: Inno Setup installers legitimately spawn helper processes for install tasks; review CommandLine // for each hit rather than auto-escalating on parent match alone. // LOOKBACK: 30d #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | ParentBaseFileName = /^(TMS_AfghanTelecom|AFTEL_VPN_Setup|NHPC_Fuel_Conservation_Setup)(\.exe)?$/i | groupBy([ComputerName, UserName, FileName, aid], function=[count(as=Hits), collect([CommandLine, ParentBaseFileName])], limit=500) | sort(Hits, order=desc)
Looks for: cmd.exe /c spawned specifically from the known campaign installer/implant name. FP: cmd.exe /c alone is extremely common; this query is scoped by parent to control noise — do not broaden the parent filter without expecting a large FP increase.
// HUNT: PATCHCORD - T1059.003 - cmd.exe /c command execution consistent with implant remote-command tasking // CONF: medium FP: medium COST: low | REQUIRES: Falcon process telemetry // TUNING: cmd.exe /c is an extremely common pattern used by installers, RMM tools, and admin scripts. // This query is narrowed to parents matching known campaign installer/implant names to control FP volume; // review ParentBaseFileName and CommandLine together before escalating. // LOOKBACK: 14d #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^cmd\.exe$/i | CommandLine = /\/c\s/i | ParentBaseFileName = /^(TMS_AfghanTelecom|AFTEL_VPN_Setup|NHPC_Fuel_Conservation_Setup)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine, aid]) | sort(@timestamp, order=desc)
Looks for: cmd.exe /c from unsigned/uncommon parents launched out of Downloads/Temp/AppData, to catch renamed or future variants. FP: many legitimate portable apps and dev tooling behave this way — triage-only, not a standalone alert trigger.
// HUNT: PATCHCORD - T1059.003 - cmd.exe /c spawned from unsigned process in a user-writable directory // CONF: low FP: high COST: medium | REQUIRES: Falcon process telemetry // TUNING: broad heuristic; use as a secondary/triage query only. Cross-reference with Q6/Q7 (C2 network // activity) before escalating any result from this query. // LOOKBACK: 7d #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^cmd\.exe$/i | CommandLine = /\/c\s/i | ParentBaseFileName != /^(explorer|services|svchost|powershell|wscript|cscript|python|node)\.exe$/i | ImageFileName = /\\(Downloads|AppData\\Local\\Temp|Temp)\\/i | groupBy([ComputerName, UserName, ParentBaseFileName, aid], function=[count(as=Hits), collect(CommandLine)], limit=500) | sort(Hits, order=desc)
Looks for: the campaign process itself, for historical triage only — Falcon's documented event schema exposes no VirtualAlloc/CreateThread API-call telemetry. FP: "no file write observed" is not unique to malicious in-memory execution; this query cannot confirm the technique from CQL alone.
// HUNT: PATCHCORD - T1055 / T1620 - Fileless in-memory shellcode execution (best-effort proxy) // CONF: low FP: high COST: low | REQUIRES: Falcon process telemetry (does NOT cover the API-call itself) // TUNING: Falcon's CQL/LogScale event model does not expose a VirtualAlloc/CreateThread API-call event - // there is no purpose-built "reflective shellcode" event type in the documented Falcon schema. This query // is provided for historical/completeness triage only; it cannot reliably confirm the technique. // PRIMARY CONTROL: deploy the Custom IOA in Section 9 and rely on Falcon's ML-based in-memory // exploitation detection (Enterprise/Elite tiers) - this CQL query is a supplementary triage aid only. // LOOKBACK: 14d #event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/ | FileName = /^(TMS_AfghanTelecom|AFTEL_VPN_Setup)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, TargetProcessId_decimal, aid]) | sort(@timestamp, order=desc)
Looks for: any outbound connection to the confirmed C2 IP, joined to the initiating process. Requires: Falcon network telemetry.
// HUNT: PATCHCORD - T1071.001 / T1571 - Network connection to known C2 IP 46.30.188.13 on port 8080 // CONF: high FP: low COST: medium | REQUIRES: Falcon network telemetry // FP NOTES: none expected; specific IOC IP with no legitimate business use. Revisit IOC expiry (30d) if // this address is ever reassigned by the hosting provider after infrastructure takedown. // LOOKBACK: 30d #event_simpleName = NetworkConnectIP4 | RemoteAddressIP4 = "46.30.188.13" | rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal) | join(query={#event_simpleName = /ProcessRollup2|SyntheticProcessRollup2/}, field=TargetProcessId_decimal) | table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, RemoteAddressIP4, RemotePort, aid]) | sort(@timestamp, order=desc)
Looks for: DNS resolution of PATCHCORD's own C2 domain or the related-cluster lure domain. Requires: Falcon DNS telemetry.
// HUNT: PATCHCORD - T1071.001 - DNS resolution of known cluster C2/lure domains // CONF: high FP: low COST: low | REQUIRES: Falcon DNS telemetry // FP NOTES: none expected; both domains are typosquat/fake domains with no legitimate purpose. // nic-support.site is shipped as related-cluster (SHEETCORD) infrastructure, not a confirmed // PATCHCORD-specific C2 channel - see Section 2 cross-reference note. // LOOKBACK: 30d #event_simpleName = DnsRequest | DomainName = /^(appstoore\.solutions|nic-support\.site)$/i | table([@timestamp, ComputerName, UserName, DomainName, aid]) | sort(@timestamp, order=desc)
Looks for: the delivery archive appearing on disk, prior to installer execution. Requires: Falcon file-write telemetry.
// HUNT: PATCHCORD - T1204.002 - Delivery archive "Telecom_TMS.zip" written to disk // CONF: high FP: low COST: low | REQUIRES: Falcon file-write telemetry // FP NOTES: none expected; a generically-named archive collision is possible but low probability given // the specificity of "Telecom_TMS.zip". // LOOKBACK: 30d #event_simpleName = /ZipFileWritten|.*FileWritten/ | TargetFileName = /Telecom_TMS\.zip$/i | table([@timestamp, ComputerName, UserName, TargetFileName, ImageFileName, aid]) | sort(@timestamp, order=desc)
Custom IOA Recommendations
Two attack-chain stages in this pack (browser shortcut rewrite, fileless shellcode execution) have no dedicated CQL-queryable Falcon event. Real-time Custom IOA rules are the correct compensating control for both — deploy in Detect mode first, measure a 14-day false-positive rate, and only promote to Prevent if FP rate is confirmed below 5%.
IOA-1: Browser Shortcut Rewrite
| Field | Value |
|---|---|
| Rule Group | Persistence Defense |
| Rule Type | File Creation / Modification |
| Action | Detect (promote to Block only after 14d validated FP rate < 5%) |
| Severity | High |
| MITRE | T1547.009 |
| Detection Logic | File Path: .*\\(Desktop|Start Menu|Taskbar|Quick Launch).*\.lnk$ written/modified by a process not on the browser-updater allowlist |
| FP Tuning | Exclude msedgeupdate.exe, GoogleUpdate.exe, firefox uninstaller, and known packaging/deployment tools (Intune, SCCM agents) |
IOA-2: BeaconBrowserHijack Registry Write (real-time, pairs with CQL Q2)
| Field | Value |
|---|---|
| Rule Group | Persistence Defense |
| Rule Type | Registry Operation |
| Action | Detect → Block (safe to promote quickly given zero known FP source) |
| Severity | Critical |
| MITRE | T1112, T1547.009 |
| Detection Logic | Registry Value Name exactly BeaconBrowserHijack under any Run key path |
| FP Tuning | None required — no legitimate software has been observed using this value name |
IOA-3: In-Memory Shellcode Execution Pattern
| Field | Value |
|---|---|
| Rule Group | Fileless Execution Defense |
| Rule Type | Process Creation / memory-protection change (sensor-policy dependent) |
| Action | Detect only — this is a heuristic control |
| Severity | High |
| MITRE | T1055, T1620 |
| Detection Logic | RWX memory-protection change in a non-browser, non-interpreter process, scoped where sensor policy supports memory-protection IOAs |
| FP Tuning | High baseline noise from JIT runtimes and some installers; recommend relying primarily on Falcon's built-in ML-based in-memory exploitation detection (Enterprise/Elite tier) rather than a custom rule for this specific pattern |
Machine-Readable IOC Appendix
Grouped, one-click-copy IOC blocks. Only atomic indicators traced to a saved source snapshot are included — see Section 2 and PATCHCORD-Hunt-sources/.
type,value,action,severity,expiration,description,tags ipv4,46.30.188.13,detect,high,2026-09-13,PATCHCORD C2 server,campaign:PATCHCORD domain,appstoore.solutions,detect,high,2026-11-14,PATCHCORD hardcoded C2 domain,campaign:PATCHCORD domain,nic-support.site,detect,medium,2026-11-14,Related-cluster NIC-impersonating lure domain (SHEETCORD),campaign:PATCHCORD sha256,REPLACE_WITH_SHA256,prevent,critical,2027-08-14,TMS_AfghanTelecom.exe - unverified hash pending sample acquisition,campaign:PATCHCORD
RegistryValueName: BeaconBrowserHijack RegistryPath: HKCU\Software\Microsoft\Windows\CurrentVersion\Run InstallerFileNames: TMS_AfghanTelecom.exe, AFTEL_VPN_Setup.exe, NHPC_Fuel_Conservation_Setup.zip DeliveryArchive: Telecom_TMS.zip C2Port: 8080/tcp
Primary: PATCHCORD (C/C++ backdoor) Related: SHEETCORD (Go, Google Sheets API C2, 6-browser hijack, VBScript persistence) Related: HACKERAI C2 Agent (Go, GitHub Gists C2) Attribution: APT36 / Transparent Tribe (moderate confidence) Staging infra observed: SuperShell v2.0.0, Metasploit, Antnium C2, CVE-2024-6387 exploit tooling
[ ] ASR rule 01443614-cd74-433a-b99e-2ecdc07bfc25 (block untrusted/unsigned executables) = Block mode [ ] DNS block/sinkhole in place for appstoore.solutions and nic-support.site [ ] Firewall block for 46.30.188.13 (all ports) [ ] Falcon custom IOC: Telecom_TMS.zip, TMS_AfghanTelecom.exe = Prevent [ ] CQL Q2 (BeaconBrowserHijack) scheduled search = Enabled [ ] WDAC/AppLocker audit-mode baseline collected for Downloads/Temp/Desktop unsigned exe execution
Detection Validation Gates
| Gate | Status | Notes |
|---|---|---|
| Telemetry ready | READY | ProcessRollup2/SyntheticProcessRollup2, AsepValueUpdate/RegGenericValueUpdate, NetworkConnectIP4, DnsRequest, and generic FileWritten events are all standard Falcon sensor telemetry — no additional licensing required for Q1–Q4, Q6–Q8. |
| Benign baseline check | CLEAR | Q2 (BeaconBrowserHijack) has no known legitimate collision; Q1/Q3/Q6/Q7/Q8 use campaign-specific literal values with no expected baseline noise. |
| Positive test coverage | PARTIAL | Analysts should validate Q2 and Q6 in an isolated test environment using a benign registry write / benign endpoint matching the pattern shape before relying on them operationally (see standard HuntPack validation playbook process — not run automatically by this pipeline). |
| Promotion readiness | DETECT-FIRST | Q2 and Q6 are safe candidates for early promotion to Prevent-adjacent alerting given near-zero FP sources. Q4b and Q5 must remain Detect-only / manual-review given High/Low confidence and FP ratings respectively. |
| GAP — LNK content modification | NO NATIVE EVENT | No Falcon-documented event captures the .lnk target/icon rewrite directly. Q2b is a best-effort proxy (Medium confidence); IOA-1 (Section 9) and the host-based shortcut-integrity script (Section 12) are the primary compensating controls. |
| GAP — VirtualAlloc+CreateThread shellcode | NO NATIVE EVENT | No Falcon-documented event exposes the VirtualAlloc/CreateThread API-call pair. Q5 is a Low-confidence proxy only. Falcon's ML-based in-memory exploitation detection (Enterprise/Elite tier) and IOA-3 (Section 9) are the primary controls for this technique — this pack cannot close the gap via CQL alone. |
Hardening — Tiered
- Block known PATCHCORD infrastructure at the network/DNS layer. Block outbound to
46.30.188.13(all ports; observed C2 on TCP/8080) at the perimeter firewall/proxy; sinkhole or block DNS resolution forappstoore.solutionsandnic-support.site. Framework: MITRE M1037, M1031. IP-based blocks carry a 30-day IOC review cycle. - Add campaign filenames to the Falcon custom IOC blocklist in Prevent mode. Block
Telecom_TMS.zipandTMS_AfghanTelecom.exefrom executing. Framework: MITRE M1038. - Enable Defender ASR rule
01443614-cd74-433a-b99e-2ecdc07bfc25(block executables unless they meet a prevalence/age/trusted-list criterion) — directly blocks first-seen installers like TMS_AfghanTelecom.exe. Deploy via Intune/GPO:Microsoft Defender Antivirus > Attack Surface Reduction. Framework: MITRE M1038, MS Security Baseline (Defender ASR), CIS Windows 11 Benchmark (ASR section). - Enable the BeaconBrowserHijack scheduled search (S8·Q2) immediately. Zero known FP source, safe to run in alerting mode from day one. Framework: MITRE M1047, M1040.
- Restrict unsigned/untrusted Inno Setup-class installer execution via AppLocker or WDAC. AppLocker Publisher rule requiring code-signing for .exe execution from Downloads/Desktop/Temp (pilot on a small ring first — compatibility risk with legitimate unsigned internal tools). WDAC preferred on Windows 10 1903+/Windows 11: Audit mode 30 days, then Enforced. Framework: MITRE M1038, CIS Benchmark 18.10 (WDAC/AppLocker), MS Security Baseline (Application Control).
- Deploy browser-shortcut integrity monitoring. No native Windows or Falcon control alerts on .lnk target-path changes. Compensating control: a scheduled integrity-check script (RMM/GPO scheduled task) comparing Target/IconLocation properties of Edge/Chrome/Firefox shortcuts against a known-good baseline, alerting on drift. Pair with IOA-1 (Section 9). Framework: ⚠ best-practice, no formal benchmark — closest formal mitigation is MITRE M1022 (Restrict File and Directory Permissions).
- Deploy Custom IOA rules IOA-1 and IOA-2 (Section 9) in Detect mode, measure 14-day FP rate before considering Prevent promotion. Framework: MITRE M1040.
- Enable PowerShell/cmd script block logging to improve triage speed for post-compromise command execution. Framework: MITRE M1042 (feasibility-dependent), CIS Benchmark 18.9 (PowerShell logging).
- Sector-specific anti-phishing awareness for telecom, energy, and government-adjacent staff on PATCHCORD's highly specific lure themes (telecom management tools, VPN installers, NHPC/government-agency branding) — generic phishing training is unlikely to catch these. Framework: MITRE M1017.
- Formalize enterprise software deployment (Intune/SCCM/RMM) as the sole sanctioned installer channel for internal tooling, reducing the credibility of "IT-themed" installer lures. Framework: MITRE M1038, defense-in-depth best practice.
Verification after deployment
- Confirm ASR rule is in Block mode fleet-wide:
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Idsshould list the GUID with action 1 (Block). - Attempt DNS resolution of
appstoore.solutionsandnic-support.sitefrom a test endpoint — both should fail or resolve to a sinkhole. - Confirm Falcon IOC Management shows
Telecom_TMS.zipandTMS_AfghanTelecom.exewith Action = Prevent. - Run CQL Q2 across the fleet weekly — zero results is expected steady state; any hit is a true positive requiring immediate response.
- After moving WDAC/AppLocker from Audit to Enforced, review CodeIntegrity event log 3076/3077 (WDAC) or
Get-AppLockerPolicy -Effective -Xmlto confirm no unexpected blocks of legitimate software.
Deployable Playbooks
Playbook 1 — Enable Defender ASR rule (untrusted/unsigned executable block)
# Enable ASR rule: Block executable files from running unless they meet a # prevalence, age, or trusted list criterion (covers first-seen PATCHCORD installers) Add-MpPreference -AttackSurfaceReductionRules_Ids 01443614-cd74-433a-b99e-2ecdc07bfc25 ` -AttackSurfaceReductionRules_Actions Enabled # Verify Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions
Playbook 2 — Firewall block for PATCHCORD C2 IP
# Windows Defender Firewall outbound block (adjust for your perimeter firewall/proxy in production) New-NetFirewallRule -DisplayName "Block-PATCHCORD-C2" -Direction Outbound ` -RemoteAddress 46.30.188.13 -Action Block -Profile Any # Verify Get-NetFirewallRule -DisplayName "Block-PATCHCORD-C2" | Format-List
Playbook 3 — Browser shortcut integrity baseline (compensating control for the LNK gap)
# Run once to capture a known-good baseline, then schedule periodic re-checks and diff
$paths = @(
"$env:USERPROFILE\Desktop",
"$env:APPDATA\Microsoft\Windows\Start Menu\Programs",
"$env:APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
)
$shell = New-Object -ComObject WScript.Shell
$baseline = foreach ($p in $paths) {
Get-ChildItem -Path $p -Filter *.lnk -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
$lnk = $shell.CreateShortcut($_.FullName)
[PSCustomObject]@{ Path=$_.FullName; Target=$lnk.TargetPath; Args=$lnk.Arguments; Icon=$lnk.IconLocation }
}
}
$baseline | Export-Csv -Path "C:\ProgramData\HuntPack\lnk-baseline.csv" -NoTypeInformation
# On subsequent runs, re-collect and Compare-Object against the saved baseline; alert on any Target/Icon drift
# for shortcuts named msedge*, chrome*, firefox*.
Playbook 4 — AppLocker Publisher rule (pilot ring)
# GPO path: Computer Configuration > Windows Settings > Security Settings > Application Control Policies
# > AppLocker > Executable Rules > Create New Rule > Publisher condition > Deny for unsigned .exe
# in %OSDRIVE%\Users\*\Downloads\*, \Desktop\*, \AppData\Local\Temp\*
# Start in Audit-only enforcement mode; review Applocker/EXE and DLL event log for 30 days before Enforce.
Set-AppLockerPolicy -XmlPolicy "C:\ProgramData\HuntPack\applocker-pilot-policy.xml" -Merge
# Verify (Audit mode findings)
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" | Where-Object { $_.Id -eq 8003 }
To wrap any of the above for fleet deployment (admin checks, error handling, custom-field writeback), hand the raw PowerShell to your RMM deployment tooling.
Containment Runbook
| Phase | Actions | Owner | Evidence to Preserve |
|---|---|---|---|
| 1. Triage | Confirm hit source (Q2 registry write, Q6 C2 connection, or Q1 installer execution); determine blocked vs. executed | SOC Analyst (Tier 1) | Alert timestamp, aid, full CQL result row |
| 2. Scope | Run Section 8 environment-wide variants of Q2, Q6, Q7 to determine single-host vs. multi-host exposure | SOC Analyst (Tier 2) | List of affected aid/ComputerName, first-seen timestamp per host |
| 3. Contain | Network-isolate any host with a confirmed BeaconBrowserHijack registry hit or confirmed C2 connection via Falcon RTR host containment | Incident Responder | Isolation timestamp, RTR session log |
| 4. Eradicate | Remove the BeaconBrowserHijack registry value; restore original browser shortcut targets from the Playbook 3 baseline (or reimage if baseline unavailable); remove the implant binary | Incident Responder | Pre/post RegStringValue, restored .lnk target paths, removed file hash |
| 5. Recover | Re-issue credentials used on the affected host if command execution (T1059.003) was confirmed; re-enroll host in standard patch/AV baseline | IT Operations | Credential rotation ticket, re-enrollment confirmation |
| 6. Lessons learned | Confirm delivery vector (email attachment, download link) with the affected user; feed back into Section 12 Strategic tier awareness training scoping | Security Lead | Delivery vector summary, updated training material if applicable |
Detection Coverage Map
| MITRE Technique | Technique Name | CQL Query | Custom IOA | IOC Block | Coverage |
|---|---|---|---|---|---|
| T1204.002 | User Execution: Malicious File | ✓ Q1 | — | ✓ filename block | Good |
| T1036.005 | Masquerading: Match Legitimate Name/Location | ✓ Q1 | — | — | Partial |
| T1547.009 | Boot/Logon Autostart Execution: Shortcut Modification | ~ Q2b (heuristic) | ✓ IOA-1 | — | Partial |
| T1112 | Modify Registry | ✓ Q2 | ✓ IOA-2 | — | Good |
| T1059.003 | Windows Command Shell | ✓ Q4, Q4b | — | — | Partial |
| T1055 / T1620 | Process Injection / Reflective Code Loading | ~ Q5 (heuristic only) | ✓ IOA-3 (heuristic) | — | GAP |
| T1071.001 | Application Layer Protocol: Web Protocols | ✓ Q6, Q7 | — | ✓ IP + domain block | Good |
| T1571 | Non-Standard Port | ✓ Q6 | — | — | Partial |
Coverage Summary: 8 of 8 identified techniques have at least partial detection coverage. 1 confirmed GAP (T1055/T1620 — fileless shellcode execution), 1 near-gap treated as Partial due to heuristic-only CQL coverage backed by a real-time Custom IOA (T1547.009).
Priority Gap: T1055/T1620 fileless shellcode execution has no CQL-queryable Falcon event and only a heuristic Custom IOA compensating control. This is a platform telemetry limitation, not a query-writing gap — the primary control for this technique is Falcon's built-in ML-based in-memory exploitation detection (Enterprise/Elite tier), which this pack cannot substitute for via CQL. See Section 11.
Validation gates: see Section 11 for the full telemetry-readiness, baseline, positive-test, and promotion-readiness gate status underlying this coverage map.
Hunt Summary Ticket
TITLE: PATCHCORD - Afghan Telecom & South Asian Critical Infrastructure Backdoor
SEVERITY: HIGH (targeted espionage, moderate-confidence APT36/Transparent Tribe overlap)
SCOPE: Windows endpoints; browser shortcut hijack persistence, C2 to 46.30.188.13:8080 /
appstoore.solutions, fileless shellcode execution via VirtualAlloc+CreateThread
HYPOTHESIS: If PATCHCORD is active in our environment, we expect a BeaconBrowserHijack
registry write under HKCU Run and/or outbound connections to the known C2
IP/domain, generally preceded by execution of a telecom/VPN-themed Inno Setup
installer (TMS_AfghanTelecom.exe or campaign variant).
QUERIES: S8.Q1 (installer exec) / S8.Q2 (registry persistence - HIGHEST CONFIDENCE) /
S8.Q2b (LNK heuristic) / S8.Q3 (child procs) / S8.Q4-Q4b (cmd.exe /c) /
S8.Q5 (shellcode heuristic - GAP) / S8.Q6 (C2 IP) / S8.Q7 (C2/lure DNS) /
S8.Q8 (delivery archive)
DO FIRST: Enable S8.Q2 (BeaconBrowserHijack) and S8.Q6 (C2 IP) as scheduled searches -
both are High confidence / Low FP and require no tuning.
FINDINGS: Queries must be run manually in CrowdStrike LogScale; this pack does not execute
them. A positive result on Q2 or Q6 is a high-confidence compromise indicator -
escalate to containment (Section 14) immediately on any hit.
GAPS: No native Falcon telemetry event exists for (1) browser .lnk target/icon content
modification or (2) VirtualAlloc+CreateThread fileless shellcode execution.
Compensating controls: Custom IOA-1/IOA-3 (Section 9) + host-based shortcut
integrity baseline (Section 13, Playbook 3) + Falcon ML in-memory detection.
ACTIONS: See Section 12 (Hardening) tiers Immediate / Near-term / Strategic.
OWNER: SOC / Threat Hunting Team
VERSION: v0.1 - 2026-08-14
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| T2 | The Hacker News — New PATCHCORD Backdoor Targets Afghan Telecom and Indian Critical Infrastructure | Attribution, delivery filenames, C2 IP, persistence summary | 2026-08-14 |
| T2 | GBHackers — PATCHCORD Infrastructure Hosts SuperShell | C2 domain+port, technical capabilities, staging infrastructure, nic-support[.]site linkage | 2026-08-14 |
| T2 | SMBtech.au — Acronis Researchers Uncover Three Previously Undocumented Malware Families | Cluster overview, researcher credits, timeline, attribution basis | 2026-08-14 |
| T1 | Acronis TRU — PATCHCORD: New malware cluster targets Afghan telecom and South Asian critical infrastructure | BeaconBrowserHijack mechanism, C2 domain/IP/port, lure detail, shellcode chain (direct fetch 403 — reconstructed from search-index, see Section 2) | 2026-08-14 |
| T2 | Industrial Cyber — Acronis exposes Patchcord cyber espionage campaign | Corroboration only (direct fetch 403, headline/topic confirmation only) | 2026-08-14 |