trs
OpenaiとChromadBを活用して、サイバー脅威インテリジェンスレポートやブログを分析およびチャットします。
要約、Miter TTP抽出、マインドマップの作成、検出機会の識別のために、脅威レポートURLを事前に構築したコマンドに提供するか、URLSテキストコンテンツに対して独自のカスタムプロンプトを実行します。
各URLSテキストはChroma Vectorデータベースに保存されているため、QNA /検索された高級(RAG)チャットセッションを保存されたデータと一緒にすることができます。
OpenAIモデルgpt-4-1106-preview
より大きなコンテキストをより簡単にサポートするために使用されますが、これを別のモデルに交換してください。
完全なドキュメント: https://trs.deadbits.ai
クローンリポジトリ
git clone https://github.com/deadbits/trs.git
cd trs
Python仮想環境のセットアップ
python3 -m venv venv
source venv/bin/activate
Python要件をインストールします
pip install -r requirements.txt
Openai APIキーを設定します:
export OPENAI_API_KEY= " sk-... "
コマンドラインアプリケーションを実行します
python trs-cli.py --chat
Openai APIキーを設定します:
.streamlit/secrets.toml
Riremlit Webインターフェイスを実行します
streamlit run trs-streamlit.py
重要
Streamlitのドキュメントごとに、「Riremlitは、すべてのユーザーインタラクションまたはコードの変更でスクリプトを上から下に実行します。」これにより、ChromADBがメモリに何度もロードされるため、高いメモリ使用量につながる可能性があります。現在、CLIは相互作用の推奨モードです。
こちらのスクリーンショットはこちらをご覧ください。
指示 | 説明 |
---|---|
!summ | レポートの概要のために、キーテイクアウト、概要段落、Miter TTPS、人魚マインドマップなど、URLコンテンツの概要を生成します。 |
!detect | URLコンテンツ内の脅威検出の機会を特定します。 |
!custom | URLコンテンツを取得し、カスタムプロンプトで処理します。 |
他のすべての入力 | クエリとして入力されたラグパイプラインを実行します |
チャット機能を使用する前に、最初に上記のコマンドのいずれかを使用してURLを処理する必要があります。これにより、ベクターデータベースに使用するコンテキストがあります。
そうではない入力は!command
ragパイプラインに送信されます。
コンテキストで答えが利用できない場合、答えは得られません。
? >> 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.
カスタムプロンプトテンプレートは、 .txt
拡張子を備えたテキストファイルとしてprompts/
ディレクトリに保存できます。 !custom
コマンドは、そのディレクトリのファイルBasenameによるプロンプトを探し、URLのテキストコンテンツをテンプレートに追加し、処理のためにLLMに送信します。
カスタムプロンプトには、format string {document}
を含める必要があります。これにより、URLテキストコンテンツを追加できます。
RimeLitアプリケーションは、次のことを含むCLIツールにはない機能を提供します。
プロンプトと応答の履歴を表示します
データベースレコードを表示します
このプロジェクトは、詳細については、Apache 2.0ライセンスの下でライセンスされています。ライセンスを参照してください。