Безумец загрузил и запустил Doom прямо из DNS-записей

Сетевые администраторы, приготовьте свои успокоительные, потому что сегодняшний домашний проект — это нечто. Во-первых, он связан с всеобщим любимым «проблемным ребёнком» — системой доменных имён (DNS). Во-вторых, некий Адам Райс сумел поместить в неё игру Doom. Это предложение, которое я никогда не думал, что напишу, но мои жизненные выборы не всегда приводили к славе.

Для непосвящённых: каждый раз, когда вы заходите на сайт, ваше устройство сначала спрашивает у сервера его фактический числовой адрес. Это и есть DNS, краеугольный камень интернета. Райс, судя по всему, эксперт в том, чтобы сгибать DNS в четырёхмерные фигуры, например, используя её TXT-записи для доставки вредоносных нагрузок.

Как следует из аббревиатуры, TXT-запись содержит строку текста. Обычно они используются для проверки домена и контроля спама, и для большинства доменов их нужно всего несколько штук. Но дело в том, что по определению они могут содержать произвольные данные. И, как отмечает Райс, там, где можно хранить данные, можно хранить файл, а значит, и программу вроде Doom.

TXT-записи могут содержать до 2000 символов, и у одного домена их могут быть тысячи. А поскольку DNS-записи кэшируются на многих уровнях по всему интернету, это означает, что можно хранить значительный объём данных и запрашивать их с относительно приличной скоростью. Разработчики в аудитории, наверное, уже догадались, к чему это идёт.

Сначала Райс подумал о том, чтобы сохранить простой файл — в данном случае изображение утки — путём кодирования двоичных данных в текстовый формат base64 и нарезки на множество фрагментов, поскольку преобразование в текст влечёт значительные накладные расходы. Он подумывал попробовать с фильмом, но даже 1 ГБ данных занял бы 670 000 записей, поэтому он остановился на «чем-то, что действительно продемонстрировало бы, насколько это абсурдно» — конечно же, на Doom.

Райсу нужен был простой способ разобрать и собрать Doom из DNS-записей прямо в памяти, поэтому он использовал порт игры на C# под названием managed-doom. C# — это байт-код язык, то есть исходный код сначала компилируется в кроссплатформенный бинарный файл, который затем запускается в движке .NET, выполняющем окончательный перевод в инструкции целевого процессора — всё это похоже на Java.

Поскольку Райс хотел полностью избежать записи файлов на диск, он прибег к помощи ИИ Claude, чтобы настроить части процесса загрузки игры для чтения всех данных из памяти. Он удалил аудиофайлы, так как они занимали слишком много места, но после некоторых манипуляций со сжатием ему удалось уместить игру примерно в 3,8 МБ, распределённых по 2000 DNS-записей.

Сделав самую сложную работу, он написал загрузочный скрипт на PowerShell, который запрашивает TXT-записи одного из его доменов, собирает данные и проверяет их на целостность. На этом этапе всё содержимое игры находится в памяти, и остаётся только запустить её, как любую другую программу .NET.

Райс описывает свои проекты как «проклятые», и я вынужден согласиться — DNS-серверам Cloudflare, вероятно, после этого понадобится психологическая помощь. Проект доступен на GitHub, если вы хотите последовать по стопам Райса.

Источник: Tomshardware.com

Подписаться на обновления Новости / Технологии
Зарегистрируйтесь на сайте, чтобы отключить рекламу

ℹ️ Помощь от ИИ

В статье есть ошибки или у вас есть вопрос? Попробуйте спросить нашего ИИ-помощника в комментариях и он постарается помочь!

⚠️ Важно:

• AI Rutab читает ваши комментарии и готов вам помочь.
• Просто задайте вопрос 👍
• ИИ может давать неточные ответы!
• ИИ не скажет «Я не знаю», но вместо этого может дать ошибочный ответ.
• Всегда проверяйте информацию и не полагайтесь на него как на единственный источник.
• К ИИ-помощнику можно обратиться по имени Rutab или Рутаб.


0 комментариев

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


Все комментарии - Технологии