IceSword,也称为冰刀或者冰刃,有些地址简称IS,是USTC的PJF出品的一款系统诊断、清除利器。
清除流氓软件工具无数,为什么称之为第一利器呢,有如下的理由:
1)你是不是经常有文件删不掉?如CNNIC或者3721的文件?
2)是不是经常有注册表不让你修改?如CNNIC的注册表是它自动保护起来的
3)是不是经常有进程杀不掉,提示“无法完成”?
4)是不是浏览器有N多的插件?
5)是不是有一些程序运行的时候隐藏了进程和端口?
6) 是不是有一些流氓软件的文件在资源管理器下看都看不到?
1、绝大多数所谓的进程工具都是利用Windows的Toolhlp32或psapi再或ZwQuerySystemInformation系统调用(前二者最终也用到此调用)来编写,随便一个ApiHook就可轻轻松松干掉它们,更不用说一些内核级后门了;极少数工具利用内核线程调度结构来查询进程,这种方案需要硬编码,不仅不同版本系统不同,打个补丁也可能需要升级程序,并且现在有人也提出过防止此种查找的方法。而IceSword的进程查找核心态方案是目前独一无二的,并且充分考虑内核后门可能的隐藏手段,目前可以查出所有隐藏进程。
2、绝大多数工具查找进程路径名也是通过Toolhlp32、psapi,前者会调用RtlDebug***函数向目标注入远线程,后者会用调试api读取目标进程内存,本质上都是对PEB的枚举,通过修改PEB就轻易让这些工具找不到北了。而IceSword的核心态方案原原本本地将全路径展示,运行时剪切到其他路径也会随之显示。
3、进程dll模块与2的情况也是一样,利用PEB的其他工具会被轻易欺骗,而IceSword不会弄错(有极少数系统不支持,此时仍采用枚举PEB)。
4、 IceSword的进程杀除强大且方便(当然也会有危险)。可轻易将选中的多个任意进程一并杀除。当然,说任意不确切,除去三个:idle进程、 System进程、csrss进程,原因就不详述了。其余进程可轻易杀死,当然有些进程(如winlogon)杀掉后系统就崩溃了。
5、对于端口工具,网上的确有很多,不过网上隐藏端口的方法也很多,那些方法对IceSword可是完全行不通的。其实本想带个防火墙动态查找,不过不想弄得太臃肿。这里的端口是指windows的IPv4 Tcpip协议栈所属的端口,第三方协议栈或IPv6栈不在此列。
目前一些流氓软件采取的手段无所不用其极:线程注入,进程隐藏,文件隐藏,驱动保护,普通用户想把文件给删了或者找出进程来,是非常困难的。有的是看到了,删不掉,杀不掉,干着急,实在不行,还需要从另外的作系统去删除文件。比如采取驱动保护的流氓软件如CNNIC,雅虎助手之类,.sys驱动加载的时候,它过滤了文件和注册表作,直接返回一个true,Windows提示文件删了,但一看,它还在那里。象一些文件删除工具如unclocker都无效。IceSword是目前所知唯一可以直接删除这类已经加载的驱动和采取注册表保护的工具。象清除CNNIC这类流氓软件,不需要重启也可以完成了。
IS采取了很多新颖的、内核级的方法和手段,关于它的技术细节不在本文讨论之列,下面主要从使用者角度讲一下它的主要功能:
■查看进程
包括运行进程的文件地址、各种隐藏的进程以及优先级。用它也可以轻易杀掉用任务管理器、Procexp等工具杀不掉的进程。还可以查看进程的线程、模块信息,结束线程等。
■查看端口
类似于cport、ActivePort这类工具,显示当前本地打开的端品以及相应的应用程序地址、名字。包括使用了各种手段隐藏端口的工具,在它下面,都一览无余。
■内核模块 加载到系统内和空间的PE模块,一般都是驱动程序*.sys,可以看到各种已经加载的驱动。包括一些隐藏的驱动文件,如IS自身的IsDrv118.sys,这个在资源管理器里是看不见的。
■启动组
Windows启动组里面的相关方式,这个比较容易理解了。不过可惜的是没有提示删除功能,只能查看。
■服务
用于查看系统中的被隐藏的或未隐藏的服务,隐藏的服务以红色显示。提供对服务的作如启动,停止,禁用等。
■SPI和BHO
这两个是目前流氓软件越来越看中的地方。SPI是服务提供接口,即所有Windows的网络作都是通过这个接口发出和接收数据包的。很多流氓软件把这个.dll替换掉,这样就可以监视所有用户访问网络的包,可以针对性投放一些广告。如果不清楚的情况下,把这个.dll删掉,会造成网络无法使用,上不了网。LSPFix等工具就是针对这个功能的。BHO就更不用说了,浏览器的辅助插件,用户启动浏览器的时候,它就可以自动启动,弹出广告窗口什么的。这两项仅提供查看的功能。
■SSDT (System Service Descriptor Table)
系统服务描述表,内核级后门有可能修改这个服务表,以截获你系统的服务函数调用,特别是一些老的rootkit,像上面提到的ntrootkit通过这种hook实现注册表、文件的隐藏。被修改的值以红色显示,当然有些安全程序也会修改,比如regmon。
■消息钩子
若在dll中使用SetWindowsHookEx设置一全局钩子,系统会将其加载入使用user32的进程中,因而它也可被利用为无进程木马的进程注入手段。
■线程创建和线程终止监视
“监视进线程创建”将IceSword运行期间的进线程创建调用记录在循环缓冲里,“监视进程终止”记录一个进程被其它进程Terminate的情况。举例说明作用:一个木马或病毒进程运行起来时查看有没有杀毒程序如norton的进程,有则杀之,若IceSword正在运行,这个作就被记录下来,你可以查到是哪个进程做的事,因而可以发现木马或病毒进程并结束之。再如:一个木马或病毒采用多线程保护技术,你发现一个异常进程后结束了,一会儿它又起来了,你可用IceSword发现是什么线程又创建了这个进程,把它们一并杀除。中途可能会用到“设置”菜单项:在设置对话框中选中“禁止进线程创建”,此时系统不能创建进程或者线程,你安稳的杀除可疑进线程后,再取消禁止就可以了。
■注册表Regedit有什么不足?
说起Regedit的不足就太多了,比如它的名称长度限制,建一个全路径名长大于255字节的子项看看(编程或用其他工具,比如 regedt32),此项和位于它后面的子键在regedit中显示不出来;再如有意用程序建立的有特殊字符的子键regedit根本打不开。
IceSword中添加注册表编辑并不是为了解决上面的问题,因为已经有了很多很好的工具可以代替Regedit。IceSword中的“注册表”项是为了查找被木马后门隐藏的注册项而写的,它不受目前任何注册表隐藏手法的蒙蔽,真正可靠的让你看到注册表实际内容。
如CNNIC添加的HKLM\SYSTEM\CurrentControlSet\Services\dnport这个键值,就是通过它来加载cndport.sys这个驱动文件的。通过Regedit你删除会直接出错,根本无法删除。而用IS就可以轻易干掉。
■文件作
IS的文件作有点类似于资源管理器,虽然作起来没有那么方便,但是它的独到功能在于具备反隐藏、反保护的功能。还有对安全的副作用是本来 system32\config\SAM等文件是不能拷贝也不能打开的,但IceSword是可以直接拷贝的。类似于已经加载的驱动,如CNNIC的 cdnport.sys这个文件,目前只有IS可以直接把它删除,其它无论什么方式,都无法破除驱动自身的保护。
即使对大多数有用的unlocker,CopyLock、KillBox都是无效的。利用Windows的系统还没有完全加载的删除机制,通过在 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager下增加PendingFileRenameOperations,这个是所有删除顽固文件工具的最后一招,但它也被驱动保护变得无效了。以前的情况就是需要重启启动到另外一个作系统下删除。
----那帮做流氓软件的可真是手段无所不用其及。
IceSword内部功能是十分强大的。可能您也用过很多类似功能的软件,比如一些进程工具、端口工具,但是现在的系统级后门功能越来越强,一般都可轻而易举地隐藏进程、端口、注册表、文件信息,一般的工具根本无法发现这些“幕后黑手”。IceSword使用大量新颖的内核技术,使得这些后门躲无所躲.
IceSword大量采用新颖技术,有别于其他普通进程工具,比如IceSword就可以结束除Idle进程、System进程、csrss进程这三个进程外的所有进程,就这一点,其他同类软件就是做不到的。当然有些进程也不是随便可以结束的,如系统的winlogon.exe进程,一旦杀掉后系统就崩溃了,这些也需要注意。