惡意代碼常規(guī)分析流程

本文介紹惡意代碼常規(guī)分析流程。(待更)
菜鳥一枚征椒,可能寫的不好或存在錯(cuò)誤娇哆,歡迎指正。

首先勃救,惡意代碼的生命周期分為三個(gè)——植入前碍讨、植入中、植入后

攻擊途徑

攻擊途徑有很多蒙秒,大致有:

1.網(wǎng)頁(yè)漏洞方式——0day
2.郵件方式——附件勃黍、社工釣魚等
3.聊天工具
4.U盤交叉使用等等

形式

常見為exe、dll

分析

前:

1.建立虛擬環(huán)境(安全)

2.靜態(tài)分析

  • 指通過反病毒引擎掃描識(shí)別已知的惡意代碼家族和變種名
  • 逆向分析惡意代碼模塊構(gòu)成晕讲,內(nèi)部數(shù)據(jù)結(jié)構(gòu)覆获,關(guān)鍵控制流程等,理解惡意代碼的機(jī)理瓢省,并提取特征碼用于檢測(cè)弄息。
  • 常用工具包括PEview、PEID 勤婚、IDA(加殼的能脫殼就脫摹量,利用工具能得到結(jié)論的是沒加殼的惡意代碼)

中:

3.脫不了就動(dòng)態(tài)分析

  • 指通過在受控環(huán)境中執(zhí)行目標(biāo)代碼,以獲取目標(biāo)代碼的行為及運(yùn)行結(jié)果蛔六。

目標(biāo):

  • 為網(wǎng)絡(luò)入侵事件的響應(yīng)提供所需信息
  • 確定到底發(fā)生了什么
  • 確保定位出所有受感染的主機(jī)和文件
  • 確定惡意代碼可以做什么
  • 分析出主機(jī)特征和網(wǎng)絡(luò)特征,以便檢測(cè)

例如:動(dòng)態(tài)分析a.exe废亭。

假如釋放新的c.dll或c.exe国章,再對(duì)釋放的代碼進(jìn)行靜態(tài)動(dòng)態(tài)分析(目標(biāo)惡意代碼是下載器之類的)

惡意代碼是否自啟動(dòng)——資源配置(文件釋放,修改注冊(cè)表豆村、注冊(cè)服務(wù)等等)——網(wǎng)絡(luò)行為(連接web服務(wù)器下載東西等等)

把a(bǔ).exe運(yùn)行起來(lái)液兽,要針對(duì)a.exe中PID 2503(注入到explorer.exe中)的進(jìn)程行為進(jìn)行分析監(jiān)控,對(duì)進(jìn)程行為分析processmonitor(進(jìn)程行為掌动、注冊(cè)表四啰、文件、API調(diào)用(IAP hook)粗恢、端口(專門列舉端口的應(yīng)用程序)等等)

針對(duì)c.exe——如果注冊(cè)成服務(wù)柑晒,以內(nèi)核態(tài)運(yùn)行——到內(nèi)核層用hook(API調(diào)用)

后:

持久控制(可靠控制)、隱蔽控制

完成
(1)自啟動(dòng):修改注冊(cè)表眷射、注冊(cè)服務(wù)——sys(內(nèi)核中做hook)
(2)資源配置:文件釋放
(3)網(wǎng)絡(luò)行為:連接web服務(wù)器匙赞,下載

實(shí)例

本次分析的為樣本下載鏈接:

一佛掖、首先建立安全的虛擬環(huán)境,這里使用win10虛擬機(jī)進(jìn)行樣本分析涌庭。

二芥被、1.拿到樣本首先進(jìn)行靜態(tài)分析,用PEid分析樣本坐榆,觀察其是否為加殼的惡意代碼拴魄。如下圖:


圖1

觀察到其并沒有加殼,病毒本身是利用C#進(jìn)行編寫席镀。入口點(diǎn)為0003008E匹中。

2.接下來(lái)我們進(jìn)一步查看擴(kuò)展信息,如下圖:


圖2

可見其的確是未經(jīng)過加殼的病毒愉昆。

三职员、然后我們利用PEview查看這個(gè)PE文件頭信息以及各分節(jié)信息,如下圖:


圖3.png

1.先解釋一下各部分的信息:

  • DOS_HEADER:DOS頭
  • MS-DOS Stub Program:DOS環(huán)境下執(zhí)行的指令跛溉,輸出該程序不能再dos下運(yùn)行的提示焊切。
  • NT_HEADERS:PE文件頭,其包含了標(biāo)準(zhǔn)與擴(kuò)展PE頭
  • NT_HEADERS下屬的4個(gè)表(.text等):各節(jié)(section)的摘要信息芳室,又稱節(jié)表专肪。
  • SECTION .text:存儲(chǔ)程序中的代碼節(jié)
  • SECTION .rdata:存儲(chǔ)程序中引用的所有外部符號(hào)的數(shù)據(jù)節(jié),該節(jié)包含導(dǎo)入的DLL名稱表堪侯,其中的函數(shù)相對(duì)虛擬地址表嚎尤,如果是DLL,則還有導(dǎo)出表
  • SECTION .data:存儲(chǔ)程序中用到的所有全局變量伍宦,符號(hào)常量芽死,字符串等數(shù)據(jù)的節(jié),這些數(shù)據(jù)通常是由程序員自定義的次洼,并且沒有引用外部文件的內(nèi)容关贵。
  • SECTION .rsrc:存儲(chǔ)程序中用到的所有資源,例如圖標(biāo)卖毁,窗口菜單揖曾,按鈕等的節(jié),該節(jié)通常只存在于圖形界面的程序中亥啦。
  • SECTION .reloc:就是重定位區(qū)段炭剪,可執(zhí)行文件的基址重定位。

2.首先分析IMAGE_FILE_HEADER字段翔脱,如下圖:


圖4

可以看出該字段的值為014C(對(duì)應(yīng)符號(hào)常量為IMAGE_FILE_MACHINE_I386) ,

所有編譯為可以在Intel 80386以及后續(xù)兼容處理器平臺(tái)上運(yùn)行的PE文件,應(yīng)該都具有相同的值奴拦。

  • IMAGE_FILE_EXECUTABLE_IMAGE表示這是一個(gè)可執(zhí)行文件
  • IMAGE_FILE_32BIT_MACHINE表示這是一個(gè)在32位機(jī)器上運(yùn)行的程序

3.然后是IMAGE_OPTIONAL_HEADER字段,如下圖:


圖5

由Subsystem可以看出這是一個(gè)具有windows圖形化界面的惡意代碼

  • IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE可知允許在載入的時(shí)候進(jìn)行重定位

  • IMAGE_DLLCHARACTERISTICS_NX_COMPAT届吁,表示程序采用了/NXCOMPAT編譯

  • IMAGE_DLLCHARACTERISTICS_NO_SEH表示不使用結(jié)構(gòu)化異常處理

  • IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE表示支持終端服務(wù)器

4..text代碼段分析粱坤,如下圖:


圖6
  • Size of Raw Data指向的是代碼起始處
  • IMAGE_SCN_MEM_EXECUTE表示該節(jié)加載到內(nèi)存后的所有頁(yè)面可執(zhí)行
  • IMAGE_SCN_MEM_READ表示該節(jié)加載到內(nèi)存后的所有頁(yè)面可讀

5.接下來(lái)是.data字節(jié)隶糕,存儲(chǔ)程序中用到的所有全局變量,符號(hào)常量站玄,如下圖


圖7

6.在SECTION .sdata字段中我們看到value中有Auto clicker typer的字樣枚驻,推測(cè)這是一個(gè)自動(dòng)點(diǎn)擊記錄器。如下圖


圖8

四株旷、使用Dependency Walker掃描32位或64位Windows模塊(exe再登,dll,ocx晾剖,sys等)锉矢,如下圖:


圖9

1.首先可以看到該程序調(diào)用MSCOREE.DLL,mscoree.dll是.NET Framework相關(guān)組件齿尽。在KERNEL32.DLL中我們可以看到導(dǎo)出函數(shù)中有如RegDeleteKey字樣的函數(shù)沽损,說(shuō)明該可執(zhí)行文件會(huì)刪除注冊(cè)表鍵和注冊(cè)表鍵值,如下圖:


圖10

2.在NTDLL.DLL中還發(fā)現(xiàn)了RtlIpv4AddressToString字眼的函數(shù)循头,很可能和網(wǎng)絡(luò)服務(wù)有關(guān)绵估,如下圖:


圖11

3.同時(shí),看到了UnmapViewOfFile函數(shù)卡骂,該函數(shù)可以對(duì)修改后的文件保存国裳,如下圖:


圖12

五、接下來(lái)用IDA進(jìn)行反編譯全跨,但卻出現(xiàn)如下圖界面:

圖13. 界面
圖14

發(fā)現(xiàn)IDA無(wú)法反編譯用C#編寫的.NET程序建峭,因此這里嘗試使用其他工具酥诽,上網(wǎng)搜索后,決定使用dotPeek

1.利用dotPeek進(jìn)行反編譯后脾歇,結(jié)果如下圖:

need-to-insert-img

2.我們可以看到這個(gè)惡意代碼調(diào)用了哪些庫(kù)音半,如下圖:

need-to-insert-img

3.可以看到在這個(gè)惡意代碼中有4個(gè)Form松捉,應(yīng)該對(duì)應(yīng)4個(gè)界面河质,如下圖:

need-to-insert-img

4.在Form1中往下看店煞,可以看到許多引人注目的API,如下圖:

need-to-insert-img

need-to-insert-img

這些函數(shù)的功能再明顯不過了诵原,如KeyPress()應(yīng)該是鍵盤記錄的作用英妓,MouseDown()應(yīng)該是記錄鼠標(biāo)點(diǎn)擊的動(dòng)作挽放,MouseWheel()應(yīng)該是記錄鼠標(biāo)滾輪的操作等等绍赛。

5.然后我們來(lái)看看Button1,如下圖:

need-to-insert-img

可見點(diǎn)擊button1后辑畦,應(yīng)該是讓其他按鈕無(wú)效DisableAll()吗蚌,如下圖。然后安裝鉤子InstallHooks()

need-to-insert-img

在進(jìn)入InstallHooks()這個(gè)函數(shù)后纯出,可以看到其實(shí)現(xiàn)了對(duì)用戶鼠標(biāo)行為的監(jiān)控蚯妇,比如獲取鼠標(biāo)button的flag敷燎,如下圖:

need-to-insert-img

獲取用戶點(diǎn)擊鼠標(biāo)的次數(shù),如下圖:

need-to-insert-img

創(chuàng)建鼠標(biāo)事件箩言,如下圖:

need-to-insert-img

其中的X硬贯、Y用來(lái)記錄鼠標(biāo)的位置,通過POINTAPI來(lái)實(shí)現(xiàn)陨收,如下圖:

need-to-insert-img

接下來(lái)就是很明顯的鍵盤記錄行為饭豹,通過GetKeyboardState()函數(shù)來(lái)獲取鍵盤狀態(tài),然后轉(zhuǎn)換成ASCII碼务漩。如下圖:

need-to-insert-img

6.Button2的按鈕的功能應(yīng)該是和Button1的功能相呼應(yīng)拄衰,重新激活各個(gè)按鈕,移除鉤子饵骨,如下圖:

need-to-insert-img

7.注意到Button5有保存文件翘悉,且有寫文件的功能。先是通過ShowDialog()顯示目錄居触,然后寫文件妖混。因此可能這個(gè)按鈕會(huì)觸發(fā)釋放文件。如下圖:

need-to-insert-img

8.Button7饼煞、Button9等應(yīng)該就是觸發(fā)其他Form的功能源葫。如下圖:

need-to-insert-img

9.我們來(lái)到Form2看一下幾個(gè)button的功能,絕大部分是與Form1相關(guān)砖瞧,例如打開目錄等等息堂,如下圖:

need-to-insert-img

10.再來(lái)看看Form3,F(xiàn)orm3中有許多ComboBox块促,也有包括創(chuàng)建注冊(cè)表鍵(名為AutoClickerTyper)荣堰,如下圖:

need-to-insert-img

11.Form4中看到設(shè)置了注冊(cè)表項(xiàng)中的開機(jī)自啟項(xiàng),因此推測(cè)可以有開機(jī)自啟的功能竭翠,如下圖:

need-to-insert-img

12.在Keyboard中振坚,我們可以看到列舉了Keys的各個(gè)枚舉值常量,如下圖:

need-to-insert-img

13.在Win32中我們同樣可以看到剛剛的關(guān)鍵性函數(shù)GetKeyboardState()斋扰,如下圖:

need-to-insert-img

動(dòng)態(tài)分析

  1. 準(zhǔn)備好軟件工具包和惡意代碼樣本渡八,放到Windows10虛擬機(jī)

need-to-insert-img

  1. 對(duì)改虛擬機(jī)拍攝快照,建立安全的運(yùn)行環(huán)境传货,以便虛擬機(jī)出現(xiàn)問題時(shí)快速恢復(fù)屎鳍。

need-to-insert-img

  1. 運(yùn)行process monitor,界面如圖问裕,可以對(duì)Windows下的高級(jí)監(jiān)視工具逮壁,提供監(jiān)控注冊(cè)表、文件系統(tǒng)粮宛、網(wǎng)絡(luò)窥淆、線程卖宠、進(jìn)程和線程行為。

· 結(jié)合了文件監(jiān)視器FileMon和注冊(cè)表監(jiān)視器RegMon的功能忧饭。

· 監(jiān)控所有能捕獲的系統(tǒng)調(diào)用-> 容易耗盡內(nèi)存

· 通常不用于記錄網(wǎng)絡(luò)行為

need-to-insert-img

  1. 可以只針對(duì)惡意代碼或特定的系統(tǒng)調(diào)用設(shè)置過濾扛伍。如圖我們指定對(duì)測(cè)試的惡意代碼進(jìn)行測(cè)試。

need-to-insert-img

  1. 運(yùn)行該惡意代碼词裤,因?yàn)槭?exe文件蜒秤,直接雙擊運(yùn)行即可。界面如下:

need-to-insert-img

點(diǎn)擊record亚斋,發(fā)現(xiàn)我的鍵盤輸入以及鼠標(biāo)的點(diǎn)擊都被顯示出來(lái)作媚,鍵盤是以ASCII碼形式記錄,鼠標(biāo)點(diǎn)擊的方式等都被記錄帅刊。

need-to-insert-img

點(diǎn)擊stop停止運(yùn)行

need-to-insert-img

點(diǎn)擊option有開機(jī)自啟動(dòng)等選項(xiàng)

need-to-insert-img

點(diǎn)擊play可以對(duì)整個(gè)被記錄的過程進(jìn)行復(fù)現(xiàn)纸泡。

點(diǎn)擊clear清除現(xiàn)有記錄。

need-to-insert-img

save list 可以將現(xiàn)有的鍵盤記錄存儲(chǔ)在電腦上赖瞒,如圖:

need-to-insert-img

open list 可以打開現(xiàn)有的鍵盤記錄女揭,如圖:

need-to-insert-img

點(diǎn)擊auto list 可以打開如下界面進(jìn)行誠(chéng)摯keys

need-to-insert-img

hot key 用于設(shè)置快捷鍵,如圖:

need-to-insert-img

change delay 可以設(shè)置延遲時(shí)間栏饮,如下圖:

need-to-insert-img

  1. 過濾之后可以看到該惡意代碼的進(jìn)程行為吧兔。

need-to-insert-img

  1. 首先查看注冊(cè)表。通過檢查注冊(cè)表變化袍嬉,發(fā)現(xiàn)惡意程序?qū)ψ?cè)表的操作境蔼。

need-to-insert-img

need-to-insert-img

后來(lái)查資料發(fā)現(xiàn).pf文件是預(yù)讀文件,可以加快程序的加載速度。

need-to-insert-img

發(fā)現(xiàn)很多修改注冊(cè)表的行為

新建刪選條件如下:

need-to-insert-img

need-to-insert-img

wininet.dll是Windows應(yīng)用程序網(wǎng)絡(luò)相關(guān)模塊伺通,與網(wǎng)絡(luò)的連接有關(guān)箍土。

WSOCK32.dll和WS2_32.dll,是用來(lái)創(chuàng)建套接字的dll庫(kù)罐监,顯然吴藻,如果這個(gè)程序所介紹的功能中不應(yīng)該有網(wǎng)絡(luò)連接部分,那么在其動(dòng)態(tài)鏈接庫(kù)中還存在這2個(gè)庫(kù)就顯得尤為可疑了

msvcrt.dll是提供C語(yǔ)言運(yùn)行庫(kù)執(zhí)行文件弓柱,提供了printf,malloc,strcpy等C語(yǔ)言庫(kù)函數(shù)的具體運(yùn)行實(shí)現(xiàn)沟堡,并且為使用C/C++(Vc)編譯的程序提供了初始化(如獲取命令行參數(shù))以及退出等功能。

need-to-insert-img

上圖為writefile函數(shù)的情況

通過這些函數(shù)我們可以猜測(cè)惡意代碼進(jìn)行了修改注冊(cè)表矢空、修改內(nèi)存信息航罗、建立網(wǎng)絡(luò)連接等行為。

need-to-insert-img

進(jìn)程瀏覽器(****Process Explore****)

主要功能

· 列出所有活躍的進(jìn)程妇多、被進(jìn)程載入的DLL伤哺、各種進(jìn)程屬性和整體系統(tǒng)信息燕侠。

· 殺死一個(gè)進(jìn)程者祖、退出用戶登錄立莉、啟動(dòng)或激活進(jìn)程。

need-to-insert-img

嘗試查看我們的惡意代碼七问,如下圖

need-to-insert-img

發(fā)現(xiàn)他的詳細(xì)信息被隱藏了

Regshot

運(yùn)行惡意代碼前 打開Regshot進(jìn)行1st shot并保存其快照

如圖所示:

need-to-insert-img

另存為:

need-to-insert-img

need-to-insert-img

接下來(lái)運(yùn)行惡意代碼蜓耻,運(yùn)行一段時(shí)間后進(jìn)行第二個(gè)拍照,對(duì)比兩次注冊(cè)表信息的變化情況械巡。如下圖:

need-to-insert-img

比較前后注冊(cè)表的不同刹淌,對(duì)比結(jié)果用記事本打開

need-to-insert-img

對(duì)比結(jié)果如下:

need-to-insert-img

結(jié)論:

Auto Clicker Typer的主要功能為擊鍵記錄和鼠標(biāo)操作記錄,同時(shí)包含有復(fù)現(xiàn)記錄下的操作讥耗,保存記錄文件等功能有勾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市古程,隨后出現(xiàn)的幾起案子蔼卡,更是在濱河造成了極大的恐慌,老刑警劉巖挣磨,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雇逞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茁裙,警方通過查閱死者的電腦和手機(jī)塘砸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晤锥,“玉大人掉蔬,你說(shuō)我怎么就攤上這事》” “怎么了眉踱?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)霜威。 經(jīng)常有香客問我谈喳,道長(zhǎng),這世上最難降的妖魔是什么戈泼? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任婿禽,我火速辦了婚禮,結(jié)果婚禮上大猛,老公的妹妹穿的比我還像新娘扭倾。我一直安慰自己,他們只是感情好挽绩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布膛壹。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪模聋。 梳的紋絲不亂的頭發(fā)上肩民,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音链方,去河邊找鬼持痰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祟蚀,可吹牛的內(nèi)容都是我干的工窍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼前酿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼患雏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起罢维,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纵苛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后言津,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攻人,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年悬槽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怀吻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡初婆,死狀恐怖蓬坡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磅叛,我是刑警寧澤屑咳,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站弊琴,受9級(jí)特大地震影響兆龙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敲董,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一紫皇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腋寨,春花似錦聪铺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撒桨。三九已至,卻和暖如春键兜,著一層夾襖步出監(jiān)牢的瞬間凤类,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工蝶押, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人火欧。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓棋电,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苇侵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赶盔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容