Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
MalwareUsed by 3 actors

AGENTPSD

AGENTPSD is a lightweight Python-based reverse shell malware family, also described as a backup utility or fallback implant. Volexity reported it in a long-running cyber-espionage campaign attributed to the China-nexus espionage actor VerdantBamboo, which overlaps with UNC5221, WARP PANDA, Clay Typhoon, and UTA0178. The malware was deployed to Linux systems, including an Egnyte Storage Sync appliance, a Synology NAS, and a retired Linux-based GroupWise email archive server. It was packaged into a native binary using PyInstaller.

Its primary role was to provide fallback persistence and a backup command channel if the actor’s primary malware, especially BRICKSTORM and in some cases PLENET, became unavailable or stopped functioning. Multiple reports characterize AGENTPSD as a simple/basic Python reverse shell designed to execute if the primary framework vanished. In the Egnyte intrusion, Volexity found persistence configured by modifying /etc/crontab to execute AGENTPSD as root at 14:20 on the 15th day of every month. Reporting states AGENTPSD had been present on the compromised Egnyte system for at least 18 months before discovery, and one account notes it was installed on both the Egnyte appliance and a retired GroupWise archive server but was not actively used.

The malware appeared alongside other VerdantBamboo tooling used against edge and appliance platforms that typically lack EDR coverage. In the observed campaign, the actor used stolen credentials, SSH access, abused an Egnyte sudo misconfiguration for privilege escalation, regained access through an exposed firewall administrative interface without MFA, and later deployed PLENET on a Synology NAS along with AGENTPSD as a backup reverse shell. High-confidence behavioral detail in the provided content is limited to AGENTPSD functioning as a Python reverse shell/fallback implant; no specific AGENTPSD command-and-control domains or hashes are provided in the content.

Share:
For your environment

Hunt this family in your stack

Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.

THREAT ACTORS

Groups observed using it

3 distinct threat actors attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.

View more details
VerdantBamboo

Volexity tracks this specific python-based backup utility under the name AGENTPSD . This utility would execute a reverse shell if the primary framework vanished .

via security online infosecurityonline.info
UNC5221

Using credentials they’d harvested and held in reserve, they re-enabled the SSL VPN on the external firewall, got back in, and deployed a new backdoor family – PLENET on a Synology NAS, along with a backup reverse shell called AGENTPSD.

via thecybersecguruthecybersecguru.com
WARP PANDA

Using credentials they’d harvested and held in reserve, they re-enabled the SSL VPN on the external firewall, got back in, and deployed a new backdoor family – PLENET on a Synology NAS, along with a backup reverse shell called AGENTPSD.

via thecybersecguruthecybersecguru.com
MITRE ATT&CK

Techniques & procedures

11 distinct techniques documented for this family, organized by ATT&CK tactic.

Execution

4 techniques
T1053Scheduled Task/JobEvidence1

They added an automated task to run a basic script on a monthly cadence. Volexity tracks this specific python-based backup utility under the name AGENTPSD.

T1053.003CronEvidence2

The same malware was found on the MSP’s pfSense firewall in a FreeBSD-compatible variant, obfuscated with a tool called gobfuscate and set to run automatically through a modified cron startup file.

T1059Command and Scripting InterpreterEvidence1

By abusing the system utilities, the operators could arbitrarily write malicious files to any directory on the local disk. | This utility would execute a reverse shell if the primary framework vanished.

T1059.004Unix ShellEvidence3

Handles file and directory operations Runs arbitrary interactive shell commands

Persistence

3 techniques
T1053Scheduled Task/JobEvidence1

They added an automated task to run a basic script on a monthly cadence. Volexity tracks this specific python-based backup utility under the name AGENTPSD.

T1053.003CronEvidence2

The same malware was found on the MSP’s pfSense firewall in a FreeBSD-compatible variant, obfuscated with a tool called gobfuscate and set to run automatically through a modified cron startup file.

T1543.002Systemd ServiceEvidence1

Once you have that, you can write to /usr/sbin/ , install a service, modify /etc/rc for persistence

Privilege Escalation

3 techniques
T1053Scheduled Task/JobEvidence1

They added an automated task to run a basic script on a monthly cadence. Volexity tracks this specific python-based backup utility under the name AGENTPSD.

T1053.003CronEvidence2

The same malware was found on the MSP’s pfSense firewall in a FreeBSD-compatible variant, obfuscated with a tool called gobfuscate and set to run automatically through a modified cron startup file.

T1543.002Systemd ServiceEvidence1

Once you have that, you can write to /usr/sbin/ , install a service, modify /etc/rc for persistence

Lateral Movement

1 technique
T1021.004SSHEvidence2

The two malware families deployed to the NAS appliance over SSH are as follows

Command and Control

5 techniques
T1008Fallback ChannelsEvidence1

AgentPSD is a simple Python-based reverse shell utility that Volexity believes VerdantBamboo used as a fallback persistence mechanism if other malware was no longer accessible.

T1071.001Web ProtocolsEvidence1

These BRICKSTORM instances use the websocket protocol handler for connecting to the C2.

T1105Ingress Tool TransferEvidence4

deploy additional malware to a Synology Network Attached Storage (NAS) appliance

T1219Remote Access ToolsEvidence1

Analysts at Volexity... identified the malware implant responsible for the activity as BRICKSTORM, a remote access trojan the group has been actively evolving.

T1573Encrypted ChannelEvidence1

The appliance was also making TLS connections to one of Google’s public DNS servers (8.8.8.8). It appeared to be using Google to perform queries via DNS over HTTPS

INDICATORS OF COMPROMISE

IOCs tracked for this family

3 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.

View more in app
Hashes
3 tracked

File hashes (MD5, SHA-1, SHA-256) from samples and reports.

TypeValueLatest sighting
hash.sha256●●●●●●●●●●●●View more in app20 days ago
hash.md5●●●●●●●●●●●●View more in app22 days ago
hash.sha1●●●●●●●●●●●●View more in app22 days ago
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets match these IOCs, which detections are missing, which campaigns to expect next, and what to do in the next 30 minutes.
IOC matching3

Match every observed IP, domain, and hash against your live telemetry.

Threat actor attribution3

Named campaigns wielding this family, with evidence pinned to each claim.

Exploited vulnerabilities

CVEs this family uses for access and lateral movement.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

MITRE ATT&CK mapping11

Every documented technique, ranked by evidence weight.

Researcher chatter

Reddit, Mastodon, and CTI community discussion around this family.