使用者帳戶控制(user account control,簡寫作uac)是微軟公司從windows vista版本作業系統開始採用的一種控制機制。
介面操作是:通過詢問使用者是否授權給應用程式,使用硬碟驅動器和系統檔案的權力。以達到阻止惡意程式(「惡意軟體」)損壞系統的效果。
內部邏輯是:
在觸發 uac 時,作業系統會建立乙個consent.exe程序,用來確定是否建立具有管理員許可權的
程序(通過白名單和使用者選擇判斷),然後creat process
所以,病毒木馬想要實現高許可權操作,就不得不繞過uac彈窗,在沒有通知使用者情況下, 悄悄地將普通許可權,提公升為管理員許可權啟動程序,從而使程式得到高許可權的操作。
繞過 uac的方法:
白名單提權機制;
dll 劫持;
windows 自身漏洞提權;
遠端注入;
com 接**術。
計畫任務
路徑欺騙。
其餘的如通過計畫任務、路徑欺騙等方式不算入繞過,因為經過了使用者確認。
實現bypass uac的方法主要有兩種方法:一種是利用白名單提權機制,另一種是利用com元件接**術。
autoelevate(e
levate 提拔,晉公升,提公升),白名單提權機制。
使用者賬戶控制限制著程式使用高階許可權才能進行的操作,但是,uac同樣也會對系統本身的程式造成影響,微軟也不希望執行系統程式也需要詢問使用者,因為
系統程式
是安全的。因此,微軟則在 uac 中新增了白名單機制,即在系統中記錄有一張表單,表單中的系統程式,將不限制其直接提公升到管理員許可權。 系統中的白名單程式有多個,其中,msconfig、taskmgr、perfmon、cleanmgr 等平時常用的程式都在其中。
作業系統的uac白名單程式,預設以管理員許可權執行,而且不彈出uac視窗確認。這些白名單程式,都具有微軟的簽名是作業系統可信的。
一些系統的uac白名單程式:
在c:\windows\system32下
系統呼叫這些高許可權程式,會呼叫 hkcr( hkey_classes_root)下的鍵值。 所以,修改 hkcr( hkey_classes_root
)下的鍵值
,把原本的鍵值改為 cmd.exe 等 shell 程式。
如果高許可權的程式,在執行過程中呼叫此處被修改過的鍵值,就會以高許可權啟動我們設定的程式。
從而實現繞過 uac提權。難點在於找到登錄檔的關鍵位置。
登錄檔內:
hkcu = hkey_current_user
hklm = hkey_local_machine
hkcr = hkey_classes_root
我們在windows 7中利用
特權應用程式
eventvwr.exe繞過uac,此特權應用程式的作用類似於微軟管理控制台(microsoft management console,mmc)的快捷方式。
當eventvwr.exe啟動時,它將檢查是否使用特定的二進位制檔案,為事件檢視器提供mmc管理單元的功能。為此,它在登錄檔鍵值 」
hkcu
\software\classes\mscfile\shell\open\command」 中查詢特定的二進位制位置。如果它存在,它將在此路徑上執行二進位制檔案。否則,將載入windows事件檢視器的預設mmc管理單元,此登錄檔鍵值的內容是可繞過uac的可執行二進位制檔案。
eventvwr.exe 的許可權為 high;
啟動程式eventvwr.exe 首先查詢鍵值 hkcu\software\classes\mscfile\shell\open\command,查詢結果為 name not found;
eventvwr.exe 接著查詢鍵值 hkcr\mscfile\shell\open\command,結果為 success。
更改:
首先需要修改鍵值
hkey_current_user
\software\classes\mscfile\shell\open\command,為測試可以把值改為 calc.exe(我們需要繞過uac的程式)。
因為我這裡的 regedit 中的鍵值只到 hkcu\software\classes\ 這層目錄,所以我新增了後面的表項,並把值設為
c:\windows\system32\cmd.exe。
由於windows更新和安全修復程式的關係,對於不同的windows版本,特權應用程式和登錄檔鍵值可能會有所不同。
其實此方法 2016 年就提出來了, win10 系統已對該處做了修復。
由於這兩種技術都依賴於相同的原理,所以對它們的緩解措施也是一樣的。這與將uac級別設定為always notify屬性一樣簡單。
對於不希望將uac級別設定為always notify的系統環境,可以使用其他的保護方法,但是,從系統的安全角度來講不建議使用。這些方法包括監控並防止以下登錄檔鍵值的登錄檔更改:
1.hkey_current_user\software\classes\mscfile\shell\open\command;
除這些緩解措施外,還建議在可能的情況下使用非特權帳戶。
eventvwr.exe 接著查詢鍵值 hkcr\mscfile\shell\open\command,結果為 success,因為修改登錄檔hkcu\software\classes\mscfile\shell\open\command得值只需要普通使用者許可權,所以修改為calc.exe進行測試
但是,測試
發現win10沒有載入這個登錄檔路徑,win7存在,但是需要手動新增後面得選項\shell\open\command。
使用特權程式(白名單程式:computerdefaults),它具有微軟的簽名,使用者執行它時系統不會彈出uac視窗。
1. 建立登錄檔鍵 hkey_current_user\software\classes\ms-settings\shell\open\command;
2. 建立無資料的
hkey_current_user\software\classes\ms-settings\shell\open\command\delegateexecute的值;
3.把要提權啟動的程式絕對路徑寫入hkey_current_user\software\classes\ms-settings\shell\open\command\(default)的值裡;
4.執行特權程式白名單程式:computerdefaults,或者其他系統設定程式,就會委託呼叫程式了。由computerdefaults建立的**程序自動獲得管理員許可權。 但是由顯示設定程式。
如果裝有防毒軟體,在啟動程式時,會提示警示
也有很多技術人員在爭論這個安全問題,是否是嚴格意義上的許可權提公升漏洞。乙個主要原因是james forshaw在演示這個漏洞時,是通過此漏洞來劫持uac預設級別下自動提權的computerdefaults程式,從而實現在預設uac設定下靜默從中完整性級別啟動高完整性級別的程式。
執行信任程式時不再彈出使用者賬戶控制視窗 ,把程式加入白名單
解決:2、找到要修改為信任的程式,將值資料修改為「runasinvoker」;
3、如果沒有你要的程式,右鍵->新建->字串值,值的名字是程式的全路徑(如:d:\program\winrar\winrar.exe),數值資料為「runasinvoker」;
UAC 疑問,待研究
阿里旺旺 的使用者檔案放在c program files aliwangwang profiles,為什麼不觸發uac?有乙個奇怪的目錄c program files aliwangwang uac是幹什麼用的?apache的log放在c program files apache software ...
Qt使用UAC許可權
在做qt應用程式時,有時會需要程式以管理員身份執行,qt下的開發方法如下。一 mingw編譯器環境 1 新增uac.manifest檔案,檔案內容如下 2 新增 uac.rc檔案,檔案內容如下 1 24 uac.manifest 3.pro檔案中加入uac.rc檔案 rc file uac.rc 4...
如何利用sdclt磁碟備份工具繞過UAC
簡介 sdclt 是微軟提供的命令列磁碟備份工具,從 vista 時代引入 在 windows 10 開始,sdclt 加入了自動提公升許可權的能力,requestedexecutionlevel 由 asinvoker 變為 requireadministrator 命令 sigcheck m s...