设为主页 | 加入收藏 | 繁體中文

DLL后门清除完全篇!

  媒介
  后门!相信这个词语对您来说一定不会生疏,它的危害不但是欲,但随着人们的宁静意识渐渐增强,又加上杀毒软件的“鼎力大举支持”,使传统的后门无法在隐藏自己,任何轻微有点盘算机知识的人,都知道“查端口”“看进程”,以便发明一些“蛛丝马迹”。所以,后门的编写者及时调整了思绪,把眼光放到了动态链接程序库上,也便是说,把后门做成DLL文件,然后由某一个EXE做为载体,大概利用Rundll32.exe来启动,这样就不会有进程,不末尾口等特点,也就实现了进程、端口的隐藏。本文以“DLL的原理”“DLL的扫除”“DLL的防范”为主题,并睁开叙述,旨在能让大家对DLL后门“快速上手”,不在惧怕DLL后门。好了,进入我们的主题。
  一,DLL的原理
  1,动态链接程序库
  动态链接程序库,全称:Dynamic Link Library,简称:DLL,作用在于为使用程序提供扩展功效。使用程序想要挪用DLL文件,必要跟其进行“动态链接”;从编程的角度,使用程序必要知道DLL文件导出的API函数方可挪用。由此可见,DLL文件自己并不行以运转,必要使用程序挪用。正由于DLL文件运转时必须拔出到使用程序的内存模块当中,这就阐明了:DLL文件无法删除。这是由于Windows外部机制造成的:正在运转的程序不能封闭。所以,DLL后门由此而生!
  2,DLL后门原理及特点
  把一个实现了后门功效的代码写成一个DLL文件,然后拔出到一个EXE文件当中,使其可以执行,这样就不必要占用进程,也就没有绝对应的PID号,也就可以在使命办理器中隐藏。DLL文件自己和EXE文件相差不大,但必须利用程序(EXE)挪用才能执行DLL文件。DLL文件的执行,必要EXE文件加载,但EXE想要加载DLL文件,必要知道一个DLL文件的入口函数(既DLL文件的导出函数),所以,根据DLL文件的编写尺度:EXE必须执行DLL文件中的DLLMain()作为加载的条件(好像EXE的mian())。做DLL后门基天职为两种:1)把所有功效都在DLL文件中实现;2)把DLL做成一个启动文件,在必要的时间启动一个平凡的EXE后门。
  罕见的编写要领:
  (1),只有一个DLL文件
  这类后门很简单,只把自己做成一个DLL文件,在注册表Run键值或其他可以被系统自动加载的地方,利用Rundll32.exe来自动启动。Rundll32.exe是什么?顾名思意,“执行32位的DLL文件”。它的作用是执行DLL文件中的外部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。固然,这些Rundll32.exe执行的DLL文件是什么,我们都可以从系统自动加载的地方找到。
  如今,我来介绍一下Rundll32.exe这个文件,意思上边曾经说过,功效便因而命令行的方式挪用动态链接程序库。系统中另有一个Rundll.exe文件,他的意思是“执行16位的DLL文件”,这里要注意一下。在来看看Rundll32.exe利用的函数原型:
  Void CALLBACK FunctionName (
  HWND hwnd,
  HINSTANCE hinst,
  LPTSTR lpCmdLine,
  Int nCmdShow
  );
  其命令行下的利用要领为:Rundll32.exe DLLname,Functionname [Arguments]
  DLLname为必要执行的DLL文件名;Functionname为前边必要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。
  (2),更换系统中的DLL文件
  这类后门就比上边的先进了一些,它把实现了后门功效的代码做成一个和系统匹配的DLL文件,并把原来的DLL文件改名。遇到使用程序恳求原来的DLL文件时, DLL后门就启一个转发的作用,把“参数”传递给原来的DLL文件;如果遇到特殊的恳求时(好比客户端),DLL后门就末尾,启动并运转了。对于这类后门,把所有操作都在DLL文件中实现最为宁静,但必要的编程知识也十分多,也十分不容易编写。所以,这类后门一样平常都是把DLL文件做成一个“启动”文件,在遇到特殊的环境下(好比客户端的恳求),就启动一个平凡的EXE后门;在客户端结束毗连之后,把EXE后门制止,然后DLL文件进入“休息”形态,在下次客户端毗连之前,都不会启动。但随着微软的“数字署名”和“文件恢复”的功效出台,这种后门曾经渐渐衰落。
  提示:
  在WINNTsystem32目录下,有一个dllcache文件夹,里边寄存着众多DLL文件(也包罗一些紧张的EXE文件),在DLL文件被合法修改之后,系统就从这里来恢复被修改的DLL文件。如果要修改某个DLL文件,首先应该把dllcache目录下的同名DLL文件删除或改名,不然系统会自动恢复。
  (3),动态嵌入式
  这才是DLL后门最常用的要领。其意义是将DLL文件嵌入到正在运转的系统进程当中。在Windows系统中,每个进程都有自己的私有内存空间,但照旧有种种要领来进入其进程的私有内存空间,来实现动态嵌入式。由于系统的关键进程是不能终止的,所以这类后门十分隐蔽,查杀也十分困难。罕见的动态嵌入式有:“挂接API”“全局钩子(HOOK)”“长途线程”等。
  长途线程技能指的是经过在一个进程中创建长途线程的要领来进入那个进程的内存地点空间。当EXE载体(或Rundll32.exe)在那个被拔出的进程里创建了长途线程,并命令它执行某个DLL文件时,我们的DLL后门就挂上去执行了,这里不会产生新的进程,要想让DLL后门制止,只有让这个链接DLL后门的进程终止。但如果和某些系统的关键进程链接,那就不能终止了,如果你终止了系统进程,那Windows也随即被终止!!!
  3,DLL后门的启动特性
  启动DLL后门的载体EXE是不行短少的,也是十分紧张的,它被称为:Loader。如果没有Loader,那我们的DLL后门怎样启动呢?因而,一个好的DLL后门会努力保护自己的Loader不被查杀。Loader的方式有许多,可以是为我们的DLL后门而专门编写的一个EXE文件;也可以是系统自带的Rundll32.exe,即使制止了Rundll32.exe,DLL后门的主体照旧存在的。3721网络实名便是一个例子,固然它并不是“真正”的后门。
  二,DLL的扫除
  本节以三款比力有名的DLL后门例,分别为“SvchostDLL.dll”“BITS.dll”“QoServer.dll”。细致讲解其手工扫除要领。盼望大家在看过这三款DLL后门的扫除要领之后,能够举一反三,灵活运用,在不惧怕DLL后门。其实,手工扫除DLL后门照旧比力简单的,无非便是在注册表中做文章。具体怎样做,请看下文。
  1,PortLess BackDoor
  这是一款功效十分壮大的DLL后门程序,除了可以获得Local System权限的Shell之外,还支持如“检测克隆帐户”“安置终端办事”等一系列功效(具体可以拜见程序帮助),实用Windows2000/xp/2003等系统。程序利用svchost.exe来启动,通常不末尾口,可以进行反向毗连(最大的特点哦),对于有防火墙的主机来说,这个功效在好不外了。
  在介绍扫除要领之前,我们先来简单的介绍一下svchost.exe这个系统的关键办事:
  Svchost只是做为办事的宿主,自己并不实现什么功效,如果必要利用Svchost来启动办事,则某个办事因而DLL形式实现的,该DLL的载体Loader指向svchost,所以,在启动办事的时间由svchost挪用该办事的DLL来实现启动的目的。利用svchost启动某个办事的DLL文件是由注册表中的参数来决定的,在必要启动办事的下边都有一个Parameters子键,此中的ServiceDll评释该办事由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处置惩罚办事使命提供支持。
  呵呵!看了上边的理论,是不是有点蒙(我都快睡着了),别着急,我们来看看具体的内容)。我们可以看到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRpcSs下的Parameters子键,其键值为%SystemRoot%system32rpcss.dll。这就阐明:启动RpcSs办事时。Svchost挪用WINNTsystem32目录下的rpcss.dll。
  这是注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost,里边寄存着Svchost启动的组和组内的各个办事,此中netsvcs组的办事最多。要利用Svchost启动某个办事,则该办事名就会出如今HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost下。这里有四种要领来实现:
  1, 添加一个新的组,在组里添加办事名
  2, 在现有组里添加办事名
  3, 间接利用现有组里的一个办事名,但是本机没有安置的办事
  4, 修改现有组里的现有办事,把它的ServiceDll指向自己的DLL后门
  我测试的PortLess BackDoor利用的第三种要领。
  好了,我想大家看完了上边的原理,一定可以想到我们扫除PortLess BackDoor的要领了,对,便是在注册表的Svchost键下做文章。好,我们如今末尾。
  注:由于本文只是介绍扫除要领,利用要领在此略过。
  后门的Loader把SvchostDLL.dll拔出Svchost进程当中,所以,我们先打开Windows优化大家中的Windows进程办理2.5,检察Svchost进程中的模块信息,SvchostDLL.dll曾经拔出到Svchost进程中了,在根据“间接利用现有组里的一个办事名,但是本机没有安置的办事”的提示,我们可以断定,在“办理工具”—“办事”中会有一项新的办事。证明了我的说法,此办事称号为:IPRIP,由Svchost启动,-k netsvcs表示此办事包罗在netsvcs办事组中。
  我们把该办事停掉,然后打开注册表编辑器(末尾—运转--regedit),离开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIPRIP下,检察其Parameters子键)。Program键的键值SvcHostDLL.exe为后门的Loader;ServiceDll的键值C:WINNTsystem32svchostdll.dll为挪用的DLL文件,这正是后门的DLL文件。如今我们删除IPRIP子键(大概用SC来删除),然后在离开HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost下,编辑netsvcs办事组,把49 00 70 00 72 00 69 00 70 00 00 00删除,这里对应的便是IPRIP的办事名。然后退出,重启。重启之后删除WINNTsystem32目录下的后门文件即可。
  2,BITS.dll
  这是榕哥的作品,也是DLL后门,和SvchostDLL.dll原理基本一样,不外这里利用的是上边介绍的第四种要领,即“修改现有组里的现有办事,把它的ServiceDll指向自己的DLL后门”。换句话说,该后门修改现有的某一个办事,把其原有办事的DLL指向自己(也便是BITS.dll),这样就到达了自动加载的目的;其次,该后门没有自己的Loader,而是利用系统自带的Rundll32.exe来加载。我们照旧用Windows 进程办理2.5来检察,从图7中,我们可以看到bits.dll曾经拔出到Svchost进程当中。
  好,如今我们来看看具体的扫除要领,由于该后门是修改现有办事,而我们并不知道具体是修改了哪个办事,所以,在注册表中搜索bits.dll,末了在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasAuto下搜索到了bits.dll,检察Parameters子键下的ServiceDll,其键值为C:WINNTsystem32bits.dll(如图8)。原来,该后门把RasAuto办事原来的DLL文件更换为bits.dll了,这样来实现自动加载。知道了缘故原由就好办了,如今我们把ServiceDll的键值修改为RasAuto办事原有的DLL文件,即%SystemRoot%System32rasauto.dll,退出,重启。之后删除WINNTsystem32目录下的bits.dll即可。
  3,NOIR--QUEEN
  NOIR--QUEEN(保卫者)是一个DLL后门&木马程序,办事端以DLL文件的形式拔出到系统的Lsass.exe进程里,由于Lsass.exe是系统的关键进程,所以不能终止。在来介绍扫除要领之前,我先介绍一下Lsass.exe进程:
  这是一个本地的宁静授权办事,并且它会为利用Winlogon办事的授权用户生成一个进程,如果授权是成功的,Lsass就会产生用户的进入令牌,令牌利用启动初始 的Shell。其他的由用户初始化的进程会继承这个令牌。
  从上边的介绍我们就可以看出Lsass对系统的紧张性,那具体怎样扫除呢?请看下文。
  后门在安置成功后,会在办事中添加一个名为QoSserver的办事,并把QoSserver.dll后门文件拔出到Lsass进程当中,使其可以隐藏进程并自动启动(如图9)。如今我们打开注册表,离开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesQoSserver,间接删除QoSserver键,然后重启。重启之后,我们在离开办事列表中,会看到QoSserver办事还在,但没有启动,种别是自动,我们把他修改为“已禁用”;然后往上看,会发明一个办事名为AppCPI的办事,其可执行程序指向QoSserver.exe(缘故原由后边我会说到),具体如图11所示。我们再次打开注册表,离开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAppCPI,删除AppCPI键,重启,再删除QoSserver,末了删除WINNTsystem32目录下的后门文件。
  本人和这个后门“搏斗”了3个多小时,重启N次。缘故原由在于即使删除了QoSserver办事,后门照旧在运转,并且办事列表中的QoSserver办事又“去世灰复燃”。后来才知道缘故原由:在我删除了QoSserver办事并重启之后,拔出到Lsass进程当中的QoSserver.dll文件又恢复了QoSserver办事,并且生成了另外一个办事,即AppCPI,所以我们必须在到注册表中删除AppCPI办事才算是把该后门扫除。由此可以看出,如今的后门的保护步伐,真是一环扣环。
  注意:在删除QoSserver办事并重启之后,恢复的QoSserver的启动种别要修改为“已禁用”,不然即便删除了AppCPI办事,QoSserver办事又运转了。
  三,DLL的防范
  看了上边的例子,我想大家对扫除DLL后门的要领有了一定的了解,但在现实中,DLL后门并不会利用默许的文件名,所以你也就不能一定能否中了DLL后门。对于DLL后门,system32目录下是个好地方,大少数后门也是如此,所以这里要十分注意。下面我来具体介绍一下怎样发明DLL后门,盼望对大家有所帮助。
  1,安置好系统和所有的使用程序之后,备份system32目录下的EXE和DLL文件:打开CMD,离开WINNTsystem32目录下,执行:dir *.exe>exe.txt & dir *.dll>dll.txt,这样,就会把所有的EXE和DLL文件备份到exe.txt和dll.txt文件中;日后,如发明十分,可以利用雷同的命令再次备份EXE和DLL文件(这里我们假设是exe0.txt和dll0.txt),并利用:fc exe.txt exe0.txt>exedll.txt & fc dll.txt dll0.txt>exedll.txt,其意思为利用FC命令比力两次的EXE文件和DLL文件,并将比力结果生存到exedll.txt文件中。经过这种要领,我们就可以发明多出来的EXE和DLL文件,并经过文件大小,创建时间来果断能否是DLL后门。
  2,利用内存/模块工具来检察进程挪用的DLL文件,好比Windows优化大家中的Windows 进程办理 2.5。这样,可以发明进程到底挪用了什么DLL文件,在结合上边用FC命令比力出来的结果,又能进一步来确定能否中了DLL后门。如果没有优化大家,可以利用TaskList,这个小工具也可以表现进程挪用的DLL文件,并且另有源代码,方便修改。
  3,平凡后门毗连必要打开特定的端口,DLL后门也不破例,不管它怎样隐藏,毗连的时间都必要打末尾口。我们可以用netstat –an来检察所有TCP/UDP端口的毗连,以发明合法毗连。大家平常要对自己打开的端口心中有数,并对netstat –an中的state属性有所了解。固然,也可以利用Fport来表现端口对应的进程,这样,系统有什么不明的毗连和端口,都可以一览无余。
  4,定期检查系统自动加载的地方,好比:注册表,Winstart.bat,Autoexec.bat,win.ini,system.ini,wininit.ini,Autorun.inf,Config.sys等。其次是对办事进行办理,对系统默许的办事要有所了解,在发明有题目的办事时,可以利用Windows 2000 Server Resource Kit中的SC来删除。以上这些地方都可以用来加载DLL后门的Loader,如果我们把DLL后门Loader删除了,试问?DLL后门还怎样运转?!
  经过利用上边的要领,我想大少数DLL后门都可以“现形”,如果我们平常多做一些备份,那对查找DLL后门会启到事半功倍的结果。
  跋文
  本文细致的介绍了DLL后门的一些知识。其实,从上文中不难看出,DLL后门并没有想象的这么可怕,扫除起来也比力简单。在文章中的开头我以说到:旨在能让大家对DLL后门“快速上手”,所以,盼望这篇拙文能对大家有所帮助,文中若有错误,还请大家多多包涵,谢谢!
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: