自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

揭開病毒的面紗:惡意代碼自解密技術(shù)

安全
分析病毒的時(shí)候,常常遇到一種很奇怪的現(xiàn)象,使用查殼工具查看一個(gè)樣本明明沒有加殼,但是反編譯或調(diào)試時(shí),卻不能直觀地看到樣本的惡意操作,這是為什么呢?

 分析病毒的時(shí)候,常常遇到一種很奇怪的現(xiàn)象,使用查殼工具查看一個(gè)樣本明明沒有加殼,但是反編譯或調(diào)試時(shí),卻不能直觀地看到樣本的惡意操作,這是為什么呢?很簡單,這是因?yàn)楣粽卟捎昧俗远x的加密方法,在樣本運(yùn)行時(shí)實(shí)現(xiàn)自解密并執(zhí)行真正的惡意操作,所以看到的只是樣本還沒解密的樣子,自然分析不出惡意代碼的邏輯。

下面就通過實(shí)例來窺探下惡意代碼自解密的技術(shù)吧,如下是一個(gè)Ammyy病毒的下載器(MD5:28EAE907EA38B050CBDCC82BB623C00A),使用DIE查殼發(fā)現(xiàn),該樣本并沒有加任何的殼。

然而當(dāng)查找字符串時(shí),卻未能發(fā)現(xiàn)一些可疑的字符串(如下載器常有的惡意url),看到的只是一堆亂碼,看來,該樣本很有可能就是使用了自解密的技術(shù)。

反編譯該樣本,也難以看出它的代碼邏輯,很多動(dòng)態(tài)地址的call。

對(duì)于這種樣本,反編譯器很難看到一些重要的操作,因?yàn)榇蟛糠侄际墙饷懿僮?,所以只能通過調(diào)試器單步調(diào)了。單步調(diào)試沒啥好技巧,遇到跑飛的call下斷點(diǎn)然后重新調(diào)試。調(diào)試的時(shí)候,要注意VirtualAlloc、GlobalAlloc、HeapCreate這些函數(shù),因?yàn)閻阂獯a通常使用這些函數(shù)來申請(qǐng)一段內(nèi)存空間,來存放解密出來的惡意代碼。如下圖,該樣本調(diào)用的是HeapCreate創(chuàng)建了0×230000這段內(nèi)存。

接著惡意代碼用了je + retn的方式循環(huán)解密0×230000處的數(shù)據(jù)。

解密完畢后,惡意代碼調(diào)用call esi將執(zhí)行流從0x40XXXX轉(zhuǎn)到0×230000。

然而,0×230000處的代碼并不執(zhí)行核心的惡意操作,目的在于修改0x40XXXX處的原始代碼。如下,它會(huì)調(diào)用VirtualProtect將0×400000的內(nèi)存屬性改為RW(讀寫),進(jìn)而修改原來的代碼。

修改后的0×400000內(nèi)存段的屬性如下。

修改完代碼,調(diào)用jmp esi跳回到0x40XXXX進(jìn)行執(zhí)行,此時(shí),這段內(nèi)存的代碼已經(jīng)被修改過了,終于開始執(zhí)行核心的惡意操作了。

將內(nèi)存dump下來發(fā)現(xiàn),現(xiàn)在的代碼已經(jīng)是解密后的惡意代碼了,程序邏輯清晰可見,通過字符串查找可以找到待下載的病毒的url。

至此,該下載器的功能已經(jīng)分析完畢,主要功能為從http://thespecsupportservice.com/load.png下載Ammyy病毒并運(yùn)行。

由此,可以總結(jié)得出,惡意代碼自解密的步驟一般為以下5步:申請(qǐng)內(nèi)存 -> 復(fù)制數(shù)據(jù) -> 解密數(shù)據(jù) -> 跳轉(zhuǎn)到堆中執(zhí)行惡意代碼 -> 修改原始代碼并跳回執(zhí)行。不過,我們可能會(huì)有個(gè)疑惑,病毒為什么不直接在堆中執(zhí)行核心的惡意操作呢,還要通過修改原始代碼來在0×400000空間解密執(zhí)行核心的惡意代碼。這是因?yàn)?,一些比較高級(jí)的沙箱、殺軟會(huì)監(jiān)控病毒創(chuàng)建大片內(nèi)存空間的操作,這時(shí)一旦釋放出解密代碼,便會(huì)立刻被沙箱、殺軟檢測(cè)到,所以在堆中的代碼一般不會(huì)只會(huì)直接進(jìn)行核心的惡意操作。

了解了惡意代碼自解密技術(shù)后,來看看最近流行的GandCrab勒索病毒(MD5:48A673157DA3940244CE0DFB3ECB58E9),使用的也是這種自解密技術(shù),來實(shí)現(xiàn)免殺。使用DIE對(duì)樣本進(jìn)行檢測(cè),顯示并未加殼。

自解密的手法跟上述提到的相似,在0×1280000處申請(qǐng)了一段內(nèi)存空間。

堆中的代碼負(fù)責(zé)修改原始代碼并跳轉(zhuǎn)回去執(zhí)行。

跳轉(zhuǎn)回來后,0×403016處的代碼就是解密后的核心惡意代碼,接下來就可以調(diào)試GandCrab的惡意代碼了。

將內(nèi)存Dump下來,也可以分析出加密文件的代碼邏輯。

在VT上查詢?cè)摬《镜膱?bào)毒情況,只有大概半數(shù)的引擎報(bào)毒,而且報(bào)出的病毒類型大多不能定位到Ransom,看來,GandCrab使用這種自解密的方式還是起到了一定的免殺效果。

責(zé)任編輯:武曉燕 來源: Freebuf
相關(guān)推薦

2022-01-16 18:51:57

.NET 6Configurati配置

2011-08-09 11:45:45

2013-11-08 10:42:09

代碼工具

2013-11-05 15:06:29

scdbg惡意代碼分析安全工具

2013-09-22 11:03:20

SocketSocket編程

2010-08-05 09:56:07

路由技術(shù)

2019-10-12 10:50:00

JavaScript編程語言代碼

2010-08-17 11:31:47

路由技術(shù)

2009-12-17 10:28:55

熱點(diǎn)路由技術(shù)

2017-03-27 15:46:14

2014-10-29 14:43:05

2016-11-24 11:07:54

Andriod惡意代碼

2015-08-20 13:43:17

NFV網(wǎng)絡(luò)功能虛擬化

2014-12-12 14:55:42

移動(dòng)惡意代碼移動(dòng)安全

2024-08-15 08:56:18

2009-09-08 16:30:18

網(wǎng)銀木馬

2010-05-17 09:13:35

2014-03-12 11:11:39

Storage vMo虛擬機(jī)

2021-06-07 08:18:12

云計(jì)算云端阿里云

2013-11-12 13:09:46

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)