Web渗透技术及实战案例解析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.10 MD5加密与解密

MD5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要“辅助工具”。MD5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号和密码值(MD5加密后的值)。获得的密码值有两种情况,一种是明文,另外一种就是对明文进行了加密。如果密码值是加密的,这个时候就需要对密码值进行判断,如果是采取MD5加密,则可以通过MD5Crack3等软件进行破解。王小云教授的MD5密码碰撞破解算法没有公布,因此目前MD5解密方式主要采取暴力破解,即软件通过算法生成字典,然后使用MD5函数加密该字典中的值形成密文,接着跟需要破解的密文进行比较,如果相同则认为破解成功。目前网上有很多网站提供MD5加密或者加密值查询,将加密后的MD5值,输入到网站中,如果网站数据库中存在该MD5,则该值对应的MD5加密前的值就为密码。本案例介绍如何使用MD5Crack3以及一些在线的网站来进行破解;MD5Crack3是阿呆写的一款MD5密码破解软件,其网站地址:http://www.adintr.com/subject/mdcrk/index.htm,目前已经发布了MD5Crack4.0版本,也可以到我的blog(http://simeon.blog.51cto.com/18680/144558)去下载。

1.10.1 有关MD5加解密知识

MD5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要“辅助工具”。MD5解密主要用于网络攻击,在对网站进行入侵时,有可能获得管理员或者其他用户的账号和密码值(MD5加密后的值)。获得的密码值有两种情况,一种是明文,另外一种就是对明文进行了加密。如果密码值是加密的,这个时候就需要对密码值进行判断,如果采取MD5加密,则可以通过MD5Crack4等软件进行破解。王小云教授的MD5密码碰撞破解算法没有公布,因此目前MD5解密方式主要采取暴力破解,即软件通过算法生成字典,然后使用MD5函数加密该字典中的值形成密文,接着跟需要破解的密文进行比较,如果相同则认为破解成功。目前网上有很多网站提供MD5加密或者加密值查询,将加密后的MD5值,输入到网站中,如果网站数据库中存在该MD5,则该值对应的MD5加密前的值就为密码。

1.10.2 通过cmd5网站生成MD5密码

在浏览器中输入地址“http://www.cmd5.com/”,在输入框中输入想要加密的原始密码,然后单击“MD5加密或解密”按钮即可,如图1-71所示,原始密码为“goodman88”,加密后的密码值为:

MD5(goodman88,32) = d5a8e0b115259023faa219f5b53ca522
MD5(goodman88,16) = 15259023faa219f5

图1-71 MD5加密

作为实验数据,我们再生成一组生日的MD5密码如下:

MD5(19801230,32) = 2540bb62336a8eb3ebc1e42ee44c8e3d
MD5(19801230,16) = 336a8eb3ebc1e42e

1.10.3 通过cmd5网站破解MD5密码

在cmd5网站的输入框中输入刚才加密后的MD5 32值“d5a8e0b115259023faa219 f5b53ca522”,然后单击“md5加密或解密”按钮即可,如图1-72所示,未能成功破解。

图1-72 通过cmd5网站未能破解MD5密码

将第二个生日加密后的MD5值“2540bb62336a8eb3ebc1e42ee44c8e3d”,放入cmd5网站进行破解,很快其结果就出来了,如图1-73所示。

图1-73 破解简单的数字密码

1.10.4 在线MD5破解网站收费破解高难度的MD5密码值

一些在线网站提供的MD5密码破解只能破解已经收录和一些简单的密码,对于稍微复杂一点的密码,都不容易被破解;而且对一些稍微有点难度的MD5密码值,如果数据库中有,在线网站是要求付费的,例如用一个复杂一点的MD5值进行破解,如图1-74所示,提示找到,但是要求进行付费。

图1-74 要求付费才能查看MD5密码值

1.10.5 使用字典暴力破解MD5密码值

(1)再次生成MD5密码值

再在cmd5网站生成原密码为“jimmychu246”的MD5密码值为:

MD5(jimmychu246,32) = 437f4fffb6b2e5aaca9fd1712b8ad282
MD5(jimmychu246,16) = b6b2e5aaca9fd171

直接运行MD5Crack4,运行界面如图1-75所示。

图1-75 MD5Crack4程序主界面

(2)在MD5Crack4中验证MD5值

将需要破解的MD5值(437f4fffb6b2e5aaca9fd1712b8ad282)粘贴到“破解单个密文(Single Cryptograph)”输入框中,如图1-76所示,如果该MD5值是正确的,则会在“破解单个密文”输入框下方显示黑色的“有效(valid)”两个字,否则显示“valid”为灰色。

图1-76 在MD5Crack4中验证MD5值

(3)使用字典进行破解

在“字符设置(Plaintext Setting)”中选择“字典(Dictionary)”,并在“N0.1”、“N0.2”以及“N0.3”中选择三个不同的字典,选择完毕后,单击“Start”按钮开始MD5破解,破解结束后会给出相应的提示,如图1-77所示,在本案例中使用字典破解成功,在Result中显示破解的密码为“jimmychu246”。

图1-77 使用字典进行破解

(4)“使用字符集(Char Muster)”中的数字进行破解

将上面生成的数字MD5值“336a8eb3ebc1e42e”放入单一MD5密码破解输入框中,选中“Char Muster”后,依次可以选择“Number”、“lowercase”、“majuscule”、“special char”以及“custom”进行破解,在本例中使用数字进行破解,因此“最小长度(Min Length)”中设置为“1”,“最大长度(Max Length)”中设置为“8”,然后单击“开始”按钮,使用数字进行MD5破解,尝试破解密码位数从1~9999999之间的所有数字组合,如图1-78所示,其密码值破解成功,破解结果为“336a8eb3ebc1e42e ---> [19801230]”。

图1-78 使用数字进行破解

说明

(1)在MD5Crack4中还可以定义数字、大小字母、特殊字符的组合来进行破解。

(2)如果计算机配置比较好,可以设置更多线程。

(3)如果自定义进行破解,建议先选择使用数字,然后依次是数字、大小字母、特殊字符的组合。破解时先易后难,否则破解时间太长。

(4)在MD5Crack4还可以“使用插件”进行破解。

(5)在MD5Crack4中还可以设置软件显示的语言版本,一共有中文简体和英语两个版本,单击主界面中的设置(Option),即可进行设置,如图1-79所示。

图1-79 设置md5crack4

1.10.6 一次破解多个密码

将需要破解的MD5密码全部存放到一个txt文件中,每一个密码独立一行,然后在MD5Crack4中单击“破解多个密文”,选择刚才编辑的MD5密码文件,如图1-80所示,选择一种破解方式,在本案例中选择使用数字字典进行破解,最后单击“开始”按钮开始破解。

图1-80 破解多个MD5密码值

在MD5Crack4右下方会显示破解结果,单击“日志”可以查看MD5值校验等日志信息,单击“结果”可以查看破解的结果,如图1-81所示,在结果中会将MD5值与原始密码进行一一对应。

图1-81 破解结果

MD5加解密是网络攻防中必须掌握的知识,本文介绍了使用MD5Cracker以及通过网站来对MD5值进行破解,对MD5破解,可以先在一些MD5破解网站进行破解,如果未能破解,则可以在本地通过MD5Cracker进行破解。

1.10.7 MD5变异加密方法破解

网站采用MD5变异加密,即password=md5(jiami(str)),jiami(str)定义如下:

<%
function jiami(str)
mima="*#$A.J>?;&%*&$C#%!@#JH+-\)(HNKNDKJNKJDWNY*Y@H&A^BHJHJXNXMAX5454ADD
EFW45485121WDQWD21DD5DWQ15QD1"
for i=1 to len(str)
newstr=newstr&Mid(str,i,1)
if i>len(mima) then
newstr=newstr&Mid(mima,i-len(mima),1)
else
newstr=newstr&Mid(mima,i,1)
end if
next
jiami=newstr
end function
%>

原始密码加密原理为:假如初始密码为123456,通过jiami函数首先对初始密码进行长度判断,获知长度为6,依次取一位,然后插入自定义的加密字符串。经过加密后密码变为为:1#2$3A4.5J6>,然后再对字符串“1#2$3A4.5J6>”进行MD5加密。普通的6位密码通过jiami算法重新加密后,将变为12位密码,通常的MD5暴力破解基本是无解。

了解该加密方式后,可以针对该加密方式撰写一段代码,将密码字典依次间隔插入“*#$A.J>?;&%*&$C#%!@#JH+-\)(HNKNDKJNKJDWNY*Y@H&A^BHJHJXNXMAX5454 ADDEFW45485121WDQWD21DD5DWQ15QD1”字符串,然后进行密码比对,在加密表中找到相同的MD5值即为破解。

除以上方法外,还有两个方法可用于该密码破解。第一个方法即在该服务器网络内部或者相邻网络安装cain等工具,嗅探http包,通过捕获原始包有可能获得原始密码。第二个方法即在该网站插入记录用户登录密码、用户名的代码,将每次用户登录的用户名和密码添加到指定的文件,通过查看文件即可获得或者登录密码。