从事应急响应工作几年之后,我认为总结一份快速确定计算机是否被感染木马和病毒的方法论是十分有用的。这显然不是那么简单的,可我却发现感染几乎存在于所有不复杂的攻击中,如果你执行了以下检测,便可发现存在感染并快速杀掉它。所有这些事情都可以由一个建立于Windows命令行功能的管理员命令提示符完成。
1、WMIC启动项(WMICStartupItems)
Windows已经有一个非常强大的工具——WMIC,在以下几种方式中较容易为你的调查建立启动项。只需打开一个命令提示符,然后输入【wmicstartuplistfull】。这是一个真实的例子,猜一下哪个项目不属于其中,会是本地\临时文件夹吗?是的。如果你知道应该在列表中的东西以及一般正常运行的位置,你就能在这里暂停,通常这都非常简单。找到程序,然后在malwr.com或者VirusTotal上查找它的散列,看看它有没有感染了其他什么,然后删除。
2、DNS缓存(DNSCache)
打开命令提示符,并输入【ipconfig/displaydns】。看看这些待反测的区域,有没有任何的异常现场?在VirusTotal或者其他地方寻找他们解析的域名及IP,看是否有与之相连的样本。如果有,那么你肯定被感染了。这里有一个现成的例子:
3、WMIC进程列表(WMICProcessList)
这是WMIC另一个受欢迎的项目,输入【wmicprocesslistfull|more】,或者更紧凑但是更长的输出【wmicprocessgetdeion,processed,parentprocessid,commanline/format:csv.】。寻找在奇怪地方运行的东西或者恶意、随机、名称怪怪的程序。
4、WMIC服务列表(WMICServiceList)
如果你不清楚自己在寻找什么,那这个用起来可能比较困难。但是检测方便并且容易通过路径或者exe名称发现恶意软件。格式与其他的相似,或者你也可以得到更具体get版本。输入【wmicservicelistfull|more】或者【wmicservicegetname,processid,startmode,state,status,pathname/format:csv】。这里有个小例子展示了只有服务名称和路径的情况。
5、WMIC工作列表(WMICJobList)
这是个看起来最不可能发现任何东西的项目,因为绝大多数恶意软件都不用jobs,但是在例如MPlug的一些版本中,是很容易检测出的。输入【wmicjoblistfull】,你能够获得一个【没有可用实例】的回执,这就意味着没有已安排的项目在执行。
6、Netstat
莫忘记基础,如果IP是谷歌或者stealyourbanknumber.su.【netstat-abno】的,输出可能需要搜索来查看,即使这样可以还是寻找奇异的外部站点端口号码,如25、8080、6667等等。
Netstat控制如下:
-a显示所有连接和监听端口-b显示参与创建每个连接或者监听端口的可执行文件-n以数字形式显示地址和端口号码-o显示拥有的每个与链接相关的进程ID7、批处理文件版本
用一种简单可重复的方式完成这些WMIC东西并生成一份报告,怎么样呢?我已经有了。把东西都丢到一个批处理文件中,然后设置一个主机名参数,你甚至能够在全网中使用它——获得其他计算机的适当权限,方便进行远程评估。
这个脚本可以让你更清楚的了解HTML格式的输出,其中包括了你从电脑中获取的信息:
wmic/node:%1computersystemgetmodel,name,username,domain/format:htable>c:\triage-%1.htmlwmic/node:%1startuplistfull/format:htable>>c:\triage-%1.htmlwmic/node:%1processgetdeion,processid,parentprocessid,commandline/format:htable>>c:\triage-%1.htmlwmic/node:%1servicegetname,processid,startmode,state,status,pathname/format:htable>>c:\triage-%1.htmlwmic/node:%1joblistfull/format:htable>>c:\triage-%1.html