diff --git a/docs/manual.md b/docs/manual.md index 7cca3b9..2695bc2 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1927,6 +1927,20 @@ function posdebug(ctx, desync) Вывести в debug log информацию о текущих conntrack позициях по прямому и обратному направлению. +### detect_payload_str + +``` +function detect_payload_str(ctx, desync) +``` + +-- arg: pattern - подстрока для поиска в desync.dis.payload +-- arg: payload - присвоить это значение desync.l7payload в случае наличия подстроки +-- arg: undetected - если присутствует, присвоить это значение desync.l7payload в случае отсутствия подстроки + +Пример простейшего протокольного детектора. Ищется подстрока pattern в пейлоаде, в случае нахождения присваивает desync.l7payload = desync.arg.payload , иначе если есть desync.arg.undetected, присваивает desync.l7payload = desync.arg.undetected. + +Подобного рода протокольные детекторы не имеют никакой силы для C кода. Он ничего не знает о вашем протоколе и вашем типе пейлоада. Ваше значение нельзя указать в параметре `--payload`. Но можно использовать [payload фильтры](#standard-payload) многих [desync функций](#библиотека-программ-атаки-на-dpi). + ### desync_orchestrator_example ``` @@ -2623,6 +2637,8 @@ function replay_execution_plan(desync) Дополнительные фильтры по направлению и пейлоаду внутри функций anti-dpi сделаны в основном на случай не слишком грамотного написания опций командной строки как дополнительный предохранитель и защита от дурака, чтобы сделать флуд как это было в winws1 с `--dpi-desync-any-protocol` непреднамеренно было непросто. +Другая цель - дать возможность фильтрации по протоколам, о которых C код не знает и которые обнаруживаются LUA детекторами, такими как [detect_payload_str](#detect_payload_str). + В nfqws2 по умолчанию стоит запрет на передачу входящих (`--in-range=x`), неограниченная передача исходящих (`--out-range=a` ) и пропуск любых пейлоадов (`--payload=all`), что соответствуют поведению nfqws1 с опцией `--dpi-desync-any-protocol`. В nfqws1 все атаки были зашиты в C код, поэтому было известно какие техники работают с какими пейлоадами. Каким-то нужны были любые пакеты, в том числе пустые, а другим - только tls hello или http request. nfqws2 ничего не знает о том, что нужно `--lua-desync` функциям. Поэтому фильтрация направления и типа пейлоадов ложится целиком на вас. По умолчанию стоит запрет только на входящие, потому что они используются редко, а пользователь может не написать ограничение, и все это пойдет на LUA функции и будет напрасно грузить процессор гигабайтами скачиваемого трафика.