您的位置:首页 > 编程语言

恶意代码分析实战 第九章课后实验Lab09-02

2019-04-15 15:40 176 查看

问题1:

在这里看到了许多导入函数以及cmd,可能恶意程序运行后会对cmd有所操作。

问题2 :

使用

Process Explorer
监控,运行程序后并没有发现什么。

问题3:

把Lab09-02.exe载入到ida和OD。

在ida中发现main的地址是00401128,让后让OD跳转到此地址:

首先看到了一大串的mov指令

这是将字节移动到栈中的操作,出现了两个0,很明显是终止符。把这一长串的字符分成两部分。查看这些字符到底都是什么可以在ida中直接快捷键R键完成转换。

也可以使用OD,在OD中跟踪到这个栈空间的

起始地址
,不断F7,查看数据窗口的内容:

结果是一样的。第一串并不能看出什么,第二串字符有可能是一个文件名。继续向下分析:

当看到GetModleFileName时停一下,这是用于获取当前运行的完整路径,F8就看到确实出现了完整路径。

继续向下走:

这里调用了

00401550
这个函数,在OD中并没有对这个函数分析出什么,转战ida,

0401550这个函数表示的是库函数_strrchr,这个函数就是想获取文件的名称,回到OD,F8

可以看到已经保存到eax中了。继续F7:

这里看到调用了004014C0,OD没有解析出它的名称,但是我们看到了两个参数,一个是前面所怀疑的ocl.exe,另一个就是文件名了。

看一下ida就清楚了,这是一个字符串的比较函数。我们知道这两个字符串不行等,会返回一个非零值,test操作依旧是非零值,所以呢程序也就退出了,分析到这里就很清楚了,想要让这个恶意代码运行修改文件名称就好了。这里也解释了问题2。我们可以修改文件名为ocl.exe,然后重新运行就可以了。

问题4:

快捷键G跳转到地址401133:

然后发现,这个就是一系列的赋值操作。

问题5:

在ida中找到这个位置,地址是4012BD,然后在OD中跳转到这个地址:

发现了第一个参数就是之前的第一个字符串,第二个参数是一个数据缓冲区,暂时无法识别。

问题6:

我们进入这个call看一下,F5查看C代码

可以看到这里有两个参数,a1表示那个未能识别的参数,a2表示“1qaz2wsx3edc”。下面有一个很明显的异或操作,就是将这两个字符串异或。进入OD进入这个call,找到这个异或操作的位置

这里可以看到是由edx和ecx进行异或操作,F9运行:

 

这样就看到了异或操作之后出来的一个网址,这个就是恶意代码使用的域名。

问题7:

恶意代码使用了“1qaz2wsx3edc”这个字符串来混淆域名。

问题8:

其实这是一个反向的

shell
,反向shell(Reverse shell)是一种往远程机 4000 器发送shell命令的技术。在CreateProcessA这个函数被调用之前,
STARTUPINFO
结构就已经
被修改了,这个结构用于指定新进程的主窗口特性。首先可以看到,StartupInfo.wShowWindow的值被设置为了0,表示它会以
窗口隐藏
的方式运行,而运行的对象就是cmd.exe,所以受害用户是看不到程序运行的,也就是我们在运行时并不会看到什么。接着我们可以看到STARTUPINFO结构中的标准流被设置为一个套接字,这也就直接绑定了套接字和cmd.exe的标准流,所以cmd.exe被启动后,所有经过套接字的数据都将发送到cmd.exe,并且cmd.exe产生的所有输出都将通过
套接字
发出。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: