Toy Ghouls "Angry Birds" custom backdoor (HiveMQ / Element)
Summary
Kaspersky GERT / Security Services disclosed on September 4, 2026 that Toy Ghouls (aka Bearlyfy, Laboo.boo, and Feral Wolf) — the financially motivated group targeting Russian organizations since 2025 — used a custom backdoor for the first time in early July 2026. Two variants were observed, both with "bird" in their agent names:
mqtt-bird-agent 0.1.0— uses a HiveMQ MQTT broker as C2.matrix-bird-agent 0.1.0— uses an attacker-hosted Element (Matrix) server as C2.
The shift from the group's earlier lean on public GitHub tools and leaked Babuk/LockBit builders (and its own GenieLocker ransomware) to custom backdoors over unconventional C2 channels signals an effort to evade detection longer and run more sophisticated follow-on operations.
Tags
- ops
- tooling
- campaign
- Toy Ghouls
- Bearlyfy
- Laboo.boo
- Feral Wolf
- backdoor
- MQTT
- HiveMQ
- Matrix
- Element
- WinRM
- Evil-WinRM
- custom C2
- service persistence
- ChaCha20-Poly1305
- machine-bound config
- Russia targeting
- financially motivated
- extortion
Why this matters
- First custom backdoor. Previously Toy Ghouls leaned on public GitHub tooling plus leaked Babuk/LockBit builders, then its own GenieLocker. A bespoke backdoor with full device control is a capability step, not just another encryptor.
- Unconventional C2 channels. HiveMQ MQTT broker and a Matrix/Element homeserver are not classic C2 infrastructure; defenders hunting for HTTP long-poll / Cobalt-Strike beacons will miss both. The Element variant even runs as a Matrix room with a
panel-botoperator account. - Machine-bound, self-sealing config. The config
config.tomlis partially encrypted on first run with a ChaCha20-Poly1305 key derived fromHKLM\Software\Microsoft\Cryptography\MachineGuid, binding the file to that host. The Element variant deletes the file after first run and moves config into the registry. This makes off-host forensics of the dropped config harder. - Service masquerading. Persistence installs as Windows services named after plausible system components (
cplsupport"Problem Reports Control Panel",wtas"Windows Telemetry Aggregator Service").
Delivery and installation
- Delivery: WinRM, using open-source Evil-WinRM and WinRM-fs to push the backdoor and its
config.tomlto compromised systems. This is consistent with the group's known RDP/WinRM movement. - Run modes: interactive command-line session or a Windows service.
--install/install— install as a system service.--uninstall/uninstall— remove the service.--service/service— run as a Windows service (not a default launch flag; passed as the installed service's argument).- HiveMQ binary presents as
cplsupport.exe("Bird Agent - MQTT server monitor"); Element binary aswtass.exe("Matrix monitoring agent"). - Config discovery: looks for
config.tomlin the launch directory, then falls back to%PROGRAMDATA%\SynapseAgent\config.toml(Element) or%PROGRAMDATA%\cplsupport\config.toml(HiveMQ); full path can be forced with-c/--config.
Config and machine binding
- Accepts plaintext or partially-encrypted
config.toml. On first run itseal()s (ChaCha20-Poly1305) sensitive fields with a key derived fromHKLM\Software\Microsoft\Cryptography\MachineGuid, so after the first run the config is bound to that machine and auto-decrypted on later runs. If it cannot decrypt, it stops. - HiveMQ encrypted fields:
agent_privkey(agent private key),channel_id(broker channel),server_pubkey(server public key). - Element version: deletes the config file after the first run and writes the parameters to
HKLM\Software\synapse\Config\SealedConfig; on later runs it reads the registry first. The config names the attacker's Element server address, a room ID, and anaccess_token; if the token is empty it prompts for a password during install, then stores the received token in theblobfield.
Communication
Both versions first issue GET http://ip-api.com/json at startup to learn the public IP and country.
HiveMQ (MQTT) variant
- C2: the attackers' own cluster on the public HiveMQ broker (
broker.hivemq.com; free tier ~100 concurrent / 10 GB·month), on port 8883. POST .../[cluster_id]/status—{"online":bool,"hostname":"...","timestamp":unix,"location":{"json"}}.POST .../[cluster_id]/metrics3— periodic system metrics (cpu_percent,mem_used_bytes,mem_total_bytes,disk_used_bytes,disk_total_bytes,load_1m/5m/15m,uptime_secs,hostname,timestamp).GET .../[cluster_id]/cmd/req— fetch commands; server returns{"cmd_id":int,"command":"str","timeout_secs":int}.- Commands executed via
powershell.exein hidden mode (-NonInteractive -NoProfile -Command). POST .../[cluster_id]/cmd/res—{"stdout":"str","stderr":"str","exit_code":int,"duration_ms":int}.
Element (Matrix) variant
- C2: attacker-hosted Element server on the Matrix protocol at
meet.element[.]tw, with a dedicated room. m.bird.status— system status (same shape as HiveMQ).m.bird.metrics— metrics with slightly different field names (cpu_percent_x100,load_1m_x100,load_5m_x100,load_15m_x100, plus mem/disk/uptime/hostname/timestamp).- Two command types:
config:set_interval(5–3600 s) — sets the metrics interval, stored atHKLM\Software\SynapseAgent\metrics_interval.- Messages beginning
cmd:— executed via the Windows command line; the attacker's Element account is identified aspanel-bot(from the compromised host's Element SQLite databases). - Command output returned as
m.bird.cmd_response(mirrors the HiveMQ shape).
Public indicators
Binaries (MD5)
cplsupport.exe—BFADBEEE63A4F0BF19EC9DEB8FA58F58wtass.exe—7916C33688385525078BEE504C90F359- Dropped config:
config.toml
Kaspersky verdicts
HEUR:Backdoor.Win64.Suptoml.genHEUR:Trojan.Script.Zapchast.confBackdoor.Win64.Agent.smgdvyTrojan.Script.Zapchast.abwmTrojan.Win64.Agent.smgsfoTrojan.Script.Zapchast.abwo
Registry
HKLM\Software\synapse\Config\SealedConfigHKLM\Software\SynapseAgent\metrics_interval
Services
cplsupport(displays "Problem Reports Control Panel")wtas(displays "Windows Telemetry Aggregator Service")
Network / domains
meet.element[.]tw— Element/Matrix C2 (attacker-hosted).broker.hivemq.com— legitimate public HiveMQ broker abused as C2 (port 8883, per-[cluster_id]paths).ip-api.com— legitimate IP-geo service used at startup.- Startup
GET /jsontoip-api.comis a low-FP but repeatable behavioral marker.
Detection and response
- Hunt the channels, not just HTTP C2. Alert on outbound MQTT to
broker.hivemq.com:8883with per-cluster paths (/status,/metrics3,/cmd/req,/cmd/res) and on Matrix/Element protocol traffic to non-corporate homeservers (notablymeet.element[.]tw), includingm.bird.*event types and apanel-botaccount. - Service + config forensics. Inventory Windows services named
cplsupport/wtas; check for%PROGRAMDATA%\SynapseAgent\config.tomlor%PROGRAMDATA%\cplsupport\config.toml; inspectHKLM\Software\synapse\Config\SealedConfigandHKLM\Software\SynapseAgent\metrics_interval. - WinRM movement. Correlate WinRM (Evil-WinRM / WinRM-fs) access with subsequent service creation and first-run
ip-api.comlookups — the delivery vector and the first network call are a strong pair. - Binary matching. Match the two MD5s; treat any
config.tomlwith a partially-encryptedblob/agent_privkey/channel_id/server_pubkeystructure as high-signal. - Remediate the access path. Remove the service, the config blob, and the registry keys; revoke the WinRM session/credentials; rotate any credentials the PowerShell/
cmd:command history touched; then restore from known-good media since a custom backdoor with full device control implies the host is untrusted.
Evidence caveats
- This is the group's first observed custom backdoor; Kaspersky ties it to Toy Ghouls through continuity with prior TTPs (WinRM movement, Russian targeting, shift to custom tooling). The HiveMQ and Element C2 choices are operational and may rotate.
broker.hivemq.comandip-api.comare legitimate public resources; their mere presence is not malicious — the abuse is the per-cluster path structure and them.bird.*event types layered on top.- Machine-bound config sealing means a config file recovered from one host will not decrypt on another; analyze it in place or with the originating
MachineGuid.
Related pages
Sources
- Kaspersky GERT / Security Services, September 4, 2026: Angry Birds: Toy Ghouls' new toys