1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-pe-tree

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Автономное приложение находит переносимые исполняемые файлы в файлах, папках и 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

IDAPython

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

  1. Загрузите pe_tree и установите для глобального интерпретатора Python, используемого IDA:

    $ git clone https://github.com/blackberry/pe_tree.git
    $ cd pe_tree
    $ python setup.py develop --ida
  2. Скопируйте pe_tree_ida.py в папку плагинов IDA (# папка плагинов IDA).

Установить вручную

  1. Скачайте pe_tree и установите требования для глобального интерпретатора Python, используемого IDA:

    $ git clone https://github.com/blackberry/pe_tree.git
    $ cd pe_tree
    $ pip install -r requirements.txt
  2. Скопируйте 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

Использование:

  1. Запустите IDA Pro. И дизассемблируйте файл PE (всегда выбирайте «Ручная загрузка» и «Загрузить ресурсы» для достижения наилучших результатов!)

  2. Загрузите плагин PE Tree:

Правка -> Плагины -> PE Tree

Пример

Дамп файлов PE в памяти

Ниже приведены основные шаги по дампу упакованного файла PE (например, MPRESS или UPX) и восстановлению импорта (при условии, что базовый образ/точка входа является достаточно стандартным):

  1. Запустите IDA Pro и дизассемблируйте упакованный файл PE MPRESS или UPX (выберите «Ручная загрузка» и «Загрузить ресурсы»).

  2. Выберите отладчик (Windows или Bochs) и запустите до OEP (обычно 0x00401000, но не всегда!).

  3. На этом этапе вы можете сделать снимок памяти (сохранив все сегменты) и сохранить IDB на потом.

  4. Убедитесь, что IDA нашла весь код:

Опции -> Общие -> Анализ -> Переанализировать программу
  1. Откройте плагин PE Tree IDAPython, щёлкните правой кнопкой мыши в правой панели и выберите:
Добавить PE -> Поиск IDB

Это позволит сканировать IDB для заголовков MZ/PE и отображать любые найденные модули.

  1. Щёлкните правой кнопкой мыши на HEADER-0x00400000 (или соответствующем имени модуля) и выберите Дамп...

  2. Укажите AddressOfEntryPoint (обычно 0x1000, но опять же не всегда!)

  3. Убедитесь, что Перестроить IDT/IAT выбрано.

  4. Дамп!

Будет создан новый исполняемый файл с использованием распакованных данных раздела из памяти/IDB, а новый раздел с именем .pe_tree, содержащий восстановленные IAT, таблицу имён подсказок и IDT, будет добавлен к файлу PE (во многом аналогично разделу [.idata]).

Если сегмент точки входа был помечен как доступный для записи во время выполнения (например, через VirtualProtect), то характеристики раздела точки входа также будут помечены как доступные для записи.

Наконец, каталоги данных BASERELOC, BOUND_IMPORT и SECURITY помечаются как нулевые, и пересчитывается контрольная сумма OPTIONAL_HEADER (если указано).

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

Rekall

Плагин PE Tree Rekall находит переносимые исполняемые файлы в дампах памяти Windows.

Плагин PE Tree Rekall

Требования

  • Python 3+

Функции

  • Работает с дампом памяти Windows или живой системой
  • Просмотр, дамп и восстановление модулей PE из;
    • Активных процессов и DLL
    • Загруженных драйверов режима ядра

Установка

  1. Установите Rekall с GitHub под той же виртуальной средой.

  2. Установите отдельное приложение 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

Volatility

Плагин PE Tree Volatility находит переносимые исполняемые файлы в дампах памяти Windows.

Плагин PE Tree Volatility

Требования

  • Python 3.5+

Функции

  • Работает с дампами памяти Windows
  • Просмотр, дамп и восстановление модулей PE из;
    • Активных процессов и библиотек DLL
    • Загруженных драйверов режима ядра

Установка

  1. Установите Volatility3 с GitHub под ту же виртуальную среду.

  2. Установите отдельное приложение PE Tree (см. «Установка») под ту же виртуальную среду.

Использование

$ pe-tree-vol -h
usage: pe-tree-vol [-h] filename

PE-Tree (Volatility)

позиционные аргументы:
  filename    Путь к дампу памяти

необязательные аргументы:
  -h, --help  показать это справочное сообщение и выйти

Ghidra

Плагин PE Tree Ghidra находит переносимые исполняемые файлы в базах данных Ghidra.

Плагин PE Tree Ghidra

Требования

  • Python 3.5+
  • Ghidra Bridge ### Функции
  • Удобная навигация по структурам файлов в формате PE.
  • Двойной клик по адресу памяти в PE Tree для просмотра дизассемблирования/шестнадцатеричного представления в Ghidra.
  • Реконструкция импорта (IAT + IDT).
  • Сохранение реконструированных файлов в формате PE.

Установка

  1. Установите PE Tree (см. раздел «Установка»).
  2. Установите Ghidra Bridge (https://github.com/justfoxing/ghidra_bridge#install-the-ghidra-bridge-package-and-server-scripts).

Использование

  1. Запустите сервер Ghidra Bridge (https://github.com/justfoxing/ghidra_bridge#start-server).
  2. Запустите плагин PE Tree 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 минидампах.

Плагин PE Tree Minidump

Требования

Функции

  • Просмотр, сохранение и реконструкция модулей PE из файла минидампа Windows (.dmp).

Установка

  1. Установите PE Tree (см. раздел «Установка»).
  2. Установите minidump (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

Обмен данными с третьими сторонами

Следующая информация будет передана сторонним веб-приложениям (в зависимости от конфигурации) при следующих условиях:

VirusTotal

Если в конфигурации указан URL VirusTotal, то метаданные, такие как хэши файлов, временные метки и т. д., будут отправлены на... Использование VirusTotal при обработке данных

VirusTotal для обработки данных используется, когда пользователь нажимает на выделенные ссылки или выбирает «Поиск в VirusTotal» из контекстного меню по правому клику.

CyberChef

Если в конфигурации присутствует URL-адрес CyberChef, то любые данные файла будут закодированы в формате base64 и отправлены в CyberChef для обработки, когда пользователь выберет «CyberChef» из контекстного меню по правому клику.

Устранение неполадок

AttributeError: модуль 'pip' не имеет атрибута 'main'

или

PyQt5 не устанавливается под Linux

Попробуйте обновить pip до версии 20.0+:

$ pip install --upgrade pip

ModuleNotFoundError: нет модуля с именем 'PyQt5.sip'

Попробуйте удалить и переустановить 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 )

Вы можете оставить комментарий после Вход в систему

Введение

PE Tree — это инструмент для обратного инжиниринга, разработанный компанией BlackBerry. Это модуль Python, который использует pefile и PyQt5 для просмотра переносимых исполняемых (PE) файлов в виде древовидной структуры. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-pe-tree.git
git@gitlife.ru:oschina-mirror/mirrors-pe-tree.git
oschina-mirror
mirrors-pe-tree
mirrors-pe-tree
master