TCP/IP网络协议攻击
这部分涉及:
- ARP缓存欺骗攻击
- ICMP重定向攻击
- SYN FLOOD攻击
- TCP RST攻击
- TCP会话劫持攻击
- Netwox原始报文伪造工具
网络层攻击:
(1) ARP 缓存欺骗
ARP 缓存是 ARP 协议的重要组成部分。当使用 ARP 协议解析了某个 MAC 地址和 IP地址的映射关系,该映射便会被缓存下来。因此就不用再使用 ARP 协议来解析已存在缓存中的映射关系。但是因为 ARP 协议是无身份认证的,所以 ARP 缓存很容易被恶意的虚假ARP 数据报实施欺骗。这样的攻击被称为 ARP 缓存欺骗(或 ARP 缓存中毒)。在这样的攻击中,攻击者通过伪造 ARP 数据报来欺骗被攻击主机的电脑使之缓存错误的 MAC 地址和 IP 地址映射。因攻击者的动机不同,攻击的结果也有很多。例如,攻击者可以使被攻击主机的默认网关IP 映射到一个不存在的 MAC 地址达到 DoS 攻击,攻击者也可以使被攻击主机的通信重定向至其他机器等等。你的任务是演示 ARP 缓存欺骗攻击是怎么工作的。任务中一些有用的命令: linux 下可以使用 arp 来检查当前的 ARP 缓存。
-
ARP欺骗技术的应用场景
利用ARP欺骗进行交换网络中的嗅探
ARP欺骗构造中间人攻击,从而实施TCP会话劫持
ARP病毒
ARP欺骗挂马 -
ARP欺骗攻击防范措施
静态绑定关键主机的IP地址与MAC地址映射关系
网关/关键服务器
"arp -s IP地址 MAC地址 类型"
使用相应的ARP防范工具
ARP防火墙
使用VLAN虚拟子网细分网络拓扑
加密传输数据以降低ARP欺骗攻击的危害后果
实践
ARP欺骗
攻击机的ip后三位为130,靶机A为133,靶机B为134,攻击机通过netwox工具伪造arp报文,使靶机B相信靶机A的ip对应的MAC地址为伪造的MAC地址,这个MAC地址可以是攻击机的物理地址,我在伪造的物理地址中嵌入了我的学号。
使用netwox的80号工具攻击,命令如图,
攻击结果如图,
(2) ICMP 重定向攻击
ICMP 重定向报文是路由器为网络中的机器提供最新的路由信息以达到最短路由而使用的。当主机收到一个 ICMP 重定向报文就会根据报文来更新自己的路由表。由于缺乏确认机制,如果攻击者想要使被攻击主机使用特定路由,他们只要向被攻击主机发送欺骗性的ICMP 重定向报文,使它改变路由表即可。你的任务是演示 ICMP 重定向攻击是如何工作的,并描述一下观察到的结果。在 linux可以使用 route 命令检查路由表。
- ICMP路由重定向攻击防范
根据类型过滤一些ICMP数据包
设置防火墙过滤
对于ICMP重定向报文判断是不是来自本地路由器
实践
首先查看靶机A的ip/mac地址,攻击机B的ip/mac地址
然后记录下此时A的路由表状态
我们打开wireshark,输入判断条件
(tcp or arp or icmp) and ip.addr == 222.28.136.122
准备待命抓包。
这时我们开启netwox进行ICMP路由重定向,使用第86号工具,按照工具提示进行数据包的篡改,如下图
这句话的意思是,嗅探网络中来自主机222.28.136.122的TCP包,一旦出现,就以网关222.28.136.254的名义,向数据包的源地址发送一个ICMP重定向报文,使之使用222.28.136.223作为默认的路由。
回车之后,我们开启wireshark,用靶机ping baidu.com,可以看到wireshark立刻截获了靶机发往目标服务器的的相关报文,如下图所示:
然后这时我们再查看靶机的路由表,和之前的相对比,靶机已经错误的将网关更改为了我们的攻击机A的IP地址
传输层攻击:
(1) SYN flood 攻击
SYN flood攻击是 DoS 攻击的一种形式,攻击者向被攻击主机的 TCP 端口大量发送 SYN请求包,但不去完成 TCP 的”三次握手”的过程,例如攻击使用一个假的 IP 地址,或只是简单地不再继续建立 TCP 连接的过程,这都使被攻击主机处于”半连接”状态(即在”三次握手”过程中,有了前两次握手,SYN 包和 SYN-ACK 包的传输,但没有最后一次 ACK 包的确认)。被攻击主机的主机会使用一个队列来保存这种半连接的状态,当这个队列存储空间满了的时候,目标主机便无法再接受任何其它连接。这一队列的空间大小事实上是一个系统变量,在Linux 中,可以这样查看它的大小:
# sysctl –q net.ipv4.tcp_max_syn_backlog
我们还可以使用”netstat -na”命令去检查队列的使用情况。处于半连接的连接状态被标示为”SYN-RECV”,完成了”三次握手”的连接被标示为”ESTABLISHED”.在这一任务中,你需要演示 SYN flood 攻击。你可以使用 Netwox 去实施攻击,并使用嗅探器来获取数据包。攻击实施的过程中,在被攻击主机上运行”netstat -na”命令去观察受攻击的情况。请描述你的攻击是否成功。
SYN Cookie 保护机制:如果你的攻击看起来并不成功,你可以检查一下目标主机的 SYN Cookie 机制是否被开启。SYN cookie 是针对 SYN flood 攻击的一种保护机制。这一机制会在探测到 SYN flood 攻击时开始生效。
你可以使用 sysctl 命令去打开或关闭这一机制:
# sysctl -a | grep cookie (查看 SYN cookie 的当前状态)
# sysctl -w net.ipv4.tcp_syncookies=0 (关闭 SYN cookie)
# sysctl –w net.ipv4.tcp_syncookies=1 (打开 SYN cookie)
请分别在 SYN cookie 机制打开和关闭两种情况下实施你的 SYN flood 攻击,并比较结果。请在你的报告中尝试描述为什么 SYN cookie 能有效地抵御你的攻击。 (如果课堂上没有讲解 SYN cookie 的原理,你可以从网络上找到相关的信息)
实践
SYN FLOOD攻击
使用主机C对A实施攻击,造成FLOOD攻击,使用如下命令
可利用Wireshark工具抓取数据包查看:
可以看出C向A发送了大量的数据包,造成了SYN FLOOD攻击。
(2) TCP RST 攻击
- TCP RST攻击是一种中断攻击
伪造TCP重置报文攻击(spoofed TCP reset packet)
TCP重置报文将直接关闭掉一个TCP会话连接
限制条件:通讯目标方接受TCP包
通讯源IP地址及端口号一致
序列号(Seq)落入TCP窗口之内
嗅探监视通信双方的TCP连接,获得源、目标IP地址及端口
结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方
应用场景:恶意拒绝服务攻击、重置入侵连接、 GFW
GFW: “net::ERR_CONNECTION_RESET
你需要实施 TCP RST 攻击。这里推荐一个较为有趣的实验方法:对一个视频流的 TCP连接实施攻击。大多数的视频分享网站会通过 TCP 连接来传输数据,你的目标是干扰被攻击主机与视频源之间的 TCP 连接(已经假定你和被攻击主机在同一局域网内)
访问视频网站并观看视频的过程一般如下:
被攻击者使用浏览器访问一个视频网站,并选择播放某个视频
大多数情况下视频的完整内容被存放在一个不同的主机上,该主机接下来会与被攻击主机建立起 TCP 连接,从而使被攻击主机能够接收视频的内容。你的任务是通过破坏上述 TCP 连接来干扰视频流的传输。你可以让被攻击主机试图去访问一个假的 IP 地址或是攻击主机的 IP 地址来获取视频(从而它无法成功获得视频内容),但请注意,攻击的目标应该是被攻击主机,这是受你控制的一台主机,不要针对提供视频的主机(不受你控制的主机)。你的攻击实验应出于学习目的而不要造成真正的危害。
实践
TCP RST攻击也称伪造TCP重置报文攻击,它通过更改TCP协议头的标志位中的“reset”比特位(0变1),来关闭掉一个TCP会话连接。
首先,A为kali攻击机,B为靶机(win2000),C为服务器(ubuntu)。其中服务器的IP地址如下
我们用靶机B建立和C的23端口的连接,利用telnet命令
这时,我们启动A中的wireshark,进行数据包的监视:
使用ip。Addr222.28.136.226and tcp.port23过滤
打开NETWOX,调用第78号工具,
这时,我们再看B的连接界面
而wireshark当中也捕捉到了断开连接的数据包
说明这次RST攻击成功
(3) TCP 会话劫持 (bonus)
TCP 会话劫持的目标是劫持一个已经存在于两台被攻击主机之间的 TCP 连接,在会话
中注入恶意的内容。如果这是一个 telnet 会话连接,攻击者可以注入一些恶意的命令,使得被攻击主机运行这些恶意的命令。在这个任务中,我们使用 telnet 作为例子,并且仍然假定攻击机与目标主机在同一个局域网内。
-
TCP会话劫持
结合嗅探、欺骗技术
中间人攻击:注射额外信息,暗中改变通信
计算出正确的seq ackseq即可
TCP会话攻击工具 Juggernaut、 Hunt、 TTY watcher、IP watcher
-
如何防止会话劫持
避免攻击者成为通信双方的中间人
部署交换式网络,用交换机代替集线器
禁用主机上的源路由
采用静态绑定IP-MAC映射表以避免ARP欺
过滤ICMP重定向报文 -
TCP会话加密(IPsec协议)
避免了攻击者在得到传输层的端口及序列号等关键信息防火墙配置
限制尽可能少量的外部许可连接的IP地址检测
ACK风暴: ACK包的数量明显增加
关于 wireshark 的一些提示:如果你使用 wireshark 进行监听,请注意在默认情况下wireshark 显示的 TCP 连接的序列号(sequence number)是相对序列号(relative sequence),也就是当前序列号减去 TCP 连接建立之初的起始序列号,要查看真实的”绝对”序列号,右键点击协议内容,在”protocol preference”菜单中去掉”Relative Sequence Number and Window Scaling”这一项前面的勾。
UDP Flood攻击
- UDP协议
无状态不可靠
仅仅是传输数据报 - UDP Flood
带宽耗尽型拒绝服务攻击
分布式拒绝服务攻击(DDoS)
利用僵尸网络控制大量受控傀儡主机
通常会结合IP源地址欺骗技术 - UDP Flood攻击防范措施
禁用或过滤监控和响应服务
禁用或过滤其它的 UDP 服务
网络关键位置使用防火墙和代理机制来过滤掉一些非预期的网络流量
遭遇带宽耗尽型拒绝服务攻击
终端无能为力
补救措施: 网络扩容、 转移服务器位置
事件响应:汇报给安全应急响应部门、追溯和处置
流量清洗解决方案: ISP为关键客户/服务所提供