To speed up the validation process, the script features a multi-threaded architecture that can run up to 50 concurrent threads. Running high thread counts requires rotating external connections to prevent public blockchain RPC nodes from blocking the client's IP address. ZXCHECKER achieves this by incorporating a robust proxy rotation system, compatible with both HTTP and SOCKS5 IPv4 proxies. By executing address derivation locally and querying balances via rotated proxy nodes, the threat actor can process thousands of credentials within minutes while remaining highly resilient to rate limiting.
Infection Chain and Persistence
Because ZXCHECKER operates as a post-exploitation utility, it does not possess an inherent self-propagating infection routine. Instead, its execution relies on the pre-existing compromise of endpoints via primary malware distributions, such as info-stealers (for example, Lumma, RedLine, Vidar, or Raccoon). The typical execution sequence begins when an initial access vector, such as a phishing lure or a malicious browser extension, compromises an employee workstation. The infostealer scans the system for unprotected files, harvesting browser data, stored cookies, and text files. It specifically targets files containing strings like seed, wallet, or private-key.
Once these files are exfiltrated to the attacker's server, the attacker formats the raw logs and imports them into ZXCHECKER's input files. The threat actor then launches the Python script to run local cryptographic address derivations and check current balances against public blockchains. No local persistence mechanism is installed on the victim host by ZXCHECKER itself; rather, persistence is maintained by the initial infostealer payload to ensure continuous harvesting of logs and credential repositories.