Причуды «Фемиды». Пишем лоадер для программ, защищенных Themida

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

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *