
Protótipo de detecção de ameaças internas baseado em Streamlit usando XGBoost e Isolation Forest para analisar dados de atividade de funcionários, gerar resumos de risco e fornecer explicações por funcionário baseadas em SHAP.
O ThreatDetect é um protótipo de detecção de ameaças internas baseado em Streamlit que analisa dados de atividade de funcionários e sinaliza comportamentos potencialmente arriscados. Ele utiliza um classificador XGBoost treinado juntamente com um detector de anomalias Isolation Forest para produzir resumos de risco a nível organizacional e insights explicáveis a nível de funcionário.
A aplicação pode ser executada localmente usando Streamlit. Uma demo implantada foi publicada anteriormente em:
streamlit_app.py — aplicação principal em Streamlitrequirements.txt — dependências de pacotes PythonAI_Model_Code/insider_threat_model.pkl — pipeline de inferência salvo e artefatos do modelo treinadoAI_Model_Code/insider_threat_clean_dataset.csv — conjunto de dados de amostra incluído para EDAAI_Model_Code/cos720_ai_model_FINAL.ipynb — caderno de desenvolvimento do modeloassets/app_styling.css — estilo personalizado da interface para a aplicação Streamlitunit testing/ — arquivos de teste para preparação de features e lógica de explicaçãodocs/TECHNICAL_DOCUMENTATION.md — documentação técnica do projetostreamlitpandasnumpyscikit-learnmatplotlibseabornplotlyxgboostshapInstale todas as dependências com:
pip install -r requirements.txt
git clone https://github.com/jazbengu/ThreatDetect.git
cd ThreatDetect
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Inicie a aplicação com:
streamlit run streamlit_app.py
Em seguida, abra o URL local exibido no terminal (geralmente http://localhost:8501).
Run Threat Detection para calcular as probabilidades de risco para cada registro.AI_Model_Code/insider_threat_clean_dataset.csv.Organisational Search via CSV é o principal fluxo de trabalho de detecção de ameaças em lote.Single Search é exibido na barra lateral, mas atualmente não está implementado na lógica da aplicação.Exploratory Data Analysis está disponível para exploração do conjunto de dados e verificações rápidas de anomalias.AI_Model_Code/insider_threat_model.pkl contém um pacote de modelo serializado com:
xgb_model: classificador XGBoost treinadoiso_forest: detector de anomalias Isolation Forest treinadoscaler: StandardScaler para entradas numéricaslabel_encoders: codificadores para features categóricasfeature_columns: lista ordenada de featurescat_cols, num_cols, bin_cols: agrupamentos de featuresbest_threshold: limiar de classificação usado para decisões de riscoshap_explainer: explicador SHAP para explicabilidadeO arquivo do modelo é carregado por streamlit_app.py e usado para pré-processar entradas, calcular probabilidades de risco e gerar explicações.
O repositório inclui testes na pasta unit testing/.
Execute a suíte de testes com:
pytest "unit testing/"
Este repositório está configurado para aprimoramento e testes. Melhorias futuras podem incluir expansão da cobertura de features e retreinamento do modelo com dados adicionais de ameaças internas.