• Партнер

  • Themida — очень мощ­ный про­тек­тор исполня­емых фай­лов, поз­воля­ющий защитить их от нелицен­зион­ного копиро­вания и попол­зно­вений хакеров. Сегод­ня мы про­дол­жим раз­говор об этом про­тек­торе, сно­ва обсу­дим спо­собы сбро­са три­ала, а так­же напишем лоадер для обхо­да защиты.

    warning

    Статья написа­на в иссле­дова­тель­ских целях, име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Исполь­зование или рас­простра­нение ПО без лицен­зии про­изво­дите­ля может прес­ледовать­ся по закону.

    В прош­лый раз мы обсужда­ли прин­ципы внут­ренней орга­низа­ции вир­туаль­ной машины Themida. А теперь давай зак­репим получен­ные зна­ния на кон­крет­ном при­мере — поп­робу­ем оту­чить про­сить ключ пароч­ку популяр­ных при­ложе­ний фир­мы ConceptWorld. Эти при­ложе­ния пред­став­ляют собой набор мел­ких дешевых полез­няшек для работы с фай­лами, замет­ками и буфером обме­на.

    Лич­но я не сов­сем понимаю при­чину популяр­ности этих ути­лит, более того, меня бесят их назой­ливые окош­ки, бол­тающиеся на экра­не и воз­ника­ющие в самый непод­ходящий момент. Но самое раз­дра­жающее зак­люча­ется в том, что на столь прос­тые и дешевые при­ложе­ния навеси­ли столь взрос­лую защиту, в чем мож­но убе­дить­ся при помощи детек­тора про­тек­торов DetectItEasy (Die). Этот стран­ный факт мы с тобой сей­час испра­вим.

    При­ложе­ния ConceptWorld отлично подой­дут для демонс­тра­ции сла­бых мест защиты, которые мы с тобой изу­чим исклю­читель­но в ака­деми­чес­ких и иссле­дова­тель­ских целях. На вся­кий слу­чай еще раз напом­ню, что акту­аль­ная Themida не всег­да рас­позна­ется авто­мати­чес­ким ска­ниро­вани­ем, для подс­тра­хов­ки необ­ходимо под­клю­чать Nauz File Detector (NFD), который прак­тичес­ки всег­да опре­деля­ет ее пра­виль­но.

    Nauz File Detector умеет определять Themida
    Nauz File Detector уме­ет опре­делять Themida

    Итак, нач­нем с прог­раммы RecentX. Ради эко­номии мес­та я не буду занимать­ся рек­ламой, опи­сывая, для чего она слу­жит и что уме­ет делать (тем более, сам до кон­ца это­го не понимаю). Давай сра­зу перей­ду к сути защиты. При запус­ке при­ложе­ния (а так­же пос­ле переза­пус­ка сис­темы, пос­коль­ку эта ути­лита наг­ло про­писы­вает­ся в авто­заг­рузку), в вер­хней час­ти экра­на появ­ляет­ся пять вкла­док, которые поз­воля­ют выпол­нять раз­личные дей­ствия. Тул­за отлично работа­ет 30 дней, по про­шес­твии которых прев­раща­ется в тык­ву: нажатие на любой эле­мент интерфей­са при­водит к появ­лению нас­тырно­го окош­ка с тре­бова­нием зарегис­три­ровать прог­рамму.

    Зарегистрируй меня, Username!
    За­регис­три­руй меня, Username!

    В этот раз я нарушу собс­твен­ные же пра­вила и нач­ну с опи­сания прин­ципа сбро­са три­ала. Если ты уже читал мои статьи, то зна­ешь, что для начала нам понадо­бит­ся прог­рамма ProcessMonitor (ProcMon). Запус­каем ее, ста­вим филь­тр на имя про­цес­са RecentX.exe и для начала ана­лизи­руем фай­ловый ввод‑вывод это­го про­цес­са при его заг­рузке.

    Это неп­росто, пос­коль­ку по сво­ей спе­цифи­ке прог­рамма обра­щает­ся чуть ли не ко всем фай­лам на жес­тком дис­ке. Одна­ко полис­тав спи­сок некото­рое вре­мя, мы натыка­емся на пос­ледова­тель­ные обра­щения к фай­лам со стран­ными неп­роиз­носимы­ми наз­вани­ями в катало­ге ProgramData.

    Странные обращения к файлам
    Стран­ные обра­щения к фай­лам

    Поп­робу­ем уда­лить, к при­меру, файл C:\ProgramData\xmvkknpt.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, которая пред­назна­чена для более интеллек­туаль­ной чис­тки реес­тра. Гру­бо говоря, при помощи этой прог­раммы мож­но получить при­мер­ное пред­став­ление, какие клю­чи в реес­тре не несут полез­ной наг­рузки и каково было их изна­чаль­ное пред­назна­чение. Мы не про­гада­ли: ключ HKCU\Software\Classes\CertificateAuthority.Request\CLSID\tkgiuafq яко­бы свя­зан­ный с сер­тифика­тами, ока­зыва­ется нап­рямую свя­зан с 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

    Продолжение доступно только участникам

    Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

    Присоединяйся к сообществу «Xakep.ru»!

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии