1.2 安全攻击环节概览

结合1.1节讲述的故事,可以概要地了解一下在攻击者实施的安全攻击过程中所涉及的主要环节。一般而言,网络信息安全攻击可以划分为侦察、扫描、获取访问、维持访问和掩盖踪迹等阶段。下面分别对各个阶段的基本思想、技术、工具和对策进行简要的介绍。

1.2.1 侦察

很多安全攻击都始于侦察阶段,在该阶段,攻击者想方设法收集尽量多的有关被攻击目标的信息,以便为实际的攻击做好准备。

在侦察阶段,攻击者广泛采用的手段的技术含量通常并不高。社会工程学便是常见的手段之一,它的特点就是通过普通谈话来诱导受害者透露敏感信息。电话交谈是社会工程学的常见形式,攻击者在电话中以花言巧语从用户口中套出电话号码、姓名、口令或其他敏感信息。攻击者也可能伪造来电号码以使受害者更容易上当。

淘垃圾也是一种值得关注的侦察手段,指的是从一个单位遗弃的办公用品中搜寻敏感信息的过程,淘垃圾者可以从被扔掉的粘贴便条、光盘、旧硬盘等中获得系统资料、用户名单、电话号码甚至口令信息。

单位的Web网站也是攻击者在侦察中可以充分利用的重要资源,很多单位都把员工联系信息、合作伙伴信息及应用技术信息等挂到了Web网站上,这些信息对于攻击者来说可能具有重要的价值,而且只须使用诸如Google的搜索引擎就可以获得。

从Whois数据库中可以找到攻击目标的互联网地址、域名和通信联系等方面的信息,InterNIC为.com、.net、.org及其他顶级域名提供Whois数据库。Uwhois Web网站可用于研究在246个不同国家登记的各种域名。

从DNS服务器中也可以获得很多有用的信息,其中包括域名到IP地址的映射、邮件服务器列表及其他名字服务器等。DNS是一个用于解析域名的分布式的层级结构的数据库。

Windows操作系统和UNIX操作系统中的nslookup工具可用于访问DNS服务器,从DNS服务器中获取给定域名的相关信息。

互联网上有很多通用的侦察工具可供下载使用,其中,最有用的一个就是Sam Spade,它提供了很多获取侦察信息的方法。另外,也有大量基于Web的工具可用于侦察。

1.2.2 扫描

完成了侦察阶段的信息收集工作之后,攻击者通常要对系统进行扫描,以便进一步掌握有关攻击目标的更多信息。扫描阶段的常见工作包括无线接入扫描、拨号扫描、网络映射、端口扫描、防火墙规则扫描及漏洞扫描等。

无线接入扫描是寻找目标网络的无线接入点并确定它们的SSID的过程,SSID可以表示网络的名称。Windows操作系统中最流行的无线接入扫描工具是NetStumbler,它是一个主动扫描工具,它通过发送SSID域的值为any的探测包去检测无线网络,大部分无线接入点都会响应它发出的探测请求。Wellenreiter是一个被动无线接入扫描工具,它通过嗅探无线通信频率去检测无线局域网(WLAN)。防御无线接入扫描的方法之一是采用较强的无线认证协议,如WPA或802.11i。

拨号扫描是以逐个拨打电话号码的方式去检测调制解调器载波音频进而寻找不安全的调制解调器的过程。不安全的调制解调器是进入目标网络的最容易的渠道之一。攻击者可以从Web网站中查找相应的电话号码号段,继而用来进行拨号扫描。发现调制解调器后,再寻找不设口令的系统或口令容易猜测的系统。THC-Scan是最流行的拨号扫描工具之一。

网络映射是确定目标网络中的机器清单及这些机器所构成的网络拓扑结构的过程。攻击者首先对目标网段进行扫描,确定该网段中有哪些主机在工作,然后利用traceroute功能确定系统、路由器和防火墙是如何连接在一起的。Cheops-ng是一个可用于执行网段扫描和traceroute功能的非常有用的工具。

端口扫描是确定目标网络中哪些端口正在监听服务请求的过程。端口扫描程序通过与目标系统中的各种端口进行对话,可以确定系统中所有正在运行的服务的清单。功能最丰富的端口扫描工具之一是Nmap,它支持进行多种类型的扫描,包括TCP SYN扫描、TCP ACK扫描、UDP扫描等。Nmap还包含操作系统指纹提取功能,可以确定目标机器上的操作系统类型。

防火墙规则扫描是确定目标网络中的包过滤防火墙所实现的规则的过程,Firewalk是一个可用于实施这样的扫描的有用工具。

漏洞扫描是检测目标系统中可能存在的安全漏洞的过程。漏洞检测工具可用于对目标系统中成百上千的安全漏洞进行检测,它们借助记录已知的配置错误、系统Bug和其他问题的数据库进行工作。Nessus是漏洞扫描的最好工具之一。

实施扫描时,攻击者常常采用各种措施避开目标环境中部署的IDS和IPS的防范,FragRouter和FragRoute工具常用于避开网络层的IDS和IPS防范,Nikto工具常用于避开应用层的IDS和IPS防范。

1.2.3 获取访问

利用侦察和扫描阶段收集到的信息,攻击者可以尝试闯入目标系统、对目标系统进行访问。攻击者可能采取对操作系统、应用程序或网络系统进行攻击的方法获取对系统的访问权。与此相关,攻击者也可能发动拒绝服务攻击,破坏系统为合法用户提供的正常访问。

缓冲区溢出攻击是最常用和最具破坏性的攻击方法之一,它允许攻击者通过程序输入把可执行代码输入到目标系统中执行,为攻击者在目标系统中执行恶意代码提供了可能。缓冲区溢出呈现为栈溢出和堆溢出两种类型。Metasploit是攻击者常用的一个集成化的缓冲区溢出攻击工具。

口令攻击也是攻击者为闯入系统而发动的常见攻击方式之一,常见的口令攻击方法包括字典攻击、暴力攻击或混合攻击。Cain是Windows系统中破解口令的最好工具之一,而John the Ripper工具则在UNIX系统中表现出色。

基于Web的应用的流行和普及也使它们成为攻击者为了闯入系统而进行攻击的重要目标,常见的攻击方法包括账户捕获、会话捕获和SQL注入等。账户捕获就是根据应用程序响应不同的账户输入时返回的不同错误信息来确定登录系统用的账户名甚至口令,从而登录进入应用程序。会话捕获就是根据应用程序的URL参数、隐藏的表格元素及Cookie等来克隆合法用户与应用程序间的会话号,从而获得对应用系统的访问。SQL注入就是在向应用程序提供的用户输入中添加SQL元素,从而扩展应用程序中的SQL语句,获得对应用程序的后端数据库的非法访问。

Web浏览器中的各种漏洞也常被攻击者利用,当用户运行有漏洞的浏览器访问受感染的Web服务器时,攻击者就有可能控制用户的机器。通过攻陷可信的Web服务器,攻击者就能在浏览这些服务器的用户不知不觉的情况下控制他们的机器。

嗅探、IP地址欺骗和会话劫持等是网络攻击的常见手段。嗅探就是在局域网(LAN)中收集网络通信信息,这些信息可能包含明文传送的用户ID和口令、敏感文件或电子邮件等。嗅探可分为被动嗅探和主动嗅探。被动嗅探只从网上采集信息,不操纵网上的信息流,被动嗅探的常见工具有Snort、Sniffit及Ethereal等。主动嗅探则向网中注入通信信息,主动把网络通信包改向传递到嗅探机器中,Dsniff和Ettercap是两个功能强大的主动嗅探工具。

IP地址欺骗就是攻击者伪造他所发送的信息的源IP地址,冒充其他信息发送方,欺骗信息的接收方。这种攻击方法常用于设计圈套、逃避过滤或接入基于IP地址认证的系统。

会话劫持就是综合运用嗅探和IP地址欺骗手段,把合法用户已经建立的合法会话据为己有,从而获得对系统的访问。会话劫持攻击可能发生在网络中,也可能发生在单个主机系统中。

拒绝服务攻击的基本方法是使系统服务停止工作或把系统资源消耗殆尽,这两种方法既可以在系统本地实施,也可以通过网络远程实施,从而形成四种主要的拒绝服务攻击类型。

直接杀死提供服务的进程、通过系统配置关闭指定的服务或促使服务崩溃等是常见的本地停止服务型攻击,逻辑炸弹属于这种攻击类型。填满进程分配表、占满文件系统空间或用尽网络通信连接等是常见的本地资源耗尽型攻击。发送不良网络包,利用目标操作系统或应用程序中的Bug,促使系统崩溃,是典型的远程停止服务型攻击。在网络中产生大量的通信包则可以发动远程资源耗尽型攻击,SYN洪水攻击是属于这种类型的常见攻击。

1.2.4 维持访问

攻入一个系统终归不是一件轻而易举的事情,一旦攻入成功,攻击者总要采取各种可能的措施,以便为下一次攻击打开方便之门,这就是维持访问所要实现的目标,木马和后门是实现该目标的主要手段。

木马是貌似非常有用却暗藏恶意功能的程序。后门是使攻击者能够避开正常的安全控制而得以访问系统的程序。木马与后门融合而成的木马后门则是最具破坏性的维持访问攻击程序。

根据工作空间所处的系统层次,木马后门可划分为应用层木马后门、用户态rootkit和内核态rootkit三种类型。

应用层木马后门是可以运行在目标机器上的独立应用程序,表面上看不会产生任何安全问题,但实际上能够使攻击者访问并控制目标机器。远程控制程序、僵尸程序(Bot)和间谍软件是三类最为流行的应用层木马后门,攻击者可以借助它们在目标机器上访问任何文件、观察用户行为、记录键盘输入及实施其他操作。

用户态rootkit是植入到用户态的操作系统关键程序中的木马后门,在UNIX和Linux操作系统中,攻击者常用用户态rootkit替换诸如login和sshd等系统程序,为访问系统留下后门,并在该基础上,进一步替换诸如ifconfig、ls、ps和du等系统程序,以便使他们访问系统的行为能够躲开系统管理员的视线。使用文件系统完整性检查工具Tripwire有助于发现系统中的用户态rootkit。

内核态rootkit则是植入到操作系统内核中的木马后门。大部分的内核态rootkit都提供执行重定向功能,该功能可以把用户的请求重新映射为执行攻击者指定的程序。内核态rootkit还支持对文件、目录、TCP和UDP端口及运行中的进程进行隐藏。为了防止内核态rootkit攻击,应该及时给操作系统打补丁,启用基于主机的IPS,以便能够在第一时间防止攻击者获得对系统进行特权访问的机会。

UNIX和Linux操作系统中的Chkrootkit和Rootkit Hunter工具及Windows操作系统中的Rootkit Revealer和Blacklight工具可用于检测用户态rootkit和内核态rootkit给系统带来的异常。

1.2.5 掩盖踪迹

为了既能够成功地对网络信息系统实施安全攻击、实现攻击目标,又可以逍遥法外,攻击者总是要设法隐藏他们的攻击行为,以期不被发现。特别是在安装了维持访问的木马后门之后,攻击者总要操纵系统,以便销毁攻击痕迹、掩盖攻击行径。

销毁攻击痕迹的最重要的途径之一是修改系统的日志记录信息。完全删除日志信息并不明智,因为这样很容易被系统管理员发现,所以,攻击者一般不会这样做,一般只修改与某些事件相关的日志信息。攻击者通常修改反映他们攻击系统的行为的日志记录。例如,失败的登录尝试、特殊账户的使用及安全敏感命令的运行等。

在Windows操作系统中,可以使用WinZapper工具删除特定安全事件的信息。在UNIX操作系统中,有很多工具可用于修改日志记录信息。

为了防止日志记录信息被修改,可以采用独立的日志服务器来记录关键网络(如Internet中的DMZ)的日志信息。另外,也可以对日志文件进行加密,使得攻击者就算控制了系统也无法修改日志信息。还可以定期地把日志信息转存到只能单次写的介质上(如DVD等),以便为日志记录留下攻击者无法修改的永久备份。