ZiChatBot
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.
Groups observed using it
1 distinct threat actor attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.
Techniques & procedures
21 distinct techniques documented for this family, organized by ATT&CK tactic.
Initial Access
3 techniques
Initial Access
The threat was uncovered after a series of malicious Python packages were found on PyPI... The attacker uploaded packages designed to look like common development libraries, tricking Python developers into installing them.
To conceal the malicious package containing ZiChatBot, the attacker created another benign-looking package that included the malicious package as a dependency... The termncolor library imports the malicious colorinal library as a dependency.
The termncolor package was especially deceptive since it contained no obviously malicious code on its own. Instead, it listed the malicious colorinal package as a dependency, so anyone who installed termncolor would unknowingly trigger the full infection chain.
Execution
7 techniques
Execution
On Linux, the payload sits at /tmp/obsHub/obs-check-update and uses a crontab entry to keep access alive on the infected system.
The other retrieves messages containing shellcode, which ZiChatBot executes in a new thread.
system ( "chmod +x /tmp/obsHub/obs-check-update" ) system ( "echo \"5 * * * * /tmp/obsHub/obs-check-update\" | crontab - " )
In reality, each carried a dropper that silently extracted and installed ZiChatBot during the normal library import process. The code loads the dropper into the host Python process.
The code actually loads the terminate.dll file into the Python process and then invokes the DLL’s exported function envir... The Windows version of ZiChatBot is a DLL file (libcef.dll) that is loaded by the legitimate executable vcpktsvr.exe.
Persistence
2 techniques
Persistence
Privilege Escalation
2 techniques
Privilege Escalation
Stealth
4 techniques
Stealth
The dropper used AES encryption in CBC mode to hide sensitive strings and embedded payloads.
The attacker uploaded packages designed to look like common development libraries... The packages, uuid32-utils, colorinal, and termncolor, appeared harmless based on their listed descriptions.
Discovery
2 techniques
Discovery
Command and Control
5 techniques
Command and Control
ZiChatBot takes an inventive but dangerous approach to command and control by routing all activity through Zulip’s public REST API. Rather than contacting a suspicious external server, the malware sends HTTP requests to a legitimate service.
ZiChatBot uses the REST APIs from Zulip, a public team chat application, as its command and control server... it initiates a series of sequential HTTP requests to the Zulip REST API.
A newly discovered malware called ZiChatBot has been found quietly using the REST APIs of a legitimate team chat application called Zulip to receive and carry out commands from its operators.
IOCs tracked for this family
30 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.
IPs, domains, and DNS infrastructure linked to this family.
File hashes (MD5, SHA-1, SHA-256) from samples and reports.
Other indicator types observed in public reporting.
Recent activity
5 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A previously unknown malware family delivered via malicious PyPI packages targeting Windows and Linux systems.
OceanLotus suspected of using PyPI to deliver ZiChatBot malware
Cross-platform malware for Windows and Linux that is delivered via malicious PyPI packages, uses Zulip REST APIs for command-and-control, collects basic system information, executes attacker-supplied shellcode, and maintains persistence via registry autorun entries on Windows and crontab on Linux.
ZiChatBot is a previously unknown malware family delivered via malicious PyPI packages on Windows and Linux. It uses Zulip REST APIs as command-and-control infrastructure instead of a dedicated C2 server, establishes persistence via Windows Registry autorun entries or Linux crontab, and is designed to execute shellcode received from its C2.
The version that knows your environment.
Match every observed IP, domain, and hash against your live telemetry.
Named campaigns wielding this family, with evidence pinned to each claim.
CVEs this family uses for access and lateral movement.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Every documented technique, ranked by evidence weight.
Reddit, Mastodon, and CTI community discussion around this family.