201099133 2019-2020-2 《网络攻防实践》第五周作业

这个作业属于哪个课程 《网络攻防实践》
这个作业的要求在哪里 网络攻防第五周作业
我在这个课程的目标是 学习TCP/IP协议中网络层和传输层的攻击,包括技术原理、具体过程和防范措施
这个作业在哪个具体方面帮助我实现目标 实践ARP缓存欺骗攻击、ICMP重定向攻击、SYN Flood攻击、TCP RST攻击和TCP会话劫持攻击
作业正文 见作业
其他参考文献 见文末

一.实践内容

(一)网络层协议攻击

网络层主要协议如IP、ICMP和ARP都存在多种攻击方式。

1.IP源地址欺骗

是指攻击者伪造具有虚假地址的IP数据包进行发送,已达到隐藏发送者身份、假冒其他计算机的目的。

2.ARP欺骗

是指攻击者在以太网或无线网上发送伪造的ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的的攻击技术。
(1)原理:ARP协议将主机的IP地址解析成其MAC地址,然后在局域网内通过MAC地址进行通信。

ARP协议在进行查询时存在安全缺陷,一方面采用广播请求的方式询问映射,但没有对询问的信息做安全性验证;另一方面设计了ARP缓存机制,会将主动的ARP应答作为有效信息记录。
实施ARP欺骗的过程如下图所示:源节点A会在局域网广播询问节点B的IP地址所映射的MAC地址;攻击节点C会说自己的MAC地址就对应节点B的IP地址,并源源不断发送响应包给A;源节点A就保存了错误的IP地址和MAC的映射关系;当A要再次发包给B时,它不再播询问,而是将包直接发给了C。


(2)攻击工具:Netwox中的33号工具可构造任意以太网的ARP数据包,80号工具可周期性发送ARP应答包。
(3)防范措施:静态绑定关键主机的IP地址与MAC地址的映射关系、使用ARP防范工具,加密传输数据。

3.ICMP重定向攻击

是指攻击者伪装成路由器发送虚假的ICMP路径路由控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术。

  • (1)ICMP路由重定向攻击技术:攻击节点利用IP源地址欺骗技术,冒充网关地址,向被攻击节点发送ICMP报文;被攻击节点选择新路由IP地址为新路由器;攻击节点可以开启路由转发,对被攻击节点全程监听。过程如下图。

  • (2)工具:利用Netwox进行ICMP路由重定向攻击

  • (3)防范措施:设置防火墙过滤,判断ICMP报文是否来自本地路由器等。

(二)传输层协议攻击

1.TCP RST攻击

是一种假冒干扰TCP通信连接的技术方法。TCP协议头中有一个“reset”比特位,绝大部分数据包该位为0,一旦该位为0,则接受数据包的主机将断开此TCP连接。如图,攻击者嗅探到A、B之间的IP地址及端口号后,即可关闭这个连接。

  • Network工具可以选择编号为78的“Rest every TCP packet”工具来实现TCP RST攻击。
2.TCP会话劫持攻击

目标是劫持通信双方的TCP会话连接,假冒其中一方的身份与另一方进行通信。

  • 攻击过程如下图所示,攻击者通过ARP欺骗实施中间人攻击,可嗅探得Victim和talent之间的会话内容,然后假冒其victim的IP地址及身份,与talent会话;发送的数据包必须满足条件SVR_ACK<=CLT_SEQ<=SVR_ACK+SVR_WND。
  • 防范措施:禁用主机上的原路由,静态绑定IP-MAC映射表、引用和过滤ICMP重定向报文。
3.TCP SYN Flood拒绝服务攻击(DOS)

SYN泛洪攻击利用TCP三次握手的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,从而导致目标主机连接列队资源消耗而不能提供服务。

  • 攻击原理:攻击主机向受害主机发送大量报文,受害机必须要分配资源并且向源地址返回SYN/ACK包,还要等待源端返回ACK包。当半开的列队填满时,服务器就会拒绝新的连接,最终使受害主机拒绝服务。
  • 工具:Netwox软件,选择编号为76的“Synflood”工具并输入目标地址,攻击机即开始执行攻击。
  • 防范措施:SYN-Cookie技术;防火墙地址状态监控技术。

二.实践过程

(一)ARP欺骗攻击

虚拟机 IP地址
SEED_Ubuntu 192.168.200.3
metasploitable 192.168.200.5
密网 [192.168.200.8
我们选用SEED_Ubuntu作为攻击机,Metasploitable2(Linux)作为靶机A和密网honey作为靶机B,通过netwox的33号工具进行改写。
  • 首先在SEED里获取root权限,输入ifconfig查看IP地址和MAC地址为192.168.200.300:0c:29:ea:f9:4a
  • 输入arp查看靶机A的IP地址和MAC地址:192.168.200.500:0c:29:84:67:e8。靶机B的IP地址为192.168.200.300:0c:29:aa:fb:f3
  • 在攻击机中输入netwox 33 -b 00:0c:29:84:67:e8 -g 192.168.200.8 -h 00:0c:29:84:67:e8 -i 192.168.200.5

(二)实践ICMP重定向攻击

虚拟机 IP地址
SEED_Ubuntu 192.168.200.3
Windowsattacker [192.168.200.4
  • 首先开启IP路由转发,输入echo 1 >/proc/sys/net/ipv4/ip_forward。防止攻击时断网。

  • 在靶机A中输入route print查看路由表,可以看到目前网关是192.168.200.1

  • 在攻击机中输入netwox 86 -f "host 192.168.200.4 " -g 192.168.200.3 -i 192.168.200.1

  • 打开wireshark,可以看到攻击机冒充路由给靶机发送了大量的ICMP报文。

  • 点击靶机发送的一个TCP报文,可以发现在连接外网时,首先连接到了攻击机上面。

(三)SYN Flood攻击

虚拟机 IP地址
SEED_Ubuntu 192.168.200.3
windowsXPattacker 192.168.200.4
  • 攻击机为SEED_Ubuntu,靶机为windowsXPattacker192.168.200.4
  • 攻击前,靶机windowsXPattacker上网能正常反应。
  • 在Netwox软件中输入netwox 76 -i "192.168.200.4" -p 23
  • 打开wireshark,发现攻击机向靶机发送大量虚拟[SYN]报文。靶机中在此上网也不能成功。

(四)TCP RST攻击

虚拟机 IP地址
Windowsattacker [192.168.200.4
SEED_Ubuntu 192.168.200.3
kali 192.168.200.2
  • kali为攻击机,在Windowsattacker与SEED之间建立telnet通信,输入telnet 192.168.200.3
  • 在kali中打开wireshark抓包,可看到两个目标是联通的。
  • 然后输入命令netwox 78 -i 192.168.200.4,可发现连接断开了。

(五)TCP会话劫持攻击

虚拟机 IP地址
Windowsattacker [192.168.200.4
SEED_Ubuntu 192.168.200.3
kali 192.168.200.2
  • 攻击机kali,劫持Windowsattacker与SEED之间的连接;在Windowsattacker登录telnet 192.168.200.3,账号密码:seed、dees;kali打开wireshark可监测连接正常。
  • 远程提升至root权限。
  • 再次回到kali的wireshark界面, 纪录192.168.200.5发送的最后一个ACK包对应的源端口、目的端口、sequence number(raw)、Acknowledgement number(raw)。
  • seqnum是我发送包的序号,ACKnum是我收到包的序号。那么在构建发送包(攻击用途)的过程中,下一个包的seqnum应该是上一个数据包的seq+1;由于最后一个是[ACK]包不是数据包,直接抄下来就好。
  • 构建攻击机将要发送的请求包:netwox 40 --ip4-offsetfrag 0 --ip4-ttl (登录者TTL) --ip4-protocol 6 --ip4-src (攻击者IP) --ip4-dst (服务器IP) --tcp-src (原始端口) --tcp-dst 23 --tcp-seqnum (抓包可以看见raw seqnum) --tcp-acknum (抓包可以看见 ACK number(raw)) --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "7265626f6f740d00",这是我根据抓包情况制作的请求包netwox 40 --ip4-offsetfrag 0 --ip4-ttl 128 --ip4-protocol 6 --ip4-src 192.168.200.2 --ip4-dst 192.168.200.3 --tcp-src 1063 --tcp-dst 23 --tcp-seqnum 4072602253 --tcp-acknum 4248023905 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "7265626f6f740d00"
  • 攻击机发送出去,然后观察wireshark的抓包情况。原理应该都没问题,但结果没出来,下面采取第二种方法
    方法二:
  • 在kali中打开节点的IP转发功能
cat /proc/sys/net/ipv4/ip_forward(如果结果是0继续输入下一个命令)
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward(此时输出的结果应该是1就算是打开成功了)
  • 在kali中搜索Ettercap工具,并打开。
  • 进入Ettercap,选择“Sniff”菜单中的“Unified Sniff”选项,选择“eth0”作为嗅探监听接口
  • 在右上角houst菜单中选择“Scan for hosts”扫描局域网内攻击目标;然后在菜单“Hosts list”右键选择
    WinXPtarget 192.168.200.3和WinXPAttacker 192.168.200.4分别为靶机A和靶机B

  • 然后选择MITM中的“ARP poisoning”进行ARP欺骗,并选择“Sniff remote connections”,检查cat /proc/sys/net/ipv4/ip_forward 已经开启了转发。
  • 在靶机windows中验证ARP欺骗成功。

  • 在WinXPAttacker节点远程登录telnet到SEED节点,输入telnet 192.168.200.3,然后输入账号seed、密码dees。
  • 打开view->connection,可以监听他们的对话。
  • 在kali中打开wireshark,可以看到两个靶机之间的对话内容。

三.学习中遇到的问题及解决

  • 问题1:ICMP重定向攻击时,总是抓不到包。
  • 问题1解决方案:打开IP路由转发,就可以防止攻击时断网。
  • 问题2:SYNflood攻击时,靶机依旧能连上网络。
  • 问题2解决方案:将靶机的内存调低,攻击后稍微等一会在检测。

四.实践总结

  • 本次实践内容本来计划自己独立完成,在学完原理之后感觉不是很难,但是实际操作起来,要对攻击的结果进行检验,还比较缺乏经验。例如重定向攻击那里,最后找改变的路由路径花了好多时间,其实结果已经做出来了。
  • 对最后的TCP会话劫持实验,参考孙启龙同学制作请求包,对wireshark的分析更能看懂了一点,但还有很多原理不是很清楚。最后只能用简单的方法做出来;不过Ettercap是真的好用!
  • 对于暂时不会的点,希望自己不要那么固执得想弄出来,有时候一些问题并不是自己的原因。
  • 有的同学写博客很细心和认真,还是要多向其他同学学习吧,无论是学习方法或者做作业的习惯。

参考资料

posted @ 2020-04-01 13:40  dky张森民  阅读(246)  评论(0编辑  收藏  举报