首先动静态结合分析程序
首先看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(猜测,没有成功尝试出来)