
攻撃的セキュリティ知識のための個人用RAGシステム
オフェンシブセキュリティナレッジのための個人用オフラインRAGシステム。あなたのwriteup、ラボの解答、バグバウンティレポート、セキュリティブログを取り込み、エンゲージメント中に自然言語でクエリできます。クラウド不要、SaaS不要、あなたの知識はあなたのものです。
ZETSUは、蓄積した知識をクエリ可能なアシスタントに変えます。マークダウンファイルをgrepしたり、certipyコマンドがどのwriteupにあったかを覚えたりする代わりに、自然に質問できます。
how do i escalate with SeImpersonatePrivilege
what did i do after getting ADFS access
sliver socks5 pivot setup
explain ESC8 vs ESC4
まず実際のノートから情報を取得し、その後、一般的なインターネット知識ではなく、あなたが文書化した内容に基づいた回答を生成します。


Ctrl+Mで切り替え。~/.zetsu/history/YYYY-MM-DD.jsonに保存され、/historyで閲覧可能。git clone https://github.com/chaelsoo/zetsu
cd zetsu
pip install -r requirements.txt
APIキーを設定:
cp .env.example .env
# .envを編集してキーを追加
1. writeupを追加
.mdファイルをdocs/に配置。Notionのエクスポート、Obsidianノート、ブログのエクスポートなど、どんなマークダウンでも動作します。
2. config.tomlでソースを設定
[llm]
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
[[sources]]
type = "markdown_dir"
path = "./docs"
name = "my_writeups"
extract = "farr"
enabled = true
3. インジェスト
python zetsu.py ingest
4. 使用する
python zetsu.py tui # ターミナルUI
python zetsu.py web # ブラウザでlocalhost:8000
python zetsu.py ask "how do i abuse SeImpersonatePrivilege"
python zetsu.py ingest # 有効なソースをインジェスト
python zetsu.py ingest --force # すべてを消去して再構築
python zetsu.py ingest --dry-run # LLM呼び出しなしで見積もり
python zetsu.py ingest --all-sources # 有効フラグに関わらず全ソースを有効化
python zetsu.py tui # ターミナルUI
python zetsu.py web # Web UI
python zetsu.py ask "query" # ワンショットCLI
python zetsu.py ask "query" --style concept
python zetsu.py stats # ベクトルストアの統計
farr: LLMが攻撃ステップを構造化JSON(Finding、Action、Reasoning、Result)として抽出。明確な攻撃チェーンを持つwriteupに最適。farr+narrative: farrに加えて、著者の推論を捉えた散文要約を追加。思考プロセスが重要なブログに最適。headers: LLMなし。ヘッダーで分割し、そのまま保持。コマンドリファレンスやツールドキュメントに最適。config.tomlで設定。インジェスト(一括抽出)とクエリ(生成)で別々のバックエンド:
[llm] # クエリ時
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
[ingest] # インジェスト時
backend = "openai"
openai_model = "deepseek-chat"
base_url = "https://api.deepseek.com/v1"
workers = 8 # FARR抽出時の並列ファイル数
サポートされているバックエンド: anthropic、openai(OpenAI互換API全般)、ollama。
[!IMPORTANT] デフォルトではChromaDBがローカルで実行され、ベクトルインデックス全体がRAMに読み込まれます。大規模なコーパス(10kチャンク以上)やメモリ制約のあるマシンでは、ChromaDBをリモートサーバーとして実行することを強く推奨します。セットアップについてはChromaDBサーバードキュメントを参照してください。ZETSUでのリモートサポートは計画中です。
910の質問で評価(ADCS、Kerberos、AD列挙、MSSQL、Sliver C2、権限昇格、Web攻撃、資格情報、横移動、クラウド/Entra ID、OPSEC、ツールの12カテゴリをカバー)。
| 指標 | 結果 |
|---|---|
| 回答された質問 | 910 / 910 (100%) |
| コード/コマンドを含む回答 | 842 / 910 (93%) |
| コンテキスト不足(モデルが情報不足を認めた) | 66 / 910 (7.3%) |
| 平均取得時間 | 68ms |
回答に貢献した主要ソース: 個人のHTB writeup、dirkjanm blog、shenaniganslabs research、HackTricks ADCS、Sliver Wiki、netexecチートシート。
簡単に言えば、RAGに取り込ませたい優れた構造化リソースを追加するようにしてください。このプロジェクトは100%知識ベースの使用に焦点を当てており、LLMのメモリや学習した知識に依存しません。
完全な評価データセットと結果はeval/にあります。
近いうちに、使用方法とその効果についてブログで文書化する予定です。お楽しみに。
| キー | アクション |
|---|
Enter | クエリ送信 |
Ctrl+M | オペレーターモード / コンセプトモードを切り替え |
Ctrl+Y | 最後の応答をクリップボードにコピー |
Ctrl+L | セッションをクリア |
Ctrl+C | 終了 |
/help | コマンドを表示 |
/stats | ベクトルストア+履歴の統計 |
/history | 今日の過去のクエリ |
/clear | セッションをクリア |
| タイプ | 使用目的 | 抽出モード |
|---|
markdown_dir | あなたのwriteup、ノート | farr |
markdown_file | 単一のマークダウンファイル | farr |
url | ツールWiki、リファレンスページ | headers |
atom | フィードを持つセキュリティブログ | farr+narrative |
| 平均総応答時間 | 3.8s |