← All hunts high TLP:CLEAR Part 2 of 2

iClickFix: NetSupport RAT Execution and Persistence

An intruder has used a ClickFix social engineering lure to execute a PowerShell downloader that installs NetSupport RAT and establishes persistent communication with a multi-hop proxy C2 infrastructure.

Based on research by Sekoia 2026-09-20 11 steps · 3 queries T1021.001 T1041 T1059.001 T1090.003 T1547.001 T1566

Brief

The iClickFix framework represents a significant evolution in the delivery of NetSupport RAT, using compromised WordPress sites to deploy social engineering lures. Researchers at Sekoia recently detailed this activity in their report titled iClickFix: WordPress-targeting framework using ClickFix (https://blog.sekoia.io/meet-iclickfix-a-widespread-wordpress-targeting-framework-using-the-clickfix-tactic/). The framework uses a fake CAPTCHA interface that convinces users to execute a malicious PowerShell command. This command is often delivered via the clipboard, bypassing many browser-based security controls. Our hunt focuses on identifying the specific execution patterns and subsequent persistence associated with this campaign. We treat this as a hunt because the individual components often mimic legitimate administrative activity, requiring a correlated view to confirm a threat.

Phase 1: Execution Lead

The hunt begins by querying hb_process_activity for instances of powershell.exe running with hidden windows and specific downloader cmdlets like iwr or Invoke-WebRequest. We focus on commands that target known delivery domains such as scottvmorton.com. This query captures the initial stage where the malware first enters the environment.

Phase 2: Lead Assessment

Not all hidden PowerShell commands are malicious. The hunt includes a gate where an agent evaluates the command-line arguments of the identified processes. It looks for the specific obfuscation and execution policy bypass flags used by iClickFix. Only if the agent determines the activity is suspicious does the hunt proceed to the more resource-intensive enrichment phases.

Phase 3: Persistence and C2

If the lead is confirmed, the hunt fans out to look for evidence of a successful RAT installation. One query searches for rare executable paths in the ProgramData directory, specifically looking for common NetSupport binaries like client32.exe in randomized subfolders. Simultaneously, another query checks hb_dns_activity for resolutions of known NetSupport gateway domains like pusykakimao.com. Legitimate software rarely operates from these paths while contacting these specific external hosts.

Phase 4: Final Triage

A second agent consolidates the findings from the execution, file, and network queries. By correlating a suspicious PowerShell download with the presence of a new binary in ProgramData and active DNS traffic to a C2 domain, the agent can provide a high-confidence verdict. If an infection is confirmed, the hunt initiates an isolation action to contain the host.

Blind Spots

This hunt relies on process command-line telemetry and DNS logs. If an adversary uses a different delivery mechanism that does not involve PowerShell or if they use a custom downloader that avoids standard cmdlets, the initial lead query will not fire. Additionally, the lack of full HTTP URI visibility means we can confirm contact with the C2 infrastructure but cannot inspect the specific data being exfiltrated.

In this series

Steps

  1. PowerShell Hidden Downloader

    Query · detection candidate

    Identify the initial ClickFix-delivered command that uses hidden PowerShell windows to download the second-stage payload.

    reads hb_process_activitysql
    SELECT device_hostname, process_cmd_line, user_name, time FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%powershell.exe' AND LOWER(process_cmd_line) LIKE '%-w hidden%' AND (LOWER(process_cmd_line) LIKE '%iwr%' OR LOWER(process_cmd_line) LIKE '%invoke-webrequest%' OR LOWER(process_cmd_line) LIKE '%scottvmorton.com%')) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Rows show PowerShell executing with hidden windows and downloader cmdlets targeting the delivery domain scottvmorton.com. Silence means no overt ClickFix execution was detected.

  2. Initial Lead Assessment

    Agent triage

    Evaluate whether the identified PowerShell commands match the obfuscated ClickFix delivery pattern.

  3. Gate: Proceed to Enrichment?

    Decision

    Stop the hunt if the lead activity is determined to be benign or non-existent to save resources.

  4. Rare ProgramData Process Paths

    Query · baseline

    Identify NetSupport RAT binaries like client32.exe in unique, non-standard ProgramData subdirectories per host.

    reads hb_process_activitysql
    SELECT device_hostname, LOWER(process_path) AS path, MIN(time) AS first_seen FROM hb_process_activity WHERE (LOWER(process_path) LIKE '%\programdata\%' AND (LOWER(process_path) LIKE '%client32.exe' OR LOWER(process_path) LIKE '%\s1kcmnfzi3\%')) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, path

    What a hit looks like. A binary path seen on only a few hosts across the fleet; legitimate ProgramData software is typically widespread.

  5. DNS Lookups to NetSupport C2

    Query · enrichment

    Find connections to the specific domains used by the NetSupport RAT gateways as identified in the research.

    reads hb_dns_activitysql
    SELECT device_hostname, query_hostname, process_name, time FROM hb_dns_activity WHERE (instr(',' || '{{c2_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. DNS resolutions for pusykakimao.com or fnotusykakimao.com associated with processes like explorer.exe or client32.exe.

  6. Consolidate Infection Evidence

    Agent triage

    Correlate the PowerShell lead with the rare ProgramData binaries and C2 connections per host.

  7. Route on Verdict

    Decision

    Direct the hunt towards immediate containment for confirmed malicious results.

  8. Isolate Endpoint

    Response action

    Prevent further exfiltration and stop the adversary from using the RAT access.

  9. Analyst Triage Review

    Analyst task

    Perform manual confirmation of the RAT infection and tune detection logic.

  10. Close Out

    Analyst task

    Finalize the hunt and record negative results for future baseline comparison.

Coverage

Scenario coverage

StageCoveredHow, or why not
Malicious PowerShell Downloader
T1059.001
Yes lead-powershell-downloader
NetSupport RAT Persistence and Evasion
T1555
Yes rare-programdata-binaries
Command and Control and Data Theft
T1041 · T1090.003 · T1021.001 · T1555
Yes c2-dns-lookups
Malicious JavaScript Injection
T1566
Out of scope Belongs to another part of the 'iClickFix: WordPress-targeting framework using ClickFix' series.
TDS Redirection and Script Fetching
T1566
Out of scope Belongs to another part of the 'iClickFix: WordPress-targeting framework using ClickFix' series.
ClickFix Clipboard Social Engineering
T1115
Out of scope Belongs to another part of the 'iClickFix: WordPress-targeting framework using ClickFix' series.

Blind spots

  • Needs hb_script_activity for script block logging. The hunt relies on the first command-line downloader; if the attacker changes the delivery command but keeps the script behavior, the lead query will fail to fire. It would answer What specifically did the obfuscated PowerShell script do after downloading the payload?.
  • Needs hb_http_activity with URI inspection. DNS lookups confirm the host talked to the C2, but cannot confirm if data exfiltration occurred without HTTP URI visibility. It would answer Was data exfiltrated to /fakeurl.htm?.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
c2_domainslist[domain]pusykakimao.com, fnotusykakimao.com, scottvmorton.comC2 domains identified in the iClickFix research; these are used for payload delivery and NetSupport gateway communication.
lookback_daysnumber14Days of history to examine.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: A simple detection rule might catch the specific scottvmorton domain, but
  this hunt correlates the initial PowerShell execution with rare ProgramData persistence
  and gateway connections, allowing an analyst to see the full intrusion chain rather
  than a single disjointed alert.
blind_spots:
- id: limited-process-telemetry
  question: What specifically did the obfuscated PowerShell script do after downloading
    the payload?
  requires: hb_script_activity for script block logging
  risk: The hunt relies on the first command-line downloader; if the attacker changes
    the delivery command but keeps the script behavior, the lead query will fail to
    fire.
  stage: powershell-payload-execution
- id: no-network-telemetry
  question: Was data exfiltrated to /fakeurl.htm?
  requires: hb_http_activity with URI inspection
  risk: DNS lookups confirm the host talked to the C2, but cannot confirm if data
    exfiltration occurred without HTTP URI visibility.
  stage: netsupport-rat-c2-and-data-theft
coverage:
- stage: powershell-payload-execution
  status: covered
  steps:
  - lead-powershell-downloader
- stage: rat-persistence-and-dropper-cleanup
  status: covered
  steps:
  - rare-programdata-binaries
- stage: netsupport-rat-c2-and-data-theft
  status: covered
  steps:
  - c2-dns-lookups
- reason: 'Belongs to another part of the ''iClickFix: WordPress-targeting framework
    using ClickFix'' series.'
  stage: compromised-wordpress-injection
  status: out_of_scope
- reason: 'Belongs to another part of the ''iClickFix: WordPress-targeting framework
    using ClickFix'' series.'
  stage: tds-redirection-and-payload-delivery
  status: out_of_scope
- reason: 'Belongs to another part of the ''iClickFix: WordPress-targeting framework
    using ClickFix'' series.'
  stage: clickfix-clipboard-social-engineering
  status: out_of_scope
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: promote-to-detection
  justification: iClickFix is a widespread malware framework that has compromised
    thousands of sites to deliver NetSupport RAT; a negative result over the estate
    confirms the current social engineering campaign has not successfully landed a
    beachhead.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An intruder has used a ClickFix social engineering lure to execute a PowerShell
  downloader that installs NetSupport RAT and establishes persistent communication
  with a multi-hop proxy C2 infrastructure.
labels:
- hunt
- attack.t1059.001
- attack.t1566
- attack.t1547.001
- attack.t1041
- attack.t1090.003
- attack.t1021.001
name: 'iClickFix: NetSupport RAT Execution and Persistence'
parameters:
  c2_domains:
    default:
    - pusykakimao.com
    - fnotusykakimao.com
    - scottvmorton.com
    description: C2 domains identified in the iClickFix research; these are used for
      payload delivery and NetSupport gateway communication.
    from:
      kind: article
      observed: '2025-12-09'
      ref: https://blog.sekoia.io/meet-iclickfix-a-widespread-wordpress-targeting-framework-using-the-clickfix-tactic/
    type: list[domain]
  lookback_days:
    default: '14'
    description: Days of history to examine.
    type: number
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://blog.sekoia.io/meet-iclickfix-a-widespread-wordpress-targeting-framework-using-the-clickfix-tactic/
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Focus on Windows endpoints with direct internet access and active human
  users, as the ClickFix lure requires interaction through a browser.
references:
- name: "Sekoia \u2014 IClickFix: WordPress-targeting framework using ClickFix"
  url: https://blog.sekoia.io/meet-iclickfix-a-widespread-wordpress-targeting-framework-using-the-clickfix-tactic/
related:
- hunt: iclickfix-wordpress-injection-discovery
  reason: Tracking the compromised WordPress sites and the TDS redirection belongs
    to an external-scanning or network-centric hunt.
  relation: out-of-scope-alternative
- hunt: iclickfix-web-redirection-delivery
  relation: follows
scenario:
  stages:
  - name: Malicious JavaScript Injection
    observables:
    - ic-tracker-js
    - ksfldfklskdmbxcvb.com
    - ahpc.gov.gh
    - dns-prefetch
    slug: compromised-wordpress-injection
    tactic: initial-access
    techniques:
    - T1566
  - name: TDS Redirection and Script Fetching
    observables:
    - ototaikfffkf.com/fffa.js
    - ksdkgsdkgkgmgm.pro/ofofo.js
    - booksbypatriciaschultz.com/liner.php
    - 'x-robots-tag: noindex'
    - YOURLS admin panel
    slug: tds-redirection-and-payload-delivery
    tactic: execution
    techniques:
    - T1566
  - name: ClickFix Clipboard Social Engineering
    observables:
    - navigator.clipboard.writeText
    - Verify you are human
    - Ctrl + V
    - Win + R
    - Unusual Web Traffic Detected
    slug: clickfix-clipboard-social-engineering
    tactic: collection
    techniques:
    - T1115
  - name: Malicious PowerShell Downloader
    observables:
    - powershell -w hidden -nop -c
    - scottvmorton.com/tytuy.json
    - 05b03a25e10535c5c8e2327ee800ff5894f5dbfaf72e3fdcd9901def6f072c6d
    - 8db6.ps1
    slug: powershell-payload-execution
    tactic: execution
    techniques:
    - T1059.001
  - name: NetSupport RAT Persistence and Evasion
    observables:
    - ProgramData\S1kCMNfZi3\
    - client32.exe
    - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    - SecureModule Engine v1.0.0
    - RunMRU
    slug: rat-persistence-and-dropper-cleanup
    tactic: persistence
    techniques:
    - T1555
  - name: Command and Control and Data Theft
    observables:
    - pusykakimao.com:443
    - fnotusykakimao.com:443
    - /fakeurl.htm
    - client32.ini
    - licensee KAKAN
    slug: netsupport-rat-c2-and-data-theft
    tactic: command-and-control
    techniques:
    - T1041
    - T1090.003
    - T1021.001
    - T1555
  summary: IClickFix is a WordPress-targeting framework that compromises legitimate
    sites to inject malicious JavaScript and redirect users through a YOURLS-based
    Traffic Distribution System. Victims are tricked by a ClickFix-style fake CAPTCHA
    lure into executing a PowerShell command that downloads and deploys the NetSupport
    RAT for persistent remote access and data exfiltration.
series:
  index: 2
  slug: iclickfix-wordpress-targeting-framework-using-clickfix
  title: 'iClickFix: WordPress-targeting framework using ClickFix'
  total: 2
severity: high
targets:
  analyst:
    name: Tier-2 analyst
    role: analyst
  endpoint:
    category: endpoint
    name: Endpoint telemetry (hb_ surfaces)
    telemetry:
    - endpoint
  hunter:
    agent: true
    name: Hunt agent
tlp: clear
type: investigation
---


# iClickFix: NetSupport RAT Execution and Persistence

The adversary uses compromised WordPress sites to deliver a fake CAPTCHA that tricks users into executing malicious PowerShell. This hunt identifies the initial hidden PowerShell downloader pattern. If the hunt finds suspicious execution, it fans out to look for rare NetSupport binaries in ProgramData and network traffic to the infrastructure named in recent research. An agent weighs the execution and post-exploitation evidence to identify compromised hosts for isolation.

## lead-powershell-downloader
<!-- PowerShell Hidden Downloader -->
Identify the initial ClickFix-delivered command that uses hidden PowerShell windows to download the second-stage payload.

```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days)
~~~yaml
expected: Rows show PowerShell executing with hidden windows and downloader cmdlets
  targeting the delivery domain scottvmorton.com. Silence means no overt ClickFix
  execution was detected.
reads:
- device_hostname
- process_cmd_line
- process_name
- time
- user_name
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, process_cmd_line, user_name, time FROM hb_process_activity WHERE (LOWER(process_name) LIKE '%powershell.exe' AND LOWER(process_cmd_line) LIKE '%-w hidden%' AND (LOWER(process_cmd_line) LIKE '%iwr%' OR LOWER(process_cmd_line) LIKE '%invoke-webrequest%' OR LOWER(process_cmd_line) LIKE '%scottvmorton.com%')) AND time >= datetime('now', '-{{lookback_days}} days')
```

## agent-lead-read
<!-- Initial Lead Assessment -->
```agent target=hunter
cite: required
context:
- lead-powershell-downloader
max_iterations: 3
objective: 'Determine if the PowerShell command found in the lead matches the iClickFix
  pattern: hidden window, execution policy bypass, and use of iwr or invoke-webrequest
  to the scottvmorton delivery domain.'
success_criteria: A verdict of malicious or suspicious for the lead command.
tools:
- endpoint
```

## gate-decision
<!-- Gate: Proceed to Enrichment? -->
if~: "the agent-lead-read verdict is malicious or suspicious for at least one host" (confidence: high, judge=hunter)
then: → fan-out-enrichment
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: limited-process-telemetry)
else: → close-out

## fan-out-enrichment
<!-- Enrich with Persistence and C2 Lookups -->
parallel:
- → rare-programdata-binaries
- → c2-dns-lookups
join: → agent-final-triage

## rare-programdata-binaries
<!-- Rare ProgramData Process Paths -->
Identify NetSupport RAT binaries like client32.exe in unique, non-standard ProgramData subdirectories per host.

```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: A binary path seen on only a few hosts across the fleet; legitimate ProgramData
  software is typically widespread.
prevalence:
  by: device_hostname
  key:
  - path
  rare_below: 5
reads:
- device_hostname
- process_path
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, LOWER(process_path) AS path, MIN(time) AS first_seen FROM hb_process_activity WHERE (LOWER(process_path) LIKE '%\programdata\%' AND (LOWER(process_path) LIKE '%client32.exe' OR LOWER(process_path) LIKE '%\s1kcmnfzi3\%')) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, path
```

## c2-dns-lookups
<!-- DNS Lookups to NetSupport C2 -->
Find connections to the specific domains used by the NetSupport RAT gateways as identified in the research.

```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, c2_domains=c2_domains)
~~~yaml
expected: DNS resolutions for pusykakimao.com or fnotusykakimao.com associated with
  processes like explorer.exe or client32.exe.
reads:
- device_hostname
- process_name
- query_hostname
- time
silence: not_evidence_of_absence
source: hb_dns_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, query_hostname, process_name, time FROM hb_dns_activity WHERE (instr(',' || '{{c2_domains}}' || ',', ',' || LOWER(query_hostname) || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## agent-final-triage
<!-- Consolidate Infection Evidence -->
```agent target=hunter
cite: required
context:
- agent-lead-read
- rare-programdata-binaries
- c2-dns-lookups
max_iterations: 5
objective: Determine if the host is compromised by NetSupport RAT by weighing the
  lead execution, the presence of rare ProgramData binaries, and network traffic to
  known gateway domains.
success_criteria: A verdict of malicious per host citing the PowerShell process, the
  local file path, and the DNS lookup.
tools:
- endpoint
```

## decision-route-response
<!-- Route on Verdict -->
if~: "the agent-final-triage verdict is malicious for at least one host" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: no-network-telemetry)
else: → close-out

## isolate-host
<!-- Isolate Endpoint -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host, preserve the ProgramData subdirectories for forensics, and identify the user credentials that were active at the time of the PowerShell execution.
```
→ analyst-review

## analyst-review
<!-- Analyst Triage Review -->
```manual target=analyst
Review the cited rows from the triage step. Verify the ProgramData path and the DNS connection process. If confirmed, check for lateral movement attempts via RDP and check the clipboard content if possible.
```
→ close-out

## close-out
<!-- Close Out -->
```manual target=analyst
Record the hunt results. If no malicious activity was found, note any false positives from common PowerShell updaters for future exclusion.
```
→ end

Run it

Take this hunt into your environment.

Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.

Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, then reviewed by a person.