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

admin 2023年3月24日09:22:33评论56 views字数 1320阅读4分24秒阅读模式

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

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

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

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

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

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

Python 滥用 Unicode

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

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

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

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

混合使用 Unicode 字符 

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

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

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

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

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

使用的标识符的变体计数

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

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

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

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

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

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

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

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

原文始发于微信公众号(网络研究院):恶意软件使用Unicode来逃避检测

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月24日09:22:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   恶意软件使用Unicode来逃避检测https://cn-sec.com/archives/1624847.html

发表评论

匿名网友 填写信息