Создание лаборатории для анализа вредоносных файлов

Лаборатория для анализа вирусов

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

Еще по теме: Где скачать вирусы для изучения

Создание лаборатории для анализа вредоносных программ

Для создания виртуальной лаборатории нам понадобится:

  • Kali Linux или другой Linux-дистрибутив.
  • Операционная система Windows.
  • VMware Workstation Pro.
  • FLARE VM.
  • Inetsim.
  • Ida Pro.
  • Burp Suite.

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

Лабора­тория для анализа вредоносных файлов будет работать на двух вир­туаль­ных машинах c IP-адре­сам:

На виртуалке Kali будут работать разные интернет‑служ­бы, а на виртуалке Windows мы будем анализировать малварь.

Схе­ма лабора­тории для ана­лиза вре­доносных файлов
Схе­ма лабора­тории для ана­лиза вре­доносных файлов

Создавать лабора­торию будем в несколько эта­пов:

  • Этап 1: Уста­нов­ка VMware, соз­дание вир­туаль­ной машины из обра­за Kali Linux и Windows (я исполь­зую Kali Linux 2019 и Windows 10, но вы можете использовать ОС посвежее).
  • Этап 2: Уста­нов­ка необ­ходимо­го софта на вир­туалку Kali Linux.
  • Этап 3: Уста­нов­ка необ­ходимо­го софта на вир­туалку Windows 10.
  • Этап 4: Нас­трой­ка изо­лиро­ван­ной вир­туаль­ной сети.
  • Этап 5: Нас­трой­ка инструмента Inetsim.
  • Этап 6: Тес­тирова­ние работос­пособ­ности лабора­тории для анализа вирусов.

Установка Inetsim

По умол­чанию в Kali уже есть Inetsim, но, если вы исполь­зуете дру­гую ОС на базе ядра Linux, тогда простой процесс уста­нов­ки опи­сан в до­кумен­тации. Дос­таточ­но про­читать инс­трук­цию для заг­рузки па­кета Inetsim при помощи ути­литы apt либо dpkg.

Установка необходимого ПО на виртуальную машину Windows

При анализе вре­донос­ных фай­лов надо иметь под рукой под­ходящий софт. Я исполь­зую FLARE-VM — сборник инс­тру­мен­тов для ста­тичес­кого и динами­чес­кого ана­лиза вре­донос­ных прог­рамм.

До установки необходимо раз­решить виртуалке с Windows под­клю­чать­ся к сети, а сам про­цесс выпол­няет­ся в нес­коль­ко шагов.

Шаг 1: Заг­рузка фай­лов из репози­тория flare-vm:

Шаг 2: Запуск PowerShell от име­ни адми­нис­тра­тора.

Шаг 3: Разблокирование уста­новоч­ного файла:

Шаг 4: Вклю­чение выпол­нение скрип­та:

Шаг 5: Вы­пол­нение сце­нария уста­нов­щика:

Под­робнее об установке читайте в репози­тории. Пос­ле завер­шения установки на рабочем сто­ле будет создана папка FLARE, в которой будет находится отсорти­рован­ный по катего­риям сборник ути­лит.

Так, в пап­ке Debuggers будет набор отладчи­ков, в катало­ге PE — инс­тру­мен­тарий для ана­лиза PE-фай­лов, поз­воля­ющий выяв­лять ком­пилято­ры, упа­ков­щики или крип­торы, в дирек­тории Disassemblers, соот­ветс­твен­но, хра­нят­ся инс­тру­мен­ты для дизас­сем­бли­рова­ния.

В ком­плек­те пос­тавки есть также бес­плат­ная вер­сия IDA, но я рекомендую купить лицен­зию. Так­же для раз­работ­ки YARA-пра­вил стоит уста­новить YARA Editor.

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

Вредонос исполь­зует раз­личные методы иден­тифика­ции вир­туалок: про­вер­ку иден­тифика­тора CPUID, про­вер­ку извес­тных MAC-адре­сов, перечис­ление имен про­цес­сов для обна­руже­ния вир­туаль­ной машины, а так­же про­вер­ку клю­чей реес­тра. Способы защиты от всех этих методов опи­саны здесь.

Настройка изолированной виртуальной сети

Пос­ле нас­трой­ки вир­туаль­ных машин необ­ходимо соз­дать изо­лиро­ван­ную сеть, которая будет свя­зывать две наших вир­туал­ки. Откры­ваем вклад­ку каж­дой вир­туаль­ной машины, перехо­дим к раз­делу VM—> Settings —> Network Adapter и соз­даем LAN Segment.

Соз­дание LAN-сег­мента
Соз­дание LAN-сег­мента

Нас­троим интерфейс на Kali, уста­новив IP-адрес 10.10.10.1, мас­ка сети 24.

Нас­трой­ка интерфей­са сети Kali Linux
Нас­трой­ка интерфей­са сети Kali Linux

Нас­троим интерфейс для Windows 10: IP-адрес 10.10.10.2, мас­ка 255.255.255.0, основной шлюз 10.10.10.1, пред­почита­емый DNS-сер­вер 10.10.10.1.

Нас­трой­ка интерфей­са для Windows
Нас­трой­ка интерфей­са для Windows

Про­верим дос­тупность вто­рой машины в нашей вир­туаль­ной сети:

Про­вер­ка работос­пособ­ности изо­лиро­ван­ной сети
Про­вер­ка работос­пособ­ности изо­лиро­ван­ной сети

Настройка ПО Inetsim

Файл кон­фигура­ции Inetsim лежит здесь:

Откры­ваем его, для настройки прог­раммы.

По умол­чанию Inetsim прос­лушива­ет толь­ко localhost. Сделаем его дос­тупным для всех машин нашей вир­туаль­ной сети. Для это­го в кон­фиге най­дем стро­ку service_bind_address и уста­новим зна­чение 0.0.0.0.

Из­менение парамет­ра service_bind_address
Из­менение парамет­ра service_bind_address

Настройка службы DNS

Ус­тановим DNS-порт 53 и нас­троим DNS таким обра­зом, что­бы любое домен­ное имя раз­решалось в 10.10.10.1.

Нас­трой­ка DNS-сер­вера
Нас­трой­ка DNS-сер­вера

Так­же есть воз­можность нас­трой­ки ста­тичес­ких DNS-записей.

Нас­трой­ка ста­тичес­ких DNS-записей
Нас­трой­ка ста­тичес­ких DNS-записей

Ес­ли в качес­тве опе­раци­онной сис­темы исполь­зует­ся Ubuntu, необ­ходимо отклю­чить локаль­ный DNS-сер­вер, который вклю­чен по умол­чанию. Для это­го исполь­зует­ся такая коман­да:

Настройка службы HTTP

Ус­танав­лива­ем порт прос­лушива­ния 80 и на вся­кий слу­чай поменя­ем вер­сию HTTP.

Нас­трой­ка HTTP-служ­бы
Нас­трой­ка HTTP-служ­бы

Настройка службы HTTPS

В Inetsim под­дер­жка SSL очень огра­ничен­на и не поз­воля­ет генери­ровать сер­тифика­ты для каж­дого хос­та на лету. Она име­ет толь­ко один сер­тификат для хос­та inetsim.org. Для кор­рек­тной нас­трой­ки SSL надо исполь­зовать Burp Suite на пор­те 443 в качес­тве проз­рачно­го прок­си. Для это­го в кон­фигура­ции inetsim.conf уста­нав­лива­ем порт 8443 для служ­бы HTTPS.

Нас­трой­ка служ­бы HTTPS
Нас­трой­ка служ­бы HTTPS

Настройка Burp Suite в качестве прозрачного прокси-сервера

Пе­рехо­дим на вклад­ку Proxy —> Options и уста­нав­лива­ем порт слу­шате­ля 443 для всех интерфей­сов.

Нас­трой­ка proxy
Нас­трой­ка proxy

На вклад­ке Request handling ука­зыва­ем, на какой хост перенап­равлять HTTPS-тра­фик. Мы будем переки­дывать его на 10.10.10.1 (IP-адрес Inetsim) и порт 8443 (порт служ­бы HTTPS, уста­нов­ленный в кон­фигура­ции Inetsim) и обя­затель­но уста­новим соот­ветс­тву­ющий фла­жок для под­дер­жки проз­рачно­го прок­си.

Нас­трой­ка proxy
Нас­трой­ка proxy

Сле­дующим эта­пом нуж­но уста­новить сер­тификат Burp Suite на Windows-машину. Для это­го соз­даем прок­си на пор­те 8080, что­бы зай­ти по HTTP и уста­новить сер­тификат на хост.
Пра­виль­ные нас­трой­ки прок­си Burp Suite выг­лядят так:

Нас­трой­ки прок­си
Нас­трой­ки прок­си

На Windows 10 запус­каем Internet Explorer от име­ни адми­нис­тра­тора и перехо­дим по адре­су:

Нажима­ем над­пись CA Certificate и заг­ружа­ем сер­тификат.

Ус­танав­лива­ем сер­тификат для текуще­го поль­зовате­ля и локаль­ного компь­юте­ра в хра­нили­ще доверен­ных кор­невых сер­тифика­тов.

Ус­танов­ка сер­тифика­та
Ус­танов­ка сер­тифика­та

 

Вы­бор хра­нили­ща сер­тифика­та
Вы­бор хра­нили­ща сер­тифика­та

Настройка маршрутизации

На вир­туаль­ной машине с Windows необ­ходимо соз­дать мар­шрут, который будет нап­равлять весь сетевой тра­фик на IP-адрес Inetsim (10.10.10.1). Запус­тим PowerShell от име­ни адми­нис­тра­тора и выпол­ним сле­дующую коман­ду:

На Kali Linux с уста­нов­ленным Inetsim перенап­равим пос­тупа­ющий тра­фик на интерфейс eth0 (10.10.10.1):

Тестирование работоспособности

За­пустим Inetsim с помощью коман­ды:

За­пуск ПО Inetsim
За­пуск ПО Inetsim

Те­перь про­пин­гуем любой адрес.

Тес­тирова­ние работос­пособ­ности
Тес­тирова­ние работос­пособ­ности

Про­верим работос­пособ­ность по про­токо­лу HTTPS: для это­го перехо­дим на любой сайт, под­держи­вающий этот про­токол, нап­ример https://yandex.ru.

Про­вер­ка работы служ­бы HTTPS
Про­вер­ка работы служ­бы HTTPS

В отве­те видим заг­лушку Inetsim. Про­верим, какие дан­ные получе­ны в Burp Suite.

Дан­ные, получен­ные в Burp
Дан­ные, получен­ные в Burp

На рисун­ке выше виден заголо­вок зап­роса, в котором обна­ружен GET-зап­рос к хос­ту yandex.ru с иден­тифика­цион­ной стро­кой кли­ент­ско­го при­ложе­ния (User-Agent) Mozilla/5.0. В слу­чае POST-зап­роса ниже заголов­ка мож­но уви­деть полез­ную наг­рузку.

Возможности Inetsim

Не­обхо­димо ска­зать нес­коль­ко слов о фай­лах‑заг­лушках Inetsim. Как вид­но из рисун­ка выше, отве­том от Inetsim слу­жит стра­нич­ка по умол­чанию. Эти стра­нич­ки‑заг­лушки рас­сорти­рова­ны по про­токо­лам и хра­нят­ся в пап­ке:

Спи­сок фай­лов‑заг­лушек для служ­бы HTTP
Спи­сок фай­лов‑заг­лушек для служ­бы HTTP

В фай­ле кон­фигура­ции inetsim.conf спи­сок фай­лов‑заг­лушек выг­лядит сле­дующим обра­зом.

Спи­сок фай­лов‑заг­лушек
Спи­сок фай­лов‑заг­лушек

Мно­гие вирусы и другие вре­донос­ные фай­лы, преж­де чем начать сетевое вза­имо­дей­ствие с управля­ющим сер­вером, про­веря­ют под­клю­чение к интерне­ту. Дан­ная про­вер­ка осно­выва­ется на уров­не опе­раци­онной сис­темы. Для этих целей в Windows при­сутс­тву­ет ком­понент NCSI, который сиг­нализи­рует поль­зовате­лю и служ­бам о дос­тупнос­ти выхода в интернет.

Ал­горит­мы про­вер­ки нем­ного раз­лича­ются в зависи­мос­ти от вер­сии опе­раци­онной сис­темы. В Windows 7 ком­понент посыла­ет HTTP-зап­рос по адре­су http://www.msftncsi.com/ncsi.txt. Рас­положен­ный по это­му адре­су тек­сто­вый файл содер­жит стро­ку Microsoft NCSI.

Далее про­веря­ется работос­пособ­ность служ­бы DNS, для чего NCSI пыта­ется раз­решить в IP-адрес 131.107.255.255 имя dns.msftncsi.com.

Для Windows 10 на зап­рос http://www.msftconnecttest.com/connecttest.txt дол­жен пос­тупить ответ, содер­жащий стро­ку Microsoft Connect Test. Тог­да опе­раци­онная сис­тема счи­тает, что дос­туп в интернет при­сутс­тву­ет.

Для успешно­го про­хож­дения это­го тес­та необ­ходимо в файл /var/lib/inetsim/http/fakefiles/sample.txt добавить стро­ку Microsoft NCSI либо Microsoft Connect Test, а в парамет­ре dns_static фай­ла inetsim.conf ука­зать сле­дующую стро­ку:

Так­же в Inetsim име­ется собс­твен­ный веб‑сер­вер, фай­лы которо­го рас­положе­ны в катало­ге /var/lib/inetsim/http/wwroot. Но преж­де, чем работать с веб‑сер­вером, необ­ходимо в фай­ле кон­фигура­ции inetsim.conf уста­новить параметр http_fakemode no или https_fakemode no.

По­луче­ние дос­тупа к https://yandex.ru/internet.gif
По­луче­ние дос­тупа к https://yandex.ru/internet.gif

Inetsim сох­раня­ет фай­лы отче­тов — это тек­сто­вые фай­лы, содер­жащие информа­цию о попыт­ках сетево­го вза­имо­дей­ствия. Все отче­ты записы­вают­ся в пап­ку /var/log/inetsim, дан­ные post — в /var/lib/inetsim.

А как в такой лабора­тории иссле­довать мал­варь, раз­работан­ную под Linux? Мож­но добавить еще одну вир­туаль­ную Linux-машину и туда уста­новить допол­нитель­ный софт, но пра­виль­ный под­ход — исполь­зовать Ida Pro и уда­лен­но отла­живать вре­донос­ный файл.

Заключение

Мы соб­рали лабора­торию для анализа вре­донос­ных фай­лов, в которой нас­тро­или эму­ляцию интернет‑ресур­сов и уста­нови­ли необ­ходимое прог­рам­мное обес­печение для ста­тичес­кого и динами­чес­кого ана­лиза мал­вари.

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

Еще по теме: Форензик кейс взлома серверов Linux

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

Добавить комментарий