XP中被嵌入到可信进程(如:Explorer.exe)的木马dll文件

时间:2022-08-28 22:01:18
最近家里的电脑的浏览器被窜改,我试着将浏览器恢复,并删除了注册表的键值,当我没有重新启动的时候是可以恢复的,但是当我们重新启动的时候,有两个dos文件在运行,但是一下就消失了,没有看到命令,我也试过系统恢复,但是一开始是没事的,后来还是被改了,于是我想应该是被嵌入的dll文件导致的,因为我试图寻找进程,但是总有两个更新进程在,一个是提示16位,一个是32位,我想应该是这个文件的问题,但是不知道如何去找到和修改这个文件,请教!

14 个解决方案

#1


自己提前一下

#2


实际上这个为题很复杂,首先确定病毒是捆绑上还是感染上explorer.exe,如果是捆绑上就把注册表run或runonce下的捆绑去掉,如果是感染上,你应该了解一下pe文件格式,做一下相应的修改。

#3


终于被我找到了

#4


这个不是病毒,注册表只是修改了IE的设置,我想他是嵌入在Update的进程中的,杀毒软件可能也是查不出来的,即使删除也可能被系统恢复!

#5


动态嵌入式DLL木马发现与清除

  随着MS的操作系统从Win98过渡到Winnt系统(包括2k/xp/2003),MS的任务管理器也一下子脱胎换骨,变得火眼金睛起来(在WINNT下传统木马再也无法隐藏自己的进程),这使得以前在win98下靠将进程注册为系统服务就能够从任务管理器中隐形的木马面临前所未有的危机,所以木马的开发者及时调整了开发思路,所以才会有今天这篇讨论如何清除动态嵌入式DLL木马的文章。 

  首先,我们来了解一下什么是动态嵌入式木马,为了在NT系统下能够继续隐藏进程,木马的开发者们开始利用DLL(Dynamic Link Library 动态链接库)文件,起初他们只是将自己的木马写成DLL形式来替换系统中负责Win Socket1.x的函数调用wsock32.dll(Win Socket2中则由WS2_32.DLL负责),这样通过对约定函数的操作和对未知函数的转发(DLL木马替换wsock32.dll时会将之更名,以便实现日后的函数转发)来实现远程控制的功能。但是随着MS数字签名技术和文件恢复功能的出台,这种DLL马的生命力也日渐衰弱了,于是在开发者的努力下出现了时下的主流木马--动态嵌入式DLL木马,将DLL木马嵌入到正在运行的系统进程中.explorer.exe、svchost.exe、smss.exe等无法结束的系统关键进程是DLL马的最爱,这样这样在任务管理器里就不会出现我们的DLL文件,而是我们DLL的载体EXE文件.当然通过进一步的加工DLL木马还可以实现另外的一些如端口劫持/复用(也就是所谓的无端口)、注册为系统服务、开多线程保护、等功能。简而言之,就是DLL木马达到了前所未有的隐蔽程度。 

  那么我们如何来发现并清除DLL木马呢? 

  一、从DLL木马的DLL文件入手,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录:运行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中,日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了.这是我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运行CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DLL掉,我们可以先把它移到回收站里,若系统没有异常反应再将之彻底删除或者提交给杀毒软件公司。 

  二、上文也曾提到一些系统关键进程是这类木马的最爱,所以一旦我们怀疑系统已经进驻了DLL木马,我们当然要对这些关键进程重点照顾了,怎么照顾?这里推荐一个强大的脱壳工具工具Procedump.exe他可以帮您看出进程到底调用了那些DLL文件,但是由于有的进程调用的DLL文件非常多,使得靠我们自己去一个核对变的不太现实,所以我们会用到一个shotgun写的NT进程/内存模块查看器ps.exe,用命令ps.exe /a /m >nowdlls.txt将系统目前调用地所有DLL文件地名称保存到nowdlls.txt,然后我们再用fc将之于事先备份dllback.txt比较一下,这样也能够缩小排查范围。 

  三、还记得木马的特征之一端口么?所有的木马只要进行连接,只要它接受/发送数据则必然会打开端口,DLL木马也不例外,这也为我们发现他们提供了一条线索,我们可以使用foundstone的进程端口查看工具Fport.exe来查看与端口对应的进程,这样可以将范围缩小到具体的进程,然后结合Procedump来查找DLL木马就比较容易了.当然有如上文提到的有些木马会通过端口劫持或者端口重用的方法来进行通信,139、80、1443、等常见端口则是木马的最爱。因为即使即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80 ESTABLISHED 的情况,稍微疏忽一点,您就会以为是自己在浏览网页(防火墙也会这么认为的)。所以光看端口还不够,我们要对端口通信进行监控,这就是第四点要说的。 

  四、我们可以利用嗅探器来了解打开的端口到底在传输些什么数据。通过将网卡设为混杂模式就可以接受所有的IP报文,嗅探程序可以从中选择值得关注的部分进行分析,剩下的无非是按照RFC文档对协议进行解码。这样就可以确定木马使用的端口,结合Fport和Procedump我们就能够查找到该DLL木马了。至于嗅探器个人推荐使用IRIS,图形界面比较容易上手。 

  五、通常说道查杀木马我们会习惯性地到注册表碰碰运气。以前可能还蛮有效的,但如果碰到注册为系统服务的木马(原理:在NT/2K/XP这些系统中,系统启动时会加载指定的服务程序),这时候检查:启动组/注册表/autoexec.bat/win.ini/sysytem.ini/wininit.ini/*.inf(例如autorun.inf)/config.sys等文件就发现不了丝毫的异样,这时候我们就应该查看一下系统服务了:右击我的电脑--管理--服务和应用程序--服务,这时您会看到100多个服务,(MS也真是的,其中75%对个人用户无用,可以禁止)。慢慢找吧,看谁不顺眼就把它拎出来:),当然如果您以前曾经用导出列表功能对服务备份过,则用文件比较的方法会很容易发现哪些是外来客,这时您可以记录下服务加载的是那个文件,然后用Resource Kits里提供的srvinstw.exe来移除该服务并清除被加载的文件。 

  通过以上五步,基本能发现并清除狡猾的动态嵌入式DLL木马了,也许您也发现如果适当地做一些备份,会对我们的查找木马的过程有很大的帮助,当然也会减轻不少工作的压力哦。 

#6


已经清除了吗?具体是怎么做的?

重新启动时有dos窗口闪过去的话,那肯定在run或者服务里面有痕迹的吧?

#7


"重新启动时有dos窗口闪过去的话,那肯定在run或者服务里面有痕迹的吧?"里面我全看了,没有的。就是我说的方式,可能他嵌入的是那种run里面的应用程序,但是那个程序是无法删除的。我恢复的浏览器的。可能嵌入的dll文件还在!就是一种消极的反修改!

#8


建议用木马克星查一下内存就可以看出是否有多余的DLL了:)
顺带问一句:木马克星是如何查出不是系统的DLL的,难道它把系统的全部都统计过了??

#9


木马的dll文件不能反注册吗?
试试regsvr32 -u filename.dll

#10


pepsi1980(这只老鼠不会游泳) :
呵呵,可能是这样的,可以用木马克星来查出木马。但是我家里的电脑却不是中木马,只是被修改的过程和木马的实现方式差不多,其实我想就是“让程序隐藏执行”而已。这就不知道,木马克星是否有用了!

#11


nineclock(本人成分:59%的帅,40%的酷,1%的微量羞涩(-'_'-)) :
你的方法可能是可以的,但是要知道,有时候连自己多不知道,他藏在那个dll文件内部就麻烦了。

#12


嘿嘿,杀木马我还是比较在行的,木马藏身的地方很多!!所以我专门写了一个操作注册表的,查看木马隐身地方的软件,楼主,要的话留个邮箱或者给我发短信息:)

#13


要是楼上能给代码就好了!呵呵。robocode_java@163.com

#14


hongweijin(革命力量) copy了那么多,其实不就是一个远程线程插入么。

现在有些东*在BHO那里。

#1


自己提前一下

#2


实际上这个为题很复杂,首先确定病毒是捆绑上还是感染上explorer.exe,如果是捆绑上就把注册表run或runonce下的捆绑去掉,如果是感染上,你应该了解一下pe文件格式,做一下相应的修改。

#3


终于被我找到了

#4


这个不是病毒,注册表只是修改了IE的设置,我想他是嵌入在Update的进程中的,杀毒软件可能也是查不出来的,即使删除也可能被系统恢复!

#5


动态嵌入式DLL木马发现与清除

  随着MS的操作系统从Win98过渡到Winnt系统(包括2k/xp/2003),MS的任务管理器也一下子脱胎换骨,变得火眼金睛起来(在WINNT下传统木马再也无法隐藏自己的进程),这使得以前在win98下靠将进程注册为系统服务就能够从任务管理器中隐形的木马面临前所未有的危机,所以木马的开发者及时调整了开发思路,所以才会有今天这篇讨论如何清除动态嵌入式DLL木马的文章。 

  首先,我们来了解一下什么是动态嵌入式木马,为了在NT系统下能够继续隐藏进程,木马的开发者们开始利用DLL(Dynamic Link Library 动态链接库)文件,起初他们只是将自己的木马写成DLL形式来替换系统中负责Win Socket1.x的函数调用wsock32.dll(Win Socket2中则由WS2_32.DLL负责),这样通过对约定函数的操作和对未知函数的转发(DLL木马替换wsock32.dll时会将之更名,以便实现日后的函数转发)来实现远程控制的功能。但是随着MS数字签名技术和文件恢复功能的出台,这种DLL马的生命力也日渐衰弱了,于是在开发者的努力下出现了时下的主流木马--动态嵌入式DLL木马,将DLL木马嵌入到正在运行的系统进程中.explorer.exe、svchost.exe、smss.exe等无法结束的系统关键进程是DLL马的最爱,这样这样在任务管理器里就不会出现我们的DLL文件,而是我们DLL的载体EXE文件.当然通过进一步的加工DLL木马还可以实现另外的一些如端口劫持/复用(也就是所谓的无端口)、注册为系统服务、开多线程保护、等功能。简而言之,就是DLL木马达到了前所未有的隐蔽程度。 

  那么我们如何来发现并清除DLL木马呢? 

  一、从DLL木马的DLL文件入手,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录:运行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中,日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了.这是我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运行CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DLL掉,我们可以先把它移到回收站里,若系统没有异常反应再将之彻底删除或者提交给杀毒软件公司。 

  二、上文也曾提到一些系统关键进程是这类木马的最爱,所以一旦我们怀疑系统已经进驻了DLL木马,我们当然要对这些关键进程重点照顾了,怎么照顾?这里推荐一个强大的脱壳工具工具Procedump.exe他可以帮您看出进程到底调用了那些DLL文件,但是由于有的进程调用的DLL文件非常多,使得靠我们自己去一个核对变的不太现实,所以我们会用到一个shotgun写的NT进程/内存模块查看器ps.exe,用命令ps.exe /a /m >nowdlls.txt将系统目前调用地所有DLL文件地名称保存到nowdlls.txt,然后我们再用fc将之于事先备份dllback.txt比较一下,这样也能够缩小排查范围。 

  三、还记得木马的特征之一端口么?所有的木马只要进行连接,只要它接受/发送数据则必然会打开端口,DLL木马也不例外,这也为我们发现他们提供了一条线索,我们可以使用foundstone的进程端口查看工具Fport.exe来查看与端口对应的进程,这样可以将范围缩小到具体的进程,然后结合Procedump来查找DLL木马就比较容易了.当然有如上文提到的有些木马会通过端口劫持或者端口重用的方法来进行通信,139、80、1443、等常见端口则是木马的最爱。因为即使即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80 ESTABLISHED 的情况,稍微疏忽一点,您就会以为是自己在浏览网页(防火墙也会这么认为的)。所以光看端口还不够,我们要对端口通信进行监控,这就是第四点要说的。 

  四、我们可以利用嗅探器来了解打开的端口到底在传输些什么数据。通过将网卡设为混杂模式就可以接受所有的IP报文,嗅探程序可以从中选择值得关注的部分进行分析,剩下的无非是按照RFC文档对协议进行解码。这样就可以确定木马使用的端口,结合Fport和Procedump我们就能够查找到该DLL木马了。至于嗅探器个人推荐使用IRIS,图形界面比较容易上手。 

  五、通常说道查杀木马我们会习惯性地到注册表碰碰运气。以前可能还蛮有效的,但如果碰到注册为系统服务的木马(原理:在NT/2K/XP这些系统中,系统启动时会加载指定的服务程序),这时候检查:启动组/注册表/autoexec.bat/win.ini/sysytem.ini/wininit.ini/*.inf(例如autorun.inf)/config.sys等文件就发现不了丝毫的异样,这时候我们就应该查看一下系统服务了:右击我的电脑--管理--服务和应用程序--服务,这时您会看到100多个服务,(MS也真是的,其中75%对个人用户无用,可以禁止)。慢慢找吧,看谁不顺眼就把它拎出来:),当然如果您以前曾经用导出列表功能对服务备份过,则用文件比较的方法会很容易发现哪些是外来客,这时您可以记录下服务加载的是那个文件,然后用Resource Kits里提供的srvinstw.exe来移除该服务并清除被加载的文件。 

  通过以上五步,基本能发现并清除狡猾的动态嵌入式DLL木马了,也许您也发现如果适当地做一些备份,会对我们的查找木马的过程有很大的帮助,当然也会减轻不少工作的压力哦。 

#6


已经清除了吗?具体是怎么做的?

重新启动时有dos窗口闪过去的话,那肯定在run或者服务里面有痕迹的吧?

#7


"重新启动时有dos窗口闪过去的话,那肯定在run或者服务里面有痕迹的吧?"里面我全看了,没有的。就是我说的方式,可能他嵌入的是那种run里面的应用程序,但是那个程序是无法删除的。我恢复的浏览器的。可能嵌入的dll文件还在!就是一种消极的反修改!

#8


建议用木马克星查一下内存就可以看出是否有多余的DLL了:)
顺带问一句:木马克星是如何查出不是系统的DLL的,难道它把系统的全部都统计过了??

#9


木马的dll文件不能反注册吗?
试试regsvr32 -u filename.dll

#10


pepsi1980(这只老鼠不会游泳) :
呵呵,可能是这样的,可以用木马克星来查出木马。但是我家里的电脑却不是中木马,只是被修改的过程和木马的实现方式差不多,其实我想就是“让程序隐藏执行”而已。这就不知道,木马克星是否有用了!

#11


nineclock(本人成分:59%的帅,40%的酷,1%的微量羞涩(-'_'-)) :
你的方法可能是可以的,但是要知道,有时候连自己多不知道,他藏在那个dll文件内部就麻烦了。

#12


嘿嘿,杀木马我还是比较在行的,木马藏身的地方很多!!所以我专门写了一个操作注册表的,查看木马隐身地方的软件,楼主,要的话留个邮箱或者给我发短信息:)

#13


要是楼上能给代码就好了!呵呵。robocode_java@163.com

#14


hongweijin(革命力量) copy了那么多,其实不就是一个远程线程插入么。

现在有些东*在BHO那里。