渗透测试者框架 (PTF) 是一个 Python 脚本,专为基于 Debian/Ubuntu/ArchLinux 的发行版设计,旨在创建类似且熟悉的渗透测试发行版。作为渗透测试者,我们习惯于使用 /pentest/ 目录或我们自己经常需要保持最新状态的工具集。我们有一些经常使用的“首选”工具,使用最新最好的版本非常重要。
PTF 试图安装所有渗透测试工具(最新版本),编译、构建它们,并使得你可以随时在任何机器上安装/更新你的发行版。所有内容都按照渗透测试执行标准 (PTES) 进行组织,并消除了许多不常用的东西。PTF 简化了安装和打包,为你构建了一个完整的渗透测试框架。由于这是一个框架,你可以根据自己的需要配置和添加内容。我们经常看到内部开发的仓库也可以作为此框架的一部分使用。一切由你决定。
这个项目的最终目标是社区支持。我们希望将新的工具添加到 github 仓库中。提交你的模块吧。配置和添加它们非常简单,只需几分钟。
PTF 需要 python-pexpect 才能正常工作。
运行以下命令:
pip install -r requirements.txt
./ptf
首先检查 config/ptf.config 文件,其中包含安装所有内容的基础位置。默认情况下,这将安装在 /pentest 目录下。配置完成后,通过输入 (或 )运行 PTF。
./ptfpython ptf这将把你带入一个类似 Metasploit 风格的外壳,具有一致的外观和感觉。显示模块、使用 <模块> 等都是接受的命令。首先,始终输入 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="此模块将安装/更新浏览器利用框架 (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 commands 中的 {INSTALL_LOCATION}。这将在使用 after commands 时附加你希望安装位置去往的路径。
你还可以指定 {PTF_LOCATION},它将提取 PTF 安装的基础路径。
你还可以为仓库位置同时指定 32 位和 64 位路径。仓库位置应始终是 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 作为主要方法时,一旦模块安装完成,通常只会拉取工具的最新版本。对于 after commands,通常在安装时你可能需要在每次更新后运行 after commands。如果你指定绕过更新为 YES(BYPASS_UPDATE="YES"),每次运行工具时,它将检出最新版本并仍然运行 after commands。如果标记为 NO,它只会 git pull 系统的最新版本。对于 FILE 选项,建议始终使用 BYPASS_UPDATE="YES",以便每次覆盖文件。
After commands 是你在安装完成后可以插入的命令。这可能是切换到一个目录并执行其他命令来完成安装。例如,在 BEEF 场景中,之后需要运行 ruby install-beef。下面是使用 {INSTALL_LOCATION} 标志的 after commands 示例:
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
用于自动安装(不需要用户交互)的 AFTER_COMMANDS。
模块中的标志 LAUNCHER= 是可选的。如果你添加例如 LAUNCHER="setoolkit",PTF 将自动在该工具下创建一个启动器,位于 /usr/local/bin/。在 setoolkit 的示例中,运行时 - PTF 将自动在 /usr/local/bin/setoolkit 下创建文件,这样你就可以通过简单输入 setoolkit 从任何位置启动 SET。所有文件仍将安装在适当的类别下,例如 /pentest/exploitation/setoolkit,但会自动创建启动器。
你可以为一个应用程序设置多个启动器。例如,对于 Metasploit,你可能想要 msfconsole、msfvenom 等。要添加多个启动器,只需在它们之间放置一个 ,。例如 LAUNCHER="msfconsole,msfvenom"。这将为两者创建启动器。
你也可以直接运行 ./ptf --update-all,它将自动为你更新所有内容,无需进入框架。
如果你在自动构建中运行 ptf,你可以使用 heredoc 这样你就无需交互地输入你想要安装的模块。示例:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
某些工具如 Veil、SET 等需要工具如 Metasploit 框架。你可以在模块中添加 TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" 以及其他多个工具(如果安装该工具之前需要先安装其他工具)。这将强制 PTF 先安装所需的工具,然后再安装需要它的模块。示例:
TOOL_DEPEND="modules/exploitation/metasploit"
这将先安装 Metasploit 或确保其先被安装,然后再安装应用程序。
可以在 PTF 根目录下的 config/ptf.config 中找到 IGNORE_THESE_MODULES= 配置选项。这将忽略模块并且不安装它们 - 所有内容以逗号分隔,基于名称 - 例如:modules/exploitation/metasploit,modules/exploitation/set 或者整个模块类别,如 /modules/code-audit/*,/modules/reporting/*
可以在 PTF 根目录下的 config/ptf.config 中找到 IGNORE_UPDATE_ALL_MODULES= 配置选项。这将仅在使用 install_update_all 时忽略模块,该操作用于你想要安装所有工具时。这适用于那些需要较长时间的大型应用程序、需要用户交互的应用程序、或会打开系统上大量端口和协议的应用程序。其工作方式与 IGNORE_THESE_MODULES 非常相似,不同之处在于它们可以通过 modules/update_installed 手动安装和更新。这些是以逗号分隔的,例如 modules/exploitation/tool1,modules/exploitation/tool2,当运行 install_update_all 时,除非你通过 use modules/exploitation/tool1 并以此方法安装,否则不会安装这些工具。
config/ptf.config 中的 INCLUDE_ONLY_THESE_MODULES 配置选项将仅安装和包含这里指定的特定模块。这对于确定你想要的工具基础并仅安装它们非常有用。
如果你愿意,可以在没有横幅消息的情况下启动 PTF。只需指定:
./ptf --no-banner
或
./ptf -nb
你可以通过输入以下内容来检查你已通过 PTF 安装了哪些应用程序:
ptf>show installed