一、概述
在这个世界上,人类不断研究和发展新的信息安全机制和工程实践,为战胜计算机网络安全威胁付出了艰巨的努力。似乎如果计算机攻击手法不再翻新,关于信息安全的战争将 很快结束。虽然,大多数地下组织研究的攻击手法都是惊人的相似,无非就是:蠕虫、后门、rootkits、DoS和sniffer等。但这些手段都体现了它们惊人的威力。到今年,情况愈演愈烈。这几类攻击手段的新变种,与去年前年出现的相比,更加智能化,攻击目标直指互联网基础协议和操作系统层次。从web程序的控制程序到内核级rootkits,黑客的攻击手法不断升级翻新,向用户的信息安全防范能力不断发起挑战。
(注:rootkits, 是一种攻击脚本、经修改的系统程序,或者成套攻击脚本和工具,用于在一个目标系统中非法获取系统的最高控制权限。)
在长期与信息安全专家的较量中,黑客对开发隐蔽的计算机网络攻击技术更加得心应手。同时,这些工具应用起来也越来越简单。以前很多命令行的攻击工具被人写成了GUI(图形界面)的内核级rootkit,将这些高度诡异的攻击武器武装到了那些热中于”玩脚本的菜鸟”手中,这些杀伤力很强的黑客工具,使”脚本菜鸟”们变得象令人敬畏的黑客。
当然,工具本身是不会危及系统安全的-坏事都是人干的。信息安全专业人员也使用和入侵者同样使用的扫描和监听工具,对系统安全做例行公事般地审计。在恶意用户使用前,那些能非法控制web程序的新的渗透测试工具,也被安全人员用来测试系统的漏洞。但是,还有很多的工具有它完全黑暗的一面,比如,蠕虫程序不断发展和传播,它只用来干坏事;反入侵检测工具和很多rootkits专门用来破坏系统的安全性。
本文将探讨一些黑客工具的独创性,以及它们令普通人惊讶的功能。这对帮助用户考虑采用新技术和传统措施来防范这些威胁有很重要的意义:在攻击者攻击来临之前,先检测和修补系统和软件漏洞。
二、Web应用程序:首选目标
日益增长的网络业务应用为脆弱的web应用提供了漏洞滋生的土壤。如银行、政府机构和在线商务企业都使用了web技术提供服务。这些机构往往自己开发整套的web应用程序(ASP、JSP和CGI等),而这些开发者由于没有获得过专业训练,导致这些自产软件漏洞百出。Web程序的开发者没有意识到,任何传递给浏览器的信息都可能被用户利用和操纵。不管用不用SSL(安全套接层),恶意用户可以查看、修改或者插入敏感信息(包括价格、会话跟踪信息甚至是脚本执行代码)。攻击者可以通过状态操纵攻击或者SQL代码嵌入等技术危及电子商务网站的安全。
所谓状态操纵攻击(state manipulation), 是指攻击者通过在URL中修改传递给浏览器的敏感信息,隐藏表格元素和cookies,达到非法访问的目的。如果一个安全意识松懈的web开发者,他把数据存储在会话ID中,而没有考虑到价格和余额等关键数据的完整性保护,则攻击者完全可以修改这些数据。再加上如果web程序相信由浏览器传递过来的数据,那么攻击者完全可以窃取用户帐号、修改价格或者修改帐户余额。
所谓SQL代码嵌入(SQL injection),是指攻击者在普通用户输入中插入数据库查询指令。这些问题相当多情况下是因为输入检验不严格和在错误的代码层中编码引起的,如对逗号”,”和分号”;”等。在这种情况下,攻击者可以对数据库进行查询、修改和删除等操作,在特定情况下,还可以执行系统指令。一般情况下,web网页上的用户名表单往往是这类攻击的入口。如果攻击者使用Proxy server执行这类操作,管理员将很难查到入侵者的来源。而要防止这类攻击,必须在自研软件开发程序上下手整治,形成良好的编程规范和代码检测机制,仅仅靠勤打补丁和安装防火墙是不够的。
目前有一类新的Web应用程序防护产品,通过分析所有的Web连接,防止常见的应用层攻击和应用层的敏感数据泄露。如Sanctum开发的AppShield,KaVaDo的InterDo,Ubizen的DMZ/Shield,和SPI Dynamics的WebInspect。这些工具采用学习机制,被配置成为能理解正常的Web应用访问行为,在一个用户会话中,当异常的修改发生或者特殊字符输入出现时,这种攻击将截停非法修改并向管理员报告异常行为。
另一方面,一个由志愿者组成的开放源码组织开发了一个叫Open Web Application Security Project (OWASP)的项目,对web应用程序中普遍存在的脆弱性做了归类,并为建立web安全应用和服务提供详细指南。还有,OWASP正在开发一个基于java的”Web甲虫”(Web Scarab),这是一个评估web应用安全的工具。
如果web程序开发者能理解其系统面临的威胁并且构建防御机制,系统安全性将得到高层次的防护。开发者用到的,发送到浏览器的敏感数据必须具有完整性保护机制,这可以通过MD5哈希(hash)函数或者时间戳数字签名技术来实现;还有,对用户输入必须进行细致的检查,过滤可能危及后台数据库的特殊字符、脚本语言和命令,包括逗号、引号、括号、星号、百分号、下划线和管道符等。这些字符检测机制是在web server实现,而不是在浏览器端实现,因为攻击者可以通过各种手段绕过客户端的安全机制。对于这些字符可以采用清除或者强制替换的方法避免它们威胁服务器的安全。
三、超隐秘”嗅探式”后门
后门对计算机系统安全的侵扰,其历史已达十年之久。通过后门,攻击能绕过正常的安全机制自如地访问系统资源。最近,这类攻击变得更加隐秘,更加难以察觉。这种新的攻击与传统的后门不同之出是,它将sniffer技术和后门技术结合起来了。传统的后门是通过监听TCP端口和UDP端口,向攻击者敞开方便之门。对于这类后门,有经验的系统管理员和信息安全人员可以通过定期检测端口使用情况,来发现这些新开放的后门服务。
而新类型的后门技术排除了把进程建立在端口上的方式,而是使用sniffer(监听)技术,通过类型匹配的方式,被动地捕捉后门操作者发过来的消息,从而执行相应的指令,后门采用的指示器可以是一个特定的IP地址、一个TCP标志位,甚至是一个没有开放(侦听)的端口。象Cd00r和SAdoor就是类似这样的后门程序。
嗅探式后门(Sniffer/backdoors)可以工作在混杂模式下,也可以工作在非混杂模式下。(编者注:混杂模式是网络监听程序要用到的工作模式,其实就是改变网卡设置,把网卡原来只接收属于自己的数据包的模式,改为不管什么数据包都接收的模式)。
非混杂模式的嗅探式后门,只监听本机通信,只在受害主机上扮演威胁者的角色。
而被设置为混杂模式的后门,可以监听以太网上其它主机的通信数据,这种模式将严重困扰网络安全管理员。设想以下情况:攻击者在DMZ区(停火区)其中一台web服务器放置嗅探式后门,监视另一台mail服务器的通信。对于攻击者来说,他可以只需要向mail服务器发送攻击指令,但mail服务器上其实没有装后门,指令的执行者是web服务器。管理员查来查去还会以为是mail服务器中了木马,却很难想到其实是web服务器中标。这是典型的伪造现场的作案思路。
尽管查找开放的端口的方式已经不够对付最新的后门技术,但传统的对付后门方式仍然是十分重要的。另外,由于大多数后门都针边界服务器,因此,可以利用象Tripwire 和AIDE的完整性检查工具检查系统文件,有利于发现后门程序。
想要了解可疑端口的占用 ,可以使用lsof工具(For Unix)或者Inzider工具(For windows)。另外还可以从远程使用 Nmap 工具进行异常端口占用检测。如果发现一个未知的进程占用了一个端口,尤其是以超级用户权限运行的进程,应该马上进行调查,是谁开启了这个进程。在调查不清楚的情况下可以果断关闭端口或杀掉进程。
要想了解网卡是否被置于混杂模式,可以采用ifstatus(For solaris)或者PromiscDetect(For windows)。如果想远程检测混杂模式的sniffer,可以选用packetfactory的Sentinel工具。
最后,要确保用户单位的安全应急小组必须掌握最新的计算机后门技术动向。当发现与后门有关的通信出现的时候,用户应该对端口占用情况、活动进程和网卡工作模式进行检测,以确定究竟是谁中了后门。
核心级别的rootkits
Rootkits是被广泛使用的工具,允许攻击者获得后门级访问。过去,rootkits通常是替换操作系统中的正常二进制执行程序,如login程序、ifconfig程序等。但这两年来rootkits发展很快,发展到直接对底层内核进行操作,而不再需要去修改单个的程序。
通过修改操作系统核心,内核级的rootkits使一个被修改内核的操作系统看上去和正常的系统没有区别,它们通常都包含重定向系统调用的能力。因此,当用户执行类似ps,netstat或者ifconfig –a之类的指令的时候,实际执行的是一个特洛伊的版本。这些工具还可以隐藏进程、文件和端口使用情况等,用户将得不到真实的系统情况报告。
目前攻击者使用的rootkits有Linux、solaris和windows等系统的版本。Kernel Intrusion System是其中的一款(For Linux),是功能最强大的内核级rootkits之一。
对于非内核级的rootkits,可以使用前面说过的完整性检查工具检查二进制执行程序文件被修改的情况。这个方法对内核级rootkits不管用。
要对付内核级的rootkits,必须加固临界系统的内核。St. Jude Project是一款监测Linux内核完整性的工具,它通过监测系统调用表的修改情况来实现对内核完整性的监控。还可以将系统配置成为固化内核的形式,建立一个不支持LKMs(loadable kernel modules)的系统内核。这样的系统效率更高,因为内存管理更简单。
另外的办法是自己加固内核。Argus Systems Group提供的PitBull工具,通过限制用户访问系统程序和内核来保护Solaris等系统的内核。另外象SELinux和Trusted Solaris等系统提供附加的内核保护功能。内核保护机制不能被滥用,否则会使系统管理变得复杂,并可能影响其它程序的正常运行。
脉冲蛇神和其它的DDoS伎俩
蛇神,可以指挥大批毒蛇向敌人发动进攻。用来形容象TFN2K这样的DDoS攻击控制工具是再合适不过了。攻击者通过劫持数千台计算机并植入DoS代理后,几乎就可以所向无敌了。这些DoS代理会在攻击者的指挥下同时向一台主机发送大量的数据包,使对方服务瘫痪,使这台主机淹没在大量的数据包中。以往,ISP一般情况下尚能对一些DDoS攻击进行跟踪,通过逆流而上的方法快速跟踪数据包,可以找到活动的攻击来源。
去年,一个叫”脉冲蛇神”的攻击形式使网管难以追查攻击的来源。攻击者可以使多个DDoS代理交替发出Flood数据包,这种随机发包方式就好象电子脉冲一样。如果攻击者有几千个这样的代理,追查”蛇神”将变得几近不可能。
还有更绝的。今年早期,互联网上出现了一个叫”反射式DDoS”的攻击方法。这种新方法用的是借刀杀人的思路,至少将有两方受害。
反射式DDoS的原理是SYNFlood的巧妙变形。它充分利用了TCP三次握手机制的”优点”,一个DDoS代理,用一个假的源地址,向一台高带宽的服务器发送一个TCP SYN数据包,服务器收到这个包以后,将向这个源地址回送一个SYN-ACK的响应包。攻击者在发包前可以将这个假的源地址设置为他要攻击的主机地址,这样,就变成了一台高性能/高带宽的服务器DoS目标主机。如果攻击者用多个线程,相同的源地址,不停地向多台高带宽服务器发包,则目标主机将受到多台服务器的攻击,目标主机几乎是”必死无疑”。用这种方式,在目前的互联网环境下,攻击者可以让Yahoo或者微软的Web服务器去DDoS一台他想攻击的主机。而且在这种情况下,想要追查到攻击者来源,实在是太难了。
为了对付DDoS攻击,市场上出现了商业化的抗DoS产品和解决方案。大体分为两类,一类是基于探头的工具,如Asta Networks出品的Vantage System 和 Arbor Networks'出品的Peakflow,它们允许管理员将这些探头部署到网络的各个节点上,用基于异常的扫描技术发现不寻常的Flood数据包,发现后将实时地调整路由器和防火墙的设置进行过滤。
另一方面,象Captus Networks出品的CaptIO 和 Top Layer出品的AppSafe则在网络边界处直接发现和封杀DoS数据包。
即使采用这些技术,但面临者成百上千的“蛇神”的时候,就算系统不停止响应,网络带宽也会被很快消耗掉。没有工具能够防止带宽的消耗。因此,如果在线连接和点击量对用户单位的业务非常重要的话,那么用户有必要要求ISP的应急小组充分配合,从上游杜绝Flood数据包。在选择ISP的时候,关于这个问题,要问清楚ISP对DoS攻击是如何进行应急处理的。
扫描器的发展
端口和脆弱性扫描既被攻击者用来探测系统错误配置和未修补漏洞,也被管理员用来检测安全漏洞。扫描工具的主要发展趋势是稳步进化,而非革命性变革。象一些商业化的安全检测工具如ISS scanner和 Cisco Scanner,不断地往产品上增加有关新漏洞的插件。免费的扫描器如Nmap也在不断地发展。Nmap作为最好的端口扫描器,在功能、界面和方便性上都做了改进。Nmap不仅仅能检测操作系统类型,也支持隐蔽性扫描等。
4月,人们久侯不至的Nessus 1.2终于发布。新版本包含了微分扫描、对抗IDS等功能。在性能上也得到增强。
也是4月,雨林小狗(Rain Forest Puppy,一著名黑客)发布了他的Web脆弱性扫描器Whisker2.0版。该工具检测已知的基于web技术的安全漏洞,如CGI、ASP等。新版本包括内置的SSL支持,和易用性增强。
要避免恶意用户使用这些工具威胁系统,我们必须:
通过关闭所有比必要的服务和安装系统补丁加固系统;
保持对最新补丁和安全公告的追踪,下载补丁后要在实验环境进行测试,测试完以后正式安装在主机上。
用黑客的角度审视系统的安全脆弱性,通过端口扫描器和脆弱性扫描器定期对系统进行检测,至少每月一次。
Sniffer变得主动
在最近两年,网络监听(sniffer)技术出现了新的重要特征。传统的sniffer技术是被动地监听网络通信、用户名和口令。而新的sniffer技术出现了主动地控制通信数据的特点,把sniffer技术扩展到了一个新的领域。Dug Song写的Dsniff的工具是第一批扩展了传统的sniffer概念的监听工具。Dsniff制造数据包注入到网络,并将通信数据重定向到攻击者的机器。在这种方式下,Dsniff允许攻击者在交换环境的网络内窃听数据,甚至在攻击者和攻击目标不在同一个Lan(局域网)的情况下,也能使攻击者收集到他想要的数据。
为在交换环境下实现sniff,Dsniff是通过对ARP缓存进行改写重定向通信数据包,它改写了目标机器上的IP地址->Mac地址的映射,因此数据包将经由交换机发往监听者的机器。此外,攻击者还可以通过DNS欺骗、IP/名字欺骗等方式跨越局域网重定向通信数据包。Dsniff还包含了一个面向SSH和SSL的”中间人”攻击工具包。
很明显,对于象Dsniff这样的主动监听工具,简单地采用交换机来防止监听已经不够了。要防止ARP缓存改写,必须对敏感网络中所有主机的ARP缓存表进行硬编码,这些主机包括在线网站、DNS和Mail服务器、防火墙和DMZ路由器等。另外还应该用Ipsec、VPN和其它的加密技术来保护敏感信息,如果要远程管理系统,建议用SSH-2或者更新的版本(SSH-1存在”中间人攻击”的风险)。
无线Sniffer是威胁无线网络安全性的强有力工具。无线网络常用的WEP(Wired Equivalent Privacy)加密手段,安全性非常脆弱。攻击者只要一个装有类似NetStumbler的膝上型电脑和一根廉价的天线,并使用类似Airsnort或者基于java的Mognet等无线sniffer工具,就可以截获无线网络的通信数据。随后攻击者还可以使用Airsnort对WEP的解密功能对信息进行解密。在监听数百万个无线网络连接的数据包后,Airsnort就能确定用于保护用户数据的密钥。
要想防止对WLAN的监听攻击,可以启用一些安全策略,考虑采用无线VPN产品增强认证和加密功能。