
El Penetration Testers Framework (PTF) es una forma de soporte modular para herramientas actualizadas.
The PenTesters Framework (PTF) es un script de Python diseñado para distribuciones basadas en Debian/Ubuntu/ArchLinux para crear una distribución similar y familiar para Pruebas de Penetración. Como pentesters, estamos acostumbrados a los directorios /pentest/ o a nuestros propios conjuntos de herramientas que queremos mantener actualizados todo el tiempo. Tenemos esas herramientas "de cabecera" que usamos regularmente, y usar lo último y lo mejor es importante.
PTF intenta instalar todas tus herramientas de pruebas de penetración (las más recientes), compilarlas, construirlas y hacer que puedas instalar/actualizar tu distribución en cualquier máquina. Todo está organizado de manera coherente con el Estándar de Ejecución de Pruebas de Penetración (PTES) y elimina muchas cosas que apenas se usan. PTF simplifica la instalación y el empaquetado y crea un marco completo de pentest para ti. Como es un marco, puedes configurarlo y agregar lo que consideres necesario. Comúnmente vemos repositorios desarrollados internamente que también puedes usar como parte de este marco. Todo depende de ti.
El objetivo final es el apoyo de la comunidad en este proyecto. Queremos que se agreguen nuevas herramientas al repositorio de GitHub. Envía tus módulos. Es muy sencillo configurarlos y agregarlos, y solo toma unos minutos.
PTF requiere python-pexpect para funcionar correctamente.
Ejecuta el siguiente comando:
pip install -r requirements.txt
./ptf
Primero revisa el archivo config/ptf.config que contiene la ubicación base donde instalar todo. Por defecto, esto instalará en el directorio /pentest. Una vez configurado, ejecuta PTF escribiendo ./ptf (o python ptf).
Esto te colocará en una shell de tipo Metasploitesque que tiene una apariencia y sensación similar para mantener la consistencia. Show modules, use <modules>, etc. son comandos aceptados. Lo primero es lo primero: siempre escribe help o ? para ver una lista completa de comandos.
Para un tutorial en video sobre cómo usar PTF, visita nuestra página de Vimeo aquí: https://vimeo.com/137133837
Si deseas instalar y/o actualizar todo, simplemente haz lo siguiente:
./ptf
use modules/install_update_all
yes
Esto instalará todas las herramientas dentro de PTF. Si ya están instaladas, recorrerá y actualizará todo automáticamente.
También puedes instalar cada módulo individualmente, luego usar use modules/update_installed que solo actualizará lo que hayas instalado previamente.
Por ejemplo:
./ptf
use modules/update_installed
Esto solo actualizará los módulos que hayas instalado previamente.
También puedes mostrar opciones para cambiar información sobre los módulos.
Si solo deseas instalar, por ejemplo, herramientas de explotación, puedes ejecutar:
./ptf
use modules/exploitation/install_update_all
Esto solo instalará los módulos de explotación. Puedes hacer esto para cualquier categoría de módulos.
Puedes instalar solo las herramientas que desees yendo a la sección modules/custom_list/list.txt. Modifica el archivo list.txt y agrega las herramientas que solo deseas instalar o actualizar.
Ejemplo de archivo list.txt:
modules/exploitation/metasploit
modules/post-exploitation/unicorn
Luego, dentro de PTF:
./ptf
use modules/custom_list/list
yes
Esto te permite mantener tu configuración de módulos e instalar solo las herramientas que deseas, manteniéndolas actualizadas.
También puedes simplemente especificar un módulo sin usar la categoría:
./ptf
use trevorc2
yes
Primero, dirígete al directorio modules/, dentro hay subdirectorios basados en las fases del Estándar de Ejecución de Pruebas de Penetración (PTES). Entra en esas fases y mira los diferentes módulos. Tan pronto como agregues uno nuevo, por ejemplo testing.py, se importará automáticamente la próxima vez que inicies PTF. Hay algunos componentes clave que deben completarse al mirar un módulo.
A continuación se muestra un módulo de ejemplo
AUTHOR="David Kennedy (ReL1K)"
DESCRIPTION="This module will install/update the 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"
Todos los campos son bastante sencillos, en las ubicaciones del repositorio, puedes usar GIT, SVN FILE o TAGS. Completa las dependencias y dónde deseas que esté la ubicación de instalación. PTF tomará dónde se encuentra el archivo python (por ejemplo exploitation) y lo moverá a lo que especifiques en la configuración de PTF (ubicada en config). Por defecto, instala todas tus herramientas en /pentest/PTES_PHASE/TOOL_FOLDER
Nota: en los módulos, puedes especificar after commands {INSTALL_LOCATION}. Esto agregará la ubicación de instalación cuando se usen after commands.
También puedes especificar {PTF_LOCATION}, que obtendrá la ruta base de tu instalación de PTF.
También tienes la capacidad de especificar tanto una ubicación de 32 bits como de 64 bits para las ubicaciones del repositorio. La ubicación del repositorio siempre debe ser la ruta de descarga x86. Para agregar una ruta de 64 bits para una herramienta, especifica X64_LOCATION y proporciona una URL. Cuando PTF se inicia, detectará automáticamente la arquitectura e intentará usar el enlace x64 en lugar del x86.
Ten en cuenta que los paquetes de ArchLinux también son compatibles, es necesario especificarlos tanto para DEBIAN como para ARCH para que se instalen correctamente en cualquier plataforma en el módulo.
Al usar el modo TAGS, esto te permitirá usar un proyecto de GitHub que utiliza etiquetas para obtener la última versión (generalmente aplicaciones compiladas) y descargarla automáticamente. Para usar el método TAGS, echa un vistazo a la estructura en modules/intelligence-gathering/teamfiltration.py. En este ejemplo, no es necesario un repository_location, pero necesitarás conocer el propietario del proyecto, el nombre del proyecto/repositorio y el nombre del archivo a descargar. En el ejemplo de TeamFiltration, se encuentra en: https://github.com/Flangvik/TeamFiltration. El propietario sería Flangvik, el proyecto/herramienta sería TeamFiltration. Si navegas a las versiones: https://github.com/Flangvik/TeamFiltration/releases/, podemos ver aquí que el nombre del archivo que queremos descargar es "TeamFiltration_Linux". Estos están bajo OWNER, REPOHOME y FILENAME. Al especificarlos, PTF detectará automáticamente la última versión de la herramienta y la instalará.
Puedes crear tus propios módulos y PTF también admite acceso a GitLab. En lugar de especificar git, wget, etc., simplemente especifica gitlab y apunta a tus propias herramientas internas de GitLab para los módulos.
Cuando se usa git o svn tradicional como método principal, lo que sucede después de instalar un módulo es que simplemente obtiene la última versión de la herramienta. Con after commands, normalmente al instalar, es posible que necesites ejecutar los after commands después de cada actualización. Si especificas bypass updates como YES (BYPASS_UPDATE="YES"), cada vez que se ejecute la herramienta, obtendrá la última versión y aún ejecutará los after commands. Si está marcado como no, solo hará git pull de la última versión del sistema. Para las opciones FILE, se recomienda usar siempre BYPASS_UPDATE="YES" para que sobrescriba los archivos cada vez.
Los after commands son comandos que puedes insertar después de una instalación. Esto podría ser cambiar a un directorio y ejecutar comandos adicionales para finalizar la instalación. Por ejemplo, en el escenario de BEEF, necesitas ejecutar ruby install-beef después. A continuación se muestra un ejemplo de after commands usando la bandera {INSTALL_LOCATION}.
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
Para AFTER_COMMANDS que se autoinstalan (no necesitan interacción del usuario).
La bandera LAUNCHER= en los módulos es opcional. Si agregas LAUNCHER="setoolkit" por ejemplo, PTF creará automáticamente un lanzador para la herramienta en /usr/local/bin/. En el ejemplo de setoolkit, cuando se ejecute, PTF creará automáticamente un archivo en /usr/local/bin/setoolkit para que puedas iniciar SET desde cualquier lugar simplemente escribiendo setoolkit. Todos los archivos se instalarán en las categorías apropiadas, por ejemplo /pentest/exploitation/setoolkit, sin embargo se creará un lanzador automático.
Puedes tener múltiples lanzadores para una aplicación. Por ejemplo, para Metasploit es posible que quieras msfconsole, msfvenom, etc. Para agregar múltiples lanzadores, simplemente pon una , entre ellos. Por ejemplo LAUNCHER="msfconsole,msfvenom". Esto crearía lanzadores para ambos.
También puedes ejecutar ./ptf --update-all y automáticamente actualizará todo sin necesidad de entrar al marco.
Si estás ejecutando ptf en una compilación automática, puedes usar un heredoc para no tener que escribir interactivamente los módulos que deseas instalar. Ejemplo:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Algunas herramientas como Veil, SET, etc. requieren herramientas como Metasploit Framework. Puedes agregar en el módulo TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" y otras herramientas si hay una herramienta que debe instalarse antes de instalar la herramienta. Esto obligará a PTF a instalar primero la herramienta requerida, luego instalar el módulo que la requiere. Ejemplo: TOOL_DEPEND="modules/exploitation/metasploit"
Esto instalará Metasploit primero o asegurará que esté instalado antes de instalar la aplicación.
La opción de configuración IGNORE_THESE_MODULES= se encuentra en config/ptf.config en el directorio raíz de PTF. Esto ignorará los módulos y no los instalará; todo está separado por comas y basado en el nombre - ejemplo: modules/exploitation/metasploit,modules/exploitation/set o categorías de módulos completas, como /modules/code-audit/*,/modules/reporting/*
La opción de configuración IGNORE_UPDATE_ALL_MODULES= se encuentra en config/ptf.config en el directorio raíz de PTF. Esto ignorará los módulos solo cuando se realice install_update_all, que se utiliza cuando deseas instalar todas las herramientas. Esto podría ser para aplicaciones grandes que requieren tiempo sustancial, aquellas que requieren interacción del usuario o abren varios puertos y protocolos en el sistema. Funciona de manera muy similar a IGNORE_THESE_MODULES, excepto que se pueden instalar y actualizar manualmente a través de modules/update_installed. Estos están separados por comas, por ejemplo modules/exploitation/tool1,modules/exploitation/tool2, al ejecutar install_update_all, no se instalarían las herramientas a menos que fueras a use modules/exploitation/tool1 y las instalaras mediante ese método.
La INCLUDE_ONLY_THESE_MODULES en la opción de configuración en config/ptf.config solo instalará e incluirá módulos específicos que se especifiquen aquí. Esto es bueno para establecer una línea base de las herramientas que deseas e instalar solo ellas.
Puedes iniciar PTF sin mensaje de banner si lo deseas. Simplemente especifica:
./ptf --no-banner
or
./ptf -nb
Puedes verificar qué aplicaciones has instalado a través de PTF escribiendo lo siguiente:
ptf>show installed