T1574.007: 通过 PATH 环境变量进行路径拦截
摘要
攻击者可能通过劫持用于加载库的环境变量来执行自己的恶意载荷。PATH 环境变量包含一个目录列表(用户和系统),操作系统在查找从脚本或命令行调用的二进制文件时会按顺序搜索这些目录。 攻击者可以将恶意程序放置在 PATH 环境变量所存储的目录列表中更靠前的条目中,导致操作系统在按顺序搜索该 PATH 列表时执行恶意二进制文件,而不是合法二进制文件。 例如,在 Windows 上,如果攻击者将名为 "net.exe" 的恶意程序放置在 `C:\example path` 中,而该路径在 PATH 环境变量中默认位于 `C:\Windows\system32\net.exe` 之前,那么当从命令行执行 "net" 时,将调用 `C:\example path` 中的程序,而不是 `C:\Windows\system32\net.exe` 处的系统合法可执行文件。某些执行程序的方法依赖 PATH 环境变量来确定在未给出程序路径时要搜索的位置,例如从[命令和脚本解释器](https://attack.mitre.org/techniques/T1059)执行程序。(Citation: ExpressVPN PATH env Windows 2021) 攻击者还可能直接修改指定要搜索目录的 $PATH 变量。攻击者可以修改 `$PATH` 变量,使其指向他们具有写访问权限的目录。当调用使用 $PATH 变量的程序时,操作系统会搜索指定的目录并执行恶意二进制文件。在 macOS 上,这也可以通过修改 $HOME 变量来实现。这些变量可以使用命令行、launchctl、[Unix Shell 配置修改](https://attack.mitre.org/techniques/T1546/004)或修改 `/etc/paths.d` 文件夹内容来进行修改。(Citation: uptycs Fake POC linux malware 2023)(Citation: nixCraft macOS PATH variables)(Citation: Elastic Rules macOS launchctl 2022)
来源归属
来源:MITRE ATT&CK · 置信度:high
平台
- Linux
- macOS
- Windows
战术
Stealth
参考来源
- https://attack.mitre.org/techniques/T1574/007
- https://www.elastic.co/guide/en/security/7.17/prebuilt-rule-7-16-4-modification-of-environment-variable-via-launchctl.html
- https://www.expressvpn.com/blog/cybersecurity-lessons-a-path-vulnerability-in-windows/
- https://www.uptycs.com/blog/new-poc-exploit-backdoor-malware
- https://www.cyberciti.biz/faq/appleosx-bash-unix-change-set-path-environment-variable/