PyPI恶意存储库fshec2攻击分析

2024-06-19 16:12

本文主要是介绍PyPI恶意存储库fshec2攻击分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x00 事件背景

PyPI(Python Package Index)是Python官方的包索引和分发平台。它是一个公共的、全球性的存储库,用于存储、发布和安装Python包和模块。

PyPI允许开发者将他们编写的Python代码打包为可重用的模块或库,并将其发布到PyPI上供其他开发者使用。开发者可以通过使用pip工具(Python的包管理工具)从PyPI上安装所需的模块或库。PyPI提供了一个广泛的Python包,涵盖了各种用途和领域的功能。

 

0x01 事件过程

2023年4月17日ReversingLabs公司的安全团队向PyPI团队报告了名为fshec2的恶意包。同一天该包从PyPI存储库中删除。

0x02 技术分析

该包安装后,会产生__init__.py,full.pyc,main.py三个文件。

__init__.py从main模块中导入load_path函数。

main.py中的load_path函数通过importlib库加载full.pyc文件并将其作为模块对象,最后调用该对象的get_path函数。

从full.pyc的文件头中可知,该文件是3.10b版本Python编写的,部分工具如pycdc,uncompyle6无法完整的反编译出py源码。手动反编译结果如下:

get_path函数首先会根据宿主的系统决定相关的行为,在Windows下,该函数会向C2服务器发送自己的hostname和user信息,并且将C盘用户根目录下的目录结构发送给C2服务器。同时还会将从C2服务器上获取的commands写入本地。

随后会通过create_windows_task函数获取Python路径和恶意脚本路径,再使用命令:

schtasks /create /tn "{task_name}" /tr "{python_path} {script_path}" /sc minute /mo {trigger_interval} /F /RL HIGHEST /NP

添加Windows计划任务。这个命令将创建一个计划任务,定期以最高权限运行指定的 Python 脚本。

在Linux下,同样会向C2服务器发送自己的hostname和user信息,随后将当前的计划任务写入到了__crontabl\_default.txt文件下。

图片

最后会用subprocess.call添加计划任务,任务为:

*/10 * * * * /usr/bin/python3 {file_path_user} >> {dir_path}/{file_path_all}run.log 2>&1

含义是每隔 10 分钟执行一次 /usr/bin/python3 {file_path_user} 命令,并将输出结果追加到 {dir_path}/{file_path_all}run.log 文件中。

send_file函数会向C2服务器的uploads目录上传文件。

通过以上的函数结合,该恶意库的攻击行为可以进化。

第一阶段会从C2下载的新的Python文件,通过其中的execute_commands_as_per_url函数进行第二阶段的payload下载。

随后的攻击行为是多变而且可控的,由于在本文章编写的2023年6月5日,C2服务器的相关目录已删除,无法获取后续的payload,分析结束。

图片

0x03 相关反应

2023年4月17日,该恶意包从PyPI存储库中删除。

2023年6月5日,仍能从国内镜像网站上下载到该恶意包。

图片

至2023年6月6日,微步未对该IP进行标记,VirusTotal上ADMINUSLabs,CRDF,CyRadar,ESET,ESTsecurity,Kaspersky共6家安全公司对该IP进行了标记。

图片

图片

0x04 事件启示

如今,基于第三方库的攻击事件变得非常普遍,对于Python来说,即使PyPI对发布的软件包进行了源码检测,仍然会有一些恶意软件包能够逃脱检测并被上传。例如pyrologin、easytimestamp、discorder、discord-dev等恶意Python库,它们采用了与通用库相似的名称,导致程序员在使用pip install命令时意外安装这些恶意库,最后在调用恶意库的导出函数时进行了恶意操作。

本次的fshec2攻击示例,尽管没有采用先进的攻击技术,但它却成功地利用了pyc文件绕过了PyPI对源代码的检测以及杀毒软件的检测。这种可以简单复现的攻击手法需要引起安全相关人员和互联网公司的重视。

这种攻击手法提醒我们,尽管PyPI等开源库平台已经采取了一系列安全措施,但我们仍然需要保持高度警惕。作为开发者和用户,我们应该对第三方库的使用持谨慎态度,并采取一些预防措施来减少潜在的风险。具体措施如下:

  • 仔细验证和核实要安装的库的来源及可信度。确保库的作者是可信赖的,并检查库的下载来源是否是官方渠道;

  • 避免在生产环境中直接安装不受信任的库。使用库时,可以先在开发环境中进行测试和评估,确保库的功能和安全性符合预期;

  • 及时更新已安装的库。随着安全漏洞的不断发现和修复,开源库的更新版本通常会修复已知的漏洞和安全问题;

  • 在使用任何第三方库之前,应仔细阅读其文档、查看其社区反馈和评价,了解库的使用方式、功能和潜在风险。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

  因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

  

这篇关于PyPI恶意存储库fshec2攻击分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075506

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499