本系列文章基于美创科技入侵生命周期1.0架构,细分各阶段攻击者的常用攻击手段,并对相关攻击手段的具体实施方式进行逐一剖析,为安全防御建设提供有力知识补充和反制准备。
路径劫持(path interception)实际上可以算是一种漏洞,恶意软件以及渗透测试人员都可以利用这项技术来对目标设备进行渗透和入侵。
这一漏洞的最常见形式如下:在Windows操作系统平台中,系统会等待例如“c:program.exe”形式的路径地址,并根据这一地址来提供服务,否则其他的应用程序将会使用没有加引号的路径地址来启动和运行。如果没有使用引号来将路径地址括起来,那么系统会对给定的路径地址进行遍历,当给定的地址中存在空字符或者空格符的话,操作系统将会执行遍历路径下任何一个子字符串与给定路径匹配的应用程序。攻击者可以根据这一特点来执行自己的恶意负载。
根据攻击者的入侵流程和操作手段,路径劫持在入侵过程的多个生命周期流程有发挥举足轻重的作用,可以帮助攻击者完成各类操作。从入侵生命周期角度分析,路径劫持可作用于攻击者传播、攻击和利用以及持久化三个阶段。攻击者在传播阶段,可以利用路径劫持执行恶意软件,以尽可能多地获得其他计算机的控制权,为之后的扩散攻击以及构建持久化后门提供便利。
从攻击行为链条的上下文来看,针对数据外传的行为链条输入输出如下。
-
输入:以部分目录名命名的恶意可执行文件;以windows系统程序或无路径执行的程序命名的文件;
-
输出:恶意程序的执行结果
针对路径劫持,目前主要有以下几种常用手段:
1. 通过未加引号的路径进行路径劫持
如果服务路径(存储在Windows注册表项中)和快捷方式路径具有一个或多个空格,并且没有用引号引起来(例如,C:unsafe path with spaceprogram.exe VS "C:safe path with spaceprogram.exe"),则很容易受到路径拦截。攻击者可以将可执行文件放置在路径的更高级别的目录中,Windows会解析该可执行文件而不是预期的可执行文件。
例如,如果快捷方式中的路径为C:program filesmyapp.exe,则对手可能会在此处创建一个程序,C:program.exe而不是预期的程序。
下面看一个实例:
(1) 在C:下放一个计算机执行文件(可以是可执行的恶意文件),重命名为Program.exe
(2) cmd中运行C:Program Filestaskschd.exe
(3) 可以看到此时发生了路径劫持,运行的是Program.exe文件(若将Program.exe文件换为勒索病毒文件,则运行taskschd.exe受到路径劫持后,实际运行的为勒索病毒)
2. 按PATH环境变量进行路径劫持
某些执行程序的方法(即使用cmd.exe或命令行)仅依靠PATH环境变量来确定未给出程序路径时搜索程序的位置。
例如C:example net.exe(可以是可执行的恶意文件)位于Windows目录%SystemRoot%system32(例如C:Windowssystem32)之前的PATH环境变量中列出了任何目录中,则在C:example path下,从命令行执行“net”时,将调用名为net.exe的程序,而不是Windows系统“net”。
下面看一个实例:
(1) 正常执行net view时,结果如下图:
(2) 环境变量中,可以看到Windows目录%SystemRoot%system32(C:Windowssystem32)
(3) 因此,将计算机执行文件(可使用恶意可执行文件)放入C:Windows目录下,并重命名为net.exe。
(4) 进入C:Windows目录下,执行 net view,可发现该命令实际上执行的是net.exe,也就是计算器。
3. 通过搜索顺序进行路径劫持
当攻击者滥用Windows搜索未指定路径的程序的顺序时,就会发生搜索顺序劫持。搜索顺序因执行程序所使用的方法而异。但是,Windows通常在搜索Windows系统目录之前先搜索启动程序的目录。
下面看一个实例:
(1) 在桌面随意新建一个文件夹,并将计算机文件(可使用恶意可执行文件)重命名为net.exe放入文件夹中
(2) cmd中,进入该新建目录,并执行net user
(3) 此时,可以观察到该命令执行的是net.exe文件,并非windows系统的net。
原文始发于微信公众号(第59号):《入侵生命周期细分实践指南系列》:路径劫持攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论