修复Responder实现的SMBv1&SMBv2的问题:使其与网络使用客户端的多个Hash捕获兼容,并修复了SMBv2实现的现有bug。
摘要:由于SMB客户端的多样性以及不同客户端实现的复杂性,本文以网络使用客户端为例来分析和修复Responder实现的SMBv1和SMBv2中存在的问题。
图1是在GitHub(https://github.com/lgandx/Responder)上的官方Responder(实际上是非官方的)上找到的一段,其一般含义是:支持抓取NTLMv1,NTLMv2Hash并成功在Tested中运行 在Windows 95到Server 2012 RC和其他计算机上运行,并且内置并支持SMBv2。
图2是取自响应器的配置文件的图。 一般而言,启用CaptureMultipleCredentials允许响应者在客户端希望通过服务器进行身份验证时发送ACCOUNT_DISABLED,然后尝试获取多个Hash值。 (从源角度来看,此配置仅适用于SMB1)
1.内置的SMBv2实现存在缺陷,并且在与一些常用的SMB客户端进行交互时无法正常工作,更不用说捕获哈希了。
2.启用CaptureMultipleCredentials。 与某些常用的SMB客户端进行交互时,SMBv1只能捕获一次哈希。
由于SMB客户端的多样性以及不同客户端实现的复杂性,本文以网络使用客户端为例来分析和修复Responder实现的SMBv1和SMBv2中存在的问题。
背景知识
1.Responder
到目前为止,Laurent Gaffie的Responder是每个渗透测试人员用来窃取各种形式的凭据(包括Net-NTLM hash)的最受欢迎的工具。 它污染LLMNR和NBT-NS等主机以解析请求,从而欺骗目标主机与其实现的恶意服务器进行通信,从而达到建立恶意浏览器代理和窃取凭据的目的。 当网络上的设备尝试使用LLMNR和NBT-NS请求解析目标计算机时,响应者将伪装成目标计算机。 当受害机器试图登陆到攻击者机器上时,响应者可以获取受害机器用户的Net-NTLMhash值。
2.SMB工作流程
2.1。 客户端首先发送SMB协商协议请求请求数据报,并列出其支持的所有SMB协议版本,如图3的20所示:
2.2。 在接收到请求消息之后,服务器将对请求SMB2进行响应,以协商协议响应并列出其希望使用的协议版本。 如图3中的第3幅所示((有经验的学生发现中间有些软件包被跳过了,不用担心,我们稍后再讨论)
2.3。 确定协议后,客户端进程将使用协商的版本来启动与服务器的身份验证以获得访问权限。
2.4。 服务器发送会话建立响应响应数据包,以允许或(出于拒绝的原因)拒绝连接。
注意:2.3和2.4认证涉及4个步骤(NTLM认证的内容)。 有更多内容和在线信息。 我的任务是介绍该过程,以便每个人都熟悉SMB。
3.NTLM身份验证(挑战响应机制)
实验环境:
Windows 7(默认支持smb1 smb2)IP:172.20.10.8
Windows XP(默认仅支持smb1)ip:172.20.10.7
kali(响应器是默认值)ip:172.20.10.6
4.实验细节:
1.让我们从SMBv1开始:
1.1。 启动Windows XP和Kali,然后在Kali中的/usr/share/responder/Responder.conf路径下配置Responder配置文件。 设置CaptureMultipleCredentials = On,这也是响应者的默认设置。 设置完成后,在终端中输入响应者-I eth0以启用响应者进行Hash捕获。
1.2。 进入XP,在cmd下输入net use \\ cfca(当用户不输入帐户密码时,Windows将使用当前的用户帐户密码尝试NTLM身份验证。如果身份验证失败,客户端将要求用户输入密码。 帐户密码重新验证-这是正常过程。根据正常过程,我们将进行两次身份验证,响应者还将捕获两次Hash。)
1.3 Windows提示:帐户被禁用然后终止,而Kali仅捕获了一次Hash。 如图
说好的捕获多次呢,骗人。 让我们看一下WireShake捕获数据包的情况,如图所示
如配置文件中所述,响应者返回了ACCOUNT_DISABLED“ \ x72 \ x00 \ x00 \ xc0”的响应,没问题。
为什么会这样?
这是由于SMB客户端的复杂性,不同的SMB客户端可能由不同的团队实现。 ACCOUNT_DISABLED“ \ x72 \ x00 \ x00 \ xc0”将导致客户端重新验证某些SMB客户端,并且网络实现SMB客户端将收到ACCOUNT_DISABLED“ \ x72 \ x00 \ x00 \ xc0”数据包,身份验证状态为 打印在屏幕上,然后正常的重新认证过程被中断。
在查阅了数据和实验之后,我们可以将其更改为PASSWORD_EXPIRED“ \ x71 \ x00 \ x00 \ xc0”,因为它具有更好的兼容性(实际上,有很多可以更改的值,例如LOGON_FAILURE“ \ x6d \ x00 \ x00 \ xc0“,这里我们使用PASSWORD_EXPIRED” \ x71 \ x00 \ x00 \ xc0“),客户端将再次执行身份验证。
1.4返回kali,打开终端,输入vi /usr/share/responder/servers/SMB.py。 进行如下图所示的更改
1.5删除Responder.db,重新启动Responder。 返回Windows XP重新验证。 你会发现,哈哈哈,成功! 如图所示
2.再次使用SMBv2:
2.1同时启动Windows 7和Kali,启动Responder,然后在Windows 7系统的cmd下使用net use \\ cfca。 您将一无所获,仅响应LLMNR分析。 再次如图所示
让我们分析一下WireShark捕获的数据包。
如图所示,客户端通常已通过身份验证(No 2945,No 2946,No 2947),但是响应者不响应客户端,因此客户端具有“系统错误64”错误,但从理论上讲,ntlm 哈希已到达服务器,因此必须至少解析一次,否则将造成浪费。
基于不浪费的原则,迅速在代码中找到了数据包的代码(No 2947),如图所示,包含哈希的数据包的MessageID数据包捕获结果为3。
如果您将其更改为3,您是否认为这将结束?
那你很简单
我们应该做的是删除’ and GrabMessageID(data)[0:1] == “\x02″
你为什么这样做? 如图所示
一般含义是SMB2支持两种Negotiate:Multi-Protocol Negotiate和SMB2-only Negotiate。 区别在于Multi-Protocol Negotiate支持多版本SMB,而SMB2-only Negotiate仅支持SMB2。
使用Multi-Protocol Negotiate时,包含hash的数据包的ID为3; 当使用MB2-only Negotiate时,包含hash的数据包的ID为2。
当Microsoft实现对多个版本的SMB客户端的支持时,它将首先使用“Multi-Protocol Negotiate”进行协商。 一旦确定服务器和客户端支持的SMB版本(假定为SMB2),则SMB2-only Negotiate将用于后续身份验证。 为什么这样做? 兼容性兼容性兼容性,重要的是要说三遍,只有第一个会使用SMB2 Only Negotiate。 微软不会这样做。
因此,无论它等于2还是等于3,都会出现问题。 删除成为我能想到的最佳策略。
让我们看一下更改后的SMBv2的效果
相关热词搜索:Responder SMBv1&SMBv2 客户端 Hash兼容 修复SMBv2
上一篇:MultiScanner:文件分析框架,帮助用户自动化大量文件集的分析并汇总输出分析结果
下一篇:LOLBITS:C#反向Shell,微软后台智能传输服务(BITS),基于Flask Web应用程序构建,只通过Header的HTTP请求通信。
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了