Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ThreatIntel-Aggregator — Plataforma de threat intelligence auto-hospedada — agregação de feeds, triagem por IA, cobertura MITRE ATT&CK e engenharia de deteção integrada com o Sentinel. Funciona de forma autónoma ou totalmente integrada no Azure. | Kitploit
Ferramentas/GitHubGitHub/ethan-andrews/threatintel-aggregator
Ferramentas DefensivasGerenciamento de Indicadores de Comprometimento (IOC)Feeds e Agregadores de AmeaçasAnálise de VulnerabilidadesColeta de InformaçõesVirtualização para SegurançaInteligência de AmeaçasResposta a Incidentes

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Segurança de IA
Análise de Logs
GitHubethan-andrews/threatintel-aggregator

ThreatIntel-Aggregator

Plataforma de threat intelligence auto-hospedada — agregação de feeds, triagem por IA, cobertura MITRE ATT&CK e engenharia de deteção integrada com o Sentinel. Funciona de forma autónoma ou totalmente integrada no Azure.

Ver Repositório
149há 1 diaAinda não revisado
Compartilhar

Threat Intel Aggregator

Banner

Typing SVG

License Backend Tests Frontend Build Buy Me a Coffee

Uma plataforma de threat intelligence auto-hospedada que agrega feeds RSS de mais de 60 fornecedores de segurança, executa triagem por IA, correlaciona descobertas com seu inventário de ativos RunZero e exibe alertas acionáveis por meio de um painel web em modo escuro.

Criada para rodar de forma autônoma com zero dependência de nuvem, ou totalmente integrada a um ambiente Azure/Entra/Sentinel — escolha o nível que corresponde ao que você tem.


Níveis de implantação

NívelScriptTriagem por IAAutenticaçãoArmazenamentoO que você obtém
Basicscripts/setup-basic.shDesligadaChave de API localPostgres local (Docker)Agregação de feeds, extração de IOC, matriz MITRE, painéis — sem IA, sem nuvem, nada para se cadastrar
Basic + APIscripts/setup-basic-api.shAnthropic (direto)Chave de API localPostgres local (Docker)Tudo acima, mais triagem de severidade/TTP/resumo por IA
Azure + APIscripts/setup-azure.ps1Azure AI FoundrySSO do Microsoft Entra IDSeu próprio Postgres (Azure DB for PostgreSQL, etc.)Implantação completa no Azure Container Apps, SSO com funções por usuário. (A integração do pipeline detections.ai chegará em uma versão futura — veja abaixo.)

Os três executam exatamente o mesmo código da aplicação — a única coisa que muda é quais variáveis de ambiente estão definidas. Consulte Variáveis de Ambiente para a referência completa.```bash

Basic — no AI, no cloud

./scripts/setup-basic.sh

Basic + API — adds direct Anthropic triage

./scripts/setup-basic-api.sh

Azure + API — full SIEM-integrated deployment (PowerShell 7+, az CLI)

./scripts/setup-azure.ps1

root@kitploit:~
Os dois scripts bash criam um contentor Postgres local, aplicam o esquema e geram `backend/.env` / `frontend/.env.local` por ti — depois imprimem os dois comandos para realmente iniciar a aplicação (`pip install` + executar backend, `npm install` + executar servidor de desenvolvimento frontend). `setup-azure.ps1` é um wrapper fino em torno de `infra/provision.ps1`, o verdadeiro runbook de implementação do Azure Container Apps.

---

## Funcionalidades

- **Agregação de feeds** — consulta mais de 60 feeds RSS de segurança Tier 1/2/3 numa agenda; deduplica e filtra conteúdo promocional automaticamente
- **Triagem por IA** — classifica cada entrada com severidade (Critical/High/Medium/Low/Informational), TTPs MITRE ATT&CK e um resumo em linguagem simples. Modular por fornecedor: API Anthropic direta ou Azure AI Foundry, alternável através de uma variável de ambiente sem perda de funcionalidade em qualquer dos casos
- **Extração de IOC** — extrai automaticamente IPs, domínios, URLs, hashes de ficheiros e CVEs de cada entrada
- **Integração RunZero** — sincroniza o teu inventário de ativos e correlaciona threat intel com ativos em tempo real; corresponde por CVEs, nomes de software, versões de SO e endereços IP. Três sub-separadores sob `RUNZERO`: **Matches** (entradas correlacionadas com o teu inventário, filtráveis por severidade/data/confiança/KEV), **Exposure** (posição confirmada/possível ao nível da organização com acompanhamento de remediação) e **Metrics** (tendências de ingestão vs. remediação ao longo do tempo)
- **Your Stack** — define o software/SO no teu ambiente; reclassifica todas as entradas por relevância
- **Livro de registo de IOC** — registo pesquisável de todos os indicadores extraídos com referências cruzadas de entradas e exportação STIX/CSV
- **Matriz MITRE ATT&CK** — mapa de calor da cobertura de TTPs em toda a threat intel ingerida
- **Dashboard de saúde dos feeds** — estado de consulta por feed, acompanhamento de falhas consecutivas e volume de artigos em 7 dias
- **Detections** — uma superfície de revisão com 9 separadores (ver abaixo) que cobre tudo o que está registado como deteção, seja gerado por IA, importado dos teus próprios ficheiros ou sincronizado de um workspace Sentinel em tempo real
- **Autenticação modular** — Microsoft Entra ID SSO com acesso baseado em funções, ou uma única chave de API local partilhada com zero dependência do Azure. Detetada automaticamente pelo frontend; ver [Auth modes](#auth-modes)

### Duas funcionalidades relacionadas com deteções

Este repositório na verdade disponibiliza duas coisas relacionadas mas utilizáveis de forma independente sob o guarda-chuva "detections":

1. **O separador `DETECTIONS`** — uma superfície de revisão autónoma, dividida em nove sub-separadores:
   - **All Detections** — o catálogo completo de analíticas registadas, filtrável por técnica/disposição/estado de revisão, cada uma expansível para a sua descrição e KQL completo.
   - **Defender Custom Detections** — o mesmo catálogo, limitado a deteções destinadas às regras de deteção personalizadas do Microsoft Defender for Endpoint em vez de regras analíticas do Sentinel.
   - **Alignment Reviews** — sempre que uma analítica de deteção é registada contra uma técnica MITRE, uma verificação por IA compara a sua cobertura real com a própria descrição da técnica pelo MITRE. Quando diverge ou cobre apenas parcialmente a técnica, aparece aqui como um item de revisão humana com o raciocínio da IA, uma correção KQL sugerida e o próprio resultado de validação dessa correção (gate estático + backtest) — nunca uma sugestão cega.
   - **Disposition Alerts** — uma fila de deteção de apodrecimento: uma analítica aprovada cuja telemetria decai ou cuja regra subjacente começa a dar erro é sinalizada aqui para re-revisão, nomeada pela sua própria deteção em vez de apenas pela técnica MITRE partilhada.
   - **Generated Hunts** — as deteções são agrupadas em hunts (uma por ficheiro importado atualmente; uma por artigo de TI/projeto detections.ai de origem assim que essa integração for lançada), correspondendo à própria funcionalidade Hunts do Microsoft Sentinel. Um hunt pode ser sincronizado para um workspace Sentinel real como um objeto `Microsoft.SecurityInsights/hunts` mais as suas consultas de pesquisa guardadas constituintes (controlado por `SENTINEL_HUNTING_SYNC_ENABLED` e um `mode` — off/manual/auto — configurável por equipa em Settings > API Settings; nunca um envio automático silencioso a menos que optes por isso).
   - **Sentinel Hunts** — o inventário em tempo real do que está realmente implementado na funcionalidade Hunting do teu workspace Sentinel, obtido diretamente do ARM em vez do próprio histórico de sincronização desta aplicação; inclui sugestões de teste/ajuste por consulta que podes aplicar ou dispensar no local.
   - **Sentinel Analytics Rules** — a mesma ideia para as Analytics Rules do Microsoft Sentinel (`Microsoft.SecurityInsights/alertRules`) — um tipo de recurso Sentinel distinto do Hunting, uma vez que são estas que realmente disparam incidentes/alertas numa agenda — com o mesmo fluxo de trabalho de aplicar/dispensar sugestões de ajuste.
   - **Local Detections** — ver [Running without Sentinel or an AI provider](#running-without-sentinel-or-an-ai-provider-local-detections-import) abaixo.
   - **Audit Log** (apenas admin) — um registo transversal de pipeline de cada verificação que esta aplicação realmente executou: resultados de gate/control-probe de deteções geradas por IA, tentativas de sincronização de hunt do Sentinel e execuções de teste de consultas de hunt/regras analíticas do Sentinel, combinados numa única lista paginada e filtrável — cobrindo deliberadamente o que nenhum separador de revisão individual faz por si só.

   É executado inteiramente dentro do backend principal, sem necessidade de implementação extra para a própria superfície de revisão. O seu próprio design de API segue deliberadamente as convenções do detections.ai abaixo, mesmo sendo totalmente autónomo.
2. **Orquestrador de pipeline detections.ai — brevemente.** O detections.ai tem uma API pública em desenvolvimento para geração de deteções assistida por IA, e este repositório tem uma integração real construída para ela (`backend/detection_pipeline/orchestrator.py`) que recebe threat intel triada, verifica-a contra a cobertura de deteção existente e gera KQL preliminar para o teu workspace Sentinel como uma tarefa agendada. Esta integração suportará essa API assim que estiver disponível, e ainda não faz parte deste lançamento público. Entretanto, **não precisas dela para usar o separador Detections de todo** — [Local Detections Import](#running-without-sentinel-or-an-ai-provider-local-detections-import) abaixo cobre o mesmo objetivo de "colocar deteções reais nesta aplicação" para configurações sem geração por IA e sem Sentinel hoje.

### Executar sem Sentinel ou um fornecedor de IA: Local Detections Import

Dado o nome da aplicação e o seu argumento principal, a pergunta mais comum de um self-hoster no nível **Basic** provavelmente será *"Não tenho Sentinel nem um fornecedor de IA configurado — ainda consigo tirar algo dos separadores Detections/Hunts?"* A resposta é sim: aponta a aplicação para uma pasta dos teus próprios ficheiros de regras de deteção (escritos à mão, exportados de um tenant Sentinel/Defender real, ou obtidos de um repositório público de regras Sigma/Sentinel) e ela irá catalogá-los, etiquetá-los com MITRE e validá-los estaticamente — sem necessidade de conexão Sentinel e sem necessidade de `DETECTIONS_AI_API_KEY`/chave Anthropic para nada disso.

- **Formatos suportados, desde o primeiro dia:** ficheiros brutos `.kql`/`.txt`/`.yar`/`.spl`-ou-qualquer-extensão, cada um opcionalmente emparelhado com um sidecar `.json`/`.yaml` (`{"file": "myrule.kql", "title": "...", "description": "...", "technique_id": "T1059.001"}`) para metadados que a própria exportação da Microsoft não precisa de declarar separadamente; YARA; Suricata; Sigma YAML (documento único ou múltiplo); Splunk SPL; e o próprio JSON nativo exportado de Analytics Rule/Hunting Query da Microsoft (apenas regras do tipo `Scheduled` transportam uma consulta KQL bruta que esta aplicação consegue avaliar — todos os outros tipos são reconhecidos e reportados, não ignorados silenciosamente).
- **O que realmente é executado num ficheiro importado:** validação estática (o mesmo motor de durabilidade/findings que o caminho de geração por IA usa) para conteúdo KQL; uma verificação de alinhamento MITRE também, se *tiveres* um fornecedor de IA configurado (um eixo independente do Sentinel — podes ter um, ambos, ou nenhum); tudo o que depende do Sentinel (backtesting, sondas de telemetria, acompanhamento de disposição) fica fora do âmbito e é apresentado como "no Sentinel connection configured" em vez de uma célula em branco enganadora.
- **Onde aparece:** o conteúdo importado torna-se uma linha normal de hunt/deteção — mesmas tabelas, mesmo fluxo de trabalho de revisão, mesma exibição de técnica MITRE que qualquer coisa que o pipeline de IA gere — por isso também aparece nas vistas regulares `ALL DETECTIONS`/`GENERATED HUNTS`, não apenas no seu próprio separador. O sub-separador dedicado **Local Detections** (sob `DETECTIONS`, apenas admin para acionar uma importação) é onde apontas para uma pasta e acompanhas o progresso/resultados por ficheiro.
- **Configuração:** define `LOCAL_IMPORT_DIR` para um caminho absoluto no sistema de ficheiros do backend (um volume montado, numa implementação em contentor) — tudo o que for importado tem de residir sob essa raiz; a UI permite-te escolher um sub-caminho por baixo dela, nunca uma localização arbitrária do sistema de ficheiros. Ver [Environment Variables](#environment-variables).
- **Experimenta imediatamente:** `examples/local-detections-samples/` disponibiliza uma pequena pasta pronta a importar — duas regras KQL válidas (uma emparelhada com um sidecar `.json` para mostrar esse mecanismo), uma regra deliberadamente inválida (para ver o banner de sinalização como inválida) e um ficheiro não reconhecido (para ver o banner de importação falhada). Aponta `LOCAL_IMPORT_DIR` para ela para ver os três estados de resultado na tua primeira importação, sem necessidade de escrever regras.

**Local Detections** — uma execução de importação concluída: o banner de resumo destaca ficheiros que foram catalogados mas sinalizados como inválidos pela análise estática (aqui, uma regra que alerta sobre um único hash codificado) ao lado dos que foram importados sem problemas, e cada ficheiro torna-se uma linha normal de hunt/deteção abaixo

![Local Detections](https://assets.kitploit.com/production/public/readmes/55296/caf1d88594b2bef58bc52b99a779da6d51aeb2b032ae1808fb114c1b8d6aca07/8985c51d3404ac6592121c1d2217d5faa6551c97d65600b3a9b050d5cd4767ce-display-v1.webp)

---

## Capturas de ecrã

Todas as capturas de ecrã abaixo usam dados sintéticos (nomes de organizações falsos, IPs de exemplo RFC 5737, domínios `.example`) gerados para documentação — nenhuma threat intel real ou dados de clientes.

**Feed** — navega e filtra entradas de threat intel triadas com severidade, tags, IOCs e TTPs

![Feed](https://assets.kitploit.com/production/public/readmes/55296/e75cea290ced1c3b96346bf04578c6964569b5c70ac4982b91a9f2fea761c4e9/75ad877a8fafd97692b94e9f033f28191973ff10ec6d94626633f13cad189cc1-display-v1.webp)

<br>

**Dashboard** — desagregação de severidade num relance e principais técnicas MITRE ATT&CK

![Dashboard](https://assets.kitploit.com/production/public/readmes/55296/eb48a8bbda9454d3f9e134228080ca250d581375f16e4828da282592278c7118/58f1568d9f9896867c01334e00cc8ef3dfb55f2e31a637a349ff2c5f0718b4c2-display-v1.webp)

<br>

**MITRE ATT&CK** — mapa de calor da matriz completa da cobertura de técnicas em toda a intel ingerida

![MITRE ATT&CK](https://assets.kitploit.com/production/public/readmes/55296/9df0d60a5197e785dd85356a6beba126ef16bd91518f2d84108b987afaaf9b06/cac6e7cbe4f1b993265c84719288aa8789814fe1aff97821b5f0f27baaf65e3d-display-v1.webp)

<br>

**Your Stack** — define o teu ambiente; as entradas do feed são reclassificadas por relevância

![Your Stack](https://assets.kitploit.com/production/public/readmes/55296/40839d08db86d678c276bb6d52ec403f807a6593f58b341db27e3e7d8701f652/b7ebedd6e968a264cdf73259aa8d8fef404795023efd998f5a9b0255556f77c2-display-v1.webp)

<br>

**IOCs** — registo pesquisável de todos os indicadores extraídos com exportação STIX/CSV

![IOCs](https://assets.kitploit.com/production/public/readmes/55296/87ac0ff28d571697f6f3ab0ca6905ab5e137bb190cc0bca1fc064db88904614b/e7f960a68d10c87a9467eb42e438cdd81026c5eb5daa9667f9185dc7b395ebe6-display-v1.webp)

<br>

**Integrations** — visão geral dos conectores para Sentinel, Defender e RunZero: estado configurado/ativado e atalhos para o separador próprio de cada um

![Integrations](https://assets.kitploit.com/production/public/readmes/55296/b261064e5162d7dd615fab4d8eb332735cc412ae6ada1e095c2bca0f0afcf989/d92aa2477825a8eeb126bb5fa3396f3292fe8af23a7806538d9f74eb561efac2-display-v1.webp)

<br>

**RunZero** — correlação de ativos, acompanhamento de exposição ao nível da organização e métricas de remediação, tudo proveniente do teu inventário RunZero

![RunZero](https://assets.kitploit.com/production/public/readmes/55296/1c14c9bf6fa927012db3fef13c5fbe9187aaf3a9e914358b7408a872f61dc6d0/be053e10181d5b79a14a9aff7b249c3450cf787f0379d84651bb060bf9c2b8b6-display-v1.webp)

<br>

**Exposure** — organizações classificadas por contagem de correspondências de ameaças; clica em qualquer cartão para ver as entradas correspondentes

![Exposure](https://assets.kitploit.com/production/public/readmes/55296/f80096a602e70e3b462c5d98ac4f04b0ebdc6c47c1efb055bd56f552d55823e4/0bfec2320b8e1f189bfd645a816444587f7fd056377e85ff2c1d34df12b1ab44-display-v1.webp)

<br>

**Detections** — o catálogo completo de analíticas registadas (geradas por IA e importadas localmente), cada uma com o seu estado de gate estático/backtest/revisão e técnica MITRE

![Detections](https://assets.kitploit.com/production/public/readmes/55296/bbf5ddc849c368101e54def614a377ba8bcca705cecf65949dc7b93f1a9dea1f/75df6746fea32f7dac1a0f52b099142c3d48fcdd1dbfcea87b9d20306d178ccd-display-v1.webp)

<br>

**Settings** — controlos de triagem por IA, monitorização de saúde dos feeds, pontuações de confiança das fontes e gestão de utilizadores

![Settings](https://assets.kitploit.com/production/public/readmes/55296/af5be9150416723dd8d0bd311029cc530869c52d514c67f4974a9bbf3d699f99/5964908fc2ae52d0f88149bb6d040898addf7fe99ef154eb7598e1adc3fefda5-display-v1.webp)

---

## Arquitetura```
┌─────────────────────────────────────────┐
│  Next.js 16 frontend (port 3000)        │
│  Tailwind CSS · dark theme              │
└──────────────┬──────────────────────────┘
               │ REST API (Bearer token)
┌──────────────▼──────────────────────────┐
│  FastAPI backend (port 8000)            │
│  APScheduler · slowapi rate limiting    │
└──┬──────────┬──────────┬────────────┬───┘
   │          │          │            │
Postgres   AI provider  RunZero API  detections.ai
           (modular:    (asset sync)  (coming soon --
           Anthropic or                see Features below)
           Azure AI Foundry)

Backend (backend/) — Python 3.12 + FastAPI. Postgres para todo o armazenamento (SQLite e Azure Blob Storage foram totalmente descontinuados). O provedor de IA e o método de autenticação são ambos selecionados por variáveis de ambiente, não codificados — veja abaixo.

Frontend (frontend/) — Next.js 16, JavaScript puro, Tailwind CSS. Detecta automaticamente o modo de autenticação a partir do backend no momento do carregamento.

Infra (infra/) — Templates Azure Bicep para Container Apps, Key Vault e Container Registry (apps.bicep + platform.bicep + app-stack.bicep, implantados via provision.ps1). Relevante apenas para o nível Azure + API.


Modos de autenticação

AZURE_AD_TENANT_ID definido → Modo Entra: SSO do Microsoft Entra ID, funções por usuário (o primeiro login torna-se admin, todos os outros assumem o padrão de visualizador).

AZURE_AD_TENANT_ID não definido → Modo Local: uma única LOCAL_API_KEY compartilhada concede acesso de admin a quem a possuir. Sem gerenciamento de usuários, sem dependência do Azure. O frontend chama GET /api/auth/mode no carregamento e renderiza a tela de login correspondente automaticamente — nada a configurar no lado do frontend.

Ambos os modos emitem o mesmo tipo de JWT assinado pela aplicação posteriormente, portanto todas as outras rotas (require_auth/require_admin) funcionam de forma idêntica independentemente do modo que emitiu o token.


Desenvolvimento Local

Pré-requisitos

  • Python 3.12+
  • Node.js 20+
  • Docker (para Postgres local — veja os scripts de configuração)

Caminho mais rápido

Execute scripts/setup-basic.sh ou scripts/setup-basic-api.sh (veja Níveis de implantação) — eles cuidam do Postgres e da geração do .env para você. Depois:```bash cd backend && pip install -r requirements.txt && uvicorn main:app --reload --port 8000 cd frontend && npm install && npm run dev

root@kitploit:~
### Configuração manual```bash
cd backend
python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp env.example .env              # fill in required values — see Environment Variables below
uvicorn main:app --reload --port 8000

Instalação

Instalação rápida

root@kitploit:~
# Clone o repositório
git clone https://github.com/yourusername/kitploit.git
cd kitploit

# Instale as dependências
pip install -r requirements.txt

# Execute a ferramenta
python kitploit.py --help

Instalação via Docker

root@kitploit:~
# Compile a imagem Docker
docker build -t kitploit .

# Execute o contêiner
docker run -it --rm kitploit --help

Instalação via pip

root@kitploit:~
pip install kitploit

Uso

Uso básico

root@kitploit:~
# Exibir ajuda
kitploit --help

# Executar uma verificação básica
kitploit scan --target example.com

# Executar com opções avançadas
kitploit scan --target example.com --verbose --output results.json

Opções de linha de comando

OpçãoDescrição
--helpExibir mensagem de ajuda
--versionExibir informações da versão
--targetEspecificar o alvo
--verboseAtivar saída detalhada
--outputEspecificar o arquivo de saída

Exemplos

root@kitploit:~
# Verificar um único alvo
kitploit scan --target 192.168.1.1

# Verificar vários alvos
kitploit scan --target 192.168.1.1,192.168.1.2

# Verificar a partir de um arquivo
kitploit scan --input targets.txt

# Exportar resultados
kitploit scan --target example.com --output results.json

Configuração

A ferramenta pode ser configurada através de um arquivo de configuração ou variáveis de ambiente.

Arquivo de configuração

root@kitploit:~
# config.yaml
target: example.com
verbose: true
output: results.json
threads: 10
timeout: 30

Variáveis de ambiente

root@kitploit:~
export KITPLOIT_TARGET=example.com
export KITPLOIT_VERBOSE=true
export KITPLOIT_OUTPUT=results.json

Solução de problemas

Problemas comuns

Problema: A ferramenta não inicia.

Solução: Certifique-se de que todas as dependências estão instaladas:

root@kitploit:~
pip install -r requirements.txt

Problema: Erros de permissão.

Solução: Execute com privilégios elevados ou ajuste as permissões de arquivo:

root@kitploit:~
sudo python kitploit.py scan --target example.com

Problema: A verificação é muito lenta.

Solução: Aumente o número de threads:

root@kitploit:~
kitploit scan --target example.com --threads 20

Obtendo ajuda

Se você encontrar problemas:

  1. Verifique a seção de Problemas
  2. Pesquise problemas existentes
  3. Crie um novo problema com informações detalhadas```bash cd frontend npm install cp env.local.example .env.local # set NEXT_PUBLIC_API_URL=http://localhost:8000 npm run dev
root@kitploit:~
### Docker Compose (ambos os serviços)```bash
cp backend/env.example backend/.env   # fill in required values
docker compose up --build

Frontend → http://localhost:3000 Backend API docs → http://localhost:8000/docs


Variáveis de Ambiente

Copie backend/env.example para backend/.env e preencha. Agrupadas por qual camada precisa delas:

Sempre obrigatórias:

VariávelDescrição
PG_DSNString de conexão do Postgres
JWT_SECRET_KEYSegredo para assinar tokens de sessão da aplicação (python -c "import secrets; print(secrets.token_hex(32))")

Autenticação — escolha um modo:

VariávelDescrição
LOCAL_API_KEYModo local: chave compartilhada que concede acesso de administrador. Deixe AZURE_AD_TENANT_ID não definida para ativar este modo
AZURE_AD_TENANT_IDModo Entra: ID do tenant para SSO. Defini-la ativa o modo Entra
AZURE_AD_CLIENT_IDModo Entra: client ID do registro do aplicativo
AZURE_AD_CLIENT_SECRETModo Entra: segredo do registro do aplicativo (somente frontend)
NEXTAUTH_SECRETModo Entra: segredo de criptografia de sessão do NextAuth (somente frontend)

Triagem por IA — opcional, escolha um provedor (omita ambos para executar com a triagem desabilitada):

VariávelDescrição
AI_PROVIDERanthropic (padrão) ou azure
ANTHROPIC_API_KEYChave da API Anthropic direta
AZURE_FOUNDRY_ENDPOINTEndpoint do Azure AI Foundry, ex.: https://<resource>.services.ai.azure.com/anthropic
AZURE_FOUNDRY_API_KEYChave da API do Azure AI Foundry
AZURE_FOUNDRY_DEPLOYMENTNome da implantação do Foundry (padrão claude-haiku-4-5)
AZURE_FOUNDRY_API_VERSIONVersão da API do Foundry (padrão 2025-05-01)

Opcionais:

VariávelDescrição
RUNZERO_API_TOKENHabilita a sincronização e correlação de ativos do RunZero
ALLOWED_ORIGINSLista de permissões CORS separada por vírgulas (padrão http://localhost:3000)
ENABLE_SCHEDULERDefina como false para desabilitar o poller de feeds em segundo plano (padrão true)
ARCHIVE_AFTER_DAYSLimite de arquivamento automático em dias (padrão 90)
PG_POOL_MIN / PG_POOL_MAX / PG_POOL_TIMEOUTAjuste do pool de conexões do Postgres (padrões 1 / 10 / 30)
LOCAL_IMPORT_DIRHabilita a Importação de Detecções Locais — caminho absoluto no sistema de arquivos do backend ao qual toda importação é confinada. Não definida desabilita o recurso completamente (sua aba exibe uma mensagem de "não configurado")

Frontend (frontend/.env.local ou frontend/env.local.example):

VariávelDescrição
NEXT_PUBLIC_API_URLURL do backend conforme vista pelo navegador. Incorporada ao bundle JS em tempo de build. Deixe não definida para rotear chamadas de API através do proxy de mesma origem integrado (frontend/pages/api/[...proxy].js) — necessário sempre que o backend não tiver ingresso público (ex.: o Container App somente interno da camada Azure + API)
BACKEND_URLURL do backend conforme vista pelo próprio servidor Next.js. Usada pela troca de login do NextAuth e, quando NEXT_PUBLIC_API_URL não está definida, pelo proxy de mesma origem que encaminha toda requisição de navegador /api/* no lado do servidor

Orquestrador detections.ai — em breve (ainda não faz parte desta versão pública; documentado aqui para quando for lançado. Camada Azure + API, implantável separadamente — veja backend/detection_pipeline/orchestrator.py):

VariávelDescrição
DETECTIONS_AI_API_KEYObrigatória para executar o orquestrador
SENTINEL_WORKSPACE_IDID de cliente (GUID) do workspace do Log Analytics, para backtesting. Opcional
PIPELINE_BATCH_SIZEEntradas por execução (padrão 5)
PIPELINE_DRY_RUNtrue para reivindicar e registrar sem chamar a API
PIPELINE_LANGUAGELinguagem de consulta de detecção (padrão kql)

Sincronização do Sentinel Hunts (opcional, desativada por padrão — veja Configurações > Configurações de API para o modo ligado/desligado/manual/automático):

VariávelDescrição
SENTINEL_HUNTING_SYNC_ENABLEDtrue para permitir qualquer tentativa de sincronização de hunt. Não definida/false é um no-op puro — zero chamadas ARM
AZURE_SUBSCRIPTION_IDAssinatura que contém o workspace do Sentinel
AZURE_RESOURCE_GROUPGrupo de recursos que contém o workspace do Sentinel
SENTINEL_WORKSPACE_NAMEO nome do workspace, não seu ID de cliente — um valor diferente de SENTINEL_WORKSPACE_ID acima, que o cliente de plano de dados de backtesting usa em vez disso

Implantação no Azure

O IaC real e atual é infra/apps.bicep + infra/platform.bicep + infra/app-stack.bicep, implantado via infra/provision.ps1 (ou o wrapper fino scripts/setup-azure.ps1). Ele provisiona Container Apps, segredos respaldados pelo Key Vault e identidades gerenciadas — o Postgres em si não é provisionado por este repositório; aponte PG_DSN (armazenada como o segredo pg-dsn do Key Vault) para qualquer servidor Postgres acessível.```powershell ./scripts/setup-azure.ps1

or directly:

cd infra cp migration.psd1.example migration.psd1 # fill in your resource group, apps, etc. ./provision.ps1

root@kitploit:~
`provision.ps1` é idempotente — seguro para reexecutar após editar o manifesto. Consulte o comentário de cabeçalho do próprio ficheiro para obter o passo a passo completo (plataforma → pilha de aplicações → segredos → Easy Auth → importação de imagens → aplicações → verificações posteriores).

O orquestrador detections.ai (um Container Apps Job agendado, controlado por um bloco `Orchestrator` em `migration.psd1` — consulte `migration.psd1.example` para ver a estrutura, e guarde a sua chave como o segredo `DETECTIONSAIAPIKEY` no Key Vault) ainda não faz parte desta versão pública — consulte [Duas funcionalidades relacionadas com detecções](#two-detections-related-features) acima.

---

## Estrutura do Projeto```
├── backend/
│   ├── main.py                  # FastAPI app, all endpoints
│   ├── db.py                    # Postgres queries
│   ├── pgcompat.py              # connection pool + SQLite-style placeholder translation
│   ├── feed_manager.py          # RSS polling, AI triage (provider-modular), scheduler
│   ├── enrichment.py            # IOC extraction, KEV cache, stack rematch
│   ├── runzero_sync.py          # RunZero asset sync and correlation engine
│   ├── dedup.py                 # CVE deduplication logic
│   ├── auth.py                  # Entra ID SSO + local API-key auth, app JWT sign/verify
│   ├── ioc_export.py            # STIX 2.1 and CSV export
│   ├── stack_presets.py         # Pre-built tech stack templates
│   ├── detection_pipeline/      # detections.ai orchestrator, MITRE alignment-check,
│   │                            # Sentinel hunts/analytics-rules sync + tuning,
│   │                            # audit log, local_import.py (Local Detections Import)
│   └── tests/                   # pytest test suite, incl. fixtures/local_import/
├── frontend/
│   ├── pages/
│   │   ├── index.js              # Main app shell + tab routing
│   │   └── login.js              # Entra ID or local API-key login, auto-detected
│   ├── lib/
│   │   ├── authMode.js           # GET /api/auth/mode, cached per page load
│   │   ├── authFetch.js          # Bearer auth + 401-retry wrapper
│   │   └── authSession.js        # token storage, JWT decode/expiry helpers
│   └── components/
│       ├── layout/                # TopBar, Sidebar, TabBar, TopFilterBar, TimeRangeToggle
│       ├── feed/                  # FeedList, FeedCard
│       ├── integrations/          # IntegrationsPanel, ExposurePanel, RunZeroPanel,
│       │                          # RunZeroMatchesPanel, RunZeroMetricsPanel
│       ├── detections/            # DetectionsPanel (tab shell) + one component per
│       │                          # sub-tab: DetectionsCatalogPanel, AlignmentReviewPanel,
│       │                          # DispositionAlertsPanel, HuntsPanel, SentinelHuntsPanel,
│       │                          # SentinelAnalyticsRulesPanel, LocalDetectionsPanel,
│       │                          # AuditPanel, plus shared TuningSuggestionBadge
│       ├── settings/              # SettingsPanel, CadencePicker, SeverityCards
│       └── mitre/                 # MitreMatrix
├── infra/                       # Azure Bicep templates + provision.ps1
├── scripts/                     # Tiered setup scripts (see Deployment tiers)
└── docker-compose.yml

Fontes de Feed

63 feeds em três níveis:

  • Nível 1 — CISA, Cisco Talos, Fortinet Threat Signal, ESET WeLiveSecurity, Microsoft Security Blog, SentinelOne Labs, Google Project Zero, Zero Day Initiative, Check Point Research, Talos Intelligence Blog, The DFIR Report, Oracle
  • Nível 2 — Recorded Future, Malpedia, SANS ISC, Securelist, Unit42, Proofpoint TI, Malwarebytes TI, Wiz Blog, Datadog Security Labs, ReversingLabs, Sekoia, Cyble, ANY.RUN Blog, e mais
  • Nível 3 — BleepingComputer, Krebs on Security, Schneier on Security, The Hacker News, Dark Reading, CrowdStrike Blog, Snyk, Semgrep, e mais

Segurança

  • Todos os endpoints da API exigem Authorization: Bearer <token>
  • Comparação de token resistente a timing attacks (secrets.compare_digest) para a chave de autenticação local
  • SQL parametrizado em todo o código — sem interpolação de strings nas consultas
  • CORS restrito a uma lista explícita de origens permitidas
  • Entradas do LLM sanitizadas antes das chamadas ao provedor de IA; saídas validadas antes do armazenamento
  • Contêineres executados como não-root com todas as capacidades do Linux removidas
  • Nenhum segredo embutido nas imagens — carregados em tempo de execução a partir de .env / Azure Key Vault

Licença

MIT — consulte LICENSE.

Baixar ferramenta