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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
TLS-Scanner — 침투 테스터와 연구자를 위한 자동화된 TLS 서버 및 클라이언트 구성 스캐너입니다. 암호화 제품군, 프로토콜 버전 및 보안 가이드라인을 평가하며, 사용자 정의 가능한 스캔 깊이와 기계 판독 가능한 출력을 제공합니다. | Kitploit
도구/GitHubGitHub/tls-attacker/tls-scanner
Vulnerability ScannersNetwork SecurityCryptographyPenetration Testing
GitHubtls-attacker/tls-scanner

TLS-Scanner

침투 테스터와 연구자를 위한 자동화된 TLS 서버 및 클라이언트 구성 스캐너입니다. 암호화 제품군, 프로토콜 버전 및 보안 가이드라인을 평가하며, 사용자 정의 가능한 스캔 깊이와 기계 판독 가능한 출력을 제공합니다.

저장소 보기
28441162일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

TLS-Scanner

GitHub release (latest by date) licence Build Status

TLS-Scanner는 침투 테스터와 보안 연구원이 TLS 서버 및 클라이언트 구성을 평가하는 데 도움을 주는 도구입니다.

참고: TLS-Scanner는 TLS 개발자, 침투 테스터, 관리자 및 연구원을 위한 연구 도구입니다. GUI는 없습니다. 첫 번째 버전이며 일부 버그가 있을 수 있습니다.

컴파일

TLS-Scanner를 컴파일하고 사용하려면 다음을 실행해야 합니다:

$ cd TLS-Scanner
$ git submodule update --init --recursive
$ mvn clean package

또는 시간이 없다면 다음을 사용하여 테스트를 건너뛸 수 있습니다:

$ mvn clean package -DskipTests=true

TLS-Scanner를 라이브러리로 사용하려면 다음 명령으로 설치해야 합니다:

$ mvn clean install

실행

TLS-Scanner를 실행하려면 apps/ 폴더에 있는 jar 파일 중 하나를 실행해야 합니다. 이 파일들은 앱을 직접 컴파일하거나 GitHub에서 릴리스된 jar 파일을 다운로드하여 얻을 수 있습니다.

$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433

TLS-Scanner는 지정된 서버(여기서는 포트 4433의 localhost)를 평가하고 마지막에 보고서를 출력합니다. 보고서는 발견 사항의 심각도를 전달하기 위해 색상을 사용합니다:

  • 녹색: 좋은 결과.
  • 노란색: 경고, 잠재적인 문제일 수 있음.
  • 노란색 배경: 스캐너가 대상이 취약한지 확신하지 못하는 결과.
  • 빨간색: 심각한 문제, 수정해야 함.
  • 기본 색상(터미널에 따라 다르며, 일반적으로 검은색 또는 흰색): 좋지도 나쁘지도 않은 중립적인 결과. 정보성 결과가 포함됩니다.
  • 파란색: 스캐너가 이 특정 테스트를 위해 서버를 스캔할 수 없었습니다. 이는 해당 테스트의 전제 조건이 지원되지 않기 때문일 가능성이 높습니다.
  • 보라색: 스캐너가 이 특정 테스트를 위해 서버를 스캔하는 동안 오류가 발생했습니다. 이는 스캐너의 버그 때문일 수도 있지만, 서버가 필요한 기능을 지원하지 않기 때문일 수도 있습니다.
  • 청록색: 보고서 구조화(제목 등)에 사용됩니다.

중요 매개변수

-connect 매개변수로 스캔하려는 호스트를 지정해야 합니다.

스캔 성능을 향상시키려면 -threads 매개변수를 사용하여 사용되는 스레드 수를 늘릴 수 있습니다.

성능상의 이유로 중요한 또 다른 매개변수는 -scanDetail 매개변수로, 얼마나 상세하게 스캔할지 구성하는 데 사용할 수 있습니다. 빠른 것부터 매우 상세한 것까지 가능한 값은 QUICK, NORMAL, DETAILED, ALL입니다.

출력의 상세도는 -reportDetail 매개변수로 구성할 수 있습니다. Guidelines에 대한 더 자세한 내용을 보려면 -reportDetail ALL을 사용하십시오.

기본적으로 결과는 콘솔에만 기록됩니다. 기계 판독 가능한 출력을 원한다면 -outputFile output.json을 사용하여 결과를 JSON 파일에 자동으로 기록할 수 있습니다.

사용 사례

가장 중요하게 변경할 매개변수는 -scanDetail과 -reportDetail입니다. 다음에서는 이러한 매개변수에 대한 몇 가지 사용 사례를 설명합니다.

기본 스캔

대부분의 경우 기본 매개변수 설정으로 충분합니다. 이는 두 상세 수준을 모두 NORMAL로 설정하여 스캔을 수행합니다.

빠른 스캔

빠른 스캔을 수행하고 시스템에 대한 빠른 개요를 얻으려면 두 상세 수준을 모두 QUICK으로 설정하는 것이 좋습니다. 이는 일부 실행되는 프로브의 범위를 제한하여 런타임을 줄이고 보고서 상세도를 제한하여 매우 상세하고 기술적인 정보를 포함하지 않도록 합니다.

상세 스캔

시스템을 완전히 평가하고 보유한 모든 것을 실행하려면 두 상세 수준을 모두 ALL로 설정하는 것이 좋습니다. 이는 모든 기존 프로브를 완전히 실행하고 추가 분석 및 평가를 위해 매우 상세한 정보를 출력합니다.

스캔 프로필

-scanDetail과 같은 매개변수를 개별적으로 설정하는 대신(또는 추가로), 실행할 프로브와 사용할 매개변수를 재사용 가능한 JSON 스캔 프로필로 묶을 수 있습니다. 이는 -profile <path/to/profile.json> 매개변수를 통해 사용할 수 있으며, TlsServerScanner와 TlsClientScanner 모두에서 사용 가능합니다.

프로필은 다음과 같은 JSON 파일입니다:

  • inheritedFromProfiles: 프로브를 결합할 다른 프로필의 경로로, 이를 선언하는 프로필 파일의 디렉터리를 기준으로 상대 경로가 해석됩니다(절대 경로는 그대로 사용됨).
  • probes: 실행할 프로브로, ProbeType enum 클래스의 정규화된 이름에서 실행할 상수 이름 목록으로의 맵입니다. 이는 모든 단일 프로브마다 타입을 반복하는 대신 타입별로 프로브를 그룹화하며, 단일 프로필이 서로 다른 ProbeType 구현(예: TlsProbeType과 QuicProbeType)의 프로브를 자유롭게 결합할 수 있습니다. 각 타입별 목록은 "*"(해당 타입의 모든 상수)와 "!CONSTANT_NAME"(이전에 이름 또는 "*"로 추가된 상수 제거)도 허용하며, 순서대로 처리됩니다 — 예시는 scan-profiles/의 Everything.json과 demo.json을 참조하십시오.
  • settings(선택 사항): -scanDetail, -reportDetail, -postAnalysisDetail, -noColor, -outputFile, -probeTimeout, -parallelProbes, -threads와 같은 매개변수에 대한 재정의입니다. 생략된 필드는 일반 기본값(또는 명령줄에서 전달된 값)을 유지합니다. probes와 달리 settings는 상속되지 않습니다 — -profile로 지정한 프로필에 직접 선언된 설정만 적용되며, 다른 프로필에서 프로브를 상속하더라도 마찬가지입니다.

활성 프로필(및 상속하는 모든 것)에서 해석된 프로브만 실행되며, 나머지는 모두 건너뜁니다.

예시: 기본 프로필의 프로브를 자신의 프로브와 결합하고 스캔 상세도를 조정하는 경우:

base.json:

{
    "probes": {
        "de.rub.nds.tlsscanner.core.constants.TlsProbeType": ["PROTOCOL_VERSION", "CIPHER_SUITE"]
    }
}

quic.json(base.json과 같은 디렉터리에 있음):

{
    "inheritedFromProfiles": ["base.json"],
    "settings": {
        "scanDetail": "QUICK"
    },
    "probes": {
        "de.rub.nds.tlsscanner.core.constants.QuicProbeType": ["SUPPORTED_VERSIONS"]
    }
}
$ java -jar apps/TLS-Server-Scanner.jar -connect localhost:4433 -profile quic.json

이는 -scanDetail QUICK으로 PROTOCOL_VERSION, CIPHER_SUITE, SUPPORTED_VERSIONS를 실행합니다.

스캐너에 사용 가능한 모든 프로브를 보려면(대상에 연결하지 않고) -listProbes를 사용하십시오. 이는 프로필의 probes 필드가 기대하는 정확한 JSON 구문으로 ProbeType 클래스별로 그룹화하여 출력하므로, 프로필에 바로 복사하여 붙여넣을 수 있습니다:

$ java -jar apps/TLS-Server-Scanner.jar -listProbes
{
  "de.rub.nds.tlsscanner.core.constants.TlsProbeType" : [ "ALPN", "ESNI", "CERTIFICATE", ... ],
  "de.rub.nds.tlsscanner.core.constants.QuicProbeType" : [ "SUPPORTED_VERSIONS", ... ]
}

모든 매개변수

가능한 모든 매개변수에 대한 자세한 정보를 얻으려면 -help 매개변수를 사용하거나 매개변수를 설정하지 않고 jar를 실행하십시오.

Docker

TLS-Server-Scanner를 쉽게 사용할 수 있도록 미리 빌드된 docker 이미지를 제공합니다.

$ docker run -it --network host ghcr.io/tls-attacker/tlsscanner -connect localhost:4433

이 이미지는 서버 스캔용으로 만들어졌지만 다른 jar 파일도 포함하고 있습니다. entrypoint를 변경하여 접근할 수 있습니다.

$ docker run -it --network host --entrypoint java ghcr.io/tls-attacker/tlsscanner -jar TLS-Client-Scanner.jar

컨테이너를 직접 빌드할 수 있도록 Dockerfile도 제공합니다:

$ docker build . -t tlsscanner
$ docker run -t tlsscanner

참고: 저는 Docker 모범 사례에 전혀 익숙하지 않습니다. Dockerfile을 개선하는 방법을 알고 있다면 자유롭게 pull request를 제출해 주십시오

요구 사항 시스템

(TLS) 프로브는 때때로 이 특정 프로브를 실행하기 위해 필요한 전제 조건을 가지고 있습니다. 요구 사항 시스템을 사용하면 프로브가 실행되기 위해 충족되어야 하는 이러한 요구 사항의 집합을 정의할 수 있습니다.

각 요구 사항은 요구 사항이 충족되었는지 여부를 나타내는 부울 값을 반환하는 evaluate 함수를 제공합니다. 요구 사항은 잘 알려진 논리 연산을 사용하여 여러 방식으로 연결할 수 있습니다. 각 요구 사항은 여러 요구 사항을 연결하기 위한 and, or, not, xor 인스턴스 메서드를 제공합니다. 다음 프로브가 현재 구현되어 있으며 바로 사용할 수 있습니다:

  • FulfilledRequirement - 항상 true로 평가되며, 요구 사항이 없음을 나타내는 데 유용합니다.
  • UnfulfillableRequirement - 항상 false로 평가되며, 프로브 실행을 방지합니다.
  • ProbeRequirement - 지정된 프로브가 실행된 경우 true로 평가됩니다.
  • PropertyRequirement - 지정된 분석된 속성이 미리 정의된 값을 가진 경우 true로 평가됩니다. 값은 생성자 매개변수로 제공되거나 TestResults.TRUE와 TestResults.FALSE에 대한 축약형으로 PropertyTrueRequirement와 PropertyFalseRequirement를 사용할 수 있습니다.
  • PropertyComparatorRequirement - 분석된 속성의 컬렉션 결과가 상수 값보다 작거나, 같거나, 큰 경우 true로 평가됩니다.
  • ProtocolRequirement - 특정 프로토콜 버전이 지원되는 경우 true로 평가됩니다.
  • ExtensionRequirement - 특정 확장이 원격 피어에 의해 지원되는 경우 true로 평가됩니다.
  • OptionsRequirement - 추가 cli 플래그가 설정된 경우 true로 평가됩니다. 현재 일부 클라이언트 프로브(ALPN, SNI, 세션 재개)에서 사용됩니다.
  • WorkingConfigRequirement - 작동하는 구성이 발견된 경우 true로 평가됩니다.

이러한 미리 정의된 요구 사항 외에도 getRequirements 메서드 내에서 Requirement 클래스를 익명으로 확장할 수 있습니다. 아무것도 필요하지 않은 경우 항상 true로 평가되는 FulfilledRequirement를 반환할 수 있습니다.

요구 사항을 사용하는 방법에 대한 예시는 tls-client-scanner와 tls-server-scanner의 probe 패키지에서 찾을 수 있습니다.

@Override
public Requirement<ClientReport> getRequirements() {
    return new ProbeRequirement<ClientReport>(TlsProbeType.CIPHER_SUITE)
            .and(new PropertyTrueRequirement<>(TlsAnalyzedProperty.SUPPORTS_DHE));
}
도구 다운로드