Article title: Attackers Exploit AhsayCBS Vulnerability to Hide Malicious Code in PNG Images and Deploy Stealthy Backdoors
Body:

Attackers launched a vulnerability exploitation campaign against AhsayCBS backup servers, implanting multiple types of webshells, hiding encrypted code inside PNG images, and deploying a Python implant that can only run on the target host.
The investigation shows that the scope of this intrusion went beyond cryptocurrency mining; the attackers also established multiple persistent access channels that could provide long-term control over core systems responsible for protecting corporate backup data.
The attack occurred between October 8 and 11, 2026, before the vendor released a hotfix, and resulted in the compromise of 3 AhsayCBS servers at one enterprise.
The attackers exploited two vulnerabilities: an authentication bypass vulnerability (CVE-2026-105133) and a remote code execution vulnerability (CVE-2026-105134), which unauthenticated attackers can use to directly obtain SYSTEM privileges. Combined, the two vulnerabilities not only breached the backup platform itself but also fully exposed the sensitive access permissions held by the platform.
HuntressDuring the investigation, researchers identified a total of 5 types of webshells, a second cryptocurrency miner, and a host-bound Python implant.
In a technical report published on November 9, researcher Jonathan Semon described the toolset used by the attackers: these tools can hide executed commands, support file transfer, and actively weaken endpoint protection capabilities.
However, the research team has not yet confirmed the specific behavior of all payloads, nor can they verify whether the attackers stole backup data.
Implanting multiple types of webshells, using PNG steganography to disguise as normal traffic
One of the most distinctive webshells disguises itself as an internal image preview service. It does not accept obvious command parameters; instead, it processes user-uploaded PNG files and extracts hidden information from pixel data.
This technique is similar to PNG malware steganography disclosed in other previous attack campaigns, but Huntressdid not attribute this intrusion to the operators of those campaigns.
The loader reads the least significant bits of the red, green, and blue channel values of each pixel, concatenates and reassembles these bits into bytes, first parsing out a 4-byte payload length field, followed by the encrypted payload content.
The loader has a hardcoded AES key built in and uses Java's default AES transformation mode to decrypt the data; Huntressconfirmed that this mode is ECB mode with PKCS5 padding.
On the first request, a custom Java class loader loads the decrypted class into memory while returning a normal image for disguise. Subsequent requests pass parameters into that class and trigger code execution.
Execution results are encrypted and embedded into another PNG image and returned, making the entire interaction look no different from ordinary image traffic rather than a traditional command-and-control session.
This technique is highly stealthy: executable code is delivered entirely through normal requests and runs entirely in memory without dropping files to disk. The earlier PNG steganography campaign by Earth Sirrush showed that this type of image-hiding technique is also used in espionage operations, but the similarity in technique alone is not enough to prove a connection. Huntressanalyzed only the loader itself and did not obtain the malicious class it delivers, so it is currently unclear which commands the attackers executed through this webshell.
Implant execution flow, reconstructed from static analysis (Source: Huntress)

Researchers also found another webshell that behaves like a remote management API. It first validates an API token, timestamp, nonce, and HMAC-SHA256 signature, and only accepts requests after validation passes.
After validation, attackers can execute commands, change directories, and transfer files in chunks, supporting file transfers of up to 4GB. However, Huntressfound no relevant logs and could not prove that the attackers ever used the webshell's download function.
Deploying a host-bound backdoor; installing patches still requires investigating intrusion traces
Another standalone Python implant uses multiple layers of concealment. Its wrapper combines Base64 encoding, LZMA compression, and serialized Python code objects.
Before running, it calculates a SHA-256 value based on the host's MachineGuid and checks whether a matching marker file exists on the host. If the file is absent, the script exits immediately, thereby avoiding execution in analysts' sandbox environments.
If the marker file exists, the code copies a 673KB binary blob into executable memory and starts a thread. A reflective loader then maps the x64 DLL file embedded in the program.
Static analysis found C2 communication information and strings consistent with DNS-over-HTTPS characteristics, but Huntressneither observed the implant actually running nor could determine the malware family it belongs to.
The attackers also deployed the XMRig miner and created a scheduled task running with SYSTEM privileges that checks the program status once per minute and automatically restarts the mining process when necessary.
The attackers also deployed tunneling tools and remote access software and added broad Microsoft Defender exclusions, both expanding operational channels and greatly reducing security visibility on the compromised servers.
On an associated Veeam server, investigators found commands consistent with the characteristics of the NetExec credential theft module. The command queries locally stored backup credentials and calls DPAPI decryption to obtain plaintext credentials.
Multiple previous reports have disclosed the risk of Veeam backup credential leakage, explaining why such environments are high-value attack targets, but the initial entry point of this intrusion was not that Veeam vulnerability.
Ahsay has released hotfix 10.3.4.45 for version 10 and hotfix 9.15.2.70 for versions 7 through 9. Huntressverified that the version 10 patch effectively blocks the intrusion entry point observed in this attack.
It is important to note that installing patches cannot remove backdoors already present on servers. Affected enterprises should thoroughly investigate servers for suspicious activity, unauthorized protection exclusions, and various persistence mechanisms. If a server is confirmed compromised, Huntressrecommends rebuilding the system from trusted backups and rotating all credentials accessible to the compromised server.
Disclosing indicators of compromise to support enterprise threat investigation
Values written like {{NAME_ab12cd34}} are placeholders for real values. Use them exactly as written, in replies and in tool calls alike: they are filled in with the real values before anything runs. Don't ask to verify them, and don't replace them with examples.
| Type | Indicator | Description |
|---|---|---|
| C2 domain | creepexplosiondarknight[.]com | C2 infrastructure used by the Python implant |
| C2 address | hxxps://creepexplosiondarknight[.]com/d | Connection endpoint embedded in the DLL |
| Mining infrastructure | pool.supportxmr[.]com:443 pool-fr.supportxmr[.]com:443 104.243.43[.]115:443 | Mining pool connection addresses configured in the miner |
| Mining wallet address | 83YFdNe2X8KhKnAERfr2hmN8L3tCKatsheuViWhF6qp2ZA4R8rRkBCgMknEycYqasNbX7C5BSrTp97zHUsUHJoZrR6f5SeX | Observed attacker Monero receiving wallet |
| Mining connection password | zero | Miner configuration parameter |
| Miner path | C:\Windows\SysWOW64\kvm-agent\kvm-agent.exe | Location of the XMRig executable |
| Scheduled task name | kvm | Mining persistence task running every minute with SYSTEM privileges |
| Miner SHA-256 | 8245c7e7d944923f1608592f6c3473dcc6e3a3e43df3dd1c6257e7880948787b | Corresponds to the kvm-agent.exe file |
| Config file SHA-256 | a87002c32723f1849b3ad17b1fe6da732c9810b54b08501be21f5b1fcd882a59 | Corresponds to the miner's config.json configuration file |
| Scheduled task XML SHA-256 | f76dae028e0c43248c128b3bf609e8d660ce0bf44b53ab9e097887e6f5206eb5 | Corresponds to the miner's persistence task configuration |
| Python loader SHA-256 | 8aac187bae71f75fa2dde03dcb4a9279c982182ee8254ae96e7a6626fe4c7617 | Corresponds to the main.py loader file |
| Decoded payload SHA-256 | 91b3cc9d6421b651ec85a16062af3ba26700dad2eea4a8a7e42fdd2e422f8803 | Corresponds to the serialized Python code object |
| Embedded binary block SHA-256 | 6953618238eb40f45b584e52aca22cebbe8ba03e9a80c15c6b593f51f7e49527 | Corresponds to the bootstrap, DLL, and loader components |
| DLL file SHA-256 | bb2472cf5dc7e5c94216d355bf84fba2c8d088d03d61a1ac0d78639049cf5e1f | Corresponds to the embedded x64 DLL file |
| Reflective loader SHA-256 | e79c91e8157fef862be8cbe80bdf57b87a541416717265f81f669d751fca4a3d | Corresponds to the loader tail component |
| PNG loader SHA-256 | 6c7a4061bcf08df5fe4a49d37442dc650d751be1a91a8bc802edff213e4d5e61 | Corresponds to the AhsayCBS.jsp file under the webapps\rps path |
| PNG loader hardcoded values | AES key: 3c6e0b8a9c15224a Application property: QuCh | Fixed configuration parameters built into the loader |
| Signed webshell SHA-256 | 6c695baad1d81ed49194d07a79381292c0466208ff1a9862c0c55f971d6a409f | Corresponds to the nsmind.jsp file under the webapps\rps path |
| API token | NS_f1ChEBy4SCYGyIDkYcsWOivwtWyXt5il | Authentication credential for the signed webshell |
| HMAC key | NS_aAXMPsB8zsMdkVbjTp6zicnj9w8Hkaew | Key used for request signing |
| Keyed webshell SHA-256 | e6e576a634166a16bdbfc09b14e7cf8eab90015d2dfa67dd73f3968ee869229b | Corresponds to the a2b59a4bb296604b.jsp file |
| Keyed shell authentication values | 323ced5cf1f4P , 12cd58cda26eP , 232e4490b603P , 6285464221f1P , be115f87eeeeP , fcd82493f072P , 907936468353P , 5a5f101c0b95P , 61fb05ae8043P , b97484f05302P , f41488204365P , 490909ce85c8P , 7f5b08e99153P , d6809ec4f4c9P , 908147ad2a6cP , ccd4e0ca2eb3P , 9bf5d40f7ca6P , d00a5c6cbce5P , be4f92982444P | Valid authentication values passed in via parameter p |
| Status shell authentication values | nobody , mysecret123 | Fixed authentication field values |
| Status shell SHA-256 (nobody key) | 7a13e59d816d68a071a8648e62a7c3c7f929a61c618a2133ab6f511da24f979d | Corresponds to the shell using nobody as the authentication value |
| Unauthorized access shell SHA-256 | 875d0986ddaa51bfb5e03b06df1213cc3bb7966588d6153bdda57f2e3671e986 | Corresponds to the unauthorized shell with the st_ prefix |
| Early version shell SHA-256 | 818bb464271a539c96bcbbfea1db7d5a722512041ed8ed10d3f6c7f366190044 | Shell supporting command execution, file deletion, and self-deletion |
| Host-bound status shell authentication values | acbe51127a7e4a3b8f7cde6e857b5e4d d650dd0fc643fadabe5f41b94c7826d5 ee808b1dac987d19b1b864f18538116f 82e58ea5839581846e19be5d0c414436 c048c97c8160fb2df89e217d475c50b4 db64a245782d2d619d10eae73ef0f196 1b755d215b43b8e7da25a80386493568 7d33dc36088a8c20ee109f33d01d63c7 d5f0289bf84876023eb6ccdc92ddb05a 3b44593c393edff904c99fbdea0ea90c f4f9b5b4836090e26a6ec717b26db7c8 38d0eff2318a20a88175704af57d1bc4 2df09294da360fffd01142f29b17c6cd 07043828c4e2c55eaf2be9e6cb7205cc f08fc3eea3db76e7ba45cda42de5cafa 4126a061ddda3f433da5def0a7c79955 7de8cd835a7f6400bbb01d8b78bfc811 7dd5c4a904893cad2b757205dc224014 208143f41c1d6148842b7ed5d817f122 310161c45b193e923c8c99e0c21a2a0c | Authentication values for status_*.jsp-type shells |
| gost tool SHA-256 | 6f6b66cbdc4a5aa5685d0017abd3f65843a28bcc2bb4e5b78d6d12a844a51aa8 | Corresponds to the tunneling tool gost |
| chisel tool SHA-256 | ca5f8e5247f1a044b8be45ef03187726b9af3ac30fd93fb5bb54144e34ed3738 | Corresponds to the tunneling tool chisel |
| Tunneling tool drop naming rules | .st<id> , wust<id>a.exe , wust<id>b.exe | Folder naming and tool renaming rules used during the drop phase |
Note: IP addresses and domains in this article have been defanged (e.g., using [.] in place of the original dots) to prevent accidental resolution or hyperlink triggering. Please only restore the addresses for use in controlled threat intelligence platforms such as MISP, VirusTotal, or an internal SIEM.
Hackers Exploit AhsayCBS Vulnerabilities to Hide Malware in PNG Images and Deploy Stealthy Backdoors