恶意代码分析实战-实验14
本文最后更新于:2021-12-16 晚上
Lab 14-1
分析
使用IDA打开程序,首先会获取当前计算机的GUID,然后将后12位给拼接成XX:XX:XX:XX:XX:XX的形式。再获取用户名,再将用户名与刚才的字符串拼接。
拼接后的字符串
然后会将此字符串进行base64编码,,分析可知sub_4010BB
是一个base64编码的函数,且此base64进行了魔改,用于补位的不是“=”而是字符“a”。
然后会进入sub_4011A3
函数,此函数中包含网络行为。会尝试访问一个URL,并且通过URLDownloadToCacheFileA
下载资源,此URL的形成是字符串和域名拼接起来,%c.png则是字符串的最后一位,如果最后一位是a,就是a.png,然后保存在ApplicationName
,如果下载成功的话,会使用CreateProcessA
启动下载的程序。
问题
1.恶意代码使用了哪些网络库?它们的优势是什么?
恶意代码使用了urlmon.dll
中的URLDownloadToCacheFileA
2.用于构建网络信令的信息源元素是什么,什么样的条件会引起信令的改变?
根据前面的分析,信息源元素是计算机的GUID
和当前的用户名,如果换了计算机或者用户发生改变,会引起信令的改变。
3.为什么攻击者可能对嵌入在网络信令中的信息感兴趣?
因为这其中包含着计算器的GUID
和当前的用户名。
4.恶意代码是否使用了标准的base64编码?如果不是,编码是如何不寻常的?
没有使用标准的base64编码,用于补位的字符不是“=”,而是“a”。
5.恶意代码的主要目的是什么?
下载一个文件并且执行它
6.使用网络特征可能有效探测到恶意代码通信中的什么元素?
可以使用域名来进行探测
7.分析者尝试为这个恶意代码开发一个特征时,可能会犯什么错误?
这个没想到,看了下书上答案
8.哪些特征集可能检测到这个恶意代码(以及新的变种)?
可以用域名来作为一个检测的特征,还有BASE64编码也可以作为检测的特征之一。
Lab 14-2
分析
使用fakenet工具模拟网络,可以看到程序发出的网络请求。
首先会读取字符串资源
可以看到读取的字符串是http://127.0.0.1/tenfour.html
之后会创建管道,一个是hWritePipe
另一个是hReadPipe
,推测一个是用来写,一个是用来读。
创建一个CMD进程
创建两个线程
先来看一下第一个线程,它会读取cmd的输出结果,然后sub_401000
是一个base64的编码,但是其码表是魔改的,然后会进入sub_401750
将结果发送到http://127.0.0.1/tenfour.html
base64码表
初始发送的内容
sub_401750
将编码后的数据发送出去,strcat
会在前面加上几个字符
在前面添加(!<
来看一下线程2,sub_401800
会接收数据,然后会将接收到的数据写入管道,会在cmd中执行。接收到的数据如果是exit的话会直接退出线程
sub_401800
最后会执行sub_401880
这个函数
其中会进行自删除
问题
1.恶意代码编写时直接使用IP地址的好处和坏处各是什么?
还是直接借用书上的答案吧,我也不是很明白说实话。
2.这个恶意代码使用哪些网络库?使用这些库的好处和坏处是什么?
使用了wininet.dll
,我也不是很清楚优点以及缺点,就拿书上的来回答下吧。这些库的缺点之一是需要提供一个硬编码的User-Agent
字段,另外如果需要的话,还需要硬编码可选的头部。相比于Winsock API
,WinINet
的优点是对于一些元素,比如cookie和缓存,可以由操作系统提供。
3.恶意代码信令中URL的信息源是什么?这个信息源提供了哪些优势?
是PE资源节中的IP地址,优势就是可以在不重新编译代码的情况,攻击者通过资源节来部署多个后门程序到多个命令与控制服务器位置。
4.恶意代码利用了HTTP协议的哪个方面,来完成它的目的?
使用了User-Agent
,包含着要执行的命令以及命令的回显。
5.在恶意代码的初始信令中传输的是哪种信息?
根据上面分析可以看到,是一个命令行的信息
6.这个恶意代码通信信道的设计存在什么缺点?
只有传给服务器的信息进行了编码,但是接收的指令并没有进行编码。
7.恶意代码的编码方案是标准的吗?
不是标准的base64,码表被魔改了
8.通信是如何被终止的?
当攻击者发送exit时,就会终止通信
9.这个恶意代码的目的是什么?在攻击者的工具中,它可能会起到什么作用?
一个后门工具,攻击者可以通过它来在目标主机上执行shell命令。
Lab 14-3
分析
查看主函数,看到是一个do-while
循环,主要执行了三个函数,sub_401457
、sub_4011F3
、sub_401684
。现在来分别分析一下这三个函数。
sub_401457
主要是在C盘下创建一个文件autobat.exe,并在其中写入信息http://www.practicalmalwareanalysis.com/start.htm
,sub_401372
是创建文件,如果没有打开的话,说明不存在,会创建,并且向其中写入内容,然后再调用自身。
sub_4011F3
主要是从读取服务器的数据,然后进行处理,主要是将具体的指令提取出来。sub_401000
主要是负责将远控指令给提取出来,分析可以知道指令前主要是<noscript>
,也就是指令应该是在<noscript>
标签内的内容,同时最后必须是96
结尾。
接收到指令就会到sub_401684
,里面是执行具体的远控命令。可以看到有四种命令。
指令为d的时候,会下载一个文件,并且执行,sub_401147
是一个解密的过程,应该是将接收到的数据进行解码。
指令为n时,会直接返回1,而根据外面的分析,返回1就会退出执行。
指令为r时,会向C:\autobat.exe
中写入内容。
指令为s时,会sleep
指定的时间。
问题
1. 在初始信令中硬编码元素是什么?什么元素能够用于创建一个好的网络特征?
这些都是硬编码的元素,主要是User-Agent
重复了,有两个,可以用于作为检测的网络特征。
2. 初始信令中的什么元素可能不利于可持久使用的网络特征?
域名,域名可以随时更换
3. 恶意代码是如何获得命令的?本章中的什么例子用了类似的方法?这种技术的优点是什么?
是通过<noscript>
标签来获取命令的,这种技术恶意代码可以向一个合法的网页发出信令,并且接收合法内容,这使得防御者区分恶意流量与合法流量变得困难。
4. 当恶意代码接收到输入时,在输入上执行什么检查可以决定它是否是一个有用的命令?攻击者如何隐藏恶意代码正在寻找的命令列表?
分析中已经说明。
5. 什么类型的编码用于命令参数?它与BASE64编码有什么不同?它提供的优点和缺点各是什么?
分析中说的那个编码,它不是base64编码, 优点是自制的编码方式,缺点不知道,还是借用书上的答案吧。
6. 这个恶意代码会接收哪些命令?
分析中分析的,会有四种命令,执行四种操作。
7. 这个恶意代码的目的是什么?
远控木马,会根据命令来执行不同的操作。
8. 本章介绍了用独立的特征,来针对不同位置代码的想法,以增加网络特征的鲁棒性。那么在这个恶意代码中,可以针对哪些区段的代码,或是配置文件,来提取网络特征?
不太懂,借用书上的答案
9. 什么样的网络特征集应该被用于检测恶意代码?
主要就是域名和其中的一些参数吧
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!