
고성능 비동기 SCADA/ICS 스캐너
네트워크 전반의 산업 제어 시스템을 식별하고 핑거프린팅하기 위한 고성능 비동기 SCADA/ICS 스캐너입니다. 취약점을 탐지하고 공급업체/제품을 식별하며 종합적인 위험 보고서를 생성합니다.
경고: 승인된 보안 평가에만 사용하세요. 무단 스캐닝은 법률 및 규정을 위반할 수 있습니다.
# Clone the repository
git clone https://github.com/geeknik/scada-scanner.git
cd scada-scanner
# Install dependencies
pip install -r requirements.txt
# Single target scan
python scada_scanner.py -t 192.168.1.100 -o results.json
# CIDR range scan
python scada_scanner.py -c 192.168.1.0/24 -o results.json
# Multiple CIDR ranges from file
python scada_scanner.py -f networks.txt -o results.json
# Export CSV instead of JSON
python scada_scanner.py -t 192.168.1.100 --format csv -o results.csv
# Respect an exclude list
python scada_scanner.py -c 10.0.0.0/24 --exclude exclude.txt
# Highlight unexpected protocol/port combos (logged and in findings)
python scada_scanner.py -t 203.0.113.10 -o results.json
# Enable live vuln enrichment via ProjectDiscovery vulnx (requires vulnx + PDCP API key)
vulnx auth
python scada_scanner.py -t 192.168.1.100 --vulnx --vulnx-limit 3
Required arguments (one of):
-t, --target Single target IP address
-c, --cidr CIDR range to scan (e.g., 192.168.1.0/24)
-f, --cidr-file File containing CIDR ranges (one per line)
Optional arguments:
-o, --output Output file (default: scan_results.json)
-r, --rate Max requests per second (default: 10.0)
--timeout Connection timeout in seconds (default: 5)
--max-concurrent Maximum concurrent connections (default: 50)
--safe-mode Enable safe mode (non-intrusive scans only)
--exclude File containing IPs to exclude from scan
-v, --verbosity Verbosity level: 0=quiet, 1=normal, 2=debug
--format Output format: json or csv (default: 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 파일을 참조하세요.
본 소프트웨어는 "있는 그대로" 제공되며, 명시적이든 묵시적이든 어떠한 종류의 보증도 없습니다. 작성자는 본 소프트웨어 사용으로 인해 발생하는 모든 손해 또는 손실에 대한 책임을 부인합니다.