Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Themida — очень мощный протектор исполняемых файлов, позволяющий защитить их от нелицензионного копирования и поползновений хакеров. Сегодня мы продолжим разговор об этом протекторе, снова обсудим способы сброса триала, а также напишем лоадер для обхода защиты.
warning
Статья написана в исследовательских целях, имеет ознакомительный характер и предназначена для специалистов по безопасности. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Использование или распространение ПО без лицензии производителя может преследоваться по закону.
В прошлый раз мы обсуждали принципы внутренней организации виртуальной машины Themida. А теперь давай закрепим полученные знания на конкретном примере — попробуем отучить просить ключ парочку популярных приложений фирмы ConceptWorld. Эти приложения представляют собой набор мелких дешевых полезняшек для работы с файлами, заметками и буфером обмена.
Лично я не совсем понимаю причину популярности этих утилит, более того, меня бесят их назойливые окошки, болтающиеся на экране и возникающие в самый неподходящий момент. Но самое раздражающее заключается в том, что на столь простые и дешевые приложения навесили столь взрослую защиту, в чем можно убедиться при помощи детектора протекторов DetectItEasy (Die). Этот странный факт мы с тобой сейчас исправим.
Приложения ConceptWorld отлично подойдут для демонстрации слабых мест защиты, которые мы с тобой изучим исключительно в академических и исследовательских целях. На всякий случай еще раз напомню, что актуальная Themida не всегда распознается автоматическим сканированием, для подстраховки необходимо подключать Nauz File Detector (NFD), который практически всегда определяет ее правильно.
Nauz File Detector умеет определять Themida
Итак, начнем с программы RecentX. Ради экономии места я не буду заниматься рекламой, описывая, для чего она служит и что умеет делать (тем более, сам до конца этого не понимаю). Давай сразу перейду к сути защиты. При запуске приложения (а также после перезапуска системы, поскольку эта утилита нагло прописывается в автозагрузку), в верхней части экрана появляется пять вкладок, которые позволяют выполнять различные действия. Тулза отлично работает 30 дней, по прошествии которых превращается в тыкву: нажатие на любой элемент интерфейса приводит к появлению настырного окошка с требованием зарегистрировать программу.
Зарегистрируй меня, Username!
В этот раз я нарушу собственные же правила и начну с описания принципа сброса триала. Если ты уже читал мои статьи, то знаешь, что для начала нам понадобится программа ProcessMonitor (ProcMon). Запускаем ее, ставим фильтр на имя процесса RecentX.exe
и для начала анализируем файловый ввод‑вывод этого процесса при его загрузке.
Это непросто, поскольку по своей специфике программа обращается чуть ли не ко всем файлам на жестком диске. Однако полистав список некоторое время, мы натыкаемся на последовательные обращения к файлам со странными непроизносимыми названиями в каталоге ProgramData
.
Странные обращения к файлам
Попробуем удалить, к примеру, файл C:ProgramDataxmvkknpt.yme
. Ничего не происходит, но при перезапуске программы он воссоздается на том же самом месте. Судя по всем признакам, это и есть файл триала.
Внимательно проанализировав лог ProcMon, мы обнаруживаем полный набор подобных файлов. Все они находятся в каталоге ProgramData
: acqrldoh.otw
, bgjxnlpy.hxt
, lapoiwsc.hke
, uhthdans.svu
, vwnpbcnu.gon
, xmvkknpt.yme
и mntemp
. Причем время от времени вместо файлов acqrldoh.otw
и vwnpbcnu.gon
программа ищет другую пару — wspjaeoc.kjj
и tvmnixvk.oib
. Однако даже удалив все файлы из каталога ProgramData
, удовлетворения мы не получим — программа упорно продолжает просить регистрацию.
По своему предыдущему опыту я помню, что помимо файлов, информация о триале обычно дублируется в реестре, потому начинаем рыть в этом направлении. Включаем в ProcessMonitor режим Show Registry Activity и начинаем тщательно и кропотливо изучать обращения программы к системному реестру.
Посмотрим, не хранит ли что‑то программа в реестре?
Похоже, мы в беде: зацепиться не за что: все ключи реестра, к которым идет обращение, на первый взгляд, ни к «Фемиде», ни к триалу никакого отношения не имеют — программа делает что‑то связанное с сертификтами. Чтобы разрулить тупиковую ситуацию, нам явно потребуются дополнительные инструменты.
Попробуем утилиту Registry Trash Keys Finder, которая предназначена для более интеллектуальной чистки реестра. Грубо говоря, при помощи этой программы можно получить примерное представление, какие ключи в реестре не несут полезной нагрузки и каково было их изначальное предназначение. Мы не прогадали: ключ HKCUSoftwareClassesCertificateAuthority.RequestCLSIDtkgiuafq
якобы связанный с сертификатами, оказывается напрямую связан с WinLicense. Причем рядом расположено множество подобных ключей, а мы бы на них никогда и не подумали!
Вот он, подозрительный ключ реестра
Помимо этого Registry Trash Keys Finder находит в реестре множество скрытых триальных ключей от других протекторов. Внимательно пройдясь по логу обращений к реестру в шаговой доступности от этого места, кроме откровенно фемидовских ключей находим список фиктивных ключей, маркируемых программой как «Неверное имя для CLSID». Что интересно, время их создания соответствует нашему триалу:
HKCUSOFTWAREClassesWOW6432NodeCLSID{3cb0ad54-974d-16ed-d104-cd424d68} Неверное имя для CLSID
HKCUSoftwareClassesWOW6432NodeCLSID{12da1235-be86-5767-6d92-ee730e32} Неверное имя для CLSID
HKCUSoftwareClassesWOW6432NodeCLSID{6aa9d287-7a4e-0c97-3588-db0da93b} Неверное имя для CLSID
HKCUSOFTWAREClassesCcFWSettg.CategoryCLSID{cca30008-435a-64be-eea5} WinLicense 1.x
HKCUSOFTWAREMicrosoftCryptographyRNG WinLicense 1.x
HKCUSoftwareClassesCertificateAuthority.RequestCLSID WinLicense 1.x
Источник: xakep.ru