Автор: Андрей Михалюк, 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
- и также – Visual Studio C++ Build Tools
Шаг 2. Ставим Volatility
Морально подготовьтесь — это шаг, требующий наибольшей выдержки.
Сначала ставим Python (описано выше в этой статье).
Далее Git для Windows. Простой инсталлятор, можете смело оставлять дефолтные значения, когда инсталлятор вас что-то будет спрашивать (а спрашивать он будет много). Единственное, на чем акцентирую внимание, это текстовый редактор, по умолчанию это VIM, поэтому рекомендую выбрать тот, которым вы пользуетесь (для меня это либо Notepad++, либо Sublime).
И наконец ставим С++ Build Tools. Это едва ли не единственный родной для Windows инструмент, поэтому здесь также можете довериться и работать по схеме далее-далее… готово.
Теперь, наконец, руки дошли до Volatility. Заходим на GitHub страницу проекта и копируем ссылку на код.

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

Здесь мы используем ранее установленный 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, хотя большинство соединений — из США (где и находится условный пациент), но есть очень нетипичное соединение с Мексикой.
И на этом все?
Конечно, нет. Мы с вами только коснулись возможностей такой простой лаборатории по исследованию дапма памяти. Инструментов действительно очень много. А главное, что это открытое программное обеспечение активно поддерживается и обновляется.
Одним из ключевых элементов проведения расследования киберинцидента на компьютере или сети компьютеров является правильное получение и анализ оперативной памяти. Поскольку из мировой практики это один из главных инструментов получения доказательств неправомерных действий на рабочей станции.
Надеюсь, инструментарий, описанный выше, вам пригодится, а главное — станет стимулом углубиться в тему расследования инцидентов еще больше.







