# 🛡️ Script de Teste de Segurança - SGSE

Script Python para testar e validar o sistema de segurança do SGSE através de simulações de ataques cibernéticos.

## 📋 Descrição

Este script simula diferentes tipos de ataques cibernéticos para validar se o sistema SGSE está detectando e bloqueando adequadamente tentativas de intrusão. Os testes incluem:

- ✅ **Brute Force** - Tentativas repetidas de login com diferentes senhas
- ✅ **SQL Injection** - Tentativas de injeção de código SQL
- ✅ **XSS (Cross-Site Scripting)** - Tentativas de injeção de scripts maliciosos
- ✅ **DDoS** - Múltiplas requisições simultâneas
- ✅ **Path Traversal** - Tentativas de acesso a arquivos do sistema
- ✅ **Command Injection** - Tentativas de execução de comandos do sistema
- ✅ **NoSQL Injection** - Tentativas de injeção NoSQL
- ✅ **XXE (XML External Entity)** - Tentativas de ataque via XML

## 🚀 Pré-requisitos

```bash
# Instalar Python 3.8+ (se ainda não tiver)
python3 --version

# Criar ambiente virtual (recomendado)
cd scripts
python3 -m venv venv_seguranca

# Ativar ambiente virtual
source venv_seguranca/bin/activate  # Linux/Mac
# ou
venv_seguranca\Scripts\activate     # Windows

# Instalar dependências
pip install requests
```

**Nota:** Em sistemas Arch Linux/CachyOS, o Python usa ambientes gerenciados (PEP 668). 
Por isso, é necessário usar um ambiente virtual. O ambiente já foi criado automaticamente em `scripts/venv_seguranca`.

## 📖 Uso

### Teste Completo (Todos os Ataques)

```bash
# Ativar ambiente virtual (se ainda não estiver ativo)
cd scripts
source venv_seguranca/bin/activate

# Executar todos os testes
python3 teste_seguranca.py

# Ou tornando o script executável
chmod +x teste_seguranca.py
./teste_seguranca.py
```

### Teste Específico

```bash
# Testar apenas Brute Force
python3 scripts/teste_seguranca.py --teste brute_force

# Testar apenas SQL Injection
python3 scripts/teste_seguranca.py --teste sql_injection

# Testar apenas XSS
python3 scripts/teste_seguranca.py --teste xss

# Testar apenas DDoS
python3 scripts/teste_seguranca.py --teste ddos

# Testar apenas Path Traversal
python3 scripts/teste_seguranca.py --teste path_traversal

# Testar apenas Command Injection
python3 scripts/teste_seguranca.py --teste command_injection

# Testar apenas NoSQL Injection
python3 scripts/teste_seguranca.py --teste nosql

# Testar apenas XXE
python3 scripts/teste_seguranca.py --teste xxe
```

### Opções Avançadas

```bash
# Testar em servidor específico
python3 scripts/teste_seguranca.py --url http://192.168.1.100:5173

# Testar Brute Force com mais tentativas
python3 scripts/teste_seguranca.py --teste brute_force --brute-force-tentativas 20

# Testar DDoS com mais threads e duração maior
python3 scripts/teste_seguranca.py --teste ddos --ddos-threads 100 --ddos-duracao 30

# Ver todas as opções
python3 scripts/teste_seguranca.py --help
```

## 📊 Interpretação dos Resultados

### ✅ DETECTADO
O sistema bloqueou ou detectou o ataque com sucesso. Isso é esperado e desejado.

### ❌ NÃO DETECTADO
O sistema não bloqueou ou não detectou o ataque. Pode indicar uma vulnerabilidade que precisa ser corrigida.

### ⚠️ AVISO
O sistema pode estar parcialmente protegido, mas recomenda-se revisar a implementação.

## 🔍 O Que o Script Verifica

### 1. Brute Force
- ✅ Bloqueio após 5 tentativas falhas
- ✅ Retorno de status 429 (Too Many Requests)
- ✅ Retorno de status 403 (Forbidden)
- ✅ Headers de rate limiting (X-RateLimit-Remaining)

### 2. SQL Injection
- ✅ Bloqueio de payloads SQL maliciosos
- ✅ Retorno de status 400/403/422
- ✅ Mensagens de erro específicas sobre SQL

### 3. XSS
- ✅ Sanitização de tags HTML/JavaScript
- ✅ Bloqueio de scripts maliciosos
- ✅ Retorno de status 400/403/422

### 4. DDoS
- ✅ Rate limiting de requisições simultâneas
- ✅ Bloqueio de tráfego excessivo
- ✅ Taxa de bloqueio > 50%

### 5. Path Traversal
- ✅ Bloqueio de caminhos relativos (../)
- ✅ Prevenção de acesso a arquivos do sistema

### 6. Command Injection
- ✅ Bloqueio de caracteres especiais de shell
- ✅ Prevenção de execução de comandos

### 7. NoSQL Injection
- ✅ Validação de objetos JSON maliciosos
- ✅ Bloqueio de operadores MongoDB maliciosos

### 8. XXE
- ✅ Rejeição de conteúdo XML não esperado
- ✅ Prevenção de external entity attacks

## 🛠️ Personalização

O script pode ser personalizado editando `teste_seguranca.py`:

- Adicionar novos payloads de teste
- Modificar limites de requisições
- Ajustar timeouts e delays
- Adicionar novos tipos de testes

## ⚠️ Avisos Importantes

1. **Use apenas em ambientes de teste/desenvolvimento**
   - Nunca execute este script em produção sem autorização

2. **Este script simula ataques reais**
   - Pode gerar logs de segurança no sistema
   - Pode bloquear temporariamente seu IP
   - Use com responsabilidade

3. **Alguns testes podem ser bloqueados pelo firewall**
   - Isso é normal e esperado
   - Indica que o sistema está protegido

4. **Execute com o sistema SGSE rodando**
   - Certifique-se de que o SITE e backend estão ativos
   - URLs padrão: http://localhost:5173 (SITE) e http://127.0.0.1:3210 (backend)

## 📝 Exemplo de Saída

```
╔══════════════════════════════════════════════════════════════════════╗
║                        TESTES DE SEGURANÇA - SGSE                    ║
╚══════════════════════════════════════════════════════════════════════╝

[INICIO] URL Base: http://localhost:5173
[INICIO] URL Convex: http://127.0.0.1:3210

──────────────────────────────────────────────────────────────────────
[BRUTE_FORCE] Iniciando teste de força bruta (10 tentativas)...
[BRUTE_FORCE] ✅ DETECTADO! Bloqueio após 5 tentativas (429)

──────────────────────────────────────────────────────────────────────
[SQL_INJECTION] Iniciando testes de SQL Injection...
[SQL_INJECTION] ✅ DETECTADO! Payload: ' OR '1'='1...

──────────────────────────────────────────────────────────────────────
[DDOS] Iniciando teste DDoS (50 threads, 10s)...
[DDOS] ✅ DETECTADO! 45/50 requisições bloqueadas (90.0%)

══════════════════════════════════════════════════════════════════════
RELATÓRIO DE TESTES DE SEGURANÇA - SGSE
══════════════════════════════════════════════════════════════════════

[BRUTE FORCE]
  Status: ✅ DETECTADO
  Sucessos: 0
  Falhas: 0

[SQL INJECTION]
  Status: ✅ DETECTADO
  Sucessos: 0
  Falhas: 0

...

══════════════════════════════════════════════════════════════════════
Total de Testes: 8
Ataques Detectados: 7/8
══════════════════════════════════════════════════════════════════════
```

## 🤝 Contribuindo

Para adicionar novos testes de segurança:

1. Adicione um novo método na classe `SegurancaTeste`
2. Adicione o teste ao dicionário `resultados` em `__init__`
3. Adicione o teste à lista `testes` em `executar_todos_testes`
4. Atualize este README com a descrição do novo teste

## 📄 Licença

Este script é parte do projeto SGSE e deve ser usado apenas para fins de teste e validação de segurança.
