的经济价值。
在这种状况下一些动机不纯的黑客高手就想尽办法利用便捷的网络和功能强大的盗号木马去盗取相应的密码与帐号所以为了使我们的帐号与密码更加安全有必要去研究盗号木马的工作原理。
本文从木马的发展历史出发介绍了木马的特点和工作原理详细分析并设计出了一个基于 windows 操作系统的盗号木马软件。
在具体设计实现中首先对本软件具有的功能和特点进行了具体分析将软件划分为自动隐藏、自动运行、记录键盘三大功能模块并根据软件的要求做了逻辑设计其次是程序的实现和测试并且对测试结果进行了分析最后给出了相应的防范措施让我们能更安全地在互联网尽情地冲浪 【关键词】自动隐藏 自动运行 记录键盘 IV Brief Discussion on The Design of Trojan Men and Its Preventive Measures Abstract With the development of the Internet much facility has been brought to us by more and more network products. More and more account numbers and password have been appearing with the development. They could bring a great number of economic values. In this case many people begin to try their best to find the suited account number and pass
word. So in order to make them safe its necessary to learn the theory of them. This thesis starts with the Trojan development history introducing its features and working principle giving a detail analysis and designing of stealing software based on windows operation. During the design it first analyzes the softwares functions and features dividing the program into three modules: automatic concealment automatic running and record the keyboard. It chooses the proper development environment and makes a logic design based on the requirements of the software Then it conducts the coding and tests and hen analyzes the result of testFinally give the corresponding preventive measures allowing us to more safely in the Internet heartily surfing 【Key words】Automatic Concealment Automatic Running Keyboard Recording 1 第1章 绪 论 木马1是一个计算机的词汇但是他却是来源于古希腊。
古希腊神话《木马屠城记》记录有这样的故事说的是有一个美丽而妖艳的女孩嫁给了希腊的王子但是最终却被Trojan City特洛伊城 的王子吸引并私奔回到了特洛伊城希腊人于是把发兵把该城围住但是围了十年都没有攻下后来希腊人想出了一条计策他们把士兵藏在一匹匹木头做的马这就是木马的来历里面并且引诱特洛伊人把这些木马当成战利品夺回城中到了半夜这些木马的士兵跳出来和城外的希腊士兵里应外合最终把特洛伊城攻下了。
在计算机领域里有这样一类
代码他们短小精悍往往只有20k到30k常常伪装或者隐藏在合法程序中这些
代码或者执行特定的恶意行为或者为非授权访问系统的特权功能提供后门。
他们的最大的特征是隐秘性偷偷混入对方的主机里面但是却没有被对方发现系统表现也正常这些
代码的行为和《木马屠城记》中原始的木马的特征相同所以在计算机领域里面就用木马来称呼这样的一类
代码。
1.1 课题背景 当今高速发展的互联网在信息量和资源极大丰富的同时也充斥着大量的各种各样别有用心的quot黑客quot们安置的陷阱其中也包括木马。
想要在享受互联网带来的便利的同时躲开这些木马陷阱必须对木马有所认识和了解。
自从韩国的网络游戏传奇于 2002 年 10 月进入我国后在国内日渐风靡 游戏玩家逐日增多与此同时也出现了一些被称为传奇木马的恶意
软件比如传奇异度灵盗传奇黑眼等等。
这类软件虽然
工作方式有所不同但都被设计的具有窃取游戏帐号和密码的功能。
正是这样的先例使得帐号与密码的价值开始一步一步的体现出来而现在这些价值已经不仅仅是一些像传奇上体现的虚拟价值更进一步的体现是在实际的
经济领域。
而该设计正是以盗取帐号与密码为目的来了解这类木马的工作特性从而保证帐号与密码的安全。
1.2 木马发展史1 1.2.1 第一代木马伪装型木马 这种病毒通过伪装成一个合法程序诱骗用户上当。
世界上第一个计算机木马是出现在1986年的PC-Write木马。
它伪装成共享软件PC-Write的2.27版本事实上编写PC-Quicksoft公司从未发行过 2.72 版本一旦用户信以为真运行该木 2 马程序那么他的下场就是硬盘被格式化。
此时的第一代木马还不具备传染特性。
1.2.2 第二代木马AIDS 型木马 继PC-Write之后1989年出现了AIDS木马。
由于当时很少有人使用电子邮件所以AIDS的作者就利用现实生活中的邮件进行散播给其他人寄去一封含有木马程序软盘的邮件。
之所以叫这个名称是因为软盘中包含有AIDS和HIV疾病的药品价格预防措施等相关信息。
软盘中的木马程序在运行后虽然不会破坏数据但是他将硬盘加密锁死然后提示受感染用户花钱消灾。
可以说第二代木马已具备了传播特征尽管通过传统的邮递方式。
1.2.3 第三代木马
网络传播性木马 随着Internet的普及这一代木马兼备伪装和传播两种特征并结合TCP/IP网络技术四处泛滥。
同时他还有新的特征 1. 添加了quot后门quot功能 所谓后门就是一种可以为计算机系统秘密开启访问入口的程序。
一旦被安装这些程序就能够使攻击者绕过安全程序进入系统。
该功能的目的就是收集系统中的重要信息例如财务
报告、口令及信用卡号。
此外攻击者还可以利用后门控制系统使之成为攻击其它计算机的帮凶。
由于后门是隐藏在系统背后运行的因此很难被检测到。
它们不像病毒和蠕虫那样通过消耗内存而引起注意。
2. 添加了击键记录功能 从名称上就可以知道该功能主要是记录用户所有的击键内容然后形成击键记录的日志文件发送给恶意用户。
恶意用户可以从中找到用户名、口令以及信用卡号等用户信息。
这一代木马比较有名的有国外的BO2000Back Orifice和国内的冰河木马。
它们有如下共同特点基于网络的客户端/服务器应用程序。
具有搜集信息、执行系统命令、重新设置机器、重新定向等功能。
当木马程序攻击得手后
计算机就完全成为黑客控制的傀儡主机黑客成了超级用户用户的所有计算机操作不但没有任何秘密而言而且黑客可以远程控制傀儡主机对别的主机发动攻击这时候被俘获的傀儡成了黑客进行进一步攻击的挡箭牌和跳板。
1.3 本课题研究的意义 quot知己知彼百战不殆quot作为一个网络安全工作者如果想找出防御木马盗取帐号与密码的有效途径就必须认真地研究木马攻击的技术。
在研究木马的攻防过程中如果能够理清木马所使用手段的发展脉络就有可能进一步找出木马发展的趋势并提早思考应对策略。
这样的话我们至少可以为我们所拥有的帐号与密码增加几分安全感。
而这个木马
程序的设计正是属于第三代木马当然 3 在整个第三代木马的范围内它只是一个小小的缩影。
不过作为现在主流的木马类型它所拥有的记录键盘的功能正是我们所需要的。
因此希望通过这次的设计去了解整个帐号被盗的过程从而找出应对的方法使我们的帐号与密码更加的安全。
4 第2章 盗号木马程序原理分析 2.1 木马的分类2 根据木马对计算机采取的动作方式木马可以分为以下几类: 一、远程控制型 这是当今最广泛的特洛伊木马这种木马起到了远程监控的功能只要被控主机联到网络控制者就可以任意控制目标主机。
二、密码发送型 这种类型的木马专门找到所有的隐藏的密码并且在受害者不知道的情况之下把他发送给控制者它可以采取多种方式来发送最基本的方法是通过电子邮件来发送。
三、键盘记录型 这种木马比较简单它只做一种事情就是记录受害者的键盘动作。
四、毁坏型 大部分木马只是窃取信息不做破害性的事件但是毁害型木马却以毁害并且删除文件为己任。
五、FTP型 这种木马打开21号端口让每个FTP客户端不要密码就可以连接到受控主机 随意窃取受害主机的文件。
六、Dos攻击型 通过植入木马可以把受控主机当作一个个肉鸡控制者可以操纵大量的肉鸡来同时对某个主机发起DoS攻击 七、代理型 骇客在进行入侵的时候为了隐藏自己的信息他可以找一个代理通过控制这个代理来达到入侵的木的就像操纵傀儡一般。
八、反弹端口型 对于有放火墙的受害者木马可以通过反连端口的方式来达到操纵受害主机 的目的也就是说木马自己穿越防火墙主动去连接控制者因为一般木马会采用常用的端口比如80端口而且现在的防火墙往往采用严进宽出的
方案所以这种控制很有用。
5 2.2 木马的特点3 2.2.1 隐秘性 也就是说一旦一个木马通过个种手段被引入了主机这个过程称为 quot植入quot那么它首先要找到一个地方来隐藏起来等待时机发作在被植入的主机看起来就好像什么事情都没有。
木马能隐藏起来的原因有如下几个 一、木马往往比较小才几十k左右这样即使执行起来也占不了系统太多的资源。
二、木马往往会隐身在系统文件夹里面而且或者直接代替了系统文件或者采用和系统文件相似的文件名这样即使发现有木马入侵的痕迹但是你也不能辨认是哪个文件。
三、木马执行时往往不会在
系统中显示出来。
2.2.2 自动运行性 一个好的木马绝对不可能奢望对方来点击运行也不能只执行一次然后随着系统的关机而不再运行这样的只发作一次的木马是没有什么作用的。
木马往往具有自动运行性也就是说要么随机子的启动运行而发作要么等某个条件来触发而这个触发条件应该是很
常用的。
2.2.3 危害性 如果一个木马没有什么危害那么它也就失去了入侵的目的一个木马的危害性主要表现在控制性上木马的制作者通过植入木马然后非法获取系统的较高控制权达到最终控制对方机子的目的比如它可以偷听你的密码修改你的文件下载感兴趣的文件甚至格式化硬盘。
2.3 盗号木马程序的原理 盗号木马的工作原理其实并不复杂。
下面以我的
设计为例简单的介绍其原理。
当我们在浏览捆绑了木马的网页、外接感染木马的U盘、运行捆绑了盗号木马的程序时将启动盗号木马程序并且长期潜伏在我们的电脑当中。
当用户启动计算机的时候程序会随着计算机的启动而运行。
当用户进行登陆帐号操作的时候如
登陆QQ、163邮箱等程序在后台就开始进行键盘操作的记录并在用户登陆完成后保存记录完成一次盗号过程。
而在程序的整个运行期间程序都是处于隐藏状态。
6 2.4 功能需求分析4 本文设计属于第三代的键盘记录木马。
这种木马是非常简单的。
它们只做一件事情就是记录被感染电脑的键盘敲击。
更高级的则可以在COOKS记录中直接找密码。
这种木马随着 Windows 的启动而启动。
它们记录你使用帐号和密码敲击键盘时的按键情况。
也就是说你按过什么按键种植木马的人都知道从这些按键中他很容易就会得到你的密码信息甚至是你的信用卡账号。
根据这些功能需求要求我的这个设计应该具有以下功能自动隐藏、自动运行和最最重要的键盘记录。
下面将进行三种功能的逐一分析。
2.4.1 自动隐藏 在任务栏里面实现程序的隐藏是最基本也是最简单的隐藏方式。
如果在windows的任务栏里出现让使用者陌生的图标或程序项目那么程序则毫无意义、毫无悬念的被截杀。
所以要实现自动隐藏不管是程序加载时的隐藏还是运行时的隐藏对一个木马程序来说是非常重要的。
要实现在任务栏中隐藏在编程时是很容易实现的。
我以我的设计语言
VB为 例。
在
VB中我们只要把窗体from的 Visible属性设置为False以及ShowInTaskBar设为False程序就不会出现在任务栏里了。
在 Win9x 时代简单地注册为系统进程就可以从任务栏的进程中消失。
可是在 Windows XP/Vista/7高安全系数系统盛行的今天。
这种方法遭到了拦截。
注册为系统进程不仅仅能在任务管理器中看到而且可以直接看出每个进程的说明和所在的路径Windows7新功能然后可以在Services中直接控制停止。
但是就算这样我们仍然有方法去解决这些难题比如将进程名改为和系统进程名相似让一般电脑使用者一时间看不出来。
另外还有方法就是用 HOOK 函数实现将进程注入到其他进程当中比如EXPLORER.EXE。
但是这种办法实现起来比较复杂在本文当中所使用的就是“混淆视听”的办法具体方法在下文的功能实现中将会详细分析讲解。
2.4.2 自动运行 一个好的木马绝对不能奢望对方来点击运行也不能只执行一次然后随着系统的关机而不再运行这样的只运行一次的木马太鸡肋没有实质性的作用。
木马往往具有自动运行性也就是说可以随系统的启动而运行也可以由某个条件来触发而这个触发条件应该是很常用的。
而对于此设计而言不论是哪种自动运行方式都是可行的他的关键不在这个上面而是在键盘记录上那才是一个庞大的工程。
而实现自动运行这一功能却有许多的方法完全可以根据自己的需要去找寻最适合自己的方式。
本文采用的是下面的第三种利用
注册表加载运行 7 实现开机自动启动功能。
以下是我整理的实现自动运行的几个方式 1在Win.ini中启动 2在System.ini中启动 3利用注册表加载运行 4在Autoexec.bat和Config.sys中加载运行 5在Winstart.bat中启动 6启动组 7.INI 8修改文件关联 9捆绑文件 10反弹端口型木马的主动连接方式 另外研究熊猫烧香发现在很多木马也可以利用AUTORUN.INF来实现自动运行。
2.4.3 键盘记录5 这个功能是该设计的最最重要的部分他既是核心也是基础因为我们所需要的所有信息都是由这个模块完成的。
在怎么实现键盘记录这个功能时大多数人想到的应该是使用钩子技术HOOK用户的击键行为。
其实除此之外还有一API函数同样可以轻松进行键盘记录那就是GetAsyncKeyState函数这个函数根据虚拟键表判断按键类型。
返回值为一个16位的二进制数如果被按下则最高位为1即返回-32767但是如果需要对键盘进行全局性的记录则需要与另一个API函数GetKeyState结合使用才能实现。
原因在于GetAsyncKeyState 函数只能在按键的瞬间执行一次如果按下的键是开关键如caps lock那么过了那一瞬间 GetAsyncKeyState 函数则不再发挥任何作用。
而这个时候就需要用GetKeyState函数来判断该开关键是否按下。
那这两个函数组合起来的实际作用是什么呢为什么又要将这两个函数组合起来用其实原因很简单因为每个键的虚拟码是唯一的在这样种情况下不管你是在大写情况还是小写情况下你按下的键记录下来的信息都是一样的。
这个时候就需要一次判断你需要判断有两个键是否按下一个是caps lock是否按下一个是shift是否按下因为shift不属于开关键那它自然就不需要用GetKeyState函数但是caps lock是一个开关键那么它在这种情况下就需要用GetKeyState函数。
所以在这种特例下我们就需要用到GetKeyState函数了。
与HOOK函数相比这两个函数进行键盘记录虽然在程序上显得比较冗长但是它却更加的简单也不容易出现错误。
而HOOK函数在
代码上看起来可能比 8 较简单但是它却很容易暴露在杀毒软件的查杀之下。
另外还有一种键盘记录方式那就是使用一个功能强大的SendMessage函数在其它API函数的配合下直接窃取玩家输入的游戏帐号和密码但是这个方法实现难度太大在以前的9X下运行虽然没
问题但是现在大家使用的操作系统都是WinXP以上的系统当中禁止不同的进程间相互访问数据如果要用SendMessage函数实现键盘记录则需要用到其它API创建一个数据共享或者编写一个DLL文件实现数据共享才行。
9 第3章 程序 3.1 程序开发环境介绍 该设计使用语言为Microsoft Visual Basic6.0所使用的操作系统为Win7 SP1硬件环境CPU 为 Intel酷睿2 T5800 2.00GHZ内存 DDR2 2G 。
3.2 设计要求 应具备前文预定的三大功能自动运行、自动隐藏、记录键盘。
整个设计都应该遵守所有木马程序的共同点——简约而不简单。
即用最少的
代码实现最大的功能这样做的目的是最后所生成的可执行文件小从而便于隐藏而且这样的文件执行起来也不占用太大的系统资源使计算机的使用人不容易发现自己已经中招了。
该设计虽然为木马程序但是也应该设计一个友好界面去简化一些如修改
代码之类的麻烦的事情。
该设计本身运行对计算机硬件平台应无苛刻要.