
Le Penetration Testers Framework (PTF) est un moyen de support modulaire pour des outils à jour.
===
Le PenTesters Framework (PTF) est un script Python conçu pour les distributions basées sur Debian/Ubuntu/ArchLinux afin de créer une distribution similaire et familière pour les tests d'intrusion. En tant que testeurs d'intrusion, nous sommes habitués aux répertoires /pentest/ ou à nos propres ensembles d'outils que nous voulons maintenir à jour en permanence. Nous avons ces outils « incontournables » que nous utilisons régulièrement, et utiliser les plus récents et les meilleurs est important.
PTF tente d'installer tous vos outils de test d'intrusion (les plus récents et les meilleurs), de les compiler, de les construire et de faire en sorte que vous puissiez installer/mettre à jour votre distribution sur n'importe quelle machine. Tout est organisé de manière cohérente avec le Penetration Testing Execution Standard (PTES) et élimine beaucoup de choses qui sont rarement utilisées. PTF simplifie l'installation et l'empaquetage et crée un framework complet de test d'intrusion pour vous. Puisqu'il s'agit d'un framework, vous pouvez le configurer et y ajouter ce que vous voulez. Nous voyons couramment des dépôts développés en interne que vous pouvez également utiliser dans le cadre de ce framework. Tout dépend de vous.
L'objectif ultime est le soutien de la communauté pour ce projet. Nous voulons que de nouveaux outils soient ajoutés au dépôt GitHub. Soumettez vos modules. C'est extrêmement simple à configurer et à ajouter, et cela ne prend que quelques minutes.
PTF nécessite python-pexpect pour fonctionner correctement.
Exécutez la commande suivante :
pip install -r requirements.txt
./ptf
Consultez d'abord le fichier config/ptf.config qui contient l'emplacement de base où tout installer. Par défaut, cela installera dans le répertoire /pentest. Une fois que vous l'avez configuré, passez à l'exécution de PTF en tapant ./ptf (ou python ptf).
Cela vous placera dans un shell de type Metasploit qui a une apparence et une convivialité similaires pour la cohérence. Les commandes show modules, use <modules>, etc. sont toutes acceptées. Avant tout, tapez toujours help ou ? pour voir la liste complète des commandes.
Pour un tutoriel vidéo sur l'utilisation de PTF, consultez notre page Vimeo ici : https://vimeo.com/137133837
Si vous souhaitez installer et/ou mettre à jour tout, faites simplement ce qui suit :
./ptf
use modules/install_update_all
yes
Cela installera tous les outils contenus dans PTF. S'ils sont déjà installés, cela parcourra et mettra tout à jour automatiquement pour vous.
Vous pouvez également installer chaque module individuellement, puis utiliser use modules/update_installed qui ne mettra à jour que ce que vous avez précédemment installé.
Par exemple :
./ptf
use modules/update_installed
Cela ne mettra à jour que ceux que vous avez précédemment installés.
Vous pouvez également afficher les options pour modifier les informations sur les modules.
Si vous souhaitez installer uniquement, par exemple, les outils d'exploitation, vous pouvez exécuter :
./ptf
use modules/exploitation/install_update_all
Cela n'installera que les modules d'exploitation. Vous pouvez le faire pour n'importe quelle catégorie de module.
Vous pouvez installer uniquement les outils que vous souhaitez en allant dans la section modules/custom_list/list.txt. Modifiez le fichier list.txt et ajoutez les outils que vous souhaitez uniquement installer ou mettre à jour.
Exemple de fichier list.txt :
modules/exploitation/metasploit
modules/post-exploitation/unicorn
Ensuite, dans PTF :
./ptf
use modules/custom_list/list
yes
Cela vous permet de conserver votre configuration de module et d'installer uniquement les outils que vous souhaitez et de les maintenir à jour.
Vous pouvez également simplement spécifier un module sans utiliser la catégorie :
./ptf
use trevorc2
yes
Tout d'abord, rendez-vous dans le répertoire modules/. À l'intérieur, il y a des sous-répertoires basés sur les phases du Penetration Testing Execution Standard (PTES). Entrez dans ces phases et examinez les différents modules. Dès que vous en ajoutez un nouveau, par exemple testing.py, il sera automatiquement importé la prochaine fois que vous lancerez PTF. Il y a quelques composants clés à prendre en compte lors de l'examen d'un module qui doivent être complétés.
Voici un exemple de module :
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"
Tous les champs sont assez simples. Pour les emplacements de dépôt, vous pouvez utiliser GIT, SVN FILE ou TAGS. Remplissez les dépendances et l'emplacement d'installation souhaité. PTF prendra l'emplacement du fichier Python (par exemple exploitation) et le déplacera vers ce que vous spécifiez dans la configuration PTF (située sous config). Par défaut, il installe tous vos outils dans /pentest/PTES_PHASE/TOOL_FOLDER
Notez que dans les modules, vous pouvez spécifier des after commands {INSTALL_LOCATION}. Cela ajoutera l'emplacement d'installation souhaité lors de l'utilisation des after commands.
Vous pouvez également spécifier {PTF_LOCATION} qui récupérera le chemin de base de votre installation PTF.
Vous avez également la possibilité pour les emplacements de dépôt de spécifier à la fois un emplacement 32 bits et 64 bits. L'emplacement du dépôt doit toujours être le chemin de téléchargement x86. Pour ajouter un chemin 64 bits pour un outil, spécifiez X64_LOCATION et donnez-lui une URL. Lorsque PTF se lance, il détecte automatiquement l'architecture et tente d'utiliser le lien x64 au lieu du x86.
Notez que les paquets ArchLinux sont également pris en charge. Ils doivent être spécifiés à la fois pour DEBIAN et ARCH afin d'être correctement installés sur l'une ou l'autre plateforme dans le module.
Lorsque vous utilisez le mode TAGS, cela vous permettra d'utiliser un projet GitHub qui utilise des tags pour récupérer la dernière version (généralement des applications compilées) et la télécharger automatiquement. Pour utiliser la méthode TAGS, jetez un œil à la structure sous modules/intelligence-gathering/teamfiltration.py. Dans cet exemple, il n'y a pas besoin de repository_location, mais vous aurez besoin de connaître le propriétaire du projet, le nom du projet/dépôt et le nom du fichier à télécharger. Dans l'exemple de TeamFiltration, il se trouve à : https://github.com/Flangvik/TeamFiltration. Le propriétaire serait Flangvik, le projet/outil serait TeamFiltration. Si vous naviguez vers les versions : https://github.com/Flangvik/TeamFiltration/releases/, on peut voir que le nom du fichier que nous voulons télécharger est "TeamFiltration_Linux". Ce sont les champs OWNER, REPOHOME et FILENAME. En les spécifiant, PTF détectera automatiquement la dernière version de l'outil et l'installera.
Vous pouvez créer vos propres modules et PTF prend également en charge l'accès GitLab. Au lieu de spécifier git, wget, etc., spécifiez simplement gitlab et pointez vers vos propres outils GitLab internes pour les modules.
Lorsque vous utilisez git ou svn traditionnel comme méthode principale, ce qui se passera après l'installation d'un module est qu'il ira simplement chercher la dernière version de l'outil. Avec les after commands, normalement lors de l'installation, vous devrez peut-être exécuter les after commands après chaque mise à jour. Si vous définissez bypass updates sur YES (BYPASS_UPDATE="YES"), chaque fois que l'outil est exécuté, il récupérera la dernière version et exécutera encore les after commands. Si cela est marqué sur no, il ne fera qu'un git pull de la dernière version du système. Pour les options FILE, il est recommandé de toujours utiliser BYPASS_UPDATE="YES" afin qu'il écrase les fichiers à chaque fois.
Les after commands sont des commandes que vous pouvez insérer après une installation. Cela pourrait être de se déplacer dans un répertoire et de lancer des commandes supplémentaires pour terminer l'installation. Par exemple, dans le scénario BEEF, vous devez exécuter ruby install-beef ensuite. Voici un exemple de after commands utilisant le drapeau {INSTALL_LOCATION}.
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
Pour les AFTER_COMMANDS qui font une auto-installation (ne nécessitent pas d'interaction utilisateur).
Le drapeau LAUNCHER= dans les modules est optionnel. Si vous ajoutez LAUNCHER="setoolkit" par exemple, PTF créera automatiquement un lanceur pour l'outil sous /usr/local/bin/. Dans l'exemple setoolkit, lors de l'exécution, PTF créera automatiquement un fichier sous /usr/local/bin/setoolkit afin que vous puissiez lancer SET depuis n'importe où en tapant simplement setoolkit. Tous les fichiers seront toujours installés dans les catégories appropriées, par exemple /pentest/exploitation/setoolkit, mais un lanceur automatique sera créé.
Vous pouvez avoir plusieurs lanceurs pour une application. Par exemple, pour Metasploit, vous pouvez vouloir msfconsole, msfvenom, etc. Pour ajouter plusieurs lanceurs, mettez simplement une , entre eux. Par exemple LAUNCHER="msfconsole,msfvenom". Cela créera des lanceurs pour les deux.
Vous pouvez également simplement exécuter ./ptf --update-all et il mettra automatiquement tout à jour sans avoir à entrer dans le framework.
Si vous exécutez ptf dans une construction automatique, vous pouvez utiliser un heredoc pour ne pas avoir à taper interactivement les modules que vous souhaitez installer. Exemple :
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Certains outils comme Veil, SET, etc. nécessitent des outils tels que le Metasploit Framework. Vous pouvez ajouter dans le module TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" et plusieurs autres outils s'il y a un outil requis avant d'installer l'outil. Cela forcera PTF à installer l'outil requis en premier, puis à installer le module qui en a besoin. Exemple :
TOOL_DEPEND="modules/exploitation/metasploit"
Cela installera Metasploit en premier ou garantira qu'il est installé en premier avant d'installer l'application.
L'option de configuration IGNORE_THESE_MODULES= se trouve sous config/ptf.config dans le répertoire racine de PTF. Cela ignorera les modules et ne les installera pas - tout est séparé par des virgules et basé sur le nom - exemple : modules/exploitation/metasploit,modules/exploitation/set ou des catégories entières de modules, comme /modules/code-audit/*,/modules/reporting/*
L'option de configuration IGNORE_UPDATE_ALL_MODULES= se trouve sous config/ptf.config dans le répertoire racine de PTF. Cela ignorera les modules uniquement lors de l'exécution de install_update_all qui est utilisé lorsque vous souhaitez installer tous les outils. Cela peut être pour des applications volumineuses qui prennent beaucoup de temps, celles qui nécessitent une interaction utilisateur, ou qui ouvrent un certain nombre de ports et protocoles sur le système. Cela fonctionne de manière très similaire à IGNORE_THESE_MODULES, sauf qu'ils peuvent être installés et mis à jour manuellement via modules/update_installed. Ce sont des listes séparées par des virgules, donc par exemple modules/exploitation/tool1,modules/exploitation/tool2, lors de l'exécution de install_update_all, ces outils ne seraient pas installés à moins que vous n'alliez utiliser modules/exploitation/tool1 et installé via cette méthode.
L'option de configuration INCLUDE_ONLY_THESE_MODULES sous config/ptf.config n'installera et n'inclura que les modules spécifiques qui sont spécifiés ici. C'est utile pour définir une base des outils que vous voulez et n'installer que ceux-ci.
Vous pouvez lancer PTF sans message de bannière si vous le souhaitez. Spécifiez simplement :
./ptf --no-banner
ou
./ptf -nb
Vous pouvez vérifier quelles applications vous avez déjà installées via PTF en tapant ce qui suit :
ptf>show installed