trs
aproveita o OpenAI e o Chromadb para analisar e conversar com relatórios e blogs de inteligência de ameaças cibernéticas.
Forneça um URL de relatório de ameaça para comandos pré-criados para resumo, extração de TTP do MITRE, criação do MindMap e identificação de oportunidades de detecção, ou execute seus próprios prompts personalizados contra o conteúdo de texto dos URLs.
Cada texto de URLS é armazenado em um banco de dados de vetores do Chroma, para que você possa ter sessões de bate-papo de geração de QNA / Recuperação usededed (RAG) com seus dados armazenados.
O modelo OpenAI gpt-4-1106-preview
é usado para suportar contextos maiores com mais facilidade, mas fique à vontade para trocar isso por outro modelo.
Documentação completa: https://trs.deadbits.ai
Repositório de clones
git clone https://github.com/deadbits/trs.git
cd trs
Configurar o ambiente virtual python
python3 -m venv venv
source venv/bin/activate
Instale os requisitos do Python
pip install -r requirements.txt
Defina sua chave de API do OpenAI:
export OPENAI_API_KEY= " sk-... "
Executar o aplicativo de linha de comando
python trs-cli.py --chat
Defina sua chave de API do OpenAI:
.streamlit/secrets.toml
Executar interface da web streamlit
streamlit run trs-streamlit.py
Importante
De acordo com a documentação do Streamlit, "o streamlit executa seu script de cima para baixo em todas as interações do usuário ou alteração de código". Isso pode levar ao alto uso da memória devido ao fato de o Chromadb ser carregado na memória repetidamente. No momento, a CLI é o modo de interação recomendado.
Mais capturas de tela estão disponíveis aqui.
Comando | Descrição |
---|---|
!summ | Gere um resumo do conteúdo da URL, incluindo as principais toca -fores, o parágrafo de resumo, o MITRE TTPS e o Mermaid MindMap para uma visão geral do relatório. |
!detect | Identifique quaisquer oportunidades de detecção de ameaça dentro do conteúdo da URL. |
!custom | Pegue o conteúdo da URL e processe -o com um prompt personalizado. |
Todas as outras entradas | Execute o pipeline RAG com entrada como consulta |
Antes de poder usar a funcionalidade de bate -papo, você deve primeiro processar um URL com um dos comandos acima, para que o banco de dados do vetor tenha algum contexto para usar.
Qualquer entrada que não seja um !command
Será enviada para o pipeline RAG.
Se a resposta não estiver disponível no contexto, você não receberá uma resposta.
? >> 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.
Modelos de prompt personalizados podem ser salvos nos prompts/
diretórios como arquivos de texto com a extensão .txt
. O comando !custom
procurará prompts por arquivo de arquivo nesse diretório, adicionará o conteúdo de texto do URL ao modelo e o enviará ao LLM para processamento.
Os avisos personalizados devem incluir a sequência do formato {document}
para que o conteúdo de texto do URL possa ser adicionado.
O aplicativo Streamlit oferece alguma funcionalidade que a ferramenta da CLI não, incluindo:
Ver o prompt e o histórico de respostas
Ver registros do banco de dados
Este projeto está licenciado sob a licença Apache 2.0 - consulte o arquivo License.md para obter detalhes.