浏览模式: 普通 | 列表
最近,一个叫“熊猫烧香”的病毒把电脑用户折腾得苦不堪言,在人们心目中,“熊猫”这个国宝似乎不再可爱,而成了人人喊打的过街老鼠。

“熊猫烧香”蠕虫不但可以对用户系统进行破坏,导致大量应用软件无法使用,而且还可删除扩展名为gho的所有文件,造成用户的系统备份文件丢失,从而无法进行系统恢复;同时该病毒还能终止大量反病毒软件进程,大大降低用户系统的安全性。

这几天“熊猫烧香”的变种更是表象异常活跃,近半数的网民深受其害。用户除了可以从http://tool.duba.net/zhuansha/253.shtml下载金山毒霸的“熊猫烧香”专杀来对付该病毒外,金山毒霸技术专家还总结的以下预防措施,帮你远离“熊猫烧香”病毒的骚扰。

【专家总结】

1、立即检查本机administrator组成员口令,一定放弃简单口令甚至空口令,安全的口令是字母数字特殊字符的组合,自己记得住,别让病毒猜到就行。

修改方法:右键单击我的电脑,选择管理,浏览到本地用户和组,在右边的窗中,选择具备管理员权限的用户名,单击右键,选择设置密码,输入新密码就行。

2、利用组策略,关闭所有驱动器的自动播放功能。

步骤:单击开始,运行,输入gpedit.msc,打开组策略编辑器,浏览到计算机配置,管理模板,系统,在右边的窗格中选择关闭自动播放,该配置缺省是未配置,在下拉框中选择所有驱动器,再选取已启用,确定后关闭。最后,在开始,运行中输入gpupdate,确定后,该策略就生效了。

3、修改文件夹选项,以查看不明文件的真实属性,避免无意双击骗子程序中毒。

步骤:打开资源管理器(按windows徽标键+E),点工具菜单下文件夹选项,再点查看,在高级设置中,选择查看所有文件,取消隐藏受保护的操作系统文件,取消隐藏文件扩展名。

4、时刻保持操作系统获得最新的安全更新,建议用毒霸的漏洞扫描功能。

5、启用windows防火墙保护本地计算机。

对于未感染的用户,专家建议,不要登陆不良网站,及时下载微软公布的最新补丁,来避免病毒利用漏洞袭击用户的电脑,同时上网时应采用“杀毒软件+防火墙”的立体防御体系。

推荐日志 监测分布式拒绝服务

[ 2007-03-25 03:25:00 | 作者: sun ]
许多人或工具在监测分布式拒绝服务攻击时常犯的错误是只搜索那些DDoS工具的缺省特征字符串、缺省端口、缺省口令等。要建立网络入侵监测系统(NIDS)对这些工具的监测规则,人们必须着重观察分析DDoS网络通讯的普遍特征,不管是明显的,还是模糊的。

  DDoS工具产生的网络通讯信息有两种:控制信息通讯(在DDoS客户端与服务器端之间)和攻击时的网络通讯(在DDoS服务器端与目标主机之间)。

  根据以下异常现象在网络入侵监测系统建立相应规则,能够较准确地监测出DDoS攻击。

  异常现象0:虽然这不是真正的"DDoS"通讯,但却能够用来确定DDoS攻击的来源。根据分析,攻击者在进行DDoS攻击前总要解析目标的主机名。BIND域名服务器能够记录这些请求。由于每台攻击服务器在进行一个攻击前会发出PTR反向查询请求,也就是说在DDoS攻击前域名服务器会接收到大量的反向解析目标IP主机名的PTR查询请求。

  异常现象1:当DDoS攻击一个站点时,会出现明显超出该网络正常工作时的极限通讯流量的现象。现在的技术能够分别对不同的源地址计算出对应的极限值。当明显超出此极限值时就表明存在DDoS攻击的通讯。因此可以在主干路由器端建立ACL访问控制规则以监测和过滤这些通讯。

  异常现象2:特大型的ICP和UDP数据包。正常的UDP会话一般都使用小的UDP包,通常有效数据内容不超过10字节。正常的ICMP消息也不会超过64到128字节。那些大小明显大得多的数据包很有可能就是控制信息通讯用的,主要含有加密后的目标地址和一些命令选项。一旦捕获到(没有经过伪造的)控制信息通讯,DDoS服务器的位置就无所遁形了,因为控制信息通讯数据包的目标地址是没有伪造的。

  异常现象3:不属于正常连接通讯的TCP和UDP数据包。最隐蔽的DDoS工具随机使用多种通讯协议(包括基于连接的协议)通过基于无连接通道发送数据。优秀的防火墙和路由规则能够发现这些数据包。另外,那些连接到高于1024而且不属于常用网络服务的目标端口的数据包也是非常值得怀疑的。

  异常现象4:数据段内容只包含文字和数字字符(例如,没有空格、标点和控制字符)的数据包。这往往是数据经过BASE64编码后而只会含有base64字符集字符的特征。TFN2K发送的控制信息数据包就是这种类型的数据包。TFN2K(及其变种)的特征模式是在数据段中有一串A字符(AAA……),这是经过调整数据段大小和加密算法后的结果。如果没有使用BASE64编码,对于使用了加密算法数据包,这个连续的字符就是“\0”。

  异常现象5:数据段内容只包含二进制和high-bit字符的数据包。虽然此时可能在传输二进制文件,但如果这些数据包不属于正常有效的通讯时,可以怀疑正在传输的是没有被BASE64编码但经过加密的控制信息通讯数据包。(如果实施这种规则,必须将20、21、80等端口上的传输排除在外。)

推荐日志 告诉你木马生成器不能随便碰

[ 2007-03-25 03:24:49 | 作者: sun ]

前一阵子,在论坛里看到一人,介绍他的盗QQ、游戏密码的木马,只要设置好E-mail的用户名及该E-mail的密码,就可以盗号了。是否知道这个木马是包含后门的?在你用它来帮你盗号的同时,盗取的用户名及密码也都会发送给木马作者一份,而我们就是要利用嗅探工具来得到这个木马作者所用E-mail的用户名及密码。然后,来个“为民除害”。最后希望大家不要使用木马,不然害人的同时还会害己(有些木马还会盗取你的账号及密码)。

下面就以一款针对某网络游戏的木马来做分析,来看看如何得到木马中的一些“隐藏”信息。首先要准备的一些必要的工具:

①下载我们所需要的嗅探工具,解压后得到xsniff.exe;

②一个传奇木马软件,网络上有很多。

下面就来开始抓获这个木马中的谍中谍。

第一步:点击“开始→运行”,输入“CMD”(不含引号),打开“命令提示符窗口”。

第二步:进入嗅探工具所在目录,输入“xsniff.exe -pass -hide -log pass.log”(不含引号),这样局域网里的明文密码(包括本机)都会被记录到pass.log中。

第三步:下面打开该网游的木马,输入你的邮箱地址,点击发送测试邮件的按钮,显示发送成功后,再打开生成的pass.log文件(括号内的文字为注释,并不包含在pass.log文件中):


TCP [04/08/04 19:14:10]
61.187.***.160->202.102.***.114 Port: 1140->25
(前面的IP是发信人的IP地址,后面的IP是接收方的IP地址,PORT是指端口)
USER: ZXhlY3V0YW50[admin]
(USER是信箱用户名,前面的ZXhlY3V0YW50为加密的数据,后面[]内的为用户ID)

TCP [04/08/04 19:14:10]
61.187.***.160->202.102.***.114 Port: 1140->25
PASS: YWRtaW5zdXA=[adminsup]
(PASS是邮箱的密码,YWRtaW5zdXA=为加密数据,后面[]内的为密码)

TCP [04/08/04 19:14:10]
61.187.***.160->202.102.***.114 Port: 1140->25
MAIL FROM:
(类似于发邮件时的信息,指信息发送的目的邮箱)
TCP [04/08/04 19:14:10]
61.187.***.160->202.102.***.114 Port: 1140->25
RCPT T <1@1.***>
(测试信箱的地址)


第四步:现在我们已经知道了这个木马是使用admin@1234.***邮箱来发信的,用户名是admin,密码是adminsup。于是,进入这个邮箱,删掉那些信吧。

第五步:不要以为这就结束了,木马是狡猾的,很多木马还包含一个隐藏后门。执行刚刚生成的木马服务器端(没有手动清理病毒能力的读者请勿轻易尝试,并对系统进行备份,以便还原)。

第六步:使用前面的命令,让xsniff开始嗅探,进入该游戏,随便申请一个ID,接着退出,再去看看pass.log文件。


TCP [04/08/04 19:20:39]
61.187.***.160->61.135.***.125 Port: 1157->25
PASS: YWRtaW5zdXA=[admin]

TCP [04/08/04 19:20:40]
61.187.***.160->61.135.***.125 Port: 1157->25
MAIL FROM:



看到了吗?木马终于漏出了狐狸尾巴,用户名为admin,密码为admin,邮箱是为admin@12345.***,这个邮箱才是作者的后门程序,木马真正的后门。

第七步:最后,将该邮箱里的盗号邮件清除,然后恢复系统。

木马是一种基于远程控制的病毒程序,该程序具有很强的隐蔽性和危害性,它可以在人不知鬼不觉的状态下控制你或者监视你。有人说,既然木马这么厉害,那我离它远一点不就可以了!然而这个木马实在是“淘气”,它可不管你是否欢迎,只要它高兴,它就会想法设法地闯到你“家”中来的!哎呀,那还了得,赶快看看自己的电脑中有没有木马,说不定正在“家”中兴风作浪呢!那我怎么知道木马在哪里呢,相信不熟悉木马的菜鸟们肯定想知道这样的问题。下面就是木马潜伏的诡招,看了以后不要忘记采取绝招来对付这些损招哟!

1、集成到程序中

其实木马也是一个服务器-客户端程序,它为了不让用户能轻易地把它删除,就常常集成到程序里,一旦用户激活木马程序,那么木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。绑定到某一应用程序中,如绑定到系统文件,那么每一次Windows启动均会启动木马。

2、隐藏在配置文件中

木马实在是太狡猾,知道菜鸟们平时使用的是图形化界面的操作系统,对于那些已经不太重要的配置文件大多数是不闻不问了,这正好给木马提供了一个藏身之处。而且利用配置文件的特殊作用,木马很容易就能在大家的计算机中运行、发作,从而偷窥或者监视大家。不过,现在这种方式不是很隐蔽,容易被发现,所以在Autoexec.bat和Config.sys中加载木马程序的并不多见,但也不能因此而掉以轻心哦。

3、潜伏在Win.ini中

木马要想达到控制或者监视计算机的目的,必须要运行,然而没有人会傻到自己在自己的计算机中运行这个该死的木马。当然,木马也早有心理准备,知道人类是高智商的动物,不会帮助它工作的,因此它必须找一个既安全又能在系统启动时自动运行的地方,于是潜伏在Win.ini中是木马感觉比较惬意的地方。大家不妨打开Win.ini来看看,在它的[windows]字段中有启动命令“load=”和“run=”,在一般情况下“=”后面是空白的,如果有后跟程序,比方说是这个样子:run=c:\windows\file.exe load=c:\windows\file.exe 这时你就要小心了,这个file.exe很可能是木马哦。

4、伪装在普通文件中

这个方法出现的比较晚,不过现在很流行,对于不熟练的windows操作者,很容易上当。具体方法是把可执行文件伪装成图片或文本----在程序中把图标改成Windows的默认图片图标,再把文件名改为*.jpg.exe,由于Win98默认设置是"不显示已知的文件后缀名",文件将会显示为*.jpg,不注意的人一点这个图标就中木马了(如果你在程序中嵌一张图片就更完美了)。

5、内置到注册表中

上面的方法让木马着实舒服了一阵,既没有人能找到它,又能自动运行,真是快哉!然而好景不长,人类很快就把它的马脚揪了出来,并对它进行了严厉的惩罚!但是它还心有不甘,总结了失败教训后,认为上面的藏身之处很容易找,现在必须躲在不容易被人发现的地方,于是它想到了注册表!的确注册表由于比较复杂,木马常常喜欢藏在这里快活,赶快检查一下,有什么程序在其下,睁大眼睛仔细看了,别放过木马哦:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值;HKEY-USERS\.Default\Software\Microsoft\Windows\CurrentVersion下所有以“run”开头的键值。

6、在System.ini中藏身

木马真是无处不在呀!什么地方有空子,它就往哪里钻!这不,Windows安装目录下的System.ini也是木马喜欢隐蔽的地方。还是小心点,打开这个文件看看,它与正常文件有什么不同,在该文件的[boot]字段中,是不是有这样的内容,那就是shell=Explorer.exe file.exe,如果确实有这样的内容,那你就不幸了,因为这里的file.exe就是木马服务端程序!另外,在System.ini中的[386Enh]字段,要注意检查在此段内的“driver=路径\程序名”,这里也有可能被木马所利用。再有,在System.ini中的[mic]、[drivers]、[drivers32]这三个字段,这些段也是起到加载驱动程序的作用,但也是增添木马程序的好场所,现在你该知道也要注意这里喽。


7、隐形于启动组中

有时木马并不在乎自己的行踪,它更注意的是能否自动加载到系统中,因为一旦木马加载到系统中,任你用什么方法你都无法将它赶跑(哎,这木马脸皮也真是太厚),因此按照这个逻辑,启动组也是木马可以藏身的好地方,因为这里的确是自动加载运行的好场所。动组对应的文件夹为:C:\windows\start menu\programs\startup,在注册表中的位置:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders Startup="C:\windows\start menu\programs\startup"。要注意经常检查启动组哦!

8、隐蔽在Winstart.bat中

按照上面的逻辑理论,凡是利于木马能自动加载的地方,木马都喜欢呆。这不,Winstart.bat也是一个能自动被Windows加载运行的文件,它多数情况下为应用程序及Windows自动生成,在执行了Win.com并加载了多数驱动程序之后开始执行(这一点可通过启动时按F8键再选择逐步跟踪启动过程的启动方式可得知)。由于Autoexec.bat的功能可以由Winstart.bat代替完成,因此木马完全可以像在Autoexec.bat中那样被加载运行,危险由此而来。

9、捆绑在启动文件中

即应用程序的启动配置文件,控制端利用这些文件能启动程序的特点,将制作好的带有木马启动命令的同名文件上传到服务端覆盖这同名文件,这样就可以达到启动木马的目的了。

10、设置在超级连接中

木马的主人在网页上放置恶意代码,引诱用户点击,用户点击的结果不言而喻:开门揖盗!奉劝不要随便点击网页上的链接,除非你了解它,信任它,为它死了也愿意等等。
现在人们总会遇到这样地情况,某天打开自己mail中的一个附件,因为那个mail的地址和自己一个同事的地址很像,因此没有多考虑就将附件下载打开了。不想这个附件是个病毒,它让自己的机器变的很慢,杀毒之后也没有太大作用。

其实,病毒、木马、和一些恶意软件,往往都会对Widnows的注册表下毒手,虽然破坏形式不尽相同,但是经过分析它们的破坏手法并非无规律可循。这里列出了一些用户系统中被易被修改的系统设置和注册表项。建议再换用其他木马专杀工具试一下,并再针对以下注册表键值进行检查,看看是否有被改动过的迹象。

系统设置文件

对于Widnows 9X系统,常见的是病毒修改可能会更改autoexec.bat,只要在其中加入执行病毒程序文件的语句即可在系统启动时自动激活病毒。*更改drive:\windows\win.ini或者system.ini文件。病毒通常会在win.ini的“run=”后面加入病毒自身的文件名,或者在system.ini文件中将“shell=”更改。

注册表键值

目前,只要新出的蠕虫/特洛伊类病毒一般都有修改系统注册表的动作。它们修改的位置一般有以下几个地方:

在系统启动时自动执行的程序


HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\


在系统启动时自动执行的系统服务程序


HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\


在系统启动时自动执行的程序,这是病毒最有可能修改/添加的地方


HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
HKEY_CLASSES_ROOT\exefile\shell\open\command


说明:此键值能使病毒在用户运行任何EXE程序时被运行,以此类推,..\txtfile\.. 或者 ..\comfile\.. 也可被更改,以便实现病毒自动运行的功能。

另外,有些健值还可能被利用来实现比较特别的功能:

有些病毒会通过修改下面的键值来阻止用户查看和修改注册表:


HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools =


为了阻止用户利用.REG文件修改注册表键值,以下键值也会被修改来显示一个内存访问错误窗口。

例如:Win32.Swen.B 病毒 会将缺省健值修改为:


HKCR\regfile\shell\open\command\(Default) = "cxsgrhcl.exe showerror"


通过对以上地方的修改,病毒程序主要达到的目的是在系统启动或者程序运行过程中能够自动被执行,已达到自动激活的目的。

推荐日志 通过系统权限法清理dll木马

[ 2007-03-25 03:23:55 | 作者: sun ]

相信大家对Dll木马都是非常熟悉了,它确实是个非常招人恨的家伙。它不像普通的exe木马那样便于识别和清理,这个家伙的隐蔽性非常强。它可以嵌入到一些如rundll32.exe、svchost.exe等正常的进程中去,让你找不到。即使找到了也难以清除,因为正常的进程正在调用它嘛。
我用的是Mcafee的杀毒软件,比如说它现在报告:


defds.dll:C:\ Documents and Settings\Administrator\Local Settings\ Temp\ defds.dll删除失败
fdgeg.com:C:\Windows\ime\fdgeg.com删除失败


那么可以知道defds.dll应该是个dll木马,我们可以通过冰刃icesword来查看系统的进程,找到调用该dll文件的进程。比如说是notepad.exe 我们可以先尝试着终止该进程。该进程如果终止后过不了多久又重新运行(而我并没有运行记事本),那么我们可以判定fdgeg.com就是notepad.exe的的守护进程。当它发现它所监视的notepad.exe进程被终止后会立刻将notepad.exe重新启用。

现在我们可以:我的电脑-----工具----文件夹选项-----查看,在高级设置的选项下去掉“简单文件共享”的钩子(我的电脑是XP操作系统,NTFS磁盘格式)

然后到C:\Windo0ws\ime下找到fdgeg.com,右键选择属性。在属性中选择”安全”,单击”高级”,在弹出的窗口中使“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”不被选中。再在弹出的窗口中单击”删除”,再依次单击”确定”。这样就没有任何用户可以使fdgeg.com工作了。

通过icesword终止notepad.exe,然后到C:\Documents and Settings\Administrator\Local Settings\Temp中删除defds.dll。然后到C:\Windows\ime中再找到fdgeg.com 右键属性,在属性中选择”安全”,单击”高级”,在弹出的窗口中选中“从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”,然后删除它即可。最后别忘了在注册表的启动项中将这个dll木马删除。

这样,我们就彻底将这个讨厌的dll木马从我们的电脑中清除了。

推荐日志 安全技巧之用ZoneAlarm判断是否中木马

[ 2007-03-25 03:23:44 | 作者: sun ]

现在的木马真是越来越难防了,尤其是经过免杀处理的木马,一不小心就中招。

鼎鼎大名的ZoneAlarm防火墙大家用过没有,暂且不说它强大的功能,本人在使用一段时间后还发现了一点点其他的功能。

ZoneAlarm启动后会在托盘有一个图标,没通信的时候就是一个标志,有通信的时候就换成一个通信量的指示表,绿色为表示接收到的数据量,红色为从本机发出去的数据量。

利用这个通信量的衡量表,就可以实现系统的监控功能。大家知道,木马的服务端要与入侵者的木马控制端建立通信。当然,既然通信就有数据交换。木马要通风报信,就必须得向服务端发出数据,这时,红色的指示表就会飙升(有一个前提,就是在网络平静的情况下,就是说电脑没有通信操作。比如说,没有网页下载的动作。象我,开了几个网站,打开完后,通信量指示表就再也没指示了)。好吧,开始做实验,事实是最好的证据。在自己电脑运行了鸽子服务端,然后通过控制端进行操做。进行读取驱动器,查看系统进程等操作。看!红色的格子开始亮了,而且通信量也比平时大,尤其是查看屏幕或视频语音坚控后,红色的指示表飙升至满格!而且一直持续!

如果你没对系统进行网络操作,而指示灯一直在闪的话,就该好好查下了。此法也可以用用于3389端口——假如3389忘了关。

雕虫小技,一点点小聪明,只是大家没发现而已。

推荐日志 推荐:十类千万不能使用的密码

[ 2007-03-25 03:23:33 | 作者: sun ]
在信息技术普遍应用的时代,密码已经成为验证身份的主要手段,但有些密码千万不能使用。

1、密码和用户名相同

如:用户名和密码都是123456789。几乎所有盗取密码的人,都会以用户名作为破解密码的突破口。

2、密码为用户名中的某几个邻近的数字或字母

如:用户名为test000001,密码为test或000001。如果您的用户名是字母和数字组合,如:test000001,那么别人要盗取您的密码时,肯定会以用户名中的字母或数字来试密码。

3、密码为连续或相同的数字

如123456789、1111111等。几乎所有黑客软件,都会从连续或相同的数字开始试密码。如:先试111、111......到9999999999,然后再试123、321、234、1234......如果您的密码是111111、123456或654321,甚至用不着黑客软件也能在片刻试出。

4、密码为连续或相同的数字

如abcdefg、jjjjjjj等。字母虽然比数字多,但是先试相同的字母如aaaaa,再试连续的字母如abcde,黑客软件所用时间也不会太多。

5、将用户名颠倒或加前后缀作为密码

如用户名为test,密码为test123、aaatest、tset等。以用户名test为例,黑客软件在尝试使用test作为密码之后,还会试着使用诸如test123、test1、tset、tset123等作为密码,只要是你想得到的变换方法,黑客软件也会想得到,它破解这种口令,几乎不需要时间。

6、使用姓氏的拼音作为密码

在不少黑客软件中,百家姓往往都被一一列出,并放在字典的前列。只需片刻即可破解您的密码。以姓氏或姓名的拼音作为密码还存在一种危险:想盗您密码的人如果探听到您的真实姓名,就很有可能用您姓名中的拼音组合来试密码。

7、使用自己或亲友的生日作为密码

由于表示月份的只有1~12可以使用,表示日期的也只有1-31可以使用,表示日期的肯定19xx或xx,因此表达方式只有100×12×31×2=74400种,即使考虑到年月日共有六种排列顺序,一共也只有74400×6=446400种。按普通计算机每秒搜索3~4万种的速度计算,破解您的密码最多只需10秒。

8、使用常用英文单词作为密码

黑客软件一般都有一个包含10万~20万个英文单词及相应组合的字典库。如果您的密码在这个库中,那么即使字典库中有20万单词,再考虑到一些DES(数据加密算法)的加密运算,每秒搜索1800个,也只需要110秒。

9、使用8位以下的数字作为密码

数字只有10个,8位数字组成方式只有10的8次方=100,000,000种,按普通计算机每秒搜索3~4万种的速度计算,黑客软件只需要不到3小时就可以破解您的密码。

10、使用5位以下的小写字母加数字作为口令

小写字母加数字一共36位,组合方式只有36的5次方=60466176种可能性,按普通的计算机每秒搜索3~4万种的速度计算,黑客软件只需要25分钟就可以破解密码。

推荐日志 防止外部数据提交的脚本

[ 2007-03-25 03:23:21 | 作者: sun ]
提交时可能会有人修改Script从本地提交,这样存在安全提交的问题,所以应该要求从服务器断路径提交,其他地址提交无效:


<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black
bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=“font:9pt Verdana“>"
response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"
response.write "</td></tr></table></center>"
response.end
end if

推荐日志 木马各种隐藏技术披露

[ 2007-03-25 03:23:09 | 作者: sun ]
虽然没有绝对的安全,但如果能知已知彼,了解木马的隐藏手段,对于木马即使不能百战百胜,也能做到及时发现,使损失最小化。那么,木马究竟是如何躲在我们的系统中的呢?

  最基本的隐藏:不可见窗体+隐藏文件

  木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序。Windows下常见的程序有两种:   1.Win32应用程序(Win32 Application),比如QQ、Office等都属于此行列。

  2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR。

  其中,Win32应用程序通常会有应用程序界面,比如系统中自带的“计算器”就有提供各种数字按钮的应用程序界面。木马虽然属于Win32应用程序,但其一般不包含窗体或隐藏了窗体(但也有某些特殊情况,如木马使用者与被害者聊天的窗口),并且将木马文件属性设置为“隐藏”,这就是最基本的隐藏手段,稍有经验的用户只需打开“任务管理器”,并且将“文件夹选项”中的“显示所有文件”勾选即可轻松找出木马,于是便出现了下面要介绍的“进程隐藏”技术。

  第一代进程隐藏技术:Windows 98的后门

  在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。尽管微软没有公开提供这种方法的技术实现细节(因为Windows的后续版本中没有提供这个机制),但仍有高手发现了这个秘密,这种技术称为RegisterServiceProcess。只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。

  要对付这种隐藏的木马还算简单,只需使用其他第三方进程管理工具即可找到其所在,并且采用此技术进行隐藏的木马在Windows 2000/XP(因为不支持这种隐藏方法)中就得现形!中止该进程后将木马文件删除即可。可是接下来的第二代进程隐藏技术,就没有这么简单对付了。

  第二代进程隐藏技术:进程插入

  在Windows中,每个进程都有自己的私有内存地址空间,当使用指针(一种访问内存的机制)访问内存时,一个进程无法访问另一个进程的内存地址空间,就好比在未经邻居同意的情况下,你无法进入邻居家吃饭一样。比如QQ在内存中存放了一张图片的数据,而MSN则无法通过直接读取内存的方式来获得该图片的数据。这样做同时也保证了程序的稳定性,如果你的进程存在一个错误,改写了一个随机地址上的内存,这个错误不会影响另一个进程使用的内存。 你知道吗——进程(Process)是什么

  对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。

  一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程

  1.进程插入是什么

  独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容易捕获随意的内存读取和写入操作。对于用户来说,操作系统将变得更加健壮,因为一个应用程序无法破坏另一个进程或操作系统的运行。当然,操作系统的这个健壮特性是要付出代价的,因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程序将要困难得多。但仍有很多种方法可以打破进程的界限,访问另一个进程的地址空间,那就是“进程插入”(Process Injection)。一旦木马的DLL插入了另一个进程的地址空间后,就可以对另一个进程为所欲为,比如下文要介绍的盗QQ密码。

  2.木马是如何盗走QQ密码的

  普通情况下,一个应用程序所接收的键盘、鼠标操作,别的应用程序是无权“过问”的。可盗号木马是怎么偷偷记录下我的密码的呢?木马首先将1个DLL文件插入到QQ的进程中并成为QQ进程中的一个线程,这样该木马DLL就赫然成为了QQ的一部分!然后在用户输入密码时,因为此时木马DLL已经进入QQ进程内部,所以也就能够接收到用户传递给QQ的密码键入了,真是“家贼难防”啊!

  3.如何插入进程

  (1)使用注册表插入DLL

  早期的进程插入式木马的伎俩,通过修改注册表中的[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]来达到插入进程的目的。缺点是不实时,修改注册表后需要重新启动才能完成进程插入。

  (2)使用挂钩(Hook)插入DLL

  比较高级和隐蔽的方式,通过系统的挂钩机制(即“Hook”,类似于DOS时代的“中断”)来插入进程(一些盗QQ木马、键盘记录木马以Hook方式插入到其他进程中“偷鸡摸狗”),需要调用SetWindowsHookEx函数(也是一个Win32 API函数)。缺点是技术门槛较高,程序调试困难,这种木马的制作者必须具有相当的Win32编程水平。

你知道吗——什么是API

  Windows中提供各种功能实现的接口称为Win32 API(Application Programming Interface,即“应用程序编程接口”),如一些程序需要对磁盘上的文件进行读写,就要先通过对相应的API(文件读写就要调用文件相关的API)发出调用请求,然后API根据程序在调用其函数时提供的参数(如读写文件就需要同时给出需要读写的文件的文件名及路径)来完成请求实现的功能,最后将调用结果(如写入文件成功,或读取文件失败等)返回给程序。

  (3)使用远程线程函数(Cr&#101;ateRemoteThread)插入DLL

  在Windows 2000及以上的系统中提供了这个“远程进程”机制,可以通过一个系统API函数来向另一个进程中创建线程(插入DLL)。缺点很明显,仅支持Windows 2000及以上系统,在国内仍有相当多用户在使用Windows 98,所以采用这种进程插入方式的木马缺乏平台通用性。

  木马将自身作为DLL插入别的进程空间后,用查看进程的方式就无法找出木马的踪迹了,你能看到的仅仅是一些正常程序的进程,但木马却已经偷偷潜入其中了。解决的方法是使用支持“进程模块查看”的进程管理工具(如“Windows优化大师”提供的进程查看),木马的DLL模块就会现形了。

  不要相信自己的眼睛:恐怖的进程“蒸发”

  严格地来讲,这应该算是第2.5代的进程隐藏技术了,可是它却比前几种技术更为可怕得多。这种技术使得木马不必将自己插入到其他进程中,而可以直接消失!

  它通过Hook技术对系统中所有程序的进程检测相关API的调用进行了监控,“任务管理器”之所以能够显示出系统中所有的进程,也是因为其调用了EnumProcesses等进程相关的API函数,进程信息都包含在该函数的返回结果中,由发出调用请求的程序接收返回结果并进行处理(如“任务管理器”在接收到结果后就在进程列表中显示出来)。

  而木马由于事先对该API函数进行了Hook,所以在“任务管理器”(或其他调用了列举进程函数的程序)调用EnumProcesses函数时(此时的API函数充当了“内线”的角色),木马便得到了通知,并且在函数将结果(列出所有进程)返回给程序前,就已将自身的进程信息从返回结果中抹去了。就好比你正在看电视节目,却有人不知不觉中将电视接上了DVD,你在不知不觉中就被欺骗了。

  所以无论是“任务管理器”还是杀毒软件,想对这种木马的进程进行检测都是徒劳的。这种木马目前没有非常有效的查杀手段,只有在其运行前由杀毒软件检测到木马文件并阻止其病毒体的运行。当时还有一种技术是由木马程序将其自身的进程信息从Windows系统用以记录进程信息的“进程链表”中删除,这样进程管理工具就无法从“进程链表”中获得木马的进程信息了。但由于缺乏平台通用性而且在程序运行时有一些问题,所以没有被广泛采用。

  你知道吗——什么是Hook

  Hook是Windows中提供的一种用以替换DOS下“中断”的一种系统机制,中文译名为“挂钩”或“钩子”。在对特定的系统事件(包括上文中的特定API函数的调用事件)进行Hook后,一旦发生已Hook的事件,对该事件进行Hook的程序(如:木马)就会收到系统的通知,这时程序就能在第一时间对该事件做出响应(木马程序便抢在函数返回前对结果进行了修改)。

  毫无踪迹:全方位立体隐藏

  利用刚才介绍的Hook隐藏进程的手段,木马可以轻而易举地实现文件的隐藏,只需将Hook技术应用在文件相关的API函数上即可,这样无论是“资源管理器”还是杀毒软件都无法找出木马所在了。更令人吃惊的是,现在已经有木马(如:灰鸽子)利用该技术实现了文件和进程的隐藏。要防止这种木马最好的手段仍是利用杀毒软件在其运行前进行拦截。

  跟杀毒软件对着干:反杀毒软件外壳

  木马再狡猾,可是一旦被杀毒软件定义了特征码,在运行前就被拦截了。要躲过杀毒软件的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软件就认不出来了,但有部分杀毒软件会尝试对常用壳进行脱壳,然后再查杀(小样,别以为穿上件马夹我就不认识你了)。除了被动的隐藏外,最近还发现了能够主动和杀毒软件对着干的壳,木马在加了这种壳之后,一旦运行,则外壳先得到程序控制权,由其通过各种手段对系统中安装的杀毒软件进行破坏,最后在确认安全(杀毒软件的保护已被瓦解)后由壳释放包裹在自己“体内”的木马体并执行之。对付这种木马的方法是使用具有脱壳能力的杀毒软件对系统进行保护。

  你知道吗——什么是壳

  顾名思义,你可以很轻易地猜到,这是一种包在外面的东西。没错,壳能够将文件(比如EXE)包住,然后在文件被运行时,首先由壳获得控制权,然后释放并运行包裹着的文件体。很多壳能对自己包住的文件体进行加密,这样就可以防止杀毒软件的查杀。比如原先杀毒软件定义的该木马的特征是“12345”,如果发现某文件中含有这个特征,就认为该文件是木马,而带有加密功能的壳则会对文件体进行加密(如:原先的特征是“12345”,加密后变成了“54321”,这样杀毒软件当然不能靠文件特征进行检查了)。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。