
모든 포트를 스캔하고 SSH 배너를 검증하며 인증 방법, 취약한 암호화, Terrapin 취약점, 그리고 호스트 및 CIDR 범위 전반에 걸친 재사용된 호스트 키를 감사하는 병렬 SSH 서비스 검색 및 보안 감사 도구입니다.
sshfinder는 하나 또는 여러 대상에서 열린 SSH 서비스를 발견하는 빠르고 안정적인 도구입니다. 열린 TCP 포트를 스캔한 다음 실제로 SSH를 사용하는 포트를 확인하며, 두 단계를 동시에 실행하여 속도를 높입니다.
10.0.0.0/24)를 스캔하거나 파일에서 불러올 수 있습니다.connect — 권한이 필요 없는 휴대용 TCP connect 스캔(기본값).syn — Scapy를 통한 하프 오픈 SYN 스캔(더 빠르며 root 필요).--audit) — 펜테스터를 위해 탐색을 공격 표면 인텔리전스로 전환합니다: 허용된 인증 방법을 열거하고(비밀번호 인증 플래그 지정), 제공된 KEX/암호/MAC/호스트 키 알고리즘을 나열하고 취약하거나 더 이상 사용되지 않는 알고리즘에 플래그를 지정하며, Terrapin(CVE-2023-48795) 을 탐지하고, 대상 간 공유 호스트 키를 상호 연관시켜 복제되거나 로드 밸런싱된 인프라를 드러냅니다.[SSH] / [not ssh]로 표시되어 열린 포트가 SSH 포트로 오인되지 않습니다.host:port 형식으로 출력되므로 여러 호스트를 스캔할 때 어떤 결과가 어떤 대상에 속하는지 항상 명확합니다.--json, 선택적으로 파일에 기록할 수 있습니다.git clone https://github.com/kabiri-labs/sshfinder.git
cd sshfinder
# paramiko 설치(권장: 전체 --audit 심층 검사 및
# --validate paramiko 활성화):
pip install -r requirements.txt
# 선택 사항, 하프 오픈 SYN 스캔 전용(root 필요):
pip install scapy>=2.5
핵심 connect 스캔, 배너 검증 및 --audit의 의존성 없는 부분(알고리즘 인벤토리, 취약 암호 플래그, Terrapin)은 타사 패키지 없이 작동합니다. paramiko는 호스트 키 지문, 인증 방법 열거 및 공유 키 상호 연관을 활성화합니다.
Python 3.9+ 가 필요합니다.
python sshfinder.py [targets ...] [options]
느린 스캔에 대한 참고. 방화벽으로 보호되거나 연결할 수 없는 호스트를 대상으로 전체
1-65535범위를 스캔하는 것은 본질적으로 느립니다. 모든 필터링된 포트는 타임아웃을 기다려야 하기 때문입니다. 진행 표시기가 여전히 작동 중임을 보여주며, Ctrl+C로 즉시 중지할 수 있습니다. 더 빠르게 하려면 포트 범위를 좁히거나(예:-p 22,2222), 타임아웃을 낮추거나(-t 1), 동시성을 높이십시오(-w).
auto는 root로 실행 중이고 Scapy가 설치된 경우 SYN 스캔을 선택하고, 그 외에는 권한이 필요 없는 connect 스캔으로 대체됩니다.
일반 SSH 포트에서 단일 호스트 스캔:
python sshfinder.py 192.168.1.1 -p 22,2222
전체 서브넷을 스캔하고 JSON 출력:
python sshfinder.py 10.0.0.0/24 -p 22,2222 --json -o results.json
빠른 SYN 스캔으로 파일에서 여러 대상 스캔(root로 실행):
sudo python sshfinder.py -iL targets.txt --scan-method syn
전체 핸드셰이크로 SSH를 엄격하게 검증:
python sshfinder.py example.com -p 22 --validate paramiko
서브넷 전체에서 SSH 공격 표면 감사(인증 방법, 취약 암호, Terrapin, 공유 호스트 키):
python sshfinder.py 10.0.0.0/24 -p 22,2222 --audit
감사 출력 예:
=== 10.0.0.5 ===
open: 10.0.0.5:22
SSH 10.0.0.5:22 (SSH-2.0-OpenSSH_7.4)
host key: ssh-ed25519 SHA256:T/ZM4jOL4amTsO5K3AaCdg2...
auth: publickey, password [!] password auth enabled
[!] Terrapin (CVE-2023-48795): VULNERABLE
[!] weak ciphers: aes128-cbc
Shared SSH host keys (possible shared/cloned hosts):
SHA256:T/ZM4jOL4amTsO5K3AaCdg2...
-> 10.0.0.5:22, 10.0.0.9:22
알고리즘 인벤토리, 취약 암호 플래그 및 Terrapin 검사는 의존성 없이 작동합니다. 호스트 키 지문, 인증 방법 열거 및 공유 키 상호 연관은 Paramiko를 사용합니다(pip install paramiko).
pip install -r requirements-dev.txt
pytest
소유하거나 테스트할 명시적 권한이 있는 시스템만 스캔하십시오. 승인되지 않은 스캔은 관할 지역에서 불법일 수 있습니다.
| 옵션 | 설명 |
|---|
targets | 하나 이상의 IP, 호스트명 또는 CIDR 네트워크. |
-iL, --target-file FILE | 파일에서 대상을 읽습니다(줄당 하나, # 주석 허용). |
-p, --ports SPEC | 스캔할 포트(예: 22,80,1000-2000)(기본값: 1-65535). |
--scan-method {auto,connect,syn} | 스캔 백엔드(기본값: auto). |
--validate {banner,paramiko,none} | SSH 검증 전략(기본값: banner). |
--audit | 각 SSH 서비스 감사(알고리즘, 호스트 키, 인증 방법, Terrapin, 공유 키 상호 연관). |
-t, --timeout SECONDS | 연결당 타임아웃(기본값: 2.0). |
-w, --workers N | 호스트당 동시 프로브 수(기본값: 200). |
--host-concurrency N | 병렬로 스캔되는 호스트 수(기본값: 16). |
-r, --retries N | 타임아웃된 프로브 재시도 횟수(기본값: 0). |
--json | 결과를 JSON으로 출력합니다. |
-o, --output FILE | stdout 대신 파일에 결과를 기록합니다. |
--no-progress | 실시간 진행 표시기를 비활성화합니다. |
-v | 자세한(디버그) 로깅. |
-q, --quiet | 진행 상황 및 정보 로깅을 억제합니다. |