译文仅供参考,具体内容表达以及含义原文为准。
之前讲的内容,都是在以不运行样本为前提进行分析,这种分析方法是最安全的,可以直接在真机上通过IDA进行分析,但是很多时候,我们不得不调试样本才能对样本的恶意行为进行一个完整的分析,此外,调试节结合IDA的分析方式,也能大大的加快样本分析的速度。当我们决定要对样本进行动态调试或是行为分析的时候,由于会运行样本,我们就需要在虚拟机中执行此类操作。
在本节中,主要介绍一下我平时分析样本的来源,以及分析样本时候常用的一些行为检查工具,通过行为分析,可以让我们很快的了解样本的大概功能。然后介绍如何通过在本地捕获到的一些行为,去挖掘和寻找与样本相关的情报。
目前来讲,virustotal应该是全球最大的情报机构。也是大家在样本分析时,使用的最多的情报平台。但是很可惜,virustotal没有对个人用户提供下载接口。免费用户只能进行一些简单的查询,所以对于个人用户来讲,virustotal显得不是那么的”友好”。
首先是<+ New task> :
右上角的选项框中表明了当前选择的操作系统上所安装的应用信息以及补丁信息。
左下角选项框让用户上传待分析的文件。
当我们配置好这些信息之后(通常只需要选择上传文件,其他内容都默认),我们就可以单击最右下角的Run开始执行任务。
沙箱运行之后,就会生成一个在线报告,以我们分析的一个样本的报告为例:
同样的,中央位置是沙箱的运行界面。
可以进入到如下的界面:
该页面的右上角有一个搜索框,我们可以在搜索框中输入样本的hash或者标签即可找到样本。搜索hash是最基础的一个功能,我们可以单击搜索框旁边的filter打开筛选框,在筛选框中进行条件筛选。包括文件类型、请求地址、tag信息等等。
然后想要下载或是查看某个样本的分析报告,直接点进去即可。
MalwareBazaar界面也非常简洁,每天都会更新很多样本,并且这些样本基本上都带了初始的tags
除此之外,MalwareBazaar还提供了API接口、搜索、导出功能。想要在MalwareBazaar下载样本也非常简单,只需要单击某个md5,进入到详情页面,然后单击Download sample即可,需要注意的是,国外的这种情报共享平台,下载回来的样本默认解压密码都是:infected
此外,在对样本进行行为分析的时候,最好能够断网分析或是使用一个干净的网络。
首先是为什么要断网分析,我们在分析的时候,如果目标的服务器还是存活的,那么样本运行之后,就会和目标服务器建立通信,然后进行交互。样本大多会有收集当前主机信息并上传到服务器的功能,如果虚拟机的配置被打包上传到攻击者服务器,一方面,攻击者将会知道你的出口IP地址。另一方面,攻击者将知道自己的样本已经暴露,已经有分析人员在分析,从而导致攻击者关闭服务器或是采取其他行为。
还有一个重要的因素是,如果是在公司的网路环境进行分析的,公司一般都会有流量监控,如果检测到连接了已经确认是恶意的C2服务器,就会触发警报,一方面公司可能请你喝茶,另一方面如果样本具备其他的功能,可能会出现公司网络未授权访问xxx的情况。
所以综上所述,断网分析恶意样本是一个好习惯。
但是有时候,样本会检测网络是否正常,如果不正常就直接退出了,遇到这种情况,可以
1 修改样本判定网络的条件,使得可以正常运行2 搭建安全的网络进行分析
选择创建并且跟踪一个新进程,然后点击运行打开选择窗口
选中我们待分析的文件,选择打开:
最后点击确定,即可运行该程序并监控程序的行为:
可以看到,样本行为很简单,首先是进行了一次网络请求,然后就弹框显示
点击弹框之后,进程退出:
由于该样本过于简单,我们可以随便找一个其他的恶意样本跑下行为试试:
这里可以看到,该恶意样本运行后,会不断的进行网络请求,并且创建和销毁进程,我们可以在左边的选项中选中某一栏进行赛选,比如选中左边的<网络>:
这里可以很直观的看到,与该地址通信的文件,基本全是确定恶意的木马,所以我们可以确定该域名是一个恶意域名。
以微步的为例,在平台上查询我们通过行为分析工具跑出来的地址,得到如下结果:
通过查询,我们知道该域名已经被打上了很多标间,如僵尸网络、Scar、DarkComet、远控等。像这种已经和某些家族打上标签的域名,我们可以尝试直接在搜索引擎中搜索该家族,看是否已经有分析报告,以及分析报告中的样本代码结构是否与手里的样本匹配。在具体分析样本的时候,可以参考这些信息。
火绒剑是现在比较流行的一款行为分析工具,官方也提供了该工具的单独下载。火绒剑安装好之后,以管理员身份启动,开启监控,然后进行过滤设置:
选择进程过滤,添加,然后将待检测的样本名字复制进去
然后确定,设置好第一条过滤条件
然后选择动作过滤
个人建议是可以把注册表监控取消勾选,因为正常情况下来讲,一个程序运行之后,哪怕什么都不做,都会大幅度的进行注册表操作。
所以如果不取消注册表监控,行为可能是如下:
这里面的操作,很多不是恶意程序发起的,而是windows系统,加载这个pe文件到内存执行的时候操作的。当把注册表过滤了之后,就只显示了51条记录,但是这里比较奇怪没有跑出网络行为。
这个时候,我们可以尝试结合Fakenet,看看是否能跑出网络行为。解压下载回来的fakenet,然后以管理员身份启动fakenet:
此时,fakenet成功启动,此电脑上的所有网络请求都将发送到fakenet中:
接着重新使用火绒剑监控样本行为:
可以看到,此时火绒剑已经成功捕获到网络请求行为,并且在fakenet中也成功记录请求内容,并且模拟服务器返回了对应的数据。
procmon是微软官方提供的行为监控工具,打开之后默认会监测所有的进程:
可以选择如下图标或者Ctrl + L 进行过滤
根据个人选择,第一个框可以选择ProcessName对指定的进程进行过滤
第二个下拉框有如下的过滤条件:
然后在输入框中填入需要过滤的ProcessName,点击Add,然后选择OK
由于是微软自己开发的行为监控工具,Procmon可以说是巨细无遗,检测能力相比其他来说也更全面,这里尴尬的是Procmon检测到了fakenet的流量欺骗,所以网络行为这里显示如下,没有显示真实的请求地址
Sysmon是一款轻量级的监视工具。属于Windows Sysinternals出品的一款Sysinternals系列中的工具,用来监视和记录系统活动,并记录到windows事件日志。
Sysmon相比前面几款工具,安装要稍微麻烦一些,但同时也具备了一些优势。
将sysmon启动起来之后,win+r 运行eventvwr打开日志管理器
然后在:应用程序和服务日志->Microsoft->Windows目录下会有一个SysMon文件夹然后就能看到启动sysmon之后的日志。新版本的sysmon有了dns查询功能,非常实用
可以看到每个事件之后都有一个事件ID
Event ID 1: Process creationEvent ID 2: A process changed a file creation timeEvent ID 3: Network connectionEvent ID 4: Sysmon service state changedEvent ID 5: Process terminatedEvent ID 6: Driver loadedEvent ID 7: Image loadedEvent ID 8: CreateRemoteThreadEvent ID 9: RawAccessReadEvent ID 10: ProcessAccessEvent ID 11: FileCreateEvent ID 12: RegistryEvent (Object create and delete)Event ID 13: RegistryEvent (Value Set)Event ID 14: RegistryEvent (Key and Value Rename)Event ID 15: FileCreateStreamHashEvent ID 17: PipeEvent (Pipe Created)Event ID 18: PipeEvent (Pipe Connected)Event ID 19: WmiEvent (WmiEventFilter activity detected)Event ID 20: WmiEvent (WmiEventConsumer activity detected)Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected)Event ID 22: DNSEvent (DNS query)Event ID 255: Error
对应解析如下:
Event ID 1: 创建进程Event ID 2: 进程更改了文件创建时间Event ID 3: 网络连接Event ID 4: Sysmon 服务状态已更改Event ID 5: 进程终止Event ID 6: 驱动程序加载Event ID 7: 镜像加载Event ID 8: 创建远线程Event ID 9: 驱动器读取Event ID 10: 进程访问Event ID 11: 文件创建Event ID 12: 注册表事件(Object create and delete)Event ID 13: RegistryEvent (Value Set)Event ID 14: RegistryEvent (Key and Value Rename)Event ID 15: 文件流创建Event ID 17: 管道事件(Pipe Created)Event ID 18: PipeEvent (Pipe Connected)Event ID 19: WmiEvent (WmiEventFilter activity detected)Event ID 20: WmiEvent (WmiEventConsumer activity detected)Event ID 21: WmiEvent (WmiEventConsumerToFilter activity detected)Event ID 22: dns解析(DNS query)Event ID 255: Error
包括bat文件的创建:
注册表操作(加入开机自启动以实现本地持久化):
以及dns查询:
通过行为分析,可以让我们从宏观的角度了解样本执行后,会做了哪些行为。比如我们只在行为分析中看到样本进行了网络请求,那么我们可以猜测,样本是否是一个简单的Downloader,或是由于未成功建立连接导致样本提前结束运行。此外,我们还可以通过各个平台对样本的网络请求地址进行查询,通常来说,只要该域名曾经被攻击者使用过,那么大概率是可以关联到对应的家族的。毕竟域名的申请,还是有一定的成本在里面,大多数情况下,攻击者也不会那么浪费的一个域名只使用一次就舍弃。
比如我们在行为分析中看到创建进程操作,那么我们可以根据样本创建的进程去推测样本大概做了什么操作,是带参数重新启动自身 还是去启动了一个异常的进程。
比如我们在行为分析中看到文件创建操作,那么我们可以根据文件创建的路径去找到对应的文件,看看样本释放的文件到底什么内容,是一个PE 还是 一个vbs脚本。
根据行为检测的内容,我们在调试的时候,也可以针对性的设置断点,大大加快我们的分析速度。