Хакер - Код под надзором. Создаем виртуальную лабораторию для анализа малвари

Хакер - Код под надзором. Создаем виртуальную лабораторию для анализа малвари

hacker_frei

https://t.me/hacker_frei

Даниил 

Содержание статьи

  • Необходимое программное обеспечение
  • Создание лаборатории
  • Установка Inetsim
  • Установка необходимого ПО на виртуальную машину Windows
  • Настройка изолированной виртуальной сети
  • Настройка ПО Inetsim
  • Настройка службы DNS
  • Настройка службы HTTP
  • Настройка службы HTTPS
  • Настройка Burp Suite в качестве прозрачного прокси-сервера
  • Настройка маршрутизации
  • Тестирование работоспособности
  • Возможности Inetsim
  • Итоги

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

Мно­гие вре­доно­сы вза­имо­дей­ству­ют с управля­ющим сер­вером, исполь­зуя про­токол HTTPS, который шиф­рует переда­ваемые дан­ные. Поэто­му в сетевом тра­фике нель­зя обна­ружить коман­ды вза­имо­дей­ствия и отправ­ляемую информа­цию. Ког­да под рукой нет авто­мати­зиро­ван­ной песоч­ницы, но необ­ходимо про­ана­лизи­ровать HTTP- и HTTPS-зап­росы, вызовы DNS и мно­гое дру­гое, мож­но соб­рать под­ходящий стенд самос­тоятель­но.

WARNING

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

НЕОБХОДИМОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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

  1. VMware Workstation Pro — это гипер­визор для нас­толь­ных компь­юте­ров, отрасле­вой стан­дарт для работы с вир­туаль­ными машина­ми.
  2. Kali Linux или любая дру­гая опе­раци­онная сис­тема на базе ядра Linux. Я исполь­зую Kali, так как в ней по умол­чанию уста­нов­лены необ­ходимые инс­тру­мен­ты.
  3. Windows 10 или дру­гая акту­аль­ная вер­сия Windows. Наиболь­шее количес­тво вре­донос­ных фай­лов раз­работа­но под Windows, поэто­му ана­лизи­ровать их луч­ше имен­но в этой опе­раци­онной сис­теме.
  4. Inetsim — прог­рам­мный про­дукт, пред­назна­чен­ный для модели­рова­ния интернет‑сер­висов в лабора­тор­ных усло­виях, нап­ример для ана­лиза сетево­го поведе­ния неиз­вес­тных образцов вре­донос­ных прог­рамм.
  5. FLARE VM — пол­ностью нас­тра­иваемый набор инс­тру­мен­тов на базе Windows для ана­лиза вре­донос­ных прог­рамм, реаги­рова­ния на инци­ден­ты, тес­тирова­ния на про­ник­новение и так далее.
  6. Burp Suite исполь­зует­ся в качес­тве проз­рачно­го прок­си‑сер­вера с целью ана­лиза вза­имо­дей­ствия вре­донос­ного фай­ла по про­токо­лу HTTPS.
  7. Ida Pro — инте­рак­тивный дизас­сем­блер, исполь­зуемый для реверс‑инжи­нирин­га. Одно из пре­иму­ществ IDA — встро­енный пла­гин Hex Rays, а так­же под­дер­жка отладки уда­лен­ных при­ложе­ний, которая необ­ходима при ана­лизе вре­донос­ных фай­лов под Linux.

СОЗДАНИЕ ЛАБОРАТОРИИ

На­ша лабора­тория будет работать на двух вир­туаль­ных машинах c IP-адре­сами 10.10.10.1 (Kali Linux с уста­нов­ленным Inetsim) и 10.10.10.2 (Windows 10 с уста­нов­ленным прог­рам­мным обес­печени­ем для реверс‑инжи­нирин­га), находя­щих­ся в изо­лиро­ван­ной сети. На вир­туаль­ной машине Kali Linux будут работать раз­личные интернет‑служ­бы, а на вир­туаль­ной машине Windows мы будем иссле­довать вре­донос­ные прог­раммы.

Схе­ма вир­туаль­ной лабора­тории для ана­лиза вре­донос­ного кода

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

1. Уста­нов­ка VMware Workstation Pro, соз­дание вир­туаль­ной машины из обра­за Kali Linux и Windows (я исполь­зую Kali Linux 2019 и Windows 10).

2. Уста­нов­ка необ­ходимо­го ПО на вир­туаль­ную машину Kali Linux.

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

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

5. Нас­трой­ка ПО Inetsim.

6. Тес­тирова­ние работос­пособ­ности нашей лабора­тории.

УСТАНОВКА INETSIM

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

Дос­таточ­но про­читать инс­трук­цию для заг­рузки па­кета Inetsim при помощи ути­литы apt либо dpkg.

УСТАНОВКА НЕОБХОДИМОГО ПО НА ВИРТУАЛЬНУЮ МАШИНУ WINDOWS

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

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

  1. Заг­ружа­ем фай­лы из репози­тория flare-vmgit clone https://github.com/mandiant/flare-vm.git.
  2. От­кры­ваем PowerShell от име­ни адми­нис­тра­тора.
  3. Раз­бло­киру­ем уста­новоч­ный файл, выпол­нив коман­ду Unblock-File .\install.ps1.
  4. Вклю­чаем выпол­нение скрип­та с помощью коман­ды Set-ExecutionPolicy Unrestricted.
  5. Вы­пол­няем сце­нарий уста­нов­щика: .\install.ps1.

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

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

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

Ме­тоды защиты от всех этих методов опи­саны здесь.

НАСТРОЙКА ИЗОЛИРОВАННОЙ ВИРТУАЛЬНОЙ СЕТИ

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

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

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

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

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

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

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

ping 10.10.10.1

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

НАСТРОЙКА ПО INETSIM

Файл кон­фигура­ции Inetsim рас­положен по пути /etc/inetsim/inetsim.conf. Откро­ем его, что­бы нас­тро­ить прог­рамму.

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

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

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

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

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

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

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

INFO

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

$ sudo systemctl disable systemd-resolved.service

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

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

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

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

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

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

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

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

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

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

Нас­трой­ка парамет­ра Request Handling

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

Пра­виль­ные нас­трой­ки прок­си Burp Suite выг­лядят сле­дующим обра­зом.

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

На Windows 10 запус­каем Internet Explorer от име­ни адми­нис­тра­тора и перехо­дим по адре­су http://10.10.10.1:8080. Нажима­ем над­пись CA Certificate и заг­ружа­ем сер­тификат.

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

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

НАСТРОЙКА МАРШРУТИЗАЦИИ

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

PS C:\Windows\System32> route ADD 0.0.0.0 MASK 255.255.255.255 10.10.10.1

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

root@kali:~# iptables -t nat -A PREROUTING -i eth0 -j REDIRECT

ТЕСТИРОВАНИЕ РАБОТОСПОСОБНОСТИ

За­пус­каем Inetsim с помощью коман­ды root@kali:~# inetsim.

За­пуск ПО Inetsim

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

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

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

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

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

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

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

ВОЗМОЖНОСТИ INETSIM

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

Спи­сок фай­лов‑заг­лушек для служ­бы 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 ука­зать сле­дующую стро­ку:

dns.msftncsi.com 131.107.255.255

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

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

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

INFO

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

ИТОГИ

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

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei

Report Page