コンテンツにスキップ

BlacksmithAI

  • Linux、macOS、またはWSL2が動作するWindows
  • Docker 20.10+およびDocker Compose
  • Python 3.12+
  • Node.js 18+ (Web UI用)
  • 4GB+のRAM (8GB推奨)

uv (Pythonパッケージマネージャー) のインストール

Section titled “uv (Pythonパッケージマネージャー) のインストール”
# macOS & Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# インストール確認
uv --version
# Ubuntu/Debian
sudo apt update && sudo apt install -y docker.io docker-compose

# macOS
brew install --cask docker

# 確認
docker --version && docker compose version

Node.js & pnpm のインストール (Web UI のみ)

Section titled “Node.js & pnpm のインストール (Web UI のみ)”
# Ubuntu/Debian - Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# macOS - Node.js
brew install node@18

# pnpmのインストール
npm install -g pnpm
# または
corepack enable && corepack prepare pnpm@latest --activate
# リポジトリのクローン
git clone https://github.com/yohannesgk/blacksmith.git
cd blacksmith

# Python依存関係のインストール
cd blacksmithAI/blacksmithAI
uv sync

# mini-kali Dockerイメージのビルド
docker compose up -d

# オプション: フロントエンド依存関係のインストール
cd ../frontend && pnpm install
# 環境テンプレートのコピー
cp blacksmithAI/.env.example blacksmithAI/.env

# .envファイルの編集
nano blacksmithAI/.env
# .envに追加
OPENROUTER_API_KEY=your-openrouter-api-key-here
# VLLMのインストール
cd blacksmithAI/blacksmithAI
uv add vllm huggingface_hub

# VLLMサーバーの起動
vllm serve mistralai/Devstral-2-123B-Instruct-2512 \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.75

blacksmithAI/config.jsonを編集:

{
  "defaults": {
    "provider": "openrouter"
  },
  "providers": {
    "openrouter": {
      "base_url": "https://openrouter.ai/api/v1/chat/completions",
      "default_model": "mistralai/devstral-2512:free",
      "default_embedding_model": "openai/text-embedding-3-small",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3,
        "max_tokens": null
      }
    },
    "vllm": {
      "base_url": "http://localhost:8000/v1/chat/completions",
      "default_model": "mistralai/devstral-2512",
      "default_embedding_model": "text-embedding-3-small",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3
      }
    }
  }
}
# config.jsonのprovidersセクションに追加
"openai": {
  "base_url": "https://api.openai.com/v1/chat/completions",
  "default_model": "gpt-4-turbo",
  "default_embedding_model": "text-embedding-3-small"
}

# .envに追加
OPENAI_API_KEY=your-openai-key

# defaultsを更新
"defaults": { "provider": "openai" }

CLIモード (ターミナルインターフェース)

Section titled “CLIモード (ターミナルインターフェース)”
# ターミナル1: mini-kaliコンテナを起動
cd blacksmithAI/blacksmithAI
docker compose up -d

# ターミナル2: BlacksmithAI CLIを実行
cd blacksmithAI/blacksmithAI
uv run main.py

# またはMakefileショートカットを使用
make start-cli

Web UIモード (3つのターミナルが必要)

Section titled “Web UIモード (3つのターミナルが必要)”
# ターミナル1: mini-kali Dockerコンテナを起動
cd blacksmithAI/blacksmithAI
docker compose up -d

# ターミナル2: フロントエンドを起動 (blacksmithAI/frontendディレクトリから)
pnpm build && pnpm start

# ターミナル3: LangGraph開発サーバーを起動 (blacksmithAI/blacksmithAIから)
uv run langgraph dev

# http://localhost:3000でアクセス
# コンテナの起動
docker compose up -d

# ログを表示
docker logs mini-kali-slim

# コンテナの停止
docker compose down

# コンテナの再起動
docker compose restart

# すべてのコンテナを削除
docker compose down -v
  • 役割: 中央コマンド制御
  • 機能: ミッション計画、タスク委任、レポート生成
  • 利用可能なツール: 計画ツール、ファイルシステムツール

Reconエージェント (攻撃表面マッピング)

Section titled “Reconエージェント (攻撃表面マッピング)”
  • 目的: パッシブおよびアクティブな情報収集
  • ツール: assetfinder、subfinder、whois、dig、nslookup、hping3、dnsrecon
  • 出力: DNSレコード、サブドメイン、ネットワークトポロジー

スキャン/列挙エージェント (詳細検査)

Section titled “スキャン/列挙エージェント (詳細検査)”
  • 目的: ユーザー列挙、APIプローブ、バージョン発見
  • ツール: nmap、masscan、enum4linux-ng、nikto、whatweb、fingerprintx、gobuster、wpscan
  • 出力: オープンポート、サービス、テクノロジー、エンドポイント

脆弱性分析エージェント (リスク評価)

Section titled “脆弱性分析エージェント (リスク評価)”
  • 目的: サービスをCVEにマッピング、リスク優先順位付け
  • ツール: nuclei、sslscan
  • 出力: 重大度と悪用可能性スコアを含む脆弱性リスト

Exploitationエージェント (PoC実行)

Section titled “Exploitationエージェント (PoC実行)”
  • 目的: 制御された悪用による脆弱性の検証
  • ツール: sqlmap、hydra、medusa、ncrack、カスタムスクリプト (Python/Go/Perl/Ruby)
  • 出力: 証拠付きの侵害証明

Post-Exploitationエージェント (影響評価)

Section titled “Post-Exploitationエージェント (影響評価)”
  • 目的: ブラスト半径とピボット機会の評価
  • ツール: netcat、socat、SSHトンネリング、impacket
  • 出力: 横移動パス、認証情報インベントリ、ビジネスインパクト

スキャンモードとワークフロー

Section titled “スキャンモードとワークフロー”
# 一般的なワークフローシーケンス
1. ターゲット指定 (ドメイン/IP)
2. Orchestratorが偵察フェーズを開始
3. Reconエージェントが発見: サブドメイン、DNSレコード、メールサーバー
4. 結果をScan/Enumエージェントに供給
# 完全な評価ワークフロー
Orchestrator (計画)

Reconエージェント (攻撃表面) → 出力: サービス & テクノロジー

Scan/Enumエージェント (詳細検査) → 出力: ポート & バージョン

Vuln Analysisエージェント (リスクマッピング) → 出力: スコア付きCVEリスト

Exploitエージェント (PoC検証) → 出力: 機能する悪用

Post-Exploitエージェント (影響) → 出力: 横移動パス

Orchestrator (修復付き最終レポート)
# ターゲットサービスを脆弱性分析に直接指定
1. サービス情報を提供 (バージョン、ポート)
2. Vuln Analysisエージェントがを CVEにマップ
3. Exploitエージェントが高優先度の脆弱性をテスト
ツールコマンド目的
assetfinderassetfinder target.comサブドメイン発見
subfindersubfinder -d target.comサブドメイン列挙
whoiswhois target.comドメイン情報ルックアップ
digdig target.comDNSレコードクエリ
dnsrecondnsrecon -d target.comDNS列挙
hping3hping3 -p 80 target.comネットワークスキャン
ツールコマンド目的
nmapnmap -sV target.comポートスキャン & バージョン検出
masscanmasscan 0.0.0.0/0 -p80,443高速ポートスキャン
niktonikto -h target.comWebサーバー脆弱性スキャン
gobustergobuster dir -u http://target.com -w wordlist.txtディレクトリ/DNSブルートフォース
wpscanwpscan --url target.comWordPress脆弱性スキャン
whatwebwhatweb target.comWebテクノロジー識別
ツールコマンド目的
nucleinuclei -target target.com高速脆弱性スキャン
sslscansslscan target.com:443SSL/TLS構成分析
ツール目的
sqlmap自動化されたSQLインジェクションテスト
hydraパスワードブルートフォース
medusa並列ネットワークログイン監査
ncrackネットワーク認証クラッキング
カスタムスクリプトPython/Go/Perl/Ruby悪用開発
ツール目的
netcatネットワークデバッグ & データ転送
socat多目的リレー
ssh -DSOCKSプロキシトンネリング (ピボット用)
impacketWindowsプロトコルツール (psexec、secretsdump)
# Orchestratorは以下を含む構造化レポートを生成します:
- エグゼクティブサマリー
- 重大度評価付き発見事項
- 証拠とPoC詳細
- 影響を受けるシステムおよびサービス
- 修復ガイダンス
- ビジネスインパクト評価
{
  "mission_name": "侵入テスト - Example Corp",
  "target": "example.com",
  "findings": [
    {
      "vulnerability": "ログインフォームのSQL インジェクション",
      "severity": "CRITICAL",
      "affected_service": "Webアプリケーション v2.1",
      "evidence": "SELECT version()がデータベースバージョンを返す",
      "remediation": "プリペアドステートメント、入力検証を使用"
    }
  ],
  "timeline": "2025-03-10T14:30:00Z",
  "tested_systems": ["web-server", "api-gateway", "database"]
}

カスタムLLMプロバイダーの追加

Section titled “カスタムLLMプロバイダーの追加”
{
  "providers": {
    "custom-provider": {
      "base_url": "https://your-api-endpoint.com/v1/chat/completions",
      "default_model": "your-model-name",
      "default_embedding_model": "embedding-model",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3,
        "max_tokens": null
      }
    }
  }
}
# 小型モデル (7B) - より高速、メモリが少ない
vllm serve mistralai/Mistral-7B-Instruct-v0.2 \
  --host 0.0.0.0 --port 8000 --gpu-memory-utilization 0.75

# 大型モデル (123B) - より高機能
vllm serve mistralai/Devstral-2-123B-Instruct-2512 \
  --host 0.0.0.0 --port 8000 --max-model-len 8192

# HuggingFaceのカスタムモデル
uv run hf auth login  # 最初にHFにログイン
vllm serve meta-llama/Llama-2-7b-chat-hf \
  --host 0.0.0.0 --port 8000
# セットアップ & インストール
make help              # すべてのコマンドを表示
make setup            # 完全な初期セットアップ
make install          # Python依存関係のみ
make frontend-install # フロントエンド依存関係

# Docker管理
make docker-build     # mini-kaliイメージをビルド
make docker-up        # コンテナを起動
make docker-down      # コンテナを停止
make docker-logs      # ログを表示

# VLLMローカルLLM
make vllm-install     # VLLMをインストール
make vllm-serve       # VLLM (123B) を起動
make vllm-serve-small # VLLM (7B) を起動

# BlacksmithAIの実行
make start-cli        # CLIモード
make start-ui         # Web UI (セットアップを表示)
make start-all        # クイックスタート CLI

# ユーティリティ
make status           # Dockerコンテナステータス
make check-deps       # 依存関係を確認
make check-config     # 構成を確認
make clean            # コンテナをクリーン
make stop             # すべてのサービスを停止
# 外部ツールでデータを収集
assetfinder -subs-only target.com > subdomains.txt

# BlacksmithAIに供給
# エージェントは発見されたサブドメイン上で対象スキャンを実行します
  • Nmapの出力 → サービスマッピング用にVuln Analysisに供給
  • サブドメインリスト → Scan/Enumエージェントによるターゲットスキャン
  • APIエンドポイント → 直接脆弱性テスト
  • 認証システム → ブルートフォース & 悪用の試み
# エージェントディレクトリにカスタム悪用スクリプトを記述
# エージェントはPython/Go/Perl/Rubyスクリプトを実行できます
# 例: カスタムSQLインジェクションペイロード
cat > custom_exploit.py << 'EOF'
import sys
target = sys.argv[1]
# カスタム悪用ロジック
EOF

# エージェントが呼び出し: python custom_exploit.py target.com
# スコープを書面で定義
- ターゲットリスト (ドメイン/IP)
- テスト期間
- 認可されたシステム & 攻撃ベクトル
- レポート要件
- 機密データの処理

# 法的認証を確認
- クライアント/所有者からの書面での許可
- 契約規則 (RoE)
- NDAおよび機密契約
# 推奨事項
1. 可能な限り分離されたテスト環境を使用
2. 偵察のみから開始
3. 脆弱性を順次テスト、並列ではなく
4. 明示的な許可なく破壊的ペイロードを避ける
5. 悪用中にシステム動作を監視
6. すべてのアクティビティの詳細なログを維持
# 包括的な調査結果に含める:
- 明確な脆弱性の説明
- CVSS/重大度スコア
- PoC証拠
- 影響を受けるサービスとバージョン
- ビジネスインパクト評価
- 優先順位付けされた修復ステップ
- 悪用のタイムライン
# モデルの選択は結果に影響します:
- より高速なモデル: クイック偵察、基本的なスキャン
- より大きなモデル: 複雑な分析、より良い意思決定
- ローカルVLLM: プライバシー重視、API依存性なし
- OpenRouter: コスト効果的、複数モデルオプション

# 推奨: 複雑な評価にはSonnet/GPT-4を使用
  • テストする前に常に書面での許可を取得
  • 契約規則で範囲を明確に定義
  • 自分が所有している、または明示的な書面による認可を持つシステムのみをテスト
  • 法律違反 (CFAA、GDPR等) は民事/刑事責任を招く可能性があります
# テスト後:
1. 重大度付きのすべての発見を文書化
2. 脆弱性をシステム所有者に通知
3. パッチ適用のための合理的な時間を許可 (通常90日)
4. 脆弱性詳細の機密性を維持
5. サードパーティ製品が影響を受けている場合はベンダーに報告
  • テスト中のデータ抽出を最小化
  • すべてのレポートと証拠を安全に保存
  • 機密の調査結果に暗号化を使用
  • データ保護規制に準拠 (GDPR、HIPAA等)
  • 契約完了後にデータを削除
# コンテナが起動しない
docker ps  # 実行中かを確認
docker logs mini-kali-slim  # エラーを表示

# ポートの競合
lsof -i :9756  # ポート使用状況を確認
docker run -i --rm -p 9757:9756 mini-kali-slim -d  # 別のポートを使用
# OpenRouterの問題
# - APIキーを確認: echo $OPENROUTER_API_KEY
# - ステータスを確認: https://status.openrouter.ai/

# VLLMの問題
curl http://localhost:8000/v1/models  # VLLMが実行中かを確認
# - メモリを確認: free -h
# - GPUが利用可能: nvidia-smi

エージェントのパフォーマンス

Section titled “エージェントのパフォーマンス”
# 応答が遅い
# - config.jsonでより高速なモデルに切り替え
# - システムリソースを確認 (top、htop)

# エージェントがループに引っかかる
# - タスク複雑度を軽減
# - ツール出力のエラーを確認
# - 無限ループについてエージェントログをレビュー

# 依存関係が欠落
cd blacksmithAI/blacksmithAI
uv sync  # 再インストール
  • オープンソース: GPL-3.0-only (コミュニティ使用、変更、再配布)
  • 商用ライセンス: クローズドソース統合用に利用可能
  • 連絡先: yohannesgk@kahanlabs.com