1.windows环境变量滥用是什么?
Windows环境变量滥用是一种攻击方式,攻击者利用系统的路径搜索机制来欺骗高权限用户执行看似合法的系统二进制文件,实际上是恶意的代码或程序,从而导致权限提升并执行恶意操作。
这种攻击的关键前提是攻击者需要控制或能够修改低权限用户的环境变量设置,尤其是$PATH变量。当存在于环境变量的路径在c:Windowssystem32之前,并且可由低权限用户修改的时候,就会造成环境变量的滥用。
Windows环境变量滥用的危害可能包括:
1.权限提升:攻击者可以通过修改环境变量,使得低权限用户可以执行高权限用户的命令或程序,从而获得更高的权限。
2.恶意代码执行:攻击者可以在低权限用户的计算机上执行恶意代码,从而进行恶意活动,如窃取信息、破坏系统等。
3.绕过安全措施:攻击者可以通过修改环境变量,绕过某些安全措施,使得安全措施失效。
因此,Windows环境变量滥用是一种严重的安全漏洞,需要引起足够的重视。
1.路径搜索顺序: 当用户在命令行或程序中执行一个命令时,系统会在环境变量$PATH定义的路径列表中搜索要执行的程序。它将从列表中的第一个路径开始搜索,然后按顺序继续搜索,直到找到匹配的程序。
2.权限限制: 用户权限的差异是这种攻击的基础。攻击者通常需要两类用户:
2.1低权限用户(M): 拥有较低权限,只能访问和写入特定文件夹,例如c:temp。
2.2高权限用户: 拥有系统管理员或其他高权限角色,能够执行敏感的系统命令和操作。
3.环境变量设置: 攻击者需要控制或能够修改低权限用户(M)的环境变量设置,尤其是$PATH变量。
2.windows环境变量滥用原理分析
Windows环境变量滥用的原理主要是利用操作系统在处理环境变量时的机制,通过修改环境变量中的路径,使得系统在搜索可执行文件时跳转到攻击者指定的恶意文件,从而执行恶意代码或程序。
具体来说,当系统需要执行一个可执行文件时,它会首先在环境变量中查找该文件的路径。Windows系统的环境变量包括
PATH变量,它包含了多个目录路径,系统会按照这些路径的顺序依次搜索可执行文件。如果攻击者能够将一个恶意文件的路径添加到
PATH变量,它包含了多个目录路径,系统会按照这些路径的顺序依次搜索可执行文件。如果攻击者能够将一个恶意文件的路径添加到PATH变量中,那么系统在执行可执行文件时就会先找到这个恶意文件,从而执行恶意代码或程序。
攻击者可以通过以下步骤实现环境变量的滥用:
找到可以修改的环境变量路径:攻击者需要找到一个低权限用户可以修改的环境变量路径,一般是$PATH变量。
创建恶意文件:攻击者需要创建一个恶意文件,可以是二进制文件或脚本文件,并将其放置在可修改的环境变量路径中。
修改环境变量路径:攻击者将恶意文件的路径添加到$PATH变量中,使得系统在搜索可执行文件时会先找到这个恶意文件。
等待用户执行可执行文件:攻击者等待低权限用户执行可执行文件,系统会先找到恶意文件并执行其中的恶意代码或程序。
需要注意的是,这种攻击方式需要攻击者具有一定的技术水平,并且需要控制或能够修改低权限用户的环境变量设置。因此,在实际的攻击中,攻击者可能会利用社交工程或其他攻击手段来获取用户的登录信息或权限提升等敏感信息,从而进行环境变量的滥用。
从系统环境变量开始
c:Windowssystem32
但是,存在环境变量的路径在c:Windowssystem32之前,可由低权限用户 (M) 修改的时候,
就会造成Windows环境变量的滥用,例如(c:Windowstemp变量路径滥用):
这个时候可以查看文件夹访问权限:
BUILTINUsers:内置的用户组 “Users” 有以下权限:(CI):容器内项目,(S):同步访问,(WD):写入数据,(AD):添加数据,(X):执行文件。这意味着”Users”组可以读取、写入、添加、执行该文件夹内的项目。
BUILTINAdministrators:内置的管理员组 “Administrators” 有:(F):完全控制权限。这意味着管理员可以完全控制该文件夹,包括修改权限。
NT AUTHORITYSYSTEM:系统账户有:(F):完全控制权限。这允许系统账户对文件夹拥有完全控制。
CREATOR OWNER:文件或文件夹的创建者有:(OI)(CI)(IO)(F):对象的所有权,容器和继承的所有权,对象的访问权限,完全控制权限。这使得文件或文件夹的创建者拥有完全控制权限。
SAEDYQJKFJNNOFScamer:用户”camer”有:(OI)(CI)(F):对象的所有权,容器和继承的所有权,完全控制权限。
将恶意程序放在:c:Windowstemp在一切执行命令前恶意程序永远优先,恶意程序优先于其它位。
3.windows环境变量滥用利用思路
Windows环境变量滥用的利用思路主要包括以下几个方面:
1.修改环境变量:首先,攻击者需要找到一个可以修改的环境变量,如PATH变量。然后,他们可以将恶意程序的路径添加到这个环境变量中,使得当用户执行任何可执行文件时,系统都会优先查找并执行这个恶意程序。
2.利用系统机制:Windows系统在处理环境变量时有一定的机制,攻击者需要了解并利用这些机制,以确保他们的恶意程序能够被正确地执行。
3.隐藏恶意行为:为了不被用户发现,攻击者需要确保他们的恶意程序在执行时不会产生明显的异常行为。他们可能会使用一些技巧来隐藏或混淆恶意行为,以避免被用户或安全软件检测到。
4.利用权限提升:如果攻击者能够获取到高权限,他们可以利用环境变量滥用来执行更高权限的操作。例如,他们可以将恶意程序的路径添加到管理员的PATH变量中,使得管理员在执行任何可执行文件时都会执行这个恶意程序。
总的来说,Windows环境变量滥用是一种复杂的攻击方式,需要攻击者具备一定的技术知识和耐心。为了防止这种攻击,用户和安全软件需要密切关注环境变量的变化,并及时进行安全检查和更新。
int
main
(
int
argc,
char
*argv[])
{
// 恶意程序
wchar_t
* Shell =
L"C:\Windows\Temp\shell.exe"
;
HINSTANCE hInstance1 = ShellExecuteW(
NULL
,
L"open"
, Shell,
NULL
,
NULL
, SW_HIDE);
// 保证python程序能够正常执行
if
(argc >=
2
) {
const
char
* pythonPath =
"C:\Users\camer\AppData\Local\Programs\Python\Python39\python.exe"
;
// 构建调用Python脚本的命令
char
pythonCommand[
4096
];
// Increased buffer size to accommodate more arguments
snprintf
(pythonCommand,
sizeof
(pythonCommand),
"%s %s"
, pythonPath, argv[
1
]);
// 将额外的参数添加到 Python 命令中
for
(
int
i =
2
; i < argc; ++i) {
strcat
(pythonCommand,
" "
);
strcat
(pythonCommand, argv[i]);
}
// 调用Python脚本
system(pythonCommand);
}
return
0
;
}
1.定义Shell路径:它定义了一个宽字符字符串Shell,该字符串指向Windows临时文件夹中的一个文件shell.exe。
2.执行Shell命令:使用ShellExecuteW函数,它执行一个Shell命令来打开刚才定义的shell.exe文件。该函数通常用于执行文件、打印文件、打开URL等操作。
3.检查命令行参数:如果程序接收到了至少两个命令行参数(argc >= 2),则执行以下操作:
3.1定义Python路径:定义了Python的安装路径。
3.2构建Python命令:使用snprintf函数构建一个Python命令,该命令调用Python解释器并执行一个脚本。脚本的名称是第二个命令行参数(argv[1])。
3.3添加额外参数:从第三个参数开始(argv[2]),将每个额外的参数添加到Python命令中。
3.4调用Python脚本:使用system函数执行构建的Python命令。
4.返回:程序返回0,表示成功执行。
这个程序的主要目的是启动一个Shell程序(可能是一个恶意程序)和调用一个Python脚本,该脚本的名称和参数由命令行提供。
代码中没有对argv[1]进行任何验证或检查,这意味着它可以接受任何文件路径和名称。如果攻击者提供了一个恶意脚本的路径,那么该脚本将被执行。
使用system函数来执行外部命令可能存在安全风险,因为它允许执行任何命令行指令。
代码中没有错误处理或异常处理,这可能导致程序在某些情况下崩溃或无法正确执行。
总之,这是一个简单的C语言程序,它能够启动一个Shell程序并调用一个Python脚本。在某些情况下,它可能被用于恶意目的。
执行成功会发现正常运行输出,但是实际后台执行恶意程序并上线成功,并且具有SYSTEM权限的,如下所示:
4.思路总结
Windows环境变量滥用是一种攻击方式,攻击者通过滥用系统的路径搜索机制来欺骗高权限用户执行看似合法的系统二进制文件,实际上是恶意的代码或程序,从而导致升权限并执行恶意操作。
这种攻击的关键前提是:
路径搜索顺序:当用户在命令行或程序中执行一个命令时,系统会在环境变量$PATH定义的路径列表中搜索要执行的程序。它将从列表中的第一个路径开始搜索,然后按顺序继续搜索,直到找到匹配的程序。
权限限制:用户权限的差异是这种攻击的基础。攻击者通常需要两类用户:
低权限用户(M):拥有较低权限,只能访问和写入特定文件夹,例如c:temp。
高权限用户:拥有系统管理员或其他高权限角色,能够执行敏感的系统命令和操作。
环境变量设置:攻击者需要控制或能够修改低权限用户(M)的环境变量设置,尤其是$PATH变量。
正常情况系统的环境变量是从c:Windowssystem32开始遍历,如下所示:
但是,当存在于环境变量的路径在c:Windowssystem32之前,并且可由低权限用户 (M) 修改的时候,就会造成环境变量的滥用,例如(c:Windowstemp变量路径滥用):
并且查看文件夹访问权限,是可以用户修改的,查询如下:
BUILTINUsers:内置的用户组 “Users” 有以下权限:(CI):容器内项目,(S):同步访问,(WD):写入数据,(AD):添加数据,(X):执行文件。这意味着”Users”组可以读取、写入、添加、执行该文件夹内的项目。
BUILTINAdministrators:内置的管理员组 “Administrators” 有:(F):完全控制权限。这意味着管理员可以完全控制该文件夹,包括修改权限。
NT AUTHORITYSYSTEM:系统账户有:(F):完全控制权限。这允许系统账户对文件夹拥有完全控制。
CREATOR OWNER:文件或文件夹的创建者有:(OI)(CI)(IO)(F):对象的所有权,容器和继承的所有权,对象的访问权限,完全控制权限。这使得文件或文件夹的创建者拥有完全控制权限。
SAEDYQJKFJNNOFScamer:用户”camer”有:(OI)(CI)(F):对象的所有权,容器和继承的所有权,完全控制权限。
当用户将恶意程序放在c:Windowstemp目录下的时候,正常用户无论是Administrator还是SYSTEM调用,都会优先执行恶意程序,例如劫持的是cmd.exe,如下会被劫持执行计算器,如下所示:
总的来说,通过利用环境变量的特性以及操作系统和权限的限制,攻击者能够实施这种滥用行为。因此,保护系统免受此类攻击的关键是确保环境变量的正确配置、限制用户权限以及及时更新和修补操作系统以防止潜在的安全漏洞。
原文始发于微信公众号(天盾信安):windows环境变量滥用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论