中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Flash 0Day漏洞原理及利用代碼的分析

發布時間:2021-12-03 19:26:43 來源:億速云 閱讀:183 作者:柒染 欄目:安全技術

如何實現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 0Day漏洞原理及利用代碼的分析    

該漏洞影響 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關鍵代碼如下:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

MyListener是一個繼承自DRMOperationCompleteListener類的對象:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

將MyListener對象注冊為MediaPlayer對象的一個通知回調接口,然后釋放MyListener對象,但是在MediaPlayer對象中仍然保存著MyListener對象,當強制系統進行垃圾回收時,MediaPlayer對象的回調會執行,但此時MyListener已經被釋放,從而導致了UAF漏洞。

下圖是POC在IE運行時crash位置:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

rcx正是MediaPlayer對象里的DRMManager成員,偏移0x18處存放的正是MyListener對象,可以看到MyListener對象已經被釋放了。

如何實現Flash 0Day漏洞原理及利用代碼的分析    

三、漏洞利用分析

漏洞通過修改Flash腳本對象ByteArray的長度為0xFFFFFFFF,從而實現任意地址讀寫。其后的利用技術與HackingTeam曝光所使用的exploits一致,不再做詳細闡述。

在HackingTeam泄漏事件后,Vector這種能簡單穩定的用于漏洞利用中實現任意地址讀寫的方式迅速傳播開來,Adobe隨后對Flash采取了一系列的安全加固措施,包括堆隔離、對Vector、ByteArray等常見可被利用的對象進行長度校驗、數據區校驗等安全驗證措施,這些措施在一定程度上增加了Flash漏洞攻擊的難度,但并不能完全阻止此類攻擊。在這次的0Day利用中,ByteArray就被用來實現任意地址讀寫。ByteArray的結構包括兩部分,第一部分結構如下,其中一個關鍵成員是m_buffer:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

m_buffer中包含了該ByteArray的數據區地址array,數據區的容量,長度等重要值,緊挨著存放的是這幾個值的加密備份,當Flash檢測到可能因漏洞利用程序而導致這兩個值不一致時,就會觸發異常終止執行。該結構如下:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

這是利用執行前,ByteArray的對象數據,圖中紅框標識的是m_buffer成員:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

觸發漏洞,修改m_buffer的值,使得array地址為0,而容量和長度修改為0xFFFFFFFF:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

進而在32位地址空間下實現了任意地址讀寫。

四、ShellCode分析

Shellcode運行后獲取自己需要的API地址,遍歷當前環境的進程,主要判斷是否有韓國殺軟AhnLab和ViRobot APT Shield等安全防護類產品。根據不同的環境,Shellcode會選擇不同的執行方案:

如何實現Flash 0Day漏洞原理及利用代碼的分析    

注:

AhnLab:asdsvc.exe v3ui.exe v3svc.exe任意一個進程存在;

ViRobot APT Shield:vraptshieldlaunchersvc.exe hagenttray.exe hvrtray.exe任意一個進程存在;

360:zhudongfangyu.exe 360tray.exe qhsafemain.exe任意一個進程存在。

方案1:

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內存地址繼續執行惡意代碼。

方案2:

當同時存在AhnLab和360,或者只有360以及只有ViRobot APT Shield時執行此方案。首先創建一個新線程,動態獲取%TEMP%目錄,通過訪問:

hxxp://www.1588-2040.co.kr/conf/product_old.jpg獲取數據,將其寫入到%TEMP%\fontdrvhost.exe,最后啟動%TEMP%\fontdrvhost.exe。

方案3:

當AhnLab與ViRobot APT Shield并存時,Shellcode會直接退出,不做任何事情。

如何實現Flash 0Day漏洞原理及利用代碼的分析    

五、查殺和防御

考慮到CVE-2018-4878漏洞攻擊代碼很可能會被公開,甚至集成到黑客工具包中,騰訊電腦管家已經第一時間實現了該漏洞攻擊樣本的查殺。

如何實現Flash 0Day漏洞原理及利用代碼的分析    

此外,Adobe已經于北京時間2月6日發布了該漏洞補丁,企業IT人員或系統管理員可到Adobe官網下載和安裝最新的Flash更新包。 

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南澳县| 米脂县| 大厂| 蓬溪县| 伊川县| 桓仁| 汕头市| 塔城市| 江永县| 青神县| 怀仁县| 苍溪县| 汝城县| 日土县| 霍城县| 巴林左旗| 泸溪县| 夏邑县| 新化县| 鹿邑县| 麻城市| 莱州市| 商城县| 蒙城县| 民权县| 枣强县| 渭南市| 秭归县| 玉田县| 神木县| 湖南省| 武山县| 韶关市| 女性| 平邑县| 滦南县| 宝丰县| 花莲市| 大庆市| 桂林市| 大新县|