淺談Word docx文件格式

唐任威 Vincent Tang

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:資訊安全

 

 

Docx是微軟Office Word自2007年開始的新一代文件格式,又被稱為OOXML (Office Open XML) Document。

與傳統二進制doc檔最大的不同,其文件格式是以資料夾結構加上XML文件為基礎,再以ZIP壓縮成單一檔案。一般使用的docx檔案是不含巨集的Word檔。若檔案中需包含巨集則需儲存為docm檔案格式。

Docx檔案本身是ZIP壓縮檔,直接檢視其內容時會看到檔案特徵為「50 4B 03 04」,此為ZIP壓縮檔的檔案特徵(File Signature),參見圖 1。

圖 1:ZIP 壓縮檔案特徵



Docx的檔案結構與標準的ZIP壓縮檔所去不遠,其檔案結構可參見圖 2。

圖 2:Docx 文件檔案結構



檔案內容參見圖 3。

圖 3:壓縮檔內之檔案名稱



其中中央目錄的部分主要是儲存壓縮檔內之檔案清單,並做為索引個別檔案之用,參見圖 4。

圖 4:中央目錄中的檔案清單



將docx檔案以ZIP解壓縮軟體解壓縮後,其資料夾結構如圖 5。

圖 5:Docx 檔案資料夾結構



原則上Word檔的資料都位於word資料夾。文字的部分都儲存在document.xml,參見圖 6。

圖 6:document.xml中的Word檔內容



Word檔案中的圖片則置於media資料夾,參見圖 7。

圖 7:位於 media 資料夾中的 Word 檔圖片



而關於Word檔相關的設定都存放在settings.xml檔案。例如人們為了保護文件內容不被編輯,通常會開啟Word檔案保護的唯讀模式,透過密碼保護的方式限制Word檔的編輯,參見圖 8。

圖 8:啟動以密碼保護限制Word檔無法編輯,僅能以唯讀模式開啟



在沒有編輯密碼的情況下,該檔案只能讀取、無法編輯。若試圖編輯該檔案,則Word 會出現提示訊息,告知該檔案無法編輯,參見圖 9。

圖 9:限制編輯的Word檔



將限制編輯的Word檔解壓縮,並查看settings.xml檔案內容,其中會有一段文件保護區段,並包含一組密碼雜湊,參見圖 10。

圖 10:settings.xml中文件保護的區段



若將該區段刪除、儲存並壓縮回Word檔案內,再重新開啟Word檔後可察覺此時檔案已經可以編輯,這是因為唯讀保護密碼已經被移除的緣故,參見圖 11。

圖 11:Word 檔的內容已經可以編輯



倘若解壓縮的是含有巨集的docm檔,相較於一般的Word檔,解開的資料夾中會多出vbaData.xml及vbaProject.bin二個檔案,參見圖 12。

圖 12:解壓縮後的docm檔



其中vbaProject.bin是Word檔內巨集的二進制檔,參見圖 13。

圖 13:二進制格式的巨集 vba 檔



該二進制格式的巨集vba檔對於分析惡意Word文件並無直接幫助,倘若想直接檢視惡意Word檔中的巨集原始碼,通常還是直接使用例如officeparser或oletools等套件。或者不在意樣本外傳,也可以使用線上工具如Office VBA code extractor或 InQuest DFI。



officeparser : https://github.com/unixfreak0037/officeparser

oletools : https://github.com/decalage2/oletools

Office VBA code extractor : https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php

InQuest DFI : https://labs.inquest.net/dfi


您可在下列課程中了解更多技巧喔!