社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

新型多态Python恶意软件:每次执行都会改变自身特征

FreeBuf • 9 月前 • 236 次点击  


网络安全研究人员近期发现一款基于Python的远程访问木马(RAT),该恶意软件展现出前所未有的多态行为——每次运行时都会改变其代码特征。


Part01

低检测率的完整功能木马


这款名为nirorat.py的样本最初在VirusTotal平台上被发现,尽管具备完整的RAT功能套件,但在检测引擎上仅获得26/100的低分。分析人员认为,该恶意软件利用Python的自省和代码修改功能,通过持续变换关键代码段来规避基于签名的检测。

互联网风暴中心(Internet Storm Center)的分析师通过关联样本源代码中的selfmodifyingwrapper、decryptandexecute和polymorphcode等函数名称确认了这一威胁。这些函数通过从内存中提取自身代码、应用随机化的XOR打包技术,并在执行前注入垃圾代码片段来实现规避检测。这种动态变异确保每次执行的指纹都不相同,给静态扫描器带来了巨大挑战。


Part02

传播与驻留机制


该RAT主要通过包含看似无害Python脚本的网络钓鱼邮件传播,也会通过受感染的网络共享扩散。执行时,它会完全在内存中解包,避免在磁盘上留下痕迹。为了实现持久化,它会将变异后的脚本副本以随机文件名附加到启动文件夹中。其在VirusTotal上的低检测分数表明,传统的文件哈希签名对这种威胁几乎无效。


    Part03

    核心规避检测技术


    该RAT的检测规避主要依赖两大核心机制:自我修改和垃圾代码插入。

    运行时自修改技术

    selfmodifyingwrapper函数会在运行时使用Python的inspect模块获取目标例程的源代码,通过用随机密钥对每个字节进行XOR编码,然后在执行前在内存中重建代码。这种技术高度模拟了打包器的行为,但不会在磁盘上留下打包文件痕迹。

    import inspect, random, marshal, zlibdef selfmodifyingwrapper(func):  code = inspect.getsource(func).encode()  key = random.randint(1,255)  packed = bytes(b ^ key for b in code)  unpacked = bytes(b ^ key for b in packed)  codeobj = marshal.loads(zlib.decompress(unpacked))  exec(codeobj)

    垃圾代码注入技术

    polymorphcode函数则会在核心例程中注入随机化的垃圾代码——包括未使用的函数、打乱的变量名和无操作循环。通过结合变量重命名和随机代码片段插入,该恶意软件每次运行都会生成几乎唯一的源代码,从而破坏静态签名和启发式方法的有效性。

    鉴于这些高级规避策略,防御者必须依赖行为分析和实时监控,而非传统的基于签名的工具。


    参考来源:

    New Polymorphic Python Malware Repeatedly Mutate its Appearance at Every Execution Time

    https://cybersecuritynews.com/new-polymorphic-python-malware-repeatedly-mutate/




    推荐阅读


    电台讨论


    图片

    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/187728