STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
前言
在windows中运行文件会有相对应的exe程序打开它。例如打开txt时,系统会使用notepad.exe执行,Windows 知道它需要使用 notepad.exe 来打开 txt 文件,因为 .txt扩展名(以及许多其他扩展名)映射到可以在位于 Windows 注册表中打开这些文件的应用程序,运行->regedit,计算机\HKEY_CLASSES_ROOT。
通过查看执行过程发现,可劫持文件扩展名并使其在实际文件打开之前执行恶意程序,达到权限维持的效果。
在这里我们需要实现劫持.txt 扩展名的同时使受害用户仍然能够打开原始 .txt 文件而不受影响。
探寻
首先我们需要知道windows所储存的.txt的运行方式
.txt 扩展处理程序在以下注册表项中定义:
计算机\HKEY_CLASSES_ROOT\txtfile\shell\open\command
从注册的定义来看 .txt 文件的命令是 notepad.exe %1,其中 %1是 notepad.exe 的参数,它指定了记事本应该打开的文件名及路径
劫持利用
创建一个恶意文件(这里用calc.exe代替),当用户尝试打开良性文件 test.txt 时,我们希望执行该恶意文件。
劫持方法我们使用简单的 Windows 批处理文件,将它放置于 C:\Users\Public\shell.cmd
calc.exe存在于系统变量中,恶意程序需绝对路径。
start calc.exe
start notepad.exe %1
双击执行txt后, c:\tools\shell.cmd将启动calc以及一个带有 test.txt文件作为参数。
通过修改 .txt 注册表中数值数据来劫持 .txt 文件扩展名
计算机\HKEY_CLASSES_ROOT\txtfile\shell\open\command 至 c:\tools\shell.cmd %1
实验测试
双击运行后,成功执行了恶意程序,并正常打开了.txt文件
从红队权限维持的角度看,当我们使用此种方式维权时,需要找到管理员常打开的文件,劫持相应的拓展名
C:\Users[User]\AppData\Roaming\Microsoft\Windows\Recent 目录下为最近打开文件
相对于定时任务,劫持维权可控性较差,不能自动触发返回,需要管理员触发。
防御
防御者可监控注册表文件扩展名命令的更改,尤其是当数据字段包含位于不寻常位置的二进制文件。
安恒信息
✦
杭州亚运会网络安全服务官方合作伙伴
成都大运会网络信息安全类官方赞助商
武汉军运会、北京一带一路峰会
青岛上合峰会、上海进博会
厦门金砖峰会、G20杭州峰会
支撑单位北京奥运会等近百场国家级
重大活动网络安保支撑单位
END
长按识别二维码关注我们