
Il Penetration Testers Framework (PTF) è un modo per il supporto modulare di strumenti aggiornati.
Il PenTesters Framework (PTF) è uno script Python progettato per distribuzioni basate su Debian/Ubuntu/ArchLinux per creare una distribuzione simile e familiare per il Penetration Testing. Come pentesters, siamo abituati alle directory /pentest/ o ai nostri set di strumenti che vogliamo mantenere sempre aggiornati. Abbiamo quegli strumenti "di riferimento" che usiamo regolarmente, e usare le ultime e migliori versioni è importante.
PTF cerca di installare tutti i tuoi strumenti di penetration testing (le ultime e migliori versioni), compilarli, costruirli e fare in modo che tu possa installare/aggiornare la tua distribuzione su qualsiasi macchina. Tutto è organizzato in modo coerente con il Penetration Testing Execution Standard (PTES) ed elimina molte cose che vengono usate raramente. PTF semplifica installazione e pacchettizzazione e crea un intero framework di pentesting per te. Poiché è un framework, puoi configurare e aggiungere come preferisci. Vediamo comunemente repository sviluppati internamente che puoi usare come parte di questo framework. Tutto dipende da te.
L'obiettivo finale è il supporto della comunità su questo progetto. Vogliamo che nuovi strumenti vengano aggiunti al repository GitHub. Invia i tuoi moduli. È semplicissimo configurarli e aggiungerli e richiede solo pochi minuti.
PTF richiede python-pexpect per funzionare correttamente.
Esegui il comando seguente:
pip install -r requirements.txt
./ptf
Prima controlla il file config/ptf.config che contiene la posizione di base dove installare tutto. Per impostazione predefinita, questo installerà nella directory /pentest. Una volta configurato, esegui PTF digitando ./ptf (o python ptf).
Questo ti porterà in una shell di tipo Metasploitesque che ha un aspetto e una sensazione simili per coerenza. Mostra moduli, usa <moduli>, ecc. sono tutti comandi accettati. Prima cosa, digita sempre help o ? per vedere l'elenco completo dei comandi.
Per un video tutorial su come usare PTF, guarda la nostra pagina Vimeo qui: https://vimeo.com/137133837
Se vuoi installare e/o aggiornare tutto, fai semplicemente quanto segue:
./ptf
use modules/install_update_all
yes
Questo installerà tutti gli strumenti all'interno di PTF. Se sono già installati, questo itererà e aggiornerà automaticamente tutto per te.
Puoi anche installare singolarmente ogni modulo, quindi usare il comando use modules/update_installed che aggiornerà solo ciò che hai precedentemente installato.
Per esempio:
./ptf
use modules/update_installed
Questo aggiornerà solo quelli che hai installato in precedenza.
Puoi anche mostrare le opzioni per cambiare le informazioni sui moduli.
Se vuoi installare solo, per esempio, strumenti di exploitation, puoi eseguire:
./ptf
use modules/exploitation/install_update_all
Questo installerà solo i moduli di exploitation. Puoi farlo per qualsiasi categoria di moduli.
Puoi installare solo gli strumenti che desideri andando nella sezione modules/custom_list/list.txt. Modifica il file list.txt e aggiungi gli strumenti che vuoi solo installare o aggiornare.
Esempio di file list.txt:
modules/exploitation/metasploit
modules/post-exploitation/unicorn
Poi quando sei in PTF:
./ptf
use modules/custom_list/list
yes
Questo ti permette di portare la configurazione del tuo modulo e installare solo gli strumenti che vuoi e mantenerli aggiornati.
Puoi anche semplicemente specificare un modulo senza usare la categoria:
./ptf
use trevorc2
yes
Per prima cosa, vai alla directory modules/, all'interno ci sono sottodirectory basate sulle fasi del Penetration Testing Execution Standard (PTES). Entra in quelle fasi e guarda i diversi moduli. Non appena ne aggiungi uno nuovo, ad esempio testing.py, verrà automaticamente importato la prossima volta che avvierai PTF. Ci sono alcuni componenti chiave quando si guarda un modulo che devono essere completati.
Di seguito è riportato un modulo di esempio
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"
Tutti i campi sono piuttosto semplici, riguardo le posizioni dei repository, puoi usare GIT, SVN FILE o TAGS. Compila le dipendenze e dove vuoi che sia la posizione di installazione. PTF prenderà dove si trova il file python (ad esempio exploitation) e lo sposterà in ciò che specifichi nella configurazione di PTF (situata sotto config). Per impostazione predefinita, installa tutti i tuoi strumenti in /pentest/PTES_PHASE/TOOL_FOLDER
Nota nei moduli, puoi specificare after commands {INSTALL_LOCATION}. Questo aggiungerà dove vuoi che vada la posizione di installazione quando usi after commands.
Puoi anche specificare {PTF_LOCATION} che richiamerà il percorso base per la tua installazione PTF.
Hai anche la possibilità di specificare sia una posizione a 32 bit che a 64 bit per le posizioni dei repository. La posizione del repository dovrebbe essere sempre il percorso di download x86. Per aggiungere un percorso a 64 bit per uno strumento, specifica X64_LOCATION e fornisci un URL. Quando PTF viene avviato, rileverà automaticamente l'architettura e proverà a usare il link x64 invece di quello x86.
Nota che anche i pacchetti ArchLinux sono supportati, devono essere specificati sia per DEBIAN che per ARCH affinché vengano installati correttamente su entrambe le piattaforme nel modulo
Quando si utilizza la modalità TAGS, questo ti permetterà di usare un progetto GitHub che utilizza i tag per prelevare l'ultima versione (di solito applicazioni compilate) e scaricarla automaticamente. Per usare il metodo TAGS, dai un'occhiata alla struttura in modules/intelligence-gathering/teamfiltration.py. In questo esempio, non c'è bisogno di un repository_location, ma dovrai conoscere il proprietario del progetto, il nome/repo del progetto e il nome del file da scaricare. Nell'esempio di TeamFiltration, si trova a: https://github.com/Flangvik/TeamFiltration. Il proprietario sarebbe Flangvik, il progetto/strumento sarebbe TeamFiltration. Se navighi fino alle release: https://github.com/Flangvik/TeamFiltration/releases/, possiamo vedere qui che il nome del file che vogliamo scaricare è "TeamFiltration_Linux". Questi sono sotto OWNER, REPOHOME e FILENAME. Specificandoli, PTF rileverà automaticamente l'ultima release dello strumento e lo installerà.
Puoi creare i tuoi moduli e PTF supporta anche l'accesso a GitLab. Invece di specificare git, wget, ecc., basta specificare gitlab e puntare ai tuoi strumenti gitlab interni per i moduli.
Quando si utilizza git o svn tradizionale come metodo principale, ciò che accadrà dopo che un modulo è installato è che andrà semplicemente a prendere l'ultima versione dello strumento. Con after commands, normalmente durante l'installazione, potresti aver bisogno di eseguire gli after commands dopo ogni aggiornamento. Se specifichi bypass updates su YES (BYPASS_UPDATE="YES"), ogni volta che lo strumento viene eseguito, farà il checkout dell'ultima versione e eseguirà comunque gli after commands. Se è impostato su no, farà solo git pull dell'ultima versione del sistema. Per le opzioni FILE, è consigliato usare sempre BYPASS_UPDATE="YES" in modo che i file vengano sovrascritti ogni volta.
Gli after commands sono comandi che puoi inserire dopo un'installazione. Potrebbe essere passare a una directory e avviare comandi aggiuntivi per completare l'installazione. Ad esempio nello scenario BEEF, devi eseguire ruby install-beef successivamente. Di seguito è riportato un esempio di after commands usando il flag {INSTALL_LOCATION}.
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
Per AFTER_COMMANDS che fanno auto-installazione (non necessitano di interazione utente).
Il flag LAUNCHER= nei moduli è opzionale. Se aggiungi ad esempio LAUNCHER="setoolkit", PTF creerà automaticamente un launcher per lo strumento in /usr/local/bin/. Nell'esempio di setoolkit, quando eseguito - PTF creerà automaticamente un file in /usr/local/bin/setoolkit così puoi avviare SET da qualsiasi parte semplicemente digitando setoolkit. Tutti i file verranno comunque installati nelle categorie appropriate, ad esempio /pentest/exploitation/setoolkit ma verrà creato un launcher automatico.
Puoi avere più launcher per un'applicazione. Ad esempio, per Metasploit potresti volere msfconsole, msfvenom, ecc. Per aggiungere più launcher, basta mettere una , tra di loro. Ad esempio LAUNCHER="msfconsole,msfvenom". Questo creerebbe launcher per entrambi.
Puoi anche semplicemente eseguire ./ptf --update-all e aggiornerà automaticamente tutto senza dover entrare nel framework.
Se stai eseguendo ptf in una build automatica, puoi usare un heredoc così non devi digitare interattivamente i moduli che desideri installare. Esempio:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Alcuni strumenti come Veil, SET, ecc. richiedono strumenti come il Metasploit Framework. Puoi aggiungere nel modulo TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" e molti altri strumenti se c'è uno strumento che deve essere installato prima di installare lo strumento. Questo forzerà PTF a installare prima lo strumento richiesto, poi a installare il modulo che lo richiede. Esempio:
TOOL_DEPEND="modules/exploitation/metasploit"
Questo installerà Metasploit prima o assicurerà che sia installato prima di installare l'applicazione.
L'opzione di configurazione IGNORE_THESE_MODULES= si trova in config/ptf.config nella directory principale di PTF. Questo ignorerà i moduli e non li installerà - tutto è separato da virgole e basato sul nome - esempio: modules/exploitation/metasploit,modules/exploitation/set o intere categorie di moduli, come /modules/code-audit/*,/modules/reporting/*
L'opzione di configurazione IGNORE_UPDATE_ALL_MODULES= si trova in config/ptf.config nella directory principale di PTF. Questo ignorerà i moduli solo quando si esegue install_update_all che viene usato quando vuoi installare tutti gli strumenti. Questo potrebbe essere per applicazioni grandi che richiedono molto tempo, quelle che richiedono interazione utente, o che aprono un certo numero di porte e protocolli sul sistema. Funziona in modo molto simile a IGNORE_THESE_MODULES, tranne che possono essere installati e aggiornati manualmente tramite modules/update_installed. Questi sono separati da virgole, quindi ad esempio modules/exploitation/tool1,modules/exploitation/tool2, quando si esegue install_update_all, non installerebbe gli strumenti a meno che tu non vada a usare modules/exploitation/tool1 e li installi con quel metodo.
L'opzione INCLUDE_ONLY_THESE_MODULES nella configurazione in config/ptf.config installerà e includerà solo i moduli specific qui. Questo è utile per creare una baseline degli strumenti che vuoi e installare solo quelli.
Puoi avviare PTF senza messaggio di benvenuto se vuoi. Basta specificare:
./ptf --no-banner
oppure
./ptf -nb
Puoi controllare quali applicazioni hai già installato tramite PTF digitando quanto segue:
ptf>show installed