从事应急响应工作几年之后,我认为总结一份快速确定计算机是否被感染木马和病毒的“方法论”是十分有用的。这显然不是那么简单的,可我却发现感染几乎存在于所有不复杂的攻击中,如果你执行了以下检测,便可发现存在感染并快速杀掉它。所有这些事情都可以由一个建立于Windows命令行功能的管理员命令提示符完成。

1、WMIC 启动项(WMIC Startup Items)

Windows已经有一个非常强大的工具——WMIC,在以下几种方式中较容易为你的调查建立启动项。只需打开一个命令提示符,然后输入【wmic startup list full】。这是一个真实的例子,猜一下哪个项目不属于其中,会是本地\临时文件夹吗?是的。如果你知道应该在列表中的东西以及一般正常运行的位置,你就能在这里暂停,通常这都非常简单。找到程序,然后在malwr.com或者VirusTotal上查找它的散列,看看它有没有感染了其他什么,然后删除。


2、DNS 缓存(DNS Cache)

打开命令提示符,并输入【ipconfig/displaydns】。看看这些待反测的区域,有没有任何的异常现场?在VirusTotal或者其他地方寻找他们解析的域名及IP,看是否有与之相连的样本。如果有,那么你肯定被感染了。这里有一个现成的例子:

3、WMIC 进程列表(WMIC Process List)

这是WMIC另一个受欢迎的项目,输入【wmic process list full|more】,或者更紧凑但是更长的输出【wmic process get description,processed,parentprocessid,commanline/format:csv.】。寻找在奇怪地方运行的东西或者恶意、随机、名称怪怪的程序。


4、WMIC 服务列表(WMIC Service List)

如果你不清楚自己在寻找什么,那这个用起来可能比较困难。但是检测方便并且容易通过路径或者exe名称发现恶意软件。格式与其他的相似,或者你也可以得到更具体“get”版本。输入【wmic service list full| more】或者【wmic service get name,processid,startmode,state,status,pathname /format:csv】。这里有个小例子展示了只有服务名称和路径的情况。


5、WMIC 工作列表(WMIC Job List)

这是个看起来最不可能发现任何东西的项目,因为绝大多数恶意软件都不用jobs,但是在例如MPlug的一些版本中,是很容易检测出的。输入【wmic job list full】,你能够获得一个【没有可用实例】的回执,这就意味着没有已安排的项目在执行。

6、Netstat

莫忘记基础,如果IP是谷歌或者stealyourbanknumber.su.【netstat -abno】的,输出可能需要搜索来查看,即使这样可以还是寻找奇异的外部站点端口号码,如25、8080、6667等等。

Netstat控制如下:

-a 显示所有连接和监听端口

-b 显示参与创建每个连接或者监听端口的可执行文件

-n 以数字形式显示地址和端口号码

-o 显示拥有的每个与链接相关的进程ID

7、批处理文件版本

用一种简单可重复的方式完成这些WMIC东西并生成一份报告,怎么样呢?我已经有了。把东西都丢到一个批处理文件中,然后设置一个主机名参数,你甚至能够在全网中使用它——获得其他计算机的适当权限,方便进行远程评估。

这个脚本可以让你更清楚的了解HTML格式的输出,其中包括了你从电脑中获取的信息:

wmic /node:%1 computersystem get model,name,username,domain /format:htable > c:\triage-%1.html
wmic /node:%1 startup list full /format:htable >> c:\triage-%1.html
wmic /node:%1 process get description,processid,parentprocessid,commandline /format:htable >> c:\triage-%1.html
wmic /node:%1 service get name,processid,startmode,state,status,pathname /format:htable >> c:\triage-%1.html
wmic /node:%1 job list full /format:htable >> c:\triage-%1.html