---恢復內容開始---
What is UAC?
程序啟動后,UAC的流程圖:
如果關閉UAC,則程序會提權運行。
Privilege Contents:
如果啟動了UAC,程序要求提權運行或者以管理員身份運行的時候,System會啟動Consent.exe進程。
在UAC開啟的情況下,即使用戶選擇否,也會開啟UAC虛擬化:
1.UAC虛擬化后,應用程序會重定向到其他位置,用戶依然可以正常使用程序,但應用程序寫入的數據不會在真實系統生效,以防止病毒操作造成系統核心文件被破壞、感染等后果。
2.虛擬化能夠改善程序兼容性,即上一點提到的,UAC會將文件和注冊表寫入操作放至特殊位置。
什么情況下會觸發UAC:
1、UAC只有在程序試圖影響系統操作的情況下會觸發
2、申請提權的操作大多是程序員自己觸發的提權的,提權的目的就在於Privilege Content提到的幾種操作。
3、只有少數情況系統本身會觸發UAC,例如安裝服務之類的。
繞過UAC方法小結:
1、利用計划任務繞過。
2、路徑欺騙。
3、白名單機制。
關鍵詞:
“用NetUserGetInfo這個接口從這兩個方面下手的:1)以高權限和其他用戶身份啟動進程2)獲取其他用戶的注冊表和用戶目錄 具體怎么搞就不知道啦,求大神來詳解”
注入explorer.exe, DLL啟動自己程序
“偽造token”
WUSA.exe
參考:http://net.zol.com.cn/402/4020871_all.html#p4021155
在9月24日亞洲知名安全技術峰會SyScan上,Instruder做了《深入思考UAC背后的安全問題》演講,據其提供的方法在當前用戶權限下,繞過 UAC提示直接運行程序,並可以實現修改啟動項,釋放文件到系統目錄等功能,而這一過程必須在用戶沒有任意察覺的情況下完成。作者使用的方法為利用操作系統自己的升級程序WUSA.EXE,讀取釋放文件,這個過程是不會觸發UAC的,利用這個機制可以輕松突破UAC限制。
參考:http://blog.sina.com.cn/s/blog_454378100100xu05.html
雙擊運行,會顯示它的使用方法:
使用WUSA.EXE把一個MSU文件釋放一下,看能否成功,實驗方法如下,復制一個MSU文件到D:\TEMP目錄,然后在CMD下切換目錄到c: \windows\syswow64,最后運行wusa.exe d:\temp\msu.msu /extract:d:\temp 這時看到一個很快 的進度一閃而過,去D:\TEMP目錄看一下是什么情況。
可以看出文件以成功釋放,這樣很好,下一步繼續實驗,把釋放目錄修改一下,直接釋放到系統目錄WINDOWS下,看會如何表現,執行wusa.exe d:\temp\msu.msu /extract:c:\windows
結果很理想,成功釋放而且沒有觸發UAC提示。
到目前為至我們可以考慮一些邪惡的事情了,比如釋放一些木馬病毒DLL劫持的文件到系統目錄這樣子,不會觸發UAC程序,同時木馬與病毒也會開機啟動了,再繼續向下實驗吧目前思路上是沒問題了,那么要考慮的是MSU文件了,這個文件看一下是有微軟數字簽名的。
這個我們可以通過破壞數字簽名來驗證一下,使用16進制編輯工具把MSU文件隨便添加幾個字節。清理之前釋放的文件后,再運行一下進行釋放檢測,看下結果,非常理想。
白名單機制:
從用戶賬戶控制對權限進行保護的基本過程可以看到,在用戶以管理員權限運行程序的 過程中,用戶賬戶控制在向用戶進行提權詢問前,將會先查詢本地系統中的白名單以決定是 否直接放行,因此,白名單機制是用戶賬戶控制中的一個重要部分。用戶賬戶控制限制着程 序使用高級權限才能進行的操作,但是,這樣的機制同樣也會對系統本身的程序造成影響,微軟也不希望系統程序的運行也詢問用戶,因為 他們本身是安全的。因此,微軟則在 UAC 中添加了白名單機制,即在系統中記錄有一張表單,對於表單中的系統程序,將不限 制其直接提升到管理員權限。 系統中的白名單程序有多個,其中,msconfig、taskmgr、perfmon、cleanmgr 等平時常用的程序都在其中。
直接提權:
比較常用的利用系統程序的方法是利用系統動態加載 DLL的特性,在系統中還有一份名單為 KnownDlls,當一個程序需要動態加載 DLL 的時 候,會先在這份名單之中進行查找,如果找到則加載相應路徑的DLL 文件,如果沒有找到則依照當前目錄、 System32 目錄的順序進行查找,因此如 果能找到一個程序動態調用的 DLL 文件不在KnownDlls 中,而在 System32 下面,則可以偽造一個相應的 DLL,來實現借助其他程 序來執行需要的操作。
在所有白名單程序中,正好有這樣一個程序,即 sysprep.exe,它的位置為 System32/sysprep/,而它在啟動時,會動態加載一 個 CRYPTBASE.DLL,這個 DLL 在 System32 下面,因此 sysprep.exe 會在當前目錄尋找的時候加載失敗,繼而轉 到 System32 目錄查找,試着臨時生成一個假的 CRYPTBASE.DLL 放在 sysprep 文件夾下,在 sysprep.exe啟動 時,將加載假的 CRYPTBASE.DLL,從而執行我們需要的操作。
sysprep.exe 加載假 CRYPTBASE.DLL線程注入白名單中的程序全部都在系統目錄當中,因此要把生成的假 DLL 復制到程序 目錄中, 將會由於權限問題而觸發 UAC,這樣便失效了。因此,需要特別的方法來把假 DLL 給復制到系統目錄內,並且不會觸發系統的權限控制。
這一步的操作也需要系統白名單的程序來實現,選用的程序為EXPLORER進程,首先使用遠程線程的方法把DLL注入到EXPLORER進程,然后再通 過EXPLORER把CRYPTBASE.DLL復制到指定目錄UAC不會提示。所有操作完成后啟動sysprep.exe我們的DLL就會被加載,從而 繞過成功。但這個方法缺點也很明顯,在注入EXPLORER進程時,殺毒軟件已經開始關注了。