导语:恶意软件作者发现一个新的Bypass UAC技术,可用于在运行Windows 10的设备上安装恶意应用程序。

恶意软件作者拥有一个新的Bypass UAC技术,可用于在运行Windows 10的设备上安装恶意应用程序。发现这种新的Bypass UAC方法是德国学生,以Christian B.的名义发布。他提出的Bypass UAC技术类似安全研究员Matt Nelson于2016年8月发现的方法。

当Nelson的方法使用内置的事件查看器实用程序(eventvwr.exe)时,Christian的UAC旁路使用fodhelper.exe文件,位于:C:\\Windows\System32\fodhelper.exe

Fodhelper.exe在Windows 10中引入,它位于“C:\\Windows\System32\fodhelper.exe”,如果这个文件名不熟悉,这是在“应用程序和功能”Windows设置屏幕中按“管理可选功能”选项时出现的窗口。

ventvwr.exe和fodhelper.exe都是一个值得信赖的二进制文件,(使用Microsoft证书签名的文件)并位于受信任的位置(如“ C:\\ Windows \ System32 “)。您可以使用名为“sigcheck”的工具检查文件的签名,该工具是Sysinternal套件的一部分。

如上图所示,该程序允许自动升级,不需要任何用户交互来允许进程升级。这意味着如果我们能够篡改二进制文件的行为来加载我们选择的文件,那么该文件也可能在高权限下启动。

如何调查文件的行为来找到具体的攻击矢量?=>进程监视器!

过程监视器是Mark Russinovich编写的另一个工具,它也是Sysinternals套件的一部分。或者,您可以在此处下载进程监视器。

当启动fodhelper.exe的启动时,进程监视器开始捕获进程,并显示注册表和文件系统读写操作。其中一个有趣的操作是对注册表的读取访问,尽管没有找到某些特定的键或值。特别是HKEY_CURRENT_USER中的注册表项很好,可以测试在创建尚未存在的注册表项后程序的行为可能如何更改,因为我们不需要特殊的权限来修改条目。

例如,fodhelper.exe正在寻找“HKCU:\Software\Classes\ms-settings\shell\open\command”。默认情况下,此密钥在Windows 10中不存在。

UAC_bypass_first

过程监视器输出:HKCU:\Software\Classes\ms-settings\shell\opencommand – NAME NOT FOUND

在创建密钥后:“HKCU:\Software\Classes\ms-settings\shell\opencommand”,fodhelper.exe会找到它,并将开始查找值:“HKCU:\Software\Classes\ms-settings\shell\open\command\DelegateExecute”,它不会寻找,如果提到的键不存在。一旦值“DelegateExecute”存在,它也将被发现,即使它是空的。

UAC_bypass_second

创建值“DelegateExecute”后,fodhelper.exe将在“HKCU:\ Software \ Classes  \ms-settings  shell \ open  \command ”中查找默认值。

UAC_bypass_third

UAC_bypass_third

过程监视器的输出:HKCU:\Software\Classes\ms-settings\shell\open\command(默认)- NAME NOT FOUND

这个值是关键点。注册表值“shell\open\command(默认)”使我们能够向程序提供程序打开时该怎么做的其他说明。

在这种情况下,我将“shell\open\command\(默认)”的值设置为:“C:\\Windows\System32\cmd.exe / c powershell.exe”。在此修改后,fodhelper.exe将查找(默认)值,并按照说明如何在进程开始之后执行操作。=>启动cmd.exe启动powershell.exe(只是检查是否可以将参数传递给cmd.exe)

UAC_bypass_fourth

如您所见,fodhelper.exe读取(默认)-value并使用提供的参数启动cmd.exe。

UAC_bypass_fifth

进程监视器的输出:进程启动 – cmd.exe

结果是在高权限中启动cmd.exe,并启动powershell.exe。在下面的图片中,您可以看到这个概念证明所需的确切的注册表结构以及作为管理员启动的cmd.exe。

UAC_bypass_result

为了演示此漏洞,我在Github上创建并发布了一个脚本,它将创建注册表项,打开"C:\\Windows\System32\cmd.exe/c powershell.exe",并删除注册表项。

该技术基于Matt Nelson(https://enigma0x3.net/)发现的类似缺陷,具有以下优点:

1.没有必要在磁盘上放置一个文件。

2.没有必要劫持任何.dll文件

3.不需要对可能会提示防病毒软件的操作系统发生任何可疑的操作。

缓解方式:

1.如果不需要,请不要使用本地管理员帐户。受限用户无法执行并提升此类程序。

2.将UAC级别设置为“始终通知”,这将导致需要用户接受的提示。

源链接

Hacking more

...