-
-
[原创]Word Password Recovery Master 2.0.0.4 程序分析
-
发表于:
2007-8-30 12:47
16284
-
[原创]Word Password Recovery Master 2.0.0.4 程序分析
主题:Word Password Recovery Master 2.0.0.4 (在线恢复word加密文档) 程序分析
作者:lzype
时间:2007-8-30
下载地址:e23K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4u0A6P5r3I4W2M7W2)9J5k6h3y4G2L8g2)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0r3N6%4m8S2M7%4u0W2j5#2)9J5k6i4A6A6M7l9`.`.
本程序可用于解密word 97/2000/xp/2003采用默认加密方式加密的文档(40bit有效密钥)
脱壳:
ASProtect 2.1x SKE -> Alexey Solodovnikov
Version: ASProtect 1.35 build 01.26 Release [Extract]
使用Aspr2.XX_IATfixer_v2.2s.osc脚本脱壳,用ImportREC进行修复
详细脱壳方法请搜索本论坛或网页
冰系列脱壳 参考:31eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2S2j5$3D9#2z5q4)9J5k6h3y4G2L8g2)9J5c8W2y4G2k6Y4c8Q4x3V1k6Z5N6r3#2D9i4K6u0r3x3e0u0Q4x3V1j5&6y4q4)9J5c8U0t1H3x3o6N6Q4x3V1j5J5x3o6l9%4x3o6t1H3y4K6V1$3z5e0k6Q4x3X3g2Z5N6r3@1`.
本主题相关内容:
cf9K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0T1M7K6q4Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Z5L8%4N6@1K9s2u0W2j5h3c8Q4x3X3g2H3K9s2m8Q4x3@1k6@1i4K6y4p5x3U0j5$3x3K6g2Q4x3U0k6Z5K9h3N6Z5L8r3W2Y4K9s2c8Q4x3@1c8i4L8%4u0V1i4K6u0n7f1r3q4K6M7%4N6G2M7X3c8Q4x3V1u0d9k6h3y4G2N6X3g2J5P5g2)9J5b7V1#2S2M7%4c8W2M7R3`.`.
e4cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0T1M7K6q4Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Z5L8%4N6@1K9s2u0W2j5h3c8Q4x3X3g2H3K9s2m8Q4x3@1k6@1i4K6y4p5x3U0j5^5z5e0y4Q4x3U0k6Z5K9h3N6Z5L8r3W2Y4K9s2c8Q4x3@1c8i4L8%4u0V1i4K6u0n7f1r3q4K6M7%4N6G2M7X3c8Q4x3V1u0d9k6h3y4G2N6X3g2J5P5g2)9J5b7V1#2S2M7%4c8W2M7R3`.`.
未注册版本只能恢复前200个字符,并在后面添加“To view full document, please register”
用抓包工具IRIS 4.07.1发现数据传输中与文档相关的内容为:
发送 engine_data 242个字符 应是121字节16进制数
接收 key 20 个字符 应是10字节16进制数,用于解密
初步观察解密过程有以下4步:
1.从服务器搜索解密密钥
2.直接复制文档为"1 (Demo).doc"(设原文档为1.doc)
3.解密"1 (Demo).doc"
4.若未注册用word打开"1 (Demo).doc"删除位置200处以后的内容,然后保存为明文档
用OllyICE载入WPasRec.exe,f9运行,选择要解密的文档1.doc
用断点设置工具下断点:CopyFileA,然后在WPasRec中点"Remove"
程序停在:
7C830053 8BFF mov edi, edi
按ctrl+f9返回到:
0041B03B |. 6A 00 |push 0 ; /FailIfExists = FALSE
0041B03D |. 50 |push eax ; |NewFileName
0041B03E |. 51 |push ecx ; |ExistingFileName
0041B03F |. FF15 70B24500 |call dword ptr [<&kernel32.CopyFileA>; \CopyFileA
0041B045 |. 85C0 |test eax, eax ; 返回到这里
此时文件被复制为"1 (Demo).doc",与原文档相同
一直按f8单步运行,并在每次call后观察"1 (Demo).doc"的变化
直到0041B143处:
0041B143 |. FF10 call dword ptr [eax] ; Word_Pas.0040C4B0
文档被修改,可用word打开,但密码变了,说明文档被程序用一个已知的密码重新加密
再按f8,直到0041B143处:
0041B26F |. 68 B8F54600 push 0046F5B8 ; ASCII "Z!gjVy>#XelYjT"
发现可疑字符,用这14个字符居然可以打开"1 (Demo).doc",内容与原文档一样,惊喜!!!
暂时分析到此。。。
小结:
1.在0041B143处的call后暂停,可用0041B26F处的字符"Z!gjVy>#XelYjT"打开"1 (Demo).doc",另存为明文档即可,突破200字符限制。
2.0041B143处的call重新加密文档,此过程需要进一步分析
3.与服务器传输的数据engine_data和key与文档和原密钥之间的关系需要进一步分析
附:
Word加密过程: 97,2000,XP,2003
(1)将最多15字节的口令->Unicode->md5
(2)取前5字节+16字节随机数a1=21字节,反复16次得336字节->md5
(3)取前5字节(s[5])+4字节计数器(初始0)共9字节->md5后作为RC4的密钥对文档进行加密.每加密512字节计数器+1后重复(3),即第6字节顺序变化
(4)另取随机数a2->md5得b,a2和b用RC4的第一次密钥加密后的32字节AB存放文档特定位置:i=(*((int *)(data+0x240))+0x200);i-=i%512
从i处开始每512字节找01 00 01 00,其后的48字节就是a1和AB
说明:
(1)0x200处标志码 \xEC\xA5\xC1\x00
(2)0x20B字节低位为1表示加密
由此提出破解方法1:穷尽5字节s,(4)中的AB可用于验证,只要知道这5字节即可解密文档。(直接穷尽约需10天!
)
改进方法2:建立数据库直接查表
由方法2提出2个问题:
1.必须找到一段固定的5字节或全0处,由这5字节得到RC4的乱数才能查表。
2.数据库如何建立。
希望有兴趣的共同研究!(QQ:64646157 Email:64646157@qq.com)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课