
Инструмент извлечения на основе Frida.re для RunPE (и MapViewOfSection)
FridaExtract — это инструмент извлечения RunPE на базе Frida.re. Инъекция типа RunPE — распространённый метод, используемый вредоносным ПО для сокрытия кода внутри другого процесса. Кроме того, это финальная стадия многих упаковщиков : )
ПРИМЕЧАНИЕ: Frida теперь также поддерживает извлечение внедрённых PE-файлов с помощью техники «MapViewOfSection», лучше всего описанной здесь.
С помощью FridaExtract вы можете автоматически извлекать и восстанавливать PE-файл, внедрённый методом RunPE… и обходить эти упаковщики!
Существует множество отличных инструментов, которые уже извлекают код, внедрённый через RunPE. FridaExtract не лучше их. Но его проще установить, проще собрать (лол), проще запустить и проще модифицировать. Никаких компиляторов, никаких сред сборки — просто pip install, и вы готовы к работе.
Код специально прокомментирован и организован как шаблон для создания ваших собственных проектов на Frida. Это скорее proof of concept, демонстрирующий, как настраивать хуки в среде Windows. Пожалуйста, копируйте, вставляйте и изменяйте этот код как угодно!
Предупреждение: FridaExtract работает только в Windows 32bit. В настоящее время есть некоторые таинственные баги с wow64, поэтому рекомендуем использовать Windows 7 32bit или Windows Server 2008 32bit.
pip install fridaFridaExtract может извлекать только PE-файлы, внедрённые через RunPE, поэтому его возможности довольно ограничены. Если вы используете виртуальную машину, на которой легко сделать снимок, запустить и откатить изменения, можно просто наугад пробовать FridaExtract на каждом образце вредоносного ПО и смотреть, что получится, но мы не рекомендуем так делать. Вместо этого FridaExtract хорошо дополняет песочницу (мы любим malwr). Сначала запустите образец в песочнице и запишите вызовы API.
Для техники RunPE, если вы видите следующие вызовы API, FridaExtract может быть вашим инструментом:
Для техники MapViewOfSection, если вы видите следующие вызовы API, FridaExtract может быть вашим инструментом:
По умолчанию FridaExtract попытается автоматически извлечь внедрённый PE-файл, восстановить его и сбросить в файл с именем dump.bin.
python FridaExtract.py bad.exe
Файл для сброса можно указать с помощью параметра --out_file.
python FridaExtract.py bad.exe --out_file extracted.exe
Если упакованный PE-файл, который вы пытаетесь извлечь, требует аргументов, их можно передать с помощью параметра --args. Несколько аргументов передаются через запятую.
python FridaExtract.py bad.exe --args password
FridaExtract автоматически попытается восстановить сброшенную память в PE-файл. Если это не работает, и вам нужен просто сырой дамп всей памяти, записанной в дочерний процесс, используйте параметр --raw. Вместо записи восстановленного PE-файла в выходной файл будут записаны сырые сегменты памяти в порядке адресов.
python FridaExtract.py bad.exe --raw
FridaExtract использует хуки на следующие API для извлечения внедрённого PE-файла:
Чтобы отследить эти API и вывести результаты, используйте параметр -v или --verbose.
python FridaExtract.py bad.exe --verbose
Frida использует пользовательские хуки, которые легко обойти. Если вам нужен более надёжный инструмент DBI, попробуйте PIN! Отличный пример использования PIN для извлечения RunPE представлен здесь.
Frida внедряет среду выполнения JavaScript в анализируемый процесс — это не скрытно. Хороший обзор того, как вредоносное ПО может обнаружить Frida, смотрите здесь.