一场古希腊和特洛伊持续了十年的战争最终以希腊一位谋士设计的木马而告终,这就是著名的木马屠城记。如今,“木马”这个词又一次摆在了我们的面前,不过,它不再是攻城的道具,而是与计算机安全息息相关的“类病毒”。
说白了,木马就是一种远程控制软件,像Windows XP中带的远程协作功能,网吧中的网管软件都属于远程控制软件的范畴。正如病毒与程序之间的关系一样,人们之所以用木马来命名部分远程控制软件,是因为它们具有攻击性并且具有隐蔽性和欺骗性。黑客们往往把木马的服务端伪装成有趣的程序或者捆绑在有用的程序里诱使计算机用户执行它而达到控制机器的目的。
木马与病毒
很多的人都认为木马是病毒,其实这种说法是欠妥当的。
病毒是指一个计算机系统运行过程中能把自己准确或有修改地复制到其他程序内的程序。病毒具有传染性、隐藏性、破坏性和潜伏性。而木马通常不具备病毒的最大特性――传染性,对于木马来说,它的目标是单一确定的,因此说它是病毒并不确切。国内计算机信息安全机构将木马划分为“有害数据”,在国际上则认为它属于“类病毒”。
木马的运行原理
绝大部分木马采用C/S运行模式,因此它分为两大部分,即客户端和服务端。其原理是:当服务器端在目标计算机上被执行后,木马一般会打开一个默认的端口进行监听,当客户机向服务器的这一端提出连接请求,服务器上的相应程序就会自动运行,来应答客户机的请求。
当然也有部分木马的运行方式不是C/S模式,例如广为人知的“传奇黑眼睛”,它的功能就是潜伏在目标机器里,搜集游戏的口令信息,然后秘密地发送到指定邮箱。
木马的防范
由于木马植入系统和加载方式的特殊性,我们可以通过以下几个途径来简单地防范木马。当然,这仅限于一般木马的防范,像下文中提到的修改dll/vxd文件的木马则必须通过杀毒软件来清除。
拒绝来源:说木马是用户自己一手造成的这话一点也不过分!因此,我们除了要对操作系统打上最新的补丁外,还要注意不要轻易执行陌生人发来的程序、尽量不要去来历不明的小软件站点下载软件、在下载软件后尽量做到先杀毒后使用,这样才能最大限度地避免系统中被植入木马程序。
切断加载:在win.ini、system.ini文件中、注册表中、注册表启动服务项目、开始菜单的启动文件夹……中均有可能木马的藏身之所。必须仔细检查!需要注意的是好多木马的伪装性非常好,如“AOL Trojan木马”把自身伪装成“command.exe”(exe和com的区别),“Acid Battery v1.0”将自己伪装为“explorer.exe”(l与l的区别),因此在手动查找时一定要睁大眼睛!
利用工具:除了利用杀毒软件直接进行木马的清除以外,针对较新或不可查杀的木马我们还要使用防火墙进行监控。现在很多工具都能够防范木马,比如在金山网镖的“IP规则编辑器”中,这里可以关闭很多常见木马的端口,其他网络防火墙均有类似设置。而著名的“木马克星”iparmor则是一款专门对付木马的软件,用它可以对系统实时防护,还能扫描内存、硬盘中可能存在的木马,并能查看网络链接状态和系统共享资源等。
木马的发展趋势
1.跨平台性:为了对付目标机中可能使用的各种未知的操作系统,木马必须拥有跨平台的特性,毕竟在WinNT及其后续版本引入了操作权限这一特性,这和Win98是截然不同的。
2.模块化设计:模块化设计是软件设计的发展方向,木马也同样有模块化设计的趋势,像BO、Netbus等经典木马都有一些优秀的插件。
3.即时通知:由于木马的植入是个等待对方执行欺骗程序的过程,这需要一个等待和查找的过程。针对这一点,现在的木马都开始具有即时通知的功能,如IRC、email通知等。
4.最新隐身技术:木马技术发展到现在,传统的感染ini和注册表等启动方式已经变得不堪一击!目前已经出现了修改虚拟设备驱动程序(vxd)和动态连接库(dll)的木马技术。这种方法基本上摆脱了原有的监听端口模式,木马首先将修改后的dll替换系统已有的dll文件,并对函数调用进行过滤。对于常用的函数调用,它会使用函数转发器直接转发给被替换的系统dll,一旦发现控制端的连接请求就激活自身,它就将自己绑在一个进程上进行木马操作。这样做的好处是不增加新的文件、不打开新的端口、没有新的进程、使用常规的方法监测不到,因此它具有极强的隐蔽性!
研究木马的意义
本文的目的不是教大家如何使用木马来进行入侵,旨在让大家了解木马、认识木马、防范木马,不要再谈“马”色变。就像文中一开始说到的那样,远程控制、P2P技术也都是跟木马技术息息相关的,只是跟这些软件庞大的体积相比,只有几百乃至几十KB的木马在实现同样功能的条件下要简练得多。可以说,深入研究木马对网络编程技术以及信息安全技术的进步都有着重要的意义。