一、技术描述
在Mitre Att&ck框架中,T1036.006(文件名后面的空格)技术位于“防御规避(Defense Evasion)”战术中,是T1036(伪装)的子技术。官方对该技术的描述如下:
https://attack.mitre.org/techniques/T1036/006/
对手可以通过更改文件扩展名来隐藏程序的真实文件类型。对于某些文件类型(特别注意,这种方法对.app扩展名无效),在文件名末尾添加一个空格会改变操作系统处理该文件的方式。
例如,如果有名为evil.bin的Mach-O可执行文件,当用户双击它时,它将启动Terminal.app并执行。如果此文件被重命名为evil.txt,那么当用户双击它时,它将使用默认的文本编辑应用程序打开(不会执行二进制文件)。然而,如果文件被重命名为“evil.txt ”(请注意末尾的空格),那么当用户双击它时,操作系统会根据真实文件类型来确定如何处理,并且二进制文件将被执行。
对手可以利用这一特性诱骗用户双击看似无害的各种格式文件,最终执行恶意内容。
二、技术实现
以下操作在Linux系统中完成。
(一)文件名最后一位是空格
攻击者可以通过修改文件的扩展名来隐藏程序的真实文件类型。对于特定的文件类型,在文件名末尾加一个空格,会改变操作系统处理该文件的方式。
例如,如果一个可执行文件名为xfce4-dict.bin,当用户双击该程序图标时,该程序会被启动并打开图形界面。
如果该文件被重命名为“xfce4-dict.txt”,则双击时,系统会启动默认的文本编辑软件来打开这个文件。但是,如果该文件被重命名为“xfce4-dict.txt ”(注意文件末尾的空格),双击后,操作系统将判断该文件的真实类型,于是会将该程序作为可执行程序运行起来。
将xfce4-dict.bin复制为“xfce4-dict_无空格.txt”和“xfce4-dict_有空格.txt ”之后,从文件图标中也能看出系统将不同的文件视作哪种类型:
这样,如果一个恶意程序的扩展名为“.txt ”,则双击该程序即可运行它。
(二)目录名最后一位是空格
//查看进程列表,观察哪个进程比较容易冒充
ps aux | less
确定这个进程:python3 /usr/bin/libinput-gestures
//在用户的家目录中创建测试用的子目录
mkdir ~/test && cd ~/test
//创建名称末尾为空格的目录
mkdir "python3 " && cd "python3 "
//创建子目录
mkdir -p usr/bin && cd usr/bin
//将sh外壳程序复制到当前目录并改名
cp `which sh` . && mv sh libinput-gestures
//重新回到家目录下的test目录
cd ~/test
//执行下面的命令
python3 /usr/bin/libinput-gestures
这里看似是使用python3运行一个脚本,实际是路径+文件名。
//查看进程列表
sudo ps aux | grep libinput-gestures
第一个进程是正常运行的进程,第二个是前面创建的假冒进程,在ps命令的输出中差异不大。这样,在不修改系统程序的情况下,以较隐蔽的方式运行指定程序,如后门。
这里只是举个例子,服务器一般不会运行libinput程序,可根据实际情况选择让后门程序冒充的进程,后门启动后可将被冒充的进程终止掉。
原文始发于微信公众号(新蜂网络安全实验室):Mitre Att&ck框架T1036.006(文件名后面的空格)技术的简单实现
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论