技术分析:流氓软件及反流氓软件

流氓软件的技术五花八门,任何一项功能都有可能成为流氓技术,就象武器,用好了可以伸张正义,用歪了却成为罪恶的帮凶 。
首先我从win32下的一些流氓着数分析开始:
1 。我想做为一个流氓软件,首先要做到的是实时运行,譬如在注册表的run下,在boot下增加它的启动 。这应该是比较老的方法,以前 3721好象就是在run下,但是现在一般的人都知道了 。
2 。作为流氓软件,已经改变了以前一些木马的特性了,他没必要使自己一定要实时启动了,而是需要自己的时候再启动,譬如说打开一个浏览器窗口,这是一般流氓软件的方法,因为他需要连上网才能有利益可图,所以浏览器肯定是流氓软件必定监控的进程 。
3 。使用BHO插件,这种技术早先特别流行,这是微软提供的接口,本意是让IE浏览器可以扩充功能 。每当一个ie浏览器启动的时候,都会调用BHO下必要的插件,流氓软件就是利用这一点 。监控了浏览器所有事件与信息 。
4 。还有最笨的办法就是利用进程快照监控进程,判断有它自己所监控的进程启动,就使用atl得到浏览器指针,从而监控浏览器所有事件与信息 。
5,还有一种方法就是使用spi,这是我在网上看到的 。spi是分层协议,当winsock2启动的时候都会调用它的dll,可以监控所有应用层数据包 。从而监控用户信息,而且能实时启动 。
6 。hook方法,hook技术可以所应用太广泛了,特别是监控方面 。所以流氓软件也不会错过 。首先应用的是api函数hook,譬如windows核心编程里的apihook类,或者微软的detous都可以完成,两者方法其实相同就是修改IDT函数入口地址 。api hook钩住createprocess 就可以监控进程,比进程快照性能更强,可以钩住spi下的函数可以完成spi下的所有功能 。还有消息hook,鼠标消息,键盘消息,日子消息等等钩子,方法实在太多,都可以利用 。
上面列举了一些流氓软件的使用方法,但是流氓软件的一个特性是他无法卸载 。所以它又要使用下面的方法了
因为上面的很多方法都可以删除注册表卸载他们,那怎么办呢,那就会时时监控,它会在它的进程,或者线程里监控注册表项,设置一个循环监控,发现没了就继续安装,增加 。我想这应该是很多流氓软件的技术 。
那现在又出现了一个新问题,那就是流氓软件的进程线程要是结束掉怎么办呢???看西面
7 。一种方法就是上面的api hook技术,钩住openprocess ,用自己的函数判断只要打开的是自己进程就返回正确,使用这种方法,用户或者一般的软件就无法结束它的进程了 。
8 。还有一种是上面象bho,spi根本没有进程 。一般的用户也无法删除他
9 。还有一种方法是远程线程,这个技术用的也很普遍,首先是象api hook一样向目标进程里申请一段内存空间,然后使用自己映射过去,然后使用CreateRemoteThread创建远程线程 。一般很多流氓软件或者以前的一些木马程序,都是把线程注入到系统进程譬如explorer,service等等,使用用户或者一般的杀毒软件很难处理或者结束 。。
10 。注册成服务后,也可以简单的隐藏进程 。还有更可笑的是把自己的进程名跟一些系统进程名譬如lsass相同后,也就无法结束了 。

    推荐阅读