Step-By-Step找出windows未知病毒

文介绍了如何一步一步的按照流程,最大可能的找出可能受感染的windows主机里的未知病毒。

概述

当企业在遭遇到恶意攻击之后, 除了明确的资产损失之外,企业最担心的问题是其他主机是否也受到影响(例如被种了后门或者恶意软件之类的),也就是说企业需要确定本次攻击的影响范围。标准做法是利用已经收集到的威胁情报做一次Enterprise Scan,查看企业中是否有同样特征的恶意样本。然后在把所有被影响的主机做更深入的分析,找出线索和证据等进行取证、溯源。

但是还有一些主机,虽然在Enterprise Scan后没明确的被影响的证据,但网络信息显示它们和这些受影响的主机是有过网络通信的。对于这些“不确定”的主机,往往需要花费很大的精力去深入排查、分析来确定是否受影响。

对于何如查找主机里的未知病毒对很多人来说是一个恐怖的过程, 而且并不一定能找出或者全部找出未知的病毒。我觉得思路很重要, 本文介绍了如何一步一步的找出未知病毒。从开始的自动化,到半自动化, 到最后的手动分析。 一步步慢慢缩小范围。

Step 1:数据复制和数据准备

数据准备

-         把需要分析的数据磁盘mount为read-only模式 (防止污染数据)

-         Dump当前内存。需要bit-by-bit的方式dump为raw image。

-         如果有hiberfil.sys, 转化为raw image。(可用Volatility转化)

这里的关键是不污染原始数据,不破坏原始证据。

Step 2: Anti-Virus 检查

图片.png

对mount的磁盘使用AV杀毒扫描(更新到最新的病毒库,并使用全盘扫描功能)。有条件的最好使用多个不同厂商的AV杀毒软件(推荐卡巴斯基和趋势科技)。使用AV检查的好处是虽然AV杀毒软件不能找到0-day或者未知病毒, 但是能快速找出“已知”病毒。

 

Step 3:威胁情报搜索

图片.png

使用IOCs(Indicators of compromise)定义的威胁情报来搜索主机。不仅仅是利用自己企业的IOC情报, 也可以使用第三方公开的威胁情报来搜索。包含:

-         文件特征 (MD5, SHA1等)

-         文件行为

-         网络特征

-         其他

推荐工具:

-         OpenIOC Framwork

-         IOC Editor

-         Readline

-         STIX

 

Step 4: 自动化的内存分析

图片.png

这里主要是利用工具来对内存进行分析,找出不正常的事件。当然这里依据的原则是Know Normal. Find Evil. 意思是只有了解正常的, 才能快速找到不正常的。例如进程间的父子关系;Image path;本地启动账户等。当然,现在很多工具都提供了一些自动化的功能, 可以自动标识出一些不正常的行为。如上图中红色部分。

内存分析主要能:

-         代码注入

-         进程的image path验证

-         进程SID验证

-         进程handle校验

-         数字证书校验

推荐工具:

-         Redline (https://www.mandiant.com/resources/download/redline

-         Volatility Malfind (https://github.com/volatilityfoundation

 

Step 5: 持久化检测

恶意软件除了隐藏自己,也需要在主机重启之后能继续存活并执行。所以我们可以利用这一点,从一些常用的持久化技术中找出是否有恶意软件在本机执行。主要检查点有:

-         计划任务

-         篡改服务进程

-         创建服务

-         注册表自启动配置

-         自启动目录

-         DLL劫持

-         系统自带库文件被植入木马

-         高级持久化方法:本地策略组,MS office插件,BIOS Flashing等。

 

推荐工具:

-         Autorunsc.exe (http://technet.microsoft.com/en-us/sysinternals/bb963902)

 

Step 6: Packing 检测

图片.png

扫描文件系统或者一下有可能有病毒的目录。可以扫描任意PE文件或包含PE文件的路径并给这些PE文件打分。它的主要特点是可以快速扫描出系统内存在的未知PE文件。并且校验这些PE文件的证书。

 

推荐工具:

-         DensityScout (http://cert.at/downloads/software/densityscout_en.html

-         Sigcheck (http://technet.microsoft.com/en-us/sysinternals/bb897441

 

Step 7:检查系统日志

这里不多说了,网上已经很多工具或者powershell脚本能够自动化检查系统日志,并标识出不正常的日志。主要日志类型如下:

图片.png

 

推荐工具:

-         Logparser (www.microsoft.com/download/en/details.aspx?id=24659

-         Event Log Explorer (http://eventlogxp.com

-         Log Parser Lizard (www.lizard-labs.net

 

Step 8:Super Timeline 检查

到这一步,基本上已经能隔离出很少一部分文件了。这时使用timeline工具能清楚的找到这些文件的上下文。从而进一步确定或者缩小范围。

图片.png

例如上图:我们可以看到winsvchost.exe创建在c:\windows\system32\下面, 如果这个文件是你怀疑的文件,你应该能看到有个类似钓鱼的攻击(邮件打开一个.XLS文件)在此文件创建时间轴附近。然后winsvchost.exe被创建和执行,并且创建了自启动机制。最后打开一个socket链接。从这些迹象表明,winsvchost.exe极有可能就是一个恶意软件。

 

推荐工具:

-         SIFT里面的Log2timeline工具(http://computer-forensics.sans.org/community/downloads

 

Step 9: 手动内存分析

内存分析是目前我觉得最可靠的手段来找出未知病毒。通过内存分析,我们可以发现:

-         不正常的进程 (进程名, path, 父子关系, commandline,启动时间, SID等)

-         分析进程的DLL和handles

-         网络时间

-         Code injection

-         Rookit

等等

 

推荐工具:

-         Volatility (http://code.google.com/p/volatility

-         Redline (www.mandiant.com/products/free_software/redline

 

Step 10: 手动检查文件特征

图片.png

把可疑文件的特征值(sha1,md5等)送到第三方平台检查。 推荐:

-         VirusTotal (www.virustotal.com)

-         NSRL Query (http://rjhansen.github.io/nsrllookup)

 

Step 11: MFT异常检查

系统里有成千上万的文件,每个文件都一个自己的MFT记录。正常来说, 一个系统文件夹下的文件的MFT记录都是根据写入磁盘时间按序排列的。但由于系统自动更新等,系统文件不断被替换,但是MFT的回收机制非常快, 总体上一个系统文件夹下的文件MFT记录还是按需排列的。找出那些非正常排序也是有一定可能找出恶意软件的。

 图片.png

Step 12: 文件时间异常

一般文件时间戳异常的情况有:

-         $SI 时间早于 $FN时间

-         纳秒时间戳全部为0

图片.png

主要是利用NTFS的$Filename时间和储存在$Standard Information里的时间比较来找出异常文件。

推荐工具:

-         analyzeMFT.py (SIFT)

-         Log2timeline

 

Step 13: 找到未知病毒, 然后呢?

处理病毒

-         逆向分析

-         样本相关的配置,文件,内存快照等

生成威胁情报

-         基于主机的威胁情报

-         基于网络的威胁情报

 

最后再利用生成的威胁情报,再次执行企业内部的Enterprise Scan,确定影响面。

1

发表评论

已有 4 条评论

取消
Loading...

相关推荐

css.php