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

            作者:360分析團隊

            主編:白名單分析組

            0x00 概述


            自從王小云破解MD5算法后,國內外對MD5碰撞的相關研究與惡意利用從未停止。MD5算法的應用領域很多,就軟件安全方面來說,陸續發現了一批利用MD5碰撞對抗安全軟件的惡意樣本。這些樣本中,大部分采用早期的一種較為成熟的快速MD5碰撞利用方式,然而有一部分比較特殊,因其采用了新型的碰撞方式。

            這種新型的碰撞樣本在2014年初開始出現,當時還處于測試階段,所以只有少數樣本在傳播。直到2015年初,新型碰撞樣本大規模爆發,經過分析和追蹤,可以確定采用新型碰撞手法的大批量樣本是由同一團伙制做,后續稱為碰撞作者。2015年9月,對抗升級,碰撞作者開始結合數字簽名利用技術與安全軟件對抗。2015年11月,碰撞作者進行新的嘗試,利用雙簽名對抗查殺。下圖是該碰撞作者近兩年對抗手法的演化的過程:

            p1 圖1-1 碰撞作者近兩年的攻擊演化過程

            根據上面的演化過程,本文將圍繞碰撞作者各階段的利用手法展開詳細的分析。首先,介紹新型MD5碰撞的特點,通過與早期版本的對比來認識新型碰撞手法的“先進性”。接著,進一步介紹新型MD5碰撞與數字簽名結合的高級利用手法,以及碰撞作者放棄碰撞方法而采用雙簽名進行對抗的新嘗試。然后,通過一例樣本的行為分析介紹碰撞作者的典型攻擊流程。最后,對碰撞作者的惡意軟件傳播和影響進行統計與信息挖掘。

            0x01 新型碰撞特點


            早期的碰撞樣本,主要采用“前綴構造法”,以同一個給定的前綴程序A為基礎,在尾部添加不同的附加數據,得到兩個具有相同MD5的樣本B和C,如下圖所示:

            p2 圖2-1 早期MD5碰撞的利用手法

            前綴構造法碰撞后的兩個樣本只有尾部少量字節不同,而程序代碼是相同的。通過判斷尾部數據的差異,兩個樣本可以執行不同的程序流程。由于這種碰撞手法是通過同一前綴程序碰撞生成的兩個樣本,如果其中有惡意代碼流程則兩個樣本均包含惡意代碼,所以比較容易被安全軟件識別,隱蔽性較差。

            而采用新型的MD5碰撞手法,得到兩個MD5校驗值相同的樣本,一個是惡意程序,另一個則是正常程序,它們在功能和代碼上完全不同。由兩個不同的前綴程序A和B分別在尾部添加附加數據,構造出具有相同MD5的程序C和D,如下圖所示:

            p3 圖2-2 新型MD5碰撞的利用手法

            這一階段,碰撞作者主要是通過正常程序與惡意程序兩種不同程序碰撞相同的MD5來對抗安全軟件。比如這樣一組樣本,正常程序是一個dll程序,惡意程序則是一個加了vmp強殼的流氓日歷exe程序:

            p4 圖2-3 一組新型碰撞樣本的靜態特征

            而這兩款毫不相關的程序MD5值校驗卻神奇的一致:

            p5 圖2-4 一組新型碰撞樣本的MD5計算結果

            通過圖2-3和圖2-4,證實了兩種不同格式的程序,其文件MD5是可以相同的。然而這種現象并非偶然,而是碰撞作者能夠大批量制造的真實案例。為了深究其技術手法,仔細比較一下這兩個文件的數據如下:

            6 圖2-5 一組新型碰撞樣本的文件數據比較

            從圖中可以看出,兩個文件絕大部分數據不同,但尾部數據高度相似,而且文件大小一致,這種構造方式是基于“選擇前綴碰撞法”(Chosen-prefix collsion【1】)實現的,其原理圖大致如下:

            p7 圖2-6 “選擇前綴碰撞法”原理

            通過選擇不同的前綴,計算生日數和碰撞塊添加到文件尾部,即可得到兩個具有相同的MD5的文件。不過,要計算出這些尾部數據并不容易,直接使用hashclash【2】的工具需要相當大的時間成本,但是碰撞作者對該工具進行改進后已經能夠高效完成大量正常程序與惡意程序的碰撞了,以下為此階段樣本的典型樣例(每組正常程序與惡意程序對照),由于碰撞的原理與文件格式無關,所以樣本形態呈現了多樣化的特點。

            p8 圖2-7 此階段碰撞樣本的典型樣例

            其中,碰撞的樣本對中,惡意程序主要為桌面軟件的組件【3】,而正常程序則是任意的軟件。由于每組樣本都對應同一個MD5指紋,碰撞作者便借此來對抗安全軟件對其惡意程序的查殺。

            0x02 簽名利用

            數字簽名具有校驗程序是否被非法篡改的功能,針對簽名的攻擊形式多樣,比如Flame病毒曾利用哈希碰撞偽造微軟的數字證書【4】。一般情況下在帶簽名的程序后面任意添加數據,簽名會顯示無效。在前一階段被使用的前綴程序都沒有數字簽名,但九月初,我們捕獲到了MD5碰撞樣本的新版本,碰撞作者巧妙的使碰撞后的樣本延用了前綴程序的有效簽名。

            p9 圖3-1 加入簽名利用的MD5碰撞手法

            這階段碰撞樣本的顯著特點是,前綴程序中的正常程序大部分是帶有簽名的msi程序,在其尾部添加了碰撞數據后簽名卻還是有效的,這主要是利用了msi程序的特性——對任意帶簽名的msi程序,在其尾部可以任意添加修改附加數據而不影響簽名的有效性,如下圖所示。于是,MD5碰撞多了數字簽名這個保護傘,大大提高了與安全軟件的對抗強度。

            p10 圖3-2 MD5碰撞對中的帶簽名msi程序添加附加數據后簽名仍有效

            以下是被利用的msi程序的部分簽名列表:

            Adobe Systems, Incorporated
            Amazon Services LLC
            Apple Inc.
            IObit Information Technology
            March Hare Software Ltd
            Microsoft Corporation
            Mozilla Corporation
            Realtek Semiconductor Corp
            TAOBAO (CHINA) SOFTWARE CO.,LTD.
            Tencent Technology(Shenzhen) Company Limited
            

            圖3-3 部分被利用的msi程序的簽名列表

            比較特別的是,在此階段后期發現了一對特殊的碰撞樣本,分別是具有有效微軟簽名的msi程序和騰訊簽名的exe程序(如下圖)。可見,除了帶簽名的msi程序外,該碰撞作者也實現了對帶簽名PE程序的碰撞。

            p11 圖3-4 兩個程序都帶數字簽名的碰撞樣本

            對比一下碰撞后的騰訊exe文件和原始程序:

            p12 圖3-5 帶簽名PE程序碰撞后的文件與原始文件的對比

            可以看出,碰撞作者對PE文件結構的Security數據目錄進行了修改,說明其改變了簽名信息的大小,擴充了尾部簽名串的數據長度,并且修改了對應的簽名數據以保證簽名的有效性,從而達到和msi程序的簽名“漏洞”一樣的效果。

            0x03 雙簽名驗證


            2015年11月初,發現了碰撞作者的新動向,他給一個程序構造兩種不同的數字簽名。如圖,這個惡意樣本在未打補丁的win7系統只看到一個無效的簽名,而在更新過補丁【5】的win7系統中卻顯示了兩個不同的數字簽名,第一個簽名仍是無效簽名,而第二個則是正常的簽名。

            p13 圖4-1 雙簽名樣本在不同的系統環境中的簽名顯示

            碰撞作者這是有意識的利用雙簽名對抗安全軟件的簽名驗證,因為那些在舊系統中運行正常的簽名驗證程序,在升級到支持雙簽名后的系統中可能會爆發出嚴重的驗證邏輯漏洞。 為了說明這個手法,用兩個小工具【6】,分別在舊系統和支持雙簽名的系統中進行簽名校驗。

            p14 圖4-2 在未打補丁的win7系統中對雙簽名樣本進行校驗

            上圖是在未打補丁的win7系統中對樣本進行簽名校驗的結果,第一步驗證簽名有效性時就出錯,即使第二步獲取的簽名串真實存在,簽名驗證的結果也是失敗。而如果是在更新了補丁的Win7系統下使用同一套工具對同一個樣本進行簽名校驗:

            p15 圖4-3 在更新過補丁的win7系統中對雙簽名樣本進行校驗

            如圖,第一步驗證簽名完整性時顯示簽名正常,第二步獲取簽名信息的時候只獲取了第一個簽名串的信息,從而這個原本無效的偽造簽名可能會被認為是有效的。之所以這樣是因為,舊系統中不支持雙簽名,編寫簽名驗證程序時一般就默認一個程序只有一個數字簽名。

            同樣,如果安全軟件在系統升級后沒有考慮到雙簽名驗證的情況,很有可能按照類似“正常”的邏輯判定這個惡意樣本偽造的簽名有效。可見,碰撞作者是想鉆雙簽名驗證這個空子來繞過簽名驗證。

            0x04 典型攻擊流程分析


            下面以2015年12月的樣本為例分析惡意程序的攻擊流程。

            首先查看樣本的數字簽名,發現具有一個偽造的無效簽名,但是當程序運行觸發惡意行為之后,簽名的狀態卻神奇般地變成有效的:

            p16 圖5-1 安裝樣本運行前后數字簽名的狀態對比

            為了找出這種現象的原因,具體分析該樣本的代碼。此樣本是經過NSIS打包的安裝程序,解包得到腳本和其他資源文件。分析安裝腳本,該惡意程序首先對運行環境進行檢測:

            p17 圖5-2 安裝腳本對運行環境進行檢測

            通過系統調用遍歷進程,檢測的部分進程列表如下圖所示,其中大部分是網吧或分析調試的系統環境,猜測是為了控制樣本傳播的范圍:

            p18 圖5-3 安裝程序檢測的部分進程列表

            然后程序會判斷自身的文件名是否為“s*.exe”,并且檢測啟動該程序的父進程是否為桌面進程,目的是避免下載該程序的用戶直接點擊運行觸發惡意行為引起注意,而只讓該程序作為被其他程序推廣啟動時才觸發:

            p19 p20 圖5-4 安裝程序判斷程序文件名與父進程

            當文件名判斷不通過時,程序作為桌面日歷安裝包運行,不觸發惡意行為。

            p21 圖5-5 安裝程序不觸發惡意行為的運行界面

            當符合所有觸發條件時,就可以觸發惡意行為:安裝程序會靜默下載碰撞作者服務器上的加密壓縮文件update003.zip,使用特殊密碼解壓后執行其中的gpmc.msi程序,最后又清理了作案現場。惡意行為的主要程序代碼如下圖所示:

            p22 圖5-6 安裝程序的主要惡意代碼

            從update003.zip解密得到的兩個文件gpmc1.msi和gpmc1.cab,gpmc1.msi程序負責解壓gpmc1.cab文件并調用其中的正常編譯工具NMAKE.exe,gpmc1.cab文件解壓如下:

            p23 圖5-7 gpmc1.cab壓縮包內文件列表

            NMAKE.exe被運行后,makefile文件中的命令就會執行,通過這種特殊的方式實現由正常的程序連續調用外部的惡意程序:

            p24 圖5-8 makefile文件的調用命令

            這里關注u.exe這個程序,它其實是微軟官方的根證書列表更新工具updroots:

            p25 圖5-9 數字簽名根證書數據導入工具

            利用該工具導入事先偽造好的一份CA根證書數據文件u,結果會在系統注冊表的根證書路徑添加一個信任項,并導入偽造的CA證書公鑰等相關數據:

            p26 圖5-10 用戶系統被導入的根證書數據路徑

            惡意程序通過這樣的方式在系統種下了一顆種子,這顆種子將導致共用這一個CA認證的偽造簽名被驗證為信任狀態,如果不清除該數據項,被感染的系統將從此對碰撞作者所有具有偽造簽名的程序信任。

            就本例樣本來說,在后面會被調用的日歷主程序DesktopGoodCalendar.exe的簽名也變為有效的:

            p27 圖5-11 主程序的另一個數字簽名前后狀態對比

            DesktopGoodCalendar.exe是個加了強殼的delphi程序,運行之后仍先檢測運行環境,通過臨時目錄下的兩個文件日志判斷安裝程序的文件名和父進程:

            p28 圖5-12 主程序的通過兩個文件內容判斷運行環境

            當惡意條件滿足,先把用戶機器的信息回傳服務器:

            p29 圖5-13 回傳用戶機器的信息

            接著依次從不同的url下載幾張畫面相同的圖片:

            p30 圖5-14 碰撞作者使用的加密圖片

            每次下載一張如上的圖片,都會使用同一個算法解密其中的附加數據,并使用解密數據進行下一步操作,大致的操作過程如下:

            1. 解密“http://www.ci***k.com/images/if.jpg”得到一個進程列表進行分析環境檢測:

              p31 圖5-15 第一張圖片解密后的內容

            2. 解密“http://www.ci***k.com/images/before*.jpg”得到下一張圖片下載地址:

              p32 圖5-16 第二張圖片解密后的內容

            3. 根據上一步得到的下載地址解密其圖片得到一個惡意的PE程序,如下為解密得到PE程序的示意圖,以及分別從兩例地址的圖片解密得到的程序圖標:

              p33 p34 圖5-17 第三張圖片解密后的得到惡意程序2例

            經過上述的下載、解密,最后將得到的PE程序注入一個svchost的傀儡進程中并啟動:

            p35 p36 圖5-18 主程序將惡意程序注入傀儡進程的過程跟蹤

            由此,新的一個惡意程序悄然在系統進程中運行起來,后續的動作也全憑碰撞作者布局控制,可以方便、隱蔽地進行各種流氓活動。歷史上曾從受害用戶現場發現過其會劫持瀏覽器主頁,使之跳轉到帶有商業推廣渠道標識的某導航網站,從而為碰撞作者達到盈利的目的。

            以下為整體攻擊行為的流程圖:

            p37 圖5-19 整體攻擊流程圖

            0x05 傳播及影響


            新型MD5碰撞樣本在2015年初開始大規模傳播,經過統計發現,僅2015年受該類惡意軟件影響的用戶數量就達到5584939個,下圖為在全國各地區受影響的用戶分布,主要集中在人口密集地區,其中廣東省是重災區,傳播量達到60多萬。

            p38 圖6-1 2015年全國各地區受影響的用戶數量分布圖

            從傳播時間來看,該類惡意軟件以5月份傳播量最高,達到130萬左右的量級,如下圖所示。

            p39 圖6-2 2015年各月份受影響用戶量

            通過對該類惡意軟件的種類和來源進一步梳理,發現碰撞作者的主營軟件是以天氣、日歷類軟件的形式,通過各種渠道在網絡中傳播,其業務鏈及主要傳播途徑如下所示:

            p40 圖6-3 碰撞作者的主要業務軟件及傳播途徑

            1. 借助流氓軟件推廣渠道進行傳播。經統計,視頻聊天、下載器、外掛輔助和影音播放器等類型的軟件都推廣過碰撞作者的惡意軟件。它們在推廣時,會主動連接碰撞作者的服務器下載最新的惡意程序到用戶電腦進行安裝,整理2015年碰撞作者使用的主要傳播服務器如下:

              碰撞作者使用的服務器 活躍時間
              www.73***7.com 2015年11月至今
              cdn.jo***e.com 2015年10月至今
              www.y**j.org 2015年9月至今
              update.z***n.net 2015年5月-2015年9月
              www.ci***k.com 2015年8月
              pc.t***cn.net 2015年1月-2015年7月

              圖6-4 碰撞作者2015年使用的主要傳播服務器

            2. 上傳到正規軟件下載站提供給用戶搜索和下載。以下為在某下載站發現的碰撞樣本:

              p41 圖6-5 下載站傳播

            3. 偽裝成熱門資料分享到網盤中誘導用戶主動下載安裝。惡意軟件用炒股技巧、考研英語等誘惑性的文件名打包,如下圖所示:

              p42 圖6-6 網盤分享傳播

            4. 官網和其他渠道傳播。2015年9月份碰撞作者軟件官網截圖如下:

              p43 圖6-7 惡意軟件官網傳播

            通過以上各種傳播渠道,碰撞作者的惡意軟件最終到達用戶電腦潛伏下來,每次用戶電腦啟動也跟著運行,并伺機進行主頁劫持等推廣行為進行盈利,即使一些用戶想要將之完全卸載也很難,給廣大普通用戶造成了無盡的煩惱。網上搜索相關的惡意軟件名稱,會發現很多普通用戶的反饋,如下圖:

            p44 圖6-8 用戶在網上反饋的聲音

            從上述的惡意軟件演化、傳播過程可以看出,碰撞作者費盡心思提高對抗技術、擴展傳播渠道,其目的只有一個:金錢至上。雖然碰撞作者為了自己的私利,不顧廣大群眾的用戶體驗而利用互聯網來污染用戶的電腦,但是好在用戶的身后還有一批與之不懈對抗的安全軟件來保駕護航,以下為360安全衛士對此類碰撞惡意軟件進行攔截查殺的截圖。在這場沒有硝煙的戰爭中,對抗還將繼續,感謝廣大用戶一直以來對360的支持。

            p45 圖6-9 360安全衛士對新型碰撞類惡意軟件的攔截查殺

            0x06 引用鏈接


            1. 早在2007年就由Marc Stevens提出并實現了該方法的MD5碰撞。
            2. 開源的hash碰撞工具,具體可參見project hash clash的開源代碼:https://marc-stevens.nl/p/hashclash/
            3. 下文將介紹到碰撞作者主營軟件為桌面天氣、日歷類軟件,其組件包括安裝包、主程序和動態連接庫等
            4. Freebuf曾對此做過報導,參見 http://www.freebuf.com/news/3482.html
            5. 詳見微軟對多簽名支持的安全公告:https://technet.microsoft.com/zh-cn/library/security/3033929.aspx
            6. 簽名校驗相關的開源代碼編譯的小工具,一個為校驗簽名的有效性,另一個則是提取簽名字符串

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

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

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

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

                      亚洲欧美在线