← All hunts high TLP:CLEAR Part 1 of 2

Collaboration Platform Phishing and Execution

An intruder has compromised an enterprise identity using collaboration tools to bypass email-based controls and execute malicious code via sideloading or malicious dependencies.

Based on research by Unit 42 2026-09-20 12 steps · 4 queries T1566 T1684.001

Brief

Why now

Adversaries are exploiting the high trust users place in collaboration tools. In the report Identity Abuse Through Trusted Communication Channels, Unit 42 describes how attackers move away from email to deliver phishing links and malicious payloads via Slack, Teams, and Google Meet. This shift bypasses traditional email-centric security stacks and forces security teams to find new ways to correlate SaaS-based initial access with endpoint behavior. Security practitioners need visibility into these channels because the inherent trust in collaboration platforms often leads to higher click rates and faster execution of malicious files.

How the hunt flows

The hunt begins by identifying the attack surface across the fleet. The first query against the software inventory surface lists every host running Slack, Teams, Zoom, or Google Meet. This scoping step ensures the analyst knows which hosts are susceptible to this specific vector and provides a focused list of devices for the more resource-intensive telemetry queries that follow.

The second phase identifies leads through network telemetry. The hunt identifies HTTP requests to known phishing or recruitment-themed domains—such as Google Sites or Slack hooks—that contain authentication keywords like "login," "verify," or "sign-in." Because these domains are often legitimate, the hunt filters for specific patterns observed in recent campaigns rather than blocking the domains outright. An agent then reviews the identified URLs and user agents. The agent distinguishes between legitimate SaaS traffic and potential impersonation or credential harvesting attempts by looking for non-browser user agents or outdated versions of collaboration clients.

If the agent or analyst confirms a suspicious lead, the hunt triggers a parallel investigation phase on the endpoint to find evidence of exploitation. One query searches for rare binaries—those appearing on three or fewer hosts—running from user-writable paths like AppData, Temp, or the Downloads folder. Grouping by filename and path helps filter out common per-user installations while highlighting unique payloads. Simultaneously, another query checks for the loading of masquerading DLLs, such as lpk.dll, from these same locations. This combination targets both the execution of standalone payloads and common sideloading techniques where a legitimate application loads a malicious module.

Finally, an agent correlates the network and endpoint findings into a single verdict. The agent builds a timeline to see if the suspicious communication lead immediately preceded the execution of a rare binary or the loading of a sideloaded module. This correlation is what elevates the activity from a series of minor anomalies to a confirmed compromise.

Why this is a hunt

This activity is a hunt rather than a simple detection because of the context required to confirm a compromise. A standard detection might alert on the presence of a file named lpk.dll in a user folder, but such a rule often generates false positives from legitimate software or developers. This hunt asks broader questions: did the host also communicate with an authentication-themed phishing link in the same window? Is the parent binary rare across the entire fleet? By using three surfaces—software inventory, HTTP activity, and process/module telemetry—and an agent to weigh the combined context, the hunt identifies high-confidence identity compromises that a standalone rule would miss.

What the hunt cannot see

This hunt requires visibility into endpoint HTTP activity. If the organization does not collect proxy logs or endpoint-originated network telemetry, the initial phishing lead cannot be established, and the hunt will close early. Furthermore, the hunt cannot access the private content of messages within Slack or Teams. It identifies the destination of the traffic and the binary results on the host, but it cannot see the specific social engineering bait that enticed the user to click. It also misses out-of-band communication that does not involve the monitored collaboration clients.

In this series

Steps

  1. Scope collaboration tool installation

    Query · scoping

    Identify the hosts that could be affected by collaboration-based phishing by listing where Slack, Teams, or meeting software is installed.

    reads hb_software_inventorysql
    SELECT device_hostname, package_name, vendor_name FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%slack%' OR LOWER(package_name) LIKE '%teams%' OR LOWER(package_name) LIKE '%zoom%' OR LOWER(package_name) LIKE '%meet%'

    What a hit looks like. A list of hosts with collaboration software installed. Silence means these specific tools were not found in the inventory.

  2. Phishing or webhook communication lead

    Query · triage

    Identify potential phishing links or webhook activity originating from user hosts to established collaboration services, filtering for authentication keywords.

    reads hb_http_activitysql
    SELECT device_hostname, url_hostname, url_path, url_query, user_agent, actor_user_name, time FROM hb_http_activity WHERE (instr(',' || '{{phishing_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0) AND (LOWER(url_path) LIKE '%login%' OR LOWER(url_path) LIKE '%verify%' OR LOWER(url_path) LIKE '%auth%' OR LOWER(url_path) LIKE '%sign-in%' OR LOWER(url_query) LIKE '%login%' OR LOWER(url_query) LIKE '%verify%' OR LOWER(url_query) LIKE '%auth%' OR LOWER(url_query) LIKE '%sign-in%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Requests to Google Sites authentication proxies or Slack hooks containing auth keywords. Silence proves absence only if proxy logs are complete.

  3. Evaluate communication lead

    Agent triage

    Identify suspicious URLs and user agents that suggest a social engineering or credential harvesting attempt.

  4. Gate: Is the communication suspicious?

    Decision

    Open the expensive endpoint investigations only when a suspicious communication lead is present.

  5. Rare binaries in user-writable paths

    Query · baseline

    Identify unique binaries running from AppData or Temp folders, grouping by filename to avoid user-profile noise.

    reads hb_process_activitysql
    SELECT LOWER(process_name) AS filename, COUNT(DISTINCT device_hostname) AS hosts, COUNT(*) AS runs, MIN(time) AS first_seen FROM hb_process_activity WHERE (LOWER(process_path) LIKE '%\appdata\%' OR LOWER(process_path) LIKE '%\temp\%' OR LOWER(process_path) LIKE '%/tmp/%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY LOWER(process_name) HAVING hosts <= 3 ORDER BY hosts, runs

    What a hit looks like. A filename seen on three or fewer hosts; indicates a unique payload or developer-side software.

  6. Loading of masquerading payloads

    Query · detection candidate

    Detect the actual loading of masquerading DLLs, such as lpk.dll, from user-writable paths.

    reads hb_module_activitysql
    SELECT device_hostname, module_name, module_path, process_name, time FROM hb_module_activity WHERE activity_id = 1 AND (LOWER(module_name) = 'lpk.dll' OR LOWER(module_original_file_name) = 'lpk.dll') AND (LOWER(module_path) LIKE '%\appdata\%' OR LOWER(module_path) LIKE '%\users\public\%' OR LOWER(module_path) LIKE '%\downloads\%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. A module load event for lpk.dll from a user-writable path, suggesting sideloading.

  7. Triage phishing and execution

    Agent triage

    Synthesize the network lead and endpoint activity to confirm a collaboration-based identity attack.

  8. Final route

    Decision

    Initiate response for confirmed compromises.

  9. Isolate endpoint

    Response action

    Prevent further lateral movement or credential exfiltration from a compromised beachhead.

  10. Analyst triage review

    Analyst task

    Final human review of the agent's findings and containment outcome.

  11. Close and document

    Analyst task

    Standard close-out task for negative results.

Coverage

Scenario coverage

StageCoveredHow, or why not
Identity Phishing via Collaboration Tools
T1566
Yes lead-communication-activity, lead-agent
Impersonation of Trusted Personas
T1684.001
Yes lead-communication-activity
User-Executed Malicious Payloads
T1566
Yes rare-appdata-binaries, payload-extraction
Modification of Authentication Process
T1556
Out of scope Belongs to another part of the 'Identity Abuse Through Trusted Communication Channels' series.
Exfiltration via Native Slack Webhook
T1556
Out of scope Belongs to another part of the 'Identity Abuse Through Trusted Communication Channels' series.

Blind spots

  • Needs hb_http_activity or hb_dns_activity. If HTTP traffic from the endpoint is not captured, the primary lead for the gated flow is lost. It would answer whether the user visited a phishing site or webhook link.
  • Needs SaaS Audit Logs (Slack/Teams). We can see the destination but not the message that enticed the user. It would answer what the specific social engineering bait contained.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
lookback_daysnumber14Days of history to examine.
phishing_domainslist[domain]hooks.slack.com, sites.google.com, google.meetDomains observed in recruitment or IT-themed social engineering campaigns.
scope_hostslist[host]Optional list of hosts from the scoping step.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Web server / proxy logssiemnetwork

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: A rule fires on the lpk.dll filename; the hunt asks whether the host also
  communicated with an authentication-themed phishing link and whether the parent
  binary is rare across the fleet, using three surfaces and an agent to weigh the
  context.
blind_spots:
- id: no-http-visibility
  question: whether the user visited a phishing site or webhook link
  requires: hb_http_activity or hb_dns_activity
  risk: If HTTP traffic from the endpoint is not captured, the primary lead for the
    gated flow is lost.
  stage: initial-access-collaboration-phishing
- id: private-saas-content
  question: what the specific social engineering bait contained
  requires: SaaS Audit Logs (Slack/Teams)
  risk: We can see the destination but not the message that enticed the user.
  stage: initial-access-collaboration-phishing
coverage:
- stage: initial-access-collaboration-phishing
  status: covered
  steps:
  - lead-communication-activity
  - lead-agent
- stage: trusted-channel-impersonation
  status: covered
  steps:
  - lead-communication-activity
- stage: endpoint-payload-execution
  status: covered
  steps:
  - rare-appdata-binaries
  - payload-extraction
- reason: Belongs to another part of the 'Identity Abuse Through Trusted Communication
    Channels' series.
  stage: authentication-process-modification
  status: out_of_scope
- reason: Belongs to another part of the 'Identity Abuse Through Trusted Communication
    Channels' series.
  stage: credential-exfiltration-webhook
  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: Threat actors are bypassing email-based controls by using trusted
    SaaS environments for phishing. A negative result over the enrolled estate confirms
    that these high-trust channels are not currently being used as a beachhead.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An intruder has compromised an enterprise identity using collaboration
  tools to bypass email-based controls and execute malicious code via sideloading
  or malicious dependencies.
labels:
- hunt
- attack.t1566
- attack.t1684.001
name: Collaboration Platform Phishing and Execution
parameters:
  lookback_days:
    default: '14'
    description: Days of history to examine.
    type: number
  phishing_domains:
    default:
    - hooks.slack.com
    - sites.google.com
    - google.meet
    description: Domains observed in recruitment or IT-themed social engineering campaigns.
    from:
      kind: article
      observed: '2026-08-20'
      ref: unit42-collaboration-abuse
    type: list[domain]
  scope_hosts:
    default: []
    description: Optional list of hosts from the scoping step.
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://unit42.paloaltonetworks.com/communication-channel-identity-risks/
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Focus the investigation on users with high-trust profiles like developers
  or HR personnel. If broad activity is seen on Google Sites, narrow to processes
  other than the system browser.
references:
- name: "Unit 42 \u2014 Identity Abuse Through Trusted Communication Channels"
  url: https://unit42.paloaltonetworks.com/communication-channel-identity-risks/
related:
- hunt: mfa-tampering-via-appliance
  reason: Modification of authentication processes on firewalls or VPN appliances
    requires distinct logs from vendor-native tables.
  relation: out-of-scope-alternative
scenario:
  stages:
  - name: Identity Phishing via Collaboration Tools
    observables:
    - hooks.slack.com
    - Google Sites authentication links
    - External federation chat requests in Microsoft Teams
    - Requests to approve MFA notifications
    slug: initial-access-collaboration-phishing
    tactic: initial-access
    techniques:
    - T1566
  - name: Impersonation of Trusted Personas
    observables:
    - Google Meet interview sessions
    - IT support impersonation
    - Recruitment-themed social engineering
    - Malicious GitHub repository cloning
    slug: trusted-channel-impersonation
    tactic: stealth
    techniques:
    - T1684.001
  - name: User-Executed Malicious Payloads
    observables:
    - WinRAR.exe
    - lpk.dll
    - npm install
    - Explorer.exe launching RAR files
    - Extraction of masquerading DLLs
    slug: endpoint-payload-execution
    tactic: execution
    techniques:
    - T1566
  - name: Modification of Authentication Process
    observables:
    - Removal of MFA/2FA from privileged accounts
    - Scripts on VPN/firewall appliances disabling security settings
    - Creation of weekly scheduled tasks for credential collection
    slug: authentication-process-modification
    tactic: persistence
    techniques:
    - T1556
  - name: Exfiltration via Native Slack Webhook
    observables:
    - POST requests to hooks.slack.com
    - curl user-agent in outbound appliance traffic
    - Native Slack notification integrations on network hardware
    slug: credential-exfiltration-webhook
    tactic: exfiltration
    techniques:
    - T1556
  summary: Threat actors exploit trusted collaboration platforms like Microsoft Teams
    and Slack to deliver phishing links and impersonate internal stakeholders for
    initial access. Post-compromise, they maintain persistence by modifying authentication
    settings on network appliances and use native Slack webhook integrations to exfiltrate
    credentials and sensitive data.
series:
  index: 1
  slug: identity-abuse-through-trusted-communication-channels
  title: Identity Abuse Through Trusted Communication Channels
  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
  web:
    category: siem
    name: Web server / proxy logs
    telemetry:
    - network
tlp: clear
type: investigation
---


# Collaboration Platform Phishing and Execution

The adversary uses high-trust channels like Slack or Teams to deliver phishing links or malicious files, often posing as IT support or recruitment personnel. This hunt identifies hosts using these tools and checks for suspicious outbound traffic to known phishing sites or webhooks. Once a lead is identified, the hunt investigates endpoint activity for characteristic execution patterns, such as the loading of masquerading DLLs or the execution of rare binaries from user-writable folders. An analyst then reviews the correlated network and endpoint evidence to confirm the compromise.

## scope-collaboration-clients
<!-- Scope collaboration tool installation -->
Identify the hosts that could be affected by collaboration-based phishing by listing where Slack, Teams, or meeting software is installed.

```sqlite target=endpoint role=scoping
~~~yaml
expected: A list of hosts with collaboration software installed. Silence means these
  specific tools were not found in the inventory.
reads:
- device_hostname
- package_name
- vendor_name
silence: not_evidence_of_absence
source: hb_software_inventory
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, package_name, vendor_name FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%slack%' OR LOWER(package_name) LIKE '%teams%' OR LOWER(package_name) LIKE '%zoom%' OR LOWER(package_name) LIKE '%meet%'
```

## lead-communication-activity
<!-- Phishing or webhook communication lead -->
Identify potential phishing links or webhook activity originating from user hosts to established collaboration services, filtering for authentication keywords.

```sqlite target=web role=triage params=(lookback_days=lookback_days, phishing_domains=phishing_domains, scope_hosts=scope_hosts)
~~~yaml
expected: Requests to Google Sites authentication proxies or Slack hooks containing
  auth keywords. Silence proves absence only if proxy logs are complete.
reads:
- device_hostname
- url_hostname
- url_path
- url_query
- user_agent
- actor_user_name
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, url_hostname, url_path, url_query, user_agent, actor_user_name, time FROM hb_http_activity WHERE (instr(',' || '{{phishing_domains}}' || ',', ',' || LOWER(url_hostname) || ',') > 0) AND (LOWER(url_path) LIKE '%login%' OR LOWER(url_path) LIKE '%verify%' OR LOWER(url_path) LIKE '%auth%' OR LOWER(url_path) LIKE '%sign-in%' OR LOWER(url_query) LIKE '%login%' OR LOWER(url_query) LIKE '%verify%' OR LOWER(url_query) LIKE '%auth%' OR LOWER(url_query) LIKE '%sign-in%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## lead-agent
<!-- Evaluate communication lead -->
```agent target=hunter
cite: required
context:
- lead-communication-activity
max_iterations: 3
objective: Review the URL patterns and paths to identify authentication-themed links.
  Specifically check the user_agent field for non-browser or outdated versions that
  indicate automated tools or old-versioned collaboration clients.
success_criteria: A verdict for each host citing specific URLs and user agents.
tools:
- endpoint
- web
```

## gate-decision
<!-- Gate: Is the communication suspicious? -->
if~: "the lead-agent verdict indicates suspicious collaboration-related network traffic or unusual user agents for at least one host" (confidence: medium, judge=hunter)
then: → investigation-fan-out
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: no-http-visibility)
else: → close-out

## investigation-fan-out
<!-- Endpoint investigation fan-out -->
parallel:
- → rare-appdata-binaries
- → payload-extraction
join: → triage-agent

## rare-appdata-binaries
<!-- Rare binaries in user-writable paths -->
Identify unique binaries running from AppData or Temp folders, grouping by filename to avoid user-profile noise.

```sqlite target=endpoint role=baseline params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: A filename seen on three or fewer hosts; indicates a unique payload or developer-side
  software.
prevalence:
  by: device_hostname
  key:
  - process_name
  rare_below: 3
reads:
- process_name
- process_path
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_process_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT LOWER(process_name) AS filename, COUNT(DISTINCT device_hostname) AS hosts, COUNT(*) AS runs, MIN(time) AS first_seen FROM hb_process_activity WHERE (LOWER(process_path) LIKE '%\appdata\%' OR LOWER(process_path) LIKE '%\temp\%' OR LOWER(process_path) LIKE '%/tmp/%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY LOWER(process_name) HAVING hosts <= 3 ORDER BY hosts, runs
```

## payload-extraction
<!-- Loading of masquerading payloads -->
Detect the actual loading of masquerading DLLs, such as lpk.dll, from user-writable paths.

```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: A module load event for lpk.dll from a user-writable path, suggesting sideloading.
reads:
- device_hostname
- module_name
- module_path
- process_name
- time
silence: not_evidence_of_absence
source: hb_module_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT device_hostname, module_name, module_path, process_name, time FROM hb_module_activity WHERE activity_id = 1 AND (LOWER(module_name) = 'lpk.dll' OR LOWER(module_original_file_name) = 'lpk.dll') AND (LOWER(module_path) LIKE '%\appdata\%' OR LOWER(module_path) LIKE '%\users\public\%' OR LOWER(module_path) LIKE '%\downloads\%') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```

## triage-agent
<!-- Triage phishing and execution -->
```agent target=hunter
cite: required
context:
- lead-agent
- rare-appdata-binaries
- payload-extraction
max_iterations: 6
objective: Identify hosts where a suspicious communication lead from lead-agent is
  followed by payload loading or rare binary execution within a tight time window.
success_criteria: A confirmed or benign verdict per host with a clear timeline of
  events.
tools:
- endpoint
- web
```

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

## isolate-host
<!-- Isolate endpoint -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the identified host and collect a triage image of the Downloads and AppData folders.
```
→ analyst-review

## analyst-review
<!-- Analyst triage review -->
```manual target=analyst
Review the correlated network and endpoint evidence. If the DLL sideloading or rare binary execution is confirmed, transition to a full incident response playbook.
```
→ end

## close-out
<!-- Close and document -->
```manual target=analyst
Document the lack of evidence for collaboration-based identity phishing in the examined timeframe.
```
→ 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.