trs
aprovecha Openai y ChromadB para analizar y chatear con informes y blogs de inteligencia de amenazas cibernéticas.
Proporcione una URL de informe de amenaza a los comandos preconstruidos para su resumen, extracción de TTP de inglete, creación mental e identificación de oportunidades de detección, o ejecute sus propias indicaciones personalizadas contra el contenido de texto de URL.
Cada texto de URLS se almacena en una base de datos de vectores de Chroma para que pueda tener sesiones de chat de generación (trapo) de GNA / recuperación de QNA con sus datos almacenados.
El modelo OpenAI gpt-4-1106-preview
se usa para admitir contextos más grandes más fácilmente, pero no dude en intercambiar esto por otro modelo.
Documentación completa: https://trs.deadbits.ai
Repositorio de clon
git clone https://github.com/deadbits/trs.git
cd trs
Configurar el entorno virtual de Python
python3 -m venv venv
source venv/bin/activate
Instalar requisitos de Python
pip install -r requirements.txt
Establezca su tecla API OpenAI:
export OPENAI_API_KEY= " sk-... "
Ejecutar la aplicación de línea de comandos
python trs-cli.py --chat
Establezca su tecla API OpenAI:
.streamlit/secrets.toml
Ejecutar la interfaz web Streamlit
streamlit run trs-streamlit.py
Importante
Según la documentación de Streamlit, "Streamlit ejecuta su script de arriba a abajo en cada interacción o cambio de código del usuario". Esto puede conducir a un alto uso de la memoria debido a que ChromAdB se carga en la memoria una y otra vez. En este momento, la CLI es el modo de interacción recomendado.
Aquí hay más capturas de pantalla disponibles.
Dominio | Descripción |
---|---|
!summ | Genere un resumen del contenido de URL que incluya comida para llevar clave, párrafo de resumen, TTP de inglete y Mermaid MindMap para una descripción general del informe. |
!detect | Identifique cualquier oportunidad de detección de amenazas dentro del contenido de URL. |
!custom | Obtenga el contenido de URL y procese con un mensaje personalizado. |
Todas las demás entradas | Ejecutar el canal de trapo con entrada como consulta |
Antes de que pueda usar la funcionalidad de chat, primero debe procesar una URL con uno de los comandos anteriores para que la base de datos Vector tenga algún contexto para usar.
Cualquier entrada que no sea un !command
se enviará a la tubería RAG.
Si la respuesta no está disponible en el contexto, no obtendrá una respuesta.
? >> 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.
Las plantillas de solicitud personalizadas se pueden guardar en las prompts/
directorio como archivos de texto con la extensión .txt
. El comando !custom
Buscará indicaciones por archivo de archivo en ese directorio, agregue el contenido de texto de la URL a la plantilla y lo enviará a la LLM para su procesamiento.
Las indicaciones personalizadas deben incluir la cadena de formato {document}
para que se pueda agregar el contenido de texto de URL.
La aplicación Streamlit ofrece alguna funcionalidad que la herramienta CLI no, incluyendo:
Ver historial de respuesta y respuesta
Ver registros de base de datos
Este proyecto tiene licencia bajo la licencia Apache 2.0; consulte el archivo License.md para más detalles.