2009年8月29日星期六

有惊无险两则

  工作过程中,无意用IceSword发现两个值得怀疑的地方。以为90%中病毒了,折腾了大半天,最后总算是搞清楚了原委,也解除了警报。由于在Google的过程中并没有得到太多的帮助,因此在这里把过程和结论记录一下,供有关人员参考。

a开头的未知驱动

  一开始是通过查蓝屏原因时查到了某些奇怪的驱动。这些sys文件一般用a开头,8.3标准文件名,但是明显是随机生成的,每次重新启动都会换名字。用IceSword的“内核模块”能看见,路径在system32/drivers目录下,但是却没法找到对应的文件映像。估计是临时生成的驱动,加载之后便删除了,所以找不到。另外,在安全模式下没有看到这个驱动的加载。种种行为,像极了病毒。
  开始紧张起来,在Google上也搜到类似的询问,但一般没有明确的结论。有人用RootKit Unhooker把内存中的驱动内容dump了出来,据说两次dump的内容也是不一样的。线索貌似断了。
  后来发现还有类似sp??.sys这样的驱动也有这种行为模式,不过这个在Google上很快搜到了结论,——是Daemon Tools搞的鬼。既然如此,不知道那个a开头的未知驱动是不是也是这个原因?按道理,既然做了个sp??.sys,也就不应该另外再搞一套了。
  但说不定是它集成了第三方的RootKit呀?于是还是开了个虚拟机做了一下测试,4.1x版本的Daemon Tools Lite,一装就发现中奖了。果然是这个东东搞的鬼!装sptd之后sp??.sys就会出现了——这个是已知的,重启之后再安装Daemon Tools本身,也还好。然后再重启,a*.sys马上出现了。为了确认,当场进行卸载,——卸了还没等重启,a*.sys就没了。再装一次也不用重启就又出现了。于是铁证如山。
  这样看来,Daemon Tools的手脚是不怎么干净的。家里的4.03版貌似还不会,也不知道是4.1x的问题还是Lite的缘故。总之,先记下吧。
  之后发现其实Google上还是能搜到只言片语的。似乎有高人已经知道是Daemon Tools造成的,但内核论坛和百度知道里面反而没人解释。大概高人们的圈子比较小吧。

SSDT中NtConnectPort被Hook到Unknown?

  在看SSDT的时候,意外发现除了sptd干的好事之外,还有一个很奇怪的Hook。NtConnectPort被Hook到了名为Unknown的模块上。Unknown嘛,就是不知道了,很明显是被保护起来了。
  同样,在Google里面找不到多少信息,连老外的信息都没有什么有价值的回答,只好自己找。07年有人问过这个问题,有一种解答认为,dump出来也没有什么意义。因为这种Unknown的模块很可能就是人家开一片内存,把代码往里面一拷,然后Hook过去。除了去读反汇编代码,没有什么好办法。
  最后还是虚拟机解决——VMWare Inc.真是好公司!因为估计这种事情一般都是安全产品会去做,所以开了个虚拟机开始装各种安全软件。先试了360,没问题,就算装了保险箱也没问题。接下来是Symantec 10,Hook有了!明白了,是Symantec干的好事。
  唉,现在的黑软和毒,真是越来越难对付了。要动用到IceSword和RKU,这叫我以后怎么教别人用啊?