Foxmail漏洞分析
先假设你在Foxmail中有且仅有一个账户:abcde,它的E-mail地址是abcde@163.net,这个信箱的密码是12345。
用记事本打开accounts.cfg文件,一开始是一些乱七八糟的内容,再往下你会看到如下所示内容:
MailAddress=abcde@163.net //这是邮件地址
………………………………
POP3Account=abcde
POP3Host=pop.163.net //POP3服务器地址
POP3Password=BB6DFB5DF061 //邮箱密码加密后显示的密文
POP3Port=110 //POP3服务器端口
PrintFont=宋体,9
ReplyAddr=
ReplyFormat=1
SameWithPop=1
SMTPHost=smtp.163.net //SMTP服务器地址
SMTPPort=25 //SMTP服务器端口
……
在计算Foxmail邮箱密码明文之前,请你先记住一个单词:~draGon~(注意要区分大小写),它是Foxmail邮箱密码的加密密钥。记住后我们开始行动:
第一步:下载一个十六进制文件编辑器UltraEdit,这是一套极棒的文字、Hex、ASCII码编辑器,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。其并且附有HTML Tag颜色显示、搜寻替换以及无限制的还原功能;一般大家常会用其来修改EXE或DLL文件。大家可以在这里下载到它:http://software.wx88.net/down/cuedit1010b.exe。安装完毕,运行UltraEdit,在它的文件编辑状态下输入“~draGon~”这个单词(没有引号),然后单击“Edit”(编辑)菜单下的“Hex Edit”(16进制编辑),可以查到这个词的16进制编码(图3),为:7E 64 72 61 47 6F 6E 7E,分别记为a1,a2,a3,a4,a5,a6,a7,a8,我将它们称之为Ai。
第二步:再记住一个恒定的值:5A(其实也是由上面的a1~a8计算而来,具体方法就不多说了),记为C0,这个C0我们在下面会用到。
第三步:取邮箱密码加密后的密文,在本例中为:BB6DFB5DF061,将它们两两分开,得到:BB,6D,FB,5D,F0,61,分别记为b1,b2,b3,b4,b5,b6。由于此加密密文的总长度为12,所以我们可以判断邮箱真正地密码长度为12÷2-1=5,即邮箱密码为5位。
第四步:计算Ci的值(Ci为一系列数的总和,即C1,C2,C3,C4,C5……)。其中,C1由C0(即16进制的0x5A)和第一位密文(即b1,也就是我们这个例子中的BB)经异或运算得来。由于C0=0X5A,所以C1=C0^0XF9=0xE1,其中“^”代表异或运算。大家可以使用Windows自带的计算器来进行计算,点击“开始→程序→附件→计算器”即可打开计算器(图4),计算器中的“XOR”就代表异或运算。由此得到:
C1为0xE1
C2由b2直接继承得到,为0x6D
C3由b3直接继承得到,为0xFB
C4由b4直接继承得到,为0x5D
C5由b5直接继承得到,为0xF0
这样,我们就得到了至关重要的参数Ci。
第五步:下面请大家用从第二位起的密文(即b2)和密钥对应的ASCII码(即Ai)作异或运算,由于我们已经知道密码为5位,所以用a1~a5分别与b2~b6进行异或运算,得到Di(即D1~D5这5位数)。在我们这个例子中,可以得到:
D1=b2^a1=6D^7E=13
D2=b3^a2=FB^64=9F
D3=b4^a3=5D^72=2F
D4=b5^a4=F0^61=91
D5=b6^a5=61^47=26
如果密文很长(Foxmail最多允许18位密码),该怎么办呢?还是用上面所说的方法。只是在计算Di时要循环利用Ai的值。举个例子,假设密文两两分开后有10位这么多(即B1~B10),则计算D8时用B9与A8异或,计算D9则用B10与A1异或。明白了吗?即密文长度大于密钥长度,则循环利用密钥进行计算。
第六步:这是最后一步,求解出账户密码明文。用Di-Ci得到Ei,其中Ei就是密文解码后的明文。注意,如果Di小于Ci,则要用Di+0xFF(0xFF为16进制的FF,即十进制的255),然后再减去Ci即可。好了,赶快打开计算器,然后可以得到:
E1=D1-C1=31,转为十进制为1
E2=D2-C2=32,转为十进制为2
E3=D3-C3=33,转为十进制为3
E4=D4-C4=34,转为十进制为4
E5=D5-C5=35,转为十进制为5
将上面的结果串联起来,就是12345,而这正是我们当初设定的邮箱口令!怎么样?Foxmail的密文不安全吧!
上面的过程说起来麻烦,而且好像不容易理解,将上述Ai、Bi、Ci、Di列个表(图5),然后再按上面说的自己动手试试就很容易搞清楚了!与我们事先设定的完全一样!从此可以推断~draGon~就是Foxmail的密钥!仔细想想,从Foxmail的原作者“张小龙”的名字不难推断到这个结论,因为“龙”字的英文单词为“dragon”。那么我是如何发现“~draGon~”这个单词呢?用UltraEdit打开Foxmail的主程序Foxmail.exe,点击“搜索→查找”(或直接按Alt+F3),输入dragon,在UltraEdit中搜索到的第一个词就是“~draGon~”!
注意,上文中提到的Ai、Bi、Ci、Di和Ei都是十六进制数值,大家一定要搞清楚,不要弄混了。对了,得到了Ei之后,不要忘记按位分别转化为十进制,这才是真正的邮箱密码!另外,即便是同一个邮箱,在更改了密码并保存之后,下一次再改回原来的密码,你在accounts.cfg文件中看到的邮箱密码密文也会不一样,但用本方法计算下来之后结果不会变,也就是说你仍能用本方法得到你的密码。
防范方法
上面介绍了Foxmail密码的破解,方法非常的简单,所以在大家共用一台电脑的场所,建议不要将自己的邮箱密码保存下来,如果已经保存下来,可以采用下面的解决方法:在新建账户时不要选择保存密码,如果已经选择了,可以右击账户,在弹出菜单中选择“属性”,会出现“账户属性”窗口,选择“邮件服务器”,然后,将“密码”栏中的密码清除即可。这样,当你再打开account.stg文件时,会发现“POP3Password=”后面是空空如也,这样就不怕别人发现你的密码了。同时,建议Foxmail的开发商能改变加密算法,使得软件能更安全。
最后提醒大家不要用本文所涉及的内容干破坏,这不是笔者的初衷,切记:己所不欲,勿施于人!
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |