Skip to main content

I got hit by a fake Cloudflare popup and reverse engineered the malware it dropped. Here's what I found.

0
Medium
Published: 09/11/2026 (09/11/2026, 07:51:23 UTC)
Source: Reddit Malware

Description

Tourmaline is a sophisticated multi-stage Windows malware distributed via a fake Cloudflare CAPTCHA popup that tricks users into manually executing a malicious installer. The malware uses a custom Inno Setup installer bundling a full Python 3.11 runtime and employs an anti-sandbox time-lock mechanism to evade analysis. It establishes persistence under the name "TourmalineUpdate" disguised as a hardware monitoring service. The backdoor communicates with its command-and-control (C2) server via a custom DNS-over-UDP tunnel to a dynamically resolved IP address obtained from an Ethereum Sepolia testnet smart contract, making IP blocklisting ineffective. Commands from the C2 are ECDSA-signed and executed via Python's exec() function, allowing arbitrary remote code execution. Indicators of compromise and deobfuscated source code are publicly available for defensive research.

Reddit Discussion

r/Malware·posted by u/v_pun215
00

A few weeks ago I was browsing and got one of those "Verify you are human" Cloudflare popups. Except it wasn't Cloudflare — it was a ClickFix page that told me to press Win+R and paste a command. I'm on Linux so nothing executed on me, but I grabbed the file and spent time tearing it apart. Here's what's inside.

The file: Tourmaline.exe (~10.8 MB)

It's not a typical dropper. It's an Inno Setup 6.7.0 installer (Revision 2, 64-bit offsets — which broke every standard extraction tool I tried including innoextract) that bundles a full Python 3.11 runtime and two stages of obfuscated payload.

Stage 1 — Anti-sandbox time-lock

The first stage is a ~13 line obfuscated Python script with a clever trick: it counts down from 99,999,999 to find an XOR decryption key via brute force. On a sandbox with a 60-second timeout it never finishes. On a real machine it runs in seconds. I cracked it instantly using a known-plaintext attack on the first 4 bytes of the encrypted blob — recovered the key in O(1) without running the loop at all.

Stage 2 — Full Python RAT

Once decrypted, it's a hand-rolled Python backdoor with no external dependencies. Here's what it does:

  • DNS tunneling — all C2 traffic goes out as raw UDP DNS queries directly to 158.94.211.185:53, disguised as *.microsoft.com lookups. Fully custom DNS packet builder, no library used.
  • Blockchain dead-drop — on startup it calls an Ethereum Sepolia smart contract (0x2d7a04cca0c34005f58393f30ac725e25f19e5f5) to get the current C2 IP, decrypted locally with a hardcoded ChaCha20 key. I verified this live — the contract returned the active IP. The attacker can update it any time, making IP blocklists useless.
  • ECDSA-signed commands — tasks from the C2 are P-256 signature verified before execution. You can't sinkhole it by intercepting the DNS tunnel.
  • Arbitrary Python exec — whatever the C2 sends back gets exec()'d in a persistent namespace. Full remote code execution.
  • Persistence as TourmalineUpdate in Task Scheduler, disguised as "Hardware monitoring service."

Everything is in my GitHub repo — deobfuscated source, YARA rules, IOCs (JSON + CSV), and a decryption tool that reproduces the key recovery: https://github.com/v-pun215/Tourmaline

Sample is included as a password-protected zip (infected) following the standard for sharing malware samples safely.

Happy to answer questions on the methodology, especially the custom Inno Setup Revision 2 format parsing and the known-plaintext bypass.

Links cited in this discussion

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 09/11/2026, 11:17:21 UTC

Technical Analysis

Tourmaline.exe is a multi-stage malware delivered through a social engineering technique involving a fake Cloudflare "Verify you are human" popup. The installer is a custom Inno Setup 6.7.0 (Revision 2) binary that extracts a Python 3.11 runtime and two obfuscated Python payload stages. Stage 1 implements a time-lock anti-sandbox mechanism by brute forcing an XOR key via a countdown loop, which can be bypassed in O(1) using a known-plaintext attack. Stage 2 is a Python backdoor that reads the machine GUID, derives a mutex, and retrieves the active C2 IP address from an Ethereum Sepolia smart contract. The malware uses a custom DNS tunnel over UDP port 53 to communicate with the C2, disguising traffic as microsoft.com DNS queries. Commands are ChaCha20-encrypted and ECDSA-signed to prevent interception or sinkholing. The backdoor supports arbitrary Python code execution, file operations, shell commands, and self-updates. Persistence is maintained via Task Scheduler under a misleading service name. The repository includes deobfuscated source, YARA rules, IOCs, and a decryption tool.

Potential Impact

The malware enables full remote code execution on infected Windows hosts, allowing attackers to execute arbitrary Python code, upload/download files, run shell commands, and maintain persistent access. Its use of blockchain-based C2 IP resolution and DNS tunneling complicates detection and mitigation, rendering traditional IP blocklisting ineffective. The anti-sandbox time-lock delays analysis and detection in virtualized environments. This backdoor can be used for espionage, data theft, lateral movement, or further payload deployment.

Defensive Guidance

No official patch or vendor advisory is available for this malware. Mitigation relies on user awareness to avoid executing commands from suspicious popups or websites. Network defenders should deploy YARA rules and IOCs from the public repository to detect and block the malware. Monitoring for suspicious DNS traffic to unusual IPs on port 53, especially queries resembling microsoft.com but directed to uncommon IPs, can help identify infections. Traditional IP blocklisting is ineffective due to blockchain-based dynamic C2 resolution. Sandboxing solutions should consider the anti-sandbox time-lock mechanism. Incident responders should remove persistence entries named "TourmalineUpdate" or "Hardware monitoring service" in Task Scheduler and clean related files. Use the provided decryption tools and indicators for forensic analysis.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Source Type
reddit
Subreddit
Malware
Reddit Score
0
Discussion Level
minimal
Content Source
reddit_link_post
Post Type
link
Newsworthiness Assessment
{"score":38,"reasons":["external_link","newsworthy_keywords:malware","established_author","recent_news"],"isNewsworthy":true,"foundNewsworthy":["malware"]}
Has External Source
true
Trusted Domain
false

Threat ID: 6aa3e33691cc7f384814830b

Added to database: 09/11/2026, 11:17:10 UTC

Last enriched: 09/11/2026, 11:17:21 UTC

Last updated: 09/11/2026, 16:01:43 UTC

Views: 12

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses