← All hunts high TLP:CLEAR Part 1 of 2

Bissa Scanner Mass Exploitation and Credential Harvesting

An attacker is using the Bissa scanner to exploit unauthenticated vulnerabilities in Next.js or WordPress, then harvesting sensitive credentials from .env files and cloud metadata.

Based on research by The DFIR Report 2026-09-23 11 steps · 3 queries T1059.004 T1083 T1190 T1560.001

Brief

Why this hunt

We based this hunt on the findings from The DFIR Report: "Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting" (https://thedfirreport.com/2026/04/22/bissa-scanner-exposed-ai-assisted-mass-exploitation-and-credential-harvesting/). The Bissa scanner is a modular platform that automates the exploitation lifecycle, from vulnerability scanning to secret harvesting. It currently targets over 900 organizations by capitalizing on unauthenticated vulnerabilities in common web frameworks.

Hunt Flow

The hunt begins by scoping the attack surface. The first query checks the vulnerability management surface to identify internet-facing hosts running software versions susceptible to the Bissa scanner modules. This initial list focuses the behavioral investigation on assets with known exposure, reducing noise from generic web scanning.

Once we identify vulnerable assets, the hunt fanned out to look for post-exploitation behaviors in parallel. One query searches for rare processes accessing environment files. It isolates file-read events where the process name appears on fewer than five devices across the estate. This helps distinguish automated harvest scripts from legitimate web server processes like node or php-fpm.

At the same time, the hunt searches for the creation of specific staging artifacts. The Bissa scanner batches stolen secrets into ZIP files following a consistent naming convention: env-batch- followed by a timestamp or batch ID. We query the file activity surface for any archive matching this pattern to find direct evidence of the scanner workflow.

The final phase involves correlation and triage. An analyst or triage agent matches the behavioral alerts to the list of vulnerable hosts. A host that is both vulnerable and exhibiting rare access to secrets or staging archive creation receives a high-confidence verdict for compromise, triggering isolation and credential rotation tasks.

Blind Spots

This hunt has two primary limitations. First, it cannot inspect the content of HTTP POST bodies. We can identify that an exploit was attempted against a vulnerable endpoint, but we cannot see the specific commands injected via the W3 Total Cache comment exploit. Second, if the exploitation payload is extremely short-lived, it may execute and finish between process inventory snapshots, potentially leaving no trace in the process list if real-time eventing is unavailable.

In this series

Steps

  1. Identify vulnerable web assets

    Query · scoping

    Identify hosts running software versions vulnerable to the Bissa scanner's primary exploit modules and retrieve their hostnames for behavioral correlation.

    reads hb_vulnerability_findingsql
    SELECT v.device_uid, d.hostname AS device_hostname, v.cve_uid, v.severity, v.title FROM hb_vulnerability_finding v JOIN hb_devices d ON v.device_uid = d.device_uid WHERE (instr(',' || '{{vulnerable_cves}}' || ',', ',' || v.cve_uid || ',') > 0) AND v.status != 'suppressed'

    What a hit looks like. A list of resources currently reporting unpatched vulnerabilities targeted by the scanner, correlated with device hostnames.

  2. Evaluate vulnerability lead

    Agent triage

    Analyze the scope and severity of the vulnerability findings to decide if behavioral hunting is warranted.

  3. Exposure Gate

    Decision

    Proceed to behavioral queries only if vulnerable assets are identified in the environment.

  4. Rare processes accessing environment files

    Query · baseline

    Identify specific rows for rare processes reading .env files, which may indicate the scanner's automated payload.

    reads hb_file_activitysql
    SELECT device_hostname, process_name, file_path, time FROM hb_file_activity WHERE (LOWER(file_name) LIKE '{{env_file_pattern}}' OR LOWER(file_path) LIKE '{{env_file_pattern}}') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND process_name IN (SELECT process_name FROM hb_file_activity WHERE (LOWER(file_name) LIKE '{{env_file_pattern}}' OR LOWER(file_path) LIKE '{{env_file_pattern}}') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY process_name HAVING COUNT(DISTINCT device_hostname) < 5)

    What a hit looks like. Specific rows of process activity touching .env files on few hosts. Legitimate web server processes should be common; one-off scripts are suspicious.

  5. Bissa scanner staging archive creation

    Query · detection candidate

    Search for the specific staging archive format used by the Bissa scanner to batch stolen secrets, including process context to distinguish from admins.

    reads hb_file_activitysql
    SELECT device_hostname, file_name, file_path, process_name, actor_user_name, time FROM hb_file_activity WHERE LOWER(file_name) LIKE '{{batch_zip_pattern}}' AND activity_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)

    What a hit looks like. Creation of env-batch ZIP files. This naming convention is specific to the Bissa scanner workflow and highly indicative of compromise when not performed by a known admin.

  6. Triage investigation findings

    Agent triage

    Correlate vulnerability exposure with behavioral evidence to confirm active exploitation by the Bissa scanner, specifically on the vulnerable hosts identified in the lead.

  7. Route on verdict

    Decision

    Direct the hunt toward containment or close-out based on the intersection of vulnerability and behavioral findings.

  8. Isolate compromised host

    Response action

    Immediately halt the automated harvest and exfiltration process on a confirmed compromised endpoint.

  9. Analyst forensic review

    Analyst task

    Manually verify the credentials harvested and initiate rotation.

  10. Hunt close-out

    Analyst task

    Record the findings and ensure vulnerable assets are scheduled for patching even if no exploit was found.

Coverage

Scenario coverage

StageCoveredHow, or why not
Mass Vulnerability Exploitation
T1190
Yes vulnerability-lead
Local Credential and Metadata Enumeration
T1059.004 · T1083
Yes env-access-prevalence
Archive Staging of Environment Files
T1560.001
Yes staging-zip-creation
Telegram Bot Command and Control
T1102.002 · T1071.001
Out of scope Belongs to another part of the 'Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting' series.
Exfiltration to Filebase S3
T1567.002
Out of scope Belongs to another part of the 'Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting' series.
Post-Compromise Credential Abuse
T1078.004 · T1528
Out of scope Belongs to another part of the 'Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting' series.

Blind spots

  • Needs full HTTP POST body logging. Standard HTTP activity logging captures URLs but not POST bodies, making it difficult to differentiate an exploit attempt from a legitimate comment submission. It would answer What command was injected via the W3 Total Cache comment exploit?.
  • Needs real-time process execution events. Snapshot-based telemetry may miss the execution of a fast-running credential harvest script if it completes between collection intervals. It would answer Did the exploitation payload run as a short-lived process between inventory snapshots?.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
batch_zip_patternstringenv-batch-%.zipFile name pattern for the scanner's staging archives.
env_file_patternstring%.env%Pattern for environment files containing secrets.
lookback_daysnumber14Days of history to examine.
scope_hostslist[host]—Optional hostnames to narrow the behavioral queries.
vulnerable_cveslist[string]CVE-2025-55182, CVE-2025-9501CVE identifiers targeted by the Bissa scanner.

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 single rule might alert on the Bissa ZIP file, but this hunt pivots between
  the vulnerability posture and behavioral anomalies like rare process interaction
  with secrets. This distinguishes a focused Bissa exploit from routine administrative
  actions or generic web noise.
blind_spots:
- id: post-body-blind-spot
  question: What command was injected via the W3 Total Cache comment exploit?
  requires: full HTTP POST body logging
  risk: Standard HTTP activity logging captures URLs but not POST bodies, making it
    difficult to differentiate an exploit attempt from a legitimate comment submission.
  stage: initial-access-mass-exploitation
- id: no-process-visibility
  question: Did the exploitation payload run as a short-lived process between inventory
    snapshots?
  requires: real-time process execution events
  risk: Snapshot-based telemetry may miss the execution of a fast-running credential
    harvest script if it completes between collection intervals.
  stage: execution-credential-enumeration-payload
coverage:
- stage: initial-access-mass-exploitation
  status: covered
  steps:
  - vulnerability-lead
- stage: execution-credential-enumeration-payload
  status: covered
  steps:
  - env-access-prevalence
- stage: collection-data-staging
  status: covered
  steps:
  - staging-zip-creation
- reason: 'Belongs to another part of the ''Bissa Scanner Exposed: AI-Assisted Mass
    Exploitation and Credential Harvesting'' series.'
  stage: c2-telegram-alerting
  status: out_of_scope
- reason: 'Belongs to another part of the ''Bissa Scanner Exposed: AI-Assisted Mass
    Exploitation and Credential Harvesting'' series.'
  stage: exfiltration-to-filebase-s3
  status: out_of_scope
- reason: 'Belongs to another part of the ''Bissa Scanner Exposed: AI-Assisted Mass
    Exploitation and Credential Harvesting'' series.'
  stage: credential-abuse-saas-cloud
  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: The Bissa scanner operation has successfully compromised over 900
    organizations. Confirming the absence of automated harvest behavior on vulnerable
    web servers provides significant risk reduction.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An attacker is using the Bissa scanner to exploit unauthenticated vulnerabilities
  in Next.js or WordPress, then harvesting sensitive credentials from .env files and
  cloud metadata.
labels:
- hunt
- attack.t1190
- attack.t1059.004
- attack.t1083
- attack.t1560.001
name: Bissa Scanner Mass Exploitation and Credential Harvesting
parameters:
  batch_zip_pattern:
    default: env-batch-%.zip
    description: File name pattern for the scanner's staging archives.
    from:
      kind: article
      observed: '2026-04-22'
      ref: dfir-report-bissa-scanner
    type: string
  env_file_pattern:
    default: '%.env%'
    description: Pattern for environment files containing secrets.
    type: string
  lookback_days:
    default: '14'
    description: Days of history to examine.
    type: number
  scope_hosts:
    default: []
    description: Optional hostnames to narrow the behavioral queries.
    type: list[host]
  vulnerable_cves:
    default:
    - CVE-2025-55182
    - CVE-2025-9501
    description: CVE identifiers targeted by the Bissa scanner.
    from:
      kind: article
      observed: '2026-04-22'
      ref: dfir-report-bissa-scanner
    type: list[string]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://thedfirreport.com/2026/04/22/bissa-scanner-exposed-ai-assisted-mass-exploitation-and-credential-harvesting/
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Focus on internet-facing assets reporting CVE-2025-55182 or CVE-2025-9501.
  If no vulnerability findings are active, run the behavioral queries unscoped to
  find stealthy or recently patched exploitations.
references:
- name: 'Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting'
  url: https://thedfirreport.com/2026/04/22/bissa-scanner-exposed-ai-assisted-mass-exploitation-and-credential-harvesting/
related:
- hunt: bissa-scanner-c2-telegram
  reason: This hunt focuses on endpoint behavior; the Telegram hunt focuses on the
    C2 alerting channel.
  relation: out-of-scope-alternative
- hunt: bissa-scanner-exfiltration-filebase
  reason: This hunt identifies staging; the exfiltration hunt identifies the subsequent
    move to S3 storage.
  relation: follows
scenario:
  stages:
  - name: Mass Vulnerability Exploitation
    observables:
    - CVE-2025-55182
    - CVE-2025-9501
    - React Server Function endpoints
    - W3 Total Cache _parse_dynamic_mfunc payload
    - denemekulubum.com.tr/acquirer/
    - wiprz.com/acquirer/
    - cs2.ip.thc.org
    slug: initial-access-mass-exploitation
    tactic: initial-access
    techniques:
    - T1190
  - name: Local Credential and Metadata Enumeration
    observables:
    - .env file enumeration
    - Kubernetes service account context retrieval
    - Cloud metadata service (IMDS) access
    - Local database and Redis credential search
    - Cryptocurrency wallet search
    slug: execution-credential-enumeration-payload
    tactic: execution
    techniques:
    - T1059.004
    - T1083
  - name: Telegram Bot Command and Control
    observables:
    - api.telegram.org
    - '@bissapwned_bot'
    - '@bissa_scan_bot'
    - Bot ID 8798206332
    - Chat ID 1609309278
    slug: c2-telegram-alerting
    tactic: command-and-control
    techniques:
    - T1102.002
    - T1071.001
  - name: Archive Staging of Environment Files
    observables:
    - results/ directory monitoring
    - env-batch-*.zip
    - Batching of .env files into ZIP archives
    slug: collection-data-staging
    tactic: collection
    techniques:
    - T1560.001
  - name: Exfiltration to Filebase S3
    observables:
    - s3.filebase.com
    - 'bucket: bissapromax'
    - 'prefix: archives/'
    slug: exfiltration-to-filebase-s3
    tactic: exfiltration
    techniques:
    - T1567.002
  - name: Post-Compromise Credential Abuse
    observables:
    - Anthropic API keys
    - AWS access keys
    - Okta/Auth0 tokens
    - Stripe/PayPal tokens
    - GitHub personal access tokens
    - Slack integration tokens
    - Oracle Fusion REST export activity
    slug: credential-abuse-saas-cloud
    tactic: credential-access
    techniques:
    - T1078.004
    - T1528
  summary: The Bissa Scanner campaign involves large-scale, automated exploitation
    of React Server Components (CVE-2025-55182) and WordPress (CVE-2025-9501) to harvest
    secrets at scale. The operator, 'Dr. Tube', utilizes AI-assisted workflows via
    Claude Code and OpenClaw to triage stolen data and automate alerting through Telegram
    bots, eventually exfiltrating credentials to S3-compatible Filebase storage.
series:
  index: 1
  slug: bissa-scanner-exposed-ai-assisted-mass-exploitation-and-credential-harvesting
  title: 'Bissa Scanner Exposed: AI-Assisted Mass Exploitation and Credential Harvesting'
  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
---


# Bissa Scanner Mass Exploitation and Credential Harvesting

This hunt targets the early lifecycle of the Bissa scanner, a modular AI-assisted exploitation platform. It uses a gated flow to first identify internet-facing assets with known vulnerabilities in React Server Components (CVE-2025-55182) or W3 Total Cache (CVE-2025-9501). If such assets exist, it fans out to look for behavioral indicators of post-exploitation: rare processes accessing environment files and the creation of specific ZIP staging archives. An agent triages the results to distinguish automated scanner activity from legitimate local administration, specifically looking for the intersection of vulnerable hosts and suspicious behavior.

## vulnerability-lead
<!-- Identify vulnerable web assets -->
Identify hosts running software versions vulnerable to the Bissa scanner's primary exploit modules and retrieve their hostnames for behavioral correlation.

```sqlite target=endpoint role=scoping params=(vulnerable_cves=vulnerable_cves)
~~~yaml
expected: A list of resources currently reporting unpatched vulnerabilities targeted
  by the scanner, correlated with device hostnames.
reads:
- device_uid
- cve_uid
- severity
- title
silence: not_evidence_of_absence
source: hb_vulnerability_finding
verified: dry-run
verified_at: '2026-09-23'
~~~
SELECT v.device_uid, d.hostname AS device_hostname, v.cve_uid, v.severity, v.title FROM hb_vulnerability_finding v JOIN hb_devices d ON v.device_uid = d.device_uid WHERE (instr(',' || '{{vulnerable_cves}}' || ',', ',' || v.cve_uid || ',') > 0) AND v.status != 'suppressed'
```

## evaluate-lead
<!-- Evaluate vulnerability lead -->
```agent target=hunter
cite: required
context:
- vulnerability-lead
max_iterations: 3
objective: 'Summarize the vulnerability findings: identify which hosts are vulnerable
  and identify high-risk internet-facing assets.'
success_criteria: A concise summary of the exposed attack surface.
tools:
- endpoint
```

## gate
<!-- Exposure Gate -->
if: `vulnerability-lead.rows > 0`
then: → post-exploit-fanout
else: → close-out

## post-exploit-fanout
<!-- Post-Exploitation Fan-out -->
parallel:
- → env-access-prevalence
- → staging-zip-creation
join: → final-triage

## env-access-prevalence
<!-- Rare processes accessing environment files -->
Identify specific rows for rare processes reading .env files, which may indicate the scanner's automated payload.

```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days, env_file_pattern=env_file_pattern, scope_hosts=scope_hosts)
~~~yaml
baseline:
  compare: new_this_window
  window: '{{lookback_days}}d'
expected: Specific rows of process activity touching .env files on few hosts. Legitimate
  web server processes should be common; one-off scripts are suspicious.
prevalence:
  by: device_hostname
  key:
  - process_name
  rare_below: 5
reads:
- process_name
- device_hostname
- file_name
- time
- file_path
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-23'
~~~
SELECT device_hostname, process_name, file_path, time FROM hb_file_activity WHERE (LOWER(file_name) LIKE '{{env_file_pattern}}' OR LOWER(file_path) LIKE '{{env_file_pattern}}') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND process_name IN (SELECT process_name FROM hb_file_activity WHERE (LOWER(file_name) LIKE '{{env_file_pattern}}' OR LOWER(file_path) LIKE '{{env_file_pattern}}') AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY process_name HAVING COUNT(DISTINCT device_hostname) < 5)
```

## staging-zip-creation
<!-- Bissa scanner staging archive creation -->
Search for the specific staging archive format used by the Bissa scanner to batch stolen secrets, including process context to distinguish from admins.

```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days, batch_zip_pattern=batch_zip_pattern, scope_hosts=scope_hosts)
~~~yaml
expected: Creation of env-batch ZIP files. This naming convention is specific to the
  Bissa scanner workflow and highly indicative of compromise when not performed by
  a known admin.
reads:
- device_hostname
- file_name
- file_path
- process_name
- actor_user_name
- time
silence: evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-09-23'
~~~
SELECT device_hostname, file_name, file_path, process_name, actor_user_name, time FROM hb_file_activity WHERE LOWER(file_name) LIKE '{{batch_zip_pattern}}' AND activity_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)
```

## final-triage
<!-- Triage investigation findings -->
```agent target=hunter
cite: required
context:
- evaluate-lead
- env-access-prevalence
- staging-zip-creation
max_iterations: 6
objective: Determine if any host with a vulnerability finding (from evaluate-lead)
  also shows evidence of rare process access to secrets (env-access-prevalence) or
  the creation of the Bissa staging archive (staging-zip-creation).
success_criteria: A per-host verdict citing specific process and file activity rows,
  highlighting where the host matches the vulnerable assets list.
tools:
- endpoint
```

## route
<!-- Route on verdict -->
if~: "the triage identifies malicious behavior on at least one vulnerable host, specifically where a host identified in the vulnerability-lead step also exhibits indicators from the behavioral queries (rare .env access or Bissa staging archive creation)" (confidence: high, judge=hunter)
then: → isolate-host
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: no-process-visibility)
else: → close-out

## isolate-host
<!-- Isolate compromised host -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the host from the network. This stops the Bissa scanner's exfiltration module and preserves the environment for forensic review.
```
→ analyst-review

## analyst-review
<!-- Analyst forensic review -->
```manual target=analyst
Review the file and process rows cited by the triage agent. Identify which .env files were accessed and prioritize rotating the contained credentials, especially for AI platforms and cloud providers.
```
→ end

## close-out
<!-- Hunt close-out -->
```manual target=analyst
Document the hunt outcome. If vulnerable hosts were identified but no behavioral traces were found, escalate the patching of CVE-2025-55182 and CVE-2025-9501 to the vulnerability management team.
```
→ 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.