内网渗透-网络认证之基于挑战/响应认证NTLM协议的密码破解实验

声明

本实验中涉及的技术仅限于学习使用,若不法分子用于黑客攻击,本人不承担任何法律责任,请广大hacker遵守国家网络安全相关法律!!!

实验前必会知识

Windows 账户密码加密篇

Windows操作系统通常使用两种方法对用户的明文密码进行加密处理,LM Hash加密和NTLM Hash加密。所以Windows操作系统中的密码一般由两部分组成,一部分为LM Hash,另一部分为NTLM Hash,其保存格式通常为

username:RID:LM‐HASH:NT‐HASH

LM Hash介绍

LM Hash的全名为"LAN Manager Hash",是微软为了提高 Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管 LM Hash较容易被破解,但为了保证系统的兼容性,,Windows只是将LM Hash禁用了(从Windows vista和 Windows Server2008版本开始,Windows操作系统默认禁用 LM Hash)。 LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用 LM Hash,将用 户的密码设置为14位以上即可。如果 LM Hash被禁用了,攻击者通过工具抓取的 LM Hash通常为“ad3b435b51404eead3b435b51404ee”(表示 LM Hash为空值或被禁用)

NTLM Hash介绍

NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。 NTLM Hash 是基于MD4加密算法进行加密的。个人版从 Windows vista以后,服务器版从 Windows Server 2003以后,Windows操作系统的认证方式均为 NTLM Hash

各个版本对LM和NTLM的支持

蓝色表示默认,红色表示支持在这里插入图片描述

LM Hash加密原理

  1. 将明文口令转换成大写
  2. 转换成十六进制
  3. 密码不足14字节(2bit,也就是两个字母)用0补全
  4. 将其拆分为2组7字节
  5. 将每组7字节的十六进制转换成二进制,然后每7bit后加一个0,再转换成十六进制
  6. 将上述得到的两组十六进制编码分别作为密钥,将"KGS!@#$%"的十六进制作为明文,进行DES加密,将得到的两个密文进行拼接,结果作为LM Hash值

NTLM Hash加密原理

  1. 将明文口令转换成十六进制
  2. 转换成Unicode格式(每字节后加两个0)
  3. 对Unicode字符串进行MD4加密,得到的密文就是NTLM Hash值

Windows中用户账号密码保存位置

%SystemRoot%\system32\config\SAM | C:\Windows\System32\config\SAM

网络认证》挑战/响应认证的NTLM协议介绍

在平时的测试中,经常会碰到处于工作组的计算机,处于工作组的计算机之间是无法建立一个可信的信托机构的,只能是点对点进行信息的传输。比如,主机A想要访问主机B上的资源,就要向主机B发送一个存在于主机B上的一个账户信息的消息,主机B接收以后会在本地进行验证,如果验证成功,才会允许主机A对主机B进行资源的访问。
NTLM 协议是一种基于 挑战/响应 的认证机制,仅支持 Windows 的网络认证协议,主要分为协商、质询、验证三个步骤。

认证流程

  1. 主机A发送账户信息(包括账号密码)给主机B
  2. 主机B本地查询是否有账号,若无,认证失败,结束,若有执行 3
  3. 主机B随机生成一个challenge值,将查询到的账户的NTLM Hash值对challenge进行加密,将得到的密文(challenge1)保存在本地,并将随机生成的challenge发送给主机A
  4. 主机A收到challenge后,将发送给主机B的账户密码对应的NTLM Hash值对challenge进行家吗,得到一个密文,叫Response,并发送给主机B
  5. 主机B收到Response后,将其于challenge1进行比对,若相同,则认证成功

NTLM协议v1和v2版本区别

  1. 随机生成的challenge不同,v1生成8位,v2生成16位
  2. 加密算法不同,v1采用DES加密,v2采用HMAC-MD5加密

实验环境

攻击机:
安装内网渗透测试工具CobaltStrike
安装wireShark抓包工具
准备Inveigh监听脚本

密码破解工具
Kali
hashcat

靶机:
Windows 7
IP:192.168.198.111
创建账户:eMeng/Admin@123

幸运鱼儿机器
能够向靶机发送网络认证信息

实验目的

在已知靶机上存在eMeng账户情况下,破解该账户的登陆密码

实验操作

打开wireshark抓包工具开始抓包
win10 cmd执行以下命令,抓取包

net use \\192.168.198.111 /u:eMeng 123

在这里插入图片描述
获取challenge:

2b95bf744c3967e3

在这里插入图片描述
获取NTLM Response值:

4a42f99a42174096aa7d55d42b4980640101000000000000edab3f608f0bdb01031ab2813c695d030000000002001000500043002d00570049004e002d00370001001000500043002d00570049004e002d00370004001000500043002d00770069006e002d00370003001000500043002d00770069006e002d00370007000800edab3f608f0bdb01060004000200000008003000300000000000000000000000002000005cce374975d0a2c75ae03eb09d8aa292665194d0725ccfe00ba5390145ca1bfe0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003100390038002e003100310031000000000000000000

在这里插入图片描述


NTLM v2 数据保存格式如下:

username::domain:challenge:HMAC‐MD5:blob

username:对应数据包中 user name
domain:对应数据包中的 Domain name
HMAC‐MD5:对应数据包中的NTProofStr
blob:数据库包中rsponse去掉HMAC‐MD5的值


username:eMeng
domian:NULL(在数据格式中NULL表现为空字符)
在这里插入图片描述
HMAC‐MD5:

4a42f99a42174096aa7d55d42b498064

在这里插入图片描述
blob值:Response去掉前面的HMAC‐MD5部分剩余的字符

0101000000000000edab3f608f0bdb01031ab2813c695d030000000002001000500043002d00570049004e002d00370001001000500043002d00570049004e002d00370004001000500043002d00770069006e002d00370003001000500043002d00770069006e002d00370007000800edab3f608f0bdb01060004000200000008003000300000000000000000000000002000005cce374975d0a2c75ae03eb09d8aa292665194d0725ccfe00ba5390145ca1bfe0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003100390038002e003100310031000000000000000000

所以最终的到HTLM v2数据如下:

eMeng:::2b95bf744c3967e3:4a42f99a42174096aa7d55d42b498064:0101000000000000edab3f608f0bdb01031ab2813c695d030000000002001000500043002d00570049004e002d00370001001000500043002d00570049004e002d00370004001000500043002d00770069006e002d00370003001000500043002d00770069006e002d00370007000800edab3f608f0bdb01060004000200000008003000300000000000000000000000002000005cce374975d0a2c75ae03eb09d8aa292665194d0725ccfe00ba5390145ca1bfe0a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003100390038002e003100310031000000000000000000
使用kali破解密码
在这里插入图片描述
在这里插入图片描述

遗留问题

实验中暴破出的密码是攻击机发送给靶机的密码,个人觉得多此一举了,我知道对方密码的情况下干嘛还需要暴破,这个问题已经询问老师,等待老师回答中。。。。。。主要是学习这个过程。。。

问题解决

这个玩法是不用诱饵,把鱼钩甩在鱼儿必经之路上,等待鱼儿上钩的操作。
后续用脚本监听内网中的幸运儿创建网络认证的过程,抓取他发送的数据包,从而离线暴破密码。。。

利用CS配合Inveigh.ps1脚本实现数据抓取并破解密码

  1. kali打开CS服务端
    在这里插入图片描述
  2. 攻击机启动CS客户端并创建监听器
    在这里插入图片描述
  3. 生成后门脚本并上传到靶机,双击运行后门文件,靶机上线
    在这里插入图片描述
  4. 提权获得管理员权限并上线
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 将Inveigh工具包复制到攻击机CS目录下
    在这里插入图片描述
  6. CS本地导入脚本至靶机powershell
powershell-import .\Inveigh\Inveigh.ps1

在这里插入图片描述
7. 执行脚本监听小鱼儿对靶机的网络认证操作

powershell Invoke-Inveigh -consoleoutput Y

在这里插入图片描述
8. 小鱼儿发送网络认证请求

net use \\192.168.198.111 /u:eMeng asdfg

在这里插入图片描述
9. CS获取监听数据
在这里插入图片描述
10. 成功kali使用hashcat破解小鱼儿的认证密码
在这里插入图片描述
在这里插入图片描述
PS:如果小鱼儿输入的认证密码是正确的,那这里破解得到的密码也就是正确的。。。
实验完成。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值