P4wnP1 A.L.O.A.
P4wnP1 A.L.O.A. por MaMe82 é um framework que transforma um Raspberry Pi Zero W numa plataforma flexível e de baixo custo para
testes de penetração, red teaming e engajamentos físicos ... ou num "Pequeno Aparelho Ofensivo".
0. Como instalar
A imagem mais recente pode ser encontrada na aba de releases.
A maneira mais fácil de aceder a uma instalação nova do P4wnP1 A.L.O.A. é usar o cliente web através do WiFi gerado (a PSK
é MaMe82-P4wnP1, o URL http://172.24.0.1:8000) ou SSH (password padrão toor).
1. Funcionalidades
Emulação Plug&Play de dispositivo USB
- Funções USB:
- Ethernet USB (RNDIS e CDC ECM)
- Serial USB
- Armazenamento em massa USB (Flashdrive ou CD-Rom)
- Teclado HID
- Rato HID
- Reconfiguração em tempo de execução da pilha USB (sem reinicialização)
- Deteção de ligar/desligar possibilita manter o P4wnP1 A.L.O.A. energizado (fonte externa) e acionar
ação se o dispositivo USB emulado for ligado a um novo anfitrião
- Sem necessidade de lidar com diferentes interfaces ethernet internas, pois CDC ECM e RNDIS estão ligadas a uma bridge virtual
- Armazenamento e carregamento persistente de modelos de configuração para definições USB
HIDScript
- Substituição do limitado DuckyScript
- Linguagem de script sofisticada para automatizar teclado e rato
- Até 8 tarefas HIDScript podem ser executadas em paralelo (manter uma tarefa a mexer o rato, enquanto outras são iniciadas a pedido para
fazer injeção arbitrária de rato e teclas de forma transparente)
- HIDScript é baseado em JavaScript, com bibliotecas comuns disponíveis, o que permite scripts mais complexos (chamadas de funções,
uso de
Math para cálculos do rato, etc.)
- Teclado
- Baseado em UTF-8, portanto sem limitação a caracteres ASCII
- Pode reagir a feedback do teclado real do anfitrião ao ler mudanças de estado do LED de NUMLOCK, CAPSLOCK e
SCROLLLOCK (se o SO alvo partilhar o estado do LED entre todos os teclados ligados, o que não é o caso para OSX)
- Tomar decisões de ramificação no HIDScript, baseado no feedback dos LEDs
- Rato
- Movimento relativo (rápido, mas não preciso)
- Movimento relativo passo a passo (mais lento, mas preciso ... move o rato em passos de 1 DPI)
- Posicionamento absoluto no Windows (perfeito ao pixel se as dimensões do ecrã alvo forem conhecidas)
- Teclado e rato não são apenas controlados pela mesma linguagem de script, ambos podem ser usados no mesmo script. Isto
permite combiná-los para alcançar objetivos que não poderiam ser alcançados usando apenas teclado ou rato.
- Layouts de idioma atuais: br, de, es, fr, gb, it, ru e us
Bluetooth
- Interface completa para a pilha Bluez (atualmente sem suporte para descoberta/ligação remota de dispositivos)
- Permite executar um Ponto de Acesso de Rede Bluetooth (NAP)
- Emparelhamento personalizável (modo legado baseado em PIN ou SSP)
- Suporte para Alta Velocidade (usa tramas 802.11 para obter taxas de transferência semelhantes a WiFi)
- Reconfiguração em tempo de execução da pilha Bluetooth
- Nota: PANU também é possível, mas atualmente não suportado (sem ligação a dispositivo remoto)
- Armazenamento e carregamento persistente de modelos de configuração para definições Bluetooth
WiFi
- Firmware modificado (construído com o framework Nexmon)
- Permite KARMA (forjar respostas válidas para Access Points sondados por dispositivos remotos e permitir associação)
- Transmitir Beacons adicionais, para emular múltiplos SSIDs
- Canal oculto WiFi
- Nota: O modo monitor legado do Nexmon está incluído, mas não suportado pelo P4wnP1. O modo monitor ainda é instável e provável de
crashar o firmware se a configuração mudar.
- Configuração fácil de Access Point
- Configuração fácil de modo Estação (ligar a um AP existente)
- Modo failover (se não for possível ligar ao Access Point alvo, criar um Access Point próprio)
- Reconfiguração em tempo de execução da pilha WiFi
- Armazenamento e carregamento persistente de modelos de configuração para definições WiFi
Rede
- Configuração fácil de interface ethernet para
- interface bluetooth NAP
- interface USB (se RNDIS/CDC ECM estiver ativado)
- interface WiFi
- Suporte a servidor DHCP dedicado por interface
- Suporte a modo cliente DHCP
- Configuração manual
- Armazenamento e carregamento persistente de modelos de configuração para cada interface
Ferramentas
Não há muito a dizer aqui, o P4wnP1 A.L.O.A. é suportado pelo KALI Linux, portanto tudo deve estar à mão (ou pode ser
instalado usando apt)
Configuração e Controlo via CLI, remotamente se necessário
- Todas as funcionalidades mencionadas até agora podem ser configuradas usando um cliente CLI
- O serviço core do P4wnP1 é um único binário, a correr como unidade systemd que preserva o estado em tempo de execução
- O cliente CLI interage com este serviço via RPC (gRPC para ser específico) para alterar o estado do core
- Como o CLI usa uma abordagem RPC, também pode ser usado para configuração remota
- Se o P4wnP1 for acedido via SSH, o cliente CLI está lá, à espera dos seus comandos (ou do seu kung fu de tab completion)
- O CLI é escrito em Go (tal como a maior parte do código) e, portanto, compila para a maioria das plataformas e arquiteturas principais
Portanto, se quiser usar um ficheiro batch a correr num anfitrião Windows remoto para configurar o P4wnP1 ... sem problema:
- Compile o cliente para windows
- Certifique-se de que consegue ligar ao P4wnP1 de alguma forma (Bluetooth, WiFi, USB)
- Adicione o parâmetro
host aos seus comandos de cliente
- ... e use o CLI como faria com acesso local.
Configuração e Controlo via cliente web
Embora não estivesse inicialmente planeado, o P4wnP1 A.L.O.A. pode ser configurado usando um webclient.
Embora o cliente não estivesse planeado, evoluiu para uma peça de software agradável. Na verdade, acabou por ser a principal
ferramenta de configuração para o P4wnP1 A.L.O.A.
O webclient possui capacidades que não podem ser acedidas a partir do CLI (armazenamento de templates, criação de
"TriggerActions").
As funcionalidades principais:
- Deve funcionar na maioria dos navegadores móveis e de desktop, com aspeto e comportamento consistentes (Quasar Framework)
- Usa gRPC via websockets (sem API RESTful, sem XHR, abordagem quase idêntica ao CLI)
- Graças a esta interface, o webclient não depende apenas de um esquema de pedido&resposta, mas recebe "eventos push" do
core do P4wnP1. Isto significa:
- Se você (ou um script) alterar o estado do P4wnP1 A.L.O.A., estas alterações serão imediatamente refletidas no
webclient
- Se tiver vários webclients a correr, as alterações do estado do core serão refletidas de um cliente para todos os outros
clientes
- Inclui um editor de HIDScript, com
- realce de sintaxe
- auto-completar (
CTRL+SPACE)
- armazenamento e carregamento persistente de HIDScripts
- execução a pedido de HIDScript diretamente do navegador
- um gestor de tarefas HIDScript (cancelar tarefas em execução, inspecionar estado e resultados das tarefas)
- Inclui uma visão geral e editor para TriggerActions
- Suporte total a templates para todas as funcionalidades descritas até agora
- O WebClient é uma Aplicação de Página Única, uma vez carregado, tudo corre do lado do cliente, apenas pedidos gRPC são trocados
Automação
A abordagem de automação da versão antiga do P4wnP1 (scripts bash estáticos) já não podia ser usada.