<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/16825

            Author:360天眼實驗室

            0x00 引子


            人在做,天在看。

            近期360天眼實驗室捕獲到一例針對印度的定向攻擊樣本,樣本利用了沙蟲漏洞的補丁繞過漏洞CVE-2014-6352,經分析確認后我們認為這是趨勢科技在今年三月份發布的名為“Operation C-Major”APT攻擊活動的新樣本。關于C-Major行動的相關內容,有興趣的讀者可以在文后的參考鏈接中查看。

            本文主要對CVE-2014-6352漏洞做基本的分析并剖析一個現實中利用此漏洞執行定向攻擊的案例。

            0x01 漏洞分析


            樣本利用的漏洞為CVE-2014-6352,該漏洞是CVE-2014-4114的補丁繞過(MS14-060)問題,在管理員模式或者關閉UAC的情況下可以實現不彈出警告窗運行嵌入的惡意程序。與CVE-2014-4114的利用樣本相比,CVE-2014-6352樣本的特點是沒有嵌入inf,只有一個嵌入PE的OLE對象。從攻擊者的角度看,這類樣本可以說有利有弊。在管理員模式下,可以無警告窗執行PE文件,繞開MS14-060的補丁。但是如果不是在管理員模式下,就算受害者沒有安裝MS14-060的補丁,也會彈窗提示是否要執行嵌入的EXE文件。

            我們知道CVE-2014-4114漏洞的成因在于packager.dll的CPackage::Load方法加載對應的OLE復合文檔對象時,對不同類型的復合文檔有不同的處理流程,其中對某些復合文檔嵌入的不可信來源文件沒有經過處理,從而使得攻擊者可以通過偽造OLE復合文檔的CLSID來達到執行特定文件的效果:

            packager!Cpackage:: Load方法中處理不同類型復合文檔的分支

            在MS14-060這個補丁中,微軟通過添加MarkFileUnsafe函數來彌補這個漏洞:

            ms14-060補丁中的packager!Cpackage:: EmbedReadFromStream方法

            未安裝ms14-060的packager!Cpackage:: EmbedReadFromStream方法

            MarkFileUnsafe()通過調用IZoneIdentifier::SetId來設置文件的Security Zone,傳入的參數3對應的是設置URLZONE_INTERNET,從而標明此文件來自于其他計算機,運行時會彈出警告窗口:

            然而漏洞并不僅僅只是未對不可信來源的文件處理,攻擊者還可以通過偽造OLE復合文檔的CLSID和XML中的OLE Verb來改變執行流程。問題還在于對一個exe文件來說,即使被標記了URLZONE_INTERNET之后,右鍵點擊以管理員權限運行時,將不會再彈窗提示該文件來自于其他計算機,而是以UAC的提示窗彈出:

            所以只需要構造特定的CLSID和OLE Verb,使執行流程來到右鍵界面的第二項管理員權限運行EXE程序,那么在關閉UAC或者管理員權限的情況下,就能繞過MS14-060補丁施加的限制。下面我們結合這次從外面捕獲到的樣本來展示一下整個漏洞利用的過程。

            0x02 樣本分析


            首先我們拿到了一個名為vedio.ppsx的PPT文件,MD5為b6a1ee16de885c70682a7a8e4c1b556c ,從VirusTotal的上傳來源看為來自印度。對這個ppsx解壓處理,可以看到其內嵌了一個OLE對象,嵌入的是一個PE文件:

            video.ppsx\ppt\slides\slide1.xml中,指定了嵌入的對象id = rId3

            video.ppsx \ppt\slides\_rels\ slide1.xml.rels中指定了rId3對應的是前面提到的oleObject1.bin

            復合文檔對應的CLSID?如下圖,是{0003000c-0000-0000-c000-000000000046},對應的是CLSID_OldPackage,那么根據上面的分析,CPackage::Load調用CPackage::PackageReadFromStream進一步處理,PackageReadFromStream會通過CPackage::EmbedReadFromStream在臨時目錄釋放嵌入的PE文件。

            packager!CPackage::EmbedReadFromStream中調用了 packager!CopyStreamToFile這個函數,將嵌入的PE釋放到temp目錄下的putty.exe,并通過MarkFileUnsafe設置文件標記:

            然后,通過CPackage::DoVerb方法來響應終端用戶的動作,在 CPackage::DoVerb中,會先對第二個參數進行判斷,這個參數在video.ppsx\ppt\slides\slide1.xml中指定:

            樣本中構造的參數是3,所以進入使用popup菜單命令執行操作的流程:

            調用GetMenuItemInfo時,第二個參數uItem代表菜單的位置,這里參數為1,也就是右鍵菜單的第二項,對于exe文件,右鍵菜單的第二項是“以管理員權限運行”

            最終調用了SHELL32!CDefFolderMenu::InvokeCommand方法,這時就會以試圖管理員權限運行putty.exe,在關閉了UAC或者管理員模式下,就繞過了MS14-060的保護靜默地執行了一個PE文件。

            0x03 所釋放程序的分析


            putty.exe

            ppt文件釋放出來的putty.exe實際上是一個改名后的經過混淆的.NET 程序,MD5為 78fab9978ae4de4f684908f47fdc2333 ,這個程序其實是一個Dropper。

            經過去混淆后,我們可以清楚地看到其程序代碼,首先遍歷是否有殺軟進程:

            樣本在這里其實不是一次遍歷查找,而是分成多次遍歷穿插在功能代碼中,每次查找一到兩款殺軟的進程,查找的殺軟進程如下:

            ekrn.exe(ESET)

            guardxkickoff.exe(IKARUS)

            AvastSvc.exe

            btagent.exe

            bdagent.exe(BitDefender)

            avgui.exe。

            然后從資源中讀取數據,并解密為一個PE文件

            啟動cmd進程,將自身拷貝成%temp%\net\health.exe并添加注冊表啟動項

            HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows - load這個值可以指定在用戶登錄后自動運行的程序文件名。

            然后將RegAsm.exe拷貝為%temp%\svhost.exe

            接著以Suspend方式啟動svhost.exe,將之前解密出來的PE注入,并恢復線程。

            最后在%temp%/net/目錄下寫入health.exe.bat文件并執行

            health.exe.bat的代碼如下,作用是不斷遍歷進程查看svhost.exe是否啟動,沒有啟動的話則將其啟動。

            svhost.exe

            在HKEY_CURRENT_USER中設置一個值di用于判斷是否已經感染過該系統:

            設置HKEY_CURRENT_USER\Environment\SEE_MASK_NOZONECHECKS的值為1,這是用于關閉附件管理器檢查的:

            然后用命令行啟動netsh.exe,添加防火墻規則,允許其通過防火墻

            命令行如下

            #!shell
            netsh firewall add allowedprogram "C:\Users\***\AppData\Local\Temp\svhost.exe" " svhost.exe" ENABLE
            

            申請一片內存空間用于存放接收/發送的數據,開始網絡連接:

            C&C地址: 191.101.23.190

            端口號: 5552

            收集受害者的系統信息,包括上線時間、系統版本、系統位數、磁盤信息、當前用戶等等,并發送出去:

            然后開啟一個線程循環查詢socket是否可讀(接收命令):

            讀取命令后,開啟新線程根據指令執行對應的操作:

            開啟鍵盤記錄線程,并將記錄信息保存在注冊表HKEY_CURRENT_USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707中:

            設置自啟動項:

            接收命令后,對命令做出相應的處理,在switch中根據命令執行對應的功能,這里就不再詳細分析,下面給出部分功能與對應的命令,如下:

            0x04 IOC


            類型
            C&C 191.101.23.190:5552
            Downloader URL http://pcdopune.com/ad/video.ppsx

            0x05 總結


            在網上公開的IOC平臺中發現,該C&C地址與趨勢科技在今年三月份發布的“Operation C-Major”報告中的一個C&C完全一致。另外,樣本下載的域名pcdopune.com關聯到的其他樣本中,也出現了與報告中幾乎一樣的惡意宏樣本,由此我們認為這是與C-Major相關的攻擊行動。

            根據360威脅情報中心的數據,我們發現本文所涉及的樣本僅僅只是C-Major行動中使用的多種Dropper中的一種類型,CVE-2010-3333、CVE-2012-0158等漏洞也被利用來做惡意代碼的植入,不僅如此,甚至還利用了宏和腳本,所使用的PE樣本更是靈活多變。從這些跡象來看C-Major行動背后團伙非常積極地利用所能得到各種植入手段,極有可能是專業的有背景及一定技術能力的組織。

            參考鏈接

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

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

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

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

                      亚洲欧美在线