E4del & PINHOLE — FTP Banner Dead-Drop RATs

Two previously-unreported Windows RATs using FTP server welcome banners, Pinterest pins, and SurveyMonkey surveys as command dead-drops
Threat
E4del + PINHOLE RATs
Severity
HIGH — Emerging
Type
Network / C2 / RAT
Access
Phishing (ZIP/LNK) → RAT
Version
v0.1 (Draft)
Author
HuntPack
Confidence
Medium-High
01

Executive Summary

Researchers have identified a new, early-stage campaign deploying two previously-unreported Windows RATs — E4del (a Node.js/Electron-based RAT) and PINHOLE (a shellcode-based RAT) — that share a novel command-and-control dead-drop technique: retrieving initial tasking directly from an FTP server's connection banner, the plaintext welcome string a server sends before authentication. Because the "malicious" content lives in a protocol handshake field rather than a file body or HTTP response, it evades most content-inspection tooling that isn't specifically looking there. The technique has reportedly been active since early July 2026; at analysis time the operators' own stats panel showed only 11 execution events, indicating the campaign is still in its infancy — which makes this an unusually good moment to get ahead of it.

The attack starts conventionally (a phishing-delivered ZIP containing an LNK shortcut) but diverges sharply downstream: PINHOLE resolves its C2 configuration from Pinterest pins and SurveyMonkey survey questions — legitimate web services abused as dead-drop resolvers — and injects a 119 KB native PE payload into a suspended ApplicationFrameHost.exe via Early Bird APC injection, preceded by six unpacking layers and Halo's Gate syscall-hooking evasion. E4del, meanwhile, masquerades as a digitally-signed Discord Electron client and carries a Node.js native module (crypto32.node) for privilege-escalation attempts.

The highest-value defensive angle is the FTP banner and Cloudflare Workers infrastructure itself: both RATs still have to make an outbound connection to attacker-controlled infrastructure to receive tasking, and that infrastructure is currently small and stable (four IPs, one domain). Endpoint-side, the injection target (ApplicationFrameHost.exe spawned abnormally) and the Discord masquerade are durable behavioral signals that will outlast any single IP rotation.

Defender priority: this campaign is small today. The FTP-banner and legitimate-web-service (Pinterest/SurveyMonkey) dead-drop techniques are the parts worth hunting for by pattern, not just by IOC — expect copycats to reuse the mechanism against different infrastructure.
02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1The Hacker News, 2026-08-25Attack chain, FTP banner technique, both RATs' capability sets, beaconing states, all four infrastructure IPs + domainYes
1BleepingComputer, 2026-08-21Discord masquerade + crypto32.node module (E4del), Pinterest/SurveyMonkey dead-drop resolver + ApplicationFrameHost.exe injection target (PINHOLE)Yes

Web Hunter Notes

  • Both cited sources attribute the underlying research to SOCRadar's STRU team (original report at socradar.io); that source returned an HTTP 403 to automated fetch and its content was not independently retrieved, so no claim in this pack rests on it directly — only the corroborated subset that both THN and BleepingComputer independently reported is carried forward.
  • No file hashes were published in either accessible source. IOC coverage below is infrastructure- and behavior-based.
  • Confirmed via check_coverage.py against the four IPs and the Cloudflare Workers domain that no published pack in the library shares this infrastructure — this is genuinely new coverage, not a rename of an existing campaign.
  • No indicator in either cited source contained any instruction directed at an AI agent or automated tooling; both were treated as pure threat-intel data.
03

Hunt Brief & Attack Chain

Hunt Hypotheses

#HypothesisMITRETelemetryConfidence
H1A user double-clicked an LNK from a ZIP and a shell process is retrieving content from an FTP connection (banner dead-drop)T1204.002, T1105ProcessRollup2, SyntheticProcessRollup2Medium
H2Endpoints are connecting outbound to one of the four confirmed FTP/stats-panel IPsT1071.002NetworkConnectIP4High
H3Endpoints are resolving/connecting to the Cloudflare Workers second-stage domainT1071.001, T1102.002DnsRequest, NetworkConnectIP4High
H4rundll32.exe is executing a DLL downloaded over WebDAV under a conhost.exe parent (E4del delivery path)T1105, T1218.011ProcessRollup2, SyntheticProcessRollup2Medium
H5ApplicationFrameHost.exe is being spawned by an unexpected parent process, consistent with use as a suspended-process injection targetT1055.004ProcessRollup2, SyntheticProcessRollup2Medium
H6An Electron/Node.js process is running under the name "Discord" from a non-standard install path (masquerade)T1036.005ProcessRollup2, SyntheticProcessRollup2Medium

Attack Chain

StepActionTelemetryHunt Angle
1Phishing delivers a ZIP containing an LNK shortcutProcessRollup2 (explorer.exe → shell)Q1
2LNK connects to an FTP server and reads the malicious banner as its first commandNetworkConnectIP4 (port 21)Q1, Q2
3Banner content drives a PowerShell script that fetches the next stageProcessRollup2Q1
4aE4del path: a DLL is fetched over WebDAV and executed via rundll32.exe under conhost.exe; the resulting Electron app masquerades as Discord and loads crypto32.nodeProcessRollup2Q4, Q6
4bPINHOLE path: a PowerShell stage saves a secondary script to %TEMP%\u.cmd, retrieves C2 config from a Pinterest pin / SurveyMonkey survey, unpacks six layers, uses Halo's Gate to evade EDR hooks, then Early Bird APC-injects a 119 KB PE into a suspended ApplicationFrameHost.exeProcessRollup2Q5
5Both RATs establish ongoing C2 (E4del over WebSocket; PINHOLE via its resolved config) to campaign infrastructure, reporting to a shared stats panelNetworkConnectIP4, DnsRequestQ2, Q3
04

Consolidated IOC Table

TypeValueConfidenceActionContext
IPv4157.254.194.31:21HighdetectPrimary FTP banner dead-drop server
IPv4167.148.41.164:21HighdetectSecondary FTP banner dead-drop server
IPv4209.99.185.38:21HighdetectPINHOLE-specific FTP banner dead-drop server
IPv469.48.228.126:5000HighdetectOperator stats/tracking panel
Domaincloudflare.milicare.inHighdetectCloudflare Workers second-stage script host (path /app/c)
Filenamecrypto32.nodeMediumhuntE4del Node.js native module used for privilege-escalation attempts
Filenameu.cmdLowhuntPINHOLE secondary script, saved to %TEMP% then deleted (forensic evasion) — generic filename, pair with process lineage before alerting
BehavioralEarly Bird APC injection into suspended ApplicationFrameHost.exeHighhuntPINHOLE process-injection target
BehavioralHalo's Gate syscall-hooking evasion + six unpacking layersMediumenrichPINHOLE defense evasion; not directly Falcon-queryable, useful for IR/malware analysis triage
BehavioralC2 configuration retrieved from Pinterest pins / SurveyMonkey surveysMediumenrichPINHOLE dead-drop resolver; a proxy/DLP visibility angle, not Falcon-native
BehavioralElectron app masquerading as Discord, digitally signedMediumhuntE4del delivery disguise

No file hashes were published in either accessible source (the primary SOCRadar research report returned HTTP 403 on fetch and was not used directly). Treat the IP/domain list as perishable given the campaign's early stage; the behavioral signatures are the durable part of this pack.

05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoint (process execution)ProcessRollup2, SyntheticProcessRollup2CriticalCovered on sensor-deployed endpoints
Network egress (FTP + Cloudflare Workers)NetworkConnectIP4, DnsRequestHighPartial — visible only for on-sensor/on-network traffic
Legitimate-web-service C2 (Pinterest, SurveyMonkey)Web/proxy content inspectionMediumGap — Falcon network telemetry sees the connection but not which pin/survey was fetched; needs proxy/DLP-level visibility
In-memory injection (Early Bird APC)Falcon sensor behavioral/ML detectionsHighPartial — no standard CQL-queryable "injection" event exists in the public Falcon data model; rely on process-lineage anomaly hunting (Q5) plus the sensor's own ML-based injection detections
06

ATT&CK Mapping

TacticTechnique IDTechnique NameObserved Behavior
Initial AccessT1566.001Phishing: Spearphishing AttachmentZIP archive containing an LNK shortcut
ExecutionT1204.002User Execution: Malicious FileVictim double-clicks the LNK
Command and ControlT1071.002Application Layer Protocol: File Transfer ProtocolsLNK connects to an FTP server; the banner IS the command channel
Command and ControlT1102.001Web Service: Dead Drop ResolverPINHOLE resolves C2 config from Pinterest pins and SurveyMonkey surveys
Ingress Tool TransferT1105Ingress Tool TransferDLL fetched over WebDAV; secondary script fetched from Cloudflare Workers
Defense EvasionT1055.004Process Injection: Asynchronous Procedure CallEarly Bird APC injection into suspended ApplicationFrameHost.exe
Defense EvasionT1562.001Impair Defenses: Disable or Modify ToolsHalo's Gate indirect-syscall technique to evade EDR usermode hooks
Defense EvasionT1140Deobfuscate/Decode Files or InformationSix unpacking layers; "shellcode fluctuation" keeping only one 4KB section resident
Defense EvasionT1036.005Masquerading: Match Legitimate Name or LocationE4del signed Electron binary presenting as Discord
Privilege EscalationT1068Exploitation for Privilege EscalationE4del's crypto32.node native module used for privilege-escalation attempts
Credential AccessT1555.003Credentials from Password Stores: Credentials from Web BrowsersPINHOLE browser credential-theft module
CollectionT1113Screen CaptureBoth RATs support screenshot/desktop-streaming commands
07

Native Audit-Log Hunts

Two parts of this attack chain sit outside standard Falcon endpoint telemetry entirely and need proxy/DLP or mail-gateway visibility instead:

  • Outbound FTP control-channel traffic (port 21) from user workstations: most modern organizations have no legitimate business reason for a user endpoint to make outbound FTP connections at all — a network firewall or NDR log review for any port-21 outbound traffic, not just to the four listed IPs, is a durable hunt that survives IP rotation.
  • Proxy/web-gateway logs for requests to pinterest.com and surveymonkey.com content-fetch endpoints correlated with a recent LNK/PowerShell execution on the same host: the connection to these legitimate services is not inherently suspicious, but the timing correlation with a fresh malicious-process chain is.
  • Mail gateway / attachment sandbox review of ZIP archives containing LNK files: confirm LNK files are detonated or blocked by the sandbox rather than passed through as "non-executable" content.
  • EDR/AV product self-health telemetry: Halo's Gate and similar syscall-hooking evasion techniques specifically target usermode EDR hooks — a spike in "sensor tamper" or "hook integrity" alerts from the Falcon sensor itself around the same time as a suspicious process chain is a meaningful corroborating signal.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Shell process referencing an FTP URI, spawned from Explorer (LNK double-click)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: PowerShell/cmd launched directly by Explorer (consistent with a user double-clicking an LNK) with an FTP URI in the command line. FP: legitimate internal FTP automation scripts launched this way will match — tune with a path/hash allowlist.

// HUNT: Explorer-spawned shell referencing an FTP URI (LNK banner dead-drop retrieval)
// MITRE: T1204.002, T1105
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// LOOKBACK: 30d (set in the Falcon time picker, not in-query)
// TUNING: allowlist known internal FTP automation by ParentBaseFileName + script hash before alerting
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^explorer\.exe$/i
| FileName=/^(powershell|pwsh|cmd)\.exe$/i
| CommandLine=*ftp:*
| table([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, timestamp])
Q2 · Network connection to confirmed FTP banner dead-drop infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: outbound connections to the four confirmed campaign IPs (three FTP dead-drops, one stats panel). FP: none expected — infrastructure is campaign-specific.

// HUNT: Connection to E4del/PINHOLE FTP banner dead-drop or stats-panel infrastructure
// MITRE: T1071.002
// CONF: high  FP: low  COST: low | REQUIRES: NetworkConnectIP4
// LOOKBACK: 30d
#event_simpleName=NetworkConnectIP4
| in(field=RemoteAddressIP4, values=["157.254.194.31","167.148.41.164","209.99.185.38","69.48.228.126"])
| table([aid, ComputerName, UserName, RemoteAddressIP4, RemotePort, ContextBaseFileName, timestamp])
Q3 · DNS/network activity to the Cloudflare Workers second-stage domain
CONF HIGHFP LOWCOST LOW

Looks for: resolution of or connection to the confirmed Cloudflare Workers domain used to serve the PINHOLE second-stage script. FP: none expected — this specific subdomain is campaign-registered, not shared Cloudflare infrastructure.

// HUNT: DNS/network activity to PINHOLE Cloudflare Workers second-stage host
// MITRE: T1102.001, T1071.001
// CONF: high  FP: low  COST: low | REQUIRES: DnsRequest, NetworkConnectIP4
// LOOKBACK: 30d
#event_simpleName=/DnsRequest|NetworkConnectIP4/
| DomainName=/^cloudflare\.milicare\.in$/i
| table([aid, ComputerName, UserName, DomainName, ContextProcessId_decimal, timestamp])
Q4 · rundll32.exe under conhost.exe executing a network-fetched DLL (E4del delivery)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: rundll32.exe spawned under conhost.exe with a WebDAV-style UNC path in the command line — the reported E4del delivery mechanic. FP: some legitimate software installers use this pattern; tune with a path/publisher allowlist.

// HUNT: rundll32 under conhost executing a WebDAV-hosted DLL (E4del delivery)
// MITRE: T1105, T1218.011
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// LOOKBACK: 30d
// TUNING: allowlist known-legitimate installers that use this rundll32/conhost/WebDAV pattern by publisher or hash
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^conhost\.exe$/i
| FileName=/^rundll32\.exe$/i
| CommandLine=*\\DavWWWRoot\\*
| table([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, timestamp])
Q5 · ApplicationFrameHost.exe spawned by an unexpected parent (PINHOLE injection target)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: ApplicationFrameHost.exe, which under normal Windows operation is launched by explorer.exe/svchost.exe as the UWP app frame host, being spawned by anything else — the profile of a process being started suspended for injection. FP: medium — baseline your environment first, since some legitimate UWP/RuntimeBroker chains vary by Windows build.

// HUNT: ApplicationFrameHost.exe spawned by an unexpected parent (suspended-process injection target)
// MITRE: T1055.004
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// LOOKBACK: 30d
// TUNING: baseline normal ApplicationFrameHost.exe parents for your Windows build (typically explorer.exe/svchost.exe) for 7 days before alerting; exclude RuntimeBroker.exe chains
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^ApplicationFrameHost\.exe$/i
| ParentBaseFileName!=/^(explorer|svchost|RuntimeBroker)\.exe$/i
| table([aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, timestamp])
Q6 · Electron/Node process named Discord running from a non-standard install path
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: a process named Discord.exe (or Update.exe, Discord's legitimate updater name) whose ImageFileName path is NOT under the standard per-user or Program Files Discord install location — the reported E4del masquerade. FP: portable or enterprise-packaged legitimate Discord installs in nonstandard paths will match — allowlist known-good paths for your environment.

// HUNT: Discord-named process running from a non-standard install path (E4del masquerade)
// MITRE: T1036.005
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// LOOKBACK: 30d
// TUNING: allowlist your environment's actual Discord install paths (default %LocalAppData%\Discord) before alerting
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(Discord|Update)\.exe$/i
| ImageFileName!=*\\AppData\\Local\\Discord\\*
| table([aid, ComputerName, UserName, ImageFileName, FileName, CommandLine, timestamp])
09

CrowdStrike Custom IOA Recommendations

CandidateSource QueryPatternExclusionsDeployment Path
IOA: FTP dead-drop infrastructure connectionQ2RemoteAddressIP4 in confirmed IP listNone knownPromote directly — low FP, high confidence; set to detect/alert
IOA: Cloudflare Workers second-stage hostQ3DomainName = cloudflare.milicare.inNone knownPromote directly
Investigate-only: ApplicationFrameHost anomalous parentQ5Unexpected parent processWindows-build-specific UWP chains (see TUNING)Scheduled hunt search until baselined per Windows build in your fleet
Investigate-only: Discord path masqueradeQ6Discord-named process outside standard pathEnterprise-packaged installs (see TUNING)Scheduled hunt search feeding SOC triage
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
ipv4,157.254.194.31,detect,high,2027-02-28,E4del/PINHOLE primary FTP banner dead-drop server,campaign:E4del-PINHOLE
ipv4,167.148.41.164,detect,high,2027-02-28,E4del/PINHOLE secondary FTP banner dead-drop server,campaign:E4del-PINHOLE
ipv4,209.99.185.38,detect,high,2027-02-28,PINHOLE-specific FTP banner dead-drop server,campaign:E4del-PINHOLE
ipv4,69.48.228.126,detect,medium,2027-02-28,E4del/PINHOLE operator stats/tracking panel (port 5000),campaign:E4del-PINHOLE
domain,cloudflare.milicare.in,detect,high,2027-02-28,PINHOLE Cloudflare Workers second-stage script host,campaign:E4del-PINHOLE
filename,crypto32.node,hunt,medium,2026-11-29,E4del Node.js native module for privilege escalation,campaign:E4del-PINHOLE
Behavioral Signaturesfor SOC/IR reference
# E4del / PINHOLE behavioral fingerprints
C2 mechanism (both):     FTP server connection-banner text used as initial command channel
PINHOLE dead-drop:       C2 config retrieved from Pinterest pins / SurveyMonkey survey questions
PINHOLE injection:       Early Bird APC injection of a 119 KB native x86-64 PE into a
                         suspended ApplicationFrameHost.exe
PINHOLE evasion:         Halo's Gate indirect-syscall EDR-hook bypass; six unpacking layers;
                         "shellcode fluctuation" (only one 4KB section resident at a time)
E4del masquerade:        Digitally-signed Electron app presenting as Discord
E4del module:            crypto32.node (Node.js native module, privilege-escalation attempts)
E4del beaconing states:  Active 0-20s (200ms-2s check-in) -> Semi-Active 20-40s (2-5s) ->
                         Inactive 40s+ (5-9s)
Forensic evasion:        PINHOLE secondary script saved to %TEMP%\u.cmd then deleted post-use
Named Toolingcontext
RAT 1:   E4del  -- Node.js/Electron RAT, 8 commands, Discord masquerade
RAT 2:   PINHOLE -- shellcode-based RAT, 14 commands, browser-stealer module
Novel technique: FTP server connection banners used as a dead-drop resolver (DDR)
Secondary DDR:   Legitimate web services (Pinterest, SurveyMonkey) for C2 config
Campaign stage:  Early / low-volume at time of reporting (11 execution events observed)
Network / ASR Audit Checklistchecklist
# Run against firewall / ASR / EDR console, not Falcon LogScale
1. Confirm outbound FTP (port 21) from general user workstations is blocked or requires
   proxy/allowlist exception -- most orgs have no legitimate need for it.
2. Confirm Attack Surface Reduction rule "Block execution of potentially obfuscated
   scripts" and LNK detonation in the mail/attachment sandbox are both enabled.
3. Confirm WebDAV client (WebClient service) is disabled on workstations that don't need it.
4. Review Falcon sensor tamper-protection / hook-integrity alert history for the same
   time window as any Q5 hit -- Halo's Gate specifically targets usermode EDR hooks.
11

Detection Validation Gates

GateRequirementStatus
Telemetry readyProcessRollup2/SyntheticProcessRollup2, DnsRequest, NetworkConnectIP4 enabled and flowing for target hostsVerify per-tenant before deployment
Benign baselineRun Q1, Q4, Q5, Q6 in investigate mode for 7 days to characterize normal volume before alertingRequired before promotion
Positive testConfirm Q2/Q3 fire against a synthetic network/DNS event using the listed IPs/domain in a lab/test environmentRecommended
Promotion criteriaQ2/Q3 → Custom IOA (low FP, high conf). Q1/Q4/Q5/Q6 stay scheduled hunts until each is tuned per §9.See §9
12

Hardening — Tiered

Immediate (this week)

Block confirmed C2 infrastructure at the network egress. Add the four IPs and the Cloudflare Workers domain from §10 to your firewall/DNS filter deny list. Authority: MITRE M1037 (Filter Network Traffic). Verify: a test connection attempt to a listed IP is blocked/logged.

Block or restrict outbound FTP from general user workstations. Most organizations have no legitimate reason for a standard user endpoint to make outbound FTP connections; this single control defeats the core dead-drop mechanism for both RATs regardless of infrastructure rotation. Authority: MITRE M1037; CIS Microsoft Windows Benchmark (network hardening section). Verify: outbound port-21 connection attempts from a test workstation are blocked.

Confirm LNK files inside ZIP archives are detonated by the mail/attachment sandbox, not passed through as benign "shortcut" content. Authority: MITRE M1049 (Antivirus/Antimalware). Verify: a test ZIP+LNK sample is flagged or blocked by the mail gateway.

Near term (1–4 weeks)

Disable the WebDAV client (WebClient service) on workstations that don't require it, closing the delivery path E4del reportedly uses to fetch its DLL. Authority: MITRE M1042 (Disable or Remove Feature or Program); CIS Microsoft Windows Benchmark. Verify: Get-Service WebClient shows the service disabled and a test WebDAV connection fails.

Enable an Attack Surface Reduction rule blocking obfuscated/encoded script execution to raise the cost of the multi-layer PowerShell staging both RATs rely on. Authority: Microsoft ASR rule guidance; MITRE M1040 (Behavior Prevention on Endpoint). Verify: ASR rule shows "Block" mode in Defender/Intune reporting and a test obfuscated script is blocked.

Strategic (1–3 months)

Deploy application allowlisting (WDAC or AppLocker) for Electron/Node.js-packaged applications, restricting execution to known-good publisher signatures and install paths — this directly defeats the Discord-masquerade delivery path and similar future masquerades. Authority: MITRE M1038 (Execution Prevention); Microsoft WDAC design guide. Verify: a test Electron binary signed by an unapproved publisher is blocked from executing.

Extend EDR/NDR monitoring to generically flag legitimate-web-service dead-drop patterns (recently-executed suspicious process chain followed shortly by a request to a consumer content site such as Pinterest, Pastebin, or similar) rather than only alerting on this campaign's specific URLs — the technique is reusable by other actors. Authority: MITRE M1031 (Network Intrusion Prevention). Verify: a simulated process-chain-then-web-request test sequence generates a correlated alert.

13

Deployable Playbooks

Playbook 1 — Block outbound FTP (port 21) from standard workstations (Windows Firewall / GPO)

Prerequisites: Domain Admin or GPO-edit rights; identify any legitimate business FTP users first and place them in an exception security group
Reboot required: No (policy applies on next gpupdate)
Rollback: Disable or unlink the GPO; no persistent endpoint state is modified

# PowerShell equivalent for a single host / test group (Windows Defender Firewall)
New-NetFirewallRule -DisplayName "Block Outbound FTP (E4del-PINHOLE hardening)" `
  -Direction Outbound -Protocol TCP -RemotePort 21 -Action Block `
  -Profile Any -Group "HuntPack-Hardening"

# Exception example for an approved FTP automation host
New-NetFirewallRule -DisplayName "Allow Outbound FTP - Approved Host" `
  -Direction Outbound -Protocol TCP -RemotePort 21 -Action Allow `
  -Program "C:\Approved\ftp-automation.exe" -Profile Any -Group "HuntPack-Hardening"

Playbook 2 — Disable the WebDAV client service

Prerequisites: Confirm no line-of-business application depends on the WebClient service in your environment first
Reboot required: No (service stop takes effect immediately; set to Disabled to survive reboot)
Rollback: Set-Service -Name WebClient -StartupType Automatic; Start-Service -Name WebClient

Stop-Service -Name WebClient -Force
Set-Service -Name WebClient -StartupType Disabled

# Verify
Get-Service -Name WebClient | Select-Object Status, StartType

Playbook 3 — Block confirmed C2 infrastructure (DNS sinkhole + firewall)

Prerequisites: Administrative access to DNS filtering platform and perimeter firewall
Reboot required: No
Rollback: Remove the entries below and reload the zone/firewall policy; purely resolver/firewall-side, no endpoint state changed

; DNS RPZ entry
cloudflare.milicare.in.    CNAME .

# Firewall deny rules
deny ip any host 157.254.194.31
deny ip any host 167.148.41.164
deny ip any host 209.99.185.38
deny ip any host 69.48.228.126
14

Containment Runbook

PhaseActionsOwnerEvidence to Preserve
IsolateFalcon RTR network-contain any host matching Q2/Q3/Q5/Q6; block the four IPs and the Cloudflare Workers domain at the perimeter immediatelyIR teamIsolation timestamp; full process tree around the matching event
EradicateTerminate and remove the E4del Electron process and PINHOLE-injected process; delete dropped artifacts (masquerading Electron app, any residual %TEMP% scripts); rotate any credentials the host's browser had stored if PINHOLE's stealer module executedIR / Endpoint teamSample of the Discord-masquerading binary; memory capture of the injected ApplicationFrameHost.exe process if feasible before termination
RecoverReimage if injection/privilege-escalation success cannot be ruled out; reissue credentials; confirm firewall/WebDAV hardening (Playbooks 1-2) is applied before returning the host to serviceEndpoint / Identity teamReimage record; hardening compliance confirmation
Post-incidentAdd any newly-observed FTP/dead-drop infrastructure to the blocklist in §10; feed the ApplicationFrameHost.exe parent baseline (Q5) back into tuning if false positives were foundDetection engineeringUpdated IOC list; query tuning changelog
15

Detection Coverage Map

TechniqueBehaviorCQL CoverageNative/IOA CoverageStatus
T1204.002/T1105 Initial deliveryLNK → FTP banner → PowerShellQ1Mail sandbox LNK detonation (§7)Partial
T1071.002 FTP banner C2Command retrieval from bannerQ2Firewall port-21 egress review (§7)Good
T1102.001 Dead Drop ResolverPinterest/SurveyMonkey C2 configProxy/DLP correlation hunt (§7)Gap — not Falcon-visible
T1055.004 Process Injection (APC)Early Bird APC into ApplicationFrameHost.exeQ5Falcon sensor ML injection detections (vendor-side)Partial — no public CQL-queryable injection event
T1562.001 Impair DefensesHalo's Gate syscall-hook evasionSensor tamper/hook-integrity alerting (§7)Gap
T1036.005 MasqueradingDiscord-branded Electron appQ6Application allowlisting (§12, strategic)Good
T1105/T1218.011 DLL delivery via rundll32WebDAV-hosted DLL executionQ4WebDAV client disable (§12)Good

Validation gates (§11) must pass before Q2/Q3 promote to Custom IOA; Q1/Q4/Q5/Q6 remain scheduled hunts pending environment-specific tuning.

16

Hunt Summary Ticket

TITLE:      Hunt for E4del / PINHOLE FTP-banner dead-drop RAT campaign
SEVERITY:   High (novel evasive RATs; low current volume but rapidly reusable technique)
SCOPE:      All Windows endpoints; network egress logs for outbound FTP and Cloudflare
            Workers traffic
HYPOTHESIS: Endpoints show contact with confirmed FTP/stats-panel/Workers infrastructure,
            LNK-triggered FTP retrieval, or the ApplicationFrameHost/Discord-masquerade
            behavioral signatures
QUERIES:    Q1-Q6 (this pack, section 8); native hunts (section 7)
DO FIRST:   Run Q2 and Q3 (high-confidence, low-FP) across the full fleet; review
            firewall logs for any outbound port-21 traffic fleet-wide
FINDINGS:   [fill in after execution]
GAPS:       No Falcon-native visibility into which Pinterest pin/SurveyMonkey survey was
            fetched, and no public CQL-queryable process-injection event -- native hunts
            and sensor-side ML detections in section 7 are required, not optional
ACTIONS:    Block IPs/domain (section 10); deploy Playbooks 1-3 (section 13); begin
            WDAC/AppLocker rollout for Electron apps (section 12, strategic tier)
OWNER:      [assign]
VERSION:    v0.1 -- 2026-08-29
17

Changelog

v0.12026-08-29Initial draft — built from two corroborating public sources (The Hacker News, BleepingComputer); the underlying SOCRadar research report was not directly accessible (HTTP 403) and no claim rests on it alone. No file-hash intelligence available at time of publication.
18

References

TierSourceUsed ForAccess Date
1The Hacker News — E4del and PINHOLE RATs Turn FTP Banners Into Dead Drops for Malware Commands (2026-08-25)Attack chain, infrastructure IPs/domain, capability sets, beaconing states2026-08-29
1BleepingComputer — Hackers abuse FTP server banners to deliver new Windows malware (2026-08-21)Discord masquerade, crypto32.node, Pinterest/SurveyMonkey dead-drop resolver, ApplicationFrameHost.exe injection target2026-08-29