一.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

最新文章

  1. JavaScript Array数组方法详解
  2. ADO总结测试数据库
  3. UVA 11082 矩阵解压(网络流建模)
  4. 二分查找算法java实现
  5. Uploadify上传问题
  6. maven Connection refused: connect
  7. NoSQL分类
  8. 《SELinux安全上下文的管理(含图)》RedHat6.3——步骤详细、条理清晰
  9. 题解西电OJ (Problem 1004 -亚特兰提斯)--最小生成树
  10. ZOJ 3702 Gibonacci number
  11. 封装一个button上带图片的,图片在上,文字在下的按钮
  12. Spring Boot 2.x (十):构建优雅的RESTful接口
  13. ios UITableView的style的区别与用法,以及分割线的显示与隐藏
  14. java把一个list分割成多个list存入map中(实例)
  15. epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
  16. In-App Purchase iap 内付费 二次验证代码 (java 服务器端)
  17. mysql为什么要分库分表?
  18. Ik分词器没有使用---------elasticsearch-analysis-ik 5.6.3分词问题
  19. CSS 美化radio checkbox
  20. Bootstrap 各种进度条详解

热门文章

  1. java-Day01
  2. MS Sql添加描述信息 及其他信息
  3. Redis数据结构之字典-dict
  4. 净心诀---python3装饰器
  5. Vue番外篇-路由进阶(一)
  6. spring_入门配置和注入
  7. 对象拷贝extend
  8. CentOS7.6编译安装Python-3.7.4
  9. C++11 auto 与 右值
  10. curl命令测试服务器是否支持断点续传