Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
TLS-Scanner — ペネトレーションテスターと研究者向けの自動化されたTLSサーバーおよびクライアント構成スキャナー。暗号スイート、プロトコルバージョン、セキュリティガイドラインを評価し、カスタマイズ可能なスキャン深度と機械可読な出力を提供します。 | Kitploit
ツール/GitHubGitHub/tls-attacker/tls-scanner
脆弱性スキャナーネットワークセキュリティ暗号化ペネトレーションテスト
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パラメータを使用して使用するスレッド数を増やすことができます。

パフォーマンス上の理由からもう1つの重要なパラメータは-scanDetailパラメータで、スキャンの詳細度を設定するために使用できます。高速から非常に詳細までの可能な値は: QUICK、NORMAL、DETAILED、ALLです。

出力の詳細度は-reportDetailパラメータで設定できます。ガイドラインの詳細を確認するには、-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

これはPROTOCOL_VERSION、CIPHER_SUITE、SUPPORTED_VERSIONSを-scanDetail QUICKで実行します。

スキャナーで利用可能なすべてのプローブを(ターゲットに接続せずに)確認するには、-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を改善する方法をご存知の場合は、 お気軽にプルリクエストを送ってください

要件システム

(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));
}
ツールをダウンロード