дизассемблирование вирусов

Тема в разделе "WASM.RESEARCH", создана пользователем ht1515, 7 янв 2010.

  1. ht1515

    ht1515 New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    17
    ммм...
    У меня такой вопрос, вернее несколько.
    Интересно покопать в вирусах захотел .
    сразу вопросы.
    4) всякие вирусы,трояны и тд например на супер известном сайте vx упакованы UPX?
    quick_unpack их можно распаковать?

    1)Программа quick_unpack как я понимаю стала очень популярной.
    а)Есть ссылка с описанием как ей распаковывать?
    б)ОЕP просит при распаковке. Я сначало 0 пишу, потом она начинает процесс, пишет что size incorrect ,что то такое, но при том она выводит EP , в TEXTEDIT c OEP пишу тот EP и вроде распаковывает. Так правильно?

    2) После рапаковки, создается фаил. Если открыть его потом через ОллиДБВ, то ОЛЛИ напишит месейдж BAD or Unknown format of 32 -bit executable file.
    А иной раз просто вылетет.

    3) Олли как я понимаю грузит в память exe исследуемый, то есть в данном случае вирус(ну или траяна и тд). ? Как то безопасно исследовать можно?


    Для безопасного исследования использую vbox - > xp с отключенной сеткой.
    Информация о вирусняках нужна чисто ради исследовательского интереса.
    Никому портить жизнь, копировать вирусы и тд не собираюсь )))
     
  2. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    А его не надо открывать OllyDbg'ом, он еще не готов. Хотя бы нужно восстановить импорт или вместо стандартного вставить bound import, чтобы программа запускалась хотя бы на твоей машине. Если программа не запускается после окончательной распраковки, значит во время распаковки повредили PE-формат.
    Создаем ограниченную учетную запись, закрываем ко всем дискам доступ на запись. Разрешить запись только во временные директории (нек-е гадости создают там bat-файлы). Иногда пользуемся Filemon или Regmon, если программа гадость работает только с админовыми правами и получает отказ в доступе при обращении к реестру или файлу.

    Я вообще не восстанавливаю файл после распаковки, а распаковываю заново (лучше за 10 минут добежать чем за час долететь). Или написать скрипт, к-й все это сделает еще раз. Полезно будет использовать API-шпионы, но только с ограниченными правами. Н-р, у меня Kerberos пишет в HKLM, от этого его приходится запускать под админом, поэтому от него придется отказаться.
    Хотя по опыту скажу - нудное это дело. Все упаковано UPX и интересного почти нет. Изредка встретишь интересную вещь или шифрование. Я, например, пока никак не могу понять алгоритм расшифровки названий функций в cfixer. Пришлось трассировать, но алгоритм так и не работает.
     
  3. ht1515

    ht1515 New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    17
    Как это сделать?

    Ну фаил после распаковки не повредился, больше того он активизировался(АВ переместил в карантин)
     
  4. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    А ты ведь распаковываешь программой, так что в итоге должна получиться рабочая программа? Если так, то скорее всего ошибка в программе-распаковщике или сама программа такая хитрая.
    Переводится "Плохой или Неизвестный формат 32-разрядного исполняемого файла". Возможно исчезла PE-сигнатура, по к-й система распознает файл исполняемым.

    Если ты распаковываешь файл вручную, то дамп для запуска не готов. Как восстановить импорт - тут одной фразой не скажешь. Есть готовые программы (ImpRec, кажется), к-е занимаются восстановлением импорта. Для ручного восстановления нужно знать место, где находятся адреса функций и названия функций. На сайте есть статьи по восстановлению импорта.

    Возможно, антивирус закрыл доступ для файла и поэтому он не запускается. На виртуальной машине "хранилище для гадостей" не нужно ставить антивирусы. А если и ставить, то чтобы ситуация не вышла из-под контроля, но тогда надо знать как эти антивирусы отключить на время исследования. Я в свое время (когда у меня не было интернета и Virustotal), я создал виртуальную машину и поставил туда 3 антивируса, чтобы использовать ее как Вирустотал (чтобы проверять файлы перед установкой).
     
  5. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Почему 0 ?
    OEP можешь поискать даже через PEiD -> Generic OEP finder. Правдо зависит от того что за UPX.

    Подробные мануалы и обучалки лучше всего найти на кряклабе. Там их море. Распаковывать методом тыка... не есть дзен :)
     
  6. ht1515

    ht1515 New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    17
    вот так делаю. ОЕП нашел с помощью PEiD.
    Но что то все равно он не распаковал.
     
  7. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Ctrl+c; Ctrl+v
    http://www.google.com.ua/search?rls=ru&q=upx+%2Bsite:http://cracklab.ru/
     
  8. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    ht1515

    Правильно распаковывать вручную. Твоя задача - брякнуться на OEP (или дошагать до нее), сделать дамп, исправить импорт. Все подробно расписано в статьях "Об упаковщиках в последний раз" volodya сотоварищи.

    Олли сильно удивился твоему файлу. При правильной распаковке таких проблем не будет. Или, на худой конец, сделай Validate PE на свой файл из, к примеру, PE Tools (не думаю, что поможет).

    Запускает он его под отладкой. И, если из-под отладки убежит, могут быть проблемы. Я, вспоминается, один раз так пинча упустил =) На рабочей машинке =) Потом долго пароли восстанавливал, а у меня там и хостинг был, и вебманя....

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

    "Я запаковал файл rar'ом, могу ли я его распаковать 7zip-ом?".
    А почему бы не использовать, собственно, upx с параметром "-d" для распаковки? Религия не позволяет?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Весьма многое накрыто приватными пакерами. Обычно смысла нет в распаковке(если не вм.). Какая разница что модуль загружен в память с диска, или распакован в памяти. Всё упирается в поиск начала запакованного кода(если он сам не является пакером). В 8 из 10 модулей это находится простым остановом на апи и бактрейсом.
     
  10. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Несколько непонятная тема, зачем снимать upx через quickunpack, если сам upx одновременно является распаковщиком?

    Оеп на глаз в отладчике легко определяется, подавляющее большинство пакеров/крипторов на ОЕП восстанавливают стэк, для XP 90 % приложений по умолчанию имеют верхушку стэка равную 0012FFC4h

    Код (Text):
    1. 0012FFC4   7C816D4F  RETURN to kernel32.7C816D4F
    Я в основном так и определяю ОЕП.
     
  11. ht1515

    ht1515 New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2010
    Сообщения:
    17
    я извиняюсь за глупый вопрос. Но как можно узнать упакован ли фаил ? И если да, то чем конкретно(может проги есть для определения укаповщика и его версии)?
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    По сигнатурам упаковщика, в общем случае по энтропии. См статью http://www.wasm.ru/article.php?article=packlast01 и http://www.wasm.ru/article.php?article=packers2

    Да а вот и не правда. От версии к версии это меняется, к тому же можно искуственно занять этот адрес, разместив там базу самого приложения или одной из подключаемых библиотек. Так же это зависит и от полей OPTIONAL_HEADER (StackReserve, StackCommit). Вообщем, как повезет.
     
  13. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Естественно, но это будет уже частный случай, это считается "дурным тоном", потому-что не гарантирует 100 % работоспособности программ после отработки стаба криптора/пакера. Нормальный пакер должен после себя прибраться и привести все к первоначальному виду. Например: в одной из версий нашумевшего трояна zeus декриптор кода был привязан в регистру eax, который имеет начальное состояние = 0, так вот именно из-за этого многие гавнокрипторы не могли его корректно криптовать, потомучто после себя не прибирались и eax был не равен 0.

    В общем смотрим чему равен esp на ep, тому-же он должен быть равен и на oep.
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Flint_ta
    Верно, хардварный брейк на стек хорошее средство.
     
  15. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    hardware бряк на начало секции кода или трассировка до попадания в первую секцию - распаковка от любого простого пакера.
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    AndreyMust19
    *до простого
     
  17. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Зачем тебе вообще снимать упаковщик?
    Это нужно делать только для создания сигнатуры и для выделения семейства вирусов(детект компилера, пакера, языка и бла бла бла), а не для исследования.

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

    П.С. Внедрения в системные файлы без брюнетки не обойтись... ))
     
  18. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    П.С. П.С.
    В своих(а может и чужих) Крис со esp немного береборщил. esp может возвращать исходное значения очень, очень много раз. Хотя для простых пакеров, наверное и подойдет....
     
  19. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Эмм.. Я не Крис )

    Дык при останове нужно не тупо дампить, а осмотрется ) если похоже на типичный стаб компиляторов значит 100% OEP. Все приходит с опытом.
     
  20. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    Flint_ta, согласен! Но бывают исключения, я думаю понятно какие...

    П.С. Только для новичка немного сложновато... ))