
高性能な非同期SCADA/ICSスキャナ
ネットワーク上の産業用制御システムを識別し、フィンガープリントを取得するための、高性能な非同期SCADA/ICSスキャナーです。脆弱性を検出し、ベンダー/製品を特定して、包括的なリスクレポートを生成します。
警告: 許可されたセキュリティ評価専用です。無許可のスキャンは法律および規制に違反する可能性があります。
# リポジトリをクローン
git clone https://github.com/geeknik/scada-scanner.git
cd scada-scanner
# 依存関係をインストール
pip install -r requirements.txt
# 単一ターゲットのスキャン
python scada_scanner.py -t 192.168.1.100 -o results.json
# CIDR範囲のスキャン
python scada_scanner.py -c 192.168.1.0/24 -o results.json
# ファイルから複数のCIDR範囲をスキャン
python scada_scanner.py -f networks.txt -o results.json
# JSONの代わりにCSVをエクスポート
python scada_scanner.py -t 192.168.1.100 --format csv -o results.csv
# 除外リストを尊重
python scada_scanner.py -c 10.0.0.0/24 --exclude exclude.txt
# 予期しないプロトコル/ポートの組み合わせを強調表示(ログと検出結果に記録)
python scada_scanner.py -t 203.0.113.10 -o results.json
# ProjectDiscovery vulnxによるライブ脆弱性エンリッチメントを有効化(vulnx + PDCP APIキーが必要)
vulnx auth
python scada_scanner.py -t 192.168.1.100 --vulnx --vulnx-limit 3
Required arguments (one of):
-t, --target 単一ターゲットのIPアドレス
-c, --cidr スキャンするCIDR範囲(例: 192.168.1.0/24)
-f, --cidr-file CIDR範囲を含むファイル(1行に1つ)
Optional arguments:
-o, --output 出力ファイル(デフォルト: scan_results.json)
-r, --rate 1秒あたりの最大リクエスト数(デフォルト: 10.0)
--timeout 接続タイムアウト(秒)(デフォルト: 5)
--max-concurrent 最大同時接続数(デフォルト: 50)
--safe-mode セーフモードを有効化(非侵襲的なスキャンのみ)
--exclude スキャンから除外するIPを含むファイル
-v, --verbosity 詳細度レベル: 0=静か、1=通常、2=デバッグ
--format 出力形式: jsonまたはcsv(デフォルト: json)
--safe-modeフラグで有効化します{
"scan_summary": {
"timestamp": "2025-02-27T14:02:33.456789",
"total_hosts_scanned": 256,
"hosts_with_scada": 12,
"total_vulnerabilities": 37,
"high_risk_hosts": 5
},
"hosts": [
{
"ip": "192.168.1.100",
"ports": [
{
"port": 502,
"protocol": "MODBUS",
"fingerprint": {
"vendor": "Schneider",
"product": "M340",
"version": "2.6.0",
"risk_score": 0.75,
"evidence": [
"response:00010000000101",
"port_hint:502"
],
"findings": [
"Detected MODBUS protocol (confidence: 0.55)",
"Identified vendor: SCHNEIDER, product: M340",
"Overall risk assessment: High (score: 0.75)"
],
"unexpected_port": false
}
}
],
"vulnerabilities": [
{
"cve_id": "CVE-2025-55221",
"description": "Socomec DIRIS Digiware M-70 DoS via crafted Modbus TCP/RTU over TCP packets",
"severity": "high",
"source": "local_db"
}
]
}
]
}
このツールは、許可されたセキュリティ評価のみを目的としています。無許可のスキャンは以下に違反する可能性があります:
このスキャナーには、中核プロトコル用の小さな組み込み脆弱性データベースが同梱されています(VULNERABILITY_DATABASEを参照)。より新しい情報を得るには、オプションの ProjectDiscovery vulnx 統合を有効にできます:
vulnxをインストールし、PDCP APIキーを設定します(vulnx auth)。--vulnxを指定して実行します(必要に応じて--vulnx-limitと--vulnx-timeoutを調整)。source: "vulnx"とマークされます。vulnxがない場合や到達できない場合は、スキャナーはローカルデータベースに自動的にフォールバックします。ローカルデータベースのエントリ(このリポジトリのスナップショットに収録)は、中核プロトコルに対するvulnx検索から定期的に更新され、source: "local_db"のタグが付けられます。
ユニットテストスイートを実行します:
pytest
スキャナーはモジュール式に設計されており、新しいプロトコルのサポートを簡単に追加できます:
SCADA_PORTSリストにプロトコルの詳細を追加するPROTOCOL_SIGNATURESディクショナリにシグネチャパターンを追加するVULNERABILITY_DATABASEに脆弱性情報を追加するコントリビューションを歓迎します!以下の手順に従ってください:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)このプロジェクトはMITライセンスの下で提供されています。詳細はLICENSEファイルを参照してください。
本ソフトウェアは、明示または黙示を問わず、いかなる種類の保証もなく「現状のまま」提供されます。著作者は、本ソフトウェアの使用に起因するいかなる損害または損失についても、一切の責任を負いません。