
attackgen v0.15.0
AttackGen é uma ferramenta de teste de resposta a incidentes de cibersegurança que aproveita o poder dos grandes modelos de linguagem e o abrangente framework MITRE ATT&CK. A ferramenta gera cenários de resposta a incidentes personalizados com base em grupos de agentes de ameaça selecionados pelo usuário e nos detalhes da sua organização.
AttackGen
AttackGen é uma ferramenta de teste de resposta a incidentes de cibersegurança que aproveita o poder dos grandes modelos de linguagem e os abrangentes frameworks MITRE ATT&CK e ATLAS. A ferramenta gera cenários de resposta a incidentes personalizados com base em grupos de atores de ameaça selecionados pelo utilizador, estudos de caso de ataques de IA e os detalhes da sua organização.
Índice
- Dê uma estrela ao Repositório
- Funcionalidades
- Lançamentos
- Requisitos
- Instalação
- Configuração do LangSmith
- Configuração de Dados
- Executar o AttackGen
- Servidor MCP
- Competências do Agente
- Utilização
- Boas Práticas de Segurança
- Contribuir
- Licença
Dê uma estrela ao Repositório
Se achar o AttackGen útil, considere dar uma estrela ao repositório no GitHub. Isto ajuda mais pessoas a descobrir a ferramenta. O seu apoio é muito apreciado! ⭐
Funcionalidades
- Gera cenários únicos de resposta a incidentes com base em grupos de atores de ameaça escolhidos ou estudos de caso ATLAS.
- Permite especificar a dimensão e o setor da sua organização para um cenário personalizado.
- Suporta os frameworks MITRE ATT&CK Enterprise, ICS (Sistemas de Controlo Industrial) e ATLAS (Panorama de Ameaças Adversariais para Sistemas de IA).
- Apresenta uma lista detalhada de técnicas utilizadas pelo grupo de atores de ameaça ou estudo de caso selecionado.
- Crie cenários personalizados com base numa seleção de técnicas ATT&CK ou ATLAS.
- Utilize modelos de cenário para gerar rapidamente cenários personalizados com base em tipos comuns de incidentes cibernéticos, incluindo padrões de ataque específicos de IA/ML.
- Gere Cenários de Ameaça Interna de IA — exercícios de resposta a incidentes em que um agente de IA de fronteira implantado dentro da sua organização se comporta como uma ameaça interna, com base no modelo de ameaça de Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents. Os cenários são moldados pelo arquétipo de implantação do agente (nível de autonomia), categoria de ameaça, ameaças STRIDE e uma semente de cenário opcional em texto livre.
- Assistente AttackGen — uma interface de chat para atualizar e/ou fazer perguntas sobre cenários gerados.
- Recolha de feedback do utilizador sobre a qualidade dos cenários gerados.
- Cenários descarregáveis em formato Markdown.
- Utilize a API OpenAI, API Anthropic (modelos Claude), API Google AI, API Mistral, API Groq ou qualquer endpoint personalizado compatível com OpenAI (Ollama, LM Studio, Azure OpenAI, OpenRouter, etc.) para gerar cenários de resposta a incidentes. Todos os fornecedores são encaminhados através do LiteLLM por trás de um único wrapper interno, pelo que adicionar um novo modelo é uma alteração de uma linha.
- Disponível como imagem de contentor Docker para fácil implementação.
- Integração opcional com LangSmith para depuração, teste e monitorização poderosos do desempenho do modelo.
- Gestão segura de credenciais usando ficheiro .env para chaves de API e segredos.

Lançamentos
v0.16
| O que há de novo? | Porque é útil? |
|---|---|
| Geração Primeiro-Cenário-Base | - Cenário Antes da Espera: A geração agora decorre em fases — o cenário base é apresentado primeiro com os botões Descarregar Cenário e Descarregar Camada ATT&CK Navigator já ativos, e a narrativa opcional de equipa roxa é transmitida depois. Se essa segunda passagem for lenta, ou não precisar dela, o cenário é utilizável de imediato em vez de ser retido até tudo terminar. - Entradas Congeladas ao Gerar: Cada execução funciona a partir de um instantâneo tirado no momento em que prime Gerar, pelo que alterar a barra lateral a meio da execução não pode reescrever parcialmente o cenário que está a ser produzido. - Progresso Honesto: Um rótulo de tempo decorrido e fases nomeadas — preparar entradas, gerar o cenário base, construir as exportações determinísticas, gerar a narrativa de equipa roxa — mostram onde uma execução longa realmente chegou. |
| Seletores Neutros, Sem Becos Sem Saída | - Apenas Opções Que Funcionam: Os seletores de grupo de ameaça e estudo de caso agora oferecem apenas as escolhas que realmente produzem um cenário, pelo que uma seleção já não pode levar a um beco sem saída. - Ordenação Natural: Os grupos são ordenados em ordem numérica natural, pelo que APT3 vem antes de APT28 e APT30 em vez de serem ordenados como texto e ficarem entre eles. |
| Barra Lateral de Configuração Partilhada em Todas as Páginas | - Configurar Uma Vez: Fornecedor, modelo, framework, setor e dimensão da empresa agora vivem numa única barra lateral de Configuração partilhada em cada página de cenário — Grupo de Ameaça, Personalizado e Ameaça Interna de IA — em vez de serem reintroduzidos em cada uma. - Sobrevive à Navegação: As seleções não secretas persistem ao mover-se entre páginas e são espelhadas no URL, enquanto as chaves de API são deliberadamente mantidas fora da string de consulta. |
| Manutenção de Plataforma e Segurança | - MCP no SDK 2.x: O servidor MCP foi movido para o SDK mcp 2.x.- Imagem Base Mais Recente: A imagem Docker agora é construída em python:3.14-slim.- Portões CI em Vez de Avisos: As análises de segurança agora falham a compilação em caso de descobertas em vez de apenas as reportarem — pip-audit e Bandit funcionam como portões, o Trivy já não conta incorretamente o SBOM fornecido pelo pip como pacotes instalados, e as CVEs acionáveis da imagem estão resolvidas. As GitHub Actions foram movidas do runtime Node 20 e o Dependabot agora monitoriza as próprias ações do fluxo de trabalho. |
Lançamentos anteriores (v0.15 e anteriores)
v0.15
| O que há de novo? | Porque é útil? |
|---|---|
| Predefinição de Fuga do Ambiente de Avaliação e Semente de Cenário | - Ensaie um Incidente Específico: Um novo modelo de ameaça interna de IA ensaia um agente de avaliação a alcançar sistemas reais a partir de um ambiente assumido como isolado — forçando contenção, rotação de credenciais, notificação a terceiros e preservação de provas. Cobre as divulgações de julho de 2026 de agentes de avaliação a escapar dos seus sandboxes, onde o limite de isolamento foi assumido em vez de aplicado. - Modelos Agora Chegam ao Prompt: Os modelos de início rápido anteriormente apenas pré-preenchiam os widgets da página e nunca influenciavam o cenário gerado. Agora transportam um brief narrativo e as required_decisions que as Perguntas de Discussão devem forçar, ambos integrados no prompt — pelo que um modelo produz um tabletop cronometrado utilizável em vez de um saco misto de perguntas. Isto divide-os em duas classes: os seis modelos originais de arquétipo definem apenas decisões, pelo que o modelo inventa a premissa e reexecutar um produz um exercício novo para o mesmo perfil de ameaça; os modelos de incidente também definem um brief, fixando a situação.- Semente de Cenário em Texto Livre: Uma caixa de semente opcional na página de Ameaça Interna de IA orienta a narrativa em qualquer cenário. Selecionar um modelo pré-preenche-a, e pode editá-la ou escrever a sua do zero. - Taxonomia Alargada para 27 Ameaças / 6 Categorias: Adiciona uma sexta categoria de ameaça (Contenção e Impacto em Terceiros) e quatro ameaças STRIDE em que o exercício se baseia — S5 repetição de credencial de carga de trabalho reutilizável, R4 supressão de telemetria do lado do agente, I5 comprometimento de terceiros e a jusante, e E5 falha de garantia do limite de contenção. O AttackGen agora estende o modelo de ameaça publicado em vez de o espelhar.- Modelos Utilizáveis via MCP: get_ai_insider_prompt e generate_ai_insider_scenario aceitam template= e scenario_seed=, e list_ai_insider_options devolve cada modelo com as seleções e o brief que aplica — pelo que um cliente pode escolher uma predefinição com base no mérito e chamar apenas com um modelo, setor e dimensão de empresa. Anteriormente, os nomes dos modelos eram listados mas nenhuma ferramenta os aceitava. |
| Competência attackgen-tabletop: Caminho de Ameaça Interna de IA | - Um Segundo Caminho de Exercício: A Competência de Agente agora constrói um tabletop a partir do modelo de ameaça interna de IA, bem como a partir de uma kill chain MITRE. Escolha um modelo de início rápido (ou um arquétipo de implantação e categorias de ameaça) e transforma o payload de get_ai_insider_prompt num MSEL.- Mesma Forma, Espinha Diferente: O exercício mantém as mesmas seis secções, mas a tabela de kill chain torna-se um perfil de agente e âmbito de ameaças STRIDE, o scorecard de deteção é avaliado contra a postura de deteção do arquétipo de implantação — pelo que as linhas que não disparariam se tornam a descoberta — e as decisões obrigatórias do modelo tornam-se perguntas de discussão obrigatórias. - Caminho Escolhido por Si: A descrição da competência agora dispara com frases sobre agentes desonestos, pelo que pedir um "tabletop de ameaça interna de IA" alcança o caminho certo. Um ator externo com táticas aceleradas por IA permanece no caminho MITRE. - Resposta, Não Exploração: Ambos os caminhos estão explicitamente limitados a ensaiar as decisões que uma equipa de resposta deve tomar — sem código de exploração, payloads ou vulnerabilidades reais não corrigidas — e o caminho de IA atribui o comportamento do agente a configuração, acesso e objetivo em vez de motivação humana. |
| Correção: Prompts MCP de Ameaça Interna de IA Omitiam as Capacidades do Agente | - Mesmo Modelo, Mesmo Prompt: O bloco de capacidades do agente de fronteira — as linhas fundamentadas em benchmarks que tornam um cenário de ameaça interna de IA credível — foi omitido de todas as chamadas get_ai_insider_prompt / generate_ai_insider_scenario que não nomeavam capabilities explicitamente. Nenhum modelo as fornece, pelo que o argumento caía para vazio e o prompt substituía uma linha genérica "assuma um agente de codificação de fronteira capaz", enquanto a página 3 enviava todas as quatro para o mesmo modelo.- Predefinições Agora Correspondem à Aplicação: Omitir capabilities aplica o conjunto completo, como faz a multisseleção da página. Passar [] ainda as deixa não especificadas, pelo que a exclusão deliberada permanece inalterada. |
| Correção: Geração de cenários Anthropic Claude 4.7+ | - Todos os Modelos Claude Funcionam Novamente: Claude 4.7 e posteriores rejeitam qualquer temperature de amostragem, devolvendo BadRequestError: 'temperature' is deprecated for this model. Quatro dos cinco modelos Anthropic listados — Fable 5, Opus 4.8, Sonnet 5 e Opus 4.7 — não conseguiam gerar um cenário em nenhuma página; apenas Haiku 4.5 funcionava.- Controlado por Modelo, Não por Fornecedor: A regra de temperatura era anteriormente encaminhada a partir do fornecedor, o que não consegue expressar um fornecedor cujos modelos discordam. ModelInfo.supports_temperature agora marca os modelos que a rejeitam, pelo que Haiku 4.5 mantém a sua temperatura configurada enquanto os seus irmãos a omitem. OpenAI permanece uma regra ao nível do fornecedor (todos os modelos de chat atuais são modelos de raciocínio), e modelos não registados — endpoints locais Ollama / LM Studio — ainda recebem uma temperatura. |
v0.14
| O que há de novo? | Porque é útil? |
|---|---|
| Servidor MCP para Clientes Agênticos | - Geração de Cenários como Ferramentas: Um novo servidor FastMCP (mcp_server.py, SDK mcp oficial) expõe o AttackGen a clientes agênticos via stdio, pelo que um assistente como Claude Code ou Claude Desktop pode obter dados MITRE e gerar cenários sem a interface Streamlit.- Dois Níveis: Ferramentas de dados ( list_threat_groups, list_case_studies, get_kill_chain, get_detection_report, get_navigator_layer, list_ai_insider_options, get_ai_insider_prompt) não fazem chamadas LLM e não precisam de chave de API — devolvem dados MITRE estruturados e, onde útil, um prompt pronto a executar, pelo que são seguras para alojar via HTTP. Ferramentas de geração (generate_threat_group_scenario, generate_custom_scenario, generate_ai_insider_scenario) aceitam uma configuração traga-a-sua-própria-chave e devolvem Markdown finalizado — mantenha estas em stdio local.- Implementação Partilhada: O servidor reutiliza os mesmos construtores headless core/prompts.py e carregadores core/attack_data.py que as páginas Streamlit usam, pelo que os cenários correspondem à aplicação em vez de divergirem. Inicie com python -m mcp_server ou o script de consola attackgen-mcp. |
| Competência de Agente attackgen-tabletop | - Tabletops Prontos para Facilitadores: Uma nova Competência de Agente baseia-se nas ferramentas de dados MCP para transformar um grupo de ameaça ou estudo de caso MITRE ATT&CK/ATLAS num tabletop / MSEL completo de RI — narrativa de cenário, kill chain mapeada por fases, injeções com carimbo temporal, perguntas de discussão NIST SP 800-61 e um scorecard de cobertura de deteção. - Executa no Modelo do Chamador: A competência fornece a arte do exercício enquanto o servidor MCP fornece os dados, pelo que executa no próprio modelo do cliente sem chave de API adicional. - Dois Formatos de Saída: Entregue como Markdown (predefinição) ou um relatório HTML autónomo e pronto para impressão. |
| Assistente Refina a Saída de Deteção e Resposta | - Edição de Equipa Roxa: O Assistente AttackGen agora pode refinar a narrativa de Deteção e Resposta, não apenas o cenário. Quando um cenário é gerado com o alternador de narrativa 🟣 Equipa roxa (páginas Grupo de Ameaça / Personalizado), um seletor A editar: aparece na página do Assistente para que o chat possa visar o cenário ou o passo a passo do defensor — anteriormente o Assistente apenas tinha o texto do cenário. - Modo de Edição Combinado: Um terceiro alvo Cenário + Deteção e Resposta refina ambos em conjunto, pelo que uma alteração transversal — um setor diferente, ator de ameaça, técnica ou cronograma — é aplicada consistentemente no cenário do atacante e na narrativa do defensor em vez de ser feita duas vezes e divergir. - Factos Determinísticos Intocados: Apenas a narrativa LLM é um alvo de refinamento; a junção de deteção STIX local nunca é editada por LLM. Cada modo de edição mantém o seu próprio histórico de chat, e a passagem combinada é etiquetada purple_team_narrative no LangSmith. |
| Registo de Modelos Mais Simples | - Menos Uma Coisa por Modelo: O kwarg max_completion_tokens e a regra de temperatura para modelos de raciocínio agora são encaminhados a partir do fornecedor em vez de uma flag uses_max_completion_tokens por modelo — todos os modelos de chat OpenAI atuais os usam, pelo que a flag duplicava um facto que a chave do fornecedor já capturava. Adicionar um novo modelo OpenAI permanece uma edição de uma entrada em MODELS, sem flag extra para lembrar.- Sem Alteração de Comportamento: Apenas uma simplificação interna — o wrapper constrói kwargs LiteLLM idênticos para todos os modelos atuais. |
v0.13.1
| O que há de novo? | Porque é útil? |
|---|---|
| Correção: Geração de cenários OpenAI GPT-5.x | - Tratamento Correto de Modelos de Raciocínio: Os modelos de raciocínio OpenAI GPT-5.x rejeitam qualquer temperature de amostragem diferente da sua predefinição, pelo que cada geração GPT-5.x falhava com BadRequestError: 'temperature' does not support 0.7 with this model. O AttackGen já não envia uma temperatura personalizada a estes modelos, enquanto outros fornecedores mantêm o valor configurado. |
| Atualização do registo de modelos | - Modelos Mais Recentes: Lista de modelos atualizada contra a documentação atual de cada fornecedor — OpenAI GPT-5.6 (níveis Sol / Terra / Luna), Claude Fable 5 e Claude Sonnet 5, com uma geração anterior mantida por fornecedor para continuidade. - Entradas Obsoletas Removidas: Modelos que os fornecedores substituíram ou estão a retirar foram removidos — notavelmente o qwen3-32b da Groq (encerrado a 17 jul 2026) e o Magistral Medium da Mistral — para que a barra lateral não possa oferecer um modelo que erra ao ser selecionado.- Adicionado um nível Groq rápido/barato ( llama-3.1-8b-instant). |
v0.13
| O que há de novo? | Porque é útil? |
|---|---|
| Modo Equipa Roxa: Deteção e Resposta | - Companheiro Defensivo: Cada cenário de Grupo de Ameaça e Personalizado agora apresenta uma secção de Deteção e Resposta que junta cada uma das técnicas do cenário às estratégias de deteção, análises, fontes de registo e mitigações MITRE ATT&CK já incluídas nos dados fornecidos — transformando uma narrativa apenas vermelha num exercício de equipa roxa ("aqui está o ataque, e aqui está exatamente o que o seu SOC deveria ter visto"). - Sem Chamada LLM para os Factos: A secção de deteção é uma junção de dados local, não uma chamada de modelo — pelo que as análises, fontes de registo e mitigações que lista são o conteúdo MITRE real e atual em vez de suposições do modelo. É oferecida como o seu próprio download ..._detection.md juntamente com o cenário e a camada.- Fontes de Registo a Ativar: Um resumo por cenário lista as fontes de registo distintas que as deteções leem (ex.: WinEventLog:Security (EventCode=4624)), para que um SOC possa ver rapidamente que telemetria o exercício assume.- Narrativa de Equipa Roxa Opcional: Um alternador por página 🟣 Narrativa de equipa roxa adiciona uma segunda passagem de modelo que percorre o cenário etapa por etapa do lado do defensor — o que deveria disparar, o que o analista vê, como responder — fundamentado estritamente nas deteções e mitigações acima (sem deteções inventadas). - Consciente do ATLAS: Cenários ATLAS listam mitigações (o ATLAS ainda não tem estratégias de deteção) e dizem-no, em vez de não mostrarem nada. |
| MITRE ATT&CK v19.1 e Dados ATLAS Mais Recentes | - Frameworks Atualizados: Dados MITRE ATT&CK Enterprise e ICS atualizados de v18.1 para v19.1, e MITRE ATLAS atualizado para o lançamento mais recente, para que os cenários gerados reflitam as táticas, técnicas e estudos de caso atuais. - Listas de Grupos Atualizadas: Os menus suspensos de grupos de ameaça são regenerados a partir dos pacotes v19.1 (174 grupos ativos Enterprise e 14 ICS). Grupos que a MITRE revogou ou fundou a montante (ex.: APT34 → OilRig, UNC2452 → APT29) já não aparecem, enquanto grupos recentemente monitorizados como MirrorFace aparecem. - Mais Estudos de Caso ATLAS: A biblioteca de estudos de caso ATLAS cresceu para 57 (17 incidentes, 40 exercícios). - Atualização Repetível: Um novo scripts/generate_groups.py regenera os mapeamentos de grupos a partir dos pacotes STIX fornecidos, complementando o script existente de estudos de caso ATLAS — para que a próxima atualização seja um passo com script em vez de curadoria manual. |
| Exportação de Camada ATT&CK Navigator | - Camada Descarregável: Cada cenário gerado nas páginas de Grupo de Ameaça e Cenário Personalizado agora oferece uma camada ATT&CK Navigator (.json) juntamente com o download Markdown, para que as técnicas de um cenário possam ser visualizadas, anotadas e partilhadas no ATT&CK Navigator. Para a visualizar, descarregue a camada e abra-a via Open Existing Layer → Upload from local no Navigator.- Todas as Três Matrizes: O domínio Navigator correto é definido automaticamente por matriz — carregue camadas Enterprise e ICS no MITRE ATT&CK Navigator, e camadas ATLAS no fork ATLAS Navigator. (Uma camada ATLAS não carrega no ATT&CK Navigator, ou vice-versa, pois cada um apenas reconhece o seu próprio domínio.) - Técnicas Permanecem Visíveis: Sub-técnicas pontuadas expandem automaticamente o seu pai e os IDs de técnica são apresentados no layout, para que as técnicas destacadas do cenário sejam imediatamente aparentes em vez de escondidas em linhas recolhidas. - Sem Chamada LLM Extra: A camada é uma serialização local das técnicas já selecionadas para o cenário — sem chamada de modelo adicional ou consulta externa. - Nomes de Ficheiro de Download Descritivos: Os downloads de cenário e camada agora são nomeados após o ator de ameaça / cenário personalizado e matriz com um carimbo temporal de geração (ex.: AttackGen_APT29_Enterprise_20260714-153045.md), para que os ficheiros guardados sejam significativos e não colidam entre cenários. |
| O que há de novo? | Por que é útil? |
| ----------- | ----------------- |
| Cenários de Ameaça Interna com IA | - Novo Tipo de Cenário: Uma página dedicada gera exercícios de mesa de resposta a incidentes nos quais um agente de IA de fronteira implantado dentro da sua organização se comporta como uma ameaça interna — por meio de desalinhamento, recompensa por hacking, objetivos emergentes ou comprometimento por injeção de prompt. Baseado no modelo de ameaça de Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents. - Orientado por Arquétipos de Implantação: Os cenários são moldados pelo nível de autonomia do agente (assistente supervisionado L1 → frota totalmente autônoma L4), que é o principal determinante da sua superfície de ameaça e postura de detecção. - Cinco Categorias de Ameaça Interna: Comprometimento de Credenciais, Sabotagem da Cadeia de Suprimentos, Exfiltração de Dados, Sabotagem de Infraestrutura e Engano e Evasão — cada uma mapeada para manifestações concretas de agentes de IA, em vez de motivações humanas. - 23 Ameaças STRIDE para Agentes de IA: Uma taxonomia STRIDE completa (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) adaptada para agentes de IA de fronteira, opcionalmente usada para restringir o escopo do cenário. - Controles Alinhados ao NIST CSF: Os cenários gerados incluem mitigações priorizadas mapeadas para o NIST Cybersecurity Framework (Identify, Protect, Detect, Respond, Recover). - Paridade de Provedores: Suporta o mesmo conjunto de provedores que o restante do AttackGen, com rastreamento opcional do LangSmith. |
| Migração para LiteLLM e Consolidação de Provedores | - Wrapper LLM Unificado: Toda a integração de provedores agora flui por um único wrapper core/llm.py que usa LiteLLM. Adicionar um novo modelo é uma edição de uma linha na lista MODELS em core/models.py; adicionar um provedor é uma única entrada ProviderInfo. Espelha o padrão usado em stride-gpt.- Redução Massiva de Código: Removidas ~3.800 linhas de ramificações duplicadas por provedor nas quatro páginas (~1.000 linhas de blocos if model_provider == ... mais oito funções wrapper quase idênticas por página). Cada página agora constrói dicts de mensagens simples e chama call_llm(config, messages).- Barra Lateral Orientada por Registro: A barra lateral de boas-vindas agora é gerada a partir do registro de provedores, substituindo oito blocos de provedores codificados manualmente por um único loop. - Listas de Modelos Atualizadas: Atualizadas para os modelos mais recentes — família OpenAI GPT-5.5 / 5.4, Anthropic Claude 4.6 / 4.7 / 4.8, pré-visualização Google Gemini 3.x, Mistral Large 3 / Magistral, Groq GPT-OSS e Qwen3. - Consolidação de Provedores: Substituídas as entradas separadas do Azure OpenAI Service e do Ollama por uma única opção Personalizado (compatível com OpenAI). Implantações do Azure, Ollama ( http://localhost:11434/v1), LM Studio (http://localhost:1234/v1), OpenRouter e endpoints auto-hospedados funcionam todos por esse único caminho.- Menor Pegada de Dependências: Removidos os pacotes langchain, langchain-anthropic, langchain-core, langchain-community, langchain-google-genai, langchain-mistralai, langchain-openai e anthropic — substituídos por uma única dependência litellm>=1.40. langsmith é mantido para rastreamento opcional.- Rastreamento LangSmith Preservado: O decorador @traceable e o widget de feedback continuam funcionando de forma transparente; core/llm.py envolve call_llm em @traceable quando um cliente LangSmith está disponível. |
| Atualização de Segurança da Imagem Docker | - Imagem Base Atualizada: Atualizado o digest de python:3.12-slim para limpar CVEs obsoletas na camada do SO sinalizadas pela varredura de código Trivy, reduzindo a contagem de alertas abertos contra a imagem de contêiner publicada.- Correção do pip CVE-2025-8869: pip agora é atualizado antes de instalar os requisitos, incorporando a correção para verificações de symlink ausentes durante a extração de pacotes. |
| Saída LLM em Streaming | - Geração Token por Token: Cenários e o chat do Assistente AttackGen agora transmitem tokens à medida que chegam, em vez de bloquear na resposta completa, para que gerações longas pareçam responsivas e você possa acompanhar enquanto o modelo escreve. - API de Streaming Opt-In: Adiciona call_llm_stream ao lado de call_llm no wrapper unificado LiteLLM, para que os chamadores escolham se querem streaming sem alterar o restante do contrato.- Tratamento Limpo de Raciocínio: Um auxiliar com estado stream_filter_thinking suprime regiões <think>...</think> na visualização ao vivo, enquanto o clean_model_response pós-stream continua a preencher o expansor de raciocínio a partir do texto bruto completo. |
| Alternância de Adversário Aprimorado por IA | - Nova Alternância por Página: Adiciona uma alternância "adversário aprimorado por IA" nas páginas de Grupo de Ameaças e Cenário Personalizado que reformula o cenário gerado para que o adversário use IA para acelerar e aprimorar a mesma cadeia de eliminação — menor nível mínimo de habilidade, cronogramas comprimidos, orquestração autônoma e escala paralela — em vez de introduzir novas técnicas. - Fundamentado na Pesquisa da Anthropic: Baseado na pesquisa LLM ATT&CK Navigator da Anthropic, que descobriu que a mudança mais significativa nas ameaças cibernéticas do mundo real é a aceleração e orquestração de técnicas existentes, em vez de novas. - Visibilidade de Rastreamento: Cenários marcados com ai_enhanced no LangSmith para que gerações ampliadas por IA possam ser filtradas e comparadas com execuções de linha de base.- Deliberadamente Omitido na Página de Ameaça Interna com IA: O ator de ameaça dessa página já é um agente de IA de fronteira, então o enquadramento "aprimorado por IA" seria redundante. |
| Correções de Bugs e Melhorias | - Esta versão inclui várias pequenas correções de polimento de UI e renderização nas páginas de cenário e na barra lateral. |
v0.11
| O que há de novo? | Por que é útil? |
|---|---|
| Suporte ao Framework MITRE ATLAS | - Cobertura de Ameaças de IA/ML: O AttackGen agora suporta o framework MITRE ATLAS (Adversarial Threat Landscape for AI Systems), permitindo a geração de cenários de resposta a incidentes para ameaças direcionadas a sistemas de IA e aprendizado de máquina. - Cenários Baseados em Estudos de Caso: Gere cenários com base em 45 estudos de caso documentados de ataques reais de IA, incluindo 14 incidentes reais e 31 exercícios de pesquisa cobrindo ataques como injeção de prompt, extração de modelo e envenenamento de dados. - 147 Técnicas ATLAS: Acesse a biblioteca completa de técnicas ATLAS cobrindo 16 táticas específicas de IA, incluindo Acesso a Modelos de IA, Preparação de Ataques de IA e fases de ataque tradicionais adaptadas para sistemas de IA. - Modelos Específicos de IA: Seis novos modelos de cenário personalizados para ataques comuns de IA/ML: Evasão de Modelo, Envenenamento de Dados, Extração de Modelo, Injeção de Prompt, Jailbreak de LLM e ataques à Cadeia de Suprimentos de IA. |
| Dados MITRE ATT&CK Atualizados para v18.1 | - Inteligência de Ameaças Mais Recente: O AttackGen agora usa dados do MITRE ATT&CK v18.1, garantindo que os cenários gerados reflitam as táticas, técnicas e procedimentos mais atuais usados por atores de ameaças. - Cobertura Empresarial Expandida: A lista de grupos de ameaças Enterprise cresceu de 150+ para 187 grupos, incluindo atores recém-rastreados. - Cobertura ICS Expandida: A lista de grupos de ameaças ICS cresceu de 7 para 16 grupos, fornecendo melhor cobertura para cenários de sistemas de controle industrial. |
| Suporte a Modelos LLM Atualizado | - OpenAI: Adicionados os modelos GPT-5.2 e GPT-5.2 Pro; lista de modelos simplificada com a remoção dos modelos de raciocínio da série o descontinuados. - Anthropic: Atualizado para a família Claude 4.5 com Sonnet 4.5, Haiku 4.5 e Opus 4.5. - Google AI: Adicionados os modelos de pré-visualização Gemini 3 Pro e Flash; opções do Gemini 2.5 atualizadas. - Groq: Adicionados os modelos GPT-OSS 120B e 20B para inferência de alto desempenho. - Mistral: Atualizado para versões de modelos datadas (Large 2512, Medium 2508, Small 2506); adicionado Ministral 14B. |
| Correções de Bugs | - Corrigido o Tratamento de Respostas do Google AI: Análise de resposta atualizada para lidar com o formato de conteúdo estruturado retornado pelos modelos Gemini mais recentes, garantindo que o texto do cenário seja extraído e exibido corretamente. - Corrigidas Mensagens de Erro da Matriz ICS: As mensagens de erro agora exibem corretamente "ICS ATT&CK" em vez de "Enterprise ATT&CK" ao usar a matriz ICS. - Tratamento Melhorado de Técnicas Vazias: Adicionado tratamento gracioso quando um grupo de ameaças não tem técnicas associadas, prevenindo erros secundários. |
v0.10.1
| O que há de novo? | Por que é útil? |
|---|---|
| Compatibilidade com LangChain v1.0 | - Corrigidas Alterações de Importação Quebradas: Todas as importações foram atualizadas de langchain.prompts.chat (descontinuado) para langchain_core.prompts, garantindo compatibilidade com LangChain v1.0 e prevenindo problemas de ModuleNotFoundError. Isso mantém a estabilidade à medida que o ecossistema LangChain evolui. |
| Infraestrutura de Segurança Abrangente | - Varredura de Segurança Automatizada: Introduzidos workflows do GitHub Actions para monitoramento contínuo de segurança usando Bandit (análise de código Python), CodeQL (detecção de vulnerabilidades), pip-audit (varredura de dependências), Safety (vulnerabilidades conhecidas), Gitleaks (detecção de segredos) e Trivy (varredura de imagens Docker). - Documentação de Práticas Recomendadas de Segurança: Adicionado SECURITY.md abrangente cobrindo versões suportadas, relato de vulnerabilidades, gerenciamento de chaves de API, considerações de privacidade de dados e orientação de segurança de implantação. - Seção de Segurança do README Aprimorada: Orientação de segurança expandida com o que fazer e o que não fazer claros para proteção de chaves de API, considerações de privacidade de dados e práticas responsáveis de implantação. |
| Melhorias no Docker | - Segurança Aprimorada: Dockerfile atualizado para executar como usuário não-root, melhorando a postura de segurança do contêiner. - Suporte a Docker Compose: Adicionado docker-compose.yml para implantação de múltiplos serviços simplificada e configuração de desenvolvimento local mais fácil. - Melhor Otimização de Build: .dockerignore aprimorado para reduzir o tamanho da imagem e impedir que arquivos sensíveis sejam incluídos nas imagens de contêiner. - Modelo de Configuração Abrangente: .env.example atualizado com todas as chaves de API suportadas (OpenAI, Anthropic, Azure, Google, Mistral, Groq) para configuração inicial mais fácil. |
| Correções de Bugs | - Timeout da API Ollama: Adicionada configuração de timeout às solicitações da API Ollama para prevenir conexões penduradas. - Atualizações do CLI Safety: Atualizado do comando safety check (descontinuado) para o novo comando safety scan, garantindo funcionalidade contínua de varredura de segurança.- Configuração do Bandit: Configuração de varredura de segurança do Bandit corrigida para análise de código Python mais precisa. |
v0.10
| O que há de novo? | Por que é útil? |
|---|---|
| Integração com a API Responses da OpenAI | - API de Próxima Geração: O AttackGen agora usa a mais recente API Responses da OpenAI para todos os modelos suportados, fornecendo uma interface unificada e aprimorada. |
| Suporte aos Modelos de Fronteira Mais Recentes | - Integração com GPT-5: Adicionado suporte para a mais recente série de modelos GPT-5 da OpenAI, incluindo gpt-5, gpt-5-mini e gpt-5-nano, fornecendo acesso às capacidades de IA mais avançadas para geração de cenários. - Claude Sonnet 4.5: Adicionado suporte para o mais recente modelo Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) da Anthropic, juntamente com versões atualizadas dos modelos Claude, incluindo Claude Opus 4.1 (claude-opus-4-1-20250805). |
| Correções de Bugs e Melhorias | - Corrigido Aviso de Descontinuação do Streamlit: Parâmetro use_container_width (descontinuado) substituído pelo novo parâmetro width para garantir compatibilidade com versões futuras do Streamlit.- Documentação Aprimorada: CLAUDE.md atualizado com orientação abrangente para trabalho de desenvolvimento futuro e informações detalhadas de arquitetura adicionadas. |
v0.9
| O que há de novo? | Por que é útil? |
|---|---|
| Suporte Expandido a Modelos | - Modelos de Raciocínio Mais Recentes da OpenAI: O AttackGen agora suporta os modelos de raciocínio mais novos da OpenAI, incluindo o4-mini (o modelo de raciocínio mais recente), o3/o3-mini e o1-pro (capacidades de raciocínio aprimoradas). Esses modelos se destacam na geração de cenários complexos que exigem pensamento lógico profundo. - Série GPT-4.1: Adicionado suporte para os modelos da série GPT-4.1 (gpt-4.1, gpt-4.1-mini e gpt-4.1-nano), oferecendo as melhorias mais recentes nas capacidades gerais de IA com alternativas mais leves para casos de uso sensíveis a custo. - Modelos Anthropic Claude: Adicionado suporte abrangente para os modelos Claude da Anthropic, incluindo claude-opus-4-20250514, claude-sonnet-4-20250514, claude-3-7-sonnet-latest e claude-3-5-haiku-latest. Esses modelos oferecem excelente desempenho para gerar cenários de resposta a incidentes detalhados e contextualmente conscientes, com fortes capacidades de raciocínio. - Modelos Google AI Atualizados: Atualizada a seleção de modelos do Google AI para incluir os modelos de pré-visualização Gemini 2.5 mais recentes (gemini-2.5-flash-preview-05-20 e gemini-2.5-pro-preview-05-06) juntamente com os modelos Gemini 2.0, fornecendo acesso às melhorias mais recentes na tecnologia de IA do Google. - Organização de Modelos Melhorada: Menus suspensos de seleção de modelos reorganizados para priorizar modelos mais novos e descrições atualizadas para distinguir claramente entre diferentes tipos e capacidades de modelos. |
| Lógica de Seleção de Técnicas Aprimorada | - Tratamento de Grupos Mais Robusto: Corrigido um problema em que grupos de atores de ameaças vazios podiam causar erros durante a seleção de técnicas. A ferramenta agora trata corretamente grupos vazios retornando um DataFrame vazio, garantindo operação estável mesmo com dados limitados de atores de ameaças. - Preservação do Nome da Fase: Processo de seleção de técnicas melhorado para incluir corretamente 'Phase Name' na saída, mantendo as informações da fase da cadeia de eliminação durante todo o processo de geração de cenários. Isso garante que os cenários gerados mantenham o contexto adequado sobre a qual fase de um ataque cada técnica pertence. |
| Melhorias no Ambiente de Desenvolvimento | - .gitignore Aprimorado: Adicionado suporte para diretórios de ambiente virtual .venv além de venv, acomodando diferentes preferências de desenvolvedores e ferramentas de gerenciamento de ambiente Python.- Limpeza de Código: Importações não utilizadas removidas nos scripts de geração de cenários, melhorando a manutenibilidade do código e reduzindo confusão potencial. |
v0.8
| O que há de novo? | Por que é útil? |
|---|---|
| Endpoints de API Personalizados Compatíveis com OpenAI | - Flexibilidade Aumentada: O AttackGen agora suporta endpoints de API personalizados compatíveis com OpenAI, como Anyscale, Together AI ou qualquer API compatível auto-hospedada. Esse recurso permite que os usuários aproveitem uma gama mais ampla de modelos e serviços além dos provedores oficialmente suportados. - Suporte a Auto-Hospedagem: Organizações com suas próprias implantações de modelos compatíveis com OpenAI agora podem conectar o AttackGen diretamente a esses endpoints. - Controle sobre a Seleção de Modelos: Os usuários podem especificar a URL base, o nome do modelo e a chave de API para qualquer serviço compatível, fornecendo maior controle sobre quais modelos e endpoints são usados para geração de cenários. |
| Seleção de Modelos Atualizada | - Acesso aos Modelos Mais Recentes: A seleção de modelos da OpenAI agora inclui os novos modelos da série GPT-4.1 (gpt-4.1, gpt-4.1-mini, gpt-4.1-nano), oferecendo desempenho melhorado em codificação, seguimento de instruções e tarefas de contexto longo. - Suporte Gemini Expandido: Adicionado suporte para os modelos mais recentes Gemini 2.5 Pro Preview, 2.0 Flash e 2.0 Flash Lite. |
v0.7
| O que há de novo? | Por que é útil? |
|---|---|
| Integração com a API Groq | - Desempenho Aprimorado: O AttackGen agora suporta a API de alto desempenho da Groq, fornecendo acesso a modelos como llama-3.3-70b-versatile e deepseek-r1-distill-llama-70b. Essa integração oferece tempos de inferência rápidos, mantendo a geração de cenários de alta qualidade. - Exibição de Saída de Modelo Melhorada: Para modelos como DeepSeek que fornecem raciocínio junto com sua saída, o AttackGen agora exibe esse raciocínio em um widget expansor recolhível. Isso permite que os usuários visualizem o processo de pensamento do modelo quando desejarem, mantendo a saída principal do cenário limpa e focada. |
| Suporte a Modelos OpenAI Atualizado | - Modelos Mais Recentes: O AttackGen agora suporta o mais recente modelo de raciocínio o3 da OpenAI e a versão GA (disponibilidade geral) do modelo o1, substituindo a versão de pré-visualização anterior. Essas atualizações fornecem acesso a modelos mais estáveis e melhorados para geração de cenários. |
v0.6
| O que há de novo? | Por que é útil? |
|---|---|
| Suporte aos novos modelos de 'raciocínio' da OpenAI | - Geração de Cenários Aprimorada: O AttackGen agora suporta os novos modelos de 'raciocínio' da OpenAI (o1-preview e o1-mini), permitindo a geração de cenários de resposta a incidentes altamente detalhados e nuançados. Esses modelos oferecem coerência e profundidade melhoradas na criação de cenários. |
| Suporte à matriz MITRE ATT&CK ICS | - Escopo Expandido: O AttackGen agora suporta a geração de cenários de teste de resposta a incidentes usando a matriz MITRE ATT&CK ICS (Industrial Control Systems), além da matriz Enterprise. Isso permite que os usuários criem cenários adaptados a ambientes industriais e de infraestrutura crítica. |
| Dados de origem ATT&CK atualizados para v15.1 | - Inteligência de Ameaças Mais Recente: A ferramenta agora usa os dados MITRE ATT&CK mais atualizados (v15.1), garantindo que os cenários gerados reflitam as táticas, técnicas e procedimentos mais recentes conhecidos usados por atores de ameaças. |
| Dados de grupos de atores de ameaças atualizados | - Cobertura Abrangente: Os dados de grupos foram atualizados para incluir os grupos mais recentes rastreados no MITRE ATT&CK, como Scattered Spider. Isso garante que os usuários possam gerar cenários com base nas informações mais atuais de atores de ameaças disponíveis. |
| Carregamento de chaves de API / segredos de um arquivo .env | - Segurança Aprimorada: Os usuários agora podem armazenar suas chaves de API e outras informações sensíveis em um arquivo .env, melhorando a segurança e facilitando o gerenciamento de credenciais em diferentes ambientes. |
v0.5.2
| O que há de novo? | Por que é útil? |
|---|---|
| Suporte ao Modelo GPT-4o mini | - Opções de Modelo Expandidas: O AttackGen agora suporta o uso do modelo GPT-4o mini da OpenAI. O GPT4-o mini é um modelo pequeno altamente econômico. |
| Opções de modelos atualizadas para a API Google AI | - Opções de Modelo Expandidas: O AttackGen agora suporta as versões estável e de pré-visualização do Gemini 1.5 Pro. |
v0.5.1
| O que há de novo? | Por que é útil? |
|---|---|
| Suporte ao Modelo GPT-4o | - Opções de Modelo Aprimoradas: O AttackGen agora suporta o uso do modelo GPT-4o da OpenAI. O GPT4-o é o modelo líder da OpenAI, capaz de gerar cenários duas vezes mais rápido que o GPT-4 pela metade do custo. |
| O que há de novo? | Por que é útil? |
| ----------- | ---------------- |
| Assistente AttackGen | - Refinamento Iterativo de Cenários: A nova interface de chat permite que os usuários interajam com seus cenários de resposta a incidentes gerados, facilitando a atualização e o esclarecimento de dúvidas sobre o cenário sem precisar regenerá-lo do zero. Esse recurso possibilita uma abordagem iterativa no desenvolvimento de cenários, onde os usuários podem refinar e melhorar seus cenários com base nas respostas do assistente de IA. - Assistência Contextual: O assistente de IA responde às consultas dos usuários com base no contexto do cenário gerado e no histórico da conversa. Isso garante que as respostas do assistente sejam relevantes e úteis para refinar o cenário. |
| Modelos de Início Rápido para Cenários Personalizados | - Geração Rápida de Cenários: Os usuários agora podem gerar rapidamente cenários personalizados de resposta a incidentes com base em modelos predefinidos para tipos comuns de incidentes cibernéticos, como ataques de phishing, ataques de ransomware, infecções por malware e ameaças internas. Esse recurso facilita a criação de cenários realistas sem a necessidade de selecionar técnicas individuais do ATT&CK. - Fluxo de Trabalho Simplificado: A seleção de modelos é integrada de forma contínua ao processo de geração de cenários personalizados. Os usuários podem escolher um modelo, que preenche automaticamente as técnicas relevantes do ATT&CK, e então personalizar ainda mais o cenário, se necessário. |
| Integração com a API do Google AI | - Opções Expandidas de Modelos: O AttackGen agora suporta o uso dos modelos Gemini do Google para gerar cenários de resposta a incidentes. Essa integração amplia a gama de modelos de alta qualidade disponíveis aos usuários, permitindo que eles aproveitem as capacidades de IA do Google para criar cenários realistas e diversos. |
v0.4
| O que há de novo? | Por que é útil? |
|---|---|
| Integração com a API Mistral | - Provedor de Modelos Alternativo: Os usuários agora podem aproveitar os modelos de IA da Mistral para gerar cenários de resposta a incidentes. Essa integração oferece uma alternativa aos modelos do OpenAI e do Azure OpenAI Service, permitindo que os usuários explorem e comparem o desempenho de diferentes modelos de linguagem para seu caso de uso específico. |
| Suporte a Modelos Locais usando Ollama | - Hospedagem Local de Modelos: O AttackGen agora suporta o uso de LLMs hospedados localmente por meio de uma integração com o Ollama. Esse recurso é particularmente útil para organizações com requisitos rigorosos de privacidade de dados ou para aquelas que preferem manter seus dados no local (on-premises). Observe que esse recurso não está disponível para usuários da versão do AttackGen hospedada no Streamlit Community Cloud em https://attackgen.streamlit.app |
| Integração Opcional com LangSmith | - Flexibilidade Aprimorada: A integração com o LangSmith agora é opcional. Se nenhuma chave de API do LangChain for fornecida, os usuários verão uma mensagem informativa indicando que a execução não será registrada pelo LangSmith, em vez de um erro ser lançado. Essa mudança melhora a experiência geral do usuário e permite que os usuários continuem usando o AttackGen sem a necessidade do LangSmith. |
| Várias Correções de Bugs e Melhorias | - Experiência do Usuário Aprimorada: Esta versão inclui várias correções de bugs e melhorias na interface do usuário, tornando o AttackGen mais amigável e robusto. |
v0.3
| O que há de novo? | Por que é útil? |
|---|---|
| Integração com o Azure OpenAI Service | - Integração Aprimorada: Os usuários agora podem optar por utilizar modelos OpenAI implantados no Azure OpenAI Service, além da API padrão do OpenAI. Essa integração oferece uma solução contínua e segura para incorporar o AttackGen em ecossistemas Azure existentes, aproveitando acordos comerciais e de confidencialidade estabelecidos. - Segurança de Dados Aprimorada: Executar o AttackGen a partir do Azure garante que as descrições de aplicativos e outros dados permaneçam dentro do ambiente Azure, tornando-o ideal para organizações que lidam com dados sensíveis em seus modelos de ameaças. |
| LangSmith para o Azure OpenAI Service | - Depuração Aprimorada: O rastreamento do LangSmith agora está disponível para cenários gerados usando o Azure OpenAI Service. Esse recurso fornece uma ferramenta poderosa para depuração, teste e monitoramento do desempenho do modelo, permitindo que os usuários obtenham insights sobre o processo de tomada de decisão do modelo e identifiquem possíveis problemas com os cenários gerados. - Feedback do Usuário: O LangSmith também captura feedback dos usuários sobre a qualidade dos cenários gerados usando o Azure OpenAI Service, fornecendo insights valiosos sobre o desempenho do modelo e a satisfação do usuário. |
| Seleção de Modelos para a API OpenAI | - Opções Flexíveis de Modelos: Os usuários agora podem selecionar entre vários modelos disponíveis no endpoint da API OpenAI, como gpt-4-turbo-preview. Isso permite maior personalização e experimentação com diferentes modelos de linguagem, permitindo que os usuários encontrem o modelo mais adequado para seu caso de uso específico. |
| Imagem de Contêiner Docker | - Implantação Fácil: O AttackGen agora está disponível como uma imagem de contêiner Docker, facilitando a implantação e execução do aplicativo em um ambiente consistente e reproduzível. Esse recurso é particularmente útil para usuários que desejam executar o AttackGen em um ambiente conteinerizado ou para aqueles que desejam implantar o aplicativo em uma plataforma de nuvem. |
v0.2
| O que há de novo? | Por que é útil? |
|---|---|
| Cenários Personalizados baseados em Técnicas ATT&CK | - Para Organizações Maduras: Esse recurso é particularmente benéfico se sua organização possui capacidades avançadas de inteligência de ameaças. Por exemplo, se você está monitorando um grupo de atores de ameaças recém-identificado ou menos conhecido, pode adaptar cenários de teste de resposta a incidentes específicos para as técnicas usadas por esse grupo. - Testes Focados: Alternativamente, use esse recurso para focar seus testes de resposta a incidentes em partes específicas da cadeia de ataque cibernético ou em certas Táticas MITRE ATT&CK, como 'Movimento Lateral' ou 'Exfiltração'. Isso é útil para organizações que buscam avaliar e melhorar áreas específicas de sua postura de defesa. |
| Feedback do usuário sobre cenários gerados | - Coletar feedback é essencial para acompanhar o desempenho do modelo ao longo do tempo e ajuda a destacar pontos fortes e fracos nas tarefas de geração de cenários. |
| Tratamento de erros aprimorado para chaves de API ausentes | - Experiência do usuário aprimorada. |
Substituição dos widgets st.spinner do Streamlit pelo novo widget st.status | - Fornece melhor visibilidade em processos de longa duração (ou seja, geração de cenários). |
v0.1
Lançamento inicial.
Requisitos
- Versão recente do Python.
- Pacotes Python:
streamlit,litellm,mitreattack-python,pandas(consulterequirements.txtpara a lista completa). - Chave de API OpenAI (ou chave de API para o provedor de modelo escolhido).
- Chave de API LangChain (opcional) - consulte a seção Configuração do LangSmith abaixo para mais detalhes.
- Arquivos de dados MITRE ATT&CK e ATLAS. Eles acompanham o repositório (em
./data/), portanto, nenhum download manual é necessário (consulte Configuração de Dados). - Arquivo
.envpara armazenar chaves de API e segredos (consulte a seção Instalação para detalhes).
Instalação
Opção 1: Clonando o Repositório
- Clone este repositório:``` git clone https://github.com/mrwadams/attackgen.git
2. Altere o diretório para o repositório clonado:```
cd attackgen
- Instale os pacotes Python necessários:``` pip install -r requirements.txt
### Opção 2: Usando Docker
1. Baixe a imagem do contêiner Docker do Docker Hub:```
docker pull mrwadams/attackgen
Configuração do LangSmith
Se pretender utilizar o LangSmith para depuração, testes e monitorização do desempenho do modelo, terá de configurar uma conta LangSmith e criar um ficheiro .streamlit/secrets.toml que contenha a sua chave de API do LangChain. Siga as instruções aqui para configurar a sua conta e obter a sua chave de API. Encontrará um ficheiro secrets.toml-example no diretório .streamlit/ que pode utilizar como modelo para o seu próprio ficheiro secrets.toml.
Se não pretender utilizar o LangSmith, ainda assim terá de ter um ficheiro .streamlit/secrets.toml no local, mas pode deixar o campo LANGCHAIN_API_KEY vazio.
Configuração dos Dados
Os conjuntos de dados MITRE ATT&CK (Enterprise + ICS) e ATLAS de que o AttackGen necessita estão incluídos no repositório em ./data/, pelo que um clone recente está pronto a executar sem qualquer passo adicional de descarregamento. Estes incluem enterprise-attack.json, ics-attack.json, stix-atlas.json, groups.json, groups_ics.json e atlas-case-studies.json.
Se pretender atualizá-los para a versão mais recente a montante, pode voltar a descarregar os pacotes STIX do repositório de dados STIX do MITRE ATT&CK (e do repositório de dados ATLAS) e substituir os ficheiros em ./data/.
Executar o AttackGen
Após a configuração dos dados, pode executar o AttackGen com o seguinte comando:``` streamlit run 00_👋_Welcome.py
Podes também experimentar a aplicação no [Streamlit Community Cloud](https://attackgen.streamlit.app/).
## Servidor MCP
O AttackGen inclui um servidor [MCP](https://modelcontextprotocol.io/) para que fluxos de trabalho agênticos (Claude Code, Claude Desktop, Cursor e outros clientes MCP) possam gerar cenários sem a interface Streamlit. Ele expõe **dois níveis de ferramentas**:
- **Ferramentas de dados — sem chave de API, sem chamada de LLM.** Estas expõem os dados MITRE do AttackGen: listar grupos de ameaças / estudos de caso ATLAS, resolver a kill chain de um grupo, construir o relatório de Detecção & Resposta da equipa roxa, produzir uma camada ATT&CK Navigator e listar as opções de ameaça interna de IA. `list_ai_insider_options` devolve cada modelo de início rápido com as seleções e o resumo narrativo que aplica, para que `get_ai_insider_prompt` / `generate_ai_insider_scenario` possam ser chamadas apenas com `template=` mais a tua indústria e tamanho de empresa. Quando útil, também devolvem um prompt pronto a executar, para que **o modelo do teu próprio cliente** possa escrever o cenário — ou seja, funcionam mesmo sem uma chave de API de um fornecedor separado. Esta é a superfície que é segura para alojar via HTTP.
- **Ferramentas de geração — traz a tua própria chave.** `generate_threat_group_scenario`, `generate_custom_scenario` e `generate_ai_insider_scenario` chamam um servidor LLM e devolvem um cenário Markdown completo. O fornecedor, o modelo e a chave são fornecidos em cada chamada; se omitires `api_key`, o LiteLLM recorre à variável de ambiente correspondente (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …) — ou seja, **a tua própria** chave. Como estas leem credenciais do ambiente do processo, mantém-nas em **stdio local** e não as exponhas num anfitrião partilhado.
### Instalação e execução
A dependência `mcp` está incluída em `requirements.txt`. Instala o projeto (uma instalação editável também te dá o script de consola `attackgen-mcp`):```
pip install -r requirements.txt
# optional, for the console script:
pip install -e .
Inicie o servidor (stdio):``` python -m mcp_server # or: attackgen-mcp
### Adicioná-lo a um cliente
**Claude Code:**```
claude mcp add attackgen -- python -m mcp_server
Claude Desktop (claude_desktop_config.json) — as chaves vão em env:```json
{
"mcpServers": {
"attackgen": {
"command": "python",
"args": ["-m", "mcp_server"],
"cwd": "/absolute/path/to/attackgen",
"env": {
"OPENAI_API_KEY": "sk-...",
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
Pode definir `ATTACKGEN_PROVIDER` e `ATTACKGEN_MODEL` em `env` para dar às ferramentas de geração um provider/modelo padrão, para que os chamadores não precisem passá-los a cada vez. Os pacotes pesados de MITRE são carregados de forma preguiçosa na primeira chamada de ferramenta de dados, então o servidor inicia instantaneamente.
## Agent Skills
Emparelhado com o servidor MCP está uma **[Agent Skill](https://github.com/mrwadams/attackgen/blob/main/skills)**, `attackgen-tabletop`, que transforma os dados do AttackGen em um tabletop de resposta a incidentes pronto para facilitadores.
Dado um grupo de ameaças ou um estudo de caso ATLAS, a skill produz um tabletop completo / Master Scenario Events List (MSEL) — narrativa de cenário, kill chain mapeada por fases, injeções com carimbo de tempo, perguntas de discussão NIST SP 800-61 e um scorecard de cobertura de detecção — como Markdown ou um relatório HTML autônomo e amigável para impressão.
Ela também cobre o caminho de **ameaça interna de IA**: quando o adversário é um agente de IA de fronteira implantado dentro da organização, a skill trabalha a partir de `list_ai_insider_options` e `get_ai_insider_prompt` em vez de uma kill chain. O exercício mantém o mesmo formato de seis seções, mas sua espinha dorsal é o escopo de ameaças STRIDE e o arquétipo de implantação, seu scorecard de detecção é avaliado contra a postura de detecção desse arquétipo, e os `required_decisions` de um template tornam-se perguntas de discussão obrigatórias.
A divisão de trabalho é deliberada: as **ferramentas de dados** do MCP fornecem os fatos (cada técnica ou ID STRIDE remonta a um resultado de ferramenta) e a skill fornece o ofício do exercício, então ela roda no modelo do próprio cliente, **sem chave de API adicional**. Conecte o servidor MCP (acima) e aponte um cliente compatível com skills, como Claude Code ou Claude Desktop, para o diretório [`skills/`](https://github.com/mrwadams/attackgen/blob/main/skills). Consulte [`skills/README.md`](https://github.com/mrwadams/attackgen/blob/main/skills/README.md) para locais de instalação e detalhes por cliente.
## Uso
### Executando o AttackGen
#### Opção 1: Executando o App Streamlit Localmente
1. Execute o app Streamlit:```
streamlit run 00_👋_Welcome.py
- Abra o seu navegador web e navegue até o URL fornecido pelo Streamlit.
- Use o aplicativo para gerar cenários de resposta a incidentes padrão ou personalizados (veja abaixo para detalhes).
Opção 2: Usando a Imagem de Contêiner Docker
- Execute o contêiner Docker:``` docker run -p 8501:8501 mrwadams/attackgen
Este comando iniciará o contêiner e mapeará a porta 8501 (padrão para aplicações Streamlit) do contêiner para a sua máquina host.
2. Abra o seu navegador web e navegue até `http://localhost:8501`.
3. Utilize a aplicação para gerar cenários de resposta a incidentes padrão ou personalizados (consulte abaixo para mais detalhes).
### Gerar Cenários
#### Geração de Cenários Padrão
1. Escolha se pretende utilizar a API da OpenAI, API da Anthropic, API do Google AI, API da Mistral, API da Groq ou um endpoint personalizado compatível com OpenAI (para Ollama, LM Studio, implementações do Azure OpenAI, OpenRouter, etc.).
2. Introduza a sua chave de API para o fornecedor escolhido. Para o fornecedor Personalizado, introduza também o URL base e o nome do modelo.
3. Selecione o seu modelo preferido no menu suspenso.
4. Selecione o setor e a dimensão da sua organização nos menus suspensos.
5. Navegue até à página `Threat Group Scenarios`.
6. Selecione o Grupo de Ator de Ameaças que pretende simular.
7. Clique em 'Generate Scenario' para criar o cenário de resposta a incidentes.
8. Utilize os botões 👍 ou 👎 para fornecer feedback sobre a qualidade do cenário gerado. N.B. Os botões de feedback só aparecem se tiver sido definido um valor para LANGCHAIN_API_KEY no ficheiro `.streamlit/secrets.toml`.
#### Geração de Cenários Personalizados
1. Escolha se pretende utilizar a API da OpenAI, API da Anthropic, API do Google AI, API da Mistral, API da Groq ou um endpoint personalizado compatível com OpenAI.
2. Introduza a sua chave de API para o fornecedor escolhido. Para o fornecedor Personalizado, introduza também o URL base e o nome do modelo.
3. Selecione o seu modelo preferido no menu suspenso.
4. Selecione o setor e a dimensão da sua organização nos menus suspensos.
5. Navegue até à página `Custom Scenario`.
6. Utilize a caixa de seleção múltipla para pesquisar e selecionar as técnicas ATT&CK relevantes para o seu cenário.
7. Clique em 'Generate Scenario' para criar o seu cenário personalizado de teste de resposta a incidentes com base nas técnicas selecionadas.
8. Utilize os botões 👍 ou 👎 para fornecer feedback sobre a qualidade do cenário gerado. N.B. Os botões de feedback só aparecem se tiver sido definido um valor para LANGCHAIN_API_KEY no ficheiro `.streamlit/secrets.toml`.
#### Geração de Cenários de Ameaças Internas de IA
1. Escolha o seu fornecedor de modelos e introduza a chave de API relevante (utilize o fornecedor Personalizado para implementações do Azure OpenAI ou modelos locais).
2. Selecione o seu modelo preferido no menu suspenso.
3. Selecione o setor e a dimensão da sua organização nos menus suspensos.
4. Navegue até à página `AI Insider Threat Scenarios`.
5. (Opcional) Escolha um modelo para pré-preencher o arquétipo de implementação, as categorias de ameaças e as ameaças STRIDE para um cenário comum.
6. Escolha o **arquétipo de implementação** que reflita o quão autonomamente o agente de IA opera dentro da sua organização (por exemplo, assistente supervisionado, agente autónomo, frota totalmente autónoma). Este é o principal impulsionador da superfície de ameaças do agente.
7. Selecione uma ou mais **categorias de ameaças** (Comprometimento de Credenciais, Sabotagem da Cadeia de Abastecimento, Exfiltração de Dados, Sabotagem de Infraestruturas, Engano e Evasão).
8. (Opcional) Restrinja o cenário a **ameaças STRIDE** específicas. Se deixado vazio, as ameaças STRIDE associadas às suas categorias selecionadas são utilizadas automaticamente. Estas são as 23 ameaças STRIDE do artigo subjacente.
9. (Opcional) Ajuste as **capacidades do agente de fronteira** destacadas no prompt.
10. Clique em 'Generate Scenario'. O resultado inclui uma narrativa de ataque mapeada para identificadores STRIDE, oportunidades de deteção e controlos recomendados alinhados com o NIST CSF.
11. Utilize os botões 👍 ou 👎 para fornecer feedback (requer LANGCHAIN_API_KEY).
O modelo de ameaças por detrás desta página é descrito em [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk).
Tenha em atenção que a geração de cenários pode demorar cerca de um minuto. Assim que o cenário for gerado, pode visualizá-lo na aplicação e também descarregá-lo como um ficheiro Markdown.
## Melhores Práticas de Segurança
O AttackGen foi concebido para implementação local e de utilizador único. Ao utilizar a ferramenta:
### Proteger as Suas Chaves de API
**As suas chaves de API são credenciais sensíveis que podem incorrer em custos na sua conta.**
✅ **FAÇA:**
- Introduza as chaves de API através da interface (ficam na sessão do seu navegador)
- Utilize o ficheiro .env por conveniência na sua máquina pessoal
- Defina limites de gastos no painel do seu fornecedor de LLM
- Reveja regularmente a sua utilização e custos de API
- Limpe a sessão quando utilizar computadores partilhados
❌ **NÃO FAÇA:**
- Submeta ficheiros .env para controlo de versões (já está no .gitignore)
- Partilhe capturas de ecrã com chaves de API visíveis
- Execute o AttackGen em sistemas não confiáveis/comprometidos
- Partilhe as suas chaves de API com outras pessoas
- Ignore custos de API inesperados
### Considerações sobre Privacidade de Dados
Quando gera cenários, o AttackGen envia dados para o seu fornecedor de LLM escolhido:
- Detalhes da organização (setor, dimensão da empresa)
- Técnicas ATT&CK selecionadas
- Texto de entrada personalizado
- Cenários gerados (através do Assistente AttackGen)
**O que isto significa:**
- A OpenAI, a Anthropic, etc. podem registar estes dados de acordo com as suas políticas de privacidade
- Considere utilizar detalhes de organização genéricos/ficcionais para demonstrações
- Reveja as políticas de retenção de dados e privacidade do seu fornecedor de LLM
- Para casos de utilização sensíveis, considere fornecedores com garantias de privacidade mais rigorosas
### Para Implementações em Equipa/Organização
Se implementar o AttackGen para vários utilizadores (não é o caso de utilização padrão):
- Adicione autenticação/autorização (não incluída por padrão)
- Utilize um serviço de gestão de segredos para as chaves de API
- Implemente atrás de VPN ou rede interna
- Reveja este documento de modelo de ameaças para considerações adicionais
- Considere os requisitos de residência de dados e conformidade
### Segurança de Dependências
Mantemos as dependências e monitorizamos vulnerabilidades:
- As dependências são atualizadas regularmente
- Os avisos de segurança são acompanhados em Issues do GitHub
- Execute `pip list --outdated` para verificar atualizações
- Considere utilizar `pip-audit` para análise de vulnerabilidades
### Reportar Problemas de Segurança
Encontrou um problema de segurança? Por favor, reporte-o de forma responsável:
- Crie um aviso de segurança através do [relatório privado de vulnerabilidades](https://github.com/mrwadams/attackgen/security/advisories/new) do GitHub
- Não publique problemas de segurança publicamente
- Confirmaremos no prazo de 48 horas
- As correções serão priorizadas e lançadas rapidamente
## Contribuir
Fico muito satisfeito em aceitar contribuições para este projeto. Sinta-se à vontade para submeter uma issue ou pull request.
## Licença
Este projeto está licenciado sob [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/).