Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
8.59 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

С антивирусами покончено!w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

лать много. К примеру, SandboxIE производит перехват 56 функций из ntdll.dll, 68 функций из user32.dll, 71 функции из advapi32.dll, 6 функций из kernel32.dll и 1 функции из ws_32.dll.

Теперь пара слов про методы принятия решения о помещении выполняемого приложения в песочницу, а также о режимах ее работы. Методов принятия решения по большому счету два.

На основе правил

Модуль принятия решения обращается к внутренней базе правил запуска приложений и в зависимости от них запускает приложения либо в песочнице, либо в основной системе. Такой подход применяют SandboxIE, BufferZone.

На основе эвристических подходов

В этом случае решение о запуске в песочнице принимается на основе результатов работы

эвристического анализатора. Так работают песочницы из состава большинства антивирусных продуктов (в частности Kaspersky Internet Security и Comodo Internet Security Pro).

Что касается режимов работы, то их тоже два — режим постоянной защиты и режим ручной защиты. В первом случае приложение автоматически помещается в песочницу либо выполняется вне ее в зависимости от результата работы модуля принятия решения при старте приложения. Во втором — пользователь сам принимает решение о запуске процесса внутри песочницы. К примеру, для SandboxIE (песочница на основе частичной виртуализации) основным режимом работы является режим ручной защиты, но при покупке лицензии можно активировать режим постоянной защиты с принятием решения на основе правил.

Для песочницы из состава Comodo Internet Security основной режим — режим постоянной защиты с эвристическим алгоритмом принятия решения. Однако помимо этого существует возможность ручного запуска приложений в песочнице.

ЗАКЛЮЧЕНИЕ

Конечно, некоторые детали остались за кадром, да и разработчики в антивирусных лабораториях все время изобретают что-то новое, пытаясь догнать и перегнать создателей вредоносного программного обеспечения… Но главное, что все эти антивирусные премудрости обрели порядок и свое место на многочисленных полочках в твоей голове. А там, глядишь, и ты придумаешь что-нибудь такое, что произведет революцию в антивирусном деле, и редактору придется выделять место под новые статьи в нашем журнале. z

ОбщийпринципизоляциифайловойсистемывSandboxIE

ВиртуализацияфайловойсистемывSandboxIE(впапкеdriveнаходятсяпапки,имитирующиевнешниенакопители)

ОБЛАЧНЫЕТЕХНОЛОГИИНААНТИВИРУСНОЙСЛУЖБЕ

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

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

иуточнения информации о вредоносных и потенциально вредоносных объектах. В разных антивирусных компаниях это называется по-разному. У Microsoft Security Essential

— «Служба динамических сигнатур DSS (Dynamic Signature Service)». Если на выходе проактивной защиты файл будет расценен как подозрительный (к примеру, пытается изменить системные файлы), но сигнатурный анализатор на него никак не отреагировал, то создается профиль этого файла, который отсылается для анализа в специальные сервисы Microsoft — DSS, SpyNet и MRS (Microsoft Reputation Services). В случае, когда в базе обновления сигнатура уже есть, но она

еще не скачана, автоматически происходит обновление баз.

Всигнатурах содержится не только часть тела вируса или его хэш, но и некоторые типичные сценарии поведения, которые позволяют однозначно определить вредоносность программы.

Вантивирусах от компании Comodo та же самая фигня носит название «Облачный анализ поведения приложений», и с его помощью подозрительные файлы отправляются на дополнительный анализ.

Говоря про облачные технологии в сфере борьбы с вредоносными программами, нельзя не упомянуть «Лабораторию Касперского» с ее Kaspersky Secu-

rity Network. KSN — сеть информационной безопасности, позволяющая пользователям получать оперативные данные о репутации программ и веб-сайтов, оперативно реагируя на появление новых угроз. С помощью KSN в новых антивирусных программах от «Лаборатории Касперского» реализованы функции веб-фильтра, антифишинговый модуль, функция контроля программ (рейтингование софта по признакам опасности при назначении доступа к ресурсам ПК и персональным данным) и модуль анти-спам, который обращается в KSN за образцами спам-писем.

INFO

Вслучаеиспользованияпесочницдля изоляциивыполняемогокодаследует помнить,чтомногие изнихвиртуализируютдалеконевсю систему.Какправило,этонесколько критическиважных объектов,например: папкиProgram Files,Windows, Users\%AllUsersProfile%\Program Data,Documents andSettingиветвь реестраHKLM\ Software.

Прообфускацию Java-скриптовочень хорошонаписано

встатье«JavaScript: игрывпрятки»

вдевятомномере][ за2011год.

ХАКЕР 04 /159/ 2012

079

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

MALWAREm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

Неизвестная

угроза

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

deeonis(deeonis@gmail.com)w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ИСПЫТЫВАЕМЭВРИСТИКУ АВЕРОВНАСАМЫХНОВЫХ ВИРУСАХ

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

егодняшние испытания мы будем

Cпроводить на реальных зловредах, которых написали реальные киберз-

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

Кстати, об испытуемых антивирусах. Сегодня к нам в лабораторию попало следующее защитное ПО: Kaspersky CRYSTAL, Dr.Web Security Space, ESET NOD32 Smart Security 5 и Avira Free Antivirus. Все претенденты на звание лучшего из лучших (или, наоборот, худшего из худших)

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

граммного обеспечения. Вирмейкеры в своих ТЗ выделяют Авиру в отдельный пункт, а по уровню причиняемой головной боли этого авера можно сравнить разве что с IE6, который портит нервы добрым и трудолюбивым верстальщикам и web-кодерам.

УСЛОВИЯ ТЕСТИРОВАНИЯ

Для тестов мы засетапили на вируталку свеженькую Windows XP sp3 со всеми апдейтами, а затем начали устанавливать антивирусы, попутно создавая снапшоты виртуальной машины для каждого из аверов, чтобы они не мешали друг другу. Затем мы быстренько проапдейтили базы сигнатур до актуального состояния и оставили все это хозяйство на неделю в темном прохладном месте без интернета, чтобы наши испытуемые ненароком не обновились.

Через неделю мы пошли за свежей малварью — описание этой разношерстной компании ты можешь видеть на врезке.

Но кое-какую исследовательскую работу мы все-таки провели — открыли вирусные файлики в hex-редакторе и посмотрели на них с полминутки. В итоге мы смогли рассмотреть два swf-файла, один Visual Basic Script, один Java-скрипт, четыре исполняемых exe-файла

(три из которых были пожаты UPX) и два загадочных файла с расширением lpe, которые изнутри были похожи один на pdf, а другой — на zip-архив. Всего получилось десять зловредов.

Само тестирование у нас будет проходить в два этапа. На первом этапе мы натравим антивирусы с несвежими базами на найденные

трояны и запишем результат. Таким образом мы проверим, насколько хорошо аверы справляются с новым, неизвестным им вредоносным ПО. Вторая часть испытаний состоится через неделю после первой. Мы дадим антивирусам время на обнаружение и детект наших зловредов, затем обновим базы и просканим вредоносов еще раз. Это позволит нам узнать, насколько плохо противовирусное ПО справилось в первый раз.

НАЧИНАЕМ ТЕСТИРОВАНИЕ

Итак, мы подождали, пока антивирусные базы достаточно устареют, и начали тестирование. Сегодня аверы будут идти в алфавитном порядке, поэтому первым пойдет Avira Free Antivirus. Для чистоты эксперимента мы вообще выдернули сетевой кабель из машины, на которой собираемся проводить тесты, — современные антивирусы очень любят скрытно обновлять себя, сливать инфу о файлах на свои сервера и использовать всякие облачные технологии.

080

ХАКЕР 04 /159/ 2012

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Неизвестная угрозаw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dr.Webсправилсяснеизвестнойемуугрозойлучшевсех

РезультатыКасперабезобновленныхбаз

 

 

 

 

 

 

ДокторВебсовсемплох,свежиебазысигнатуремунепомогли

Kasperskyотжог:totaldetection

Поэтому, чтобы все было честно, доступ к сети был жестко ограничен. Также мы отключили файловые мониторы и прочие фоновые проверки, чтобы эти компоненты защитного ПО не мешали скопировать наш минизверинец на ПК. Но вернемся к испытаниям. Распаковав архивчик со зловредами в специально отведенную для них директорию, мы кликнули по этой директории правой кнопкой мыши и выбрали пункт Scan. Не слишком расторопная Авира немного призадумалась, но затем все же занялась сканированием, после чего выдала окно с результатами. Из десяти вредоносных файлов Avira обнаружила только один, обозвав его DR/

Delphi.Gen. Благодаря гуглу, официальному сайту и помощи Капитана Очевидность мы выяснили, что своему детекту зловред обязан эвристическому движку антивируса. Таким образом, эвристика сработала, но не совсем так, как того хотелось бы германским программистам. Результат 1/10 хоть и лучше, чем ничего, но как-то не внушает особенного оптимизма. Следующим идет Dr.Web Security Space. Зеленый паук был натравлен на ту же самую

папку. Сканирование прошло быстро, и его результаты оказались получше, чем у предшественника. Главной угрозой стал все тот же DR/Delphi.Gen, но уже с новым именем

— Trojan.MulDrop.20121. Судя по названию, файлик был обнаружен с помощью конкретной сигнатуры, которая была в базе уже довольно давно. Число 20121, видимо, означает размер вредоноса, но у нашего зверька этот размер немного отличается — 20992 байт. Повезло доктору, или ему действительно удалось так

качественно выделить сигнатуры, мы не знаем, но факт остается фактом, — трой обнаружен. Остальные два детекта — это эксплоиты. Первый эксплуатирует уязвимость в формате pdf, о чем недвусмысленно говорит название вируса (Exploit.PDF.2633), а второй покушается на Flash — Exploit.SWF.193. Стоит напомнить, что у нас было два swf-файла, но опасным был признан только один. Так же следует сказать, что эксплоиты обычно не содержат какого-либо вредоносного кода, а служат лишь для загрузки настоящих вирусов. Avira Free Antivirus не обнаружил этих файлов — возможно, потому что понадеялся перехватить более серьезную угрозу (но, как оказалось в итоге, сделать этого не смог). Доктор Веб же поступил более продуманно, попытавшись обезвредить заразу на ранних этапах наступления. Trojan. MulDrop.20121 также является загрузчиком других вирусов.

Итак, Dr.Web обнаружил три угрозы из десяти, что лучше, чем у немецкого антивируса, но все равно недостаточно хорошо для защиты системы. Следующий у нас в списке Kaspersky CRYSTAL. Забегая вперед, скажем, что его результаты нельзя трактовать однозначно, но обо всем по порядку.

После сканирования вирусной директории мы получили сообщение, говорящее нам о трех обнаруженных угрозах. Чтобы рассмотреть получше, что же там нашел каспер, мы решили взглянуть на подробный отчет, но тут нас ждал сюрприз — в табличке с найденными зловредами было всего два файла. Первый — это уже хорошо известный нам DR/Delphi.Gen, но

уже под другим именем (HEUR:Trojan.Win32. Generic). Программка-загрузчик своих старших братьев стабильно детектится нашими антивирусами. Второй угрозой был pdf-эксплоит, обнаруженный Доктором Вебом, но имя по версии Лаборатории Касперского у него немного другое — HEUR:Exploit.Script.Generic. Видно, что в обоих случаях отработала эвристика, но непонятно, почему в отчете нет информации о третьем опасном файле, ведь в первоначальных результатах говорилось о трех угрозах. Мы не можем сказать, был ли детект третьего зверька, а потому засчитываем только два положительных срабатывания эвристики, что дает нам результат 2/10.

Последним идет NOD32. Сканирование все тех же файлов завершилось сообщением об одной найденной угрозе. Самые догадливые уже, наверное, поняли, что это был тот самый exe-загрузчик, который попался трем предыдущим антивирусам. На этот раз его имя было Win32/Injector.FP. К сожалению, мы так и не смогли понять, сработала ли тут сигнатура в базе или эвристический движок, но одно очевидно: результат 1 из 10 — это плохой результат.

ВТОРОЙ ЭТАП ИСПЫТАНИЙ

После того, как мы протестили аверов неизвестными для них троянами, мы оставили их в покое на недельку, а потом обновили базы сигнатур. За неделю любой уважающий себя антивирус должен переловить всех наших зловредов и научиться безжалостно их уничтожать. Ну что же, проверим, так ли это

ХАКЕР 04 /159/ 2012

081

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

MALWAREm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOD32—совсемкакAvira

СкромныерезультатыAviraFreeAntivirus

ПослеобновленияуАвирывсенамноголучше

NOD32обновилсяинашелшестьзловредов

на самом деле. Со свежими базами Авира показала себя ровно в шесть раз лучше, чем на первом этапе, но четыре файла так и не были идентифицированы спустя неделю после их выхода в дикую природу. Также интересно, что Avira обнаружила pdf-эксплоит, который ранее не видела, хотя его коллеги ругались на него в первую очередь. JS, который неделю назад не обнаруживался ни одним авером, на этот раз попал в поле зрения немецкого защитного ПО, назвавшего его HTML/Dlcr. Dawn.C.2. Остальные детекты — это exeфайлы, а swf-эксплоиты были отпущены на свободу. Шесть из десяти — таков результат Avira Free Antivirus со свежими базами.

Теперь очередь Dr.Web. После обновления баз мы не увидели такого прогресса, как у предыдущего антивируса. Всего лишь четыре

из десяти: к списку вредоносов добавился один исполняемый файл, который окрестили как Trojan.SMSSend.1950. Больше ничего подозрительного доктор не обнаружил.

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

чие разоблачающие действия, которые были выполнены в процессе проверки. В итоге Kaspersky Crystal со свежими базами обнаружил все десять зловредов, большинство из которых были уничтожены в первые же секунды, хотя два файла по непонятным нам причинам так и остались лежать на жестком

диске. Такой результат заслуживает уважения, которое, однако, может быстро рассеяться, если мы вспомним результаты первой части тестирования.

ESET NOD32 выступил с результатом, идентичным Авире — шесть из десяти. Правда, набор детектируемых файлов немного отличался

— больше эксплоитов, меньше exe-файлов, — но это не особенно влияет на общую оценку.

А теперь настало время для подведения итогов.

НАГРАЖДЕНИЕ

Мы решили, что называть лучшего в этих испытаниях будет не совсем правильно, поэтому вместо первого, второго и так далее мест мы раздадим кубки за достижения в различных номинациях. Первый кубок — «За самые посредственные результаты» —

получают Avira и ESET (кубок один, потому пусть они сами решают, у кого на полочке он будет стоять). Всего один обнаруженный зловред в первом испытании — это чуть лучше, чем ничего, а шесть троянов после обновления баз можно назвать улучшением ситуации на 600% или «ваша система все равно будет инфицирована, даже если вы регулярно обновляетесь».

Кубок «За лучшие базы сигнатур» получает антивирус Касперского, 10/10 — это действительно впечатляет. Правда, если ты схватишь совсем свеженький вирус (а настоящие киберзлодеи об этом позаботятся), то тебе скорее всего захочется расколотить этот кубок об голову победителя.

Антивирусу Dr.Web достается сразу два кубка: «За самую отчаянную борьбу с неизвестными доселе зловредами» и «За самый отстойный детект с обновленными базами». Слишком медленно добавляете сигнатуры, господа, слишком медленно.

На этом мы прощаемся с тобой и спускаемся обратно в наш подвал-лабораторию, где займемся новыми бесчеловечными опытами и тестами. z

АЧТОЖЕЭТОЗАВИРУСЫТАКИЕ?

Чтобы тестирование было максимально честным, мы собрали представителей самых разных областей зловредного мира. Один из вредоносов «выбрасывает из себя» множество разнообразной

малвари — троянцев, бэкдоров и прочей нечисти. Этим и объясняется удивившее автора расхождение в количестве детектов. Другой вообще представляет собой скрипт на языке VBS, основными назначениями которого являются загрузка и запуск другого троянца. Еще в файлах, участвующих в тесте, присутствовал эксплойт, эксплуатирующий CVE- 201-0611. Скриптовый троян-загрузчик, аналогичный вышеописанному, но созданный на JS, тоже попал в выборку. Не обошлось и без winlocker'а — вредоноса, блокирующего работу системы, а затем

требующего оплаты за разблокировку. Не отказались мы и от мобильного сектора — троянец, отправляющий СМС на платные номера, тоже попал в исследование. Кроме того в тесте участвовала мошенническая программа, относящаяся к категории «платных архивов» (такие программы требуют отправить СМС на премиум-номер якобы за получение доступа к заархивированному файлу). Также был протестирован PDF-эксплойт, вариации которого широко используются в эксплойт-паках для проведения drive-by атак. Наконец, в тесте участвовали троянец, выполняющий множество деструктивных действий, и вредоносный flash-файл, осуществляющий загрузку

и запуск зловреда.

082

ХАКЕР 04 /159/ 2012

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

Preview

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

КОДИНГ

TRUE-КРИПТОВАНИЕ

088Сегодняунассложнаязадача—сделать шифровалкуданных,котораяпозволялабысоздаватьневидимыевсистеме контейнерыииспользоваласобственныйкриптографическийалгоритм.За основумывозьмемизвестнуюпрограмму TrueCrypt,котораяраспространяетсяс открытымиисходниками.Убедившисьв отсутствиивнейзакладок,мысоздадим «доверенный»билдутилиты,вкотором точнобудетвсеок.Недовериекзарубежнымшифрамиздоровыйпатриотизм наталкиваютнамысльреализовать отечественныекриптографическиеалгоритмы,которыевомногомнеуступают зарубежныманалогам.Этимизаймемся, благосделатьэтонесильно-тоисложно.

КОДИНГ UNIXOID

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SHIM:НОВЫЙМЕТОДИНЖЕКТА

 

ЗВЕНЬЯОДНОЙЦЕПИ

 

 

БИТВЫЗЕЛЕНЫХРОБОТОВ

 

084

106

 

111

 

Способыинжектакодаватакуемоепри-

ОднимизглавныхновшествядраLinux

 

СтандартнаяпрошивкадляAndroid-

 

 

ложениедавноизвестны.Однакооста-

 

версии2.6сталаподдержкавиртуальной

 

 

смартфона—уделтетиКлавы,когдаесть

 

 

лисьтакиетехнологиикакShimEngine,

 

файловойсистемыsysfs.Какэтоможет

 

 

мощныеальтернативныеfirmwareвлице

 

 

которыеещемогуттебяудивить.

 

бытьполезнообычнымпользователям?

 

 

CyanogenModиMIUI.

SYN\ACK

 

 

FERRUM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

122

НЕИЗМЕННОВЫСОКАЯДОСТУПНОСТЬ

128

СВЕЖЕЕДЫХАНИЕ

139

СЕТЕВОЙФОРСАЖ

HOWTO:каксоздатьвысокопроизводи-

ВэтомгодукорпорацияMicrosoftпрак-

Редакциярешила,наконец,обновить

 

тельныйиустойчивыйксбоямфайловый

 

тическиполностьюобновитлинейки

 

своистарыеточкидоступа.Беремпять

 

сервиснабазепарочкистареньких

 

своихосновныхпродуктов.Краткопрой-

 

топовыхбеспроводныхмаршрутизато-

 

серверовиSamba.

 

демсяповсемосновнымновинкам2012.

 

ровивыбираемизнихлучший.

ХАКЕР 04/159/2012

083

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

КОДИНГm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

TSS

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

(TSS_TSS@mail.ru)w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SHIM:

новыйметодинжекта

ИСПОЛЬЗОВАНИЕ SHIMENGINEДЛЯ ВНЕДРЕНИЯКОДА ИАВТОЗАГРУЗКИ

Существует множество способов инжекта кода в атакуемое приложение, это и правка импорта сторонней dll, и атака типа dll redirection, и создание удаленного потока, и посылка apc с адресом LoadLibrary. Способов уйма, но все эти способы довольно хорошо известны. Можно ли удивить чемто искушенного читателя? Попробуем.

ЧТО ТАКОЕ SHIM’Ы ?

Shim Engine — это технология для обеспечения совместимости старших версий Windows с младшими, реализованная в различных dll, а также через некоторые калбеки и хаки в PE-загрузчике библиотеки ntdll.dll.

На уровне пользователя посмотреть на режимы совместимости можно на соответствующей вкладке свойств любого исполняемого файла:

some.exe Æ Свойства Æ Совместимость Æ Режим Совместимости Æ Windows95

Å будет использоваться шим совместимости с Windows 95

Что значит «будет использоваться»? Это значит, что из стандартной базы шимов будет извлечена некоторая информация, на основе нее будет загружена стандартная dll для совместимости, в которой есть опять-таки стандартные функции. И именно ими бу-

дут заменены функции в таблице импорта приложения some.exe. То есть механизм обратной совместимости в Windows обеспечивается банальным перехватом API.

Использование шимов позволяет очень многое, от простых вещей вроде добавления флагов в PEB, до виртуализации реестра

иполного изменения поведения Heap Manager’a.

Кпримеру, шим, виртуализирующий реестр, перехватывает практически все функции работы с реестром в ADVAPI32.DLL:

RegConnectRegistryA, RegConnectRegistryW, RegOpenKeyExA,

RegOpenKeyExW, RegQueryValueExW,RegCloseKey,

RegOpenKeyW, RegQueryValueA, RegQueryValueW,

RegCreateKeyA, RegCreateKeyW, RegCreateKeyExA,

RegCreateKeyExW, RegEnumValueA, RegEnumValueW,

RegEnumKeyA, RegEnumKeyW, RegEnumKeyExA, RegEnumKeyExW,

RegQueryInfoKeyA, RegQueryInfoKeyW, RegSetValueExA,

RegSetValueExW, RegDeleteKeyA, RegDeleteKeyW

084

ХАКЕР 04 /159/ 2012

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ДобавляемсвоеприложениевEMET

Далее мы разберемся, как работает Shim Engine и как его можно использовать в наших целях, а цели у нас простые – загрузить свой код в чужой процесс.

ИССЛЕДУЕМ ШИМЫ

Чтобы понаблюдать работу шимов, можно включить режим логирования. Для этого надо установить системную переменную окружения SHIMENG_DEBUG_LEVEL равной 4 и перезагрузиться (перезагрузка требуется при любых изменениях или добавлениях системных переменных окружения).

Если после этого запустить любое приложение (пусть это будет блокнот, переименованный в test.exe) в режиме совместимости с, например, Windows 2000 и включить WinDbg, можно наблюдать любопытные логи. Например, такие:

[INFO] [SeiSetLayerEnvVar] Env var set __COMPAT_LAYER="Win2000"

...

[INFO] [SE_DllLoaded] INIT. loading DLL "AcLayers.DLL".

...

[MSG ] [SeiInit] Shim DLL 0x71660000 "C:\WINDOWS\AppPatch\ AcLayers.DLL" loaded

[MSG ] [SeiInit] Using SHIM "Win2000VersionLie!AcLayers.DLL"

...

[INFO] [SeiInit] GetHookAPIs returns 3 hooks for DLL "C:\ WINDOWS\AppPatch\AcLayers.DLL" SHIM "Win2000VersionLie" [MSG ] [SeiInit] Using SHIM "VirtualRegistry!AcLayers.DLL" [MSG ] [SeiInit] Command line for Shim "VirtualRegistry" :

"WIN2K"

[INFO] [SeiInit] GetHookAPIs returns 27 hooks for DLL "C:\

WINDOWS\AppPatch\AcLayers.DLL" SHIM "VirtualRegistry"

[MSG ] [SeiInit] Using SHIM "DuplicateHandleFix!AcLayers.DLL" [INFO] [SeiInit] GetHookAPIs returns 1 hooks for DLL "C:\

WINDOWS\AppPatch\AcLayers.DLL" SHIM "DuplicateHandleFix"

[INFO] [SE_DllLoaded] INIT. loading DLL "AcGenral.DLL".

...

[MSG ] [SeiInit] Using SHIM "LoadLibraryCWD!AcGenral.DLL"

[INFO] [SeiInit] GetHookAPIs returns 0 hooks for DLL "C:\

WINDOWS\AppPatch\AcGenral.DLL" SHIM "LoadLibraryCWD"

[MSG ] [SeiInit] Using SHIM "Win2kPropagateLayer!AcLayers.DLL"

[INFO] [SeiInit] GetHookAPIs returns 3 hooks for DLL "C:\

WINDOWS\AppPatch\AcLayers.DLL" SHIM "Win2kPropagateLayer"

Из них видно, что загрузился слой Win2000, а также стандартная shim dll – C:\WINDOWS\AppPatch\AcLayers.DLL. После этого произошло извлечение и применение шимов, таких как VirtualRegistry, DuplicateHandleFix и так далее,

а затем уже перехват функций (перехватов много, логи поскипаны).В реестре тем временем сформировалась следующая запись:

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Shim: новый метод инжектаw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Включаемрежимлогированияшимов

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\

CurrentVersion\AppCompatFlags\Layers]

"C:\\Documents and Settings\\Admin\\Рабочий стол\\test.

exe"="WIN2000"

Как видишь, она указывает, что для test.exe должен применяться шим Win2000. Вероятно, это значит, что мы можем устанавливать режим совместимости любому приложению принудительно. Это нам пригодится. Однако для внедрения своего кода мы должны не столько прописать, сколько установить для него свой (!) режим совместимости. То есть придется создать и внедрить в систему свою собственную базу шимов. Решение о том, как это сделать, не лежит на поверхности. В ветке AppCompatFlags больше ничего интересного нет. Поэтому придется копнуть немного глубже.

ИЩЕМ СПОСОБ ВНЕДРЕНИЯ СВОЕЙ БАЗЫ ШИМОВ

Забегая вперед, скажу, что Shim Engine в основном реализован в shimeng.dll и apphelp.dll, а базы шимов лежат в sysmain. sdb и drvmain.sdb (в директории \WINDOWS\AppPatch), однако загрузкой стандартной dll шимов, парсингом базы и перехватом функций занимается непосредственно загрузчик PE-модулей Windows. Тот самый, что сидит в ntdll.dll. Конечно, чтобы лучше понять, как внедрить свою базу, начать исследование лучше всего с момента загрузки Shim Engine, а искать этот момент лучше всего с начала работы системного загрузчика, а системный загрузчик начинает работу с apc-диспетчера.

Но мы не будем закапываться в такие недра и начнем с функции инициализации вышеупомянутого загрузчика PE-файлов:

_LdrpInitializeProcess:

.text:7C921B36

mov

eax, large fs:18h ; TEB

.text:7C921B3C

mov

ebx, [eax+30h] ; PEB

...

 

 

.text:7C921B62

lea

eax, [ebx+1E8h] ; peb->pShimData

.text:7C921B68

mov

ecx, [eax]

...

 

 

.text:7C921B87

mov

[ebp+var_104], ecx

...

 

 

loc_7C921693:

 

 

 

 

 

...

 

 

.text:7C921693

mov

edi, [ebp+var_104]

.text:7C921699

xor

esi, esi

.text:7C92169B

cmp

edi, esi

.text:7C92169D

jz

loc_7C923CD0

; если первый ULONG в peb->pShimData == 0,

; то прыгаем (в случае включенного шима

; совместимости прыжка не происходит)

ХАКЕР 04 /159/ 2012

085

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

КОДИНГm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЛогишимоввWinDbg

 

 

.text:7C9216A3

push

edi

.text:7C9216A4

push

[ebp+var_D8]

.text:7C9216AA

mov

[ebx+1ECh], esi

.text:7C9216B0

push

edi

.text:7C9216B1

call

_LdrpLoadShimEngine@12

;а вот и момент загрузки движка шимов

ВLdrpLoadShimEngine первым параметром передается shimeng.dll.

LdrpLoadShimEngine грузит эту dll, получает адреса функций из нее (LdrpGetShimEngineInterface), загружает базы шимов (SdbInitDatabase), распаковывает их (SdbUnpackAppCompatData)

иприменяет. Именно отсюда мы узнаем, что движок совместимости живет в shimeng.dll. Давай поищем в этой dll строки, содержащие ключи реестра, может быть найдем какие-нибудь недокументированные ключи, которые укажут нам, как внедрить в систему свою базу шимов? Проще всего строки искать скриптом. Я предпочитаю питон(IdaPython):

import idaapi import idautils import idc

def EnumStrings():

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

s = idautils.Strings( False )

s.setup( strtypes = Strings.STR_UNICODE | Strings.STR_C )

for i, v in enumerate( s ):

if v is None:

print( "Failed on %d" % i )

else:

print( "%x => %s" % ( v.ea, str( v ) ) )

print "Script Started..." EnumStrings()

print "Script Ended..."

idautils.Strings(False) — в конструкторе по умолчанию стоит True, но так как нас интересуют помимо обычных строк еще и юникодные, то ставим default_setup = False и настраиваем setup сами. Выполняем скрипт на загруженной в IDA библиотеке, просматриваем выведенные строки и почти в самом конце находим интересный ключ:

5d0749b0 -> \Registry\Machine\Software\Microsoft\Windows

NT\CurrentVersion\AppCompatFlags\InstalledSDB

По xref’у добираемся до функции SdbResolveDatabase, которая открывает данный ключ и смотрит значения DatabasePath

иDatabaseType. Далее определяем, что данный ключ предназначен (о чудо!) для пользовательских баз шимов, которые должны быть представлены в виде GUID’ов (как в реестре, так и в самой базе).

Таким образом, ключ вида {GUID} и два значения (DatabasePath

иDatabaseType) — это все что нам нужно для прописывания базы для конкретного приложения.

СОЗДАНИЕ СОБСТВЕННОЙ БАЗЫ ШИМОВ

Куда прописать базу, мы определили, но вопрос о том, как формировать саму базу шимов, остался открытым. А ведь это реальная проблема, формат базы неизвестен, его придется восстанавливать вручную, а это очень большая работа.

Может быть, есть какой-то обходной путь? Он действительно есть, и заключается в использовании уже готовой базы! Все что нам нужно - найти приложение, которое использует свою базу, и подменить в ней некоторые данные на наши. Приложение, которое нашел я, называется EMET (goo.gl/9Dn5L). Качаем, запускаем Process Monitor от Руссиновича, чтобы фиксировать все действия программы, устанавливаем EMET, запускаем C:\ Program Files\EMET\EMET_GUI.exe, выбираем Configure Apps, добавляем наш test.exe, закрываем EMET. В логах монитора видим, что база шимов EMET’а установилась в C:\WINDOWS\ AppPatch\Custom\{f8c4cc07-6dc4-418f-b72b-304fcdb64052}. sdb, а dll скопировалась в C:\WINDOWS\AppPatch\EMET.dll. Также из логов монитора получаем информацию об изменениях в реестре. Был создан ключ SOFTWARE\\Microsoft\\ Windows NT\\CurrentVersion\\AppCompatFlags\\Custom\\test. exe с нашим тестовым ехе, а также ключ, найденный нами ранее — SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ AppCompatFlags\\InstalledSDB\\{f8c4cc07-6dc4-418f-b72b- 304fcdb64052}.

Как видишь, для принудительного указания шима использовалось не стандартное место Layers, а Custom. Учтем. Теперь открываем базу любым hex-редактором, находим emet.dll и исправляем на test.dll. Далее берем test.dll и закидываем в папку C:\WINDOWS\AppPatch\. Запускаем наш test.exe и пробуем убедиться, что test.dll проинжектировалась в test.exe. Для этого можно воспользоваться утилитой vmmap (goo.gl/SsSQn) от того же Руссиновича. Открываем test.exe с помощью vmmap и видим в его адресном пространстве нашу dll, а значит — mission complete!

086

ХАКЕР 04 /159/ 2012

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

АВТОМАТИЗИРУЕМ ПРОЦЕСС

Теперь напишем программу, которая будет все автоматически делать за нас, то есть записывать в реестр базу шимов и копировать саму базу и dll к ней в системную папку (все проверки поскипаны, полный вариант см. на диске):

#include <windows.h> #include <iostream>

#define GUID L"{f8c4cc07-6dc4-418f-b72b-304fcdb64052}" #define SHIM_REGKEY L"SOFTWARE\\Microsoft\\Windows NT\\ CurrentVersion\\AppCompatFlags "

BOOL RegisterShimDll()

{

HKEY key;

BOOL funcResult = FALSE;

wchar_t dbPath[] = L"C:\\Windows\\AppPatch\\Custom\\"

GUID L".sdb";

DWORD dbType = 0x10000;

DWORD64 sdb = 0x1cc8828b2208e82;

//создаем подраздел Custom в AppCompatFlags RegCreateKeyEx(HKEY_LOCAL_MACHINE,

SHIM_REGKEY L"\\Custom", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &key, NULL);

RegCloseKey(key);

//создаем ключ

RegCreateKeyEx(HKEY_LOCAL_MACHINE,

SHIM_REGKEY L"\\Custom\\test.exe",

0, NULL, REG_OPTION_NON_VOLATILE,

KEY_WRITE, NULL, &key, NULL);

RegSetValueEx(key, GUID L".sdb", 0,

REG_QWORD, (PBYTE)&sdb, sizeof(DWORD64));

RegCloseKey(key);

RegCreateKeyEx(HKEY_LOCAL_MACHINE,

SHIM_REGKEY L"\\InstalledSDB",

0, NULL, _OPTION_NON_VOLATILE, KEY_WRITE, NULL,

&key, NULL);

RegCloseKey(key);

RegCreateKeyEx(HKEY_LOCAL_MACHINE,

SHIM_REGKEY L"\\InstalledSDB\\" GUID,

0, NULL, REG_OPTION_NON_VOLATILE,

ФУНКЦИИSHIMENG.DLL

У shimeng.dll есть восемь экспортируемых функций: SE_DllLoaded — вызывается лоадером при загрузке dll; SE_DllUnloaded — вызывается лоадером при выгрузке dll; SE_DynamicShim — неизвестно кем вызывается; SE_GetProcAddress — вызывается лоадером при GetProcAddress; SE_InstallAfterInit — вызывается лоадером после инициализации движка шимов;

SE_InstallBeforeInit — вызывается лоадером сразу после того, как он получит указатели на данные функции;

SE_IsShimDll — вызывается кодом из этой же dll; SE_ProcessDying — вызывается при уничтожении процесса, то есть чуть раньше того момента, когда все точки входа dll’ок процесса вызываются с причиной DLL_PROCESS_DETACH.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Shim: новый метод инжектаw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dllуспешновнедрена

KEY_WRITE, NULL, &key, NULL);

RegSetValueEx(key, L"DatabasePath", 0,

REG_SZ, (BYTE*)dbPath, sizeof(dbPath));

RegSetValueEx(key, L"DatabaseType", 0, REG_DWORD,

(PBYTE)&dbType, sizeof(DWORD));

RegCloseKey(key);

return TRUE;

}

BOOL CopyShimFiles()

{

CreateDirectory(L"C:\\Windows\\AppPatch\\Custom", NULL);

CopyFile( GUID L".sdb",

L"C:\\Windows\\AppPatch\\Custom\\" GUID L".sdb",

TRUE );

CopyFile( L"test.dll",

L"C:\\Windows\\AppPatch\\test.dll", TRUE );

return TRUE;

}

int main()

{

CopyShimFiles();

RegisterShimDll();

std::cout << "Shim inject complete... " << std::endl;

std::cout << "Run test.exe and use vmmap.exe to see

test.dll in AP test.exe" << std::endl;

return 0;

}

ЗАКЛЮЧЕНИЕ

Описать в одной статье все преимущества столь мощной технологии как shim engine не получится, но даже из этой статьи можно почерпнуть многое.

Во-первых, шимы дают возможность инжектироваться в любое приложение средствами самой системы.

Во-вторых, прописав шим, например, для explorer.exe, этот факт может быть использован и как метод автозагрузки. А в-третьих, шимы дают возможность еще и перехватывать

функции атакуемого приложения, однако это требует детального изучения формата базы. z

ХАКЕР 04 /159/ 2012

087

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

F

 

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

КОДИНГm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

.c

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

JohnnyCatch(johnny.catch@gmail.com)w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

TRUE-

криптование

ДОБАВЛЯЕМПОДДЕРЖКУ СВОИХАЛГОРИТМОВ

ВTRUECRYPT

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

 

 

 

Н

а сегодняшний день TrueCrypt является одной из самых

 

 

 

популярных программ для создания шифрованных файлов-

 

 

 

 

контейнеров, шифрованных носителей информации, а также

 

 

 

 

 

 

 

для шифрования операционных систем. При использовании средств

 

 

 

подобного рода иногда возникает потребность удостовериться в от-

 

 

 

сутствии в коде программы и алгоритмов шифрования различных

 

 

 

закладок, которые могут скрытно сохранять информацию о ключах.

 

 

 

Убедившись в обратном, возникает желание сделать собственными

 

 

 

руками «доверенный» билд программы, в котором точно будет все ок.

 

 

 

Также недоверие к зарубежным шифрам и здоровый патриотизм по-

 

 

 

рой наталкивают на мысль добавить в данную программу отечествен-

 

 

 

ные криптографические алгоритмы, которые во многом не уступают

 

 

 

зарубежным аналогам. Реализовать и то, и другое позволяет наличие

 

 

 

открытых исходных текстов TrueCrypt.

 

 

 

 

 

 

 

ПОДГОТОВКА К РАБОТЕ

 

 

 

 

Прежде чем приступать к реализации нового алгоритма шифро-

 

 

 

вания, подготовим все, что нужно для сборки. В первую очередь

 

 

 

нам понадобятся исходники программы, которые можно скачать

 

 

 

с официального сайта разработчика truecrypt.org (я использовал

 

 

 

исходники версии 7.0a). В качестве среды разработки будем ис-

ГлавноеокнопрограммыTrueCrypt

пользовать MS Visual Studio 2010 (несмотря на то, что разработчики

088

ХАКЕР 04 /159/ 2012

Соседние файлы в папке журнал хакер