PDA

Просмотр полной версии : Сетевой фильтр


criz
08.11.2008, 16:09
На форуме я уже спрашивал про фильтр/блокировку tcp-пакетов и мне помогли с этим разобраться :)
Теперь пришло время других протоколов: ICMP и UDP.
Больше интересует первый. Как заблокировать icmp-запросы? Отправлять сообщение ICMP_DEST_UNREACH?

Dian
08.11.2008, 16:34
А TCP как блокируешь?
Это всё идет поверх IP, лучше разобраться сразу с их обработкой

SpangeBoB
08.11.2008, 16:54
Что мешает посмотреть исходники ipfw,iptables.

criz
08.11.2008, 17:09
А TCP как блокируешь?
Просто формирую и отправляю пакет с RST-флагом.
Что мешает посмотреть исходники ipfw,iptables.
Ничего не мешает, уже смотрел :)
Вот что получилось сделать:

new_ip = (proto_ip_h *)(packet + 14);
new_ip->header_len = ip->header_len;
new_ip->version = ip->version;
new_ip->tos = ip->tos;
new_ip->tot_len = htons((ip->header_len)*4 + 64);
new_ip->id = htons(ntohs(ip->id) + 1);
new_ip->frag_off = 0;
new_ip->ttl = ip->ttl;
new_ip->protocol = ip->protocol;
new_ip->saddr = ip->daddr;
new_ip->daddr = ip->saddr;
new_ip->checksum = 0;
new_ip->checksum = cksum((u8*)new_ip,new_ip->tot_len);

new_icmp = (proto_icmp_h *)(pkt_data + 14 + (ip->header_len)*4);

new_icmp->type = ICMP_DEST_UNREACH;
new_icmp->code = 3;
new_icmp->un.echo.id = icmp->un.echo.id;
new_icmp->un.echo.sequence = icmp->un.echo.sequence;
new_icmp->crc = 0;
new_icmp->crc = cksum((u8*)new_icmp, sizeof(new_icmp));
pcap_sendpacket(iface,packet,packetlen);

тут где-то ошибка, только вот где :)

SlyBit
09.11.2008, 14:12
Просто формирую и отправляю пакет с RST-флагом.

Какая связь между контролем трафика и отправкой пакета?

criz
09.11.2008, 23:22
Какая связь между контролем трафика и отправкой пакета?
Я писал про контроль трафика? :)
Мне лишь надо ловить пакеты и в ответ отправлять свои...

Delimiter
10.11.2008, 02:03
8))) ... а зачем посылать ложные ICMP ведь система пошлет и свой! Поскольку сессии как таковой нет то в ответах от твоего компа можем иметь интересную картинку
Таймаут
Ответ
Таймаут
Ответ
Таймаут
========8)))) можно конечно попрактиковаться но чисто для теории

С Пикапом можно играться в следующие стороны:
1: Организации брэндмауэра небольшой фирмы (по сути ARP прокси в простонародьи
...комп как таковой с 2-мя сетевухами )
- одна из вариаций подделка дефаултового гейта (через один сетевой интерфейс)
2: Перехват установленной TCP сесии далее по учебнику Атака на интернет
3: посылка длииинющей фрагментированной последовательности TCP пакетов
4: Инкапсуляция одного протокола в другой (серые пайпы)

да вообще много интересных задач!


---
смещения твои не проверял
0-е srcmac
+6 destmac
+12 ip_tos
+14 ip_header !!!!!!!! длинной 20-ть
и далее ICMP

criz
10.11.2008, 16:48
Delimiter, из всего следует вывод: писать свой драйвер? :)

SpangeBoB
10.11.2008, 17:15
Да сделайте еще одно квадратное колесо.

Delimiter
10.11.2008, 17:15
направление на Comodo 8))) сначала флудеры писали на Пикапе а потом добрались и до файрвола!
Сам найдешь ???


А драйвер писать нужно!!!!!!!!!!! Хотя бы для оттачивания их написания и пусть это будет 3стамиллионное калесо но оно будет твое личное!

Dian
11.11.2008, 04:09
из всего следует вывод: писать свой драйвер?
Именно. Я к тому и спрашивал. Блок получается слишком уж сомнительный.
В том смысле, что пакеты всё равно проходят в систему. А об исходящих пикап вообще ничего не знает...

criz
11.11.2008, 12:28
В том смысле, что пакеты всё равно проходят в систему.
Да, понимаю. Просто получив RST-ответ машина будет думать, что соединение сброшено :)
Delimiter, если я правильно понял куда ты меня отправил, то буду гуглить комодо)))
З.Ы. написание драйвера требует много времени, которого у меня нет. випикап мне показался лучшим вариантом

Dian
12.11.2008, 08:05
Да, понимаю. Просто получив RST-ответ машина будет думать, что соединение сброшено
Если вообще машина может думать :)
(D)DoS будет свободно проходить