feat: adding other TCP scan rules

This commit is contained in:
2024-11-19 22:15:30 -05:00
parent 3e75cb8927
commit 09abb7e20f
7 changed files with 139 additions and 5 deletions

View File

@ -0,0 +1,28 @@
from datetime import datetime
import time
def rule(packet, tcp_packets, db):
"""Règle ACK Scan:
Un ACK Scan va envoyer des requêtes TCP avec le flag ACK
Si le firewall ne bloque pas, alors il répond avec le flag Reset
Sinon il répond rien
"""
if (rule.cooldown + rule.time_window > time.time()):
return
# Vérification si nécessaire de récupérer les variables depuis la config
if (rule.seuil == 0 and rule.time_window == 0):
rule.time_window = db.get_key("ackscan_time", 180)
rule.seuil = db.get_key("ackscan_count", 5)
if tcp_packets.count_packet_of_type(["A", "R"], rule.time_window, True) + tcp_packets.count_packet_of_type(["A"], rule.time_window, True) >= rule.seuil:
db.send_alert(datetime.now(), 5, None, "ACK scan", packet['IP'].src, packet['IP'].dst, proto="TCP", reason="Détection de nombreux patterns de Ack->Reset et Ack pas de réponse", act="Alerte")
print(f"Alerte, seuil dépassés, risque d'Ack scan")
rule.cooldown = time.time()
# Variables statiques
rule.cooldown = 0
rule.time_window = 0
rule.seuil = 0