FavoriteLoading
0

“震網三代”CVE-2017-8464漏洞分析和預警

微軟在2017年6月份的補丁中修補了一個快捷方式(CVE-2107-8464)的漏洞,公告稱此漏洞被國家背景的網絡攻擊所使用來實施攻擊,該漏洞也被稱為震網三代,近日Metasploit上發布了該漏洞的PoC。[ 本文系HanSight瀚思原創稿件,如需轉載請注明出處!]
微軟在2017年6月份的補丁中修補了一個快捷方式(CVE-2107-8464)的漏洞,公告稱此漏洞被國家背景的網絡攻擊所使用來實施攻擊,該漏洞也被稱為“震網三代”,近日Metasploit上發布了該漏洞的PoC。
該漏洞的原理同2010年美國和以色列入侵并破壞伊朗核設施的震網行動中所使用的穿透核設施隔離網絡的漏洞(CVE-2010-2568)非常類似,「它可以很容易的被黑客利用來攻擊基礎設施、存放關鍵資料的核心隔離系統等」。
「當存在漏洞的電腦被插上保存有漏洞文件的U盤時,不需要額外操作,漏洞攻擊程序就可以執行并完全控制用戶的電腦系統」。

漏洞PoC演示:

PoC的LNK文件格式如下圖:

LNK文件格式如下圖
一般包含有Link文件頭、LinkTargetIDList、LinkInfo、StringData和ExtraData。

PoC中涉及到的重要字段,后文會一一解釋。
想要觸發這個漏洞,LNK文件必須要有LinkTargetIDList和ExtraData兩個Block。PoC文件格式圖中第二行的數字81,代表的是LNK文件頭的LinkFlags字段,81的含義是本LNK文件包含有LinkTargetIDList,并且字符串使用的是Unicode編碼。在LinkTargetIDList之后緊跟著的就是ExtraData,本漏洞中使用的是SpecialFolderDataBlock。
LinkTargetIDList格式如下圖
本PoC中包含有3個item,其中item 2含有觸發漏洞后自動執行的惡意DLL文件路徑:

PoC中IDListSize是0x8E,它有3個item,第一個item大小是0×14,第二個item大小也是0×14,第三個item大小是0×64。
LinkTargetIDList中包含的Item格式如下:

ExtraData格式如下圖
本漏洞使用的是SpecialFolderDataBlock:

了解完文件格式后,漏洞原理不是很復雜:在解析完LinkTargetIDList后,會解析SpecialFolderDataBlock,解析SpecialFolderDataBlock過程中(CShellLink::_DecodeSpecialFolder)會根據其中的偏移(0×28)去找到前面的item 2,并將其中的DLLload進內存從而執行其中的DllMain。由于這個解析過程是在explorer.exe中實現的,所以對應的load進內存的惡意DLL也具有同樣的高權限(一般是High)。
下圖是PoC漏洞觸發時的調用棧,以及漏洞執行之后會load惡意DLL進內存:

補丁對比:

微軟在補丁中,通過調用_IsRegisteredCPLApplet函數對DLL路徑進行校驗,失敗就不會再調用CPL_LoadCPLModule函數。
HanSight 解決方案
HanSight Enterprise通過主機日志關聯分析,總結震網漏洞的共性,包括U盤插拔行為和主機進程行為等,可以偵測此類問題,并產生告警:

防護策略建議
1. 使用HanSight Enterprise監控主機行為,及時對警告排查處理。
2. 更新Windows操作系統補丁
https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2017-8464
參考資料
1. Metasploit
2. Shell Link (.LNK) 文件格式:

點我下載查看

【聲明】:8090安全小組門戶(http://www.jvwkvg.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。