<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/papers/7317

            原文地址:http://h30499.www3.hp.com/t5/HP-Security-Research-Blog/Adobe-s-CVE-2015-5090-Updating-the-Updater-to-become-the-bossman/ba-p/6765412

            0x01 前言


            2015年7月,Adobe修補了多個漏洞,其中CVE-2015-5090格外顯眼,值得深究。但是,Adobe對于這些漏洞只是根據威脅程度進行了排名,并沒有給出詳情。事實上,攻擊者可以利用這個bug以系統權限用來執行代碼,即攻擊者能夠完全接管目標機器。因為這個漏洞影響的是Adobe的更新服務,也就是說,該漏洞同時存在于Adobe Reader和Acrobat Pro軟件中。這兩個程序都會安裝ARMSvc服務(更新程序),并且都把 AdobeARM.exe/AdobeARMHelper.exe存放在c:\progra~1\common~1\Adobe\ARM\1.0目錄下面。

            我們這里的漏洞利用方法是針對acrobat.exe的,不過,稍作修改也是可以用于Reader的。下面的視頻,為大家演示了這個漏洞的利用過程。

            0x02 Bug信息


            ARMSvc.exe支持多個由IDA中的HandlerProc函數定義的用戶控件:

            enter image description here

            圖1 Handler函數

            UserControls的內部代碼:

            enter image description here

            圖2 控件

            對于該漏洞利用來說,我們主要感興趣的地方在于:

            170——創建一段共享內存。

            179——執行ELEVATE,而ELEVATE又會使用共享內存中的參數來執行AdobeARMHelper.exe。

            用戶控件170的問題在于它創建了一個帶有弱權限的共享內存段。 由于任何用戶都能讀寫該共享內存段,這就意味著,攻擊者能夠控制傳遞給AdobeARMHelper.exe程序的參數。

            通過觀察AdobeARMHelper.exe,我們發現了例程sub_42A260,這個例程可用來尋找給定目錄下面的第一個文件。之后,它會檢查該文件是否帶有Adobe的簽名,如果是的話,sub_42A260就會把這個文件復制到AdobeARM.exe程序所在的目錄下面。

            enter image description here

            圖3 簽名校驗

            如果簽名校驗失敗,該例程將退出:

            enter image description here

            圖4 簽名校驗失敗

            如果通過了簽名校驗,該例程就會拷貝該文件:

            enter image description here

            圖5 簽名校驗成功

            該函數沒有考慮到以下幾點:

            1. 沒有對存放被復制的文件的目錄路徑進行檢查。這樣,攻擊者就能提供自己的路徑,即把這個文件復制到攻擊者指定的路徑下面。
            2. 找到第一個文件的時候,沒有檢查文件名。
            3. 第一個文件被發現時,沒有檢查文件的擴展名。

            函數DOES會進行下列檢查:

            1. 在指定文件夾下面找到的第一個文件是否帶有Adobe的簽名。利用方法:

            我們能夠做什么:

            1. 控制SM傳遞給AdobeARMHelper/AdobeARM的參數。
            2. 在需要的時候以系統權限來執行AdobeARM.exe。
            3. 利用任何具有Adobe 簽名的文件來覆蓋AdobeARM.exe。

            我們需要做什么:

            1. 讓無Adobe簽名的代碼也能執行。

            策略:

            為了利用這個bug,我們可以用具有Adobe簽名的代碼來覆蓋AdobeARM.exe,并通過這些代碼做一些有趣的事情。

            例如,arh.exe是Adobe AIR的安裝包裝器。理論上,我們可以用arh.exe覆蓋AdobeARM.exe,這是完全允許的,因為它也有Adobe的簽名。之后,我們就可以通過arh.exe安裝任意的AIR應用程序了。這個策略唯一的問題在于,arh.exe不允許向其傳遞參數,所以,我們無法直接通過SM向其傳遞參數。

            最好的策略是,利用某個可以向其傳遞額外參數的、帶有簽名的二進制代碼來覆蓋AdobeARM.exe。利用方法:

            如果我們仔細考察Acrobat Pro就會注意到,它含有一個名為AcrobatLauncher.exe的二進制程序,該程序允許通過指定的PDF文件來啟動Acrobat.exe。AcrobatLauncher.exe是個好東西,因為它只會忽略額外的參數,并且既不支聲,也不會退出。 具體的命令行參數為 AcrobatLauncher.exe -open PDF_FILE。

            0x03 攻擊鏈


            1. 觸發SM。
            2. 給SM寫參數。
            3. 觸發用戶控件ELEVATE,把AcrobatLauncher.exe(作為AdobeARM.exe)復制到c:\progra~1\common~1\Adobe\ARM\1.0\AdobeARM.exe。這基本上把更新程序覆蓋掉了。
            4. 運行新的adobearm.exe,它將通過我們的PDF漏洞利用代碼來執行acrobat.exe程序。這一步是由ELEVATE控件自動完成的。
            5. PDF漏洞利用代碼會把32.dll轉儲到c:\progra~1\common~1\Adobe\ARM\1.0目錄下。這是通過我們的一種JavaScript旁路技術完成的。
            6. 清除臨時文件夾,這樣再次調用ELEVATE時,adobearmhelper.exe就不會從臨時文件夾中復制到任何東西了。
            7. 重寫SM,這樣,它就會執行我們的新AdobeARM.exe,而不會做任何的修改了。
            8. 再次執行ELEVATE,這樣就會只用“-open”一個選項來執行AdobeARM.exe,以加載secur32.dll,并以SYSTEM身份彈出計算器。

            從中可以看出,CVE-2015-5090為攻擊者提供了一種非常可靠的方法使其可以系統權限運行代碼。所以,如果你正在使用Adobe Reader 或Acrobat Pro的話,務必給這個漏洞打上補丁。此外,如果你想了解第5步中的JavaScript旁路技術的更多詳情的話,請關注我們即將到來的Defcon演講。我們拉斯維加斯見!

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线