187,064 Instructions for One Flag: Reverse Engineering HTB Callfuscated Insane Challenge
The HackTheBox challenge Callfuscated presents a stripped 64-bit ELF binary that requests a password and prints either Correct or Incorrect flag. Inside the binary lies a heavily obfuscated verification routine built from four complementary techniques that survive static analysis but collapse under concrete execution.
The Obfuscation Arsenal
The protection consists of a custom VM whose bytecode resides in a 586-element array called program[]. A dispatcher reads the current program counter, fetches an opcode, and dispatches to handlers. Every arithmetic primitive is further expanded with Mixed Boolean-Arithmetic expressions. Opaque predicates double the control-flow graph with branches whose outcome is known at compile time. Finally, genuine instructions are wrapped inside thousands of call gadgets of the form pop r8; <insn>; call next, producing the 187,064-instruction count mentioned in the title.
Dynamic Reconnaissance
Because all four layers are execution-dependent, the author recorded a full instruction trace using ptrace with PTRACE_SINGLESTEP on a known input. The resulting log contained 187,064 lines together with register values after each instruction inside the image range 0x401000–0x40d000. A separate memory dumper extracted the VM program array and stack frames directly from the running process.
Building a Faithful Emulator
The trace was replayed inside a custom x86-64 emulator written in Python that parsed objdump output and implemented handlers for the thirty opcodes actually encountered. Two notable bugs were corrected during validation:
- rand() is invoked from four distinct call sites (0x409235, 0x40ad5b, 0x40af37, 0x40b10b) for a total of 192 calls; each return address must be calculated as call-site + 5 rather than assuming a single fixed location.
- Operand-size detection used a naïve substring check that incorrectly treated “DWORD PTR” as containing “WORD”, truncating 32- and 64-bit memory accesses.
After these fixes the emulator matched the original trace line-by-line and reached the final instruction at address 0x40b537 with eax equal to 0xffffffff, exactly as the real binary behaves on an incorrect password.
Recovering the VM Semantics
With a working emulator the author dumped the data stack after every dispatch and decoded the 586 VM instructions. The bytecode implements a simple stack machine whose relevant operations are:
- PUSH imm – push constant
- H2 – addition (used to compute input buffer address 0x40f080)
- DEREF – read input byte
- H5 – multiply accumulator by 256
- H7 – add next byte
- G8 / G3 – XOR with per-group constants
Consequently every four input characters are accumulated into a 32-bit big-endian word. Eight such words are XORed with the following constant pairs:
- (0x0915033a, 0x41414141)
- (0x427d7872, 0x11111111)
- (0x30310a00, 0x55555555)
- (0x2a052e32, 0x5a5a5a5a)
- (0xcff5ecdf, 0xaaaaaaaa)
- (0x1914031e, 0x77777777)
- (0xf6f7c6ad, 0x99999999)
- (0x6c6a524e, 0x33333333)
The resulting 32-bit values must all be zero for the password to be accepted. Solving each equation yields the flag bytes directly: HTB{******_**_***_********_*_**}.
Conclusion
The exercise demonstrates that even an extreme combination of VM-based dispatch, MBA, opaque predicates and call obfuscation remains vulnerable once execution is recorded and replayed. All four techniques ultimately depend on concrete runtime values that a faithful emulator can capture and simplify.
Related articles
uCreator Spyware Infiltrates Modified Telegram, WeChat and GCash Builds on Android
Security researcher Ovi has published a detailed analysis of uCreator, also known as YingGai, a commercial Android spyware platform designed for surveillance and remote app control. The malware intercepts messages, verification codes and account data directly inside legitimate applications without requiring root privileges. Infection vectors include tampered Telegram, WeChat and GCash APKs distributed through unofficial sources, as well as the Onion Box container that launches the target app inside a controlled environment. Once active, uCreator hooks into the host process, reads Telegram’s local message database through client interfaces, captures two-factor authentication passwords and hides its own session from the user. The operation is supported by cloud-based command panels and exposed GitLab repositories that revealed server-side code and development history. Compatibility problems have been noted on Android 17, and the total number of victims remains unknown.
Researchers Deploy Cowrie Honeypot Disguised as NVIDIA H100 Server to Study SSH Botnet Tactics
A cybersecurity team set up a realistic Cowrie honeypot on a fake server equipped with four NVIDIA H100 GPUs, 128 AMD EPYC cores, and terabytes of storage to observe what SSH brute-force bots actually do after gaining access. The trap used a custom StickyAuth module that allowed entry only after several failed attempts and locked in the successful credential pair per IP address. Over the first 12.5 hours the system recorded 1,846 connections from 126 unique IPs, 175 successful logins, and 1,524 commands executed, with the majority of activity traced to a single botnet linked to the Outlaw group. The attackers deployed SSH keys signed mdrfckr, changed the root password, killed competing processes, installed cron jobs, and downloaded a mining archive called dota3 containing an IRC backdoor and its own SSH scanner. The researchers also identified three realism issues in the base Cowrie setup—limited grep flags, outdated filesystem paths in Debian 12, and inconsistent hostname reporting—and patched them to keep sophisticated bots engaged longer. An auxiliary LLM service later summarized each session in Telegram for easier analysis.
Hirudo Android Banking Trojan Uninstalls Legitimate Bank Apps and Installs Attacker-Controlled Fakes
Researchers at ThreatFabric have detailed Hirudo, a sophisticated Android banking trojan that also serves as a remote access tool and replaces genuine bank applications with attacker-controlled copies. The malware spreads through decoy apps themed around shopping, adult video, and short series, including Shopora, 1V1 X, ZoyaTV, and KoiShort. Once installed, it uses accessibility services to detect target banking apps, verify their signatures, display a fake update prompt, and force uninstallation of the real application before installing a malicious replica signed with a publicly known test key. The trojan employs components from the open-source YAHFA and Dobby projects to intercept signature checks, hide accessibility services, bypass screenshot restrictions, and forward Play Integrity attestations to the attacker’s server. Eight ready-made replicas target seven Indonesian banks, while credential theft focuses on users in China, India, Mexico, Morocco, and Thailand. Server logs collected in August 2026 contained thousands of credentials, device data, and financial profiles, with the attestation key set confirmed as publicly leaked and partially revoked by Google.
Over 300 Tor Exit Nodes Hijacked to Intercept SSH Passwords and Deploy Ebury Backdoor
Attackers compromised hundreds of Tor exit nodes and repurposed them to perform man-in-the-middle attacks against SSH connections. Instead of reaching the intended server, users were redirected to attacker-controlled infrastructure where they could be tricked into accepting a forged host key and revealing their credentials. Researcher kaba identified 333 malicious exit nodes routing traffic through the same 12 interception servers after noticing an unexpected host-key warning on October 2. The campaign also attempted to install the Ebury Linux backdoor designed to steal authentication data. The Tor Project confirmed that operators' servers had their configurations altered and some middle relays were converted into exit nodes. The initial access vector remains unknown, but the activity window was limited to October 1-5. Users who connected via Tor during this period, accepted an unfamiliar key, and entered a password should treat their credentials as compromised.