標籤:

濫用系統Token實現Windows本地提權

這個項目是我和我的朋友drone(@dronesec)花了一段時間搞出來的,很高興現在終於可以發布了。正如標題所說的,我們將著眼於利用Windows訪問令牌來實現本地特權升級。對於那些熟悉我之前編寫的關於「Rotten Potato」一些工作的人來說,這聽起來很熟悉,但是drone和我又向前邁了10步。

在這篇文章中,我只是提供一份我們所做的工作的一個總結。完整的文件和所有相關代碼可以在以下網址找到:github.com/hatRiot/toke

這篇文章將分為兩部分,第一部分是為滲透測試人員和紅軍所寫的,第二部分是為漏洞利用開發人員所寫。

對於紅軍攻擊

像「Rotten Potato」項目一樣,該項目對於攻擊者已經拿到非管理員許可權的服務帳戶,並希望將許可權提升為「SYSTEM」許可權的滲透測試場景非常有用。如果你從「Rotten Potato」項目中回想起了一些事情,那麼你應該記得為了能使原始的攻擊起作用,你的帳戶需要具有「SeImpersonatePrivilege」或「SeAssignPrimaryPrivilege」許可權。drone和我決定看看還有哪些其他的特權可以被濫用來獲得系統級別的訪問許可權,並能夠找到他們的整個集合。如果這是你的興趣所在,請隨意跳到上面鏈接中的白皮書的3.1和3.3小節,並查看已發布的代碼。每個模塊都與一個特定的許可權相關聯,並且可以讓你獲得系統級別的訪問許可權或幾乎一樣的許可權。

以下是我們能夠濫用的許可權列表:

SeImpersonatePrivilegenSeAssignPrimaryPrivilegenSeTcbPrivilegenSeBackupPrivilegenSeRestorePrivilegenSeCreateTokenPrivilegenSeLoadDriverPrivilegenSeTakeOwnershipPrivilegenSeDebugPrivilegen

從滲透測試的角度來看,只需在Windows命令提示符下鍵入「whoami /priv」即可。如果你有上述特權之一,那麼你贏了。

尋找具有這些許可權的特定服務帳戶可能是有益的。例如,如果你可以訪問備份服務帳戶,那麼幾乎肯定會有SeBackupPrivilege和SeRestorePrivilege許可權。可以通過以下方式實現對這些服務帳戶的訪問:

· 服務本身受到一些漏洞的威脅。典型的情況包括允許在運行了IIS的帳戶的上下文中執行的Web應用程序漏洞,以及可以使用XP_CMDSHELL 在SQL服務帳戶的上下文中運行代碼的SQL注入漏洞。

· 服務帳戶的憑據以某種方式泄漏。

· Kerberoast風格的攻擊。從域控制器請求目標帳戶的Kerberos票證。這張票的一部分使用目標帳戶的密碼哈希進行加密。這可以有效地利用離線破解來獲得帳戶密碼。

· 強制NTLM協商 。例如,使用備份服務賬戶,你可以強制它備份由Responder.py提供的SMB共享。

和往常一樣,你可能需要在這裡有一丟丟的創意。

有關更多詳細信息,請參閱GitHub存儲庫github.com/hatRiot/toke中的文檔。

對於Exploit開發

這個項目最初是由drone開發的,這款工具大大簡化了為開發人員開發漏洞利用程序部分寫入漏洞的難度。部分寫入漏洞是那些我們可以寫的東西在內存中選定的位置,但是我們可能無法控制被寫入的值。這裡的想法是濫用部分寫入來翻轉用戶令牌中的某些位,從而實現可利用的許可權之一。從這一點來看,漏洞的「利用」涉及濫用一系列Windows API調用的意圖(雖然是未記錄的)行為。

濫用部分寫入的這種策略的優點在於它避免了所有新的內核利用的緩解措施!drone在本文中展示了他如何能夠大大簡化最近的部分寫入漏洞的漏洞利用開發。另一件好事就是利用代碼完全可移植。一旦在令牌中翻轉了正確的位,漏洞開發者只需要從我們的項目中運行其中一個模塊就行了。

有關更多詳細信息,請參閱GitHub存儲庫github.com/hatRiot/toke中的文檔。

本文翻譯自foxglovesecurity.com/20,如若轉載,請註明原文地址: 4hou.com/technology/739

推薦閱讀:

如何用一種最簡單的方式分析惡意軟體
3個步驟實現簡單語言解釋器(自製簡易編程語言)
HBO電視網被黑:《權力遊戲 7》視頻泄露
黑客俱樂部:英國正栽培網路安全的「明日之子」
一加手機終於承認錯誤!約4萬名用戶信用卡信息受影響

TAG:信息安全 |