Black Lotus安全研究人员近期发现多个Python语言编写的恶意文件,并编译为 Debian 操作系统的Linux二进制文件格式ELF。这些文件会以加载器运行payload,payload要么嵌入在样本中或从远程服务器中提取,然后使用Windows API调用注入到运行的进程中。
简介
2021年8月,Black Lotus研究人员发现了大量为Debian Linux编译的可疑ELF文件。文件是用Python 3编写的,然后用PyInstaller转变为ELF可执行文件。Python代码作为使用不同Windows API的加载器,Windows API可疑提取远程文件,然后注入运行的进程。从 VirusTotal 的检测率来看,大多数为Windows系统设计的终端代理无法有效分析ELF签名。在调查中,研究人员发现了2个ELF加载器方法的变种:第一个是用Python编写的,第二个表中使用ctype来调用不同的Windows API和调用powershell脚本。研究人员分析认为该PowerShell变种仍在开发中。
技术细节
从2021年5月到2021年8月这3个月内,研究人员发现样本的进化过程,从最初的Python 3编写的样本到使用ctype来调用Windows API,再到使用PowerShell来宿主机器上执行随后的动作。
Python变种
使用Python编写的变种并不使用任何Windows API。其中一个特征是加载器使用变种的Python库,使得其可以在Linux和Windows机器上运行。研究人员分析样本发现脚本会打印“Пивет Саня”,打印的内容是俄语文字翻译过来就是“Hello Sanya”。所有的相关的文件都含有隐私或者非路由的IP地址,除了一个样本。该样本中含有公共IP地址185.63.90[.]137和一个Python编写的加载器文件,这些文件随后会被转化为可执行文件。该文件首先尝试从机器分配内容,然后创建一个新的进程,并注入位于hxxp://185.63.90[.]137:1338/stagers/l5l.py的远程服务器的资源。目前,该服务器已经无法访问,表明该地址是用于测试或之前的攻击活动。
研究人员发现许多恶意活动都与同一IP地址185.63.90[.]137进行通信,样本中都含有Meterpreter payload,其中部分使用Shikata Ga Nai编码器混淆。
使用PowerShell和Ctype的WSL变种
不同文件的ELF到Windows二进制文件执行路径是不同的。在部分样本中,PowerShell 用于注入和执行shellcode,在其他样本中,Python ctype被用来解析Windows API。
在其中一个PowerShell样本中,编译的Python会调用3个函数: kill_av()、reverseshell() 和 windowspersistance()。
图1: 反编译的decompiled kill_av和windowspersistence函数
kill_av()函数会使用 os.popen()尝试kill调可疑的反病毒产品和分析攻击。 reverseshell() 函数使用子进程每20秒性一个base64编码的PowerShell 脚本,拦截其他函数的执行。windowspersistence() 函数会复制原始ELF文件到appdata 文件夹,命名为payload.exe并使用子进程来加入注册表以实现驻留。在上图中,windowspersistance()会用字符串“TIME TO Presist”被调用。
图2: reverseshell 和 kill_av函数
解码的PowerShell使用GetDelegateForFunctionPointer来调用VirtualAlloc,复制MSFVenom payload到分配的内存,并使用GetDelegateForFuctionPointer来在分配的含有payload的内存中调用CreateThread 。
图3:注入和调用MSFVenom payload的PowerShell脚本
另一个使用样本使用Python ctype来解析Windows API来注入和调用payload。在分析过程中,研究人员发现一些小的不连续,比如变量类型。研究人员猜测代码仍在开发中,但可能即将结束。
图4: 使用Python ctypes的分混淆的代码
本文翻译自:
https://blog.lumen.com/no-longer-just-theory-black-lotus-labs-uncovers-linux-executables-deployed-as-stealth-windows-loaders/