
O Penetration Testers Framework (PTF) é uma forma de suporte modular para ferramentas atualizadas.
O PenTesters Framework (PTF) é um script Python projetado para distribuições baseadas em Debian/Ubuntu/ArchLinux para criar uma distribuição similar e familiar para Testes de Penetração. Como pentesters, estamos acostumados aos diretórios /pentest/ ou aos nossos próprios conjuntos de ferramentas que queremos manter atualizados o tempo todo. Temos aquelas ferramentas "essenciais" que usamos regularmente, e usar as mais recentes e melhores é importante.
O PTF tenta instalar todas as suas ferramentas de teste de penetração (as mais recentes e melhores), compilá-las, construí-las e fazer com que você possa instalar/atualizar sua distribuição em qualquer máquina. Tudo é organizado de forma coesa com o Padrão de Execução de Testes de Penetração (PTES) e elimina muitas coisas que raramente são usadas. O PTF simplifica a instalação e o empacotamento e cria um framework completo de pentest para você. Como é um framework, você pode configurar e adicionar conforme achar necessário. Vemos com frequência repositórios desenvolvidos internamente que você também pode usar como parte deste framework. Tudo depende de você.
O objetivo final é o suporte da comunidade para este projeto. Queremos novas ferramentas adicionadas ao repositório do github. Envie seus módulos. É super simples configurá-los e adicioná-los, e leva apenas alguns minutos.
O PTF requer o python-pexpect para funcionar adequadamente.
Execute o comando abaixo:
pip install -r requirements.txt
./ptf
Primeiro, verifique o arquivo config/ptf.config que contém o local base onde tudo será instalado. Por padrão, isso instalará no diretório /pentest. Depois de configurado, execute o PTF digitando ./ptf (ou python ptf).
Isso o colocará em um shell do tipo Metasploitesque, que tem uma aparência e sensação semelhantes para consistência. Show modules, use <modules>, etc. são comandos aceitos. Primeiro, sempre digite help ou ? para ver uma lista completa de comandos.
Para um tutorial em vídeo sobre como usar o PTF, confira nossa página no Vimeo aqui: https://vimeo.com/137133837
Se você quiser instalar e/ou atualizar tudo, simplesmente faça o seguinte:
./ptf
use modules/install_update_all
yes
Isso instalará todas as ferramentas dentro do PTF. Se já estiverem instaladas, isso irá iterar e atualizar tudo automaticamente para você.
Você também pode instalar cada módulo individualmente e depois usar use modules/update_installed, que atualizará apenas o que você instalou anteriormente.
Por exemplo:
./ptf
use modules/update_installed
Isso atualizará apenas os módulos que você instalou anteriormente.
Você também pode usar show options para alterar informações sobre os módulos.
Se você quiser instalar apenas, por exemplo, ferramentas de exploração, execute:
./ptf
use modules/exploitation/install_update_all
Isso instalará apenas os módulos de exploração. Você pode fazer isso para qualquer categoria de módulo.
Você pode instalar apenas as ferramentas que deseja acessando a seção modules/custom_list/list.txt. Modifique o arquivo list.txt e adicione as ferramentas que você deseja instalar ou atualizar.
Exemplo de arquivo list.txt:
modules/exploitation/metasploit modules/post-exploitation/unicorn
Então, dentro do PTF:
./ptf
use modules/custom_list/list
yes
Isso permite que você mantenha sua configuração de módulos e instale apenas as ferramentas que deseja e mantenha-as atualizadas.
Você também pode simplesmente especificar um módulo sem usar a categoria:
./ptf
use trevorc2
yes
Primeiro, vá para o diretório modules/. Dentro dele, há subdiretórios baseados nas fases do Padrão de Execução de Testes de Penetração (PTES). Entre nessas fases e observe os diferentes módulos. Assim que você adicionar um novo, por exemplo testing.py, ele será automaticamente importado na próxima vez que você iniciar o PTF. Há alguns componentes principais ao analisar um módulo que devem ser concluídos.
Abaixo está um exemplo de módulo
AUTHOR="David Kennedy (ReL1K)"
DESCRIPTION="Este módulo instalará/atualizará o 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 os campos são bastante fáceis. Nos locais do repositório, você pode usar GIT, SVN, FILE ou TAGS. Preencha as dependências e onde você deseja que o local de instalação seja. O PTF pegará onde o arquivo python está localizado (por exemplo, exploitation) e o moverá para o que você especificar na configuração do PTF (localizado em config). Por padrão, ele instala todas as suas ferramentas em /pentest/PTES_PHASE/TOOL_FOLDER
Observe que nos módulos você pode especificar after commands {INSTALL_LOCATION}. Isso anexará o local de instalação desejado ao usar after commands.
Você também pode especificar {PTF_LOCATION} que puxará o caminho base para sua instalação do PTF.
Você também tem a capacidade de especificar locais de repositório tanto para 32 bits quanto para 64 bits. O local do repositório deve ser sempre o caminho de download x86. Para adicionar um caminho de 64 bits para uma ferramenta, especifique X64_LOCATION e forneça uma URL. Quando o PTF for iniciado, ele detectará automaticamente a arquitetura e tentará usar o link x64 em vez do x86.
Observe que pacotes ArchLinux também são suportados; é necessário especificar tanto para DEBIAN quanto para ARCH para que seja instalado corretamente em qualquer plataforma no módulo.
Ao usar o modo TAGS, isso permitirá que você use um projeto github que utiliza tags para puxar a versão mais recente (geralmente aplicativos compilados) e baixar automaticamente. Para usar o método TAGS, dê uma olhada na estrutura em modules/intelligence-gathering/teamfiltration.py. Neste exemplo, não há necessidade de repository_location, mas você precisará saber o proprietário do projeto, o nome do projeto/repositório e o nome do arquivo para baixar. No exemplo do TeamFiltration, ele está localizado em: https://github.com/Flangvik/TeamFiltration. O proprietário seria Flangvik, o projeto/ferramenta seria TeamFiltration. Se você navegar para releases: https://github.com/Flangvik/TeamFiltration/releases/, podemos ver aqui que o nome do arquivo que queremos baixar é "TeamFiltration_Linux". Estes estão sob OWNER, REPOHOME e FILENAME. Especificando-os, o PTF detectará automaticamente a versão mais recente da ferramenta e a instalará.
Você pode criar seus próprios módulos e o PTF também suporta acesso gitlab. Em vez de especificar git, wget, etc., simplesmente especifique gitlab e aponte para suas próprias ferramentas gitlab internas para módulos.
Ao usar git ou svn tradicionais como método principal, o que acontecerá após um módulo ser instalado é que ele simplesmente pegará a versão mais recente da ferramenta. Com after commands, normalmente ao instalar, você pode precisar executar os after commands após cada atualização. Se você especificar bypass updates como YES (BYPASS_UPDATE="YES"), cada vez que a ferramenta for executada, ela verificará a versão mais recente e ainda executará os after commands. Se isso estiver marcado como no, ele apenas fará git pull da versão mais recente do sistema. Para opções FILE, é recomendado sempre usar BYPASS_UPDATE="YES" para que os arquivos sejam sobrescritos a cada vez.
After commands são comandos que você pode inserir após uma instalação. Pode ser mudar para um diretório e executar comandos adicionais para finalizar a instalação. Por exemplo, no cenário BEEF, você precisa executar ruby install-beef em seguida. Abaixo está um exemplo de after commands usando a flag {INSTALL_LOCATION}.
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
Para AFTER_COMMANDS que fazem auto-instalação (não precisam de interação do usuário).
A flag LAUNCHER= nos módulos é opcional. Se você adicionar LAUNCHER="setoolkit" por exemplo, o PTF criará automaticamente um lançador para a ferramenta em /usr/local/bin/. No exemplo do setoolkit, quando executado - o PTF criará automaticamente um arquivo em /usr/local/bin/setoolkit para que você possa iniciar o SET de qualquer lugar simplesmente digitando setoolkit. Todos os arquivos ainda serão instalados nas categorias apropriadas, por exemplo /pentest/exploitation/setoolkit, no entanto um lançador automático será criado.
Você pode ter vários lançadores para um aplicativo. Por exemplo, para o Metasploit, você pode querer msfconsole, msfvenom, etc. Para adicionar vários lançadores, simplesmente coloque uma , entre eles. Por exemplo LAUNCHER="msfconsole,msfvenom". Isso criaria lançadores para ambos.
Você também pode simplesmente executar ./ptf --update-all e ele atualizará automaticamente tudo para você sem precisar entrar no framework.
Se você estiver executando ptf em uma build automática, você pode usar um heredoc para não precisar digitar interativamente os módulos que deseja instalar. Exemplo:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Algumas ferramentas como Veil, SET, etc. exigem ferramentas como o Metasploit Framework. Você pode adicionar no módulo TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set" e várias outras ferramentas se houver uma ferramenta necessária a ser instalada antes de instalar a ferramenta. Isso forçará o PTF a instalar a ferramenta necessária primeiro, depois instalar o módulo que a exige. Exemplo:
TOOL_DEPEND="modules/exploitation/metasploit"
Isso instalará o Metasploit primeiro ou garantirá que ele esteja instalado antes de instalar o aplicativo.
A opção de configuração IGNORE_THESE_MODULES= pode ser encontrada em config/ptf.config no diretório raiz do PTF. Isso ignorará módulos e não os instalará - tudo é separado por vírgulas e baseado no nome - exemplo: modules/exploitation/metasploit,modules/exploitation/set ou categorias inteiras de módulos, como /modules/code-audit/*,/modules/reporting/*
A opção de configuração IGNORE_UPDATE_ALL_MODULES= pode ser encontrada em config/ptf.config no diretório raiz do PTF. Isso ignorará módulos apenas ao fazer install_update_all, que é usado quando você deseja instalar todas as ferramentas. Isso pode ser para aplicações grandes que levam muito tempo, aquelas que exigem interação do usuário ou que abrem várias portas e protocolos no sistema. Funciona de forma muito semelhante ao IGNORE_THESE_MODULES, exceto que eles podem ser instalados e atualizados manualmente através de modules/update_installed. Eles são separados por vírgulas, por exemplo modules/exploitation/tool1,modules/exploitation/tool2; ao executar install_update_all, essas ferramentas não serão instaladas a menos que você vá para use modules/exploitation/tool1 e instale através desse método.
A opção INCLUDE_ONLY_THESE_MODULES na configuração em config/ptf.config instalará e incluirá apenas módulos específicos que são especificados aqui. Isso é bom para definir uma linha de base das ferramentas que você deseja e instalar apenas elas.
Você pode iniciar o PTF sem mensagem de banner se desejar. Simplesmente especifique:
./ptf --no-banner
ou
./ptf -nb
Você pode verificar quais aplicativos já instalou através do PTF digitando o seguinte:
ptf>show installed