ATT&CK-CN V1.0 Last Update: 2019-03 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1034

术语表: /attack/glossary

路径劫持

路径劫持发生在可执行文件被放在特定路径中,文件由某一应用程序执行而不是预定目标执行时。其中一个例子是在一个有漏洞的应用程序的当前工作目录中使用 cmd 副本,该应用程序使用 CreateProcess 函数加载 CMD 或 BAT 文件。

在进行路径劫持时,攻击者可以利用多个明显的缺陷或错误配置:未加引号的路径,配置错误的 PATH 环境变量和搜索顺序劫持。第一个漏洞有关完整的程序路径,而未指定程序路径会导致第二个和第三个漏洞。如果可执行文件是定期被调用的,则可以使用路径劫持技术进行持久化,如果被拦截的可执行文件由更高权限的进程启动,则可以利用该技术进行权限提升。

未加引号的路径

如果服务路径(存储在 Windows 注册表项中) 和快捷路径具有一个或多个空格且未被引号括起(例如,C:\unsafe path with space\program.exe vs. "C:\safe path with space\program.exe"),那么它们容易受到路径劫持的攻击,。 攻击者可以将一个可执行文件放在比原路径的更高级别目录中,然后 Windows 将解析该可执行文件而不是预期的可执行文件。例如,如果快捷方式中的路径是 C:\program files\myapp.exe,攻击者可以在C:\program.exe目录下创建程序,那么将被运行的是该程序而不是预期的程序。

PATH 环境变量配置错误

PATH 环境变量包含一个目录列表。如果没有给出程序路径,某些执行程序的方法(比如使用 cmd.exe 还是命令行)仅依赖于 PATH 环境变量来确定在哪些位置搜索程序。如果有目录在 PATH 环境变量中位于 Windows 目录之前,%SystemRoot%\system32(例如C:\Windows\system32)。则可以将与 Windows 程序(例如 cmd,PowerShell 或 Python)名称相同的程序放在前面的目录中, 当对应命令在脚本或命令行中被调用时,该程序会被执行。 例如,如果 C:\example path 在 PATH 环境变量中在 C:\Windows\system32 前面,那么当命令行执行“net”时, 位于 C:\example path 的 net.exe 将会被调用,而不是 Windows 系统的 “net”。

搜索顺序劫持

搜索顺序劫持发生在攻击者滥用 Windows 对于未给出路径的程序的搜索顺序时。执行程序的方法不同,搜索顺序也会不同。 但是,Windows 通常在搜索 Windows 系统目录之前搜索启动程序目录。攻击者如果发现易受搜索顺序劫持攻击的程序(即未指定可执行文件路径的程序),可以通过创建以 未正确指定的程序命名的程序并将其放在启动程序的目录中来利用此漏洞。

例如,“example.exe”使用命令行参数net user运行“cmd.exe” 。攻击者可以将名为“net.exe”的程序放在与 example.exe 相同的目录中,执行“example.exe”时将运行该“net.exe”而不是 Windows 系统实用程序 net。此外,如果攻击者将名为“net.com”的程序放在与“net.exe”相同的目录中,根据 PATHEXT 定义的可执行扩展的顺序。cmd.exe /C net user将执行“net.com”而不是“net.exe” , 搜索顺序劫持也是劫持 DLL 加载的常见做法,这在 DLL 搜索顺序劫持中有所涉及。

缓解

在函数允许的情况下,用引号将 PATH 变量括起来,以消除程序配置文件、脚本、PATH 环境变量、服务和快捷方式中的路径拦截缺陷 [ 6 ]。 请注意 Windows 用于执行或加载二进制文件的搜索顺序,并在适当的地方使用绝对路径 [ 12 ]。 卸载软件时清理旧的 Windows 注册表项,以避免与合法二进制文件无关的项。 定期搜索并更正或报告系统上的路径拦截漏洞,这些漏洞可能是使用不安全的路径配置报告软件的自定义工具或可用工具引入的。[ 13 ]。 要求将所有可执行文件放在写保护目录中。 确保设置了适当的权限和目录访问控制,拒绝用户将文件写入顶级目录 C : 和系统目录,如 C:\Windows\,以减少恶意文件可以放置以获得执行的位置。 使用能够审核和/或拦截未知可执行文件的白名单 工具(如 AppLocker 或软件限制策略,)识别并拦截可能通过路径拦截执行的潜在恶意软件。

检测

监视以部分目录命名的文件的文件创建,以及在可能通过环境变量搜索公共进程的位置下的文件创建,或不允许用户写入。 监视以部分目录命名的进程可执行路径的执行进程。 监视以 Windows 系统程序命名的程序或通常无需路径就可以执行的程序(如“findstr”、“net”和“python”) 的文件创建。 如果此活动发生在已知的管理活动、升级、安装或打补丁之外,则可能是可疑的。 不应孤立地看待数据和事件,而应将其视为可能导致其他活动的行为链的一部分,例如用于命令与控制的网络连接、通过披露了解环境细节以及横向移动。