Jump to content
Калькуляторы

suricata lua tcp reassembly (сборка tcp пакетов при помощи lua скриптов suricata)

В suricata есть поддержка lua-скриптов, а также luajit. Так вот, реально ли с помощью lua-скрипта склеить tcp пакеты для их последующего анализа через этот lua-скрипт. На сколько мне известно, в suricata есть полноценная поддержка lua, а также luajit. Через эти скрипты можно даже запускать программы при совподении трафика с шаблоном. Где можно найти документацию по luajit? Особенно интерисует тема склеивания tcp пакетов.

Share this post


Link to post
Share on other sites

Уже вижу как у вас код падает :)

Там бывают пересекающиеся фрагменты, ещё на IP уровне, и разные ОС по разному их склеивают.

Share this post


Link to post
Share on other sites

Уже вижу как у вас код падает :)

Там бывают пересекающиеся фрагменты, ещё на IP уровне, и разные ОС по разному их склеивают.

 

А тогда как это реализованно в коммерчиских DPI решениях, таких как corbon reductor или СКАТ

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites

А вы вообще уверены что они собирают пакеты?

Не знаю. Но у моего провайдера dpi может каким то образом собирать пакеты

Share this post


Link to post
Share on other sites

И как проверяли?

 

Я уже описывал проблемы при такой сборке, ещё когда только закон готовился и народ тут бурлил, а СКАТ только нанимал прогеров чтобы накорябать свою систему:

0. отслеживание стейтов - иначе его легко положат выжрав всю память на несуществующие соединений просто посылая пакеты в никуда

1. сборка пересекающихся фрагментов - можно подобрать оверлапед фрагменты таким образом чтобы всегда проходить сквозь незамеченным

2. критерии: когда начинаем сборку, сколько держим в памяти, когда выбрасываем и забываем - защита от переполнения памяти, тот же ютуп махом на гигабите выжрет всю оперативу

3. сколько сможем удержать соединений при этом - тут и производительнось лукапов по таблицам и собственно упираемся в память, дальше или дропать новые или забивать на старые соединения

4. вероятно что то ещё - куча нюансов, я сейчас не уже не в состоянии так сложно думать

 

 

Как простейший оффлоад можно инспектировать тцп только к сайтам чёрного списка.

Но это не отменят того что нужно сильно попотеть с тем что описано выше.

Share this post


Link to post
Share on other sites

И как проверяли?

 

Я уже описывал проблемы при такой сборке, ещё когда только закон готовился и народ тут бурлил, а СКАТ только нанимал прогеров чтобы накорябать свою систему:

0. отслеживание стейтов - иначе его легко положат выжрав всю память на несуществующие соединений просто посылая пакеты в никуда

1. сборка пересекающихся фрагментов - можно подобрать оверлапед фрагменты таким образом чтобы всегда проходить сквозь незамеченным

2. критерии: когда начинаем сборку, сколько держим в памяти, когда выбрасываем и забываем - защита от переполнения памяти, тот же ютуп махом на гигабите выжрет всю оперативу

3. сколько сможем удержать соединений при этом - тут и производительнось лукапов по таблицам и собственно упираемся в память, дальше или дропать новые или забивать на старые соединения

4. вероятно что то ещё - куча нюансов, я сейчас не уже не в состоянии так сложно думать

 

 

Как простейший оффлоад можно инспектировать тцп только к сайтам чёрного списка.

Но это не отменят того что нужно сильно попотеть с тем что описано выше.

 

1. Реально ли это сделать на lua

2. Как я понял, на DPI провайдера можно послать атаку которая выжрет у DPI всу память

3. Как там у СКАТ обстаят дела со склеиванием пакетов

Share this post


Link to post
Share on other sites

1. хз. луа вроде как умеет сам немного + все функции которые в него впихнули из основного проекта в который его включили.

2. может быть и можно, зависит от того как DPI организован, они вроде чаще не собирают фрагменты пакетов.

3. хз, не видел, не использовал. Тут есть их представители, их и мучайте такими вопросами.

Share this post


Link to post
Share on other sites

Кстати, там можно указать needs = "packet", и этим lua-скрипту мы полнустью отдаем пакет

lua по функционалу сравним с C

Edited by ne-vlezay80

Share this post


Link to post
Share on other sites

lua язык полноценный, алсо, на нем сделать можно все.

 

Готовые примеры хотим - поднимаем зад и идем в ядро линукс, фри либо DPDK, там даже есть либа сборщика пакетов. Вот ссылочка: http://dpdk.org/doc/guides-16.04/prog_guide/ip_fragment_reassembly_lib.html А вообще не вижу в чем трабла сделать реассм***нг.

 

Вопрос только - зачем. Вся суть сурикаты построена на том, что реассм***нг сделал и данные идут "потоком" прикладного уровня, грепай да выдирай что нужно.

 

Почитать доки по сурикате да повнимательнее - лучший совет будет. Можно и код почитать, что у Бро, что у Сурикаты он не так плох.

Share this post


Link to post
Share on other sites

Вот нашел:

https://blog.inliniac.net/2012/09/21/suricata-luajit-update/

Кстати, исли прописать: http.request_headers в скрипте, то видит даже дефрагментированные пакеты!!!!

 

кстати, на lua для сурикаты пожно блокировщик запрещенных сайтов написать

 

если делать реассемблинг tcp через lua, то лучше использовать nfq. Так как в af_packet может быть ошибка message too long и запрещенные сайты могут не блокироваться

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.