Хакнут ли ваш ПК? Анализ оперативной памяти. Практическое руководство.

Автор: Андрей Михалюк, 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 Гб.

ram_check

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

Шаг 3. Пример

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

Шаг 4. Ставим Volatility WorkBench

Сначала ставим Python. Здесь все просто, качаем последний stable release с сайта и запускаем инсталлятор. Важно: на последнем этапе не забудьте обновить PATH.

ram_check2

Распаковываем архив и запускаем VolatilityWorkbench.exe

В интерфейсе находим созданный дамп памяти и запускаем Get Process List.

Как только система проведет первичный анализ — мы готовы к самому интересному.

Первые результаты анализа, мои результаты ниже.

ram_check3

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

В меню команд выбираем windows.Malfind.

ram_check4

Это инструмент, который просматривает бинарный код процесса и ищет подозрительные сигнатуры в выполняемом бинарном коде. Если немного углубиться в методологию, команда malfind помогает найти скрытый или внедренный код или DLL в память на основе таких характеристик, как тег VAD и разрешения.

В результате мы смогли найти перечень подозрительных и требующих изучения процессов.

ram_check5

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

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

Теперь нам понятно, что следует копать дальше, но набор инструментов 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 страницу проекта и копируем ссылку на код.

ram_check6

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

ram_check7

Здесь мы используем ранее установленный git и клонируем ветку в директорию командой git clone – ранее скопированный адрес –

ram_check8

Теперь нам нужно поставить очень капризную на Windows библиотеку python snappy. Соответственно в моем случае нужна 64-битная версия python_snappy 0.6.1 cp311 cp311 win_amd64.whl

Теперь ставим библиотеку. pip install – путь к файлу

ram_check9

Прекрасно! Если кто-нибудь когда-либо пытался поставить эту библиотеку на винду — понимает насколько это приятное сообщение.

Заходим в созданную во время клонирования директорию volatility3.

ram_check10

Заходим в файл requirements.txt и меняем версию python-snappy==0.6.0 на python-snappy==0.6.1 | поскольку именно ее мы и поставили ранее.

Ставим все зависимости, то есть библиотеки, необходимые для функционирования. К счастью, список всех зависимостей уже присутствует, поэтому вводим следующую команду: pip install -r .\requirements.txt

ram_check11

Теперь (наконец) проверяем, работает ли volatility командой python vol.py -v

ram_check12

Вернемся к анализу

Чтобы проанализировать файл дамп, необходимо его открыть следующей командой: python vol.py -f [путь и название файла] [платформа].[модуль]

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

Выполняем команду: python vol.py -f C:\Laboratory\WinDump.mem windows.netstat

Есть интересные результаты:

ram_check13

Несколько открытых соединений. Просмотрим, где эти IP находятся.

Здесь можно обратиться к онлайн-сервисам IP Lookup, я пользуюсь ip2location, хотя большинство соединений — из США (где и находится условный пациент), но есть очень нетипичное соединение с Мексикой.

И на этом все?

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

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

Надеюсь, инструментарий, описанный выше, вам пригодится, а главное — станет стимулом углубиться в тему расследования инцидентов еще больше.

Подписаться на новости