Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Сетевой фильтр (https://forum.antichat.xyz/showthread.php?t=90936)

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

Цитата:

Сообщение от Dian
А TCP как блокируешь?

Просто формирую и отправляю пакет с RST-флагом.
Цитата:

Сообщение от SpangeBoB
Что мешает посмотреть исходники 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

Цитата:

Сообщение от criz
Просто формирую и отправляю пакет с 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стамиллионное калесо но оно будет твое личное!


Время: 16:10