Дав­нень­ко у нас не было новос­тей с фрон­тов форен­зики! А ведь инс­тру­мен­ты ана­лиза уста­рева­ют, тог­да как хакеры при­думы­вают всё новые и новые методы заметать сле­ды, оставляя доб­лес­тных бой­цов с шев­ронами DFIR на рукавах задум­чиво чесать репу. Давай пока отло­жим уста­рев­ший, но от того не менее острый Scalpel и огля­нем­ся по сто­ронам.
 

Создание событий

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

info

Все опи­сан­ные экспе­римен­ты я про­вожу на VMware Workstation 14 Pro. Соот­ветс­твен­но, зависи­мые от гипер­визора коман­ды в статье при­веде­ны для нее.

Для под­готов­ки тес­товых событий нам понадо­бит­ся две вир­туаль­ные машины: на одной будет работать Windows 10, на вто­рой — Kali Linux 2021.2. Если будешь собирать тес­товую сре­ду самос­тоятель­но, рекомен­дую не делать боль­шой диск для вин­ды, хва­тит и 40 Гбайт — потом все про­цес­сы будут про­текать быс­трее. Плюс для боль­шей наг­ляднос­ти при ана­лизе рекомен­дую уста­новить на подопыт­ную машину Sysmon. Про эту ути­литу в руб­рике «Админ» была статья «Sysmon для безопас­ника». Ког­да мы пой­дем по сле­дам зло­умыш­ленни­ка, ты пой­мешь, в чем цен­ность этой ути­литы.

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

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

info

Де­лать имен­но так, как опи­сано ниже, необя­затель­но. В статье я при­вожу общий под­ход для всех подоб­ных ситу­аций, в том чис­ле на реаль­ном железе. Инс­тру­мент Plaso, которым мы будем поль­зовать­ся, успешно ску­шает и образ от вир­туал­ки, если он у тебя хра­нит­ся одним фай­лом .vmdk.

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

Вык­лючим обе вир­туал­ки, под­кинем в Kali вто­рым жес­тким дис­ком вир­туаль­ный диск от Windows и нас­тро­им для Kali Shared Folder на жес­тком дис­ке тво­его хос­тового ком­па, где будет дос­таточ­но сво­бод­ного мес­та, что­бы сде­лать побай­товую копию дис­ка вин­ды. Если ты выделил на нее 40 Гбайт, то на дис­ке дол­жно быть минимум столь­ко же сво­бод­ного мес­та.

Заг­рузим­ся в Kali, соз­дадим точ­ку мон­тирова­ния и под­монти­руем Shared Folder:

$ sudo mkdir /mnt/hgfs
$ sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other

На­ходим инте­ресу­ющий нас жес­ткий диск:

$ sudo fdisk -l

В нашем слу­чае это sda. Запус­каем соз­дание побай­товой копии:

$ sudo dd if=/dev/sda of=/mnt/hgfs/dd/disk1.dd bs=8M

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

 

Plaso

Plaso (рекур­сивный акро­ним от исланд­ско­го Plaso Langar Að Safna Öllu, или для тех, кто не очень понима­ет исланд­ский, «Plaso хочет соб­рать все») — инс­тру­мент, раз­работан­ный на Python, основная задача которо­го — пос­тро­ить супер­тай­млайн‑все­го‑воз­можно­го‑что‑про­исхо­дило‑в-сис­теме и вып­люнуть все это в один гигабай­тный CSV.

Ре­лиз 1.0.0 сос­тоял­ся 5 декаб­ря 2012 года, хотя если смот­реть глуб­же, на ути­литу log2timeline, написан­ную на Perl, то пер­вое упо­мина­ние на Forensics Wiki датиру­ется аж 28 августа 2009-го. В те вре­мена некото­рые нынеш­ние компь­ютер­ные хулига­ны еще толь­ко начали посещать час­тные дет­ские дош­коль­ные учрежде­ния, в которых им, к сожале­нию, ничего про уго­лов­ный кодекс не рас­ска­зыва­ли.

 

Установка

Для уста­нов­ки Plaso (на момент написа­ния статьи акту­аль­ный релиз 20210606) осо­бых скил­лов не тре­бует­ся, на Linux так и вооб­ще все, что тебе нуж­но, — тер­минал и дос­туп в интернет. На слу­чай, если тебе захочет­ся покопать­ся в исходни­ках, кло­нируй ре­пози­торий, если не захочет­ся — исполь­зуй pip.

$ sudo apt-install python3-pip
$ pip install plaso elasticsearch

Да­лее уста­нав­лива­ем все тре­буемые зависи­мос­ти:

$ pip install -r requirements.txt

В фай­ле requirements.txt отсутс­тву­ют опци­ональ­ные зависи­мос­ти chardet, fakeredis и mock, поэто­му еще одна коман­да, и все успешно заведет­ся:

$ pip install chardet fakeredis mock

На вин­де дела обсто­ят пос­ложнее толь­ко лишь из‑за того, что тебе при­дет­ся доус­тановить в сис­тему Build Tools for Visual Studio. Но проб­лема реша­ется эле­мен­тарно, если у тебя есть в загаш­нике уста­новоч­ный пакет Visual Studio 2017 (имен­но с ним у меня все получи­лось). Запус­ти уста­нов­ку и выбери в раз­деле Individual components ком­понент VC++ 2015.3 v14.00 (v140) toolset for desktop. Пос­ле это­го все зависи­мос­ти уста­новят­ся через pip.

 

Набор инструментов

В сос­тав Plaso вхо­дит нес­коль­ко ути­лит, они находят­ся в катало­ге tools.

image_export — ути­лита для извле­чения из устрой­ства или его обра­за фай­лов по раз­личным кри­тери­ям: начиная c рас­ширения и путей, закан­чивая сиг­натура­ми и вре­менем соз­дания или модифи­кации. Кро­ме того, дан­ный инс­тру­мент пос­ле извле­чения фай­лов сге­нери­рует файл hashes.json, в который попадут хеш‑зна­чения всех извле­чен­ных фай­лов для даль­нейшей про­вер­ки, нап­ример на VirusTotal.

При­меры запус­ка:

py image_export.py disk1.dd

Па­рамет­ры --names, --extensions и --date-filter не дол­жны выз­вать у тебя никаких воп­росов, рас­смот­рим под­робнее толь­ко извле­чение по сиг­натурам.

py image_export.py --signatures list

Эта коман­да выведет все опи­сан­ные в data\signatures.conf сиг­натуры, которые мож­но поис­кать сре­ди иссле­дуемых фай­лов для извле­чения. Понят­ное дело, в кон­фиге записа­ны толь­ко базовые сиг­натуры на все слу­чаи жиз­ни, но ник­то не меша­ет самос­тоятель­но добавить в кон­фиг стро­ку с необ­ходимой тебе спе­цифи­чес­кой сиг­натурой фай­ла, глав­ное при этом — выб­рать уни­каль­ный иден­тифика­тор.

Нап­ример, извлечь все фай­лы Windows PE мож­но с исполь­зовани­ем готовой сиг­натуры exe_mz:

py image_export.py --signatures exe_mz disk1.dd

log2timeline — основной инс­тру­мент, с которо­го, собс­твен­но, две­над­цать лет назад все и началось. Он исполь­зует­ся для извле­чения раз­ных событий из фай­лов, катало­гов (нап­ример, точек мон­тирова­ния), устрой­ства или его обра­за. В резуль­тате работы ути­лита фор­миру­ет файл в фор­мате Plaso, в даль­нейшем он и будет исполь­зовать­ся для ана­лиза.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии