twSecScan

AIによる分析機能を搭載したゼロ依存のセキュリティスキャナー デスクトップアプリケーション。外部ツール不要でHTTPS/SSH/メールなどのセキュリティを検証できる。TWSNMPシリーズプロジェクト。

View on GitHub

twSecScan

twSecScan は、AIによる分析機能を搭載したゼロ依存のセキュリティスキャナー デスクトップアプリケーションです。Wails と Svelte 5 を使って構築されており、nmap や nuclei などの外部ツールを一切必要とせず、クロスプラットフォーム対応の 単一実行ファイル としてフルセキュリティスイートを提供します。

🇬🇧 English README


✨ 主な特徴


🗺️ 概要

twSecScan 概要

twSecScan は、4つのコアモジュール(OSINT・Web・APIセキュリティ・ローカル監査)と、OpenAI・Anthropic・Ollama と連携するAIエンジンを搭載し、5ステップのスキャンワークフローをシングルバイナリで提供します。


🖥️ スクリーンショット

ダッシュボード

ダッシュボード

対象URLまたはIPを入力し、スキャンモジュールを選択して「スキャン開始」をクリックするだけ。

検出結果とAIアドバイス

スキャン結果

スキャン結果は危険度バッジ(緊急 / 高 / 中 / 低 / 情報)とAIが生成した対策方法とともに表示されます。

設定画面

設定

AIプロバイダー(Ollama・OpenAI・Anthropic)、スキャン同時実行数、UI言語を設定できます。


🔍 スキャンモジュール一覧

モジュール 説明 スキャン対象
OSINTスキャン 主要TCPポートスキャン + DNS・WHOIS情報取得 IPアドレス・ドメイン
Webスキャナー リンク切れ・HTTPセキュリティヘッダ・個人情報露出の検出クローラー https://...
アセット監査 設定ファイル・バックアップ・.git・管理画面の露出チェック https://...
入力値検証テスター URLパラメータへのXSS・SQLインジェクションのテスト https://...
技術スタック検出 ヘッダ・HTMLからWebサーバー・CMS・フレームワークを識別 https://...
APIファザー OpenAPI 3.0仕様書を解析し、全エンドポイントを動的にファジング URLまたはローカルファイル
DNS & WHOIS DNSレコード・WHOISレジストラ情報の単独取得 ドメイン
暗号設定検証 SSL/TLS証明書・SSHバナー・メールサーバー暗号化(SMTP/IMAP/POP3)を検査 IPアドレス・ドメイン
ローカルフォルダ監査 ローカルディレクトリを走査してシークレット露出・危険なパーミッション・CIS Controls準拠を確認 ローカルパス

🤖 AI連携

twSecScan はLLMプロバイダーと連携し、すべての検出事項に対して実践的な対策アドバイスを自動生成します。

プロバイダー 設定方法
Ollama(デフォルト) ローカルで動作。エンドポイントURL(デフォルト: http://localhost:11434)とモデル名を設定
OpenAI 設定画面でAPIキーを入力
Anthropic 設定画面でAPIキーを入力

AIプロバイダーが未設定の場合でも、全ての技術的な検出情報は記録されます。


🛠️ 技術スタック

コンポーネント 採用技術
バックエンド Go(ピュアGo、CGO不要)
フロントエンド Wails v2 + Svelte 5 (Runes) + Tailwind CSS
データベース bbolt(組み込みキーバリューストア)
OpenAPIパーサー getkin/kin-openapi
ビルドツールチェーン mise(Go + Node.js + Wails バージョン管理)

🚀 はじめかた

前提条件

ツールチェーンのインストール

# Go、Node.js、Wailsをmiseでインストール
mise install

開発モードで起動

# ホットリロードつきの開発モードで起動
wails dev

ビルド

# 本番用バイナリをビルド
wails build

出力バイナリ(twSecScan)は build/bin/ ディレクトリに生成されます。


📁 プロジェクト構成

twSecScan/
├── main.go                    # Wails エントリポイント
├── app.go                     # バックエンドバインディング(フロント ↔ バック)
├── core/
│   ├── db/bbolt.go            # 永続化ストレージ(bbolt)
│   └── models/models.go       # Config・Scan・Finding 構造体
├── modules/
│   ├── ai/                    # LLMクライアント抽象化(Ollama/OpenAI/Anthropic)
│   ├── apisec/                # OpenAPIパーサー + APIファザー
│   ├── osint/                 # ポートスキャン・DNS/WHOIS・暗号設定検証
│   ├── webscanner/            # クローラー・アセット監査・入力値検証・技術検出
│   └── localaudit/            # ローカルフォルダ CIS監査
├── embed/
│   └── wordlists/             # 埋め込みワードリスト(ディレクトリ・サブドメイン)
└── frontend/src/
    └── App.svelte             # 単一ファイル Svelte 5 UI

📊 レポートエクスポート

スキャン完了後、「スキャン履歴」ビューの エクスポート ボタンをクリックしてレポートを保存できます:


🗄️ データファイルの場所

スキャン履歴・設定は以下のパスに自動作成されるデータベースファイルに保存されます。

OS デフォルトパス
macOS ~/Library/Application Support/twSecScan/twSecScan.db
Windows %APPDATA%\twSecScan\twSecScan.db
Linux ~/.config/twSecScan/twSecScan.db

保存先を変更する(起動パラメータ)

--db-path オプションで任意のパスを指定できます。

# 例: カレントディレクトリに保存
./twSecScan --db-path ./mydata.db

# 例: 絶対パスを指定
./twSecScan --db-path /home/user/backup/scan.db

[!NOTE] ランチャーやアプリパッケージから起動した場合は、自動的にデフォルトパスが使用されます。コマンドラインから起動する場合のみ --db-path が有効です。


⚠️ 免責事項

twSecScan は 許可を得た上でのセキュリティテスト のみを目的としています。自分が所有・管理していないシステムやネットワークをスキャンする場合は、必ず事前に明示的な許可を取得してください。無許可のスキャンは法律や規制に違反する場合があります。


📄 ライセンス

Apache License 2.0