首先动静态结合分析程序

首先看strings,可以看到Runtime Error!等一些字符串,不能作为很明显的特征

在IDA中的main可以找到这个

这可以当成两个字符串看,1qaz2wsx3edc,程序员一眼就认得的

另一个是ocl.exe。那不妨先运行下程序,看内存中会不会释放出ocl.exe(但是并没有)

这里的 strcmp 的 if 语句是肯定需要进去的,即strcmp(v26,v36) = 0,也就是说ocl.exe要存在于Filename中,结合GetModuleFilename这个API函数的功能,动态调试一发


GetModuleFileName:获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。

所以可以把这里的jnz和jz修改下,或者重命名文件为ocl.exe

看到了异或,就可以找两个数据来源了

a = [0x46,6,0x16,0x54,0x42,5,0x12,0x1b,0x47,0x0c,7,2,0x5d,0x1c,0,0x16,0x45,0x16,1,0x1d,0x52,0x0b,5,0x0f,0x48,2,8,9,0x1c,0x14,0x1c,0x15]
print len(a)
b = "1qaz2wsx3edc"
str = ""
for i in xrange(0,len(a)):
	#print a[i],b[i % len(b)]
	str += chr(a[i] ^ ord(b[i % len(b)]))
print str

简单处理一下数据,就知道还是熟悉的味道

www.practicalmalwareanalysis.com

接下来就会运行到401000函数

这里的CommandLine是个常量字符串cmd,可以猜测是个反向shell的后门端

其他的处理就很常见了,closesocket,Sleep等


这个程序分析自我感觉良好,一个简单的后门程序


问题1:二进制文件中的静态字符串

两个:

A:1qaz2wsx3edc

B:ocl.exe


问题2:运行二进制文件

运行起来两种方法:

A:把Lab09-02.exe重命名为ocl.exe

B:patch程序


问题3:运行恶意代码的payload

没看到payload在哪里啊~不知道后门程序怎么用


问题4:分析地址0x00401133

第一时间就猜到了,因为这是异或的数据部分


问题5:子例程(函数)0x00401089的参数

两个字符串


问题6:恶意代码的域名

异或出来的结果:www.practicalmalwareanalysis.com


问题7:恶意代码使用什么编码函数来混淆域名

异或


问题8:恶意代码在0x0040106E处调用CreateProcessA函数的

意义是什么

开启后门cmd(猜测,没有成功尝试出来)