攻击者使用 Python 编译的字节码来逃避检测

这篇具有很好参考价值的文章主要介绍了攻击者使用 Python 编译的字节码来逃避检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

攻击者使用 Python 编译的字节码来逃避检测

以 PyPI(Python 包索引)等开源包存储库为目标的攻击者设计了一种新技术,可以将他们的恶意代码隐藏在安全扫描器、人工审查和其他形式的安全分析中。

在一次事件中,研究人员发现恶意软件代码隐藏在 Python 字节码 (PYC) 文件中,该文件可以直接执行,而不是源代码文件由 Python 运行时解释。

安全公司 ReversingLabs 的研究人员在一份报告中说:这可能是第一个利用 Python 字节码文件可以直接执行这一事实的供应链攻击,而且它是在恶意提交到 Python Package Index 的激增之际发生的。

如果是这样,它会带来另一个供应链风险,因为大多数安全工具可能会错过这种类型的攻击,这些工具只扫描 Python 源代码 (PY) 文件。

编译代码与源代码

在公共存储库(例如用于 JavaScript 的 npm、用于 Python 的 PyPI 和用于 Ruby 的 RubyGems)中发现的绝大多数包都包含打包到存档中的开源代码文件。它们很容易解包和阅读,因此已经为这些存储库构建了安全扫描器来处理这种类型的包装。

攻击者一直在与安全公司进行斗争以逃避检测,而对于明文代码,最常见的逃避技术是混淆。这包括使用编程语言本身的特性,如编码、解码或评估,使代码不可读但功能正常。例如,用base64编码恶意代码是一种常用的技术,但安全工具可以处理这种编码。

在 PyPI 生态系统中,W4SP Stealer 恶意软件背后的网络犯罪分子以采用包括 base64 编码、LZMA 压缩和缩小在内的技术而闻名,从代码中删除空格和注释以使其更紧凑但也更难阅读。

该小组使用一些第三方开源工具来实现这一点,例如 pyminifier、Kramer 或 Hyperion。在 W4SP 攻击的一种变体中,文件中混淆的恶意代码被移动到默认屏幕边框的边缘之外,这样手动查看源代码文件的人就看不到它了。

但是,PYC 文件不同。它们不像纯文本 PY 脚本那样是人类可读的。PYC 文件是在 Python 解释器导入或执行 Python 脚本时生成的。因为它们已经是解释(编译)代码,所以它们稍后可以由 Python 解释器直接执行,而无需重新解释原始脚本。这有助于提高性能,因为它具有更快的执行时间,并且此类文件最常见的用途是分发 Python 模块。

在大多数 PyPI 恶意软件实例中,恶意混淆代码旨在访问外部 URL 并下载恶意软件,通常是信息窃取程序,这是安全工具检测可疑行为的另一个机会。

在最近的这起事件中,一个名为 fshec2 的包被发现包含一个恶意 PYC 文件,完整的恶意负载可以隐藏在文件中,如果安全工具不是为反编译它而设计的,就很难检测到它。

在 fshec2 包中发现的加载程序脚本包含最少的 Python 代码,并执行一个简单的操作:加载已编译的 Python 模块,它恰好是一个恶意模块。

检查器是 PyPI 安全团队提供的用于分析 PyPI 包的默认工具,目前不提供任何分析二进制文件以发现恶意行为的方法。编译代码来自.PYC 文件需要反编译才能分析其内容。

发现的 fshec2 包表现出可能意在逃避检测的额外行为。通常,使用 import 指令从 Python 脚本导入模块。然而,在这种情况下,恶意 PYC 模块是使用 importlib 加载的,importlib 是一个实现导入功能的单独包,仅用于特定情况,例如在导入时动态修改导入的库。

在这种情况下,恶意 PYC 没有被修改,因此除了避免使用常规导入指令之外,没有技术理由使用 importlib,可能是为了逃避检测。

凭证窃取似乎是主要目标

一旦在机器上执行,fshec2 恶意负载会收集有关系统的信息,例如用户名、目录列表和主机名,然后在 Linux 上设置 cron 作业或在 Windows 上设置计划任务以执行从远程服务器获取的命令。

这些命令允许恶意软件自我更新,攻击者能够提供新版本以及 Python 脚本形式的其他有效负载。

研究人员分析了命令和控制服务器,发现了允许他们浏览某些信息的错误配置。例如,他们发现受害者机器被赋予了一个递增的 ID,并且能够确认该恶意软件确实是由多个受害者执行的。

这些错误的数量之多可能会让我们得出这样的结论,即这次攻击不是国家支持的行为者所为,也不是高级持续威胁 (APT)。虽然团队没有收集到足够的证据来以某种方式证明这一假设,但通过增加文件 ID 来收集文件名让我们确定在某些情况下攻击是成功的。

我们的研究人员仍然无法说出目标是谁或什么是。但是,我们可以确认开发人员确实安装了恶意 PyPI 包,并且他们的机器名称、用户名和目录列表因此被收集。

在服务器上发现的一些文件名表明攻击者在一些机器上部署了键盘记录功能。

从历史上看,npm 一直是不幸的领导者,PyPI 也参加了比赛,看看哪个开源平台最受恶意软件作者的关注。然而,在过去六个月中,我们和其他人观察到发布到 PyPI 的恶意软件数量显着增加。事实上,在 5 月份,在 PyPI 上创建新用户帐户和项目被暂停了几个小时,因为大量的恶意活动。

我们向 PyPI 安全团队报告了新的攻击媒介,他们删除了软件包并表示他们之前从未见过这种攻击技术。这并不排除其他类似包进入存储库的可能性。

为了应对这些现代软件供应链威胁,组织需要的不仅仅是静态代码分析解决方案。

他们需要的工具还可以监控敏感的开发系统,以发现可疑进程创建、文件执行、未经授权的 URL 访问、信息收集命令以及使用 get_path 或 importlib 等易于滥用的功能。文章来源地址https://www.toymoban.com/news/detail-471046.html

到了这里,关于攻击者使用 Python 编译的字节码来逃避检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 专门针对开发人员,攻击者利用Rust获取操作系统信息

    近日,研究人员在 Rust 编程语言的 crate 注册表中发现了一些恶意软件包,专门针对开发人员。 Phylum 在上周发布的一份报告中称,这些库是由一个名为 \\\"amaperf \\\"的用户在 2023 年 8 月 14 日至 16 日之间上传的。现已删除的软件包名称如下:postgress、if-cfg、xrvrv、serd、oncecell、laz

    2024年02月10日
    浏览(50)
  • 通过蜜罐技术获取攻击者手机号、微信号【网络安全】

    相关声明: 以下内容仅限用于红蓝攻防对抗等专业领域,请勿用于非法用途。 首先,我们先讲一下蜜罐的概念,你可以简单理解较为蜜罐就是一个陷阱,故意暴露一些我们人为设计好的漏洞,让攻击者自投罗网。 蜜罐是对攻击者的欺骗技术,用以监视、检测、分析和溯源攻

    2024年02月12日
    浏览(38)
  • 危险的套娃:攻击者在 PDF 文件中隐藏恶意Word 文档

    据BleepingComputer消息,日本计算机紧急响应小组 (JPCERT) 日前分享了在2023 年 7 月检测到的利用PDF文档的新型攻击——PDF MalDoc攻击,能将恶意 Word 文件嵌入 PDF 来绕过安全检测。 JPCERT采样了一种多格式文件,能被大多数扫描引擎和工具识别为 PDF,但办公应用程序可以将其作为常

    2024年02月11日
    浏览(48)
  • D-LINK SQL注入漏洞让攻击者获得管理员权限

    D-Link DAR-7000 设备中发现了一个名为 SQL 注入的安全漏洞。 SQL注入是一种恶意攻击,它利用Web应用程序中的漏洞注入恶意SQL语句并获得对数据库的未经授权的访问。 此技术允许攻击者查看、修改和删除数据库中的数据,这可能对数据的机密性、完整性和可用性构成重大威胁。

    2024年02月07日
    浏览(50)
  • Mybatils 中使用$代码逃避扫描漏洞

    解决$在mybatis中权限注入导致的安全问题 @Slf4j @Component public class MybatisSecureProcessor implements BeanPostProcessor { //自定义的符号 private char customToken = \\\'@\\\'; //Mybatis的配置变量 private Properties mybatisVariables; @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException

    2024年02月11日
    浏览(48)
  • 漏洞攻击中怎么去做最全面覆盖的sql注入漏洞攻击?表信息是如何泄露的?预编译就一定安全?最受欢迎的十款SQL注入工具配置及使用

    漏洞攻击中怎么去做最全面覆盖的sql注入漏洞攻击?表信息是如何泄露的?预编译就一定安全?最受欢迎的十款SQL注入工具配置及使用。 SQL注入是因为后台SQL语句拼接了用户的输入,而且Web应用程序对用户输入数据的合法性没有判断和过滤,前端传入后端的参数是攻击者可控

    2024年01月24日
    浏览(43)
  • C语言笔记-1 编译过程&字节数

    概述 C语言编译过程包括了预处理、编译、汇编和链接四个主要阶段。下面是对每个阶段的简要介绍: 预处理(Preprocessing):在这个阶段,预处理器根据预处理指令(以 # 开头的指令)对源代码进行处理。预处理器执行宏展开、条件编译、头文件包含等操作,生成经过预处理

    2024年02月11日
    浏览(37)
  • 【项目源码】反编译Java字节码生成源码

    参考资料 反编译GUI工具:jadx 最好的java反编译工具是哪个? - JavaGuide的回答 - 知乎 jadx Github开源项目地址 IDEA的插件: Java Bytecode Decomplier IDEA反编译出整个jar包源码 IDEA 反编译出整个Jar包源码 IDEA—使用插件反编译jar包 IDEA上查看并下载源码 一、什么是反编译? 参考什么是反

    2024年02月05日
    浏览(36)
  • C/C++编译器的字节对齐方式

    C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。 在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插

    2024年01月19日
    浏览(29)
  • JVM——类加载与字节码技术—编译期处理+类加载阶段

    编译期优化称为语法糖 java基本类型和包装类型之间的自动转换。     在字节码中可以看见,泛型擦除就是字节码中的执行代码不区分是String还是Integer了,统一用Object.  对于取出的Object,这个checkcast用于转换Object为Integer类型。  可以看见 局部变量类型表 里面包含了方法参

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包