Ivan_83 Опубликовано 16 декабря, 2012 · Жалоба typedef struct utp_pkt_v1_s { /* offset - PacketFormatV1 */ uint8_t version:4; /* 00 protocol version */ uint8_t type:4; /* 00 type (formerly flags) */ uint8_t ext; /* 01 Type of the first extension header */ uint16_t connid; /* 02 connection ID */ uint32_t tv_usec; /* 04 */ uint32_t reply_micro; /* 08 */ uint32_t windowsize; /* 12 receive window size in bytes */ uint16_t seq_nr; /* 16 Sequence number */ uint16_t ack_nr; /* 18 Acknowledgment number */ /* 20 ext/data */ } utp_pkt_v1_t, *utp_pkt_v1_p; /* 20 bytes */ 36 - 20 - 8 = 8 те сигнатура начинается с reply_micro reply_micro = INT_MAX; // 0x7fffffff windowsize = opt_rcvbuf; // для син пакета запроса установления соединения, дефолтное значение в коде UTP_SetSockopt(): opt_rcvbuf = 3 * 1024 * 1024 + 512 * 1024; = 3670016 = 0x380000 но походу функцию дёргают и ставят другое, и сейчас снова поменяли где то в настройках дефолты. Закопайте вы эту сигнатуру. RIP. Вот приличные сигнатуры в синтаксисе tcpdump. название пакета - 14 байт - длинна байт в сигнатуре. дальше идут значения байт в данных юдп - я больше для себя расписывал, тп писал по коду, потому и структара выше так обильно прокомментирована. upd header included - после идёт агрегированный вариант, который можно скармливать tcpdump, в нём начала отсчёта = заголовки юдп пакета, udp[4:2] = 41 - как раз длинна заголовка+данных в юдп. rst пакеты вам бесполезны: сигнатура короткая, и их блок ничего не даст. Я их мониторил при отладке ноды, которая их генерила (в зависимости от настроек). Писано год назад, может быть теперь чуточку отличаются, но вряд ли больше пары байт. Для в0: /* * syn - 14 bytes * 'udp[17] = 2 and udp[18] = 4 and udp[21:2] = 0 and udp[23] = 0 and udp[24] = 8 and udp[25:4] = 0 and udp[29:4] = 0' * 41 = udp hdr len (8) + upd pkt data len * upd header included: * '(udp[4:2] = 41 and udp[25:2] = 0x0204 and udp[29:4] = 0x00000008 and udp[33:4] = 0 and udp[37:4] = 0)' */ /* * rst - 4 bytes * 'udp[17] = 0 and udp[18] = 3' * 31 = udp hdr len (8) + upd pkt data len * upd header included: * '(udp[4:2] = 31 and udp[25:2] = 0x0003)' */ Для в1. /* * syn - 14 bytes * 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40 and udp[1] = 2 and udp[18:2] = 0 and udp[20] = 0 and udp[21] = 8 and udp[22:4] = 0 and udp[26:4] = 0' * (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x40) => udp[0] = 0x41 * 38 = udp hdr len (8) + upd pkt data len * upd header included: * '(udp[4:2] = 38 and udp[8:2] = 0x4102 and udp[26:4] = 0x00000008 and udp[30:4] = 0 and udp[34:4] = 0)' */ /* * rst - 4 bytes * 'udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30 and udp[1] = 0' * (udp[0] & 0x0f = 1 and udp[0] & 0xf0 = 0x30) => udp[0] = 0x31) * 28 = udp hdr len (8) + upd pkt data len * upd header included: * '(udp[4:2] = 28 and udp[8:2] = 0x3100)' */ HNY!!! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dmvy Опубликовано 17 декабря, 2012 · Жалоба несколько недель назад вывел еще один паттерн. и количество UDP существенно сократилось по сравнению с предыдущими двумя шаблонами. сейчас выглядит так: iptables -A FORWARD -p udp -m u32 --u32 "0x3c&0xffffffff=0x65313a71 && 0x40&0xffffffff=0x343a7069 && 0x44&0xffffffff=0x6e67313a" -j DROP iptables -A FORWARD -p udp -m u32 --u32 "0x24&0xffffffff=0x00000000 && 0x28&0xffffffff=0x00380000" -j DROP iptables -A FORWARD -p udp -m u32 --u32 "0x1a&0xffff=0x4102 && 0x24&0xffffffff=0x7fffffff && 0x28&0xffffffff=0xf000" -j DROP Кстати, похоже есть еще пакеты UDP с началом 0x1a&0xffff=0x4102, но пока не занимался плотнее. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 17 декабря, 2012 · Жалоба reply_micro = INT_MAX; // 0x7fffffff В принципе тоже можно добавить к моей сигнатуре, хотя его могут без особых последствий поменять. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 17 декабря, 2012 · Жалоба Переписал, матчинг по длинне пакета + 0x4102 + хвост 0x000000080000000000000000. Всё работает, спасибо за разъяснения. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ruri Опубликовано 18 декабря, 2012 · Жалоба А не подскажете как с этим бороться во FreeBSD с помощью ipfw ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 18 декабря, 2012 · Жалоба Совсем обленились %) ipfw+ng_ipfw+ng_bpf гугль в зубы и найдёте как правила tcpdump превратить в асм для ng_bpf и упихать их туда. ng_tee - не юзать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
RuffiAn Опубликовано 25 декабря, 2012 · Жалоба Прописал эти правила DROP udp -- anywhere anywhere udp STRING match "|7fffffffab|" ALGO name kmp FROM 40 TO 44 statistic mode random probability 0.900000 DROP udp -- anywhere anywhere udp STRING match "|7fffffff00032000|" ALGO name kmp FROM 36 TO 41 statistic mode random probability 0.900000 DROP udp -- anywhere anywhere udp STRING match "|0038000000010000|" ALGO name kmp FROM 36 TO 41 statistic mode random probability 0.900000 У клиентов перестала работать игра "Танки онлайн" Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 25 декабря, 2012 · Жалоба Можете и дальше блокировать сигнатурами "на угад". Правильные сигнатуры чуть выше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 14 января, 2013 (изменено) · Жалоба несколько недель назад вывел еще один паттерн. и количество UDP существенно сократилось по сравнению с предыдущими двумя шаблонами. сейчас выглядит так: iptables -A FORWARD -p udp -m u32 --u32 "0x3c&0xffffffff=0x65313a71 && 0x40&0xffffffff=0x343a7069 && 0x44&0xffffffff=0x6e67313a" -j DROP iptables -A FORWARD -p udp -m u32 --u32 "0x24&0xffffffff=0x00000000 && 0x28&0xffffffff=0x00380000" -j DROP iptables -A FORWARD -p udp -m u32 --u32 "0x1a&0xffff=0x4102 && 0x24&0xffffffff=0x7fffffff && 0x28&0xffffffff=0xf000" -j DROP Кстати, похоже есть еще пакеты UDP с началом 0x1a&0xffff=0x4102, но пока не занимался плотнее. Попробовал добавить, у самого все раздачи загнулись и ничего скачать не могу. :-) Отключил обратно. Изменено 14 января, 2013 пользователем BETEPAH Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 15 января, 2013 · Жалоба BETEPAH #uTP_syn_v1 -A p2p -m udp -p udp -m length --length 58:58 -m string --hex-string "|41 02|" --algo bm --from 28 --to 29 -m string --hex-string "|00 00 00 08 00 00 00 00 00 00 00 00|" --algo bm --from 46 --to 57 -j DROP #uTP_syn_v0 -A p2p -m udp -p udp -m length --length 61:61 -m string --hex-string "|02 04|" --algo bm --from 45 --to 46 -m string --hex-string "|00 00 00 08 00 00 00 00 00 00 00 00|" --algo bm --from 49 --to 60 -j DROP #uTP_syn_v1_ipv6 -A p2p -p 41 -m length --length 98:98 -m string --hex-string "|41 02|" --algo bm --from 68 --to 69 -m string --hex-string "|00 00 00 08 00 00 00 00 00 00 00 00|" --algo bm --from 86 --to 97 -j DROP #uTP_syn_v0_ipv6 -A p2p -p 41 -m length --length 101:101 -m string --hex-string "|02 04|" --algo bm --from 85 --to 86 -m string --hex-string "|00 00 00 08 00 00 00 00 00 00 00 00|" --algo bm --from 89 --to 100 -j DROP Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BETEPAH Опубликовано 15 января, 2013 · Жалоба спасибо, попробую добавить к своим старым правилам Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 16 января, 2013 · Жалоба Старые уберите. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MMM Опубликовано 1 июня, 2013 · Жалоба Тут в соседней ветке "подозревают" Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
MMM Опубликовано 1 июня, 2013 · Жалоба и еще Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 2 июня, 2013 · Жалоба Охота на ведьм. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...