
Penetration Testers Framework (PTF) — это способ модульной поддержки актуальных инструментов.
The PenTesters Framework (PTF) — это скрипт на Python, разработанный для дистрибутивов на основе Debian/Ubuntu/ArchLinux, чтобы создать единообразную и привычную среду для пентестинга. Как пентестеры, мы привыкли к директориям /pentest/ или собственным наборам инструментов, которые хотим всегда поддерживать в актуальном состоянии. У нас есть «те самые» инструменты, которые мы используем регулярно, и важно иметь самые свежие версии.
PTF пытается установить все ваши инструменты для пентестинга (последние версии), скомпилировать их, собрать и сделать так, чтобы вы могли устанавливать/обновлять свой дистрибутив на любой машине. Всё организовано в соответствии со стандартом Penetration Testing Execution Standard (PTES) и исключает много редко используемого. PTF упрощает установку и упаковку, создавая для вас целый пентест-фреймворк. Поскольку это фреймворк, вы можете настраивать и добавлять то, что считаете нужным. Мы часто видим внутренние репозитории, которые также можно использовать в рамках этого фреймворка. Всё в ваших руках.
Конечная цель — поддержка сообщества в этом проекте. Мы хотим, чтобы новые инструменты добавлялись в репозиторий GitHub. Присылайте свои модули. Настроить и добавить их очень просто, это занимает всего несколько минут.
Для корректной работы PTF требуется python-pexpect.
Выполните следующую команду:
pip install -r requirements.txt
./ptf
Сначала проверьте файл config/ptf.config, который содержит базовый каталог для установки всего. По умолчанию установка будет производиться в директорию /pentest. После настройки запустите PTF командой ./ptf (или python ptf).
Это запустит оболочку в стиле Metasploit с похожим внешним видом и поведением. Команды show modules, use <modules> и т.д. принимаются. Прежде всего, всегда набирайте help или ?, чтобы увидеть полный список команд.
Видеоруководство по использованию PTF доступно на нашем Vimeo: https://vimeo.com/137133837
Если вы хотите установить и/или обновить всё, просто выполните:
./ptf
use modules/install_update_all
yes
Это установит все инструменты внутри PTF. Если они уже установлены, скрипт пройдётся по ним и автоматически обновит всё.
Вы также можете устанавливать модули по отдельности, а затем использовать команду use modules/update_installed, которая обновит только то, что вы уже установили.
Например:
./ptf
use modules/update_installed
Это обновит только ранее установленные модули.
Вы также можете использовать show options для просмотра информации о модулях.
Если вы хотите установить только, например, инструменты для эксплуатации, выполните:
./ptf
use modules/exploitation/install_update_all
Будут установлены только модули эксплуатации. Это работает для любой категории модулей.
Вы можете установить только нужные вам инструменты, отредактировав файл modules/custom_list/list.txt. Измените list.txt и добавьте только те инструменты, которые хотите установить или обновить.
Пример файла list.txt:
modules/exploitation/metasploit modules/post-exploitation/unicorn
Затем в PTF:
./ptf
use modules/custom_list/list
yes
Это позволяет переносить конфигурацию модулей и устанавливать/обновлять только нужные вам инструменты.
Можно также просто указать модуль без категории:
./ptf
use trevorc2
yes
Сначала перейдите в директорию modules/, внутри неё есть поддиректории, соответствующие фазам PTES. Зайдите в эти фазы и посмотрите различные модули. Как только вы добавите новый модуль, например testing.py, он автоматически импортируется при следующем запуске PTF. При разработке модуля необходимо заполнить несколько ключевых полей.
Ниже приведён пример модуля:
AUTHOR="David Kennedy (ReL1K)"
DESCRIPTION="Этот модуль установит/обновит Browser Exploitation Framework (BeEF)"
INSTALL_TYPE="GIT"
REPOSITORY_LOCATION="https://github.com/beefproject/beef"
X64_LOCATION="https://github.com/something_thats_x64_instead_of_x86
INSTALL_LOCATION="beef"
DEBIAN="ruby1.9.3,sqlite3,ruby-sqlite3"
ARCHLINUX = "arch-module,etc"
BYPASS_UPDATE="NO"
AFTER_COMMANDS="cd {INSTALL_LOCATION},ruby install-beef"
LAUNCHER="beef"
TOOL_DEPEND="modules/exploitation/metasploit"
Все поля довольно просты. В полях расположения репозитория можно использовать GIT, SVN FILE или TAGS. Укажите зависимости и каталог установки. PTF возьмёт расположение Python-файла (например, exploitation) и переместит его в то, что вы указали в конфиге PTF (находится в config). По умолчанию все инструменты устанавливаются в /pentest/PTES_PHASE/TOOL_FOLDER.
Обратите внимание: в модулях можно указывать after команды с {INSTALL_LOCATION}. Это подставит путь установки при выполнении after команд.
Также можно использовать {PTF_LOCATION}, который будет указывать на базовый путь установки PTF.
Вы также можете указать отдельные расположения для 32-битной и 64-битной версий. REPOSITORY_LOCATION всегда должен содержать путь для x86. Чтобы добавить 64-битный путь для инструмента, укажите X64_LOCATION и дайте URL. При запуске PTF автоматически определит архитектуру и попытается использовать x64 ссылку вместо x86.
Обратите внимание, что пакеты ArchLinux также поддерживаются. В модуле нужно указать и DEBIAN, и ARCH, чтобы инструмент корректно устанавливался на обеих платформах.
При использовании режима TAGS вы сможете использовать проект GitHub, который использует теги для получения последней версии (обычно скомпилированные приложения), и автоматически загружать их. Чтобы использовать метод TAGS, посмотрите структуру модуля modules/intelligence-gathering/teamfiltration.py. В этом примере не требуется repository_location, но вам нужно знать владельца проекта, название проекта/репозитория и имя файла для загрузки. В примере TeamFiltration он находится по адресу: https://github.com/Flangvik/TeamFiltration. Владелец — Flangvik, проект/инструмент — TeamFiltration. Если перейти на страницу релизов: https://github.com/Flangvik/TeamFiltration/releases/, то видно, что имя файла для загрузки — "TeamFiltration_Linux". Эти параметры указываются в OWNER, REPOHOME и FILENAME. Указав их, PTF автоматически определит последний релиз инструмента и установит его.
Вы можете создавать свои модули; PTF также поддерживает доступ к GitLab. Вместо указания git, wget и т.п., просто укажите gitlab и укажите свой внутренний GitLab для модулей.
При использовании традиционного git или svn в качестве основного метода после установки модуля PTF просто загружает последнюю версию инструмента. При использовании after команд обычно необходимо запускать их после каждого обновления. Если вы укажете BYPASS_UPDATE="YES", то при каждом запуске инструмента будет проверяться последняя версия и after команды всё равно будут выполняться. Если установлено NO, будет выполнен только git pull последней версии. Для режима FILE рекомендуется всегда использовать BYPASS_UPDATE="YES", чтобы файлы перезаписывались каждый раз.
After commands — это команды, которые можно выполнить после установки. Например, перейти в директорию и запустить дополнительные команды для завершения установки. В сценарии BEEF необходимо после установки выполнить ruby install-beef. Ниже пример after команд с использованием флага {INSTALL_LOCATION}:
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
Для AFTER_COMMANDS, которые выполняют самостоятельную установку (не требующую взаимодействия с пользователем).