LAPS的使用小技巧
LAPS
0x01 前提
有一天在路上莫名奇妙撿到一個webshell,既然是爆Ju那就爆久一點,然后我就隨手轉存下lsass內存。
tasklist /svc | findstr "lsass.exe" rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump pid lsass.dmp full
然后再隨手導出一哈本地hash好了。
reg save hklm\sam sam.hiv reg save hklm\system system.hiv
不錯拿到了我們喜歡的p@ssw0rd密碼,好家伙這不是我自己電腦密碼嗎?難道這臺機器的主人暗戀我?哪有這么巧合的事?!于是我隨手一個smb爆破,wmi爆破,好家伙給我爆出來30臺機器,這波不是發個大財?然后一想我自己的小域環境不也這樣?這可不行,我自己一臺一臺改?我懶得搞被擼了算了,要不用組策略比如sysvol?這樣搞那我還不如不管了。于是我發現了有個東西叫做LAPS
0x02 LAPS是什么
Microsoft 本地管理員密碼解決方案 (LAPS為) Active Directory 中的每臺計算機提供自動本地管理員帳戶管理。安裝在每臺計算機上的客戶端組件會生成一個隨機密碼,更新關聯 AD 計算機帳戶上的(新)LAPS密碼屬性,并在本地設置密碼。LAPS配置通過組策略進行管理,該組策略提供密碼復雜性、密碼長度、密碼更改的本地帳戶名稱、密碼更改頻率等值。
簡單點來說,很多管理員都喜歡用一個密碼,那么我一個pth到域控那ntds拿下了,所以LAPS就為每臺機器的本地管理員用戶設置不同的隨機的密碼來解決這個問題,LAPS會把每臺計算機的本地管理員賬戶存儲在Active Directory中,然后通過計算機相應的屬性進行保護,計算機可以在 Active Directory 中更新自己的密碼數據,并且域管理員可以向授權用戶或組授予讀取訪問權限。
LAPS的工作是如何的?
LAPS其實可以理解為一條GPO,它會隔一段時間去執行一些操作:
?檢查密碼是否過期
?當密碼過期或者說過期前生成一個新的密碼
?通過密碼策略來驗證新密碼
?向Active Directory發送密碼,并且把計算機的屬性發送過去一起存儲
?向Active Directory說明密碼下次到期的時間,將屬性發送過去一起存儲
?更改管理員的密碼
0x03 安裝LAPS
[自己去下載吧] https://www.microsoft.com/en-us/download/details.aspx?id=46899,
這里[參考]https://www.opss.cn/1377.html。

Ir9UIg.png

Ir9cZT.png
導入LAPS PowerShell 模塊,擴展AD架構增加LAPS擴展
Import-Module AdmPwd.PS #導入LAPS PowerShell 模塊 Update-AdmPwdADSchema #擴展AD架構增加LAPS擴展

Ir92oF.png、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

Ir9fJJ.png

Ir9osx.png

Ir9XJH.png

Ir9jWd.png

IrCCef.png
去掉這個

IrCiTS.png
創建一下OU,組和用戶

IrCeln.png
把MSSQL添加到PWAdmin組

IrCMwT.png
然后創建一個計算機OU,把mssql添加進計算組這個OU,點擊mssql然后右鍵移動到計算機即可。
查詢“計算機”這個OU有哪些用戶組有擴展權限,從下面可以看出一個system和域管理員組可以訪問這個OU的擴展權限
Find-AdmPwdExtendedrights -identity 計算機 | Format-Table

IrC1kF.png
設置“計算機”這個OU上的電腦擁有擴展屬性權限,ms-Mcs-AdmPwd – 以明文形式存儲密碼;ms-Mcs-AdmPwdExpirationTime – 存儲重置密碼的時間。設置計算機這個OU的電腦對上面兩個擴展擁有讀寫權限
Set-AdmPwdComputerSelfPermission -OrgUnit 計算機
然后設置允許讀取“計算機”這個OU上的管理員賬號和密碼的用戶組。
Set-AdmPwdReadPasswordPermission -OrgUnit 計算機 -AllowedPrincipals PWAdmin #設置PWAdmin用戶組可以讀取“計算機”這個OU里面的本地管理員賬號和密碼
然后設置允許重置“計算機”這個OU上的管理員賬號和密碼的用戶組
Set-AdmPwdResetPasswordPermission -OrgUnit 計算機 -AllowedPrincipals PWAdmin #設置PWAdmin用戶組可以重置“計算機”這個OU里面的本地管理員賬號和密碼
然后配置GPO,讓客戶端通過GPO來更新本地管理員密碼
創建LAPS的GPO然后把計算機鏈接到這個GPO

IrCJp9.png

IrCYlR.png
然后編輯

IrCt61.png
然后就是給客戶端安裝了,只需要第一個

IrCam6.png

IrCDte.png
然后重啟該機器。再驗證LAPS
PowerShell查看本地管理員密碼,為本地計算機名稱
Get-AdmPwdPassword -ComputerName

IrCypd.png

IrCc6I.png
那既然這樣子了,我每臺機器密碼都不一樣了,你總pth不動了把,而且我更新密碼的時候流量也是加密的。但是這個明文存儲挺讓我難受的。
0x04 檢查是否安裝了LAPS
檢查DLL是否存在
Get-ChildItem 'c:\program files\LAPS\CSE\Admpwd.dll'
檢查DLL的數字簽名
Get-AuthenticodeSignature 'c:\program files\LAPS\CSE\Admpwd.dll'
也可以檢查CN=ms-Mcs-AdmPwd,CN=Schema,CN=Configuration,DC=redteam,DC=local是否存在CN=ms-Mcs-AdmPwd

IrCgXt.png
0x05 獲取LAPS值

IrCRnP.png

IrCOBV.png

IrPAHK.png