Правильно создавать TCP-пакеты в Python

1

Мне нужно проанализировать журнал Apache с Snort и другими IDS/WAF (Suricata, mod_security и Shadow Daemon). Для этого я думал о создании пакетов TCP с запросами GET и POST, хранящимися в журнале Apache, с помощью Scapy в Python. Что-то вроде этого:

packet= IP(dst=dst_ip)/TCP(dport=9999)/Raw(load=payload) #payload contains the http request

Я храню эти пакеты TCP в файл PCAP, чтобы позже проанализировать его с помощью Snort или других IDS/WAF, которые я сказал.

Проблема с этим методом сборки пакетов заключается в том, что в сообщении нет состояния, и Snort обнаруживает его с помощью этого предупреждения:

[**] [129:2:1] Data on SYN packet [**]
[Classification: Generic Protocol Command Decode] [Priority: 3] 
09/01-20:29:50.816860 127.0.0.1:20 -> 127.0.0.1:9999
TCP TTL:64 TOS:0x0 ID:1 IpLen:20 DgmLen:102
******S* Seq: 0x0  Ack: 0x0  Win: 0x2000  TcpLen: 20
[Xref => http://www.securityfocus.com/bid/34429][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-1157]

Затем я адаптировал код для добавления последовательности и числа ack:

ip = IP(src=src_ip, dst=dst_ip)
packet = (ip / TCP(sport=src_port, dport=dest_port, flags='PA',
      seq=seq_n, ack=ack_n) / Raw(load=fullrequest[0])

seq_n = seq_n + len(payload.encode('UTF8'))

Таким образом, существует последовательность, но данные о сигнале пакета данных SYN для другого (хотя вместо того, чтобы оставлять столько предупреждений, сколько одинакового количества пакетов, только 22% пакетов вызывают предупреждение):

[**] [129:12:1] Consecutive TCP small segments exceeding threshold [**]
[Classification: Potentially Bad Traffic] [Priority: 2] 
09/01-20:49:15.037299 127.0.0.1:60664 -> 127.0.0.1:80
TCP TTL:64 TOS:0x0 ID:1 IpLen:20 DgmLen:94
***AP*** Seq: 0x156E7  Ack: 0xB  Win: 0x2000  TcpLen: 20

В конце концов, я решил создать структуру клиент-сервер с сокетами (отправкой полезной нагрузки с одной виртуальной машины на другую), проанализировать трафик с помощью WireShark, а затем сохранить пакеты как PCAP. Проблема здесь в том, что Snort не обнаруживает ни одной атаки. Кроме того, я не могу автоматизировать эту операцию анализа.

Пример атаки:

"GET /shoutbox.php?conf=../../../../../../../../etc/passwd HTTP/1.1"
"GET /cgi-bin/apexec.pl?etype=odp&template=../../../../../../../../../../etc/hosts%00.html&passurl=/category/ HTTP/1.1"

Что я могу делать неправильно? Любой намек?

Теги:
scapy
web-application-firewall
snort

1 ответ

0
Лучший ответ

Ответил здесь:

https://security.stackexchange.com/questions/193036/analyzing-apache-log-with-snort

В принципе, вместо того, чтобы крафт своих пакетов, то лучше использовать requests библиотеку и отправлять запросы непосредственно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню