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

Подготовка рабочего окружения

Все эксперименты по анализу малвари мы будем выполнять в нашей лаборатории, это заранее подготовленная виртуальная среда с предустановленной Windows XP. Да-да, старушка ХР нам очень даже подойдет, поскольку некоторые изучаемые образцы могут вызывать ошибки при запуске на новых версиях ОС. И к тому же все программные инструменты проверены и гарантированно будут работать на ХР.

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

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

 

Анализ семпла Lab01: динамический анализ

Используемые инструменты:

  • IDA Pro;
  • PEiD;
  • RegShot;
  • Procmon;
  • INetSim;
  • Wireshark;
  • Process Explorer;
  • OllyDbg.

WARNING


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

Итак, первым делом запускаем PEview и смотрим импорт функций, который использует этот вредонос. Видим, что используется функция ExitProcess из системной библиотеки kernel32.

Просмотр функции ExitProcess системной библиотеки kernel32
Просмотр функции ExitProcess системной библиотеки kernel32

А вот и сам импорт в подробностях:

Окно PEview с подробностями импорта
Окно PEview с подробностями импорта

Так-так, мы видим ключи реестра, которые прописывает вредонос после своего запуска. Обращаем внимание на присутствие некоторой DNS-записи веб-ресурса и создаваемый файл vmx32to64.exe, маскирующийся под драйвер видеоадаптера с именем WinVMX32.

У нас есть подсказка, мы должны отследить сетевую активность ресурса http://www.practicalmalwareanalysis.com. Мы можем также отслеживать и проверять ключи реестра SOFTWARE\Classes\http\shell\open\commandV (IExplorer.exe) и Software\Microsoft\Active Setup\Installed Components\.

Первым делом мы должны разобраться с файлом для vmx32to64.exe, который вредонос создает после своего запуска и копирует в папку C:\Windows\system32. Запускаем анализатор PEiD, видим, что файл ничем не упакован.

Анализ бинарного файла с помощью PEiD
Анализ бинарного файла с помощью PEiD

Однако используются некоторые фичи для затруднения отладки exe-файла. Ниже приведен скриншот из отладчика OllyDbg.

Просмотр malware в отладчике OllyDbg
Просмотр malware в отладчике OllyDbg

По адресу 0x401259 был выполнен вызов к 0x401265. Это опкод, который вызывает обратный адрес 0x40125e выполнения в стеке. По первому адресу, 0x401265, был сделан вызов к библиотеке kernel32.LoadLibraryA. Но мы-то знаем, что функция LoadLibrary нуждается в некотором аргументе LPCSTR, передаваемом в... массив символов! Обратный адрес 0x40125e заворачивает вызов опкодом в библиотеку user32.

 

Продолжаем исследование. Смотрим реестр

Запускаем RegShot.

Результат анализа в RegShot
Результат анализа в RegShot

Из лога RegShot мы выяснили, что вредонос пытается выполнить команду C:\WINDOWS\system32\vmx32to64.exe при своем запуске.

Помним, что, помимо ключей реестра, в импорте мы нашли некую DNS-запись веб-ресурса. Хотим узнать подробности?

 

Запускаем сетевую акулу Wireshark

Анализ сетевых пакетов в Wireshark
Анализ сетевых пакетов в Wireshark

Мы видим запрос на сайт http://www.practicalmalwareanalysis.com и соединение SSL. Если приглядеться внимательно, то можно увидеть, что в пакетах TCP присутствует отправка случайных 256 байт данных через порт 80 и 443.

Передаваемые 256 байт в пакетах TCP
Передаваемые 256 байт в пакетах TCP
 

Что нам покажет Process Explorer?

Это окно с описанием мьютекса WinVMX32:

Описание мьютекса WinVMX32
Описание мьютекса WinVMX32

Строки, найденные при сканировании
Строки, найденные при сканировании

Используя Process Explorer, мы можем видеть больше строк, содержащихся в памяти и хендле мьютекса.

Строки, отображаемые в Process Explorer
Строки, отображаемые в Process Explorer

А вот и процедура записи файлов в Windows\system32\vmx32to64.exe:

Процедура записи файлов в Windows
Процедура записи файлов в Windows

WARNING


Будь осторожен при скачивании и распаковке архивов с образцами malware на твой компьютер. Все исследования выполняй только в изолированной виртуальной среде! Не выполняй действий, в которых на 100% не уверен. И делай регулярные snapshot’ы системы для быстрого отката.
 

Возвращаемся к OllyDbg

Позиционируемся на функции LoadLibrary. Мы уже выяснили, что вредонос на самом деле загружает эти библиотеки:

0012EFC4 0040123C /CALL to LoadLibraryA from Lab03-01.00401236
0012EFC8 0040122D \FileName = "advapi32"
0012EFC4 00401253 /CALL to LoadLibraryA from Lab03-01.0040124D
0012EFC8 00401247 \FileName = "ntdll"3.
0012EFC4 0040126B /CALL to LoadLibraryA from Lab03-01.00401265
0012EFC8 0040125E \FileName = "user32"
0012EFC4 00401505 /CALL to LoadLibraryA from Lab03-01.004014FF
0012EFC8 004014F7 \FileName = "advpack"

А что же с замаскированным файлом WinVMX32? Тут все просто: если vmx32to64.exe создан и находится в C:\WINDOWS\system32, то, скорее всего, процесс запущен в памяти. Проверяем, открыт ли мьютекс WinVMX32 в оперативной памяти.

Мьютекс WinVMX32
Мьютекс WinVMX32

Нашли! Машина инфицирована.

Ну и напоследок картинки из IDA Pro.

Получим вызов kernel-based
Получим вызов kernel-based

Обращаем внимание на смещение peb + 30h & 0ch offset
Обращаем внимание на смещение peb + 30h & 0ch offset

Листинг функции
Листинг функции

INFO


Анализ каждого отдельного образца malware — это часто творческий процесс. Заранее трудно предугадать, что ждет исследователя впереди. Используй как можно больше инструментов и методов для всестороннего анализа и получения исчерпывающего заключения о функциональности.
 

Заключение

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

В следующих статьях нас ждут крутые и более сложные вредоносы.
Всем удачи в исследованиях!

21 комментарий

  1. Аватар

    bax_banny

    22.12.2016 в 13:32

    Цикл Статей — это просто перевод книги?

    • Аватар

      motoroller95

      22.12.2016 в 15:38

    • Аватар

      R2D2id

      24.12.2016 в 21:48

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

    • Иван Пискунов

      Иван Пискунов

      14.01.2017 в 20:16

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

  2. Аватар

    Khazhinov

    23.12.2016 в 01:12

    По-моему довольно полезно. В рунете довольно сложно найти готовую и хорошую информацию.

  3. Аватар

    RobotNed

    24.12.2016 в 21:34

    Не плохой урок, хоть и подходит для новичков, но все.

  4. Аватар

    boberpro

    25.12.2016 в 11:47

    а какой пароль от архива?

  5. Аватар

    barkhat

    06.01.2017 в 11:11

    А вы точно использовали PEView, а не IDA PRO?

    • Иван Пискунов

      Иван Пискунов

      14.01.2017 в 20:01

      barkhat, спасибо за наблюдательность, скрин действительно из Иды, вкладка Import (если кто не нашел). Пр подготовке материала скриншотов очень много, все они в статью не влазят поэтому пришлось точечно оставлять самые информативные, так что PEView тоже использовался, с помощью тулзы всегда не лишнее проверить хеадеры. А вообще, на мои взгляд must have это PE Explorer 🙂 Все замечания учтем, ждите новых уроков!

  6. Аватар

    Inject0r

    30.03.2017 в 06:04

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

    • Иван Пискунов

      Иван Пискунов

      30.03.2017 в 13:51

      На самом деле импорт смотрим в PeView (очень простая программка) или еще более интересная и навороченная PeExplorer (там и вьювер ресурсов и таблицы импорта и вшитый дизасм), полное описание тулзы у разработчика http://www.heaventools.ru/pe-explorer-feature-list.htm
      Список подобных программ можно так же глянуть на http://www.malware-analyzer.com/pe-tools

      • Иван Пискунов

        Иван Пискунов

        30.03.2017 в 13:55

        В IDA Pro тоже кое что можно посмотреть, в нашем случае путь в меню View -> Open subviews -> Open imports window. Русскоязычного гайда по интерфейсу, к сожалению нет, поэтому вариант, к примеру пользоваться онлайн-справкой с сайра вендора, тут описание самого меню полностью https://www.hex-rays.com/products/ida/support/idadoc/358.shtml, а тут конкретно «Open imports window» https://www.hex-rays.com/products/ida/support/idadoc/1416.shtml

        • Иван Пискунов

          Иван Пискунов

          30.03.2017 в 14:03

          Статья вышла до того как были получены фидбеки, поэтому кое-какие «огрехи» все таки просочились.. за них просим прощения, работу над ошибками делаем:) скрины впредь будут выглядеть более наглядно.

    • Аватар

      ShHolmes

      11.01.2018 в 17:42

      Это, похоже, не подробности импорта, а View -> Open subviews -> Strings в IDAPro.

  7. Аватар

    Inject0r

    30.03.2017 в 06:54

    Еще непонятно в каком месте PE можно глянуть процедуры записи файлов в Windows

  8. Аватар

    Inject0r

    30.03.2017 в 07:02

    Автор статьи кажется хотел максимально усложнить новичкам жизнь 🙂 Для поиска процедур записи файла был использован не Process Exploler, а Process Monitor, ошибка в подписи скрина. А еще скриншоты очень низкого качества, их не увеличить, под лупой нужно рассматривать иногда.

  9. Иван Пискунов

    Иван Пискунов

    30.03.2017 в 14:04

    К сожалению, только англоязычный, но все же небольшой гайд по описанию окон IDA Pro и возможностей программы
    http://resources.infosecinstitute.com/basics-of-ida-pro-2/

  10. Аватар

    baragoz

    17.08.2017 в 15:11

    Очень крутой автор, особенно респект за ответы читателям, жалко, не все авторы отвечают 😉

Оставить мнение