打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
dll插入型木马病毒的原理,查杀与防范-飞翔软件教程-52z.com
写在前面:很多人的系统经常出现莫名其妙的问题,上网也经常弹出各类奇怪的窗口,各类木马病毒呈爆炸式的增长,大多是中了木马或病毒所致,一直想写一篇比较深入的关于dll插入型木马病毒的原理,查杀与防范的文章,可惜囿于时间所限,一直也只是打腹稿,未能成型,五一回家终于有了时间,于是就有了这篇文章





在文章开始前,我觉得有必要说明一些名词,先列表如下



Rootkit:可能你对这个名词并不太陌生,rising的卡卡上网助手的宣传里就提到过采用很多Anti-rootkit技术,那说明Rootkit肯定不是什么好东西,呵呵,其实这最早是个linux下的名词,一般是指用来隐藏直接可获得管理员权限的后门的技术工具,后来衍生到了win下。



dll:简单说DLL 是一个包含可由多个程序同时使用的代码和数据的库,所以dll也叫动态链接程序库,当exe程序运行时,会同时调用很多dll文件来实现扩展功能。



dll插入:把一个实现了后门功能的代码写成一个DLL文件,然后插入到一个EXE文件当中,使其可以执行,这样就不需要占用进程,也就没有相对应的PID号,也就可以在任务管理器中隐藏。我们可以这样理解,dll好比一个寄生虫,而exe则是宿主,把dll注入到exe程序运行的空间中,我们的dll才能活下来,一旦exe程序被终止,dll也随之死去。







相信看了上面的列表,大家应该对dll插入有了一个大概的影象,其实dll插入技术也叫“远程线程注入技术”,并不是什么很新鲜的玩意,属于rootkit技术中的一种,而rootkit技术大致可分为ring0(内核级别)和ring3(用户级别)两类,ring3下有很多技术如:远程线程注入技术,hook api 技术,端口复用技术等等,而要达到ring0级别的话,就要涉及到驱动开发了,如果你想深入了解rootkit,可以去www.rootkit.com上去看看。



假设我们已经编好了dll中的相关代码,那么如何让它运行呢,从开始我已经提过,我们要找一个宿主,也就是一个exe进程来加载我们的dll,而加载dll又可以分为以下几种方式:



一:利用系统中的rundll32.exe加载




经常会有人在注册表的启动项中会发现类似键值

rundll32.exe c:\temp\XXX.dll dllmain

那么是什么意思呢?,其实rundll32.exe这个程序顾名思义,运行32位的dll程序,功能就是以命令行的方式调用动态链接程序库,其命令行下的使用方法为:

Rundll32.exe dll的名字 调用的函数名

如果我们的dll中编写了test()这个函数,那么调用方式就是:Rundll32.exe C:\dlltest.dll test

这样dll中的函数就得到运行了。



二:替换系统中的DLL文件


这可以说是上面的升级版了,它把实现了后门功能的代码做成一个和系统匹配的DLL文件,并把原来的DLL文件改名。遇到应用程序请求原来的DLL文件时, DLL后门就启一个转发的作用,把"参数"传递给原来的DLL文件;如果遇到特殊的请求时(比如客户端),DLL后门就开始,启动并运行了,但是实现却不太容易,所以没有流行开来。



三:就是我们要说的dll注入技术了



其意义是将DLL文件嵌入到正在运行的系统进程当中。在Windows系统中,每个进程都有自己的私有内存空间,但还是有种种方法来进入其进程的私有内存空间,来实现动态嵌入式。

有什么好处呢,首先是实现了隐藏,任务管理器中看不见我们的dll后门,其次windows和linux 不同,不能删除正在运行的程序,这就是为什么经常删东西时候会提示“xxx正在运行,无法删除。可能最重要的是可以穿透绝大多数防火墙了,设想防火墙肯定不会阻拦ie,那我们把dll插入ie进程,不就穿透防火墙了吗。



那么我们如何实现把dll注入到exe中呢?dll自己又没长腿,呵呵,我们需要一个dlllorder.exe,再哪弄?自己写呗,把代码写到dlllorder.exe中,只要运行dlllorder.exe,相应的dll文件就可以注入到任何程序中了。有了dlllorder就好办了,只要能让系统每次自动启动dlllorder,后门的生存期就大大增长了,至于如何自启动,有注册表,服务,BHO,activex,计划任务等等,太多了,就不介绍了。



dll木马的防范与清除




对于第一类dll文件

下次看到进程中有rundll32.exe,则只要找到它调用的dll就可以kill掉隐藏的程序了



对于第三类dll文件



第一招: 对于dll的隐藏地,temp,system32,windows这三个文件夹是最常见的,如果你哪天发现temp里某个dll文件无法删除,那么几乎可以肯定这个文件有问题了,

安装好系统和所有的应用程序之后,备份system32目录下的EXE和DLL文件:打开CMD,来到WINNT\system32目录下,执行:

复制内容到剪贴板

代码:

dir *.exe >exefirst.txt dir *.dll >dllfirst.txt 这样,就会把所有的EXE和DLL文件备份到exe.txt和dll.txt文件中,日后,如发现异常,可以使用相同的命令再次备份EXE和DLL文件

复制内容到剪贴板

代码:

dir *.exe >exeSecond.txt dir *.dll >dllSecond.txt 并使用:

复制内容到剪贴板

代码:

fc exefirst.txt exeSecond.txt >dllresult.txt fc dllfirst.txt dllSecond.txt >exeresult.txt 其意思为使用FC命令比较两次的EXE文件和DLL文件,并将比较结果保存到exedll.txt文件中。通过这种方法,我们就可以发现多出来的EXE和DLL文件,并通过文件大小,创建时间来判断是否是DLL后门。





第二招:

运用相关工具如,icesword ,ring防火墙,重点检测ie,exeplorer桌面进程中是否有未知的dll加载文件,其实我更喜欢用ring防火墙,里面有未知dll都以红色显示,很方便看





第三招:



通过创建时间来查找,利用win中的搜索文件功能,设定时间,查找可以文件





第四招:



定期检查系统自动加载的地方,如注册表启动项,服务列表,win.ini,system.ini。。。。,可以去网上搜索更多启动的地方





第五招:



用相关工具查看端口列表,如果你不想用cmd的话,注意下每个tcp连接后的应用程序路径,也可以发现可以文件





第六招:



当我们运用前面几招找出了可疑文件,如何删除呢?如何杀“寄生虫”? 最简单的办法就是让“宿主”死去 ,结束被插入了的exe进程,类似ie,桌面这类进程可以直接用任务管理器kill,这里提一下,kill桌面exeplorer进程时,会发现任务栏消失了,那么怎么删dll呢,按ctrl+alt+del调出任务管理器,依次点菜单栏的 文件--新建任务,这时候会出现一个“创建新任务”的窗口,点下方的“浏览”找到插入桌面的dll文件,也就是“寄生虫”了,呵呵,右键删之,删了后在“创建新任务”的窗口运行栏中输入“exeplorer"确定后,我们的宿主就复活了,哈哈,体内的寄生虫也没了。



如果插入的是crss.exe等系统核心进程呢?无法杀死宿主咋办?没关系,我们还有安全模式啊,开机按f8进入安全模式,找到你确定的可疑文件,删之,这个世界终于清净了。。。。









写在后面:现实中分析,查杀可疑文件当然没有这么简单,但只要核心抓住了就可以了,不管它72变,照样现出原形,最后祝所有人远离木马,病毒!打字打的可真累啊,虽然很泛泛,希望对那些对系统不太熟悉的网友能有所帮助~





参考了部分网络文章和书籍,一并感谢
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
巧妙从进程中判断出病毒和木马 eNet硅谷动力
s32中的文件细说
[揭开DLL木马神秘面纱-删除木马
windows任务管理器
SSM使用方法实例教程
十七点安全知识 超级详细了解进程和病毒知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服