Автономное приложение находит переносимые исполняемые файлы в файлах, папках и ZIP-архивах.
Рис. 1: PE Tree автономное приложение
Требования: Python 3.5+.
Возможности:
— Сканирование файлов и папок на наличие PE-файлов.
— Извлечение PE-файлов из ZIP-архивов (включая защищённые паролем с помощью infected).
— Вырезание PE-файлов из бинарных файлов.
— Двойной щелчок VA/RVA для дизассемблирования с capstone.
— Шестнадцатеричный дамп данных.
Установка:
Использование pip (рекомендуется)
Установите непосредственно из GitHub, используя свежую виртуальную среду и pip:
Windows
> virtualenv env
> env\Scripts\activate
> pip install --upgrade pip
> pip install git+https://github.com/blackberry/pe_tree.git
Mac/Linux
$ python3 -m venv env
$ source ./env/bin/activate
$ pip install --upgrade pip
$ pip install git+https://github.com/blackberry/pe_tree.git
Для разработчиков
Клонируйте репозиторий и настройте его для разработки:
Windows
> git clone https://github.com/blackberry/pe_tree.git
> cd pe_tree
> virtualenv env
> env\Scripts\activate
> pip install -e .
Mac/Linux
$ git clone https://github.com/blackberry/pe_tree.git
$ cd pe_tree
$ python3 -m venv env
$ source ./env/bin/activate
$ pip install -e .
Использование:
Запустите PE Tree и просканируйте переносимые исполняемые файлы в файлах, папках и ZIP-архивах:
$ pe-tree -h
usage: pe-tree [-h] [filenames [filenames ...]]
PE-Tree
positional arguments:
filenames Path(s) to file/folder/zip
optional arguments:
-h, --help show this help message and exit
Запустите PE Tree и попробуйте вырезать переносимые исполняемые файлы из двоичного файла:
$ pe-tree-carve -h
usage: pe-tree-carve [-h] filename
PE-Tree (Carve)
positional arguments:
filename Path to file to carve
optional arguments:
-h, --help show this help message and exit
Тёмный режим можно включить, установив QDarkStyle:
$ pip install qdarkstyle
PE Tree IDAPython плагин находит переносимые исполняемые файлы в базах данных IDA.
Рис. 2: PE Tree IDAPython плагин
Требования: IDA Pro 7.0+ с Python 2.7 или IDA Pro 7.4+ с Python 2.7 или 3.5+.
Возможности:
— Удобная навигация по структурам файлов PE.
— Дважды щёлкните по адресу памяти в PE Tree, чтобы просмотреть его в IDA-view или hex-view.
— Поиск IDB для образов PE в памяти и: — Восстановление импорта (IAT + IDT). — Дамп восстановленных файлов PE. — Автоматическое комментирование структур файлов PE в IDB. — Автоматическая маркировка смещений IAT в IDB.
Установка: Чтобы установить и запустить как плагин IDAPython, вы можете использовать setuptools или установить вручную.
Используя setuptools
Загрузите pe_tree и установите для глобального интерпретатора Python, используемого IDA:
$ git clone https://github.com/blackberry/pe_tree.git
$ cd pe_tree
$ python setup.py develop --ida
Скопируйте pe_tree_ida.py в папку плагинов IDA (# папка плагинов IDA).
Установить вручную
Скачайте pe_tree и установите требования для глобального интерпретатора Python, используемого IDA:
$ git clone https://github.com/blackberry/pe_tree.git
$ cd pe_tree
$ pip install -r requirements.txt
Скопируйте pe_tree_ida.py и содержимое ./pe_tree/
в папку плагинов IDA (# папка плагинов IDA).
Для разработчиков Чтобы не устанавливать в качестве плагина, а просто запускать как скрипт под IDA, сначала установите требования к пакету pe_tree для глобальной установки Python:
$ pip install -r requirements.txt
Затем запустите pe_tree_ida.py под IDA:
File -> Script file... -> pe_tree_ida.py -> Open
Папка плагинов IDA
ОС | Папка плагинов |
---|---|
Windows | %ProgramFiles%\IDA Pro 7.X\plugins |
Linux | /opt/ida-7.X/plugins |
Mac | ~/.idapro/plugins |
Использование:
Запустите IDA Pro. И дизассемблируйте файл PE (всегда выбирайте «Ручная загрузка» и «Загрузить ресурсы» для достижения наилучших результатов!)
Загрузите плагин PE Tree:
Правка -> Плагины -> PE Tree
Пример
Ниже приведены основные шаги по дампу упакованного файла PE (например, MPRESS или UPX) и восстановлению импорта (при условии, что базовый образ/точка входа является достаточно стандартным):
Запустите IDA Pro и дизассемблируйте упакованный файл PE MPRESS или UPX (выберите «Ручная загрузка» и «Загрузить ресурсы»).
Выберите отладчик (Windows или Bochs) и запустите до OEP (обычно 0x00401000, но не всегда!).
На этом этапе вы можете сделать снимок памяти (сохранив все сегменты) и сохранить IDB на потом.
Убедитесь, что IDA нашла весь код:
Опции -> Общие -> Анализ -> Переанализировать программу
Добавить PE -> Поиск IDB
Это позволит сканировать IDB для заголовков MZ/PE и отображать любые найденные модули.
Щёлкните правой кнопкой мыши на HEADER-0x00400000 (или соответствующем имени модуля) и выберите Дамп...
Укажите AddressOfEntryPoint (обычно 0x1000, но опять же не всегда!)
Убедитесь, что Перестроить IDT/IAT выбрано.
Дамп!
Будет создан новый исполняемый файл с использованием распакованных данных раздела из памяти/IDB, а новый раздел с именем .pe_tree
, содержащий восстановленные IAT, таблицу имён подсказок и IDT, будет добавлен к файлу PE (во многом аналогично разделу [.idata]).
Если сегмент точки входа был помечен как доступный для записи во время выполнения (например, через VirtualProtect), то характеристики раздела точки входа также будут помечены как доступные для записи.
Наконец, каталоги данных BASERELOC, BOUND_IMPORT и SECURITY помечаются как нулевые, и пересчитывается контрольная сумма OPTIONAL_HEADER (если указано).
Используя описанный выше подход, можно дампить множество файлов PE в памяти, которые были распакованы, внедрены, рефлексивно загружены или опустошены и т. д.
Плагин PE Tree Rekall находит переносимые исполняемые файлы в дампах памяти Windows.
Установите Rekall с GitHub под той же виртуальной средой.
Установите отдельное приложение PE Tree (см. «Установка») под той же виртуальной средой.
Запустите Rekall и просмотрите активные процессы, библиотеки DLL и драйверы в живой системе:
$ rekall --live Memory
[1] Live (Memory) 00:00:00> run -i pe_tree_rekall.py
Или запустите Rekall/PE Tree против существующего дампа памяти:
$rekall -f memory.vmem
[1] memory.vmem 00:00:00> run -i pe_tree_rekall.py
Плагин PE Tree Volatility находит переносимые исполняемые файлы в дампах памяти Windows.
Установите Volatility3 с GitHub под ту же виртуальную среду.
Установите отдельное приложение PE Tree (см. «Установка») под ту же виртуальную среду.
$ pe-tree-vol -h
usage: pe-tree-vol [-h] filename
PE-Tree (Volatility)
позиционные аргументы:
filename Путь к дампу памяти
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
Плагин PE Tree Ghidra находит переносимые исполняемые файлы в базах данных Ghidra.
$ pe-tree-ghidra -h
usage: pe-tree-ghidra [-h] [--server SERVER] [--port PORT]
PE-Tree (Ghidra)
optional arguments:
-h, --help show this help message and exit
--server SERVER Ghidra bridge server IP (default: 127.0.0.1)
--port PORT Ghidra bridge server port (default: 4768)
Плагин PE Tree Minidump находит исполняемые файлы в Windows минидампах.
pip install minidump
).$ pe-tree-minidump -h
usage: pe-tree-minidump [-h] filename
PE-Tree (Minidump)
positional arguments:
filename Path to .dmp file
optional arguments:
-h, --help show this help message and exit
Конфигурация хранится в файле INI и имеет следующие значения по умолчанию:
[config]
debug = False
fonts = Consolas,Monospace,Courier
passwords = ,infected
virustotal_url = https://www.virustotal.com/gui/search
cyberchef_url = https://gchq.github.io/CyberChef
Раздел | Параметр | Тип | Описание |
---|---|---|---|
config | debug | boolean | Печать pefile.dump() в вывод |
config | fonts | string | Разделительный список имён шрифтов для пользовательского интерфейса |
config | passwords | string | Разделительный список паролей ZIP-файлов |
config | virustotal_url | string | URL поиска VirusTotal |
config | cyberchef_url | string | URL CyberChef |
Тип | ОС | Путь |
---|---|---|
Приложение | Windows | %TEMP%\pe_tree.ini |
Приложение | Linux/Mac | /tmp/pe_tree.ini |
IDAPython | Windows | %APPDATA%\HexRays\IDA Pro\pe_tree.ini |
IDAPython | Linux/Mac | ~/.idapro/pe_tree.ini |
Rekall | Windows | %TEMP%\pe_tree_rekall.ini |
Rekall | Linux/Mac | /tmp/pe_tree_rekall.ini |
Volatility | Windows | %TEMP%\pe_tree_volatility.ini |
Volatility | Linux/Mac | /tmp/pe_tree_volatility.ini |
Ghidra | Windows | %TEMP%\pe_tree_ghidra.ini |
Ghidra | Linux/Mac | /tmp/pe_tree_ghidra.ini |
Minidump | Windows | %TEMP%\pe_tree_minidump.ini |
Minidump | Linux/Mac | /tmp/pe_tree_minidump.ini |
Carve | Windows | %TEMP%\pe_tree_carve.ini |
Carve | Linux/Mac | /tmp/pe_tree_carve.ini |
Следующая информация будет передана сторонним веб-приложениям (в зависимости от конфигурации) при следующих условиях:
Если в конфигурации указан URL VirusTotal, то метаданные, такие как хэши файлов, временные метки и т. д., будут отправлены на... Использование VirusTotal при обработке данных
VirusTotal для обработки данных используется, когда пользователь нажимает на выделенные ссылки или выбирает «Поиск в VirusTotal» из контекстного меню по правому клику.
Если в конфигурации присутствует URL-адрес CyberChef, то любые данные файла будут закодированы в формате base64 и отправлены в CyberChef для обработки, когда пользователь выберет «CyberChef» из контекстного меню по правому клику.
или
Попробуйте обновить pip до версии 20.0+:
$ pip install --upgrade pip
Попробуйте удалить и переустановить PyQt5 следующим образом:
pip uninstall PyQt5
pip uninstall PyQt5-sip
pip install PyQt5 PyQt5-sip
Убедитесь, что IDA обнаружила и дизассемблировала весь код:
Options -> General -> Analysis -> Reanalyze program
После этого попробуйте снова сбросить/перестроить импорты.
Пожалуйста, не стесняйтесь вносить свой вклад! Проблемы и запросы на вытягивание кода приветствуются.
Чтобы создать документацию из исходного кода с помощью Sphinx:
$ pip install sphinx
$ sphinx-apidoc -o ./doc/source/ .
$ sphix-build -b html ./doc/source ./doc/build -E
Для просмотра документации откройте ./doc/build/index.html
в веб-браузере.
Том Боннер — tombonner — @thomas_bonner.
PE Tree распространяется под лицензией Apache. Дополнительную информацию см. в файле LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )