我们提供安全,免费的手游软件下载!
本文基于网络密码课上的实验。在实验中,我们将模拟计算NTResponse、AuthenticatorResponse,以及在未知用户口令情况下编程实现CHAP认证口令的破解。
首先,我们需要编写程序,模拟计算NTResponse、AuthenticatorResponse。代码编译成功的前提是要预先装好openssl库。
本随笔主要包含三个内容:
接下来,我们将详细介绍每个部分的实现过程。
首先放一个我自己抓的包,可以看到,这是chap协议挑战响应的三次握手,
接下来我们继续进行编程模拟,就要先搞清楚每个字段代表的什么。文档中第一个包的描述,给的是Authenticator challenge。
这是第二个包,16字节peer-challenge,8位的0,24位的NT-Response。
第三个包的内容是s=authticator-response
接下来我们开始编程实现,每一个字段都是由对应的函数计算得出。
一、编写程序,模拟计算NTResponse、AuthenticatorResponse
1.查阅RFC2759文档,找到描述的计算NTResponse的函数。NT-Response的值是由GenerateNTResponse()计算得出,该函数有四个输入,分别是AuthenticatorChallenge(16)、PeerChallenge(16)、UserName和Password,一个输出Response(24)。
此外,有三个函数对输入进行处理:ChallengeHash:对两个挑战值hash,结果放到challenge中。NtPasswordHash:对password做hash,结果放到password中。ChallengeResponse:对challenge和passwordhash做运算,结果得到NT-Response。
2.根据文档描述编写代码。GenerateNTResponse()函数,_ChallengeHash()函数,_NtPasswordHash函数()和ChallengeResponse()函数。
下面来看一下密钥扩展函数,该函数的具体流程如下:
3.运行程序,将结果和wireshark抓包内容进行比对。
NT-Response:DA2191E86678231E62B5D628CBA859031B1E6082533B32B5
AuthenticatorResponse: s=2AA71CBBDD95F43ABA628329A0271A8DD1114310
二、根据前期PPTP实验中捕获的数据包中CHAP协议的挑战响应认证数据,在未知用户口令情况下编程实现CHAP认证口令的破解
思路:编写一个challenge1()函数,创建一个自己的字典,使用字典进行爆破,每次读入字典中的一个密码文本,然后调用GenerateNTResponse()函数计算NT-Response,与正确的进行比对,如果成功,则输出密码。
1.编写challenge1()函数。
运行字典爆破
三、在单向数据条件下(仅能截获用户数据)实现CHAP认证口令的破解
思路:单向数据条件下,意味着只能获取用户数据NT-Response、PeerChallenge、UserName。那么根据NtResponse的计算原理,采用逆向破解的思路。因此,破解思路是,每次读入字典里的密钥做hash作为密钥,然后将NtResponse三个部分分别作为DES函数的输入,记录DES函数的输出,比较三个输出是否相同,如果相同,则破解成功。
1.编写代码。
源码如下,注意,已经折叠,点击展开。
2.运行代码
至此,实验结束。顺便附上python源码,欢迎批评指正!
热门资讯