Пакеты программ rootkit как средство нейтрализации технологии управления цифровыми правами

Случай с применением компанией Sony пакетов rootkit показал, что в некоторых обстоятельствах они задействуются для того, чтобы не позволить пиратам, а равно и авторам программ для записи, копирования и эмуляции компакт-дисков, обходить режим управления цифровыми правами (Digital Rights Management, DRM) в отношении информации, защищенной авторским правом. В этом контексте забавно (хотя и ничуть не удивительно), что в программах для эмуляции компакт-дисков также используются пакеты rootkit, но c совершенно с противоположной целью -  чтобы не позволить программам DRM вводить в действия ограничения на копирование.

 

Поскольку на компьютерные игры и DVD-диски не распространяется требование о совместимости с абонентскими приставками, производители вольны сохранять данные на носителях нетрадиционными способами. Предполагается, что считывать такие данные можно только при помощи специального ПО. Попытки копировать носители в обход ПО приводят лишь к образованию совокупности бессистемных данных. Помимо прочего, подобное ПО при помощи технологии DRM позволяет обнаруживать и пресекать попытки несанкционированного копирования.

Компании, производящие программы для записи и эмуляции компакт-дисков, получают значительную часть своей прибыли благодаря желанию пользователей сохранять игры на жестких дисках. Это желание, вполне естественное, объясняется возможностью быстрого, кэшированного доступа к файлам игр. В то же время, известно, что играми, скопированными на диск, пользователи часто в нарушение законов обмениваются со знакомыми. Компакт-диски и DVD-диски с защищенным содержимым ставят перед производителями программ для записи и эмуляции новые задачи, которые они не могут не принимать во внимание. Существует такой способ решить эти задачи, как обратное проектирование ПО, интерпретирующего данные на носители, но для этого нужны масштабные и постоянные ресурсы, иначе не справиться с дешифровкой постоянно меняющихся схем кодирования.

 

Другой способ существенно проще - нужно лишь заставить ПО DRM думать, что данные игры считываются с исходного компакт-диска, а никак не с его копии на диске. Существует несколько методик, позволяющих ПО DRM обхитрить программы эмуляции, из которых самый простой заключается в том, чтобы ответить на вопрос, установлены ли такие программы в системе, и если да, то не запускается ли игра с копии на диске. И вот здесь на авансцену выходят пакеты rootkit. Они применяются в двух наиболее популярных программах эмуляции компакт-дисков: Alcohol и Daemon Tools.

Согласно описанию программы Alcohol, она позволяет «создавать на записываемых носителях резервные копии практически с любых дорогих вашему сердцу  игр, ПО и DVD-дисков; кроме того, образ диска можно подключить и запускать с любого виртуального диска Alcohol». Сканирование системы, в которой установлена программа Alcohol, инструментом RootkitRevealer обнаруживает ряд расхождений.

clip_image001

 

Первые две строки указывают на несоответствие данных, а последняя - на сокрытие раздела реестра от ОС Windows. Несоответствие данных - это ситуация, при которой инструмент RootkitRevealer получает через API реестра одно значение, а при анализе данных собственно реестра - другое. При просмотре любого из этих значений в редакторе Regedit они выглядят так, как будто состоят из одних пробелов:

clip_image001[4]

 

Почему разработчики программы Alcohol предпочли несоответствие данных стандартной методике маскировки значений? Рассматриваемые значения находятся в разделах реестра HKLM\Software\Classes\Installer\Products и HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. В обоих этих разделах приложения хранят данные, предназначенные для служебной программы «Установка и удаление программ Windows» (Windows Add/Remove Programs, ARP). Программа ARP извлекает значение ProductName из раздела Products приложения и выводит его в качестве имени в списке установленных приложений. Значит, при пустом значении в реестре этот список должен содержать безымянный продукт. Однако же пустых имен в списке приложений не обнаруживается, хотя указанное значение реестра безусловно связано с приложением Alcohol.

clip_image001[6]

Как и другие приложения панели управления, программа ARP реализована в виде библиотеки, размещаемой процессом Rundll32.exe. Трассировка активности реестра, связанной с ARP, полученная с помощью служебной программы Regmon, подтверждает, что ARP считывает наименование приложения «Alcohol» из несоответствующего значения ProductName, а редактор Regedit видит только пустое значение.

clip_image001[8]

Другое несоответствующее значение применяется аналогичным способом. Мне кажется, что приложение Alcohol скрывает строки, свидетельствующие о его присутствии в системе, от всего, кроме программы ARP. Тем самым оно пытается исключить обнаружение программами DRM наподобие тех, что поставляются вместе с играми и отключают их, если в системе имеется ПО для копирования или эмуляции компакт-дисков и DVD-дисков. Существует масса других признаков, по которым программы DRM могут обнаружить присутствие приложения Alcohol, но его разработчики, по-видимому, посчитали, что чаще всего все-таки проводится анализ установленных продуктов.

Последний пункт в отчете программы RootkitRevealer указывает на замаскированный раздел Jgdd40 в подразделе Config драйвера Vax347s. Для создания виртуальных компакт-дисков и DVD-дисков приложению Alcohol нужен драйвер устройства, предъявляющий их операционной системе. Именно эту роль и исполняет драйвер Vax347s. Изучить замаскированный раздел реестра просто - достаточно лишь открыть его родительский элемент в редакторе Regedit, выбрать в меню File (Файл) команду Export (Экспорт) и указать в раскрывающемся списке пункт Registry Hive Files (Файлы кустов реестра). Затем файл нужно скопировать в другую систему, запустить редактор Regedit, перейти в ветвь HKLM и выбрать в меню File (Файл) команду Load Hive (Загрузка куста реестра). При этом можно ввести любое имя раздела. Указанные операции с замаскированным разделом позволяют увидеть, что в нем имеется одно значение - Ujdew.

clip_image001[10]

 

Данные, соответствующие этому значению, представлены в двоичной форме и мне кажется, что они описывают тома, виртуализацию которых осуществляет драйвер. Таким образом, даже если программа DRM в комплекте той или иной игры знает о том, что приложение Alcohol установлено в системе, она не сможет узнать, с какого тома игра запущена - с физического или эмулированного. Эти догадки подтверждает родительский раздел Jdgg40 - Config. В нем также содержится одно значение с именем Ujdew, но с несколько видоизмененными по сравнению со скрытым значением данными. Это второе значение - наверняка приманка для разработчиков ПО DRM, обнаруживших следы сопоставления виртуальных дисков.

 

clip_image001[12]

Как и в случае с компанией Sony, рассматриваемый пакет rootkit перехватывает интерфейсы API реестра и манипулирует их поведением посредством обработки системных вызовов. В нижеследующей копии памяти, занятой таблицей системных вызовов режима ядра Windows, встречаются адреса, выходящие за рамки образа ядра, что явно свидетельствует об обработке системных вызовов.

clip_image001[14]

Эти адреса соответствуют системным вызовам, связанным с реестром. Отладчик подтверждает, что они относятся ко второму драйверу Alcohol, Vax347b, который осуществляет маскировку.

clip_image001[16]

В системе с установленным приложением Daemon Tools инструмент RootkitRevealer сообщает об одном несоответствии.

 

clip_image001[18]

Интересно, что пакет rootkit в составе приложения Daemon Tools не маскирует наличие раздела, а запрещает доступ к нему даже для инструмента RootkitRevealer, который предназначен для открытия любых разделов вне зависимости от уровня их защиты. Следуя вышеприведенной процедуре доступа к скрытым разделам, раскроем содержимое интересующего нас раздела:

clip_image001[20]

 

Как и в случае с Alcohol, этот раздел относится к драйверу виртуальных устройств приложения Daemon Tools. По-видимому, он содержит сведения о конфигурации. Из этого я делаю вывод, что приложение Daemon Tools скрывает его для того, чтобы не позволить программам, защищающим от эмуляции дисков, отличить виртуальные тома от реальных.

Производители приложений Alcohol и Daemon Tools пока не обвиняются в обходе технологии DRM с помощью пакетов rootkit, но свидетельства говорят сами за себя. Если это действительно так, то помимо очевидных проблем по этической части речь идет о возможном нарушении Закона США о защите авторских прав в цифровую эпоху. Как бы то ни было, я уже об этом говорил, но повторюсь еще раз: ни производители рассмотренных приложений, ни разработчики каких бы то ни было других программных продуктов не имеют и не могут иметь достаточно веских оснований для применения пакетов rootkit.

[2/7/06: Уточнение. Говоря об «очевидных проблемах по этической части», я имею в виду не пользователей продуктов, а их разработчиков, задавшихся целью обойти ограничения DRM. Ранее я уже приводил определение и перечислял риски, связанные с применением пакетов rootkit.]

Кстати говоря, оцените забавный видеоролик на песню «Patch Me Up» (Подлатай меня) группы Rootkit из северного Сиднея.

Исходная запись создана пользователем Mark Russinovich 06.02.06 в 09:27:00
Запись перенесена из блога Sysinternals.com/Blog