trs
exploite Openai et ChromAdb pour analyser et discuter avec les rapports et blogs Cyber Threat Intelligence.
Fournir une URL de rapport de menace aux commandes prédéfinies pour le résumé, l'extraction TTP de mitre, la création de MindMap et l'identification des opportunités de détection, ou exécuter vos propres invites personnalisées contre le contenu texte URL.
Chaque texte URL est stocké dans une base de données de vecteur de chroma afin que vous puissiez avoir des séances de chat de génération (RAG) QNA / récupération (RAG) avec vos données stockées.
Le modèle OpenAI gpt-4-1106-preview
est utilisé pour prendre en charge plus facilement des contextes plus importants, mais n'hésitez pas à échanger cela contre un autre modèle.
Documentation complète: https://ts.deadbits.ai
Référentiel de clones
git clone https://github.com/deadbits/trs.git
cd trs
Configuration de l'environnement virtuel Python
python3 -m venv venv
source venv/bin/activate
Installez les exigences Python
pip install -r requirements.txt
Définissez votre clé API Openai:
export OPENAI_API_KEY= " sk-... "
Exécuter l'application de ligne de commande
python trs-cli.py --chat
Définissez votre clé API Openai:
.streamlit/secrets.toml
Exécuter l'interface Web Streamlit
streamlit run trs-streamlit.py
Important
Selon la documentation de Streamlit, "Streamlit exécute votre script de haut en bas à chaque interaction utilisateur ou changement de code." Cela peut entraîner une utilisation élevée de la mémoire en raison de la charge de ChromAdB dans la mémoire encore et encore. À l'heure actuelle, la CLI est le mode d'interaction recommandé.
Plus de captures d'écran sont disponibles ici.
Commande | Description |
---|---|
!summ | Générez un résumé du contenu de l'URL, notamment des plats clés, un paragraphe de résumé, des TTPs Mitre et un Mindmap de sirène pour un aperçu du rapport. |
!detect | Identifiez toutes les opportunités de détection de menace dans le contenu de l'URL. |
!custom | Remplissez le contenu de l'URL et traitez-le avec une invite personnalisée. |
Toutes les autres entrées | Exécutez le pipeline de chiffon avec entrée comme requête |
Avant de pouvoir utiliser la fonctionnalité de chat, vous devez d'abord traiter une URL avec l'une des commandes ci-dessus afin que la base de données vectorielle ait un certain contexte à utiliser.
Toute entrée qui n'est pas une !command
Sera envoyée au pipeline de chiffon.
Si la réponse n'est pas disponible dans le contexte, vous n'obtiendrez pas de réponse.
? >> Summarize the LemurLoot malware functionality
2023-10-14 14:51:51.140 | INFO | trs.vectordb:query:84 - Querying database for: Summarize the LemurLoot malware functionality
2023-10-14 14:51:51.840 | INFO | trs.vectordb:query:90 - Found 3 results
2023-10-14 14:51:51.841 | INFO | trs.llm:qna:98 - sending qna prompt
2023-10-14 14:51:51.841 | INFO | trs.llm:_call_openai:41 - Calling OpenAI
2023-10-14 14:51:51.854 | INFO | trs.llm:_call_openai:59 - token count: 2443
? >>
The LemurLoot malware has several functionalities. It uses the header field “X-siLock-Step1’ to receive commands from the operator, with two well-defined commands: -1 and -2.
Command “-1” retrieves Azure system settings from MOVEit Transfer and performs SQL queries to retrieve files. Command “-2” deletes a user account with the LoginName and
RealName set to "Health Check Service". If any other values are received, the web shell opens a specified file and retrieves it. If no values are specified, it creates the
“Health Check Service” admin user and creates an active session.
Les modèles d'invite personnalisés peuvent être enregistrés dans les prompts/
répertoires en tant que fichiers texte avec l'extension .txt
. La commande !custom
recherchera les invites par nom de base de fichiers dans ce répertoire, ajoutera le contenu texte de l'URL au modèle et l'envoyez au LLM pour le traitement.
Les invites personnalisées doivent inclure la chaîne de format {document}
afin que le contenu du texte d'URL puisse être ajouté.
L'application Streamlit offre des fonctionnalités que l'outil CLI ne fait pas, notamment:
Afficher l'historique de l'invite et de la réponse
Afficher les enregistrements de la base de données
Ce projet est concédé sous licence Apache 2.0 - voir le fichier Licence.md pour plus de détails.