Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/mr-whiskerss/ssh-terrapin-prefix-truncation-weakness-cve-2023-48795-checker
ReconnaissanceVulnerability ScannersExploitationInformation GatheringNetwork SecurityPenetration Testing
GitHubmr-whiskerss/ssh-terrapin-prefix-truncation-weakness-cve-2023-48795-checker

SSH-Terrapin-Prefix-Truncation-Weakness-CVE-2023-48795-Checker

저장소 보기
12개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

terrapin_check.py

CVE-2023-48795 — SSH Terrapin 접두사 잘림(prefix truncation) 취약점을 위한 경량 Python 스캐너입니다.

Terrapin은 SSH의 프로토콜 수준 취약점으로, 능동적 중간자(MitM) 공격자가 협상된 확장 정보를 잘라내 연결 보안을 낮출 수 있게 합니다. 가장 치명적인 영향은 ext-info(서버 서명 알고리즘에 사용)와 ping(OpenSSH의 no-auth 확장에 사용)을 비활성화하는 것입니다.


📋 목차

  • 취약점 정보
  • 동작 원리
  • 요구 사항
  • 설치
  • 사용법
  • 출력
  • 취약 조건
  • 해결 방안
  • 면책 조항

취약점 정보

필드세부 내용
CVECVE-2023-48795
CVSS5.9 (Medium)
유형SSH 프로토콜 — 접두사 잘림 / 무결성 우회
공개일2023년 12월
영향 범위OpenSSH < 9.6, PuTTY < 0.80, libssh < 0.10.6 및 기타 다수
참고 자료terrapin-attack.com

이 취약점은 특정 SSH 암호/무결성(MAC) 조합, 특히 chacha20-poly1305와 Encrypt-then-MAC 방식의 CBC 모드 암호에서 발생합니다. 능동적 MitM 공격자가 핸드셰이크 중 SSH 시퀀스 번호를 삽입·제거하여 감지되지 않은 채 협상된 확장 데이터를 잘라낼 수 있습니다.

이 문제를 해결하기 위해 도입된 엄격한 KEX 확장(kex-strict-*[email protected])은 클라이언트와 서버 모두가 광고해야 면역이 됩니다.


동작 원리

이 스크립트는 수동적 배너 수집 및 KEXINIT 구문 분석만 수행합니다. 전체 SSH 핸드셰이크, 인증, 악용은 없습니다.

  1. 대상 SSH 포트에 TCP 연결을 엽니다.
  2. SSH 식별 배너를 교환합니다.
  3. 서버의 SSH_MSG_KEXINIT 패킷을 수신하고 구문 분석합니다.
  4. 광고된 알고리즘 이름 목록에서 취약한 조합을 확인합니다.
  5. strict-KEX 완화 확장의 존재 여부를 확인합니다.
  6. 연결을 종료합니다.

검사는 키 교환 단계 내에서만 완전히 이루어지므로 비간섭적이며, 일반적인 TCP 연결 시도 외에 의미 있는 추적을 남기지 않습니다.


요구 사항

  • Python 3.8 이상
  • 타사 종속성 없음 — 표준 라이브러리만 사용 (socket, struct, argparse, concurrent.futures)

설치

root@kitploit:~
git clone https://github.com/Mr-Whiskerss/terrapin_check
cd terrapin_check
chmod +x terrapin_check.py

사용법

단일 호스트

root@kitploit:~
python3 terrapin_check.py <host> [port]
root@kitploit:~
python3 terrapin_check.py 192.168.1.10
python3 terrapin_check.py 192.168.1.10 2222

파일 기반 대량 스캔

한 줄에 대상 하나 — host 또는 host:port 형식을 허용합니다.

root@kitploit:~
python3 terrapin_check.py -f targets.txt
python3 terrapin_check.py -f targets.txt --threads 20 --timeout 3

요약 전용 출력(대규모 스캔에 유용)

root@kitploit:~
python3 terrapin_check.py -f targets.txt --summary

전체 옵션

root@kitploit:~
usage: terrapin_check.py [-h] [-f FILE] [-p PORT] [--threads THREADS] [--timeout TIMEOUT] [--summary] [host] [port]

positional arguments:
  host                  Target host
  port                  SSH port (default: 22)

options:
  -h, --help            Show this help message and exit
  -f, --file FILE       File containing hosts (host or host:port per line)
  -p, --port-flag PORT  Default port when using -f (default: 22)
  --threads THREADS     Concurrent threads for bulk scan (default: 10)
  --timeout TIMEOUT     Socket timeout in seconds (default: 5.0)
  --summary             Print one-line summary per host only

종료 코드

코드의미
0취약한 호스트가 없음
1취약한 호스트가 하나 이상 발견됨

이를 통해 파이프라인 및 자동화 워크플로에서 스크립트를 깔끔하게 사용할 수 있습니다.


출력

단일 호스트(상세)

root@kitploit:~
────────────────────────────────────────────────────────────
  Target : 192.168.1.10:22
  Banner : SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
  Status : VULNERABLE

  Strict-KEX : No
  ✗ ChaCha20-Poly1305 advertised → prefix-truncation possible
  ✗ CBC+ETM combination advertised
      CBC ciphers : aes128-cbc, aes256-cbc
      ETM MACs    : [email protected], [email protected]

  KEX algorithms:
    curve25519-sha256
    ecdh-sha2-nistp256
    diffie-hellman-group14-sha256
────────────────────────────────────────────────────────────

대량 스캔(요약)

root@kitploit:~
  [VULN]  192.168.1.10:22                  VULNERABLE (CVE-2023-48795)
  [SAFE]  192.168.1.20:22                  Not vulnerable
  [MIT]   192.168.1.30:22                  Algorithms present but strict-KEX mitigates
  [?]     192.168.1.99:22                  ERROR: Connection refused

취약 조건

이 스크립트는 다음 조건 중 하나라도 해당하고 strict-KEX 확장이 광고되지 않은 경우 호스트를 **VULNERABLE(취약)**로 표시합니다.

1. ChaCha20-Poly1305

서버가 암호화 방향 중 하나에서 [email protected]을 광고하는 경우.

2. CBC 암호 + ETM MAC 조합

서버가 CBC 모드 암호와 ETM MAC을 함께 광고하는 경우:

검사되는 CBC 암호: aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, idea-cbc, arcfour, arcfour128, arcfour256, [email protected]

검사되는 ETM MAC: [email protected], [email protected], [email protected], [email protected] 및 변형들

완화 — Strict KEX

서버가 KEX 알고리즘 목록에서 [email protected]을 광고하는 경우, 제공되는 암호와 MAC과 관계없이 연결이 보호됩니다. 이 경우 스크립트는 VULNERABLE 대신 MITIGATED로 보고합니다.


해결 방안

조치세부 내용
OpenSSH 업그레이드클라이언트와 서버 모두 ≥ 9.6으로 업그레이드합니다. Strict KEX는 기본적으로 활성화됩니다.
기타 구현체 패치PuTTY ≥ 0.80, libssh ≥ 0.10.6, Paramiko ≥ 3.4.0, AsyncSSH ≥ 2.14.2
취약한 알고리즘 제거즉시 업그레이드가 어려운 경우 sshd_config에서 chacha20-poly1305, CBC 암호 및 ETM MAC을 제거합니다.
root@kitploit:~
# /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
MACs hmac-sha2-256,hmac-sha2-512

알고리즘 제거는 암호 스위트(cypher agility)를 저하시킵니다. 업그레이드가 항상 선호되는 해결 방법입니다.


면책 조항

이 도구는 승인된 보안 평가용으로만 제작되었습니다. 소유한 시스템이나 명시적인 서면 허가를 받은 시스템에만 사용하십시오. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.


Mr-Whiskerss 침투 테스트 툴킷의 일부.

도구 다운로드