Tia N.List

CTI · reviewed · 2026-09-29

DPRK-Linked Hackers Add HashHiding to Blockchain C2 Network for Takedown-Resistant Malware

Full story & timeline

Actors

DPRK-linked operators

Malware / tools

DEV#POPPER.jsOmniStealer

Campaigns

Cross-Chain TxDataHiding (XCTDH)HashHiding

CVEs

—

Victim sectors

technologycryptocurrency

Geography

—

MITRE ATT&CK

Indicators

Observables tied to this case, from the curated feed. raw sidecar

Detections

Detection content derived from this case analysis. Status: experimental — not validated against live telemetry.

Sigma raw

title: Node.js Command Line With XCTDH HashHiding Markers
id: 9ffa244a-594a-42e9-833f-327be09646b6
status: experimental
description: >
    Detects Node.js launched with -eval strings carrying the XCTDH
    HashHiding indicators published by Ransom-ISAC (2026): the campaign
    marker global.i = '5-3-132' and the require-alias global.r=require used
    by the base-91, control-flow-flattened _Z module that decodes a C2
    endpoint from Ethereum recipient-address bytes.
references:
    - https://ransom-isac.org/blog/xctdh-adopts-hash-hiding/
    - https://opensourcemalware.com/blog/nullreceiver-dprk-c2-technique
author: Tia N. List
date: 2026/09/29
tags:
    - attack.t1059
logsource:
    product: windows
    category: process_creation
detection:
    selection:
        CommandLine|contains:
            - 'global.i='
            - 'global.r=require'
    condition: selection
falsepositives:
    - Developer scripts or test harnesses that legitimately define the same
      globals (rare; correlate with a subsequent fetch to a bare IP endpoint)
level: high

YARA-X raw

rule DPRK_XCTDH_HashHiding_JS_Payload {
    meta:
        author = "Tia N. List"
        date = "2026-09-29"
        status = "experimental"
        description = "JavaScript/Node.js payload of the DPRK-linked XCTDH HashHiding campaign: the base-91, control-flow-flattened _Z module decoded from the C2 /init response that decodes a C2 endpoint from Ethereum recipient-address bytes. Keys on the campaign marker, decode substrings, campaign marker string and operator signal-wallet prefix published by Ransom-ISAC and OpenSourceMalware. Derived from case analysis - NOT validated against a live sample."
        reference = "https://ransom-isac.org/blog/xctdh-adopts-hash-hiding/"
        falsepositives = "Threat-intelligence writeups, YARA repositories and sandbox reports that quote these indicator strings verbatim; confirm the file is executable JavaScript on a developer host before acting"
    strings:
        $marker = "RS260605" ascii
        $campaign = "global.i = '5-3-132'" ascii nocase
        $decode = ".to.substring(2,10)" ascii
        $wallet = "33ff3edaf55a8e03dcbc7cb40d498a49" ascii nocase
        $boot = "/$/boot" ascii
    condition:
        3 of them
}

References

Source on GitHub