R0 CREW

Malware Analysis Tutorial 1- VM Based Analysis Platform (Перевод: Prosper-H)

Перейти к содержанию

Цели урока:

  1. Научиться настраивать виртуальную экспериментальную среду для анализа вредоносного программного обеспечения.
  2. Приобрести базовые навыки мониторинга сетевой активности.

Вопрос дня:

Можете ли вы, запустив вредоносное программное обеспечение Max++ описать его сетевую активность?

ССЫКА ДЛЯ ЗАГРУЗКИ:

Образец вредоноса можно взять либо из вложения (внизу этого урока), либо по по этой ссылке, либо следуя инструкциям загрузки из урока Бонфы (Bonfa) [1]. Урок Бонфы является прекрасным введением в анализ Max++.

1. Введение

Этот tutorial предназначен для тех, кто заинтересован в анализе вредоносного программного обеспечения. В нем мы шаг за шагом будем производить анализ вредоноса ZeroAccess. Джузеппе Бонфа (Giuseppe Bonfa) предоставил превосходный анализ [1] этого зловреда. Эта мини-серия уроков поможет вам получить практический опыт по его анализу. Мы предполагаем, что вы имеете базовое представление о: x86 ассемблере, отладке, операционных системах и принципах программирования.

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

  1. Установочный диск Windows XP SP2 (Обратите внимание: это должен быть диск со «вторым сервис паком»).
  2. Установочный диск Linux Ubuntu (в этом туториале мы используем версию Ubuntu 10.04 lucid LTS. Версия не имеет значения).
  3. Компьютер, загружаемый с Windows XP, на котором имеется, по крайней мере, 50GB свободного дискового пространства (позже, мы будем ссылаться на этот компьютер как «host XP»).
  4. Высокоскоростной Интернет.

2. Установка программного обеспечения

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

  1. Установите Oracle Virtual Box v4.04 на вашу основную систему «host XP» (http://www.virtualbox.org/).

  2. Создайте виртуальную машину для Windows XP (используйте для этого ваш установочный диск с SP2. Виртуальной машине выделите, как минимум, 256MB ОЗУ и 10GB дискового пространства) с помощью менеджера VBox (позже мы будем ссылаться на эту виртуальную машину, как «guest XP») и установите следующее программное обеспечение:

    1. Python 2.7.
    2. Immunity Debugger
    3. IDA Pro Debugger Free Version (Примечание: используйте бесплатную, а не пробную версию, поскольку пробная не позволяет сохранять базы данных dbg)
    4. HxD (двоичный редактор)
    5. Загрузите экземпляр вредоносного программного обеспечения Max++ из прилагаемого к статье архива, либо следуйте инструкциям от сюда [1]. Вам нужно загрузить архив “Max++ downloader install_2010.zip”. Не вздумайте запускать его содержимое!!! Мы это сделаем позже!)
    6. После того как все выше перечисленное было сделано, сделайте снимок (snapshot) «guest XP» в VBox. Этот снимок позволит быстро восстанавливать оригинальное состояние системы.

Примечание: Если разрешение экрана у виртуальной машины будет слишком маленьким, то решить эту проблему можно следующим образом: запустите «XP Guest», затем нажмите «Install Guest Additions», перезагрузите «XP Guest», а затем просто настройте «настройки экрана» (кликните правой кнопкой мыши на «Рабочем столе» => Свойства => Настройки).

  1. На «XP Host» установите WinDbg. Если хотите, то можете загрузить отладочные символы для вашей «XP Host» (это может позволить немного ускорить отладку).

  2. Создайте виртуальную машину для Linux Ubuntu (используйте для этого ваш установочный диск с Ubuntu 10.04. Этой виртуальной машине выделите, как минимум, 512MB ОЗУ и 10GB дискового пространства) в VBox и установите в ней следующее программное обеспечение (можете использовать для этого apt-get или «System =>Administration => Synaptic Package Manager», который имеет графическую оболочку):

    1. Wireshark (для установки можно использовать команду: “sudo apt-get install wireshark”)
    2. GDB (GNU debugger)
    3. g++ (c++ compiler)
    4. Python

Примечание: В данный момент разрешение экрана в гостевой Linux-системе слишком маленькое… Для решения этой проблемы, следуйте инструкциям описанным на форуме «Linux Format» [2].

3. Настройка

К этому моменту, обе виртуальные машины должны иметь доступ к Интернету. Следующее, что мы сделаем – это настроим их таким образом, чтобы весь трафик от «XP Guest» проходил через «Linux Guest». На виртуальной машине с «Linux Guest» мы воспользуемся Wireshark, чтобы мониторить трафик от виртуальной машины с «XP Guest», когда на ней будет выполняться зловред. Реализация этого решения описана ниже.

3.1 XP Guest

Сейчас выключите «XP Guest» в менеджере VBox, нажмите правой кнопкой мыши на «XP Guest» и выберите «Select».

В «Network => вкладка “Adapter 1”»:

  1. Нажмите на флажок «Enable network adapter».
  2. И выберите для «Attached To» тип сети «Internal Network».

Примечание: пожалуйста, убедитесь, что используется сетевое имя «intnet» назначаемое по умолчанию менеджером VBox.

Данный шаг оградит «XP Guest» от внешнего мира и позволит соединяться с внутренней сетью управляемой менеджером VBox.

На следующем шаге нужно включить последовательный порт (serial port) для работы с WinDbg. Установите настройки так, как показано на рисунке ниже. Обратите внимание, что важно установить Порт и Путь к файлу «\.\pipe\com_11», чтобы имитировать «Host Pipe» порт.

VT-x – это специальная технология процессора, которая используется для поддержки виртуализации. Вам нужно включить ее в Virtual Box, в противном случае аппаратные брэйкпойнты не будут работать. Позже вы увидите, что Max++ полагается на аппаратные брэйкпойнты, интенсивно используя их для перехвата системных вызовов. На рисунке ниже показано, как можно включить поддержку VT-x.

3.2 Linux Guest

Теперь давайте настроим «Linux Guest» в качестве шлюза внутренней сети. Прежде чем начать, убедитесь в том, что виртуальная машина выключена. Наш «Linux Guest» будет иметь два адаптера: один для соединения с внутренней сетью, а другой для соединения с внешним миром. На рисунке ниже показаны настройки для первого адаптера, отвечающего за внутреннюю сеть (Internal Network). Для 2-го адаптера установите тип сети «NAT». Как вы знаете, NAT расшифровывается как Network Address Translation (трансляция сетевых адресов). Он обеспечивает дополнительный уровень защиты для ваших виртуальных машин.

Примечание: Убедитесь, что для каждого из адаптеров в «Adapter Type» установлено «Intel Pro/1000». Это можно сделать, нажав на вкладку «Advanced». На этой же вкладке, для каждого из адаптеров, измените последние цифры MAC-адреса, но таким образом, чтобы MAC-адрес 1-го адаптера оканчивался на «01», а второй на «02». Если вы используете VBox 4.1.0 или более позднюю версию, там же во вкладке «Advanced» имеется дополнительное поле «Promiscuous mode», выберите в нем «allow for all» (это позволит перехватить весь трафик).

Теперь перезагрузите «Linux Guest». Нам нужно настроить эту виртуальную машину в качестве шлюза, для этого следуйте следующим инструкциям:

  1. Запустите терминал и введите «ifconfig» для получения информации о всех доступных адаптерах. Вы должны увидеть три адаптера, например, в моем случае это «eth1», «eth2» и «lo» (the local loophole interface). Если вы посмотрите на их MAC-адреса, то увидите, что они соответствуют именно тем адресам, которые мы ранее установили в менеджере VBox. Давайте предположим, что «eth1» соответствует адаптеру «xx…:01», а «eth2» соответствует адаптеру «xx…:02».
  2. Перейдите в «System -> Preference -> Network Connections» и удалите все существующие сетевые соединения. Затем создайте первое проводное соединение, как показано на рисунке ниже (используйте 169.254.236.100 в качестве статического IP). Обратите внимание, что для получения Шлюза нужно установить «0.0.0.0» (убедитесь в том, что вы нажали Enter, когда закончили вводить 0.0.0.0 в третьей ячейке – в Ubuntu есть некоторые проблемы с GUI – если вы не введете Enter, то операционная система может забыть добавить вашу запись), потому что это ссылка на внутреннюю сеть (the local internal network) и сам компьютер, который собственно и является шлюзом. Точно так же, установите второе проводное соединение (для NAT), но на этот раз, используйте DHCP для назначения IP-адресов. Если вы лентяй или вам лень использовать Ubuntu GUI, то для достижения тех же результатов можно воспользоваться эквивалентными командами ifconfig (знакомство с ними оставим в качестве домашнего упражнения).

  1. Теперь настроим IP forwarding. Создайте файл «network.sh» и установите для него «chmod 755 network.sh». Этот скрипт содержит три команды, которые представлены ниже:
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -o [B][U]eth2[/U][/B] -j MASQUERADE

Первая команда должна включить опцию ip_forward стэка IPv4 в ядре Linux. Вторая настраивает фаервол «iptables», чтобы тот позволил пересылку пакетов. Третья же добавляет post routing tool и перенаправляет все пакеты на интерфейс eth2 (примечание: eth2 является внешней сслыкой на 2-ой адаптер. На вашей системе у нее может быть другое имя).

3.3 Донастройка «XP Guest»

Теперь давайте вернемся к нашей «XP Guest» и перенастроим ее так, чтобы доступ к Интернету она получала через «Ubuntu Guest». Выполните в Убунте команду «nslookup www.google.com» и определите используемый DNS-сервер. Затем перейдите в «XP Guest => Control Panel => Network Connections => Right Click (Properties) => TCP/IP (Properties) => установите статический IP-адрес 169.254.236.200, адрес Шлюза 169.254.236.100 и адрес DNS-сервера. Затем запустите браузер и убедитесь, что у него нет доступа к Интернету, да-да вы не ослышались, нужно убедиться в том, что у браузера нет доступа к Интернету. Доступ появится, когда мы выполним ранее созданный скрип «network.sh» на нашем Шлюзе с Убунтой.

Давайте вернемся в «Ubuntu Guest» и выполним команду «sudo ./network.sh». У «XP Guest» должен появился доступ к Интернету (можете проверить). Если сейчас ввести команду «sudo wireshark», то вы сможете перехватить весь трафик от «XP Guest» (примечание: во время запуска Wireshark нужно нажать на кнопку OK в сплывающем диалоге, иначе, он будет заморжен)

4. Заключение

Мы успешно создали простую среду для анализа Max++. Используя Linux «Ubuntu Guest», мы можем перехватывать все пакеты вредоноса. Технология виртуальной машины предоставляет нам большие преимущества быстрого восстановления состояния системы в случаях повреждения системы.

Сейчас вам нужно сделать снимки обоих виртуальных машин «XP и Ubuntu Guest».

Ну и наконец, дайте ответ на вопрос, поставленный в самом начале урока:

Можете ли вы, запустив вредоносное программное обеспечение Max++ описать его сетевую активность?[

© Translated by Prosper-H from r0 Crew

Файл к статье (пароль: www.reverse4you.org):

Max++ downloader install_2010.zip (57.7 KB)

Ссылки

[1] Guiseppe Bonfa, “Step-by-Step Reverse Engineering Malware: ZeroAccess / Max++ / Smiscer Crimeware Rootkit”

[2] udroomla , “How To Increase Screen Resolution with VirtualBox and Ubuntu”

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

Пароль: www.reverse4you.org

немного запутался в сетевых интерфейсах, накрутил что-то своё, так как инет пропадал по очереди то на ХР то на Линуксе. Но в итоге всё же смог заснифить трафик с хрюши. Со стороны моё прохождение этого урока выглядело как-то так:

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

Вобщем, из того что я вижу:
Вирус запустил у меня сервис polestar на 1060-м порту (я понятия не имею что это за сервис, пока что ничего внятного нагуглить не удалось, IANA предлагает контактировать с каким-то японцем). И этот сервис послал http запрос на сервер где-то в Амстердаме (85.17.239.212, по крайней мере внуиз так сказал).
Дальше был запрос на ДНС, поиск имени intensedive.com и днс признался что это 204.11.56.26. Больше обращений на этот сервер видно не было.
Пришел ARP пакет от CadmusCo , которому любезно был передан мак адрес интерфейса NAT на линуксе, который служила выходом в интернет.
Ну и у меня запустился сервис kiosk на 1061-м порту, который начал передавать данные всё в тот же Амстердам (85.17.239.212). При этом один байт в трех запросах постоянно увеличивался на единицу (с 71 до 73), а другой - уменьшался на 1 (с 62 до 60)

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

Мониторинг сетевой активности, сказал что нет доступа к серверу 85.17.239.212 по 80 порту:

Привет скинь плиз ссылку на скачку вируса,а то все битые

Добавил аттач к основному посту.

Огромное спасибо за помощь