Вы ни за что не отгадаете, где на этот раз запустили «DOOM»

leer en español

Вы ни за что не отгадаете, где на этот раз запустили «DOOM»

Забудьте про калькуляторы: игру заставили работать там, где вообще нет файловой системы.

image

Разработчик Адам Райс превратил один из самых скучных интернет-протоколов в неожиданную платформу для запуска игр. Он показал, что классический шутер DOOM можно полностью загрузить и запустить через протокол DNS — без установки, файлов и привычной доставки данных.

Адам Райс давно экспериментирует с TXT-записями DNS, в которые можно записывать произвольный текст. Обычно такие записи применяют для проверки почты или служебных нужд, но никаких строгих ограничений по содержимому нет. Разработчик решил пойти дальше и использовать DNS как хранилище данных. Сначала он проверил идею на изображении — разбил файл на части, закодировал в Base64 и разместил в TXT-записях. Система без проблем собрала файл обратно с тем же хэшем.

Следующим шагом стал запуск полноценной программы. В качестве демонстрации Райс выбрал DOOM — традиционный тест на «невозможные» платформы. Он нашёл реализацию игры на C# названием managed-doom и адаптировал её для работы полностью из памяти. Исходный код переработали так, чтобы игра не обращалась к файловой системе и не требовала нативных библиотек. Звуковую часть убрали ради уменьшения объёма данных.

После сжатия все компоненты игры заняли около трёх мегабайт. Райс разбил их на 1966 TXT-записей в зоне DNS, размещённой через CloudFlare. Загрузка заняла около 15 минут. Для запуска он написал PowerShell-скрипт примерно на 250 строк, который делает около двух тысяч DNS-запросов, собирает данные в памяти и запускает игру через механизмы .NET.

Весь процесс обходится без записи файлов на диск и без установки зависимостей. Скрипт просто извлекает данные через стандартные DNS-запросы и выполняет их в оперативной памяти.

Эксперимент показывает, насколько гибким может быть DOOM, и насколько уязвимым может быть DNS. Протокол создавали почти 45 лет назад для сопоставления доменных имён и IP-адресов, но отсутствие строгой валидации позволяет использовать его в том числе как распределённое хранилище.

Райс подчёркивает, что подобные техники уже применяют для скрытой доставки вредоносного кода, а его проект лишь довёл идею до абсурда. Исходный код проекта опубликован на GitHub.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS