恶意软件使用Unicode来逃避检测

研究人员发现了一个名为onyxproxy的恶意Python包,它使用Unicode混淆技术在PyPI上逃避检测,从而盗取开发者凭证和敏感数据。此包已被删除,但在3月15日发布后被下载了183次。Unicode混淆使得恶意代码在视觉上看似正常,但Python解释器会解析出不同字符,使得基于字符串匹配的防御失效。这种技术可能预示着更广泛的滥用趋势,提醒防御者需要加强检测机制。
摘要由CSDN通过智能技术生成

PyPI 上的恶意 Python 包使用 Unicode 作为混淆技术来逃避检测,同时窃取和泄露开发人员的帐户凭据以及来自受感染设备的其他敏感数据。

这个名为“onyxproxy”的恶意包在源代码中使用了不同 Unicode 字体的组合,以帮助它绕过基于字符串匹配识别潜在恶意功能的自动扫描和防御。

Onyxproxy 的发现来自 Phylum的网络安全专家,他们发表了一份解释该技术的报告。

该软件包在 PyPI 上不再可用,已于昨天从平台上删除。

然而,自 3 月 15 日在平台上发布以来,该恶意包已累计 下载 183 次。

Python 滥用 Unicode

Unicode 是一个全面的字符编码标准,涵盖范围广泛的脚本和语言,将各种集合方案统一在一个涵盖超过 10万个字符的通用标准下。

它的创建是为了帮助维护跨不同语言和平台的互操作性和一致的文本表示,并消除编码冲突和数据损坏问题。

“onyxproxy”包包含一个“setup.py”包,其中包含数千个混合使用 Unicode 字符的可疑代码字符串。

混合使用 Unicode 字符 

虽然这些字符串中的文本,除了不同的字体,在视觉检查中看起来几乎是正常的,但对于 Python 解释器来说却有很大的不同,因为它们将解析这些字符并将其识别为根本不同的字符。

例如,Phylum 解释说,Unicode 对于字母“n”有 5 种变体,对于字母“s”有 19 种变体,用于不同的语言、数学等。“self”标识符有 122740 (19x19x20x17) 种方式以 Unicode 表示。

Python 支持使用 Unicode 字符作为标识符,即代码变量、函数、类、模块和其他对象,允许编码人员创建看似相同但指向不同函数的标识符。

在 onyxproxy 的案例中,作者使用了标识符“__import__”、“subprocess”和“CryptUnprotectData”,这些标识符更大并且具有大量变体,可以轻松击败基于字符串匹配的防御。

使用的标识符的变体计数

Python 的 Unicode 支持很容易被滥用来隐藏恶意字符串匹配,使代码看起来无害,同时仍然执行恶意行为。

在这种情况下,从开发人员那里窃取敏感数据和身份验证令牌。

虽然这种混淆方法不是特别复杂,但看到它在野外使用令人担忧,并且可能是更广泛滥用 Unicode 进行 Python 混淆的迹象。

但是,无论这位作者从谁那里复制了这段混淆代码,都足够聪明,知道如何使用 Python 解释器的内部机制来生成一种新颖的混淆代码,这种代码在某种程度上具有可读性,而且不会泄露太多代码的确切内容试图偷窃。

过去,Python 开发社区广泛讨论了Python 中 Unicode 的风险 。

其他研究人员和开发人员 此前也警告说 ,Python 中的 Unicode 支持将使编程语言容易受到新型安全漏洞的攻击,从而使提交的补丁和代码更难检查。

2021 年 11 月,学术研究人员提出了一种名为“ Trojan Source ”的理论攻击,它使用 Unicode 控制字符将漏洞注入源代码,同时让人类审查人员更难检测到这些恶意注入。

总之,这些攻击现已得到确认,防御者必须针对这些新出现的威胁实施更强大的检测机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络研究观

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值