木马编写教程学习木马编写的好资料.docx

木马的编写实例 特洛依木马这个名词大家应该不陌生,自从 98 年“死牛崇拜”黑客小组公布 Back Orifice 以来,木马犹 如平地上的惊雷, 使在 Dos—— Windows 时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识 到的网络也有它邪恶的一面,一时间人心惶惶。 我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用 B0控制了,吓得整天吃不下饭、睡不着 觉、上不了网,到处求救!要知道,木马( Trojan )的历史是很悠久的:早在 ATTUnix 和 BSDUnix 十分 盛行的年代,木马是由一些玩程式(主要是 C)水平很高的年轻人(主要是老美)用 C或Shell语言编写 的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗——先修改你 的.profile 文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用 Email的形式发到攻击者 的里。国的年轻人大都是在盗版 Dos的熏下长大的,对网络可以说很陌生。直到 Win9x横空出世,尤其是 WinNt的普及,大大推动了网络事业的发展的时候, B0这个用三年后的眼光看起来有点简单甚至可以说是 简陋的木马(甚至在 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页中的NMFT侨口 NMSMTPServer 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 = 0) // 操作系统是Win9x,不是WinNt { typedef DWORD ( CALLBACK* LPREGISTERSERVICEPROC)E(SDSWORD,DWO)R;D // 定义

文档评论(0)

1亿VIP精品文档

相关文档