-
-
[原创]恶意代码分析实战Lab03-03(PE映像切换技术)
-
发表于:
2021-9-29 20:12
13607
-
[原创]恶意代码分析实战Lab03-03(PE映像切换技术)
这个样本比较有意思,利用了pe映像切换技术,《逆向工程核心原理》有类似例子,最近也是上课看书,偶然看到这部分,写个文章巩固下知识点。
我们首先来康康什么是pe映像。
我们都知道创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟 进程地址空间。pe映像就是pe文件在进程内存中的映射形态。
并且pe文件和pe映像在形态上也不会是完全相同的,会有一些差别,如下。
那么什么是pe映像切换呢,简单来说,假设现在有A,B,setup三个exe文件,我们会使用setup.exe来创建A进程,按道理本该执行A进程,但是却使用pe映像切换技术来达到运行B进程的目的。
下面来大概总结其步骤,是setup.exe的代码步骤。
在看完本lab和《逆向工程核心原理》中的例子后,产生了两个问题
先看看行为吧,可以看到创建了一个进程,并且退出了。
查壳,无壳,先拖进ida静态分析分析。
main函数
sub_40132C函数
我们后面在来解密这个文件,并分析它。
sub_4010EA函数,这个函数的参数有两个,一个是C:\Windows\System32\svchost.exe,用来创建进程,一个是申请的空间地址,保存着解密后的资源文件。
利用resource hacker dmup出资源文件,然后解密,现在来分析解密后的资源文件。
先看main函数
fn函数
sub_4010C7函数
效果如下
最终我们得出结论,该恶意软件是一个键盘记录器,它在svchost.exe上使用进程替换。
int
main(void){
FILE
*
p;
char v[
0x5FE0
]
=
{
0
};
int
i;
p
=
fopen(
"abc.bin"
,
"rb"
);
fread(&v,
1
,
0x5FE0
, p);
for
(i
=
0
;i<
0x5FE0
;i
+
+
)
{
v[i]
=
v[i]^
65
;
}
FILE
*
p1
=
fopen(
"def.bin"
,
"wb"
);
fwrite(&v,
1
,
0x5FE0
, p1);
}
int
main(void){
FILE
*
p;
char v[
0x5FE0
]
=
{
0
};
int
i;
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)