Giter VIP home page Giter VIP logo

threatcopilot's Introduction

Threat Copilot

Possui o objetivo facilitar a adoção da modelagem de ameaças por times ágeis de desenvolvimento em organizações. Para isso, a ferramenta armazena e in tegra os modelos de ameaças com os repositórios de produtos, de ativos e com as bases de dados de conhecimento sobre fraquezas (CWE), ataques (CAPEC) e ameaças (Mobile Threat Catalog).

Arquitetura e Tela Figura. Arquitetura e Tela do Threat Copilot

Pré-Requisitos

  • Sistema Operacional
    • Ubuntu Linux 22.04 ou superior
  • Docker
    • Docker 24.0.2 ou superior
  • Python 3.9 ou superior
  • Neo4J 5.9.0 ou superior
  • Google Chrome 114 ou similar (Suporte a Javascript)
  • ChromeWebDriver

Instalação (Linux)

  1. Realize o download do branch principal do projeto
  2. Descompacte no diretório escolhido
  3. Abra o terminal (na máquina hospedeira) no diretório escolhido
  4. Transforme os scripts de inicialização em executáveis
chmod +x build_docker_image.sh build_docker_image.sh run_app.sh start.sh
  1. Realize o build local da imagem docker do Threat Copilot
./build_docker_image.sh
  1. Execute o docker compose para iniciar o Threat Copilot
./run_app.sh

Observações:

  • Algumas instalações do docker podem exigir o uso do SUDO para a execução dos comandos. Caso a sua seja necessário utilize o utilitário.
  • Recomendamos o uso do Portainer para auxiliar a administração dos containers.

Pós Instalação

Carga dos Dados no Neo4j

Para preparar para o uso é necessário realizar uma carga inicial ETL via Cypher:

User: neo4j / password: your_password (Default Password)

Warning

Trocar password padrão no docker-compose.yml

  1. Abra o console de admin do NEO4J (http://localhost:7474)

  1. Copie individualmente conteúdo do scripts cypher da pasta (/etl_scripts) para local de execução de scripts e pressione o botão de executar.
etl_scripts/LOAD_ASSETS.cypher
etl_scripts/LOAD_CAPEC.cypher
etl_scripts/LOAD_CWE.cypher
etl_scripts/LOAD_ORGS_PRODUCTS.cypher
etl_scripts/LOAD_THREATS.cypher
etl_scripts/LOAD_THREATS_MTC.cypher
  1. Entre na aplicação (http://localhost:5085/) Threat Copilot

Carga dos Dados no Threat Copilot

  1. Realize a carga do vocabulário (/kbdata/vocabulary.yml)

  1. Realize a carga dos modelos de ameaça em UTML

Prova de Conceito

Os dados dos modelos de ameaça foram anonimizados. Por ventura, podem representar algumas diferenças.

Para Desenvolvimento

Para executar a aplicação para desenvolvimento utilize os passos abaixo.

Em um terminal Linux na máquina hospedeira:

  1. Inicie o Neo4J via docker
docker compose -f docker-compose-neo4j.yml up
  1. Crie um ambiente usando o módulo venv do python
python3 -m venv venv
  1. Habilite o ambiente
source /venv/bin/activate
  1. Instale as dependencias via PIP
pip install -r requirements.txt
  1. Inicie a aplicação
gunicorn --config ./gunicorn-cfg.py --reload run:app

Publicações

  • NEGOCIO, Y. F., HERTHEL, N. T., MEDEIROS, J. D. Threat Copilot: Um sistemas de recomedação para modelagem de ameaças. VII Salão de Ferramentas. XXIII Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais. 2023.

Dúvidas e Sugestões

threatcopilot's People

Contributors

yurix avatar

Stargazers

 avatar  avatar Elena Camossi avatar

Watchers

 avatar

threatcopilot's Issues

Erro de conexão com bolt neo4j, porta 5085, rodando com docker

Olá, Yuri. Li seu artigo sobre essa ferramenta e achei sensacional. Estou estudando a possibilidade
de usá-la no meu TCC, mas estou tendo muitos erros pra rodar.

Consegui consertar alguns no Docker, mas agora o dashboard não funciona, dá erro, e se tento acessar
direto a página do vocabulário e fazer a carga, erro também. Não sei se tem relação com o login no
Threat Copilot, tive que criar um, porque o do neo4j vc forneceu...

threatcopilot  |     raise ServiceUnavailable(
threatcopilot  | neo4j.exceptions.ServiceUnavailable: Couldn't connect to localhost:5085 (resolved to ()):
threatcopilot  | Failed to establish connection to ResolvedIPv4Address(('127.0.0.1', 5085)) (reason [Errno 111] Connection refused)
threatcopilot  | Failed to establish connection to ResolvedIPv6Address(('::1', 5085, 0, 0)) (reason [Errno 99] Cannot assign requested address)

O erro é de conexão com o bolt do neo4j na porta 5085. Antes estava dando na porta 7687, ai procurei
nos fóruns e mudei algumas configurações no neo4j.conf:

# Bolt connector
server.bolt.enabled=true
#server.bolt.tls_level=DISABLED
server.bolt.listen_address=:7687
server.bolt.advertised_address=host.docker.internal:7687

# HTTP Connector. There can be zero or one HTTP connectors.
server.http.enabled=true
server.http.listen_address=:7474
server.http.advertised_address=host.docker.internal:7687

# HTTPS Connector. There can be zero or one HTTPS connectors.
server.https.enabled=false
server.https.listen_address=:7473
server.https.advertised_address=host.docker.internal:7687

Se puder dar um help, seria show! Obg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.