Как установить volatility в linux

Обновлено: 04.07.2024

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

Первые шаги

Анализируем файловую систему

Теперь данные никуда не денутся, и их можно исследовать. Утилита mmls позволяет вывести таблицу разделов и найти неиспользованные сектора, которые не показывает `fdisk -l`. Они могут появляться как в следствие атак, так и в случае ошибок работы программ разметки диска.

Утилита mmls позволяет вывести таблицу разделов и найти неиспользованные сектора


Смотрим статистику по образу и файловым системам, занятым и свободным блокам:

Теперь приступаем к исследованию. При помощи утилиты mactime нам нужно узнать, какие inode изменялись с определенного времени или в интересующем нас интервале. На вход необходимо подать файл, созданный при помощи `ils -m` или `fls -m`.

Спасаем файлы

На данный момент обладаем информацией о подозрительных inodes. Используя icat, можем скопировать файл по номеру inode.

Теперь при помощи команды `file delete_file` узнаем, что это за файл. При удачном стечении обстоятельств, восстановленный таким образом бинарник без проблем выполняется. Натравив grep, можем попробовать найти нужные ключевые слова (вроде password, login). Кстати, команда `img_cat fs.img` позволяет вывести контент всего диска или определенной части (оставив метаданные), преобразовав его из raw, правда, искать в этой куче очень тяжело.
Написав небольшой скрипт, можно попытаться восстановить все удаленные файлы.

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

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

Теперь при помощи blkcat мы можем прочитать, что записано в этом блоке или секторе. Поддерживается несколько форматов вывода: raw, текст ASCII (-а), hexdump (-h), выводить статистику (-s), просматривать файл подкачки (-f swap), HTML (-w) и другие.

В output найдем восстановленные файлы и отчет.

Анализируем данные

Собираем информацию о состоянии ОЗУ

Найти крошечный зловред на терабайтном харде это все равно, что иголку в стогу сена. Оперативная память компьютера на порядок меньше по объему, и ее анализ может значительно сократить время исследования. Например, некоторые типы вирусов живут только в ОЗУ, а тело на диске нередко шифруют, поэтому данные можно найти только на живой системе. В Linux стандартные утилиты ps, netstat и lsof позволяют собрать общую информацию о процессах и сетевых соединениях, но ее не всегда достаточно, поскольку зловред может скрывать от них свое присутствие.
Модуль ядра fmem (hysteria.sk/

Получаем файл module.dwarf. Создаем профиль.

Смотрим список доступных параметров и модулей Volatility

Заключение

Недавно закончился OtterCTF (для интересующихся — ссылка на ctftime), который в этом году меня, как человека, достаточно плотно связанного с железом откровенно порадовал — была отдельная категория Memory Forensics, которая, по сути, представляла из себя анализ дампа оперативной памяти. Именно ее я хочу разобрать в этом посте, всем кому интересно — добро пожаловать под кат.

Введение

Возможно, на Хабре уже были статьи, описывающие работу с Volatility, но, к сожалению, я их не нашел. Если не прав — киньте в меня ссылкой в комментариях. Эта статья преследует две цели — показать, насколько бессмысленны все попытки администратора защитить систему, в случае если у атакующего есть дамп оперативной памяти и познакомить читателей с самым прекрасным, на мой взгляд, инструментом. Ну и, конечно же, обменяться опытом. Достаточно воды, приступим!

Знакомство с инструментом


Volatility — open-sorce фреймворк, который развивается сообществом. Написан на втором питоне и работает с модульной архитектурой — есть т.н. плагины, которые можно подключать для анализа и даже можно писать самому недостающие. Полный список плагинов, которые доступны из коробки можно посмотреть с помощью volatility -h .

Из-за питона инструмент кроссплатформенный, поэтому проблем с запуском под какой-то популярной ОС, на которой есть питон возникнуть не должно. Фреймворк поддерживает огромное количество профилей (в понимании Volatility — системы, с которых был снят дамп): от популярных Windows-Linux-MacOs до "напрямую" списанных dd-дампов и дампов виртуальных машин (как QEMU, так и VirtualBox). По-моему, очень неплохой наборчик.

Мощь этого инструмента действительно потрясает — я наткнулся на него в момент отлаживания своего ядра для ARM'a и он прекрасно анализировал то, что я давал ему на вход

Как бонус — поддержка почти любого адресного пространства, которое можно себе вообразить.
Кажется, пиара получилось чуть больше, чем планировалось изначально. Давайте попробуем заняться самим анализом.

Базовая информация и поверхностный анализ

Для тех, кто хочет проделывать все манипуляции по ходу статьи — ссылка на Mega с образом или можно с помощью wget:

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

В нашем случае выхлоп будет примерно следующим:

Итак, мы получили почти исчерпывающую информацию о нашем дампе — предположительно, с какой ОС он был сделан (отсортировано в порядке вероятности), локальную дату и время на момент снятия дампа, адресацию и еще много чего. Итак, мы поняли, что перед нами дамп Windows 7 Service Pack 1 x64. Можно копать вглубь!

What's the password


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

Для начала, поймем, какие пользователи были в системе и, заодно, попробуем достать их пароли. Сами пароли достать сложнее, а поэтому понадеемся на то, что нам попался не очень умный человек и получится вскрыть хеш от его пароля. Остается достать его! Для этого попробуем посмотреть _CMHIVE — как правило, там всегда можно найти что-то интересное во время работы Windows. Для этого просто подключим плагин hivelist , при этом указав Win7 в профиле:

Прекрасно! Мы, предположительно, получили имя пользователя и, заодно, убедились, что нужные нам SYSTEM и SAM уже подгружены в память. Теперь просто достаем хеши и идем перебирать:

По итогу, у нас есть три пользователя — Administrator(31d6cfe0d16ae931b73c59d7e0c089c0) , Guest(31d6cfe0d16ae931b73c59d7e0c089c0) и наш Rick(518172d012f97d3a8fcc089615283940) . Хеши Windows 7 это NTLM и перебирать их реально долго. Могу сказать, что я у себя занимался этим почти сутки на игровой видеокарте и так и не пришел ни к чему. Поэтому можно пойти более простым путем и попробовать пробиться с помощью mimikatz . Не всегда панацея и не всегда работает, но, зато, если работает, то выдает результат всегда. Тут пригождается та самая универсальность volatility — есть пользовательский плагин mimikatz. Скачиваем в любую удобную папку и далее при запуске указываем путь к этой папке:

И сразу же получаем пароль пользователя:

General Info


Теперь, когда мы знаем, кто мы, надо бы понять, где мы. То есть хорошо бы узнать наш IP-адрес и имя машины. В случае с IP-адресом все просто — смотрим на список подключений на момент дампа с помощью netscan :

IP 192.168.202.131 найден. Конечно, это IP в локальной сети, но, к сожалению, из дампа больше не вытащишь — для того, чтобы достать внешний IP нужно побольше, чем просто дамп. Теперь достанем имя компа. Для этого просто прочитаем ветку SYSTEM реестра:

Супер, мы получили имя компа WIN-LO6FAF3DTFE .

Play Time


Пользователь любит играть в старые видеоигры. Требуется найти название его любимой игры и IP-адрес ее сервера

Просто смотрим на выхлоп netscan на предыдущем шаге и видим странные процесссы — LunarMS.exe . Гуглим — действительно, это видеоигра. Там же можно и найти IP-адрес, с которым открыто соединение — 77.102.199.102

Name game

Мы знаем, что пользователь залогинен в канал Lunar-3. Но какое имя аккаунта?

Так как пользователь залогинен в этот канал, то имя должно быть просто в виде plain-text в дампе. Делаем strings и получаем флаг:

Из всех строк больше всего напоминает флаг 0tt3r8r33z3 . Пробуем и действительно — это он и есть!

Silly Rick


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

Судя по формулировке надо просто достать содержимое буфера обмена. На это у Volatility есть ответ — плагин clipboard . Проверяем и видим пароль:

Hide and Seek


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

Ну что же, если у нас три попытки, то будем осторожны, как нам и посоветовали =)

Для начала, получим список всех процессов с помощью pslist :

Мда. Как-то не очень удобно анализируемо. У нас есть еще один плагин — pstree , который выводит процессы в виде дерева (что, в общем-то, логично):

Ага! Есть подозрительные строчки

Как мы видим, процесс с PID'ом 3820 порождает процесс с PID'ом 3720. Повод проанализировать обоих. Для начала получим список dll-библиотек, которые используют процессы:

Так. Exe в папке с торрентами? Как-то странно. Еще и ntdll.dll тоже не внушает доверия. Попробуем получить список dll, которые использует процесс 3720:

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

Bit by Bit и Graphics is for the weak

Найдите адрес биткойн-кошелька злоумышленника, который заразил компьютер вирусом!

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

Recovery


Вымогатель зашифровал файлы. Помогите пользователю восстановить к ним доступ!

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

Как мы видим, пароль действительно случайный. Но мы знаем регулярное выражение abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890*!=&?&/ , которому удовлетворяет наш пароль. Теперь, если есть функция создания пароля, где-то должна быть функция его применения :D

Немного пролистав, находим и ее:

Ну уже кое-что новое, теперь мы знаем, что длина пароля 15 символов. Попробуем вытащить его из дампа процесса и сразу же оценим, насколько все плохо:`

Неплохо. Можно, конечно, посидеть поперебирать ручками, но это как-то слишком. Применим немного черной магии!

Команда выглядит страшно, но стоит немного в нее вглядется и она становится кристально очевидной. Если это не так — опять-таки пинайте в комментариях, разберу по кирпичикам. А тем временем, мы сократили количество с миллиона до каких-то жалких трех тысяч. Посмотрим, что это за строки:

К сожалению, тут я не придумал элегантного решения и поэтому дальше исключительно логические рассуждения. Как мы помним с момента реверса наш бинарник содержит открытый ключ b03f5f7f11d50a3a . Что же, попробуем найти его в наших почти 3K строках руками. Ну или не совсем :) Для этого немного поменяем нашу команду:

Итак, судя по этому выводу ключ где-то наверху предыдущего вывода. Первых строк, похожих на ключ не так много и тут действительно придется воспользоваться древним заклинанием BruteForce


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

Вместо заключения

Блог творческого ИТ-практика. Возьми свою мысль и дай ей ускорение идеи. В моем фокусе: сети, безопасность, виртуализация, 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, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

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