Новые приключения Olly’киКрис Касперски Хакер, номер #114, стр. 024 Обзор неофициальных сборок отладчика OllyDbgOllyDbg стал стандартным user-land отладчиком, взятым на вооружение хакерами. И они тут же захотели его улучшить. Появилось множество нестандартных сборок: одни фиксят ошибки Ольги, другие расширяют функционал, третьи – скрывают ее от протекторов. Количество модов перевалило за три десятка и, чтобы помочь разобраться в этом многообразии, Крис предлагает неформальный обзор. Откуда берутся модификацииОтладчик Olly Debugger представляет собой закрытый программный продукт, распространяемый бесплатно, но без исходных текстов и права модификации двоичных файлов. Однако возможность подключения плагинов, использования скриптов и ухищрения умельцев, которые, несмотря на запреты, все-таки дизассемблируют и модифицируют код любимого отладчика, привели к появлению огромного числа модифицикаций. На официальном сайте www.ollydbg.de в настоящий момент доступна для скачивания устаревшая версия 1.08b, самая популярная – 1.10 и недоделанная 2.xx alpha, находящая в активной разработке. Последняя версия серьезно уступает по функционалу предыдущей, зато ее «движок» полностью переписан, что в перспективе сулит богатые возможности. Подавляющее большинство модов базируются именно на 1.10 версии. Некоторые (очень немногие) – на 1.08 и еще меньше – на 2.xx. В самом деле, какой смысл править бинарный файл, если с выходом очередной альфы (а выходят они чуть ли не каждую неделю), процесс создания мода необходимо начинать заново – переносить изменения из одной версии в другую приходится вручную, автоматика отдыхает. Эх, вот были бы исходные тексты… Но, увы! Их нет и, по всей видимости, не будет. Плагины и скрипты, написанные для 1.10, исправно работают в большинстве модов, однако без каких бы то ни было гарантий, особенно если создатели мода захачили его не по-детски. Хотя в таких случаях они, как правило, тестируют популярные плагины на совместимость, при необходимости внося изменения и закидывая пофиксенный плагин в дистрибутив, распространяемый вместе с модом. А вот при выходе следующей версии мода в дистрибутиве обычно оказывается лишь сам исполняемый файл. Подобный дистрибутив имеет подозрительно малый размер (метр и менее). Поэтому процедура установки выглядит так: находим базовую версию мода (занимающую самый большой размер), качаем, распаковываем архив, ставим. Находим самую последнюю версию, распаковываем в тот же самый каталог. И наслаждаемся. Иногда, правда, приходится скачивать все промежуточные версии, поскольку в них исправлены те или иные файлы. Количество одновременно используемых модов ничем не ограничено, просто ставим их в разные каталоги и все. Исключение составляют Just-In-Time отладчики, вызываемые системой при крахе приложения. JIT-отладчик может быть только один и тут уже приходится выбирать, какой из модов (или оригинальную Ольгу) назначать на эту должность. Каталог с плагинами (за исключением тех, что «заточены» под конкретный мод) также может быть единым для всех модов – экономия дискового пространства налицо! Где искать моды? Хороший вопрос… Обычно они выкладываются на файлообменники типа Рапиды, а на хакерские форумы забрасываются ссылки, действующие в течение некоторого времени, а затем тихо кончающие по причине удаления файла. Как говорится: кто не успел – тот опоздал, и тогда приходится искать моды на сайтах, посвященных информационной безопасности. Например, довольно внушительная коллекция находится на сервере: http://team-x.ru/guru-exe/index.php?path=Tools%2FDebuggers%2FOllyDbg/. Поскольку создатели модов обычно не утруждают себя описаниями, что же именно было модифицировано и чем мод отличается от оригинальной Ольги, приходится качать много всякого барахла, оставляя на компьютере, в среднем, один мод из десяти. Чтобы тебе не пришлось повторять эту операцию, мыщъх решил описать самые крутые моды, которые использует и рекомендует. Immunity DebuggerИзвестный мод одноименной фирмы, специализирующейся на безопасности и скрестившей Ольгу 1.10 с Питоном – интерпретируемым языком, на котором очень легко и быстро писать скрипты. Конечно, писать их можно прямо в Ольге, но это не слишком удобно, все приходится делать вручную и решать типовые задачи (типа поиска в памяти), которые уже давно решены. В Immunity Debugger входит множество библиотек, написанных на Питоне и заточенных под хакерские нужды. Библиотеки вызываются из Питоновых программ, среди которых значится и searchcrypt.py – отличное средство идентификации следующих криптографических алгоритмов: AES, BLOWFISH, CAMELLIA, CAST, MD5, RC2, RC5, RIPEMD160, SHA1, SHA256, SHA512. Immunity Debugger используют многие специалисты по безопасности, выкладывающие proof-of-concept expolit'ы, написанные на Питоне и предназначенные для работы исключительно в среде данного отладчика. И хотя хакер с головой разберется в алгоритме работы exploit'а и без Immunity Debugger'а, портируя exploit на любой другой язык, рано или поздно отладчик оказывается на компьютере, зачастую становясь основным инструментом, вытесняющим Ольгу. Скачать его (после предварительной регистрации) можно прямо с официального сайта: www.immunitysec.com/products-immdbg.shtml. YDbgПопулярный и очень мощный мод, основанный на Ольге 1.10 и собравший в своем дистрибутиве огромное количество плагинов, скриптов, а также кучу других полезных инструментов. В результате образовался монстр размером в целых 27 Мегабайт, но несомненно стоящий времени/трафика, потраченного на скачку. В отличие от Immunity Debugger'а, ориентированного на специалистов по безопасности, YDbg писался хакерами и для хакеров, ломающих защиты с протекторами (те активно сопротивляются такому положению дел и напичканы анти-отладочными приемами, распознающими присутствие Ольги по главному окну с ее именем и пунктам меню). Поэтому первое, что бросается в глаза при запуске YDbg (исполняемый файл которого переименован из OLLYDBG.EXE в SND.exe), это «покореженные» пункты меню. В частности, «Memory» превратилось в «M3m0ry», «SEH chain» в «S3H chain», «Breakpoints» в «Br3akp01nts» и т. д. Словом, все «хакерские» пункты изменены – попробуй их найти (естественно, в новых версиях протекторов наверняка появится детекция YDbg, но пока он успешно скрывается от кучи защит, палящих Ольгу). Вид кнопочек на панели инструментов изменен на XP-стиль – скорее, вопрос вкуса, чем насущная необходимость. В состав дистрибутива YDbg входит 36 популярных плагинов (и не нужно теперь рыскать по Сети в их поисках). Среди них затесался настоящий бриллиант – IDA Sigs, название которого говорит само за себя. Да-да! Это плагин, поддерживающий IDA-сигнатуры и отображающий их в виде комментариев к вызываемым функциям в Ольге или в YDbg. Очень удобно! Конечно, при наличии IDA-Pro можно загрузить исследуемую программу в нее, сохранить все распознанные имена в map, подключаемый к Ольге тоже не без помощи плагинов. Но IDA-Pro есть далеко не у всех, да и муторно совершать столько лишних телодвижений. Если файл упакован, то в Ольге/YDbg мы просто распаковываем его специальным скриптом или аттачимся к уже запущенному процессу (IDA-Pro в этом случае отдыхает). Сигнатуры (выдернутые из IDA-Pro) также входят в состав дистрибутива в комплекте с сигнатурами от различных защит (например, FLEXlm), которых в IDA-Pro нет. Единственный недостаток – в плагине отсутствует автоматический распознаватель сигнатур и потому версию компилятора приходится определять либо с помощью PEiD, либо последовательно перебирая различные сигнатурные базы одну за другой, пока, наконец, не найдется та, что подходит. Не такая уж большая проблема, но все-таки… Другой полезный плагин – red-hawk («красный ястреб») представляет собой панельку инструментов, позволяющую, в частности, одним движением мыши установить точки останова на нужные функции (например, в Visual Basic'е это что-то типа __vbaStrCmp или __vbaStrCopy, используемые для сравнения и копирования строк, соответственно). Начинающие хакеры просто визжат от восторга, поскольку красный ястреб фактически является учебником по взлому, а так попробуй догадаться, что нужно делать! К сожалению, три плагина не работают и подлежат удалению. PuntosMagicos.dll при запуске YDbg выбрасывает исключение, ведущее к краху. SND Script.dll вызывает динамическую библиотеку MSVCP80.dll, отсутствующую в дистрибутиве моей любимой W2K, а APIHLP.dll зовет MFC71.DLL, которой у меня также нет. Вообще-то, правила хорошего тона предписывают класть такие вещи в дистрибутив, чтобы не напрягать пользователя поисками (а искать в первую очередь нужно на сайте Microsoft, так как они относятся к свободно распространяемым компонентам). Каталог \SCRIPT содержит 637 скриптов, главным образом предназначенных для снятия различных протекторов/упаковщиков исполняемых файлов и автоматизации всяких рутинных дел. Впечатляющая коллекция! И неплохое пособие для начинающих на тему «как нужно писать скрипты». Вдобавок имеется парочка специализированных редакторов, предназначенных для разработки скриптов (один из которых требует .NET). Опять-таки, вопрос вкуса. Мыщъх предпочитает писать скрипты в FAR'е с Colorer'ом, но своих предпочтений никому не навязывает. Пусть каждый решает сам. Каталог \BIN насчитывает свыше сотни мелких утилит, преимущественно надерганных из MS SDK, хотя немало здесь дамперов памяти и других хакерских программ, собранных в одном месте и в совокупности занимающих 11 метров в неупакованном виде. На этом достоинства YDbg заканчиваются. В принципе, это не столько мод, сколько коллекция плагинов, скриптов и сигнатур. У кого быстрый модем и дешевый интернет – почему бы и не скачать? http://team-x.ru/guru-exe/Tools/Debuggers/OllyDbg/OllyDbg%20v1.10%20YDbg%20Beta.7z. Слово «beta» в адресе навевает не очень-то приятные ассоциации (щас все упадет, заглючит), однако, у меня все работает и… пока полет нормальный. Моды интерфейсаАнглийский, конечно, «обще-хакерский международный» и без него много не нахачишь. Но особенности национальных реалий таковы, что толпа народу с инглишем исключительно на «вы». Русификация процветает. Лично мыщъх встречает локализованные программы в штыки. В частности, на диске, прилагаемом к материнской плате, что мне «посчастливилось» купить, лежала локализованная версия Nero Express, в которой «громкость» («volume») переведена как «том». Пример яркий, но не единственный. Локализация – своеобразная интеллектуальная игра из разряда «как, черт побери, это звучало в оригинале?!». Мануалы в своей массе используют оригинальные программы, что сильно напрягает владельцев русифицированных версий при их чтении. Попробуй с ходу разберись, в какой пункт нырять, особенно если отсутствует скрин. Ладно, все это лирика. Нужен локализованный мод Ольги, берем, качаем: http://team-x.ru/guru-exe/Tools/Debuggers/OllyDbg/OllyDbg%20v1.10%20Russian.rar Мыщъх любит сыр и консоль, а вот XP не переваривает. Органически. Клава рулит. Тыкать курсом в иноки – это вообще не по-хакерски. Впрочем, как уже говорилось, о вкусах не спорят и если кто-то сидит под XP (а сидят под ней многие) и хочет, чтобы Ольга была такой же красивой с пурпурными пуговицами, то… почему бы и нет? Можно использовать либо YDbg (он как раз в таком стиле и сделан), либо более легковесный мод, не делающий ничего, кроме смены стиля и потому в упакованном виде весящий меньше, чем мегабайт: http://team-x.ru/guru-exe/Tools/Debuggers/OllyDbg/OllyDbg%20v1.10%20XP.rar Другие сборкиМы рассмотрели только четыре мода из трех десятков выложенных на team-x. Что делают остальные? Readme, традиционно приложенный к архиву, позаимствован у оригинала и скопирован без изменений. Далее, file_id.diz (в тех редких случаях, когда он есть) обычно просто говорит, что это мод Ольги, но не конкретизирует, что именно модифицировано. Поэтому имя архива – практически единственная информация, имеющаяся в нашем распоряжении. Возьмем, например, «OllyDbg v1.10 ExeCryptor» (http://team-x.ru/guru-exe/Tools/Debuggers/OllyDbg/OllyDbg%20v1.10%20ExeCryptor.rar). Как нетрудно догадаться, он предназначен для сокрытия Ольги от протектора ExeCryptor, а распаковав архив, мы обнаружим набор плагинов, скриптов и прочих полезностей, существенно упрощающих взлом запротекченных программ. Или, скажем, «OllyDbg v1.0 9in1 for Themida» (http://team-x.ru/guru-exe/Tools/Debuggers/OllyDbg/OllyDbg%20v1.0%209in1%20for%20Themida.rar) – мод, скрывающий Ольгу от Фемиды и состоящий из одного-единственного исполняемого файла, который предлагается скопировать в каталог с оригинальной Ольгой. К сожалению, огромное количество модов носят бессмысленнее, ничего не говорящие имена. Тут уместно вспомнить поговорку: как вы яхту назовете, так она и поплывет. Или не поплывет. То есть останется незамеченной хакерской общественностью. Многие создатели модов ограничиваются тем, что пакуют Ольгу Фемидой или другим крутым протектором, препятствующим доступ к адресному пространству процесса-отладчика со стороны отлаживаемых приложений и тем самым предотвращающим обнаружение. Ну, упаковать Ольгу – особого ума не надо. Это можно сделать и самому, параллельно изменив заголовок главного окна и пункты меню в hex-редакторе. Моды размером меньше пары мегабайт лучше не качать (если мы заранее не уверены, что они нам нужны) – ничего интересного там не будет. Чем больше размер – тем больше накидано в него плагинов, скриптов и тулз, возможно, даже не имеющих к моду никакого отношения. Но как ни парадоксально, самые большие и тщательно отобранные коллекции плагинов/скриптов содержатся именно в модах. Баг в Immunity Debugger'еImmunity Debugger содержит один мелкий, но очень неприятный баг. Если удалить интерпретатор Python с компьютера (или же перенести его в другой каталог) без выполнения процедуры деинсталяции, то Immunity Debugger (по оставшимся записям в реестре) будет считать, что Питон у нас есть и… грохаться при запуске, выдавая одну критическую ошибку за другой, на поиск источника которых можно угробить кучу времени. Переустановка Immunity Debugger'а не помогает, так как инсталлятор смотрит в реестр и видит, что Питон у нас есть, а потому и не ставит его, заставляя Immunity Debugger снова грохаться при первом же запуске. Проблема решается удалением Питона через Панель Управления/Установка и Удаление Программ с последующей переустановкой Immunity Debugger'а. Хитрый поиск глючного плагинаПри последовательной установке плагинов никаких проблем не возникает. Если свежеустановленный плагин приводит к краху Ольги (или мода), то просто удаляем его и все! Однако при пакетной установке плагинов или запуске мода с кучей предустановленных плагинов коварная Ольга не сообщает имя плагина, который она в данный момент грузит. Остается только гадать, кто из них гадит. Классическое решение проблемы – последовательное перемещение плагинов в другой каталог. Как только исключение исчезло – последний перемещенный плагин и есть виновник. Но при большом количестве плагинов операция поиска отнимает слишком много времени и возникает желание ее оптимизировать. ОК, перемещаем половину плагинов и смотрим результат. Если исключение исчезло, значит, глючный плагин находится в первой половине, если же нет – то во второй. Найденную половину вновь делим на две части и повторяем эту операцию до тех пор, пока делить будет нечего. Но и это не предел! Поскольку, плагины грузятся последовательно, а исключение, как правило, возникает в процедуре их инициализации, то в большинстве случаев достаточно удалить/переместить последний загруженный плагин. Операционная система автоматически обновляет дату/время последнего обращения к файлу, просмотреть которую в FAR'е можно по <CTRL-A>. Отсортировать плагины в порядке убывания/возрастания времени последнего обращения – по <CTRL-F9>. Просто скользим по списку файлов вниз (или же распахиваем панель на весь экран в детализированном режиме) и видим, что сначала идут плагины с одинаковым временем последнего обращения, а потом наступает «разрыв», равный промежутку между двумя последними запусками Ольги. Тот плагин, что стоит на границе разрыва – с высокой степенью вероятности и окажется сбойным. Удаляем/перемещаем его и перезапускаем Ольгу/мод. Впрочем, подобная техника срабатывает далеко не всегда. Случается конфликт нескольких плагинов сразу (иногда трех и более). Некоторые плагины, загружаемые первыми, не вызывают исключения, зато «обламывают» кучу других аддонов, грузящихся после. В результате мы удаляем большое количество ни в чем не повинных плагинов, лишаясь значительной части функционала. В общем, плагины – дело тонкое. И подбирать их нужно аккуратно, как бриллианты в корону, чего, к сожалению, разработчики большинства модов не делают, даже не утруждая себя тестированием образовавшейся коллекции. DVDЛучшие модификации OllyDbg, а также оригинальный дистрибутив отладчика ты найдешь на нашем диске. WARNINGМатериал представлен исключительно в целях ознакомления. В случае применения в незаконных целях редакция и автор статьи ответственности не несут. Не делай глупостей! |