MS WORD加密及破解原理分析
加密的WORD文檔遭遇“秒破”,密碼形同虛設,這在多年前是一件神奇而不可思議的事情,其真相和原理如何?如今高版本的WORD文件是否同樣的不堪一擊?這里對MS WORD加密及破解原理進行詳細分析,以科學嚴謹的態度,全面深入探究WORD加密原理以及“秒破”真相!
一、調研對象
1、調研對象
(1)針對Microsoft Office Word簡體中文版;
(2)針對Word文檔的打開密碼;
(3)除個別語言版本外,調研結論理論上均適用;
2、術語說明
(1)密碼:用戶為Word文檔設置的打開密碼;
(2)密鑰:加密算法所使用的Key,本文檔所指的RC4 密鑰由用戶輸入的密碼經過特定的變換得到;
(3)字典破解:逐一使用指定字典中的密碼進行破解;
(4)暴力破解:窮舉所有可能的密碼進行破解,在本文檔中字典破解亦視為暴力破解;
(5)查表破解:枚舉指定長度下所有可能的密鑰,對特定的明文進行加密,保存所有的密文-密鑰對構成一個表,直接在該表中查找密文即可得到可能的密鑰;
3、Word密碼破解方式對比
二、調研結論
1 、沒有直接或間接證據,證明 Word 存在 “ 保存用戶密碼 ” 等明顯后門;
2 、使用 Office Password Recovery Toolbox ( 推測 基于查表技術)等工具,可以快速得到 Word 2003 / 2007 / 2010 生成的受保護的 doc 文件的加密密鑰,通過解密恢復出對應的明文文件;
3 、使用基于暴力猜解的破解工具,如破解成功,可以得到用戶設置的原始密碼;
4 、快速破解工具原理猜測:利用 doc 文檔加密強度低( RC4 加密算法、 40 位長度的密鑰)的脆弱點,通過在密文 - 密鑰對表中查找密文得到加密密鑰,不涉及用戶設置的原始密碼;
5 、從存儲和算力兩個方面證明了查表破解的可行性;
三、破解工具調研
1、可快速移除打開密碼的情況
2、Word 2007 / 2010快速破解場景說明
(1)將已經設置打開密碼保護的docx文檔另存為97-2003格式的doc文檔,會提示“是否要通過轉換為Office Open XML格式來提高安全性?”;
(2)將新建的Word文檔保存為97-2003格式的doc文檔,對doc文檔設置密碼保護,也會給出同樣的提示;
(3)如果選擇“是”,則會彈出另存為對話框,默認格式為docx;
(4)如果選擇“否”,則直接保存,對應的doc文檔可以被Office Password RecoveryToolbox / Word Password Recovery Master等工具所快速破解;
3、現有破解工具及其適用范圍
Passware Password Recovery Kit上傳的數據經過加密處理,根據WORD文檔大小的不同上傳不同大小的數據,實驗測試發現: 20KB 的文檔上傳了 15KB 的加密數據, 100KB 的文檔上傳了 30KB 的加密數據。
四、破解原理分析
1、Word加密原理簡介
密鑰生成:隨機生成16字節的Salt數據,連同用戶輸入的密碼字符串,經過特定的變換后,得到40位長度(5字節)的RC4密鑰;
2、Word加密相關字段
(1) Salt : 隨機生成的16字節數據,結合用戶輸入的密碼經過特定變換后生成RC4密鑰;
(2) FreshNumber : 隨機生成的16字節數據;
(3) FreshNumberMD5 : FreshNumber經過變換后,對其計算得到的MD5哈希值(16字節數據);
當文檔被加密時,各字段的存儲方式
(1)Salt字段明文存儲;
(2)FreshNumber字段經過RC4 單獨加密 后存儲;
(3)FreshNumberMD5字段經過RC4 單獨加密 后存儲;
說明: 對RC4加密算法而言,同樣的明文位于不同的位置,加密后的密文是不一樣的。
3、打開受保護的Word文檔時,如何驗證密碼是否正確?
(1)將用戶輸入的密碼和Salt經過變換后計算得到RC4密鑰;
(2)解密得到FreshNumber明文,計算出FreshNumber的MD5哈希值;
(3)解密得到FreshNumberMD5明文,如果與計算出來的MD5相同,則認為密碼正確,否則認為密碼錯誤;
4、密碼驗證過程
5、針對Office Password Recovery Toolbox工具進行了原理分析,推測其使用“查表”技術聯網破解;
工具特點為:
(1)脫機無法使用,需要聯網;
(2)客戶端向服務器發送用于破解的數據;
(3)服務器返回解密所需的密鑰,客戶端執行解密操作;
(4)破解速度極快,但無法得到用戶設置的原始密碼;
6、Office Password Recovery Toolbox原理推測
(1)枚舉所有的40位長度(個數為240)的RC4密鑰,對DOC文檔特定數據塊進行加密,并提取其中特定位置的5字節密文(該5字節數據明文均為0×00);
(2)服務器端存儲的表項保存了所有的密文-密鑰對;
(3)客戶端從受保護的DOC文件讀取特定位置的5字節密文,向服務器查詢后得到對應的RC4密鑰;
(4)客戶端接收服務器返回的RC4密鑰對DOC文件進行解密;
上傳數據分析 :協議版本、程序名稱等無關數據;
Engine_data數據分析:
用于驗證密鑰是否正確 : Salt明文占用16字節;FreshNumber密文占用16字節;FreshNumberMD5密文占用16字節;
用于在表中查找密鑰:特定位置的密文占用5字節
作用暫不明確:GUID以及sevdo_num_old字段占用68字節;
返回數據分析: result=2,表示處理的結果類型;key為解密需要的密鑰(5字節);
7、密鑰沖突處理
(1)給定密文,查表得到的RC4密鑰可能不止一個;
(2)實際測試時在224空間內找到123對碰撞(兩個不同的Key對同一段明文進行加密,特定位置上的密文是一樣的);
(3)使用Salt / FreshNumber /FreshNumberMD5驗證密鑰的正確性;
8、特定位置的5字節密文數據選取
(1)5個字節位于WordDocument數據塊中,為其中的FibRgFcLcb97結構體成員;
(2)這5個結構體成員類型均為unsigned int,表示相對于Table數據塊的偏移值;
(3)3字節最大可表示0x00FFFFFF,Table數據塊不存儲Word正文,3字節足夠表示大小,所以對4字節而言最高字節為0×00;
五、破解成本分析
1、成本估算
(1) 時間估算 :采用Intel Core i7-3770 3.4GHz處理器(四核八線程)全負荷計算,需要100小時;
(2) 空間估算 :密碼一共有240=1T個,存儲5字節(40位)RC4密鑰、5字節密文數據,需要10TB存儲空間;
(3) 實驗結論 :完全可行
2、DOC格式正被逐漸取代
(1)查表破解僅對Word 2003/2007/2010保存的doc文件有效;
(2)Word 2007開始默認新建文檔格式為docx;
(3)無法破解最新版本的Word 2013保存的doc文件;
3、價值估算
(1)當前這些收費軟件仍然存在,說明有一定的市場;
(2) 未來使用doc加密文件破解服務的用戶數量肯定會越來越少 。
DOC文檔的加解密原理,多年前已有詳細技術分析,本文在前輩們研究的基礎上,進行了歸納總結和進一步的分析驗證。本文最初的目的是內部學習交流,現在分享出來,供有興趣的同學研究。
在此,ArkTeam向以下參考文章的作者們表示感謝和敬意!
參考資料:
【1】 復合文檔文件格式研究,
http://club.excelhome.net/thread-227502-1-1.html
【2】 doc文件word格式,
http://blog.chinaunix.net/uid-21323988-id-1827840.html
【3】 Office文件的奧秘——.NET平臺下不借助Office實現Word、Powerpoint等文件的解析,
http://www.cnblogs.com/mayswind/archive/2013/03/17/2962205.html
【4】 微軟OFFice復合文檔,
http://blog.csdn.net/zhulinfeiba/article/details/5870408
【5】 規劃 Office 2013 的加密技術和加密設置(MS官方文檔),
http://technet.microsoft.com/zh-cn/library/cc179125.aspx
【6】 OpenOffice.org’sDocumentation of the Microsoft Compound Document File Format,
http://www.openoffice.org/sc/compdocfileformat.pdf
【7】 RC4流密碼與微軟Office文檔安全分析,
http://www.ecice06.com/CN/article/downloadArticleFile.do?attachType=PDF&id=11111
【8】 MSWord加密算法弱點利用
來自: http://www.tuicool.com//articles/bMNnaqm