流氓软件的技术五花八门,任何一项功能都有可能成为流氓技术,就象武器,用好了可以伸张正义,用歪了却成为罪恶的帮凶。 K3Bw3j 9
首先我从win32下的一些流氓着数分析开始: Bf.iRh0Q5
1。我想做为一个流氓软件,首先要做到的是实时运行,譬如在注册表的run下,在boot下增加它的启动。这应该是比较老的方法,以前 3721好象就是在run下,但是现在一般的人都知道了。 D4\[D8pD
2。作为流氓软件,已经改变了以前一些木马的特性了,他没必要使自己一定要实时启动了,而是需要自己的时候再启动,譬如说打开一个浏览器窗口,这是一般流氓软件的方法,因为他需要连上网才能有利益可图,所以浏览器肯定是流氓软件必定监控的进程。 T 5F)
3。使用BHO插件,这种技术早先特别流行,这是微软提供的接口,本意是让IE浏览器可以扩充功能。每当一个ie浏览器启动的时候,都会调用BHO下必要的插件,流氓软件就是利用这一点。监控了浏览器所有事件与信息。 t#xfso`4o
4。还有最笨的办法就是利用进程快照监控进程,判断有它自己所监控的进程启动,就使用atl得到浏览器指针,从而监控浏览器所有事件与信息。 ~yt 7L,OQ
5,还有一种方法就是使用spi,这是我在网上看到的。spi是分层协议,当winsock2启动的时候都会调用它的dll,可以监控所有应用层数据包。从而监控用户信息,而且能实时启动。 ,5x#o
6。hook方法,hook技术可以所应用太广泛了,特别是监控方面。所以流氓软件也不会错过。首先应用的是api函数hook,譬如windows核心编程里的apihook类,或者微软的detous都可以完成,两者方法其实相同就是修改IDT函数入口地址。api hook钩住createprocess 就可以监控进程,比进程快照性能更强,可以钩住spi下的函数可以完成spi下的所有功能。还有消息hook,鼠标消息,键盘消息,日子消息等等钩子,方法实在太多,都可以利用。 Cv@)tb
上面列举了一些流氓软件的使用方法,但是流氓软件的一个特性是他无法卸载。所以它又要使用下面的方法了 JA*+F1s
因为上面的很多方法都可以删除注册表卸载他们,那怎么办呢,那就会时时监控,它会在它的进程,或者线程里监控注册表项,设置一个循环监控,发现没了就继续安装,增加。我想这应该是很多流氓软件的技术。 {-lpYD^k3
那现在又出现了一个新问题,那就是流氓软件的进程线程要是结束掉怎么办呢???看西面 ap8q`a{j^
7。一种方法就是上面的api hook技术,钩住openprocess ,用自己的函数判断只要打开的是自己进程就返回正确,使用这种方法,用户或者一般的软件就无法结束它的进程了。 9GRQ^E
8。还有一种是上面象bho,spi根本没有进程。一般的用户也无法删除他 eyuyaSE
9。还有一种方法是远程线程,这个技术用的也很普遍,首先是象api hook一样向目标进程里申请一段内存空间,然后使用自己映射过去,然后使用CreateRemoteThread创建远程线程。一般很多流氓软件或者以前的一些木马程序,都是把线程注入到系统进程譬如explorer,service等等,使用用户或者一般的杀毒软件很难处理或者结束。。 QWnGolN
10。注册成服务后,也可以简单的隐藏进程。还有更可笑的是把自己的进程名跟一些系统进程名譬如lsass相同后,也就无法结束了。 2]<.m]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ j XH9Pq4
从我上面列举的方法已经差不多可以形成好几款流氓软件了。但是你别高兴太早,因为这些技术只是应用层的,现在出现了一堆驱动层的反流氓软件工具,譬如超级兔子,完美卸载,木马克星,雅虎助手,还有现在火热的360安全卫士。 i)'tt9f$
这些反流氓软件的方法删除以上流氓软件软件就比较简单。优先于流氓软件启动,截获所有访问流氓软件文件的irp,然后删除注册表项,删除文件。轻松的完成了反流氓任务。 L+*:VP6WD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ `yP`5a/
为了针对这些反流氓软件,流氓软件出现了内核层的了。 _ !E&