Persona-Management Tooling on an Employee Endpoint

WindowsmacOS

TTP Hunt medium DPRK IT Worker Fraud

The tools an operation uses to keep many personas apart and to pass identity checks without a real phone or camera, anti-detect browsers, Android emulators and cookie-import tools among them, found on a machine that belongs to one supposed employee.

What this hunt looks for

An operation running dozens of personas must keep them apart. Hayden McKenzie's fourth report describes accounts living inside ixBrowser, an anti-detect browser that isolates each persona in its own profile behind its own metered proxy. His second report adds the Cookie-Editor Chrome extension, listed for importing LinkedIn session cookies so a session moves between operators without signing in again.

The same manual answers identity verification without a physical phone or camera: the QR code is captured with ShareX and redirected into LDPlayer, an Android emulator. None of these tools is malicious. This hunt looks for the combination on one employee's issued machine, whose job needs neither.

Technique
Persona management and account portability (MITRE ATT&CK T1585, T1550.004 for session-cookie reuse) in support of fraudulently obtained employment (T1078).
Data sources
EDR process telemetry, Software inventory, Browser extension inventory
Last updated
2026-10-04

Indicators

The atomic values this hunt matches on, listed separately from the queries so they can be lifted into tooling that speaks none of the query languages below. Every value here is reported by one of the sources cited at the foot of this page.

TypeValueNote
Software ixBrowser Anti-detect browser holding one isolated profile per persona, each behind its own metered proxy (HM4).
Software LDPlayer Android emulator used to redirect identity-verification challenges away from a real camera (HM2).
Software ShareX Screen capture (ShareX.exe) used to lift verification QR codes into the emulator (HM2). Common and legitimate on its own.
Browser extension Cookie-Editor Chrome extension listed in the operation manual for importing LinkedIn session cookies (HM2). Match on the extension name; several extensions share it, so confirm the identifier against the store listing before blocking.

Logic

Every query below implements these steps, so the same hunt returns the same result in each product.

  1. Collect: process starts on Windows and macOS endpoints, plus Chromium extension inventory where the product exposes it
  2. Match: executable path contains ixBrowser (anti-detect browser) or LDPlayer (Android emulator)
  3. Match: or the executable is ShareX, or a Chromium extension is named Cookie-Editor (common tools, weak alone)
  4. Report: devices with the distinct tools found, devices holding two or more tools first

Queries

Defender / Sentinel KQL

Written for this site, from indicators reported by Hayden McKenzie

A device holding two or more tools, or any ixBrowser or LDPlayer hit, matches the persona workflow the reports describe and belongs to someone whose job needs neither.

union
    // optional: Cookie-Editor is common among web developers; delete this line and the next
    (DeviceTvmBrowserExtensions | where ExtensionName contains "Cookie-Editor" or ExtensionName contains "Cookie Editor" | project Timestamp = now(), DeviceId, Tool = "Cookie-Editor"),
    (DeviceProcessEvents
        | where Timestamp > ago(90d)
        | where FolderPath contains "ixBrowser" or FolderPath contains "LDPlayer"
            // optional: ShareX is common and means nothing alone; delete this line and the next
            or FileName =~ "ShareX.exe"
        | extend Tool = case(FolderPath contains "ixBrowser", "ixBrowser", FolderPath contains "LDPlayer", "LDPlayer", "ShareX")
        | project Timestamp, DeviceId, DeviceName, Tool)
| summarize DeviceName = take_anyif(DeviceName, isnotempty(DeviceName)), Tools = make_set(Tool), ToolCount = dcount(Tool), LastSeen = max(Timestamp) by DeviceId
| order by ToolCount desc, LastSeen desc
Lower-fidelity parts (2)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the // optional: comment line and the line beneath it
  • the Cookie-Editor extension match — several extensions share the name and it is common among web developers. Remove: delete the // optional: comment line and the line beneath it

Splunk SPL

Written for this site, from indicators reported by Hayden McKenzie

The same process match over the Endpoint data model, ranked by distinct tools per device.

```Placeholder: the Endpoint data model is populated from Windows and macOS process events.```
| tstats count min(_time) AS first_seen max(_time) AS last_seen FROM datamodel=Endpoint.Processes
    WHERE Processes.process_path="*ixBrowser*" OR Processes.process_path="*LDPlayer*"
    ```optional: ShareX is common and means nothing alone; delete this line and the next```
    OR Processes.process_name="ShareX.exe"
    BY Processes.dest, Processes.process_path
| eval tool=case(like(lower('Processes.process_path'), "%ixbrowser%"), "ixBrowser", like(lower('Processes.process_path'), "%ldplayer%"), "LDPlayer", true(), "ShareX")
| stats sum(count) AS executions dc(tool) AS tool_count values(tool) AS tools max(last_seen) AS last_seen BY Processes.dest
| convert ctime(last_seen)
| sort - tool_count, - executions
Lower-fidelity parts (1)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the optional comment line and the line beneath it

Sigma

Written for this site, from indicators reported by Hayden McKenzie

The same process match as a rule that applies to Windows and macOS process-creation telemetry.

title: Anti-Detect Browser or Android Emulator Executed on an Employee Endpoint
id: 1a900b22-a923-494b-9f4c-5af9ab13891d
status: experimental
description: >
  Detects ixBrowser, an anti-detect browser that isolates one persona per
  profile, and LDPlayer, an Android emulator used to answer identity
  verification challenges without a physical phone, on Windows and macOS.
  Both are named in operation material describing DPRK IT-worker persona
  management.
references:
  - https://haydenmckenzie.com/research/dprk-it-worker-cell-part-one
  - https://haydenmckenzie.com/research/dprk-it-worker-operation-part-two
logsource:
  category: process_creation
detection:
  selection_core:
    Image|contains:
      - 'ixBrowser'
      - 'LDPlayer'
  # optional: ShareX is common and means nothing alone; delete this line and the two below it
  selection_sharex:
    Image|endswith: '\ShareX.exe'
  condition: 1 of selection_*
falsepositives:
  - Mobile developers testing on an emulator, and social-media or advertising
    staff who manage several accounts for the business
level: medium
Lower-fidelity parts (1)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the # optional: comment line and the selection_sharex block beneath it

CrowdStrike LogScale

Written for this site, from indicators reported by Hayden McKenzie

The same process match over Falcon ProcessRollup2 events on Windows and macOS.

#event_simpleName=ProcessRollup2
| ImageFileName=/ixBrowser|LDPlayer/i
    // optional: ShareX is common and means nothing alone; delete this line and the next
    or FileName=/^ShareX\.exe$/i
| case {
    ImageFileName=/ixBrowser/i | tool := "ixBrowser";
    ImageFileName=/LDPlayer/i | tool := "LDPlayer";
    * | tool := "ShareX";
  }
| groupBy([aid, ComputerName], function=[count(as=Executions), count(tool, distinct=true, as=ToolCount), collect([tool]), max(@timestamp, as=LastSeen)])
| sort(ToolCount, order=desc)
Lower-fidelity parts (1)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the // optional: comment line and the line beneath it

Elastic

Written for this site, from indicators reported by Hayden McKenzie

The same process match over Elastic Defend process events, ranked by distinct tools per host.

FROM logs-endpoint.events.process-*
| WHERE event.action IN ("start", "exec")
| EVAL path = TO_LOWER(process.executable)
| EVAL tool = CASE(
    TO_LOWER(process.name) == "sharex.exe", "ShareX",
    path LIKE "*ixbrowser*", "ixBrowser",
    path LIKE "*ldplayer*", "LDPlayer")
| WHERE tool IS NOT NULL
| STATS executions = COUNT(*), tool_count = COUNT_DISTINCT(tool), tools = VALUES(tool), last_seen = MAX(@timestamp) BY host.name
| SORT tool_count DESC, last_seen DESC
Lower-fidelity parts (1)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the line beginning TO_LOWER(process.name) in the CASE

Cortex XQL

Written for this site, from indicators reported by Hayden McKenzie

The same process match over Cortex process events, ranked by distinct tools per host.

dataset = xdr_data
| filter event_type = ENUM.PROCESS
| filter lowercase(action_process_image_path) contains "ixbrowser"
    or lowercase(action_process_image_path) contains "ldplayer"
    // optional: ShareX is common and means nothing alone; delete this line and the next
    or lowercase(action_process_image_name) = "sharex.exe"
| alter tool = if(lowercase(action_process_image_path) contains "ixbrowser", "ixBrowser", if(lowercase(action_process_image_path) contains "ldplayer", "LDPlayer", "ShareX"))
| comp count() as executions, count_distinct(tool) as tool_count, max(_time) as last_seen by agent_hostname
| sort desc tool_count, desc last_seen
Lower-fidelity parts (1)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the // optional: comment line and the line beneath it

osquery

Written for this site, from indicators reported by Hayden McKenzie

Running processes and installed Chromium extensions on one host, since osquery is a point-in-time check of the machine in front of it.

SELECT 'process' AS source, name AS item, path AS detail
FROM processes
WHERE lower(path) LIKE '%ixbrowser%' OR lower(path) LIKE '%ldplayer%'
   -- optional: ShareX is common and means nothing alone; delete this line and the next
   OR lower(name) = 'sharex.exe'
-- optional: Cookie-Editor is common among web developers; delete this line and the two below it
UNION ALL
SELECT 'extension', ce.name, ce.identifier FROM users u CROSS JOIN chrome_extensions ce USING (uid) WHERE lower(ce.name) LIKE '%cookie-editor%' OR lower(ce.name) LIKE '%cookie editor%';
Lower-fidelity parts (2)
  • the ShareX match — ShareX is a common legitimate screen-capture tool and means nothing alone. Remove: delete the -- optional: comment line and the line beneath it
  • the Cookie-Editor extension match — several extensions share the name and it is common among web developers. Remove: delete the -- optional: comment line and the UNION ALL and SELECT lines beneath it

False positives and tuning

Emulators serve mobile development, and anti-detect browsers are sold to marketing teams, but both are unusual on a backend or full-stack engineer's machine. ShareX is common and means nothing alone.

The hunt sees only the employer's machine, while the reports describe most of this work on the operation's own hardware before hire; an empty result is weak evidence and a hit is stronger.

Sources

Tuning required before use This hunt is a starting point. Adapt the queries to your schema, validate them against your baseline and tune them for the false positives noted above. Indicators go stale as operators rotate hosts.