warning
Статья написана в исследовательских целях, имеет ознакомительный характер и предназначена для специалистов по безопасности. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Использование или распространение ПО без лицензии производителя может преследоваться по закону.
В прошлый раз мы обсуждали принципы внутренней организации виртуальной машины Themida. А теперь давай закрепим полученные знания на конкретном примере — попробуем отучить просить ключ парочку популярных приложений фирмы ConceptWorld. Эти приложения представляют собой набор мелких дешевых полезняшек для работы с файлами, заметками и буфером обмена.
Лично я не совсем понимаю причину популярности этих утилит, более того, меня бесят их назойливые окошки, болтающиеся на экране и возникающие в самый неподходящий момент. Но самое раздражающее заключается в том, что на столь простые и дешевые приложения навесили столь взрослую защиту, в чем можно убедиться при помощи детектора протекторов DetectItEasy (Die). Этот странный факт мы с тобой сейчас исправим.
Приложения ConceptWorld отлично подойдут для демонстрации слабых мест защиты, которые мы с тобой изучим исключительно в академических и исследовательских целях. На всякий случай еще раз напомню, что актуальная Themida не всегда распознается автоматическим сканированием, для подстраховки необходимо подключать Nauz File Detector (NFD), который практически всегда определяет ее правильно.
Итак, начнем с программы RecentX. Ради экономии места я не буду заниматься рекламой, описывая, для чего она служит и что умеет делать (тем более, сам до конца этого не понимаю). Давай сразу перейду к сути защиты. При запуске приложения (а также после перезапуска системы, поскольку эта утилита нагло прописывается в автозагрузку), в верхней части экрана появляется пять вкладок, которые позволяют выполнять различные действия. Тулза отлично работает 30 дней, по прошествии которых превращается в тыкву: нажатие на любой элемент интерфейса приводит к появлению настырного окошка с требованием зарегистрировать программу.
В этот раз я нарушу собственные же правила и начну с описания принципа сброса триала. Если ты уже читал мои статьи, то знаешь, что для начала нам понадобится программа ProcessMonitor (ProcMon). Запускаем ее, ставим фильтр на имя процесса RecentX.
и для начала анализируем файловый ввод‑вывод этого процесса при его загрузке.
Это непросто, поскольку по своей специфике программа обращается чуть ли не ко всем файлам на жестком диске. Однако полистав список некоторое время, мы натыкаемся на последовательные обращения к файлам со странными непроизносимыми названиями в каталоге ProgramData
.
Попробуем удалить, к примеру, файл C:\
. Ничего не происходит, но при перезапуске программы он воссоздается на том же самом месте. Судя по всем признакам, это и есть файл триала.
Внимательно проанализировав лог ProcMon, мы обнаруживаем полный набор подобных файлов. Все они находятся в каталоге ProgramData
: acqrldoh.
, bgjxnlpy.
, lapoiwsc.
, uhthdans.
, vwnpbcnu.
, xmvkknpt.
и mntemp
. Причем время от времени вместо файлов acqrldoh.
и vwnpbcnu.
программа ищет другую пару — wspjaeoc.
и tvmnixvk.
. Однако даже удалив все файлы из каталога ProgramData
, удовлетворения мы не получим — программа упорно продолжает просить регистрацию.
По своему предыдущему опыту я помню, что помимо файлов, информация о триале обычно дублируется в реестре, потому начинаем рыть в этом направлении. Включаем в ProcessMonitor режим Show Registry Activity и начинаем тщательно и кропотливо изучать обращения программы к системному реестру.
Похоже, мы в беде: зацепиться не за что: все ключи реестра, к которым идет обращение, на первый взгляд, ни к "Фемиде", ни к триалу никакого отношения не имеют — программа делает что‑то связанное с сертификтами. Чтобы разрулить тупиковую ситуацию, нам явно потребуются дополнительные инструменты.
Попробуем утилиту Registry Trash Keys Finder, которая предназначена для более интеллектуальной чистки реестра. Грубо говоря, при помощи этой программы можно получить примерное представление, какие ключи в реестре не несут полезной нагрузки и каково было их изначальное предназначение. Мы не прогадали: ключ HKCU\
якобы связанный с сертификатами, оказывается напрямую связан с WinLicense. Причем рядом расположено множество подобных ключей, а мы бы на них никогда и не подумали!
Помимо этого Registry Trash Keys Finder находит в реестре множество скрытых триальных ключей от других протекторов. Внимательно пройдясь по логу обращений к реестру в шаговой доступности от этого места, кроме откровенно фемидовских ключей находим список фиктивных ключей, маркируемых программой как «Неверное имя для CLSID». Что интересно, время их создания соответствует нашему триалу:
HKCU\SOFTWARE\Classes\WOW6432Node\CLSID\{3cb0ad54-974d-16ed-d104-cd424d68} Неверное имя для CLSID
HKCU\Software\Classes\WOW6432Node\CLSID\{12da1235-be86-5767-6d92-ee730e32} Неверное имя для CLSID
HKCU\Software\Classes\WOW6432Node\CLSID\{6aa9d287-7a4e-0c97-3588-db0da93b} Неверное имя для CLSID
HKCU\SOFTWARE\Classes\CcFWSettg.Category\CLSID\{cca30008-435a-64be-eea5} WinLicense 1.x
HKCU\SOFTWARE\Microsoft\Cryptography\RNG WinLicense 1.x
HKCU\Software\Classes\CertificateAuthority.Request\CLSID WinLicense 1.x
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»