4.2黑客攻击及其预防(P562-581)
1、黑客和黑客攻击
黑客(Hacker)在当前的网络世界中有褒贬两重含义。从褒的方面讲,黑客特指一些特别优秀的程序员或技术专家。从贬义方面讲,黑客是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客(cracker)”,并不屑与之为伍。
(1)信息的收集
网络监测、社会工程、公共资源和垃圾、后门工具。
(2)黑客攻击方式
拒绝服务攻击、缓冲区溢出攻击、漏洞攻击、欺骗攻击。
2、拒绝服务攻击与防御
DoS是由人为或非人为发起的行动,使主机硬件、软件或两者同时失去工作能力,使系统不可访问并因此拒绝合法的用户服务要求。
对服务器实话DoS有两种思路:A服务器的缓冲区满,不接收新的请求。B使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。这也是DoS攻击实话的基本思想。
(1)传统拒绝服务攻击的分类
网络的内外部用户都可以发动这种攻击。
外部用户针对网络连接发动DoS攻击主要有以下几种模式:
消耗资源、破坏或更改配置信息、物理破坏或改变网络部件、利用服务程序中的处理错误使服务失效。
(2)分布式拒绝服务攻击
详情请参阅:分布式拒绝服务攻击 <http://bbs.ldbit.cn/thread-2056-1-1.html>
(3)拒绝服务攻击的防御方法
A、加强对数据包的特征识别。
B、设置防火墙监视本地主机端口的使用情况。
C、对通信数据量进行统计也可获得有关攻击系统的位置和数量信息。
D、尽可能地修正已经发现的问题和系统漏洞。
3、缓冲区溢出攻击与防御
详情请参阅:缓冲区溢出攻击 <http://bbs.ldbit.cn/thread-2057-1-1.html>
针对缓冲区溢出,可以采取多种防范策略:
(1)系统管理上的防范策略
A、关闭不需要的特权程序。 B、及时给程序漏洞打补丁。
(2)软件开发过程中的防范策略
A、编写正确的代码 B、缓冲区不可执行 C、改进C语言函数库 D、使堆栈向高地址方向增长 E、程序指针完整性检查 F、利用编译器将静态数据段中的函数地址指针存放地址和其他数据的存放地址分离。
4、程序漏洞攻击与防御
(1)WEB程序漏洞攻击与防御
A、CGI漏洞攻击
CGI的漏洞:配置错误、边界条件错误、访问验证错误、来源验证错误、输入验证错误、异常情况处理失败、策略错误。
防范的方法:注意P570的8条。
B、SQL注入攻击。
SQL注入攻击的过程主要包含以下几步:发现SQL注入位置、判断后台数据库类型、确定XP_CMDSHELL可执行情况、发现WEB虚拟目录、上传ASP木马、得到管理员权限。
防御方法:注意P571的4条。
(2)TCP/IP漏洞
A、Ping of Death攻击
攻击类型:Ping Of Death攻击是一种拒绝服务攻击。
攻击特征:该攻击数据包大于65535个字节。由于部分操作系统接收到长度大于65535字节的数据包时,就会造成内存溢出、系统崩溃、重启、内核失败等后果,从而达到攻击的目的。
检测方法:判断数据包的大小是否大于65535个字节。
反攻击方法:使用新的补丁程序,当收到大于65535个字节的数据包时,丢弃该数据包,并进行系统审计。
B、Teardrop攻击
攻击类型:Teardrop攻击是一种拒绝服务攻击。
攻击特征:Teardrop是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。(利用UDP包重组时重叠偏移(假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象。)的漏洞对系统主机发动拒绝服务攻击,最终导致主机菪掉;对于Windows系统会导致蓝屏死机,并显示STOP 0x0000000A错误。)
检测方法:对接收到的分片数据包进行分析,计算数据包的片偏移量(Offset)是否有误。
反攻击方法:添加系统补丁程序,丢弃收到的病态分片数据包并对这种攻击进行审计。
C、Winnuke攻击
攻击类型:WinNuke攻击是一种拒绝服务攻击。
攻击特征:WinNuke攻击又称带外传输攻击,它的特征是攻击目标端口,被攻击的目标端口通常是139、138、137、113、53,而且URG位设为“1”,即紧急模式。
检测方法:判断数据包目标端口是否为139、138、137等,并判断URG位是否为“1”。
反攻击方法:适当配置防火墙设备或过滤路由器就可以防止这种攻击手段(丢弃该数据包),并对这种攻击进行审计(记录事件发生的时间,源主机和目标主机的MAC地址和IP地址MAC)。
D、Land攻击
land 攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。结果通常使存在漏洞的机器崩溃。
在Land攻击中,一个特别打造的SYN <http://baike.baidu.com/view/488528.htm>包中的原地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对Land攻击反应不同,许多UNIX <http://baike.baidu.com/view/8095.htm>实现将崩溃,而 Windows NT <http://baike.baidu.com/view/41346.htm>会变的极其缓慢(大约持续五分钟)。
5、欺骗攻击与防御
(1)ARP欺骗 详情请参阅:ARP欺骗 <http://bbs.ldbit.cn/thread-2058-1-1.html>
(2)DNS欺骗 详情请参阅:DNS欺骗 <http://bbs.ldbit.cn/thread-2059-1-1.html>
(3)IP欺骗 详情请参阅:ip地址欺骗
6、端口扫描
详情请参阅:端口扫描 <http://bbs.ldbit.cn/thread-2061-1-1.html>
7、强化TCP/IP堆栈以抵御拒绝服务攻击
(1)同步包风暴(SYN Flooding)
Synflood:该攻击以多个随机的源主机地址向目的路由器发送SYN包,而在收到目的路由器的SYN ACK后并不回应,这样,目的路由器就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务,甚至导致路由器崩溃。服务器要等待超时(Time Out)才能断开已分配的资源。
防范措施:
A、设置HALF-TCP连接的最大个数。超过这个MAX后随机关闭已建立的HALF-TCP连接或者丢弃新来的SYN信息。
B、关闭TCP服务。攻击者使用无效的ip地址,利用tcp连接的三次握手过程,使得受害主机处于开放会话的请求之中,直至连接超时。在此期间,受害主机还会连续接受这种会话请求,最终因耗尽资源而停止响应。
(2)ICMP攻击
防御基于ICMP的网络攻击的方法。
A、选择合适的防火墙
有效防止ICMP攻击,防火墙应该具有状态检测、细致的数据包完整性检查和很好的过滤规则控制功能。
状态检测防火墙通过跟踪它的连接状态,动态允许外出数据包的响应信息进入防火墙所保护的网络。例如,状态检测防火墙可以记录一个出去的 PING(ICMP Echo Request),在接下来的一个确定的时间段内,允许目标主机响应的ICMP Echo Reply直接发送给前面发出了PING命令的IP,除此之外的其他ICMP Echo Reply消息都会被防火墙阻止。与此形成对比的是,包过滤类型的防火墙允许所有的ICMP Echo Reply消息进入防火墙所保护的网络了。许多路由器和基于Linux内核2.2或以前版本的防火墙系统,都属于包过滤型,用户应该避免选择这些系统。
新的攻击不断出现,防火墙仅仅能够防止已知攻击是远远不够的。通过对所有数据包进行细致分析,删除非法的数据包,防火墙可以防止已知和未知的 DoS攻击。这就要求防火墙能够进行数据包一致性检查。安全策略需要针对ICMP进行细致的控制。因此防火墙应该允许对ICMP类型、代码和包大小进行过滤,并且能够控制连接时间和ICMP包的生成速率。
B、配置防火墙以预防攻击
一旦选择了合适的防火墙,用户应该配置一个合理的安全策略。以下是被普遍认可的防火墙安全配置惯例,可供管理员在系统安全性和易用性之间作出权衡。
防火墙应该强制执行一个缺省的拒绝策略。除了出站的ICMP Echo Request、出站的ICMP Source Quench、进站的TTL Exceeded和进站的ICMP Destination Unreachable之外,所有的ICMP消息类型都应该被阻止。下面是针对每个ICMP消息类型的过滤规则的详细分析。
Echo Request和Reply(类型8和0):允许Echo Request消息出站以便于内部用户能够PING一个远程主机。阻止入站Echo Request和出站Echo Reply可以防止外部网络的主机对内部网络进行扫描。如果您使用了位于外部网络的监视器来监视内部网络,就应该只允许来自于特定外部IP的Echo Request进入您的网络。限制ICMP Echo包的大小可以防止“Ping Floods”攻击,并且可以阻止那些利用Echo Request和Reply来“偷运”数据通过防火墙的木马程序。
Destination unreachable (类型3):允许其入站以便于内部网用户可以使用traceroute。需要注意的是,有些攻击者可以使用它来进行针对会话的DoS攻击,如果您曾经历过类似的攻击,也可以阻止它。阻止出站的ICMP Destination unreachable消息,因为它可能会泄漏内部网络的结构。不过有一个例外,对于那些允许外部网络通过TCP访问的内部主机(如位于DMZ区的Web 服务器)发出的Destination unreachable,则应该允许它通过。为了能够支持“Path MTU Discovery”,您应该允许出站的“Packet Too Big”消息(类型3,代码4)到达那些主机。
Source quench(类型4):阻止其入站,因为它可以作为一种DoS攻击,能够降低发送者的发送速度。允许其出站以便于内部主机能够控制发送端发送数据的速度。有些防火墙会忽略所有直接发送到防火墙端口的Source Quench消息,以防止针对于防火墙的DoS攻击。
Redirect、Router announcement、 Router selection(类型5,9,10):这些消息都存在潜在危险,因为它们可以用来把数据重定向到攻击者的机器。这些消息都应该被阻止。
TTL exceeded(类型11):允许其进站以便于内部用户可以使用traceroute。“firewalking”使用很低的TTL值来对网络进行扫描,甚至可以通过防火墙对内网进行扫描,所以应该禁止其出站。一些防火墙可以阻止TTL值小于设定值的数据包进入防火墙。
Parameter problem(类型12):禁止其入站和出站。通过使用一个能够进行数据包一致性检查的防火墙,错误和恶意的数据包都会被阻塞。
(3)SNMP攻击
8、系统漏洞扫描
(1)基于网络的漏洞扫描 (2)基于主机的漏洞扫描