[病毒分析]熊猫烧香(中)病毒释放机理(四)

简介: [病毒分析]熊猫烧香(中)病毒释放机理

7.sub_403C44子函数

继续在OD中分析sub_403C44子函数。

第一步,查看[EBP-8]地址对应的值。

在数据窗口中,可以看到eax的值为ebp+var_8的地址,通过OD可以知道,这个地址中保存的是0,可以理解为没有数据。

  • 00 00 00 00

1.png第二步,我们按下F7进入这个call,查看具体内容。

  • 0x0040812E call 00403C44

1.png

可以看到,它首先是将EAX的内容赋值给EDX,我们按下F8可以看到EDX也变成了0值。

  • mov edx, dword ptr ds:[eax]

image.png

步过mov edx, dword ptr ds:[eax],寄存器的值是下图:

image.png

之后的test运算,使得ZF变为1,满足跳转条件,直接跳转至retn,那么本段函数也就结束了。

刚才我们通过test edx, edx发现ZeroFlag标志位变成了1。这个标志位变为1,说明这个值是一个0,这段函数似乎并没有实现什么特别清晰具体的功能,那么不妨将这个操作理解为某种标志的设置。

image.png

image.png

总结,重命名及对应功能如下:

  • sub_403C44 -> SetZeroFlag
  • 功能:设置零标志位重设,将其设置为0

image.png

8.sub_403ECC子函数

回到OD,我们分析sub_403ECC子函数。

第一步,查看并分析[EBP-4]保存的内容。

  • mov eax, dword ptr ss:[ebp-0x4]

image.png

在数据窗口中跟随,可以看到“MZP”,这里大致是保存了一个PE文件,事实上就是将这个PE文件的首地址赋值给这个EAX,接着看看这个call。

1.png

第二步,分析call 403ECC函数。

按下F7进入这个call函数,首先调用“TEST EAX, EAX”验证PE文件是否存在。

1.png

按下F8继续,这里是跳转不成立,然后出现在EAX-4位置,我们在数据窗口中跟随内容。

mov eax, dword ptr ds:[eax-0x4]
小技巧
这里需要特别强调的是,由于本病毒程序是使用Delphi编写的,因此字符串的首地址减去4后,所取出的4个字节的内容就是此字符串的长度。

换句话说,这段代码中的[eax-4]就是eax所指向的文件长度,字符串长度就是EC00,这条语句就是将EC00保存在寄存器里面。于是可以将sub_403ECC重命名。

字符串长度:EC00
现在EAX保存的就是字符串的长度,即PE文件的长度

image.png

image.png

总结,重命名及对应功能如下:

  • sub_403ECC -> GetFileLen
  • 功能:获取PE文件的长度

之前这个文件的长度是保存在EAX里面,这里又将文件长度赋值给EBX。

image.png

接下来,在获取文件长度后,程序会跳转到loc_408163处执行。首先它会验证EBX是否为零(文件长度是否为0),正常来说文件长度是不为0的,也就是这个文件是真实存在的,所以接下来的跳转不成立,会继续往下执行。

test ebx, ebx
jle short loc_408171
mov eax, [ebp+var_4]

image.png

接着我们尝试用OD进行分析,跳转到0x00408163的位置。按下F2增加断点,再按F9让它执行过来。

image.png

按下F8继续执行,这里是将 [EAX+EBX-1],由于EAX指向的是文件起始地址,而EBX是文件的长度,减一是获取整个PE文件最后一个字符它是什么。事实上,CMP语句就是验证这个文件最后一个数据它是否为零,如果为0,则接下来的跳转不成立。

cmp byte ptr [eax+ebx-0x1], 0x0

1.png

经过OD的动态分析发现,因为这里显示跳转未实现,故文件尾端的值为0,所以不执行跳转,继续向下执行。

image.png

9.总结

写到这里,该部分关于sub_408024核心函数的部分功能就介绍完毕

1.png

0x0040804D call sub_40277C

– 重命名为:GetFilePathAndName

– 功能:获取文件的完整路径及文件名称

0x0040805E call sub_405684

– 重命名为:GetFilePath

– 功能:获取去除病毒文件名后的路径

– IDA位置:0x0040805E

– 技巧:循环将病毒的完整路径从后往前检索,直到遇到斜杠(\)、反斜杠(/)、冒号(:)结束,从而提取病毒的路径或病毒的文件名(如setup.exe)

0x0040806E call sub_403ED4

– 重命名:StringCat

– 功能:拼接字符串,包含“Desktop_.ini”后缀

0x00408079 call sub_4057A4

– CheckFileExist

– 功能:检测文件“Desktop_.ini”是否存在

0x00408105 call sub_4040CC

– CheckPathIsExist

– 功能:检测文件的路径是否存在

0x00408126 call sub_4078E0

– WriteVirusInfoToMem

– 功能:写入病毒信息到内存中,病毒作者企图利用暴力P解的方式,来攻破计算机中的某些验证机制

0x0040812E call sub_403C44

– SetZeroFlag

– 功能:设置零标志位,将其设置为0

0x00408136 call sub_403ECC

– GetFileLen

– 功能:获取PE文件的长度

CMP语句就是验证PE文件最后一个数据是否为零

希望大家可以有所收获!!!


相关文章
|
Web App开发 开发框架 安全
网络安全实验四 熊猫烧香病毒剖析
网络安全实验四 熊猫烧香病毒剖析
295 0
|
安全
[病毒分析]熊猫烧香(中)病毒释放机理(二)
[病毒分析]熊猫烧香(中)病毒释放机理
151 0
[病毒分析]熊猫烧香(中)病毒释放机理(二)
|
安全
[病毒分析]熊猫烧香(中)病毒释放机理(一)
[病毒分析]熊猫烧香(中)病毒释放机理
180 0
[病毒分析]熊猫烧香(中)病毒释放机理(一)
|
安全
[病毒分析]熊猫烧香(中)病毒释放机理(三)
[病毒分析]熊猫烧香(中)病毒释放机理
173 0
 [病毒分析]熊猫烧香(中)病毒释放机理(三)
|
开发框架 安全 前端开发
[病毒分析]熊猫烧香应急处理方法(上)
[病毒分析]熊猫烧香应急处理方法
304 0
[病毒分析]熊猫烧香应急处理方法(上)
|
安全
[病毒分析]熊猫烧香应急处理方法(下)
[病毒分析]熊猫烧香应急处理方法
178 0
[病毒分析]熊猫烧香应急处理方法(下)
|
机器学习/深度学习 云安全 人工智能
勒索病毒的彻底终结 主动式防御的剑与魔法
勒索病毒的彻底终结 主动式防御的剑与魔法
勒索病毒的彻底终结 主动式防御的剑与魔法
|
安全
Conficker病毒新变种卷土重来 可关闭杀毒软件
据国外媒体报道,安全厂商赛门铁克今天表示,发现了Conficker蠕虫病毒的一个新变种,它可以识别被感染计算机上的反病毒软件或安全分析工具,并试图关闭这些程序。 Conficker蠕虫病毒自出现以来,已经感染了全球上千万台计算机,但是该病毒最初的行为只是恶意传播自身,并不会给感染计算机带来进一步伤害。
1030 0