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为关键客户/服务所提供

实践

实验环境:

A:攻击机kali

B:TCP会话一方,ubuntu

C:TCP会话一方,win2000

注意:这里我们使用hunt工具来完成tcp会话劫持,下载地址:http://download.csdn.net/detail/qq_26802417/9382279,我们在后面会进行一些该工具的功能演示

在kali中安装成功hunt-1.5之后,我们直接启动,hunt界面如下:

接下来,我们令C去telnetB主机的23端口。界面如下,连接成功

此时回到kali

命令l是查看当前局域网内的连接

命令w是监控当前局域网内的连接

命令r是终结连接

有关劫持更多的操作的两个命令是a,s命令,都是进行arp劫持,但是a命令会防止ack风暴。

1.我们输入l,界面如下

可以看到0)号连接为两台进行TCP会话的主机。

2.我们再输入a,按照如下方式填写,进入一个监控界面

在这个界面中,无论B做了什么,都可以监控到,如下图所示:

我们在A中看到就是如下界面

该方式是中间人欺骗,就是被动劫持,使得数据包通过你来传达,所以连接不会终止,而你只能查看其操作结果并不能进行命令的插入。

从上图中我们注意到CTRL-C to break这句话,此时按下CTRL-C,然后hunt就会呈现如下界面:

其中的绿颜色的命令是我在B主机中输入的命令,而此时B主机无论如何输入命令,都不能起任何作用了

在kali中按下回车键,就完全接管了B主机和C主机的通信,如下图所示

3.我们还可以测试r命令。r命令是一个终结连接的命令,如下

此时我们的win2000机器就断了

posted @ 2018-04-08 21:37  2017dong  阅读(5627)  评论(0编辑  收藏  举报