<>网络信息安全第五讲 网络攻击技术分析

* 按照攻击目的,可将攻击分为破坏型和入侵型两种类型。
* 破坏型攻击以破坏目标为目的,但攻击者不能随意控制目标的系统资源。
* 入侵型攻击以控制目标为目的,比破坏型攻击威胁更大,常见的攻击类型多为入侵型攻击。
* 攻击主要内容

<>一 网络信息采集

* 入侵者一般首先通过网络扫描技术进行网络信息采集,获取网络拓扑结构、发现网络漏洞、探查主机基本情况和端口开放程度,为实施攻击提供必要的信息。
* 网络信息采集有多种途径,既可以使用诸如ping、whois等网络测试命令实现,也可以通过漏洞扫描、端口扫描和网络窃听工具实现。
<>1.常用信息采集命令

* Ping命令:用于确定本地主机是否能与远程主机交换数据包,通过向目标主机发送ICMP(internet control message
protocol,Internet控制报文协议)回应请求来测试目标的可达性
。使用ping命令能够察看网络中有哪些主机接入Internet;测试目标主机的计算机名和IP地址;计算到达目标网络所经过的路由数;获得该网段的网络拓扑信息。
* 推算数据包通过的路由器数:例如,返回TTL值为119,可以推算出TTL初值为128,源地址到目标地址要通过128-119=9个路由器。
* host命令:host命令是Linux、Unix系统提供的有关Internet域名查询的命令。可以从域中的DNS(domain name
server,域名服务器)服务器获得所在域内主机的相关资料,实现主机名到IP地址的映射,得知域中邮件服务器的信息。
* Traceroute命令:Traceroute命令用于路由跟踪
,判断从本地主机到目标主机经过哪些路由器、跳计数、响应时间等。Traceroute程序跟踪的路径是源主机到目的主机的一条路径
,但是,不能保证或认为数据包总是遵循这个路径。
* Nbtstat命令:nbtstat(NBT statistics,NBT统计信息,其中NBT为NetBIOS over
TCP/IP)命令是Windows命令,用于查看当前基于网络基本输入输出系统NetBIOS(network basic input output
system)的TCP/IP连接状态。通过该工具可以获得远程或本地机器的组名和机器名。
* Net命令:用于检验和核查计算机之间NetBIOS连接的net view和net use
两个命令可能被攻击者利用,来查看局域网内部情况和局域网内部的漏洞。
* Finger命令:用来查询用户的信息,通常会显示系统中某个用户的用户名、主目录、闲滞时间、登录时间、登录shell等信息。
* Whois命令:Whois命令是一种Internet的目录服务命令,它提供了在Internet上的一台主机或某个域所有者的信息
,包括:管理员姓名、通信地址、电话号码、Email信息、Primary和Secondary域名服务器信息等。
* Nslookup命令
:在Internet中存在许多免费的nslookup服务器,它们提供域名到IP地址的映射服务和IP地址到域名的映射等有关网络信息的服务。通过nslookup攻击者可以在whois命令的基础上获得更多目标网络信息。
<>2.漏洞扫描

* 漏洞是指系统硬件、操作系统、软件、网络协议、数据库等在设计上和实现上出现的可以被攻击者利用的错误、缺陷和疏漏。
* 漏洞扫描程序是用来检测远程或本地主机安全漏洞的工具。
* 针对扫描对象的不同,漏洞扫描又可分为网络扫描、操作系统扫描、WWW服务扫描、数据库扫描以及无线网络扫描等。
* 计算机系统漏洞:Windows NT IIS 4.0的ISAPI DLL对输入的URL未做适当的边界检查,如果构造一个超长的URL,可以溢出IIS
(inetinfo.exe)的缓冲区,执行我们指定的代码。由于inetinfo.exe是以local system身份启动,溢出后可以直接得到管理员权限。
* 堆栈指纹扫描
:不同操作系统在网络协议上存在差异,可以通过总结操作系统之间的这种差异,编写测试脚本,向目标系统的端口发送各种特殊的数据包,并根据系统对数据包回应的差别来判定目标系统及相关服务。这种利用
TCP/IP协议识别不同操作系统和服务种类的技术称为堆栈指纹扫描技术。
* 常用堆栈指纹扫描技术:

* ICMP错误消息抑制机制
:在RFC1812关于IPv4路由的规定中,对ICMP的错误类型信息的发送频率作了限制,不同操作系统对这种限制的策略不同。攻击者可以向某个随机的高端UDP端口发送成批的数据包,并计算接收到的目标不可达数据包的数量,来判断操作系统类别。这种探测操作系统的方法需要的时间较长,并且对网络性能会造成一定的影响。
* ICMP错误消息引用机制
:对于端口不可达信息,几乎所有操作系统都使用了规范的ICMP错误信息格式,即回送一个IP请求头加8字节长度的包,Solaris和Linux返回的数据包大于这个长度。据此可猜测目标主机是否使用Linux或Solaris操作系统。
* ICMP错误消息回文完整性
:当返回端口不可达数据包时,某些操作系统在初始化处理过程中会弄乱返回数据包的包头,这样接收到的数据包中会出现不正常的数据。由于TTL值的改变导致校验和需要修改时,AIX、FreeBSD等操作系统将返回不正确的校验和或设置校验和为0。
* FIN探查
:FIN探查不遵循完整的三次握手连接,而是直接向目标端口发送一个带有FIN标记的TCP数据包。根据RFC793中的TCP连接状态图(事件处理)
:当处于关闭、监听、请求同步状态时,如果接收到FIN数据包,则丢弃该包并返回原状态。但MS
Windows、BSDi、HP-UX、MVS、IRIX等操作系统并不遵守这个规定,而会使用RESET响应这个FIN数据包。据此,可粗略推断目标主机使用的操作系统类别。
* TCP ISN采样:TCP初始序列号ISN(initial sequence
numbe)采样是利用TCP协议中初始序列号长度与特定的操作系统相匹配的方法。较早的Unix版本在处理TCP协议时,初始序列号长度为64K;Solaris、IRIX、FreeBSD、DigitalUnix、Cray等操作系统,则使用随机增长的长度;Windows操作系统的序列号长度使用依赖时间的模型,使ISN在每个时间周期递增一个小的固定数值;有一些设备则使用固定的常数,如3Com的集线器使用常数0x803H,Apple
LaserWriter打印机使用常数0xc7001。有经验的攻击者甚至可以通过计算有关序列号的函数,来进一步识别操作系统类别。
* TCP初始窗口
:TCP使用滑动窗口为两台主机间传送缓冲数据。每台主机支持两个滑动窗口,一个接收数据,另一个发送数据。窗口尺寸表示计算机可以缓冲的数据量大小。通过在初始化三次握手后检查返回的TCP包窗口大小和改变大小的规律,可识别某些操作系统的类型。
* TCP选项:
并不是所有的操作系统都支持TCP包中的所有选项,可以设计TCP包内容和类型,探测目标操作系统类别。可以向目标主机发送带有可选项标记的数据包,如果操作系统支持这些选项,会在返回包中也设置这些标记。使用TCP选项方法,可以一次在数据包中设置多个可选项,增加探测的准确度,节约探测时间。
* MSS选项:根据RFC793有关TCP头格式的资料,MSS(maximum segment
size最大数据段大小)规定了发送方可以接收的最大的TCP分片。但不同的操作系统的MSS值略有不同,绝大多数系统使用1460大小的MSS,NOVELL使用的是1368,而部分FreeBSD的版本使用512大小的MSS。
* IP协议包头不可分片位:IP协议包头内有一段3位的标志位,其中第一个控制位指定数据包是否被分片。根据RFC1191,当使用路径MTU(maximum
transmission unit,最大传输单元)发现技术查询PMTU(path
MTU),以确定传输路径上的最小MTU时,所有TCP数据包必须设置DF位(don’t fragment不可分片),但FreeBSD
5.0-CURRENT版本存在缺陷,在SYN-ACK包中没有设置DF位,攻击者可以通过连接服务器并截获网络通信数据判别是否是FreeBSD
5.0-CURRENT系统。
* 服务类型TOS:IP包头有8位服务类型字段,用来规定数据包的处理方式,其中包括3位的优先域(precedence
field),用来指定IP数据包的8个优先级别;4位的服务类型域(type of
service),用来描述网络在路由IP数据包时如何平衡吞吐率、延时、可靠性和代价;和MBZ(must be
zero)域。当一个MBZ为1的ICMP请求数据包到达目标主机时,FreeBSD 4.1.1送回的应答数据包中MBZ为1,而Windows 2000
Pro送回的应答数据包中MBZ为0。
<>3.端口扫描

* 计算机的端口是输入/输出设备和CPU之间进行数据传输的通道。
* 通过端口扫描,可以发现打开或正在监听的端口,一个打开的端口就是一个潜在的入侵通道。
* 每一台计算机都有65536个端口可供使用。
* 前1024个端口被作为系统处理的端口而保留 ,并向外界的请求提供众所周知的服务,所以这些端口被攻击者视为重点检查对象,以减少扫描范围,缩短扫描时间。
* TCP端口扫描:向目标主机的指定端口建立一个TCP全连接过程
,即完成三次握手过程,从而确定目标端口是否已激活或正在监听。这是一种最基本的,也是最简单的扫描方式。但通常也会留下日志,易被发现。
* TCP SYN扫描
:向目标端口发送一个SYN数据包,如果应答是RST,说明端口是关闭的;如果应答中包含SYN和ACK,说明目标端口处于监听状态。使用SYN扫描并不完成三次握手过程,所以这种技术通常被称为
半连接扫描。由于很少有站点会记录这种连接,所以SYN扫描也被称为半公开或秘密扫描。
* TCP FIN扫描
:对于一些操作系统,当FIN数据包到达一个关闭的端口时,会返回一个RST数据包;当端口开放时,这种数据包被忽略,不作任何应答,从而可以判断端口状态。防火墙和包过滤器会监视SYN数据包,而使用FIN数据包有时能够穿过防火墙和包过滤器,所以,这种方法
较SYN扫描更为隐蔽。
* NULL扫描:发送一个没有任何标志的TCP包到目标端口,称为NULL扫描。根据RFC
793中的连接状态图和规定,如果目标端口是关闭状态,应该返回一个RST数据包。
* Xmas tree扫描(圣诞树扫描)
:向目标端口发送一个标记为FIN、URG和PUSH数据包。根据RFC793,如果目端口是关闭状态,那么应该返回一个RST数据包。
* UDP扫描
:按照UDP协议,当UDP数据包到达目标端口时,无论该端口是否开放,目标主机都不作任何应答,即打开的端口不会回送确认数据包、关闭的端口不会回送错误数据包。这给UDP扫描带来一定困难,但是,当数据包到达一个关闭的端口时,大部分主机会返回一个ICMP_PORT_UNREACH的错误信息数据包,据此可以判定该端口是关闭的,除此之外的其他端口是打开的。
<>4.网络窃听

* 无线网络通信安全:无线网络通信相对于有线网络通信有更多的漏洞,由于无线网络固有的特点和无线网络技术本身的不成熟,如加密机制不完善、缺乏数据保护和
安全认证机制,使得对于无线网络的探测更为简单。现有的工具,如:Network Associates公司的Sniffer 、Airsnort、WEPCrack
等都可以用来实现对无线网络的网络监控和窃听。
<>5.典型信息采集工具

* nmap扫描器
:nmap是当前最流行的扫描器之一,能够在全网络范围内实现ping扫描、端口扫描和操作系统检测。nmap使用操作系统堆栈指纹技术。nmap可以准确地扫描主流操作系统,还可以扫描路由器和拨号设备,还可以绕过防火墙。
* Axcet NetRecon扫描器
:能够发现、分析、报告网络的各种设备,检测它们存在的漏洞。能够扫描多种操作系统,包括Unix、Linux、Windows以及NetWare等。提供对服务器、防火墙、路由器、集线器、交换机、DNS服务器、网络打印机、Web服务器以及其他网络服务设备的测试。通过模拟入侵或攻击行为,找出并报告网络弱点,提出建议和修正措施。
* ping Pro扫描器:以图形方式实现了大多数命令行程序功能,为网络扫描提供了方便。ping
Pro可以侦查出网络上开启的端口,通过监测远程过程调用服务所使用的TCP、UDP135端口和网络会话所使用的UDP137、138和139端口来实现扫描。ping
Pro只能工作在其所在网段上。
* ISS Internet Scanner扫描器:ISS Internet
Scanner可以跨网段扫描远程主机,可以检查出内部网、防火墙、Web服务器或某台主机所存在的漏洞和潜在的攻击威胁。ISS Ineternet
Scanner工作于Unix和NT平台,分为三个模块:内部网、防火墙和Web服务器,可以针对不同的扫描对象制定不同的扫描方案,从而更直接的发现重要设备中潜在的隐患,在不同的模块中,用户还可以进一步定义自己的扫描参数。
<>二 拒绝服务攻击

* 拒绝服务DoS(denial of
service)攻击是常用的一种攻击方式。DoS通过抢占目标主机系统资源使系统过载或崩溃,破坏和拒绝合法用户对网络、服务器等资源的访问,达到阻止合法用户使用系统的目的。
* DoS属于破坏型攻击。*DoS对目标系统本身的破坏性并不是很大,但影响了正常的工作和生活秩序,间接损失严重,社会效应恶劣。
<>1.基本的拒绝服务攻击

*
当一个授权实体不能获得对网络资源的访问或当访问操作被严重推迟时,就称为DoS。DoS可能由网络部件的物理损坏引起,也可能由网络负荷超载所引起,还可能由不正确的使用网络协议而引起。DoS攻击有两种基本形式:
目标资源匮乏型和网络带宽消耗型。
* 目标资源匮乏型攻击又可分为服务过载和消息流两种。
* 服务过载指的是向目标主机的服务守护进程发送大量的服务,造成目标主机服务进程发生服务过载,拒绝向合法用户的正常使用要求提供应有的服务。
* 消息流
指攻击者向目标主机发送大量的畸形数据包,使得目标主机在重组数据包过程中发生错误,从而延缓目标主机的处理速度,阻止处理正常的事务,严重时可以造成目标主机死机。
* 网络带宽消耗型攻击的目标是整个网络,攻击使目标网络中充斥着大量无用的、假的数据包,而使正常的数据包得不到正常的处理。
* 拒绝服务攻击发生时的特点:
* 消耗系统或网络资源,使系统过载或崩溃。
* 难以辨别真假。
* 使用不应存在的非法数据包来达到拒绝服务攻击的目的。
* 有大量的数据包来自相同的源。
<>2.分布式拒绝服务攻击

* 分布式拒绝服务DDoS(Distributed Denial of
Service)攻击是一种基于DoS的特殊形式的拒绝服务攻击。是分布式的、协作的大规模攻击方式,较DoS具有更大的破坏性。
* 分布式拒绝服务攻击的步骤
:要构建DDoS攻击体系,集合众多的傀儡机进行协同工作,与入侵单台主机相比DDoS攻击要复杂得多。进行DDoS攻击的基本步骤如下:
* 搜集目标情况
* 占领傀儡机
* 实施攻击
<>三 漏洞攻击

* 由于应用软件和操作系统的复杂性和多样性,使得在网络信息系统的软件中存在着不易被发现的安全漏洞;现有网络技术本身存在着许多不安全性,如TCP/IP协议
在设计初期并没有考虑安全性问题,其本身就有许多不完善之处。对于网络设计和管理人员而言,不合理的网络拓扑结构和不严谨的网络配置
,都将不可避免的造成网络中的漏洞。对于一个复杂系统而言,漏洞的存在是不可避免的。
<>1.配置漏洞攻击

* 配置漏洞可分为系统配置漏洞和网络结构配置漏洞。
* 系统配置漏洞多源于管理员的疏漏,如:共享文件配置漏洞、服务器参数配置漏洞等。
* 网络结构配置漏洞多与网络拓扑结构有关,例如:将重要的服务设备与一般用户设备设置与同一网段,为攻击者提供了更多的可乘之机,埋下了安全隐患。
* 默认配置漏洞
:操作系统和服务应用程序在安装时使用默认的设置,虽然方便了系统的安装过程,但默认参数实际上为攻击者留下了后门。如默认用户名和口令、默认端口和默认服务,通常都是首选的突破口和入侵点。默认的目录路径则为攻击者查找机要文件,放置后门程序提供了方便。
* 共享文件配置漏洞:大部分操作系统都提供了文件共享机制,方便网络资源的共享。但是共享配置不当就会暴露重要文件,攻击者能够轻易的获得机密资料。
* 匿名FTP
:匿名FTP网络服务允许任何网络用户通过FTP访问服务器系统上指定的资源,但不适当的FTP配置,将会造成服务器系统非授权资源的泄漏。一般的匿名FTP的权限都是
只读权限,即不允许匿名用户在服务器上创建文件和目录。否则,攻击者可很容易的放置木马程序,设置系统后门,为进一步的攻击提供便捷。
* wu-ftpd:作为FTP服务程序的wu-ftpd(Washington university FTP server
daemon,华盛顿大学FTP服务器守护程序)中存在的漏洞,可以使攻击者由系统的任何账号获得root权限。
<>2.协议漏洞攻击

*
Internet上现有的大部分协议在设计之初并没有考虑安全因素,使得攻击者可以利用协议固有的漏洞对目标进行攻击。操作系统在设计处理TCP/IP协议时,并没有预计到要处理非法数据包,当这种不应存在的特殊数据包出现时,许多系统会发生处理速度缓慢、停止响应和系统崩溃等不正常现象。
* SYN Flood攻击:SYN Flood攻击利用的是TCP
协议的设计漏洞。假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的。在这种情况下服务器端会重试,再次发送SYN+ACK给客户端,并等待一段时间,判定无法建立连接后,丢弃这个未完成的连接。这段等待时间称为
SYN中止时间
(Timeout),一般为30秒–2分钟。如果攻击者大量模拟这种情况,服务器端为了维护非常大的半连接列表就会消耗非常多的资源。此时从正常客户的角度来看,服务器已经丧失了对正常访问的响应,这便是SYN
Flood攻击的机理。
* 循环攻击(UDP flood攻击):循环攻击利用的是UDP协议漏洞。

*
Land攻击:Land攻击的特征是IP协议中IP源地址和目标地址相同。操作系统如Window NT不知道该如何处理这种情况,就可能造成死机。

*
Smurf攻击
:IP协议规定主机号为全1的地址为该网段的广播地址,路由器会把这样的数据包广播给该网络上的所有主机。Smurf攻击利用了广播数据包,可以将一个数据包“放大”为多个。攻击者伪装某源地址向一个网络广播地址发送一组ICMP回应请求数据包,这些数据包被转发到目标子网的所有主机上。由于Smurf攻击发出的是ICMP回应请求,因此所有接收到该广播包的主机将向被伪装的源地址发回ICMP回应应答。攻击者通过几百个数据包就可以产生成千上万的数据包,这样不仅可以造成目标主机的拒绝服务,而且还会使目标子网的网络本身也遭到DoS攻击。

*
WinNuke攻击
:操作系统在设计处理TCP数据包时,都严格遵循了TCP状态机,但遇到不符合状态机的数据包时,若不知所措,就可能造成死机。WinNuke攻击首先发送一个设置了
URG标志的TCP数据包,当操作系统接收到这样的数据包时,说明有紧急情况发生,并且,操作系统要求得到进一步的数据,以说明具体情况。此时,攻击者发送一个
RST数据包,构造了TCP状态机中不会出现的数据包,若操作系统(如未打补丁的Windows NT)不能正确处理,就会死机,使连接异常终止,服务中断。

*
Fraggle攻击:Fraggle攻击发送畸形UDP碎片,使得被攻击者在重组过程中发生未加预料的错误,导致系统崩溃。典型的Fraggle攻击使用的技术有:
碎片偏移位的错乱、强制发送超大数据包等。例如:一个长为40字节的数据在发送时被分为两段,包含第一段数据的数据包发送了数据0
36字节,包含第二段数据的数据包在正常情况下应该是37
40的4个字节,但攻击者构造并指定第二个数据包中包含第二段数据且为数据的24–27字节来迷惑操作系统,导致系统崩溃。

*
Ping to death攻击
:根据有关IP协议规定的RFC791,占有16位的总长度控制字确定了IP包的总长度为65535字节,其中包括IP数据包的包头长度。Ping to
death攻击发送超大尺寸的ICMP数据包,使得封装该ICMP数据包的IP数据包大于65535
字节,目标主机无法重新组装这种数据包分片,可能造成缓冲区溢出、系统崩溃。

<>3.程序漏洞攻击

* 由于编写程序的复杂性和程序运行环境的不可预见性,使得程序难免存在漏洞。程序漏洞攻击成为攻击者非法获得目标主机控制权的主要手段。
* 缓冲区溢出攻击的原理:缓冲区溢出攻击是利用系统、服务、应用程序中存在的漏洞,通过恶意填写内存区域,使内存区域溢出
,导致应用程序、服务甚至系统崩溃,无法提供应有的服务来实现攻击目的。不检测边界是造成缓冲区溢出的主要原因。UNIX主要设计语言是C语言,而C语言缺乏边界检测
,若不检查数组的越界访问,就会留下基于堆栈攻击的隐患。UNIX进程在内存中分为正文段、数据段和堆栈段
。堆栈段用于为动态变量分配空间和临时保存函数调用的参数和返回地址。动态分配是UNIX程序采用的主要方法,但是,若动态变量从栈中分配空间时没有作边界检查,则可能发生缓冲区溢出,造成段越界。
* BIND漏洞攻击:运行在DNS服务器上的BIND(Berkeley internet name domain,Berkeley
internet名字域)DNS服务器软件是最易遭受攻击的软件之一。BIND存在的脆弱性可以对系统造成根级的安全威胁。如BIND
8.2版本存在漏洞,攻击者伪装成DNS服务器,发送一个大的NXT记录(next,域中不存在的名字被标定为NXT类型),并在记录中包含攻击代码,使存在漏洞的DNS服务器缓冲区溢出,从而获得root权限。
* Finger漏洞攻击:Solaris自带的Finger服务器存在如下一些漏洞:当攻击者在向Finger服务器提交以数字做用户名的询问请求
时,Finger服务器会把日志文件wtmp(wtmp一个用户每次登录和退出时间的记录)中所有的用户名返回给攻击者。当攻击者对服务器进行finger查询时,如果询问一个不存在的用户,服务器会返回一个带“.”的回答,这可能造成攻击者用暴力法判断系统上存在的用户。
* Sendmail漏洞攻击
:在旧版本的sendmail中,为解决反向编码的问题,数据库中包含一个decode入口,这个UNIX程序可以将一个以纯文本编码的二进制文件,转化为原有的二进制的形式和名字。反向编码完全尊重被编码的文件,例如当一个名为bar.uu的文件声称其原始文件是/home/foo/.rhosts时,则反编码程序将试图转化bar.uu文件为foo下的.rhosts文件。一般情况下sendmail将undecode作为半特权用户后台程序运行,所以email发出的编码文件不会覆盖任何系统文件。但是,如果目标程序是全局可写的,那么编码程序允许远程用户修改这些文件,使攻击者可以放置木马,留下后门,达到攻击目的。

技术
©2020 ioDraw All rights reserved
被裁半年后成功进入阿里定级P7,他是咋做到的?Java面试简历中犯的这些错,是不是也影响到了你年薪百万?JAVA面试题-Mysql数据库shardingsphere实例应用开业了!SpaceX首次正式商业载人发射升空,一文详解事件来龙去脉Django的defer和only方法详解python画桃心表白成为架构师,也不算是件难事!程序员常见逻辑题笔试题Javascript入门阶段——if语句