3.4 MD5加密与解密

本节介绍如何使用MD5Crack 3及一些在线网站进行破解。MD5Crack 3是阿呆编写的一款MD5密码破解软件,其网站为http://www.adintr.com/subject/mdcrk/index.htm,目前已经发布了MD5Crack 4.0。读者也可以访问笔者的博客(http://simeon.blog. 51cto.com/18680/144558)下载MD5Crack 3。

3.4.1 MD5加解密知识

MD5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要辅助工具。

MD5解密主要用于网络攻击,在对网站等进行入侵的过程中,有可能获得管理员或者其他用户的账号和密码值(MD5加密后的值)。获得的密码值有两种情况:一种是明文;另一种是对明文进行了加密。如果密码值是加密的,就需要对密码值进行判断;如果采取了MD5加密,则可以通过MD5Crack3等软件进行破解。由于王小云教授的MD5密码碰撞破解算法没有公布,因此目前MD5解密方式主要采取暴力破解,即软件通过算法生成字典,然后使用MD5函数加密该字典中的值形成密文,与需要破解的密文进行比较,如果相同,则认为破解成功。目前,有很多网站提供MD5加密或者加密值查询,将加密后的MD5值输入网站,如果网站数据库中存在该MD5值,则该值对应的MD5加密前的值就是密码。

3.4.2 通过cmd5网站生成MD5密码

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

MD5(goodman88,32) = d5a8e0b115259023faa219f5b53ca522 
MD5(goodman88,16) = 15259023faa219f5 
0142-1

图3-30 MD5加密

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

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

3.4.3 通过cmd5网站破解MD5密码

在cmd5网站的输入框中输入加密后的32位MD5值“d5a8e0b115259023faa219f5b53ca522”,然后单击“md5加密或解密”按钮,如图3-31所示,未能成功破解。

0143-1

图3-31 通过cmd5网站未能破解MD5密码

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

0143-2

图3-32 破解简单的数字密码

3.4.4 通过在线MD5破解网站付费破解高难度的MD5密码

一些在线网站提供的MD5密码破解功能只能破解已经收录的和一些简单的密码,稍微复杂一点的密码都很难破解。而且,对一些稍微有点难度的MD5密码值,如果数据库中存在该值,在线网站会要求访问者付费破解,如图3-33所示,提示找到但是要求付费。

0143-3

图3-33 要求付费才能查看MD5密码值

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

字典暴力破解是目前最常用的MD5密码值破解方法,下面详细介绍其步骤。

01 再次生成MD5密码值

在cmd5网站生成原密码“jimmychu246 ”的MD5密码值,结果如下。

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

直接运行MD5Crack 4,界面如图3-34所示。

0144-1

图3-34 MD5Crack4程序主界面

02 在MD5Crack 4中验证MD5值

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

0144-2

图3-35 在MD5Crack4中验证

03 使用字典进行破解

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

0145-1

图3-36 使用字典进行破解

04 使用字符集中的数字进行破解

将上面生成的MD5值“336a8eb3ebc1e42e”放入单一MD5密码破解输入框中,单击选中“Char Muster”(使用字符集)单选按钮后,可以勾选“Number”、“lowercase”、“majuscule”、“special char”及“custom”复选框进行破解。

在本例中使用数字进行破解,因此,要将“Min Length”(最小长度)的值设置为1,将“Max Length”(最大长度)的值设置为8,然后单击“Start”按钮,使用数字进行MD5破解,尝试破解密码位数为1~9999999的所有数字组合。如图3-37所示,密码破解成功,结果为“336a8eb3ebc1e42e ---> [19801230]”。

0145-2

图3-37 使用数字进行破解

说明

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

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

(3)如果进行自定义破解,建议先选择数字字典,然后依次选择数字、大小写字母、特殊字符的组合字典。破解时应先易后难,否则会造成破解时间过长的问题。

(4)在MD5Crack 4中,可以使用插件进行破解。

(5)在MD5Crack 4中,可以设置软件显示的语言版本,有中文简体和英语两个版本,单击主界面中的“Options”(设置)按钮即可进行设置,如图3-38所示。

0146-1

图3-38 设置MD5Crack 4

3.4.6 一次破解多个密码

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

0146-2

图3-39 破解多个MD5密码值

在MD5Crack 4右下方会显示破解结果,单击“日志”标签页可以查看MD5值校验等日志信息,单击“结果”标签页可以查看破解的结果。如图3-40所示,在列出的结果中,会将MD5值与原始密码一一对应。

0147-1

图3-40 破解结果

本节介绍了使用MD5Crack及通过网站对MD5值进行破解的方法。破解MD5值时,可以先在一些MD5破解网站进行破解,如果未能破解,则可以在本地用MD5Crack进行破解。

3.4.7 MD5变异加密的破解

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

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

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

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

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