讀紅藍攻防:技術與策略21執行權限提升

1. 執行權限提升
1.1. 有必要授予遠程用戶管理員訪問權限,使他們能夠排除故障和解決一些問題
1.2. 人們認為授予用戶管理員權限是不好的
-
1.2.1. 惡意用戶可以使用這種訪問級別來提取口令散列,稍后可以使用這些散列來恢復實際的口令,或者通過傳遞散列直接進行遠程攻擊
-
1.2.2. 他們可以使用他們的系統來捕獲數據包,還可以安裝可能惡意的軟件
-
1.2.3. 可能會破壞注冊表
1.3. 在該方法的第一階段,將收集關于目標的一般信息
1.4. 下一階段會使用迭代方法,將嘗試不同的漏洞利用方式,根據它們的成功或失敗,再嘗試新的攻擊媒介以獲得成功
-
1.4.1. 目標是盡可能提升到最高權限,所以在垂直權限提升攻擊不成功的情況下,可以進行水平權限提升攻擊來尋找新的攻擊媒介
-
1.4.2. 如果水平權限提升會成功,那么應該從頭開始從各個角度驗證安全性
1.5. 最后一個階段是報告階段,它將向緩解團隊提供詳細信息,以便在黑客發現之前彌補“漏洞”?
2. 利用漏洞攻擊未打補丁的操作系統
2.1. 攻擊者很可能會找到未打補丁的計算機
2.2. 黑客使用掃描工具找出網絡中設備的信息,并發現沒有打補丁的設備
2.3. SearchSploit包含相應的漏洞,可用于攻擊未打補丁的計算機
2.4. 使用名為PowerUp的工具繞過Windows權限管理,并將易受攻擊機器上的用戶升級為管理員
2.5. 使用名為wmic的WMI命令行工具來檢索已安裝的更新列表
2.6. 使用PowerShell命令Get-Hotfix
3. 訪問令牌操控
3.1. 在Windows中,所有進程都是由某個用戶啟動的,系統知道該用戶擁有的權利和權限
3.2. Windows通常使用訪問令牌來確定所有正在運行的進程的所有者
- 3.2.1. 這種權限提升技術用于使進程看起來好像是由另一個不同的用戶啟動,而不是由實際啟動它們的用戶啟動
3.3. 操作系統以普通用戶的身份登錄管理員用戶,然后以管理員權限執行進程
- 3.3.1. Windows使用run as administrator命令以管理員權限執行此進程
3.4. 如果攻擊者能夠欺騙系統,使其相信進程是由管理員啟動的,那么這些進程將會不受干擾地以完全級別管理員權限(full-level admin privilege)運行
3.5. 如果被盜令牌在遠程系統上具有適當的權限,那么當攻擊者使用竊取的令牌對遠程系統進程進行身份驗證時,也可能發生訪問令牌操控
3.6. 訪問令牌操控在Metasploit中大量使用
-
3.6.1. Metasploit具有可以執行令牌竊取并使用竊取的令牌提升權限運行進程的Meterpreter有效負載
-
3.6.2. Metasploit還有一個名為CobaltStrike的有效負載,也利用了令牌竊取優勢
-
3.6.3. 有效負載能夠竊取并創建自己的具有管理員權限的令牌
3.7. 權限提升方法有一種肉眼可見的趨勢,即攻擊者利用了原本合法的系統
4. 利用輔助功能
4.1. Windows有幾個輔助功能,旨在幫助用戶更好地與操作系統交互,并且更多地關注可能有視覺障礙的用戶
-
4.1.1. 包括放大鏡、屏幕鍵盤、顯示開關和旁白
-
4.1.2. 攻擊者可以操控這些功能來創建一個后門,通過這個后門,他們可以在沒有身份驗證的情況下登錄到系統
-
4.1.3. 黑客會刪除其中的一個或多個,并將其替換為命令提示符或后門
4.2. 顯示的命令提示符將以系統訪問權限執行,這是Windows計算機的最高權限級
-
4.2.1. 攻擊者可以使用命令提示符來完成其他任務
-
4.2.2. 它可以打開瀏覽器,安裝程序,創建具有權限的新用戶,甚至安裝后門
4.3. 要求攻擊者能夠對目標計算機進行物理訪問
- 4.3.1. 大多是由能進入組織場所的內部威脅或惡意行為者完成
5. 應用程序墊片
5.1. 應用程序墊片(application shimming)是一種Windows應用程序兼容性框架,Windows創建該框架是為了允許程序在最初創建它的操作系統以外的版本上運行
- 5.1.1. 過去在Windows XP上運行的大多數應用程序現在都可以在Windows 10上運行
5.2. 框架的操作步驟
-
5.2.1. 它會創建一個墊片,以便在遺留程序和操作系統之間進行緩沖
-
5.2.2. 在程序執行期間,引用墊片緩存以確定它們是否需要使用墊片數據庫
-
5.2.3. 如果是,墊片數據庫將使用API來確保程序代碼被有效地重定向,從而與操作系統通信
-
5.2.4. 由于墊片與操作系統直接通信,Windows決定增加一個安全特征,使其可以在用戶模式下運行
5.3. 如果沒有管理員權限,那么墊片就不能修改內核
-
5.3.1. 攻擊者已經能夠創建自定義墊片,可以繞過用戶賬戶控制、將DLL注入正在運行的進程以及干預內存地址
-
5.3.2. 這些墊片可讓攻擊者以提升后的權限運行自己的惡意程序
-
5.3.3. 它們還可用于關閉安全軟件,特別是Windows Defender
6. 繞過用戶賬戶控制
6.1. Windows有一個結構良好的機制,用于控制網絡和本地機器上所有用戶的權限
6.2. 它有一個Windows用戶賬戶控制(User Account Control,UAC)功能,作為普通用戶和管理員級用戶之間的門戶
6.3. Windows UAC功能用于向程序授權以提升其權限,并以管理員級的權限運行
- 6.3.1. 只有管理員用戶才能允許程序以這些權限運行
6.4. 一些Windows程序被允許提升權限或執行提升權限的COM對象,而無須事先提示用戶
-
6.4.1. rundl32.exe用于加載自定義DLL,該DLL加載具有提升了權限的COM對象
-
6.4.1.1. 這甚至可以在受保護的目錄中執行文件操作,而這些目錄通常需要用戶具有更高的訪問權限
-
6.4.1.2. 這就使得UAC機制更容易被有經驗的攻擊者利用
-
6.5. Windows的eventvwr.exe,黑客可以對其進行破壞,它在運行時通常會自動提升權限,因此可以向其注入特定的二進制代碼或腳本
6.6. 另一種擊敗UAC的方法是竊取管理員憑據
-
6.6.1. UAC機制被認為是一種獨立的安全系統
-
6.6.2. 在一臺計算機上運行的進程的權限對于橫向系統來說仍然是未知的
-
6.6.3. 很難抓獲濫用管理員憑據啟動具有高級權限的進程的攻擊者
7. 權限提升與容器逃逸漏洞
7.1. CVE-2022-0492
7.2. 在Linux內核kernel/cgroup/cgroup-v1.c的cgroup_release_agent_write中發現的一個漏洞,它會導致軟件供應鏈攻擊
7.3. 這個流程允許攻擊者控制一個組織的軟件構建過程,以破壞內部操作或在軟件中嵌入攻擊者控制的代碼或后門,從而將下游客戶置于風險之中
7.4. 容器是云計算環境中操作系統虛擬化的一種方法
-
7.4.1. 它允許用戶使用隔離的資源規則來使用程序及其依賴項
-
7.4.2. 應用程序的代碼可以以系統的方式與配置和依賴項捆綁在一起
-
7.4.3. 對于Kubernetes平臺來說,容器逃逸是一個潛在的基本問題,在這些平臺上,物理計算節點在許多不相關的容器之間共享
7.5. 緩解此漏洞的唯一方法是打補丁
8. DLL注入
8.1. DLL注入是攻擊者使用的另一種權限提升方法
8.2. 它還涉及破壞Windows操作系統的合法進程和服務
8.3. DLL注入使用合法進程的上下文運行惡意代碼
-
8.3.1. 通過使用被識別為合法的進程的上下文,攻擊者可以獲得幾個優勢,特別是獲得了訪問進程內存和權限的能力
-
8.3.2. 合法進程也掩蓋了攻擊者的行為
8.4. 反射式DLL注入
- 8.4.1. 這種方式更為有效,因為不必進行通常的Windows API調用即可加載惡意代碼,從而繞過了DLL加載監控
8.5. 攻擊者利用DLL注入攻擊來修改Windows注冊表、創建線程和加載DLL
- 8.5.1. 這些都是需要管理員權限的操作,但是攻擊者在沒有管理員權限的情況下偷偷執行這些操作
8.6. DLL注入不僅僅用于權限提升
8.7. 使用DLL注入技術來危害系統或向其他系統傳播
-
8.7.1. Backdoor.Oldrea:將自身注入explore.exe進程
-
8.7.2. BlackEnergy:作為DLL注入svchost.exe進程
-
8.7.3. Duqu:將自身注入多個進程以規避檢測
9. DLL搜索順序劫持
9.1. DLL搜索順序劫持是另一種用來危害DLL的技術,它允許攻擊者提升他們的權限以進行攻擊
9.2. 攻擊者試圖用惡意的DLL替換合法的DLL
9.3. 由于程序存儲DLL的位置很容易被發現,因此攻擊者可能會將惡意DLL放在遍歷路徑的最前面,以查找合法的DLL
9.4. 這種類型的攻擊發生在將DLL存儲在遠程位置(如Web共享)的程序中
- 9.4.1. DLL更容易受到攻擊,攻擊者不再需要物理訪問計算機就可以危害硬盤上的文件
9.5. 另一種攻擊方式是修改程序加載DLL的方式
-
9.5.1. 攻擊者修改manifest或local direction文件,使程序加載不同非預期的DLL
-
9.5.2. 攻擊者可能會將程序重定向為始終加載惡意DLL,這將導致持續的權限提升
9.6. 當用戶意識到某個應用程序運行不正常時,可以直接卸載它,這樣就可以挫敗DLL劫持攻擊
10. Dylib劫持
10.1. Dylib劫持是一種用來針對蘋果計算機的方法
10.2. 裝有蘋果OS X的計算機使用類似的搜索方法來尋找應該加載到程序中的動態庫
10.3. 搜索方法同樣基于路徑,攻擊者可以利用這些路徑來提升權限
11. 漏洞探索
11.1. 漏洞探索是目前為數不多的水平權限提升方式之一
11.2. 這種類型的權限提升是在有編程錯誤的系統和程序上完成的
11.3. Windows中存在一個編程錯誤,允許攻擊者使用常規域用戶權限創建他們自己的具有域管理員權限的Kerberos票據,此漏洞稱為MS14-068
11.4. 攻擊者會利用操作系統的工作原理來利用未知的漏洞
12. 啟動守護進程
12.1. 使用啟動守護進程是另一種適用于基于蘋果的操作系統(尤其是OS X)的權限提升方法
12.2. 當OS X啟動時,launchd是系統初始化過程的關鍵進程
-
12.2.1. 該進程負責從/Library/LaunchDaemons中的plist文件加載守護進程的參數
-
12.2.2. 守護進程具有指向要自動啟動的可執行文件的屬性列表文件
-
12.2.3. 攻擊者可以利用自動啟動的進程實現權限提升
- 12.2.3.1. 可以安裝自己的啟動守護程序,并使用已啟動的進程將其配置為在啟動過程中啟動
-
12.2.4. 啟動守護程序以管理員權限創建,但它們卻以root權限運行
- 12.2.4.1. 其權限將從admin提升到root
-
12.2.5. 攻擊者依靠一個原本合法的進程來執行權限提升
13. Windows目標上的權限提升
13.1. PowerShell和Meterpreter
-
13.1.1. 可以使目標機器的用戶在不知情的情況下允許合法程序運行,從而執行權限提升
-
13.1.2. 用戶不知不覺地就允許惡意行為者提升了權限
13.2. Meterpreter首先被用于與目標建立會話
-
13.2.1. 攻擊者利用這個會話向目標發送命令并有效地控制它
-
13.2.2. 用于請求目標機器上的用戶在不知情的情況下提升攻擊者的執行權限級
13.3. 攻擊者必須將ask技術設置為通過PowerShell運行
浙公網安備 33010602011771號