<H1><b>Анализатор памяти офлайн: используем Memoryze для исследования системы и поиска малвари.</b></H1> <H2><b><u>1. Что такое Memoryze?</H2></u></b> <text> Большинство утилит для поиска малвари анализируют систему в режиме live, то есть во время ее работы. Но мало кто знает о существовании программ, которые, помимо прочего, способны выполнять так называемые офлайн-исследования, позволяя отыскать зло в памяти компьютера, когда к тому нет доступа или он вообще выключен. Некоторое время назад я открыл для себя новый способ поиска малвари, которым с тех пор эффективно пользуюсь. По правде говоря, основным назначениемприменяемого инструмента является вовсе не поиск руткитов, а комплексный анализ памяти. Но так получилось, что включенные в него техники идеально подходят для того, чтобы отыскать хорошо затаившуюся в системе малварь. Помимо основной категории продуктов, предназначенных для глубокого изучения дисковых накопителей, широко используются также решения для анализа оперативной памяти. Такие исследования выделяют в особый вид экспертиз — Memory Forensic. Некоторые из приложений (и в том числе Memoryze) умеют не только выполнять исследование "живой" системы, но и анализировать образ памяти, в который заблаговременно было помещено все содержимое оперативной памяти компьютера. Это дает большой простор для деятельности. Имея такой образ, ничто не мешает позже разобраться, какие приложения запущены в системе (на момент создания дампа, разумеется) или, например, с какими хостами взаимодействуют интересующие нас процессы. Ну и само собой, это еще и отличный способ для поиска малвари. Можно сделать дамп на проблемной машине и далее на своем собственном компьютере без каких-либо неудобств разбираться, какая ерунда загружена в памяти. Тут надо понимать, что в образ помещается все содержимое памяти, которое считывает и анализирует специальный парсер. И какими бы продвинутыми методиками для сокрытия активных процессов и драйверов не пользовалась малварь, их присутствие обязательно будет отражено в дампе. </text> <H2> <b><u> 2. Что такое Memoryze? </u></b> </H2> <text> Программу Memoryze в кругах компьютерных криминалистов знают не понаслышке. <br><br>Это мощнейшее средство анализа памяти для многих стало частью джентльменского набора, настоящей программой must have, которая не просто лежит про запас для подходящего случая, а действительно часто используется. Ее создателями являются Джэми Батлер и Питер Силбермэн, два маньяка-хардкорщика в области анализа памяти и малвари. Ты можешь прямо сейчас сказать им спасибо, потому что они не только разработали замечательный инструмент, но еще и делятся им совершенно бесплатно. Дистрибутив доступен для загрузки из раздела с фриварными программами компании Mandiant. Что мы можем получить, используя Memoryze: <ul> <li>Полныйполный образ всего диапазона системной памяти (без использования API-вызовов),сохраненный в файл для дальнейшего анализа; <li>Дамп адресного пространства любого процесса, включая список загруженных DLL и EXE, кучу и стэк (этот дамп можно дальше исследовать в дизассемблере); образ всех загруженных драйверов или некоторых из них; <li>полныйполный список всех процессов, включая те, что спрятаны руткитами, причем для каждого процесса есть возможность определить все хэндлы (например, используемых файлов или ключей реестра), сетевые сокеты, импортируемые и экспортируемые функции и так далее; <li>все строковые переменные, используемые процессами; <li>полный список всех драйверов, в том числе те, которые маскируются малварью; <li>перечень всех модулей ядра; перечисление всех установленных хуков (они часто используются малварью); и многое другое. </ul> Вообще, когда говорят о Memoryze, чаще всего имеют в виду не одну, а две утилиты: консольную Memoryze и GUI-приложение Audit Viewer. Они тесно связаны между собой. Memoryze создает дамп и парсит различные структуры, чтобы извлечь интересующие данные. Но работать в консоли не сильно удобно, поэтому в связке используется другая утилита — Audit Viewer, которая позволяет работать с извлеченными данными через удобный интерфейс. Таким образом можно узнать все о том, что в момент создания образа было запущено в системе. <br><br> В некоторых ситуациях очень удобно иметь программу при себе, поэтому ее лучше всего разместить на флешку достаточного объема, чтобы туда поместился еще и сграбленный дамп памяти. К счастью, утилита из коробки является portable, и установить ее можно прямо из командной строки: <code>>> msiexec /a MemoryzeSetup.msi /qb TARGETDIR=путь_до_флешки_и_папки_на_ней</code> Не лишним будет записать на флешку и файлы Audit Viewer’а, чтобы сразу иметь возможность проанализировать полученный дамп или вообще выполнить "живое" исследование системы. </text> <h2> <b><u> 3. Создаём образ памяти </b></u> </h2> <text> Теперь, когда все приготовления завершены, попробуем программу в деле. Как я уже говорил, Memoryze работает из командной строки. Но для большего удобства с программой поставляют несколько batch-скриптов для выполнения наиболее типичных задач. <br><br> Так, для получения образа с полным содержанием оперативной памяти есть сценарий MemoryDD.bat, его-то мы и будем использовать. После запуска он генерирует конфиг c настройками и выполняет memoryze.exe с нужными параметрами: <code>cd "C:\Program Files (x86)\MANDIANT\Memoryze"<br> >MemoryDD.bat</code> После выполнения команды есть два варианта: программа успешно создаст дамп с памятью или у нее ничего не выйдет. Последнее очень вероятно. Дело в том, что для работы Memoryze использует kernel-mode драйвер, предоставляющий программе прямой доступ к памяти. Нет драйвера – нет дампа. Есть несколько причин, по которым драйвер не сможет загрузиться, но в первую очередь — из-за отсутствия прав администратора. Поэтому убедись, что запускаешь ее из рутовой командной строки. Другая распространенная причина — антивирус, который может препятствовать прямому обращению к памяти. Возможно, что на время его придется отключить. Если все пройдет успешно, полученный дамп будет сохранен в папке с выходными результатами (по умолчанию в папке с Memoryze/Audits). Структура каталога устроена таким образом, чтобы повторные выполнения процедуры не перезаписывали ранее полученные образы. Так что всегда легко определить, на каком компьютере и когда был создан образ. <br> Например, в файле Issues.memory мы можем посмотреть ошибки, выведенные в процессе исполнения скрипта. Скрипт вывел множество ошибок в процессе выполнения. ![](https://i.imgur.com/qZzIbD1.png) </text> <h2><b><u>4. Анализируем дамп</u></b></h2> <text> Для анализа и просмотра образа памяти, как я уже сказал, используется другая утилита — Audit Viewer. Причем содержание оперативной памяти необязательно должно быть сдамплено с помощью Memoryze. Гораздо большее значение имеет операционная система, на которой создавался образ. Причиной тому являются структуры памяти, которые могут значительно отличаться от одной версии операционной системы к другой. В некоторых случаях даже один установленный (или, наоборот, неустановленный) патч может влиять на возможность выполнить анализ данных. Анализатор может парсить только структуры известной ему ОС. Поэтому, прежде чем говорить, что Memoryze и Audit Viewer не работают, необходимо убедиться, что ты не пытаешься выполнить анализ неподдерживаемой системы (например, Windows XP SP1). К счастью, для внушительного списка ОС все должно без проблем получиться: <ul> <li>Windows 2000 Service Pack 4 (32-bit);</li <li>Windows XP Service Pack 2 and Service Pack 3 (32-bit);</li> <li>Windows Vista Service Pack 1 and Service Pack 2 (32-bit); </li> <li>Windows 2003 Service Pack 2 (32-bit); </li> <li>Windows 2003 Service Pack 2 (64-bit);</li> <li>Windows 7 Service Pack 0 (32-bit); </li> <li>Windows 7 Service Pack 0 (64-bit); </li> <li>Windows 2008 Service Pack 1 and Service Pack 2 (32-bit); </li> <li>Windows 2008 R2 Service Pack 0 (64-bit).</li> </ul> <br> Для анализа дампа нам нужно использовать какой-либо интерфейс. Например, Redline от той же компании Mandiant (FireEye). <br> Выбираем Analyze Data From a Saved Memory File. ![](https://i.imgur.com/7DTSN3y.png) Выбираем Analyze Data From a Saved Memory File. <br> ![](https://i.imgur.com/GWiH8fI.png) В этом окне можно задать настройки анализа ![](https://i.imgur.com/rNmwb5p.png) В конечном счёте мы получаем такую таблицу Мы можем просмотреть отдельно хуки, драйверы, порты и т.п. </text> <h2> <b><u> 5. Другие скрипты </u></b> </h2> <text> <ul> <li> Попробуем выполнить скрипт DriversSearch </li> </ul> <code>> DriversSearch.bat</code> ![](https://i.imgur.com/m6UtUv0.png) Получаем информацию о драйверах на компьютере <code>> HookDetection.bat </code> ![](https://i.imgur.com/EeUfVzE.jpg) </text>