网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

开发工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 开发工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

修复Responder实现的SMBv1&SMBv2的问题:使其与网络使用客户端的多个Hash捕获兼容,并修复了SMBv2实现的现有bug。

文章来源:重庆软件开发 发布时间:2020-01-22 15:52:06 围观次数:
分享到:

摘要:由于SMB客户端的多样性以及不同客户端实现的复杂性,本文以网络使用客户端为例来分析和修复Responder实现的SMBv1和SMBv2中存在的问题。

image.png

image.png

图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。

image.png

  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。 如图

image.png

image.png

说好的捕获多次呢,骗人。 让我们看一下WireShake捕获数据包的情况,如图所示

image.png

如配置文件中所述,响应者返回了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。 进行如下图所示的更改

image.png

1.5删除Responder.db,重新启动Responder。 返回Windows XP重新验证。 你会发现,哈哈哈,成功! 如图所示

image.png

image.png

2.再次使用SMBv2:

  2.1同时启动Windows 7和Kali,启动Responder,然后在Windows 7系统的cmd下使用net use \\ cfca。 您将一无所获,仅响应LLMNR分析。 再次如图所示

image.png

image.png

让我们分析一下WireShark捕获的数据包。

image.png

如图所示,客户端通常已通过身份验证(No 2945,No 2946,No 2947),但是响应者不响应客户端,因此客户端具有“系统错误64”错误,但从理论上讲,ntlm 哈希已到达服务器,因此必须至少解析一次,否则将造成浪费。


  基于不浪费的原则,迅速在代码中找到了数据包的代码(No 2947),如图所示,包含哈希的数据包的MessageID数据包捕获结果为3。

image.png

image.png


如果您将其更改为3,您是否认为这将结束?


  那你很简单


  我们应该做的是删除’ and GrabMessageID(data)[0:1] == “\x02″


  你为什么这样做? 如图所示

image.png

一般含义是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的效果

image.png

image.png

本文由 重庆软件开发 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:Responder SMBv1&SMBv2 客户端 Hash兼容 修复SMBv2

上一篇:MultiScanner:文件分析框架,帮助用户自动化大量文件集的分析并汇总输出分析结果
下一篇:LOLBITS:C#反向Shell,微软后台智能传输服务(BITS),基于Flask Web应用程序构建,只通过Header的HTTP请求通信。

热门资讯

鼠标向下滚动