您好,登錄后才能下訂單哦!
如何實現Flash 0Day漏洞原理及利用代碼的分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Adobe公司在當地時間2018年2月1日發布了一條安全公告:
https://helpx.adobe.com/security/products/flash-player/apsa18-01.html
公告稱一個新的Flash 0Day漏洞(CVE-2018-4878)已經存在野外利用,可針對Windows用戶發起定向攻擊。攻擊者可以誘導用戶打開包含惡意 Flash 代碼文件的 Microsoft Office 文檔、網頁、垃圾電子郵件等。
該漏洞影響 Flash Player 當前最新版本28.0.0.137以及之前的所有版本,而Adobe公司計劃在當地時間2月5日緊急發布更新來修復此漏洞。從Adobe公告致謝來看,這個漏洞的野外攻擊樣本最早是由韓國計算機應急響應小組(KR-CERT)發現的,而KR-CERT也表示,來自朝鮮的黑客組織已經成功利用這個0Day 漏洞發起攻擊。
CVE-2018-4878與2017年10月發現的0Day 漏洞CVE-2017-11292一樣,都位于Flash的com.adobe.tvsdk包中。CVE-2018-4878是一個UAF漏洞,需要借助強制GC或者刷新頁面來觸發該漏洞。
POC關鍵代碼如下:
MyListener是一個繼承自DRMOperationCompleteListener類的對象:
將MyListener對象注冊為MediaPlayer對象的一個通知回調接口,然后釋放MyListener對象,但是在MediaPlayer對象中仍然保存著MyListener對象,當強制系統進行垃圾回收時,MediaPlayer對象的回調會執行,但此時MyListener已經被釋放,從而導致了UAF漏洞。
下圖是POC在IE運行時crash位置:
rcx正是MediaPlayer對象里的DRMManager成員,偏移0x18處存放的正是MyListener對象,可以看到MyListener對象已經被釋放了。
漏洞通過修改Flash腳本對象ByteArray的長度為0xFFFFFFFF,從而實現任意地址讀寫。其后的利用技術與HackingTeam曝光所使用的exploits一致,不再做詳細闡述。
在HackingTeam泄漏事件后,Vector這種能簡單穩定的用于漏洞利用中實現任意地址讀寫的方式迅速傳播開來,Adobe隨后對Flash采取了一系列的安全加固措施,包括堆隔離、對Vector、ByteArray等常見可被利用的對象進行長度校驗、數據區校驗等安全驗證措施,這些措施在一定程度上增加了Flash漏洞攻擊的難度,但并不能完全阻止此類攻擊。在這次的0Day利用中,ByteArray就被用來實現任意地址讀寫。ByteArray的結構包括兩部分,第一部分結構如下,其中一個關鍵成員是m_buffer:
m_buffer中包含了該ByteArray的數據區地址array,數據區的容量,長度等重要值,緊挨著存放的是這幾個值的加密備份,當Flash檢測到可能因漏洞利用程序而導致這兩個值不一致時,就會觸發異常終止執行。該結構如下:
這是利用執行前,ByteArray的對象數據,圖中紅框標識的是m_buffer成員:
觸發漏洞,修改m_buffer的值,使得array地址為0,而容量和長度修改為0xFFFFFFFF:
進而在32位地址空間下實現了任意地址讀寫。
Shellcode運行后獲取自己需要的API地址,遍歷當前環境的進程,主要判斷是否有韓國殺軟AhnLab和ViRobot APT Shield等安全防護類產品。根據不同的環境,Shellcode會選擇不同的執行方案:
注:
AhnLab:asdsvc.exe v3ui.exe v3svc.exe任意一個進程存在;
ViRobot APT Shield:vraptshieldlaunchersvc.exe hagenttray.exe hvrtray.exe任意一個進程存在;
360:zhudongfangyu.exe 360tray.exe qhsafemain.exe任意一個進程存在。
AhnLab,ViRobot APT Shield, 360均不存在,或者只有AhnLab時,執行此方案。以隱藏方式啟動cmd.exe,創建遠程線程,將第二段shellcode注入到cmd.exe中執行。注入到cmd.exe中shellcode執行后也會去獲取所需要的API地址,并且加載”wininet.dll”(為了獲取網絡操作API),通過訪問:
hxxp:// www.1588-2040.co.kr/conf/product.jpg (已失效)獲取第三段shellcode,最后直接跳到獲取到第三段shellcode內存地址繼續執行惡意代碼。
當同時存在AhnLab和360,或者只有360以及只有ViRobot APT Shield時執行此方案。首先創建一個新線程,動態獲取%TEMP%目錄,通過訪問:
hxxp://www.1588-2040.co.kr/conf/product_old.jpg獲取數據,將其寫入到%TEMP%\fontdrvhost.exe,最后啟動%TEMP%\fontdrvhost.exe。
當AhnLab與ViRobot APT Shield并存時,Shellcode會直接退出,不做任何事情。
考慮到CVE-2018-4878漏洞攻擊代碼很可能會被公開,甚至集成到黑客工具包中,騰訊電腦管家已經第一時間實現了該漏洞攻擊樣本的查殺。
此外,Adobe已經于北京時間2月6日發布了該漏洞補丁,企業IT人員或系統管理員可到Adobe官網下載和安裝最新的Flash更新包。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。