一、TCP/IP协议
1 OSI与TCP/IP
OSI | 应用层 | 表示层 | 会话层 | 传输层 | 网络层 | 数据链路层 | 物理层 |
TCP/IP | 应用层 | 传输层 | 网络互连层 | 网络接口层 |
2 ICMP(互联网控制消息协议)
用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,管理者通过这些消息可以对所发生的问题作出诊断,然后采取适当的措施。(ICMP包含在IP数据包中)
3 三次握手协议
二、Mitnick攻击
1 TCP协议栈的弱点
(1) TCP连接的资源消耗
(2) 序列号的可预测性
2 SYN Flood攻击
向目标主机发送大量SYN,但不发送第三次握手应答ACK,消耗目标主机的系统资源,使连接数量超过系统的限制数量,造成拒绝服务(并使用假冒的IP地址,掩盖入侵痕迹)
3 TCP会话劫持(前提:终端C信任服务器S发起的TCP连接)
(1) 攻击者T对服务器S发起SYN Flood攻击,使S不能响应终端C的请求
(2) T假冒S向C发送SYN
(3) C向S发送SYN/ACK,而S无法响应C的请求,不能发送RESET
(4) T预测出C发送的SYN/ACK的序列号,假冒S发送应答ACK
(5) T骗取C的信任,假冒S与C建立连接,从而获取C的信息
4 攻击的防范
(1) 防止信任关系的泄露
1)检测危险端口的连接企图
2)保护特定的服务
(2) 阻止SYN Flood攻击
(3) 提高预测TCP序列号的难度
三、端口扫描
1 扫描的目的是测试主机是否监听一个特定的端口
(1) OPEN表示主机监听该端口
(2) CLOSED表示主机没有监听该端口
(3) DROPED表示未收到回应
2 端口扫描的作用
(1) 入侵监听该端口的应用程序
(2) 判定主机OS
(3) 发现潜在的安全漏洞
3 扫描方法
(1) SYN扫描
发送一个SYN数据包到目标端口,如果主机回复RST或者没有回应,说明端口关闭;如果主机回复ACK,说明端口打开,利用RST关闭连接。
(2) ACK扫描
发送一个ACK数据包到目标端口,如果主机回复RST,说明端口很可能开放;如果主机不回复或者收到ICMP目标不可达报文,说明该端口被过滤;其他情况下端口很可能是关闭的。
(3) FIN扫描
发送一个FIN数据包到目标端口,如果主机回复RST,说明端口关闭;如果没有任何反应,说明该端口开放;如果收到ICMP目标不可达报文,则不能确定端口的状态。
(4) UDP扫描
发送一个UDP数据包到目标端口,如果主机回复ICMP目标不可达报文,说明UDP端口关闭;如果主机回复一个UDP数据,说明UDP端口打开;其他情况下端口是关闭的或者被过滤。
(5) 利用搜索引擎来扫描
使用一个特定的搜索条件,在搜索引擎中搜索站点是否存在某个漏洞。不直接扫描攻击目标,隐蔽性强。
四、拒绝服务攻击
1 攻击来源
(1) 错误配置或者软件漏洞
(2) 协议考虑不足
(3) 利用大量请求来占用过多的服务资源(网络带宽、文件系统空间容量、CPU时间),使服务超载,无法响应其他请求
2 几个攻击实例
(1) TearDrop攻击(利用错误的IP数据包分片)
基本原理:向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。利用UDP包重组时重叠偏移的漏洞对系统主机发动拒绝服务攻击,最终导致主机菪掉。(假设数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部,这就是重叠现象。)
(2) Ping Of Death攻击
根据数据分段的执行方式,发送包含对于65535字节的非法数据包,由于各个分段是依赖于分段偏移量进行组装,在最后一个分段就可能用适合的分段长度,结合偏移量使得组装好的数据包长度使16位的变量溢出,导致系统崩溃。
(3) Smurf攻击(攻击放大)
攻击者伪装成受害主机地址,向广播地址发送echorequest,受害主机将接收到来自广播地址网络中主机回复的ICMP Echo reply
(4) 利用DNS放大数据量
攻击者伪装成受害主机地址,向DNS发送查询请求(大小为60bytes),DNS发送查询结果给受害主机(大小为3000bytes)
3 分布式拒绝服务攻击(DDoS)
(1)常用的工具:Trinoo、TFN、TFN2K和Stacheldraht
(2)攻击步骤:
1)探测扫描大量主机以寻找可入侵的代理主机
2)入侵有安全漏洞的主机并获取控制权
3)在每台入侵主机中安装代理程序
4)利用已入侵主机继续进行扫描和入侵
5)操纵已入侵主机对目标发起拒绝服务攻击
4 DoS攻击的解决方法
(1)防火墙和路由过滤
(2)操作系统的改进
(3)退让策略
1)增加资源
2)负载均衡,服务器集群
(4)协议修订
1)SYN Cache
2)SYN Cookie
5几种Flood
(1)SYN Flood
**SYN Flood攻击的监控
监听未分配的IP地址段,如果收到SYN/ACK包表明很可能是SYN Flood攻击。
大规模监测:Arbor network ATLAS或Network telescope
(2)HTTP Flood
1)攻击方法:完成与攻击站点的TCP连接,发送HTTP HEAD、GET请求;重复这个过程。
2)优缺点:可以绕过SYN Flood防御措施,但无法使用随机IP地址(泄露bot主机的IP地址),而且可以实施限流的方式进行防御,也可以阻断bot主机
(3)DNS Flood
在UDP中采用随机源IP地址,向victim_isp.com发送大量的查询请求来查询victim.com的IP地址
6几种技术
(1)SYN Cookie技术
思想:用一个密钥和数据包中的信息产生服务器的SNs
基本原理:
1)服务器接收到SYN包后,返回用户SYN/ACK包,其中的SN采用如下方法计算:
T = 5-bit counter incremented every 64secs
L = MACkey(SAddr,Sport,DAddr,DPort,SNc,T)
[key:启动时随机选择]
SNs = (T | mss | L) |L|= 24bits
2)服务器不保存状态
3)合法客户端返回ACK包(AN=SNs,SN=SNc+1),服务器可以验证SNs的合法性,然后决定是否建立连接
(2)SYN Cache技术
(3)Prolexic技术
思想:只将已经建立的TCP连接转发给服务器
基本原理:大量的SYN包先发给Prolexic代理,Prolexic代理回复SYN/ACK,将回复ACK的访问转发给服务器。
五、BGP攻击
1Internet总体结构
2 几个协议
(1)ARP协议(地址解析协议)
1)基本功能:通过目标设备的IP地址,查询目标设备的MAC地址,以保证通行的顺利进行。
2)产生原因:在以太网协议中规定,同一局域网中的一台主机要和另一台主机直接通信,必须知道目标主机的MAC地址。而在TCP/IP协议栈中,网络互连层和传输层只关心目标主机的IP地址,这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层的IP协议提供的数据中,只包含目标主机的IP地址。因此需要根据目标主机的IP地址获得其MAC地址。
3)ARP代理:当发送主机和目标主机不在同一局域网中时,即使知道目标主机的MAC地址也无法直接通信,必须经过路由转发才可以。所以此时,源主机通过ARP协议获得的不是目标主机的MAC地址,而是一台可以通往局域网外的路由器的MAC地址。此后,源主机发往目标主机的所有帧都将发往该路由器,通过它往外发送。这就是所谓的ARP代理。
4)ARP欺骗:攻击者发送假的ARP封包到网络上,尤其是送到路由器上,其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此,攻击者可将这些流量另行转送到真正的路由器(被动式封包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middleattack);攻击者亦可将ARP封包导到不存在的MAC位址以达到阻断服务攻击的效果,例如netcut软件。
(2)OSPF协议(开放式最短路径优先协议)
OSPF是对链路状态路由协议的一种实现,隶属内部网关协议(自治系统[AS]内部所使用的路由协议)。协议中,使用Dijkstra算法计算最短路径树,使用Cost作为路由度量,使用链路状态数据库(LSDB)保存当前网络拓扑结构,LSDB在同一区域中的所有路由器上是相同的。
(3)BGP协议(边界网关协议)
BGP是互联网上一个核心的去中心化自治路由协议,通过维护IP路由表或者前缀表来实现AS之间的可达性,属于矢量路由协议。BGP使用TCP协议作为传输层协议,当网络检测到某台主机发生变化时,就会发送新的路由表。
(4)协议的运作范围
3 BGP攻击来源
BGP数据包没有经过认证,攻击者可以广告任意的路由,并且广告的路由结果可以扩散到整个Internet。如果广告错误的路由,就可以成为DoS攻击的工具。
六、DNS攻击
1DNS解析过程
2 DNS漏洞
(1)用户完全信任DNS服务器
(2)DNS请求可能被劫持,DNS服务器可能被控制(BGP攻击使得请求发送到虚假的DNS服务器),导致DNS响应是错误的或者假冒的。
3 DNS面临的安全威胁
(1)DNS欺骗
攻击者恶意更改响应并把解析结果指向自己可控的主机,攻击者就可能获取客户端的重要信息,或者将客户端请求导向包含恶意代码的页面,以实现木马植入。
(2)数据窃听及篡改
DNS查询操作将整个请求或响应数据封装在单个UDP报文中,攻击者很容易窃听并篡改数据,将恶意代码“投入”本地DNS的缓存中。
(3)名字连锁攻击
很多DNS资源记录中包括域名(比如CNAME以及用于描述授权域名服务器的NS记录),攻击者可以构造这种资源记录,通过DNS响应的权威区和附加信息区返回给查询者,查询者将这些信息保存到缓存中。攻击者可以构造任意的域名及相关信息,并把目标主机导向恶意链接。
(4)否认域名的存在
当客户端发出查询请求时,攻击者可能返回查询失败应答,或者将应答中的某个资源记录删除,从而否认域名的存在。
(5)通配符的使用
DNS允许使用通配符‘*’,使得名称标示符具有不确定性,为数据源的认证增加了难度,可能形成DoS攻击
4 解决方法—DNSSEC
DNS面临的问题可归纳为服务器伪装及消息篡改,DNSSEC利用数字签名技术提供对DNS消息认证功能,包括数据源认证和数据完整性校验。
**DNSSEC无法解决的问题
拒绝服务攻击和DNS rebinding攻击
5DNS Rebinding攻击
(1)攻击过程
1)攻击者注册一个域名attacker.com吸引用户来访问该网站
2)当用户请求attacker.com IP地址时,攻击者返回自己搭建的服务器IP地址A,该网站包含一个恶意javascript脚本
3)在DNS回应中,TTL值会设为非常小,恶意的javascript脚本会使用javascript XMLHttpRequest再次访问attacker.com
4)上一个DNS回应的TTL值很小,所以用户会再次请求解析域名attacker.com,但这次返回的结果是另一个IP地址B,这是一个合法的被攻击服务器的IP地址
5)浏览从B获取的网页,从浏览器的角度看,恶意javascript脚本和来源于B的网页,是来源于同一个网站
6)恶意javascript脚本可以与来源于B的网页交互,它可以读取内容,发送get/put请求,获得回应等
(2)防御机制
不管TTL是多少,一律把DNS回应缓存下来,这样攻击者就无法实现IP地址的切换