在前面 《恶意软件分析基础(Part1)》 我们已经介绍了恶意软件静态分析基础知识,这篇文章是关于恶意软件动态分析的技术讲解。
正如前一篇文章中提到的:由于代码混淆,加壳等因素导致静态分析对于恶意软件来说限制太多。
在讲解动态分析恶意软件之前,一定要有一个安全的环境,可以考虑使用虚拟机搭建一个Windows环境。记住在执行恶意二进制代码之前一定要创建一个快照,这样便于快速恢复。
Process Monitor是一款Windows平台下优秀的监视工具,该工具提供了一种可监视特定注册表,文件系统,网络,进程以及线程活动的方法。Process Monitor能够监视所有系统调用并迅速收集信息。因为Windows OS总是有许多的系统调用,有时候我们获取到的东西毫无价值,Process Monitor通过一个过滤选项卡来解决了这个问题。参阅下面的截图,它显示了我对“WriteFile”和“RegSetValue”设置了一个过滤操作。这些通常都是恶意可执行文件调用,将文件写入磁盘并改变注册表信息。
在应用这个过滤之后,我们从Process Monitor得到以下事件的列表:
最重要的是前两项,其显示了可执行文件,创建了一个名为“Video Driver”的注册表条目。其他条目可以自动忽略了,因为它通常生成伪随机数。点击第一个条目,我们甚至可以看到调用了那些东西,下面的截图已清楚表明,总共有7168字节通过这个二进制文件被写入到文件系统。
使用Process Explorer分析
Process Explorer是一款用来执行动态分析的工具,它能够洞察到系统当前进程。下面这个例子就是在运行二进制文件之后创建的一个进程,单击进程可以帮助你查看进程的变化。
当然,这款工具也能够将DLL会使用到的所有函数信息报告给使用者。下面的截图显示了一个进程使用了ws2_32.dll,这意味着网络连接将由这个进程操控。
双击一个特定的进程将会产生更多有关该进程的信息,下面就是一些重要属性。
1.在检测每一个进程时都有一个验证选项,用以检验其是否有微软签名。 截图描述的这个二进制就没有微软签名:
下面的截图展示了在内存和磁盘中可执行文件的字符串选项:
INetSim是一款基于Linux模拟常见网络服务的免费软件,通过模拟服务(HTTP,HTTPS,FTP,IRC,DNS,SMTP等),允许你来分析未知恶意代码的网络行为。因为是基于Linux,所以需要在Linux机器上进行安装,并将其与测试用的Windows机器保持在同一个网络。
INetSIM适合各种类型的服务请求。例如,假定一个恶意软件从代码执行一个图片请求,INetSIM可以完成这个恶意软件请求,尽管这个图片不是恶意软件所需要的那张,但是INetSIM会保证代码继续执行下去。
在下期中,我们将结合动态分析与静态分析对恶意软件进行解剖。
*参考来源 infosec ,译者/鸢尾 转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)