
AI-Powered Espionage Campaign Targets Government Linux Infrastructure
Unit 42 report on CL-UNK-1211, a campaign against government Linux infrastructure observed from October 2025 to April 2026. Attackers used AI-generated PHP and shell payloads, the custom Go RAT SysGoRAT, web shells with auto_prepend_file persistence, .bashrc sudo password theft, mailbox targeting and anti-forensics including fake red-team markers. It lists TTPs, detections and IOCs including a CVE-2025-55182 scanner.
What it is
CL-UNK-1211 is a Unit 42 activity cluster (October 2025 to April 2026) that targets government and state-affiliated Linux servers, mainly PHP/Plesk web hosts, qmail mail servers and MSSQL databases. "UNK" means Unit 42 has not decided whether it is nation-state or cybercrime. The page says the payloads carry conversational AI comments, so they were either pasted from an LLM or deployed by an automated agent.
How it works
- Persistence in PHP: the attackers changed
auto_prepend_filein every PHP config under/etc/php/and/opt/plesk/php/, so a web shell runs before any PHP script. One shell was/usr/lib/php/plesk_sys_driver.php. - Credential theft: a replaced
.bashrcaliasessudoto a fake password prompt and logs the result toSolarwinds.StatusLog.txt. A line added to a PHP login page logs admin credentials. The attackers also searched config and history files for email, SMTP and database passwords. - SysGoRAT: a Go RAT for Windows and Linux with seven command types and six persistence methods. It connects over WebSocket to
wss://<addr>/ws, defaulting to 104.194.158[.]65:443. Binary names seen:sys-control-client,pip2.7,ea_install,./semanage. - Root access: LinPEAS, then PwnKit (CVE-2021-4034). Backdoors left behind: a renamed Python 3 at
.libpython-helper, a custom SUID shell at.libsystemd-helper, and a copy of/bin/bashnamed.tourchwithchmod u+s. - Lateral movement:
XP_CMDSHELLon internal MSSQL, with a double hop through one SQL server to another subnet. They also usedsshpasswith hard-coded admin credentials and added keys toauthorized_keys. - Tunnels: revsocks, pysoxy, and GSocket
gs-netcatrun from/dev/shm/.gs-10085/under the process name[kcached], with arguments in theGSOCKET_ARGSenvironment variable andHISTFILE=/dev/null. - Mail and data theft: they listed
/var/qmail/mailnames/and countedMaildir/cur/files.search_social.phpsearched headers for social-media emails.zip_mails.shwas meant to archive mailboxes. Databases went to/tmp/dump.sqliteand CSV, then out by netcat orcurlto transfer[.]sh, bashupload[.]com, filebin[.]net and catbox[.]moe. - Exposure scanning: a custom Go scanner for CVE-2025-55182 (React2Shell).
- Anti-forensics:
touch -ttimestomping, single-use scripts that write, run andrmthemselves, and mass deletion of auth, history, mail, OS, web and PHP session logs. They plantedRedTeamOps2025in a script and created a user with the passwordpentest123to pass as a red team.
What to do
Hunt for these on Linux web and mail hosts:
auto_prepend_filevalues in/etc/php/and/opt/plesk/php/that point to unexpected files, andplesk_sys_driver.php.- A
sudoalias in any.bashrc, and a file namedSolarwinds.StatusLog.txt. - Hidden SUID binaries:
.libpython-helper,.libsystemd-helper,.tourch. - Processes named
[kcached]and/dev/shm/.gs-10085/, plus outbound connections to gsocket[.]io. search_social.php,zip_mails.shand/tmp/dump.sqlite.- The strings
RedTeamOps2025andpentest123, which indicate the false red-team cover story. - Outbound traffic to the page's IP and domain list (17 IPs; magento[.]ink, solidmonpe[.]com, wibu-bau-bawang[.]online, beraskencur[.]site), and the SHA-256 hashes for the React2Shell scanner, PwnKit, GSocket shell, privilege-escalation backdoor and three PHP web shells.
The page recommends strict outbound firewall rules and endpoint detection for standard utilities that spawn interactive shells. The Cortex XDR alert "Uncommon attempt to clear shell history" fired on this activity. Check exposed React servers for CVE-2025-55182 and patch hosts for CVE-2021-4034.
Caveats
- Several commands appear only in figures, so this text does not reproduce them.
zip_mails.shhad syntax errors (user=\;)) and would have failed.- Cortex XDR detected and blocked the attempts to kill its processes with
pgrepandpkill. - Unit 42 found no evidence that SolarWinds systems were compromised; the name was only borrowed as camouflage.
- The page does not say how initial access was gained, and it does not attribute the campaign to a nation-state or criminal group.
Organisations named here
- auto_prepend_file
- CL-UNK-1211
- GSocket
- PwnKit
- pysoxy
- revsocks
- SysGoRAT
CVEs named here
- CVE-2025-55182
- CVE-2021-4034
Technologies named here
- LinPEAS
- Linux servers
- Plesk
- WordPress
- Windows
- Netcat
- Cortex XDR
- Advanced WildFire
- Linux
- PHP
- Go
- SSH
- gs-netcat
- Web shell
- xp_cmdshell
- Cortex Agentic Assistant (Cortex AgentiX)
- Cortex Cloud
- Cortex XSIAM
- Custom Go vulnerability scanner
- GSocket and gs-netcat
- MSSQL servers (XP_CMDSHELL abused)
- PHP configurations under /etc/php/ and /opt/plesk/php/
- PwnKit
- pysoxy
- qmail mail servers (/var/qmail/mailnames/ Maildir)
- revsocks
- search_social.php
- sshpass
- transfer[.]sh, bashupload[.]com, filebin[.]net, catbox[.]moe
- Unit 42 attribution framework
- zip_mails.sh
Techniques named here
- Web shell deployment
- Masquerading
- Disabling security tools
- Timestomping
- Indicator Removal
- SSH authorized_keys persistence
- AI-generated payloads
- .bashrc sudo alias password capture
- Cleartext password search
- Database dumping and exfiltration
- In-memory reverse shells
- Mailbox enumeration and exfiltration
- MSSQL XP_CMDSHELL double-hop execution
- Network and database reconnaissance with PHP scripts
- PHP auto_prepend_file hijacking
- PHP login page credential logger
- Planted red team markers
- Privilege escalation with SUID binaries
- Single-use script self-deletion
- SSH lateral movement
- Tunneling and proxying
Threat actors named here
- SolarWinds
- CL-UNK-1211: activity cluster tracked by Unit 42 that targeted government entities and state-affiliated infrastructure from October 2025 to April 2026; UNK means the cluster's nation-state or cybercrime affiliation is not yet determined
- GSocket reverse shell (gs-netcat, gs-dbus)
- SysGoRAT: custom multi-platform (Windows and Linux) RAT written in Go, first seen as sys-control-client, with a WebSocket C2 at wss://<addr>/ws defaulting to 104.194.158[.]65:443 and seven command types
Related in Threat Intel
Reverse Engineering the Six Stages of MacSync Stealer and RAT
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
