DPRK-Linked npm Malware Hides C2 IP in Blank Ethereum Transfer Addresses

Summary
Researchers found two trojanized npm packages using a new blockchain-based C2 technique: decoding an IP address from the recipient address of a zero-value, zero-data Ethereum transfer.
Key points
- The technique, dubbed NullReceiver, was found in bianira-ui@1.27.0 and fluid-type-ui@2.0.8, packages described as DPRK-linked clones of Tailwind CSS plugins.
- The malware checks an attacker-controlled wallet’s latest outbound transaction and decodes the C2 IP from its recipient address.
- The reported transaction contains no value or transaction data; its recipient address also includes the ASCII string “helloipbot!!”.
- Researchers recovered C2 infrastructure at 166.88.134.62 on ports 443 and 80.
- Unlike EtherHiding, NullReceiver uses a new disposable recipient address for each lookup and does not rely on a smart contract or calldata, but it can encode only a small amount of data.
- The researchers say their findings came from static analysis of the npm packages and read-only blockchain lookups; they did not execute the packages.
Article Details
- Attack Vectors
- Trojanized npm packages bianira-ui@1.27.0 and fluid-type-ui@2.0.8 implement a Node.js RAT using the NullReceiver technique: they query a hardcoded attacker Ethereum wallet, inspect its most recent outbound transaction, decode the C2 IP from the recipient-address bytes of a zero-value, zero-data transfer, and connect to that IP.
- The packages use blockchain activity as a C2 dead drop, with the recipient address of each lookup transaction acting as a disposable carrier for the C2 IP.
- Defensive Notes
- Monitor suspicious blockchain lookups and the attacker wallet identified in the article; the article notes that the sending wallet is reused across both packages.
- Inspect transaction recipient-address bytes as well as transaction data and smart-contract calls; NullReceiver transactions have zero value and empty data, and use newly generated recipient addresses.
- The article reports that findings came from static analysis of published npm tarballs and read-only blockchain lookups; the researchers state they did not execute the packages.
Indicators of compromise
| Type | Indicator | Context |
|---|---|---|
| DOMAIN | eth[.]drpc[.]org | Ethereum RPC endpoint listed in the package code for blockchain lookups. |
| HOSTNAME | 166[.]88[.]134[.]62 | C2 host listed with ports 443 and 80. |
| IPV4 | 166[.]88[.]134[.]62 | C2 IP decoded from the NullReceiver transaction recipient address. |
| URL | hxxps[:]//1rpc[.]io/eth | Ethereum RPC endpoint listed in the package code for blockchain lookups. |