Автор: Андрій Михалюк, CEO CoreWin
Сучасний цифровий світ, тим більш в наших реаліях, став значно менш безпечним. Загроза може чаїтися не тільки в добре відомих зонах ризику (як-то торент-форуми, сайти з порнографічними матеріалами, спам чи фішингові листи), але й в безпечних зонах.
Зловмисники все частіше використовують платформу Google Ads, щоб поширювати зловмисне програмне забезпечення серед користувачів, які нічого не підозрюють і шукають популярні програмні продукти.
Серед продуктів, імітованих у цих кампаніях, Grammarly, MSI Afterburner, Slack, Dashlane, Malwarebytes, Audacity, μTorrent, OBS, Ring, AnyDesk, Libre Office, Teamviewer, Thunderbird і Brave.
Зловмисники клонують офіційні вебсайти вищезазначених проєктів і поширюють троянські версії програмного забезпечення, коли користувачі натискають кнопку завантаження. Про ранні спроби такого підходу ми писали тут.
Звісно, найкращою рекомендацією захисту є використання спеціалізованих систем виявлення та реагування на атаку, також відомих як XDR, і систем збору та агрегації інцидентів (SIEM), якщо у вас об’ємна інфраструктура. Однак, для критичної інфраструктури, як і для проведення розслідування на інфікованому «пацієнті» цього може бути недостатньо. Як кажуть: хочеш зробити щось добре, зроби це своїми власними руками.
В цьому пості я хотів би поділитись методологією, яку сам вважаю однією з найуніверсальніших та найефективніших – аналізом оперативної пам’яті системи. Недоліком такого підходу є те, що для виявлення загрози, вона має бути активною, тобто система має бути активно зараженою. Переваги, думаю, будуть очевидні в ході розробки такої методики. Помітка, ця інструкція описана для Windows систем, для Linux інструментарій може відрізнятись, хоча методологія залишиться такою ж.
Крок 1. Підготовка
Спочатку вам потрібно підготуватись та встановити безкоштовні інструменти для роботи:
- інструмент збору дампу оперативної пам’яті DumpIt
- інструмент аналізу та розслідування інцидентів Volatility з графічним інтерфейсом
- працює на Python, тому його потрібно теж встановити
Крок 2. Збір інформації
Потрібно зібрати дамп пам’яті, для цього використаємо DumpIt. Інтерфейс простенький (текстова консоль), але для збору достатньо натиснути дві кнопки, спочатку «Y», а потім «Enter». Будьте готові до того, що дамп буде не маленький, на моїй машині він важив понад 9 Гб.

Таким чином, якщо якийсь зловмисник вас заразив чи навіть активно віддалено «оперує» прямо зараз, то в системі будуть виконуватись процеси, використовуючи оперативну пам’ять, а отже ми побачимо їх у цій «фотографії» оперативки.
Крок 3. Приклад
В реальному житті ми б надалі могли використовувати його, але оскільки моя машина чиста та без інфекцій, використаємо ось цей файл для прикладу.
Крок 4. Ставимо Volatility WorkBench
Спочатку ставимо Python. Тут все просто, качаємо останній stable release з сайту і запускаємо інсталятор. Важливо, на останньому етапі не забудьте оновити PATH.

Розпаковуємо архів та запускаємо VolatilityWorkbench.exe
В інтерфейсі знаходимо створений дамп пам’яті та запускаємо Get Process List.
Як тільки система проведе первинний аналіз – ми готові до найцікавішого.
Перші результати аналізу, мої результати нижче.

На перший погляд, все виглядає достатньо чисто, та в нас в розпорядженні є інструмент, який існує для пошуку ін’єкцій пам’яті.
В меню команд обираємо windows.Malfind.

Це інструмент, який переглядає бінарний код процесу та шукає підозрілі сигнатури в виконуваному бінарному коді. Якщо трошки поглибитись в методологію, то команда malfind допомагає знайти прихований або впроваджений код або DLL у пам’ять на основі таких характеристик, як тег VAD і дозволи.
В результаті ми змогли знайти перелік процесів, які підозрілі та потребують вивчення.

Перше, на що варто звернути увагу, це сам процес – чи він виглядає надійним, які його властивості на машині, частину процесів можна ідентифікувати одразу.
Може також бути таке, що сам процес є легітимним, але він заражений, відповідно зловмисник використовує його для власних обчислень, тому інколи в цьому переліку трапляються звичні та знайомі, на перший погляд, процеси, але це не дає гарантії, що інструмент хибно спрацював. Просто ситуація потребує подальшого вивчення.
Тепер нам зрозуміло, що варто копати далі, але набір інструментів Volatility WorkBench – обмежений, тому нам потрібно перейти на найновішу версію з командним рядком.
Крок 1. Підготовка
Спочатку вам потрібно підготуватись та встановити безкоштовні інструменти для роботи:
- інструмент аналізу та розслідування інцидентів Volatility
- працює на Python, тому його потрібно теж встановити (або поставлений з минулого кроку)
- для Windows також потрібен Git для Windows
- і також – VisualStudio С++ Buils Tools
Крок 2. Ставимо Volatility
Морально підготуйтесь – це крок, який вимагає найбільшої витримки.
Спочатку ставимо Python. (Описаний вище в цій статті)
Далі Git для Windows. Так само простий інсталятор, можете сміливо залишати дефолтні значення коли інсталятор вас щось питатиме (а питати він буде багато). Єдине на що зверну увагу, це текстовий редактор, за замовчуванням це VIM, тому рекомендую обрати той, яким ви користуєтесь (для мене це або Notepad++ або Sublime).
І зрештою ставимо С++ Build Tools. Це ледь не єдиний рідний для Windows інструмент, тому тут так само можете довіритись і працювати за схемою далі-далі-далі-…готово.
Тепер, нарешті, руки дійшли до Volatility. Заходимо на GitHub сторінку проєкту і копіюємо лінк до коду.

Заходимо в PowerShell під адміністратором та переходимо в директорію де буде стояти Volatility (в мене це C:\Volatility).

Tут ми використовуємо раніше встановлений git і клонуємо вітку в директорію командою git clone – раніше скопійована адреса –

Тепер нам треба поставити дуже вередливу на Windows бібліотеку python snappy. Я використовую ось цей ресурс Університету Каліфорнії. Відповідно в моєму випадку потрібна 64-бітна версія python_snappy 0.6.1 cp311 cp311 win_amd64.whl
Тепер ставимо бібліотеку. pip install – шлях до файлу

Чудово! якщо хтось коли-небудь намагався поставити цю бібліотеку на вінду – розуміє наскільки це приємне повідомлення.
Заходимо в створену під час клонування директорію volatility3

Заходимо у файл requirements.txt, та змінюємо версію python-snappy==0.6.0 на python-snappy==0.6.1 | оскільки саме її ми і поставили раніше.
Ставимо всі залежності, тобто бібліотеки, які потрібні для функціонування. На щастя список всіх залежностей вже є в наявності, тому вводимо наступну команду: pip install -r .\requirements.txt

Тепер (нарешті) перевіряємо чи працює volatility командою python vol.py -v

Повернемось до аналізу
Щоб проаналізувати файл дамп необхідно його відкрити наступною командою: python vol.py -f [шлях і назва файлу] [платформа].[модуль]
Нас наразі цікавить чи є підозрілий обмін в мережі, щоб ідентифікувати, чи підключається до машини зловмисник.
Виконуємо команду: python vol.py -f C:\Laboratory\WinDump.mem windows.netstat
Маємо цікаві результати:

Декілька відкритих з’єднань. Перегляньмо де ці IP знаходяться.
Тут можна звернутись до онлайн сервісів IP Lookup, я користуюсь ip2location, хоча більшість з’єднань – з США (де і знаходиться умовний пацієнт) але є дуже не типове з’єднання з Мексикою.
І на цьому все?
Звісно, що ні. Ми з вами тільки торкнулись можливостей такої простої лабораторії з дослідження дапму пам’яті. Інструментів насправді дуже багато. А головне, що це відкрите програмне забезпечення наразі активно підтримується та оновлюється.
Одним із ключових елементів проведення розслідування кіберінцидентів на комп’ютері чи мережі комп’ютерів є правильне отримання та аналіз оперативної пам’яті. Оскільки зі світової практики це один з ключових інструментів отримання доказів неправомірних дій на робочій станції.
Сподіваюсь інструментарій описаний вище стане вам в пригоді, а головне – стане стимулом заглибитись у тему розслідування інцидентів ще більше.