Рейтинг:0

Отправка изображений по протоколу DNS

флаг kz
Avv

Протокол HTTP на прикладном уровне может передавать аудио, изображения и т. д. в теле через 1 или несколько ответов TCP, если размер файла превышает 4 МБ (размер тела ответа HTTP, если я не ошибаюсь).

Что касается DNS-сервера, я знаю, что он используется для разрешения имен хостов, но можно ли его использовать для переноса изображений или других мультимедийных файлов в его тело, пожалуйста?

Спасибо.

Massimo avatar
флаг ng
Вероятно, это *технически возможно* каким-то очень запутанным образом (см. https://en.wikipedia.org/wiki/IP_over_Avian_Carriers). Но с какой стати это делать, кроме «Я хочу посмотреть, смогу ли я заставить это работать»?
SamErde avatar
флаг gg
Я не думаю, что вы найдете законный вариант использования для этого, а не тот, который поддерживается какой-либо реализацией спецификации протокола DNS. Вы пробовали IPoAC? ;)
Avv avatar
флаг kz
Avv
Спасибо за информацию.
Patrick Mevzek avatar
флаг cn
Поскольку существуют «реализации» TCP через DNS, технически вы можете обмениваться через него чем угодно (и он каким-то образом используется для эксфильтрации данных после какого-либо эксплойта). Но почему вы хотите это сделать, это интересный вопрос? DNS — это протокол для распространения данных (подобный децентрализованной базе данных с низкой/медленной согласованностью), который в основном необходим для обнаружения и поиска служб. Он не предназначен для других нужд, таких как отправка произвольных файлов, где HTTP/FTP/SCP/и т.д. приспособлены к этому. Помните также, что DNS работает через UDP И TCP, а UDP не имеет средств управления транспортом.
флаг vn
https://www.akamai.com/blog/news/introduction-to-dns-data-exfilter
Рейтинг:3
флаг ar

Протокол HTTP на прикладном уровне может передавать аудио, изображения и т. д. в теле через 1 или несколько ответов TCP, если размер файла превышает 4 МБ (размер тела ответа HTTP, если я не ошибаюсь).

Прежде всего, пакеты маленькие; обычно MTU составляет 1500 байт, включая заголовки, поэтому реально говоря, каждый пакет составляет примерно 12-1450 байт. Все, что больше, отправляется в виде нескольких пакетов TCP.

Кроме того, современные протоколы, такие как QUIC (и, как расширение, HTTP/3), используют UDP для передачи данных, перенося обработку потерянных пакетов на приложение.

Что касается DNS-сервера, я знаю, что он используется для разрешения имен хостов, но можно ли его использовать для переноса изображений или других мультимедийных файлов в его тело, пожалуйста?

Конечно. Создайте запись TXT с изображением или чем-то подобным. DNS транспортирует данные. В случае с записями TXT ему все равно, что это за данные. Для других записей, таких как A, AAAA и т. д., существуют некоторые технические ограничения на то, какие данные ожидает протокол. Записи TXT могут быть до 255 байт, но их может быть неограниченное количество.

Patrick Mevzek avatar
флаг cn
«Записи TXT могут быть до 255 байт, но их может быть неограниченное количество». Это не совсем так. Да, вы можете иметь несколько записей TXT. Но одна заданная запись TXT **НЕ** ограничена 255 байтами. На проводе он использует «строку символов», которая составляет не более 255 байтов, но может иметь более одного из них. Итак, технически на уровне DNS одна запись TXT практически не ограничена (точнее до 65535 байт, поскольку каждая запись имеет RDLENGTH на 16 битах, хранящих длину контента).Поисковая TXT-запись `icann.org` там всего одна, но намного длиннее 255 байт...
Avv avatar
флаг kz
Avv
@ПатрикМевзек. Спасибо. То есть вы можете отправить 65535 байт одним DNS-запросом? Обычно DNS-запрос делается для разрешения имени хоста, но вы имеете в виду, что можете добавлять произвольные данные с запросом к DNS-серверу по протоколу DNS, пожалуйста?
vidarlo avatar
флаг ar
@PatrickMevzek спасибо за разъяснение!
vidarlo avatar
флаг ar
@Avv Вы можете передавать произвольные данные, используя *любой* протокол. Если вы хотите, вы можете закодировать изображение как IPv4-адреса и отправить их через DNS. Или вы можете закодировать их в Base64 и отправить в виде телеграмм.
Patrick Mevzek avatar
флаг cn
@Avv «Обычно запрос DNS делается для разрешения имени хоста». Нет. DNS — это свободно связанная децентрализованная онлайн-база данных. ОДНО из его применений — преобразование имен хостов в IP-адреса, но далеко не единственное. Посмотрите на записи `TXT` или `SRV`, например, для других целей. "но вы имеете в виду, что вы можете добавлять произвольные данные с запросом к DNS-серверу" Да, но у DNS-сервера нет причин принимать ваш запрос и что-то с ним делать.
Avv avatar
флаг kz
Avv
@ПатрикМевзек. Спасибо за разъяснение путаницы.
Avv avatar
флаг kz
Avv
@видарло. Ценить это.
Avv avatar
флаг kz
Avv
@ПатрикМевзек. Последний вопрос, пожалуйста. Вы объяснили больше, чем мне нужно, но для DNS вы упомянули, что мы можем отправлять изображение как IP-адрес, как если бы мы отправляли IP-адрес для разрешения, но на самом деле это изображение, поэтому, с учетом сказанного, DNS-запрос уже является исходным IP-адресом нашего устройства, так почему нам также нужно добавить IP-адрес, который мы хотим разрешить, в теле DNS? Если это не так, значит ли это, что мы меняем исходный IP-адрес запроса к DNS-серверу на изображение (биты IP представляют данные изображения), пожалуйста?
vidarlo avatar
флаг ar
Ненадолго игнорируйте исходный IP. Базовой точкой является то, что протокол состоит из запроса и ответа, и что запрос и ответ могут содержать данные. Это то, что вам нужно для передачи данных.
Patrick Mevzek avatar
флаг cn
@Avv Извините, я не понимаю вашего вопроса, и мы зашли довольно далеко от темы. Однако помните, что клиент в протоколе DNS обычно является рекурсивным преобразователем, и авторитетные серверы имен увидят именно его IP-адрес, а не IP-адрес клиента, как в случае человека/браузера/и т. д. делать некоторый интернет-обмен. Кроме того, IP-адрес имеет длину всего 32 или 128 бит, поэтому будет сложно закодировать в него изображение. Не уверен, что вы упоминаете об этом. Вы можете хранить «произвольные» данные в DNS, используя запись «TXT». Это свободная форма, поэтому вы можете, например, использовать base64 для двоичного потока.
Avv avatar
флаг kz
Avv
@PatrickMevzek. Вы сказали: «Кроме того, IP-адрес состоит только из 32 или 128 бит, поэтому будет сложно закодировать в него изображение». Но Видарло сказал: «Я понимаю, что вы можете передавать произвольные данные, используя любой протокол. изображения в виде IPv4-адресов и отправлять их через DNS. Или вы можете закодировать их в Base64 и отправить в виде телеграмм». Так что я просто запутался. Спасибо, в любом случае.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.