
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, которые выполняют самостоятельную установку (не требующую взаимодействия с пользователем).
Флаг LAUNCHER= в модулях необязателен. Если добавить LAUNCHER="setoolkit", PTF автоматически создаст лаунчер для инструмента в /usr/local/bin/. В примере с setoolkit при запуске PTF автоматически создаст файл /usr/local/bin/setoolkit, чтобы вы могли запускать SET откуда угодно, просто набрав setoolkit. Все файлы по-прежнему будут устанавливаться в соответствующие категории, например /pentest/exploitation/setoolkit, но будет создан автоматический лаунчер.
Для одного приложения можно создать несколько лаунчеров. Например, для Metasploit могут понадобиться msfconsole, msfvenom и т.д. Чтобы добавить несколько лаунчеров, укажите их через запятую: LAUNCHER="msfconsole,msfvenom". Будут созданы лаунчеры для обоих.
Можно просто выполнить ./ptf --update-all, и PTF автоматически обновит всё, без необходимости входить в фреймворк.
Если вы запускаете ptf в автоматической сборке, можно использовать heredoc, чтобы не вводить модули вручную. Пример:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Некоторые инструменты, такие как Veil, SET и др., требуют предварительной установки других инструментов, например Metasploit Framework. Вы можете указать в модуле TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" и другие инструменты, если перед установкой данного инструмента требуется установка другого. Это заставит PTF сначала установить необходимый инструмент, а затем модуль, который от него зависит. Пример:
TOOL_DEPEND="modules/exploitation/metasploit"
Сначала будет установлен Metasploit (или проверено, что он уже установлен), а затем приложение.
Параметр конфигурации IGNORE_THESE_MODULES= находится в файле config/ptf.config в корневой директории PTF. Он позволяет игнорировать модули и не устанавливать их. Значения разделяются запятыми и указываются по имени, например: modules/exploitation/metasploit,modules/exploitation/set или целые категории модулей, например /modules/code-audit/*,/modules/reporting/*
Параметр IGNORE_UPDATE_ALL_MODULES= находится в файле config/ptf.config в корневой директории PTF. Он позволяет игнорировать модули только при выполнении install_update_all (когда вы хотите установить все инструменты). Это может быть полезно для больших приложений, требующих значительного времени, взаимодействия с пользователем или открывающих много портов и протоколов в системе. Работает аналогично IGNORE_THESE_MODULES, но такие модули можно устанавливать и обновлять вручную через modules/update_installed. Значения разделяются запятыми, например modules/exploitation/tool1,modules/exploitation/tool2. При запуске install_update_all эти инструменты не будут установлены, если только вы не перейдёте к use modules/exploitation/tool1 и не установите их таким способом.
Параметр INCLUDE_ONLY_THESE_MODULES в файле config/ptf.config позволяет установить и включить только указанные модули. Это удобно для создания базового набора инструментов и установки только их.
Вы можете запустить PTF без баннера. Для этого укажите:
./ptf --no-banner
или
./ptf -nb
Вы можете проверить, какие приложения уже установлены через PTF, набрав:
ptf>show installed