Volatility как пользоваться windows

Обновлено: 07.07.2024

Использование волатильности для криминалистического анализа внутреннего доступа Windows (1): первый опыт

Введение

Следуя вышеизложенному, как упоминалось выше при использовании песочницы с кукушкой, при анализе вредоносного кода сначала используйте песочницу для грубого анализа, а затем целевая программа может быть динамически проанализирована (OD, отладка Windbg) или статический анализ (статическая антивирусная защита IDA). Компиляция). Если вам сложно каждый раз выполнять обратное преобразование, вы также можете использовать такие фреймворки, как Volatility, для проведения криминалистического анализа памяти. Volatility - это очень мощный инструмент для криминалистической экспертизы памяти, разработанный сотнями известных экспертов по безопасности со всего мира. Набор инструментов, которые можно использовать для сертификатов доступа в windows, linux, mac osx, android и других системах, давайте вместе испытаем его.

установка

Загрузите последнюю версию фреймворка:



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

Использование пакетов исходного кода под windows:

Если вы хотите установить исходный код Volatility, вы можете переключиться в основной каталог исходного пакета Volatility в командной строке, а затем выполнить команду установки:

Если вы не хотите устанавливать исходный пакет, вы также можете напрямую выполнить следующую команду:

Если не должно быть никаких аварий, будет выдана следующая ошибка из-за отсутствия двух вспомогательных пакетов, pycrypto и distorm.

2.jpg

Давайте работать вместе, чтобы решить указанную выше ошибку.

Сначала установите пакет distorm, разархивируйте его и перейдите в корневой каталог distorm в командной строке, выполните команду установки:

Сообщалось об ошибке. Это связано с тем, что установка на экспериментальной машине автора - vs2010. По умолчанию в исходном коде указан компилятор vs2008, поэтому я не знаю его здесь. Мы можем открыть консоль Visual Studio 2010,

Затем введите следующую команду:

Затем перейдите в корневой каталог пакета distorm и выполните команду установки:

4.jpg

Это означает, что пакет успешно установлен.

Затем установите пакет pycrypto. Как указано выше, используйте консоль Visual Studio 2010 для установки переменных среды, перейдите в корневой каталог пакета pycrypto и затем выполните команду установки:

5.jpg

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

Автор погуглил и обнаружил, что некоторые пользователи сети сталкивались с подобными проблемами раньше, но, похоже, они были решены.

6.jpg

На самом деле, это не так уж и сложно. Детскую обувь с небольшой базой на языке C. должно быть легко решить. Сначала используйте текстовый редактор, чтобы открыть файл заголовка ошибки tomcrypt_cipher.h, а затем найдите строку с ошибкой.

Язык C определяет массив, чтобы указать четкий размер массива, здесь остается пустым, поэтому сообщается об ошибке. Здесь мы пытаемся заполнить квадратные скобки 1. Затем установка по-прежнему сообщает об ошибке. Поэтому автор затем поискал крест имени cipher_descriptor [] Цитируя, я обнаружил, что это имя нигде не цитируется, поэтому вы можете посмотреть его здесь:

Затем выполните команду установки:

Обнаружил, что установка прошла успешно.

Затем, чтобы запустить Volatility, давайте проверим меню помощи:

Вы видите, что операция прошла успешно.

8.jpg

Что ж, здесь представлен пакет исходного кода под окнами, потому что окно консоли под окнами выглядит неудобно, автор немного навязчиво-компульсивен, поэтому автор сосредотачивается на использовании под linux.

Использование пакета исходного кода под linux (kali):

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

9.jpg

Выглядит намного круче, чем консоль под окнами.

Создать файл дампа памяти

Поскольку Volatility анализирует файлы дампа памяти, нам необходимо захватить дампы памяти системы, которая подозревается в атаке.Существует три основных метода захвата дампа памяти.

Используйте песочницу для создания файлов памяти

Во-первых, нам нужно изменить два файла конфигурации cuckoo.conf и report.conf, чтобы включить возможность создания дампов памяти.

10.jpg

11.jpg

Затем сохраните и отправьте вредоносный образец в песочницу с кукушкой.

12.jpg

После завершения анализа файл дампа памяти можно будет найти в каталоге соответствующего отчета.

13.jpg

Использование VMware для создания функций дампа памяти

Приостановите систему виртуальной машины, а затем найдите * .vmem в соответствующем каталоге, например:

14.jpg

Используйте стороннее программное обеспечение для получения дампа памяти

На физических машинах для получения дампов памяти обычно можно использовать следующие инструменты:

Правила грамматики волатильности

Просмотр справки

Используйте -h или --help, чтобы перечислить все доступные параметры и плагины

Результаты приведены ниже:

15.jpg

Вышеупомянутые профили очень важны для криминалистики памяти Windows. Обычно нам необходимо установить эту опцию.

Чтобы понять значение этой опции, нам сначала нужно взглянуть на новый термин - VTypes.

VTypes

Это язык для определения и анализа структур данных в среде Volatility. Большая часть нижнего уровня операционной системы написана на языке C, и большое количество структур данных используется для организации связанных переменных и атрибутов и управления ими. Поскольку Volatility написана на Python, Итак, нам нужен способ представления структуры данных языка C в исходном файле Python. Для этого используется VTypes.

Язык C определяет следующую структуру данных:

Использование языка VType для выражения вышеуказанной структуры выглядит следующим образом:

Чтобы понять приведенные выше определения, вам необходимо понимать базовый синтаксис Python, например: строки, словари, пары ключ-значение, списки, кортежи, наборы.

Во-первых, процесс имени структуры является первым ключом словаря, а следующее значение соответствует списку, 26 представляет размер структуры. Затем все элементы структуры являются кортежем,

Он содержит имя члена, затем смещение члена в структуре, а затем тип члена.

Такие обозначения можно увидеть везде в Volatility, например, в ключевой структуре данных ядра _EPROCESS окон:

16.jpg

Профили

Профиль - это набор VTypes, объединений и типов объектов в конкретной версии операционной системы и аппаратной архитектуре (x86, x64, ARM). Помимо этих компонентов, профиль также включает следующее:

Метаданные: название операционной системы (например: «windows», «mac», «linux»), версия ядра и номер компиляции.
Информация о системном вызове: индекс и имя системного вызова
Постоянное значение: глобальная переменная - глобальная переменная, которую можно найти по жестко заданному адресу в некоторых операционных системах.
Отображение системы: адреса ключевых глобальных переменных и функций (только для Linux и Mac)

Каждый профиль (файл конфигурации) имеет уникальное имя, которое обычно состоит из имени, версии, пакета обновления, системной структуры и другой информации об операционной системе. Например: Win7SP1x64 - это имя файла конфигурации 64-разрядной системы Windows 7 SP1.

Мы используем параметр --info, чтобы увидеть, какие значения профиля поддерживает Volatility.

17.jpg

Мы можем видеть из xp-win 10. Почему вы хотите установить параметр файла конфигурации, потому что разные версии операционной системы, элементы структуры данных ядра и смещения могут изменяться.

Общий формат команды

Как определить значение профиля файла дампа памяти

Если мы не указываем параметр --profile, по умолчанию используется WinXPSP2x86.

Мы можем использовать плагин imageinfo, чтобы угадать значение профиля файла дампа.

18.jpg

Мы можем заметить, что есть несколько значений профиля на выбор. Поскольку многие функции этих операционных систем схожи. Плагин imageinfo угадывает функцию значения профиля на основе функции плагина kdbgscan. А плагин kdbgscan через Найдите и проанализируйте характеристики блока данных отладчика ядра (_KDDEBUGGER_DATA64), чтобы угадать значение профиля.

Структура данных отладчика находится в модуле ядра NT (nt! KdDebuggerDataBlock). Она содержит скомпилированную строку, например: 3790.srv03_sp2_rtm.070216-1710, числовое значение указывает старший и дополнительный номера версий и номера пакетов обновления целевой операционной системы.

Плагин kdbgscan сканирует значение профиля файла дампа.

19.jpg

Вы можете видеть, что есть несколько результатов. В общем, первый результат правильный. Два плагина imageinfo и kdbgscan применимы только к файлу дампа памяти системы Windows. В Linux и Mac есть другие методы для определения правильного значения профиля.

Теперь мы можем указать значение параметра профиля.

Подключаемый модуль volshell используется для входа в эксклюзивную оболочку Volatility. В этой оболочке вы можете использовать команду dt («имя структуры данных ключа ядра») для просмотра определения структуры данных ключа ядра операционной системы.

20.jpg

Похоже ли это на команду dt в windbg?

Перечислить процесс

21.jpg

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

подводить итоги

Volatility - это очень мощный фреймворк криминалистического анализа памяти, который также можно использовать для изучения архитектуры ядра конкретной операционной системы. Некоторые детские ботинки могут сказать, что инструменты AntiRootkit можно использовать для судебного анализа окон, например Xuetr (PcHunter), PowerTool, Но этот вид AntiRootkit обычно реализуется путем загрузки драйвера ядра, и он обычно не является открытым исходным кодом.Если вы хотите выяснить принцип его реализации, выполнение обратного анализа занимает много времени.

Volatility как раз наоборот. Он не требует загрузки драйверов, написан на языке Python и имеет открытый исходный код. Вам необходимо понимать реализацию определенных функций. Вы можете самостоятельно просмотреть исходный код, чтобы изучить и изучить, и он поддерживает Windows, Linux, Mac OS X, Android, что положительно для улучшения. , Возможность обратного анализа имеет большое преимущество. Сотни экспертов по безопасности по всему миру усердно работали над созданием. И с помощью этого инструмента вам не нужно открывать windbg для отладки на двух машинах или локальной отладки ядра, когда вы хотите просмотреть определение структуры данных ядра Windows Эту же функцию можно выполнить, выполнив команду dt в эксклюзивной оболочке Volatility. Позже автор предоставит другой практический контент, использующий Volatility для анализа вредоносного кода Windows.


расследование инцидентов информационной безопасности

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

Информационная безопасность – это защищённость информации и поддерживающей инфраструктуры от случайных или преднамеренных воздействий естественного или искусственного характера, которые могут нанести неприемлемый ущерб субъектам информационных отношений [1].

В настоящее время выделяются различные направления деятельности по обеспечению информационной безопасности: составление модели угроз и нарушителей ИБ; оценка рисков нарушений ИБ; внедрение и совершенствование защитных мер; создание службы ИБ; менеджмент ИБ; менеджмент инцидентов ИБ; защита персональных данных и другие.

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

Целью работы является анализ тестовой операционной системы посредством применения возможностей инструмента Volatility Framework.

Инцидент информационной безопасности – одно или серия нежелательных или неожиданных событий в системе информационной безопасности, которые имеют большой шанс скомпрометировать деловые операции и поставить под угрозу защиту информации [2].

Volatility Framework – программа для исследования копий (образов) оперативной памяти. Фрэймворк с полностью открытым кодом, представляющий собой набор Python – инструментов для извлечения цифровых артефактов из энергонезависимой памяти (RAM). Эта утилита может быть полезна при расследовании инцидентов информационной безопасности или просто при исследовании работы программы с критичными данными.

Самой последней версией Volatility Framework является версия 2.5, выпущенная в октябре 2015 года. Более поздние версии также доступны в разделе Releases на официальном сайте Volatility Framework [3]. Некоторые параметры командной строки, опции и плагины могут незначительно отличаться от версии к версии. С полным списком команд Volatility Framework можно ознакомиться в [4].

Volatility Framework распространяется как в виде открытого исходного кода, так и в виде исполняемого файла (только для Windows).

На сегодняшний день программа поддерживает следующие платформы: Windows, Linux, OS X. Volatility Framework является одним из самых многофункциональных пакетов для исследования памяти. В его возможности входит извлечение информации о: списке запущенных процессов; списке открытых сетевых соединений; списке открытых сетевых сокетов; списке загруженных динамических библиотек (DLL) для каждого процесса; именах открытых файлов для каждого процесса; адресуемую память; открытых записей реестра; извлечение образов процессов.

Как было описано выше, целью данной работы является анализ тестовой операционной системы посредством применения возможностей инструмента Volatility Framework.

Результаты работы и их анализ

В ходе выполнения работы была получена первичная информация об образе памяти, представленная на рис. 1.

al1_1.tif

Рис. 1. Первичная информация о тестовом образе памяти

Анализ первичной информации позволяет выяснить дату и время получения данного образа памяти, а также тип операционной системы: Windows XP Service Pack 3 (x86).

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

--profile=WinXPSP3x86 -f C:\Users\ДНС\Desktop\volatility_2.5.win.standalone\tas

Volatility Foundation Volatility Framework 2.5

Offset(V) Name PID PPID Thds Hnds Sess Wow64 Star

0x823c8830 System 4 0 59 403 ------ 0

0x820df020 smss.exe 376 4 3 19 ------ 0 2010

-10-29 17:08:53 UTC+0000

0x821a2da0 csrss.exe 600 376 11 395 0 0 2010

-10-29 17:08:54 UTC+0000

0x81da5650 winlogon.exe 624 376 19 570 0 0 2010

-10-29 17:08:54 UTC+0000

0x82073020 services.exe 668 624 21 431 0 0 2010

-10-29 17:08:54 UTC+0000

0x81e70020 lsass.exe 680 624 19 342 0 0 2010

-10-29 17:08:54 UTC+0000

0x823315d8 vmacthlp.exe 844 668 1 25 0 0 2010

-10-29 17:08:55 UTC+0000

0x81db8da0 svchost.exe 856 668 17 193 0 0 2010

-10-29 17:08:55 UTC+0000

0x81e61da0 svchost.exe 940 668 13 312 0 0 2010

-10-29 17:08:55 UTC+0000

0x822843e8 svchost.exe 1032 668 61 1169 0 0 2010

-10-29 17:08:55 UTC+0000

0x81e18b28 svchost.exe 1080 668 5 80 0 0 2010

-10-29 17:08:55 UTC+0000

0x81ff7020 svchost.exe 1200 668 14 197 0 0 2010

-10-29 17:08:55 UTC+0000

0x81fee8b0 spoolsv.exe 1412 668 10 118 0 0 2010

-10-29 17:08:56 UTC+0000

0x81e0eda0 jqs.exe 1580 668 5 148 0 0 2010

-10-29 17:09:05 UTC+0000

0x81fe52d0 vmtoolsd.exe 1664 668 5 284 0 0 2010

-10-29 17:09:05 UTC+0000

0x821a0568 VMUpgradeHelper 1816 668 3 96 0 0 2010

-10-29 17:09:08 UTC+0000

0x8205ada0 alg.exe 188 668 6 107 0 0 2010

-10-29 17:09:09 UTC+0000

0x820ec7e8 explorer.exe 1196 1728 16 582 0 0 2010

-10-29 17:11:49 UTC+0000

0x820ecc10 wscntfy.exe 2040 1032 1 28 0 0 2010

-10-29 17:11:49 UTC+0000

0x81e86978 TSVNCache.exe 324 1196 7 54 0 0 2010

-10-29 17:11:49 UTC+0000

0x81fc5da0 VMwareTray.exe 1912 1196 1 50 0 0 2010

-10-29 17:11:50 UTC+0000

0x81e6b660 VMwareUser.exe 1356 1196 9 251 0 0 2010

-10-29 17:11:50 UTC+0000

0x8210d478 jusched.exe 1712 1196 1 26 0 0 2010

-10-29 17:11:50 UTC+0000

0x82279998 imapi.exe 756 668 4 116 0 0 2010

-10-29 17:11:54 UTC+0000

0x822b9a10 wuauclt.exe 976 1032 3 133 0 0 2010

-10-29 17:12:03 UTC+0000

0x81c543a0 Procmon.exe 660 1196 13 189 0 0 2011

-06-03 04:25:56 UTC+0000

0x81fa5390 wmiprvse.exe 1872 856 5 134 0 0 2011

-06-03 04:25:58 UTC+0000

0x81c498c8 lsass.exe 868 668 2 23 0 0 2011

-06-03 04:26:55 UTC+0000

0x81c47c00 lsass.exe 1928 668 4 65 0 0 2011

-06-03 04:26:55 UTC+0000

0x81c0cda0 cmd.exe 968 1664 0 -------- 0 0 2011

-06-03 04:31:35 UTC+0000 2011-06-03 04:31:36 UTC+0000

0x81f14938 ipconfig.exe 304 968 0 -------- 0 0 2011

-06-03 04:31:35 UTC+0000 2011-06-03 04:31:36 UTC+0000

Полученный список процессов был проанализирован. Большинство из процессов являются системными, остальные связаны с работой программы VMware. В сети Интернет выполнен поиск описания по каждому из процессов. В ходе анализа была найдена информация о том, что один из процессов lsass.exe – необходимый системный процесс, отвечающий за работу локального сервера проверки подлинности, политику безопасности и авторизацию пользователей. Взаимодействует со службой Winlogon. Однако, lsass.exe может также быть процессом, известным как троянский вирус. Эта троянская программа позволяет злоумышленникам получать доступ к вашему ПК, похищать пароли и персональные данные. Под именем lsass.exe известен также downloader – программа, загружающая данные (в том числе вирусы) из Интернета на ПК пользователя без их ведома [5].

В ходе более детального исследования процесса lsass.exe было отмечен его неоднократный старт, причем с ощутимой разницей во времени старта. Более того, процесс lsass.exe находится в числе «первых» загружаемых при загрузке. В силу этого значение идентификатора этого процесса является небольшим. Однако подозрительные процессы с PID = 868 и PID = 1928 имеют более высокое значение идентификатора, нежели процесс с PID = 680.

Также можно заметить, что процесс с PID = 680 был порожден процессом с PID = 624 (а именно, процессом winlogon.exe). Это является правильным поведением процесса lsass.exe, так как он взаимодействует со службой Winlogon. В случае процессов с PID = 1928 и PID = 868 такого взаимодействия не наблюдается. В этом можно наглядно убедиться, построив дерево процессов:

--profile=WinXPSP3x86 -f C:\Users\ДНС\Desktop\volatility_2.5.win.standalone\tas

Volatility Foundation Volatility Framework 2.5

Name Pid PPid Thds Hnds T

.. 0x81da5650:winlogon.exe 624 376 19 570 2

010-10-29 17:08:54 UTC+0000

. 0x82073020:services.exe 668 624 21 431 2

010-10-29 17:08:54 UTC+0000

. 0x81c47c00:lsass.exe 1928 668 4 65 2

011-06-03 04:26:55 UTC+0000

. 0x81c498c8:lsass.exe 868 668 2 23 2

011-06-03 04:26:55 UTC+0000

. 0x81e70020:lsass.exe 680 624 19 342 2

010-10-29 17:08:54 UTC+0000

В ходе дальнейшего исследования были проанализированы список открытых сетевых соединений и список открытых сетевых сокетов. Было установлено, что на момент получения образа памяти никаких сетевых соединений не было установлено (рис. 2).

al2.tif

Рис. 2. Список открытых сетевых соединений

Анализ списка открытых сетевых сокетов (рис. 3) дает еще одно основание полагать, что процесс с PID = 680 является безопасным процессом с характерным для него поведением. Дело в том, что назначение процесса lsass.exe предполагает, как правило прослушивание портов (в данном случае, это порты 500 и 4500. В то же время, анализ сокетов дает еще один аргумент в пользу подозрительности процессов с PID = 868 и PID = 1928.

al3.tif

Рис. 3. Список открытых сетевых сокетов

Затем для каждого из процессов с PID = 680, 868, 1928 был получен список загруженных библиотек. Их анализ позволил выявить небольшое количество DLL для подозрительных процессов с PID = 868, 1928 по сравнению с PID = 680 (в четыре и два раза меньшее количество DLL соответственно). Ниже представлен список DLL для процесса с PID = 868:

--profile=WinXPSP3x86 -f C:\Users\ДНС\Desktop\volatility_2.5.win.standalone\tas

k3.vmem dlllist -p 868

Volatility Foundation Volatility Framework 2.5

lsass.exe pid: 868

Command line : «C:\WINDOWS\\system32\\lsass.exe»

Base Size LoadCount Path

0x01000000 0x6000 0xffff C:\WINDOWS\system32\lsass.exe

0x7c900000 0xaf000 0xffff C:\WINDOWS\system32\ntdll.dll

0x7c800000 0xf6000 0xffff C:\WINDOWS\system32\kernel32.dll

0x77dd0000 0x9b000 0xffff C:\WINDOWS\system32\ADVAPI32.dll

0x77e70000 0x92000 0xffff C:\WINDOWS\system32\RPCRT4.dll

0x77fe0000 0x11000 0xffff C:\WINDOWS\system32\Secur32.dll

0x7e410000 0x91000 0xffff C:\WINDOWS\system32\USER32.dll

0x77f10000 0x49000 0xffff C:\WINDOWS\system32\GDI32.dll

Далее, используя ключ –malfind, был выполнен поиск скрытых DLL для подозрительных процессов. Для подозрительных процессов были получены Crash Dump Files:

--profile=WinXPSP3x86 -f C:\Users\ДНС\Desktop\volatility_2.5.win.standalone\tas

k3.vmem malfind -p 868 -D C:\Users\ДНС\Desktop\volatility_2.5.win.standalone\Але

Volatility Foundation Volatility Framework 2.5

Process: lsass.exe Pid: 868 Address: 0x80000

Vad Tag: Vad Protection: PAGE_EXECUTE_READWRITE

Flags: Protection: 6

0x00080000 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00 MZ.

0x00080010 b8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 . @.

0x00080020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .

0x00080030 00 00 00 00 00 00 00 00 00 00 00 00 08 01 00 00 .

Для дальнейшего анализа файлы были загружены на VirusTotal. Каждый из файлов был распознан большинством антивирусов как троянская программа – Stuxnet (рис. 4).

al4.tif

Рис. 4. Результат анализа файлов

Затем был проанализирован список драйверов (рис. 5) с помощью команды modscan (позволяет получить список ранее выгруженных драйверов и драйверов, которые были скрыты). Попытка поиска в сети Интернет имени первого же драйвера из списка принесла результат: Первая модификация червя Stuxnet, созданная в 2009 году, использовала только один файл драйвера – mrxcls.sys, – и в нем отсутствовала цифровая подпись. В 2010 году авторы создали второй драйвер mrxnet.sys (его целью было сокрытие файлов червя на USB-дисках) и снабдили mrxnet.sys и драйвер mrxcls.sys цифровыми сертификатами компании Realtek [6].

al5.tif

Рис. 5. Список драйверов

В ходе проведенного исследования тестового образа памяти Task3.vmem было обнаружено действие вредоносной троянской программы – Stuxnet. Win32/Stuxnet – компьютерный червь, поражающий компьютеры под управлением операционной системы Microsoft Windows. Данный вирус использует четыре уязвимости системы Microsoft Windows (уязвимость «нулевого дня» (zero-day) и три ранее неизвестные уязвимости), позволяющие ему распространяться при помощи USB-flash накопителей.

В ходе работы установлено, что червь установил в систему два драйвера, один из которых является драйвером-фильтром файловой системы, скрывающим наличие компонентов вредоносной программы на съемном носителе. Второй драйвер используется для внедрения зашифрованной динамической библиотеки в системные процессы и содержит в себе специализированное ПО для выполнения основной задачи. Драйверы, которые троян устанавливает в систему, снабжены цифровыми подписями, украденными у производителей легального программного обеспечения. Злоумышленники используют цифровую подпись для «тихой» установки драйверов руткита в целевую систему. В системах безопасности многих производителей файлы, подписанные известными фирмами, заведомо считаются безопасными, и наличие подписи дает возможность беспрепятственно, не выдавая себя, производить действия в системе. Кроме того, червь располагает механизмами контроля количества заражений, самоликвидации и дистанционного управления.

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

Блог творческого ИТ-практика. Возьми свою мысль и дай ей ускорение идеи. В моем фокусе: сети, безопасность, виртуализация, web, мультимедиа.

А А Saturday, 7 August 2021

Анализ дампа памяти фреймворком Volatility.


Криминалистический анализ дампов памяти - метод исследования, который включает в себя поиск и извлечение криминалистических артефактов из физической памяти компьютера (ОЗУ). В памяти компьютера хранится ценная информация о состоянии системы во время выполнения. Создание дампа памяти и его анализ дадут необходимую для расследования информацию, например о том, какие приложения работают в системе, к каким объектам (файлу, реестру и т. д.) эти приложения обращаются, сведения об актив ных сетевых соединениях, загруженных модулях, загруженных драйверах ядра и другую информацию. По этой причине криминалистический анализ дампов памяти используется при реагировании на компьютерные инциденты и анализе вредоносных программ.

В большинстве случаев вы можете сделать дамп памяти виртуальной машины, приостановив ее. Например, после выполнения образца вредоносного ПО на рабочей станции VMware вы можете приостановить виртуальную машину, которая запишет гостевую память (RAM) в файл с расширением .vmem на диске главного компьютера. В случае с такими приложениями, как VirtualBox, когда дамп памяти нельзя сделать путем приостановки, вы можете использовать утилиту типа DumpIt на гостевом компьютере.

После того как вы сделали дамп памяти зараженной системы, следующим шагом является анализ полученного образа. Volatility представляет собой лучший фреймворк для компьютерной криминалистики с открытым исходным кодом, написанный на Python, позволяющий анализировать и извлекать цифровые артефакты из образа памяти. Volatility может работать на различных платформах (Windows, macOS и Linux). Он поддерживает анализ памяти из 32-разрядных и 64-разрядных версий Windows, MacOS и операционной системы Linux.

Volatility состоит из ряда плагинов, которые могут извлекать различную информацию из образа памяти. Команда volatility-2.4.standalone.exe -h отображает поддерживаемые плагины.

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

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" imageinfo

Следующая команда использует плагин pslist для вывода списка запущенных процессов из образа памяти, полученного из Windows ХР (32-разрядная версия) с пакетом обновления 3:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 pslist --output-file=process.txt


Вывод по процессу с PID 684:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 pslist -p 684

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 psscan -v


При изучении процессов может быть полезно определить родительские/дочерние связи между процессами. В ходе исследования вредоносных программ это поможет вам понять, какие еще процессы связаны с вредоносным процессом. Плагин pstree отображает связи родительских и дочерних процессов, используя выходные данные из pslist и форматируя их в виде дерева. В следующем примере при запуске плагина pstree для зараженного образа памяти отображается связь процессов; дочерний процесс имеет отступ вправо и начинается с периодов:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 pstree --output-file=prctree.txt

Злоумышленник может установить драйвер ядра для запуска в пространстве ядра и изменить теги пула или любое другое поле в _POOL_HEADER. Изменяя тег пула, злоумышленник может помешать правильной работе плагинов, которые полагаются на сканирование тегов пула. Другими словами, изменяя тег пула, можно скрыть процесс от psscan. Чтобы преодолеть эту проблему, плагин psxview использует извлечение информации о процессе из разных источников. Он перечисляет процесс семи разными способами. Сравнивая выходные данные из разных источников, можно обнаружить несоответствия, вызванные вредоносным ПО. На следующем скриншоте psxview перечисляет процессы, используя семь различных методов:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 psxview --apply-rules

Вы также можете отфильтровать результаты для определенного типа объекта (Файл, Ключ, Процесс, Мьютекс и т. д.), используя опцию -t. Плагин используется для вывода списка мьютексов (mutex), открытых процессом (с pid 588):

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 handles -p 588 -t Mutant

В следующем примере образа памяти, зараженного руткитом TDL3, процесс svchost.exe (pid 884) имеет открытые дескрипторы файлов для вредоносной библиотеки DLL и драйвера ядра, связанного с руткитом:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 handles -p 884 -t File

Чтобы вывести список загруженных модулей (исполняемых файлов и библиотек DLL), вы можете использовать плагин dlllist. Плагин dlllist также отображает полный путь, связанный с процессом:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 dlllist -p 1300

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 ldrmodules -p 1300

В следующем примере образа памяти, зараженного вредоносным ПО, подключаемый модуль procdump используется для сброса исполняемого файла вредоносного процесса svchost.exe (pid 956). При помощи опции -D (--dump-dir) вы указываете имя каталога, в который выгрузите исполняемые файлы. Файл назван на основе pid процесса, такого как executable.PID.exe:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 procdump -p 956 -D C:\JeaDemo

Следующая команда показывает пример использования плагина connections для вывода на экран активных подключений из дампа памяти:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 connections

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 connscan

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 netscan

Чтобы вывести на экран раздел реестра, подразделы и его значения, вы можете использовать плагин printkey, предоставляя желаемый путь к ключу реестра, используя аргумент -K (--key):

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 printkey -K "Microsoft\Windows\CurrentVersion\Run"

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 printkey -K "Software\Microsoft\Windows\CurrentVersion\Run"

Плагины Volatility, такие как userassist, shellbags и shimcache, анализируют эти ключи реестра, содержащие двоичные данные, и отображают информацию в гораздо более удобочитаемом формате. Раздел реестра Userassist содержит список программ, которые были выполнены пользователем в системе, и время, когда программа была запущена:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 userassist

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

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 shimcache

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 shellbags

Чтобы вывести список служб и информацию о них, например отображаемое имя, тип службы и тип запуска, из образа памяти, можно использовать плагин svcscan:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 svcscan

Плагин cmdscan перечисляет команды, выполняемые cmd.exe:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 cmdscan

Плагин cmdscan отображает команды, выполненные злоумышленником. Чтобы понять, была команда выполнена успешно или нет, можно использовать плагин consoles:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 consoles

Что осталось в истории web-браузера:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 iehistory

Что осталось в буфере обмена:

:volatility-2.4.standalone.exe -f "Clone of WinXP_ZverCD.vmem" --profile=WinXPSP3x86 clipboard

Так что изучайте плагины фреймворка и память ПК. Удачи.


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

Еще инте­рес­ные дан­ные мож­но най­ти в фай­лах под­качки ( pagefile. sys ) и гибер­нации ( hiberfil. sys ). Для *nix-based-сис­тем сто­ит поис­кать в swap-раз­деле.

Для ана­лиза дам­пов памяти сущес­тву­ет нес­коль­ко при­ложе­ний, которые на слу­ху у всех, кто хоть раз имел дело с задача­ми на форен­зику: это Volatility, Memoryze и Autopsy (в связ­ке с Volatility). Есть, конеч­но, и дру­гие, но под­робно мы на них оста­нав­ливать­ся не будем.

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

Задание

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


У меня есть самый безопас­ный менед­жер паролей. Даже если ты укра­дешь мой ноут­бук, ты не смо­жешь узнать мои сек­реты.

Под­сказ­ка: Уда­лен­ный не зна­чит обя­затель­но бра­узер

За­кача­ем наш образ на машину, где будем про­водить ана­лиз (у меня это Kali):

И сра­зу же про­верим, что с ним все в поряд­ке:

Ес­ли хеш не сошел­ся с исходным хешем — при­дет­ся еще раз ска­чать архив.

О важности актуальных версий

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

Од­нако здесь есть неболь­шие шерохо­ватос­ти: раз­работ­чик может забыть (или забить?) обно­вить пакет в репози­тории. В таких слу­чаях при­ходит­ся искать исходни­ки и собирать акту­аль­ную вер­сию самос­тоятель­но.

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

Что­бы с тобой не слу­чилось подоб­ного, перед началом решения задачи я нас­тоятель­но рекомен­дую обно­вить (или уста­новить) Volatility с гит­хаба про­екта.

Определяем профиль

Пер­вым делом нам необ­ходимо опре­делить вер­сию опе­раци­онной сис­темы, с которой сни­мали сле­пок. Это мож­но сде­лать коман­дой imageinfo :


Нам нуж­но обра­тить вни­мание на строч­ку с Suggested Profile(s). Имен­но здесь нам говорят, что пред­полага­емый про­филь слеп­ка опе­ратив­ной памяти — Win10x64_18362 . Теперь мы дол­жны ука­зывать аргу­мент --profile Win10x64_18362 для пос­леду­ющих команд.

Пол­ная докумен­тация по Volatility есть в Wiki по инс­тру­мен­ту на GitHub.

Собираем информацию о машине

Ка­кую информа­цию име­ет смысл добыть вна­чале? Обыч­но это:

  • про­цес­сы;
  • ис­тория бра­узе­ра;
  • ис­тория запущен­ных команд в кон­соли.

Этих трех пун­ктов хва­тает для опре­деле­ния век­тора даль­нейшей раз­ведки.

Процессы

Что­бы най­ти про­цес­сы, нам дос­таточ­но исполь­зовать коман­ду pstree . Есть еще pslist , но пер­вая коман­да удоб­нее, потому что показы­вает про­цес­сы в виде дерева — так нам­ного про­ще понять, на какие из них сто­ит обра­тить вни­мание.

$ vol. py -f challenge. vmem --profile Win10x64_18362 pstree


Ни­чего бро­сающе­гося в гла­за, вро­де pswd_manager. exe или not_a_virus. exe , не вид­но, поэто­му про­дол­жим нашу раз­ведку.

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

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

Читайте также: