在Linux扩展文件属性中隐藏负载
技术背景
在Linux生态系统中,大多数文件系统(ext3/ext4/xfs等)都支持"扩展文件属性"(xattr)。这是一种允许用户为文件添加元数据的文件系统特性,类似于Windows NTFS文件系统中的备用数据流(ADS)功能。
技术实现
属性操作基础
在Ubuntu系统中,可以通过attr
软件包提供的工具进行操作:
|
|
恶意负载隐藏方案
作者开发了一个PoC,通过以下步骤在xattr中隐藏Python反向Shell代码:
- 将负载分割为32字节的块
- 使用0xFB作为密钥进行XOR加密
- Base64编码后存入多个图片文件的xattr
编码脚本关键部分:
|
|
负载提取与执行
作者用C语言编写了提取程序,可以:
- 从多个文件中提取xattr
- Base64解码
- XOR解密
- 拼接还原原始Python代码
执行效果:
|
|
防御检测
使用getfattr
命令递归扫描系统:
|
|
技术要点总结
- xattr支持四种命名空间:security、system、trusted和user
- 系统本身大量使用xattr存储POSIX ACL等信息
- 攻击者可利用此特性实现高度隐蔽的负载存储
- 防御者需要建立针对非常规属性存储的检测机制
参考资源: