Comments 25
Самые «неприметные» — это эхо-запросы.
Один ICMP-пакет может содержать до 65535 байт информации за вычетом заголовков IP и ICMP (ограничение IP-пакетов).
Ага, неприметные. Прям никто не заметит неприметный поток пингов на 65 килобайт каждый
Но вроде бы автор эти и отметил парой строк ниже?
Пакеты легко обнаружить из-за большого размера.
В этом и дело. Получается, что с одной стороны они неприметные, но тут же говорится о том, что они приметные.
Эхо-запросы по умолчанию (с их 32 или 56 байтами данных) весьма неприметные. И к пакетам с малым объемом минус "легко обнаружить из-за размера" действительно неприменим. Мало ли кто что пингует.
В тексте неприметность заключается в том, что эхо-запрос может быть создан кем угодно с какой угодно мотивацией. А вот если вы начнете рассылать эхо-ответы без запроса или пакеты про TTL без входящего трафика, то вопросов будет даже больше.
Меня больше интересует как в этом случае обойти ограничение MTU на оборудовании, которое в среднем 1500 Б?
У ping есть параметр "-p pattern".
Этот паттерн передаётся в "данных"?
Я недавно тоже писал прототип key-value хранилища в пакетах пинга. В комментариях умные люди упомянули https://github.com/yarrick/pingfs. Пусть это будет тут тоже для будущих изобретателей.
А то гуглится информация не очень просто.
Любой NGFW ловит это на раз (про отечественные от PT например, другие сомневаюсь), если конечно включена функциональность
Хм. А интересно, можно ли передавать данные через "ШИМ"? Ну то есть кодировать данные временем между пакетами, да хоть бы той же морзянкой (понятно, что надёжность и скорость невысоки).
Именно между пакетами? Маловероятно. Интернет - штука очень нестабильная, у вас нет никаких гарантий времени доставки. Один пакет может долететь получателю за 10 мс, другой за 20 мс, даже если вы отправили их с интервалом в 5мс. Более того, второй пакет может даже придти раньше первого:) а если ещё учесть, что ICMP нередко идёт на железках с самым низким приоритетом...
Ничто не мешает выставить задержку между пакетами, которая будет однозначно выше допустимого порога, скажем в 99%. Например при среднем пинге в 40мс, устанавливать дополнительную задержку в 200мс между пакетами на "1" и без задержки на "0", то какая будет вероятность, что пакет без задержки придет позже пакета с задержкой в 200мс?
Да и как бы это давно известные приемы стеганографии, про которые в статье просто не акцентируют внимание, но есть что-то похожее: "Теперь байт данных — это разница временных меток между пакетами."
ну если совсем упороться, то можно в значении миллисекунд кодировать биты, например четная цифра это ноль, нечетная это один, за один пакет получится 6, но лучше 4 бита оставим два старших бита не изменными чтоб совсем не привлекать внимания, наверное самое палевное что останется это source и target таких пакетов
Нашёл такие символы
!"#$%&'()*+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU
Не смог осилить дамп, подписался на комментарии в ожидании ответа.
Как я понимаю, в дампе достаточно данных, чтобы расшифровать его, не прибегая к дополнительным шагам, типа rot13 поверх текста? Нет никаких волшебных констант, участвующих в шифровании?
IP-чексуммы верные, к идентификаторам пакетов не прицепиться. Единственное, что смущает, - Метка пакета в будущем!
, как было упомянуто в статье, но там можно шифроваться как угодно, например, делать xor между первым байтом чексуммы icmp-пакета + sequence number и данными. А можно и со вторым делать xor, почему бы и нет? Как насчёт "вычесть из первого байта ts третий байт и помножить его на второй байт чексуммы"? А что если данные зашифрованы алгоритмом, использующим identifier в качестве ключа? Количество возможных операций только с sequence number и временной меткой достаточно велико (а жизнь слишком коротка), чтобы перестать гадать и начинать разогревать паяльник.
А ещё у вас по адресу из дампа гитлаб по хттп смотрит наружу, это часть загадки?
Если TCP и UDP вам не доступны, то уезжайте из этой страны.
О, я такое в армии делала )) тоже скорее в качестве proof of concept чем реального применения - задача была выбрать протокол и незаметно передать через него данные. Мы правда пошли глубже, выбрали ARP, но другие команды выбирали и ICMP.
Как передать информацию в ICMP-пакетах и не привлечь внимания санитаров