ne-vlezay80 Posted June 14, 2016 В suricata есть поддержка lua-скриптов, а также luajit. Так вот, реально ли с помощью lua-скрипта склеить tcp пакеты для их последующего анализа через этот lua-скрипт. На сколько мне известно, в suricata есть полноценная поддержка lua, а также luajit. Через эти скрипты можно даже запускать программы при совподении трафика с шаблоном. Где можно найти документацию по luajit? Особенно интерисует тема склеивания tcp пакетов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 14, 2016 Уже вижу как у вас код падает :) Там бывают пересекающиеся фрагменты, ещё на IP уровне, и разные ОС по разному их склеивают. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 14, 2016 (edited) Уже вижу как у вас код падает :) Там бывают пересекающиеся фрагменты, ещё на IP уровне, и разные ОС по разному их склеивают. А тогда как это реализованно в коммерчиских DPI решениях, таких как corbon reductor или СКАТ Edited June 14, 2016 by ne-vlezay80 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 14, 2016 А вы вообще уверены что они собирают пакеты? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 14, 2016 А вы вообще уверены что они собирают пакеты? Не знаю. Но у моего провайдера dpi может каким то образом собирать пакеты Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 14, 2016 И как проверяли? Я уже описывал проблемы при такой сборке, ещё когда только закон готовился и народ тут бурлил, а СКАТ только нанимал прогеров чтобы накорябать свою систему: 0. отслеживание стейтов - иначе его легко положат выжрав всю память на несуществующие соединений просто посылая пакеты в никуда 1. сборка пересекающихся фрагментов - можно подобрать оверлапед фрагменты таким образом чтобы всегда проходить сквозь незамеченным 2. критерии: когда начинаем сборку, сколько держим в памяти, когда выбрасываем и забываем - защита от переполнения памяти, тот же ютуп махом на гигабите выжрет всю оперативу 3. сколько сможем удержать соединений при этом - тут и производительнось лукапов по таблицам и собственно упираемся в память, дальше или дропать новые или забивать на старые соединения 4. вероятно что то ещё - куча нюансов, я сейчас не уже не в состоянии так сложно думать Как простейший оффлоад можно инспектировать тцп только к сайтам чёрного списка. Но это не отменят того что нужно сильно попотеть с тем что описано выше. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 14, 2016 И как проверяли? Я уже описывал проблемы при такой сборке, ещё когда только закон готовился и народ тут бурлил, а СКАТ только нанимал прогеров чтобы накорябать свою систему: 0. отслеживание стейтов - иначе его легко положат выжрав всю память на несуществующие соединений просто посылая пакеты в никуда 1. сборка пересекающихся фрагментов - можно подобрать оверлапед фрагменты таким образом чтобы всегда проходить сквозь незамеченным 2. критерии: когда начинаем сборку, сколько держим в памяти, когда выбрасываем и забываем - защита от переполнения памяти, тот же ютуп махом на гигабите выжрет всю оперативу 3. сколько сможем удержать соединений при этом - тут и производительнось лукапов по таблицам и собственно упираемся в память, дальше или дропать новые или забивать на старые соединения 4. вероятно что то ещё - куча нюансов, я сейчас не уже не в состоянии так сложно думать Как простейший оффлоад можно инспектировать тцп только к сайтам чёрного списка. Но это не отменят того что нужно сильно попотеть с тем что описано выше. 1. Реально ли это сделать на lua 2. Как я понял, на DPI провайдера можно послать атаку которая выжрет у DPI всу память 3. Как там у СКАТ обстаят дела со склеиванием пакетов Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 14, 2016 1. хз. луа вроде как умеет сам немного + все функции которые в него впихнули из основного проекта в который его включили. 2. может быть и можно, зависит от того как DPI организован, они вроде чаще не собирают фрагменты пакетов. 3. хз, не видел, не использовал. Тут есть их представители, их и мучайте такими вопросами. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ixi Posted June 15, 2016 suricata же сама собирает поток? Нужно задать в фильтре type=stream или что-то похожее Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 15, 2016 suricata же сама собирает поток? Нужно задать в фильтре type=stream или что-то похожее Покажи пример Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 15, 2016 suricata же сама собирает поток? Нужно задать в фильтре type=stream или что-то похожее Не помогло Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 18, 2016 (edited) Кстати, там можно указать needs = "packet", и этим lua-скрипту мы полнустью отдаем пакет lua по функционалу сравним с C Edited June 18, 2016 by ne-vlezay80 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted June 19, 2016 lua язык полноценный, алсо, на нем сделать можно все. Готовые примеры хотим - поднимаем зад и идем в ядро линукс, фри либо DPDK, там даже есть либа сборщика пакетов. Вот ссылочка: http://dpdk.org/doc/guides-16.04/prog_guide/ip_fragment_reassembly_lib.html А вообще не вижу в чем трабла сделать реассм***нг. Вопрос только - зачем. Вся суть сурикаты построена на том, что реассм***нг сделал и данные идут "потоком" прикладного уровня, грепай да выдирай что нужно. Почитать доки по сурикате да повнимательнее - лучший совет будет. Можно и код почитать, что у Бро, что у Сурикаты он не так плох. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ne-vlezay80 Posted June 20, 2016 Вот нашел: https://blog.inliniac.net/2012/09/21/suricata-luajit-update/ Кстати, исли прописать: http.request_headers в скрипте, то видит даже дефрагментированные пакеты!!!! кстати, на lua для сурикаты пожно блокировщик запрещенных сайтов написать если делать реассемблинг tcp через lua, то лучше использовать nfq. Так как в af_packet может быть ошибка message too long и запрещенные сайты могут не блокироваться Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...