使用Syscall()实现混淆/无文件活动
本周末我发现了一个恶意软件样本。这个样本看起来更像是一个概念验证,因为第二阶段的载荷非常简单,但它吸引我注意的是其使用了巧妙的代码混淆技术。
该投放器是一个简单的Python脚本(SHA256:e6f7afb92153561ff6c584fee1b04fb132ba984e8a28ca63708a88ebad15b939),在VirusTotal上的检测分数较低,仅为4/62[1]。该脚本包含一个嵌入的Base64载荷,解码后将被执行。这个第二阶段是一个ELF文件,表明该脚本针对Linux系统。
吸引我注意的是它直接使用syscall()[2]而非传统函数:
|
|
许多网站都记录了完整的系统调用列表[3]。系统调用319是"memfd_create",顾名思义,它允许在内存中创建文件描述符(即无需接触文件系统)。
Base64载荷并不十分有趣,它是一个ELF文件(SHA256:52fc723f7e0c4202c97ac5bc2add2d1d3daa5c3f84f3d459a6a005a3ae380119),仅使用单字节XOR密钥加密文件:
[1] https://www.virustotal.com/gui/file/e6f7afb92153561ff6c584fee1b04fb132ba984e8a28ca63708a88ebad15b939/detection [2] https://man7.org/linux/man-pages/man2/syscalls.2.html [3] https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/syscalls/
Xavier Mertens (@xme)
Xameco
高级ISC处理员 - 自由职业网络安全顾问
PGP密钥
关键词: 恶意软件 Python 系统调用 混淆 无文件攻击