【注意】このサイトに記載されていることを他人に試すことは「不正アクセス禁止法」に該当する場合があります。詳しくはこちらから

ハッカーはsslscanでサーバのSSL/TLS状態を調査する(Kali Linuxツール説明)

ホワイトハッカーの知識座学,Kali Linuxツール,sslscan

サーバのSSL/TLS状態を理解するためにまとめてみました。
このsslscanの動作確認は自分のドメインでテストを行っています。

sslscanとは

sslscanは、指定されたターゲットに対して様々なテストを行い、SSL/TLSサーバーによって受け入れられたプロトコルと暗号の包括的なリストをセキュリティテストに役立つその他の情報とともに返すツールです。

機能

  • ターゲットがSSLv2プロトコルをサポートしているかどうか
  • NULL暗号、鍵長(40ビットまたは56ビット)に基づいた弱い暗号、強い暗号(AESなど)の利用可能性
  • デジタル証明書がMD5署名されているかどうか
  • 現在のSSL/TLSの再ネゴシエーション機能をチェック

ツールの場所

[Applications]→[01-Information Gathering]→[SSL Analysis]→[sslscan]

ツールと使用方法

sslscan [options] [host:port | host]

例 sslscan www.yahoo.co.jp
     sslscan 127.0.0.1
     sslscan [::1]

【実行イメージ】少し端折って整形しています。

┌──(root__kali)-[/home/kali]
└─# sslscan ******.com

Version: 2.0.7-static
OpenSSL 1.1.1j-dev xx XXX xxxx

Connected to ***.***.***.***

Testing SSL server ******.com on port 443 using SNI name ******.com

SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 disabled
TLSv1.1 disabled
TLSv1.2 enabled
TLSv1.3 enabled

TLS Fallback SCSV:
Server supports TLS Fallback SCSV

TLS renegotiation:
Session renegotiation not supported

TLS Compression:
Compression disabled

Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

Supported Server Cipher(s):
Preferred TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253
Accepted TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253
Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits DHE-RSA-AES128-GCM-SHA256 DHE 2048 bits
Accepted TLSv1.2 128 bits AES128-GCM-SHA256
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits DHE-RSA-CHACHA20-POLY1305 DHE 2048 bits
Accepted TLSv1.2 256 bits ECDHE-ARIA256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits DHE-RSA-ARIA256-GCM-SHA384 DHE 2048 bits
Accepted TLSv1.2 128 bits DHE-RSA-AES128-CCM8 DHE 2048 bits
Accepted TLSv1.2 128 bits DHE-RSA-AES128-CCM DHE 2048 bits
Accepted TLSv1.2 128 bits ECDHE-ARIA128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits DHE-RSA-ARIA128-GCM-SHA256 DHE 2048 bits
Accepted TLSv1.2 256 bits ECDHE-RSA-CAMELLIA256-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits DHE-RSA-CAMELLIA256-SHA256 DHE 2048 bits
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA256 DHE 2048 bits
Accepted TLSv1.2 128 bits ECDHE-RSA-CAMELLIA128-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits DHE-RSA-CAMELLIA128-SHA256 DHE 2048 bits
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ARIA256-GCM-SHA384
Accepted TLSv1.2 128 bits AES128-CCM8
Accepted TLSv1.2 128 bits AES128-CCM
Accepted TLSv1.2 128 bits ARIA128-GCM-SHA256
Accepted TLSv1.2 256 bits CAMELLIA256-SHA256
Accepted TLSv1.2 128 bits AES128-SHA256
Accepted TLSv1.2 128 bits CAMELLIA128-SHA256
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits DHE-RSA-AES256-GCM-SHA384 DHE 2048 bits
Accepted TLSv1.2 256 bits AES256-GCM-SHA384
Accepted TLSv1.2 256 bits DHE-RSA-AES256-CCM8 DHE 2048 bits
Accepted TLSv1.2 256 bits DHE-RSA-AES256-CCM DHE 2048 bits
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits DHE-RSA-AES256-SHA256 DHE 2048 bits
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits AES256-CCM8
Accepted TLSv1.2 256 bits AES256-CCM
Accepted TLSv1.2 256 bits AES256-SHA256
Accepted TLSv1.2 256 bits DHE-RSA-CAMELLIA256-SHA DHE 2048 bits
Accepted TLSv1.2 128 bits DHE-RSA-AES128-SHA DHE 2048 bits
Accepted TLSv1.2 128 bits DHE-RSA-CAMELLIA128-SHA DHE 2048 bits
Accepted TLSv1.2 256 bits CAMELLIA256-SHA
Accepted TLSv1.2 128 bits AES128-SHA
Accepted TLSv1.2 128 bits CAMELLIA128-SHA
Accepted TLSv1.2 128 bits DHE-RSA-SEED-SHA DHE 2048 bits
Accepted TLSv1.2 128 bits SEED-SHA
Accepted TLSv1.2 256 bits DHE-RSA-AES256-SHA DHE 2048 bits
Accepted TLSv1.2 256 bits AES256-SHA

Server Key Exchange Group(s):
TLSv1.3 128 bits secp256r1 (NIST P-256)
TLSv1.3 192 bits secp384r1 (NIST P-384)
TLSv1.3 260 bits secp521r1 (NIST P-521)
TLSv1.3 128 bits x25519
TLSv1.3 224 bits x448
TLSv1.2 128 bits secp256r1 (NIST P-256)
TLSv1.2 192 bits secp384r1 (NIST P-384)
TLSv1.2 260 bits secp521r1 (NIST P-521)
TLSv1.2 128 bits x25519
TLSv1.2 224 bits x448

SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength: 2048

Subject: www.******.com
Altnames: DNS:******.com, DNS:www.******.com
Issuer: R3

Not valid before: Feb 16 04:27:27 2021 GMT
Not valid after: May 17 04:27:27 2021 GMT

オプション

–targets=<file>

A file containing a list of hosts to check.Hosts can be supplied with ports.(host:port)
チェックするホストのリストを含むファイル。ホストにはポートを指定できます。(host:port)

–sni-name=<name>

Hostname for SNI.
SNIのホスト名。

–ipv4, -4

Only use IPv4.
IPv4のみを使用してください。

–ipv6, -6

Only use IPv6.
IPv6のみを使用してください。

–show-certificate

Show full certificate information.
完全な証明書情報を表示します。

–show-client-cas

Show trusted CAs for TLS client auth.
TLSクライアント認証の信頼できるCAsを表示します。

–no-check-certificate

Don’t warn about weak certificate algorithm or keys.
弱い証明書アルゴリズムまたはキーについて警告しないでください。

–ocsp

Request OCSP response from server.
サーバーにOCSP応答を要求します。

–pk=<file>

A file containing the private key or a PKCS#12 file containing a private key/certificate pair.
秘密鍵を含むファイル、または秘密鍵と証明書のペアを含むPKCS#12ファイル。

–pkpass=<password>

The password for the private key or PKCS#12 file.
秘密鍵またはPKCS#12ファイルのパスワード。

–certs=<file>

A file containing PEM/ASN1 formatted client certificates.
PEM / ASN1形式のクライアント証明書を含むファイル。

–ssl2

Only check if SSLv2 is enabled.
SSLv2が有効になっているかどうかのみを確認してください。

–ssl3

Only check if SSLv3 is enabled.
SSLv3が有効になっているかどうかのみを確認してください。

–tls10

Only check TLSv1.0 ciphers.
TLSv1.0暗号のみをチェックしてください。

–tls11

Only check TLSv1.1 ciphers.
TLSv1.1暗号のみをチェックしてください。

–tls12

Only check TLSv1.2 ciphers.
TLSv1.2暗号のみをチェックしてください。

–tls13

Only check TLSv1.3 ciphers.
TLSv1.3暗号のみをチェックしてください。

–tlsall

Only check TLS ciphers. (all versions)
TLS暗号のみをチェックしてください。 (すべてのバージョン)

–show-ciphers

Show supported client ciphers.
サポートされているクライアント暗号を表示します。

–show-cipher-ids

Show cipher ids.
暗号IDsを表示します。

–show-times

Show handhake times in milliseconds.
ハンドヘイク時間をミリ秒単位で表示します。

–no-cipher-details

Disable EC curve names and EDH/RSA key lengths output.
EC曲線名とEDH / RSAキー長の出力を無効にします。

–no-ciphersuites

Do not check for supported ciphersuites.
サポートされている暗号スイートをチェックしないでください。

–no-compression

Do not check for TLS compression. (CRIME)
TLS圧縮をチェックしないでください。 (犯罪)

–no-fallback

Do not check for TLS Fallback SCSV.
TLSフォールバックSCSVをチェックしないでください。

–no-groups

Do not enumerate key exchange groups.
鍵交換グループを列挙しないでください。

–no-heartbleed

Do not check for OpenSSL Heartbleed. (CVE-2014-0160)
OpenSSLHeartbleedをチェックしないでください。 (CVE-2014-0160)

–no-renegotiation

Do not check for TLS renegotiation.
TLS再ネゴシエーションをチェックしないでください。

–show-sigs

Enumerate signature algorithms.
署名アルゴリズムを列挙します。

–starttls-ftp

STARTTLS setup for FTP.
FTP用のSTARTTLSセットアップ。

–starttls-imap

STARTTLS setup for IMAP.
IMAPのSTARTTLSセットアップ。

–starttls-irc

STARTTLS setup for IRC.
IRCのSTARTTLSセットアップ。

–starttls-ldap

STARTTLS setup for LDAP.
LDAP用のSTARTTLSセットアップ。

–starttls-mysql

STARTTLS setup for MYSQL.
MYSQLのSTARTTLSセットアップ。

–starttls-pop3

STARTTLS setup for POP3.
POP3のSTARTTLSセットアップ。

–starttls-psql

STARTTLS setup for PostgreSQL.
PostgreSQLのSTARTTLSセットアップ。

–starttls-smtp

STARTTLS setup for SMTP.
SMTPのSTARTTLSセットアップ。

–starttls-xmpp

STARTTLS setup for XMPP.
XMPPのSTARTTLSセットアップ。

–xmpp-server

Use a server-to-server XMPP handshake.
サーバー間XMPPハンドシェイクを使用します。

–rdp

Send RDP preamble before starting scan.
スキャンを開始する前にRDPプリアンブルを送信します。

–bugs

Enable SSL implementation bug work-arounds.
SSL実装のバグ回避策を有効にします。

–no-colour

Disable coloured output.
カラー出力を無効にします。

–sleep=<msec>

Pause between connection request. Default is disabled.
接続要求の間に一時停止します。 デフォルトは無効です。

–timeout=<sec>

Set socket timeout. Default is 3s.
ソケットタイムアウトを設定します。 デフォルトは3秒です。

–verbose

Display verbose output.
詳細な出力を表示します。

–version

Display the program version.
プログラムのバージョンを表示します。

–xml=<file>

Output results to an XML file. Use – for STDOUT.
結果をXMLファイルに出力します。 STDOUTには-を使用します。

–help

Display the help text you are now reading.
現在読んでいるヘルプテキストを表示します。

sslscanツールのまとめ

sslscanはサーバのSSL/TLS状態が確認できるツールなのです。
なぜ必要かと言うと・・・

最近、ホームページのアドレスが「http://」から「https://」に変わりつつあります。

普段パソコンや携帯電話を使いインターネットでのお買い物をしていますよね。
このときハッカー(第三者)に個人情報が抜き取られたりするネット犯罪の可能性が高まっているのです。

ホームページで商品などを購入して個人情報を入力しますよね。
住所、名前、クレジットカード情報の番号など・・・このとき「http」のアドレスだとハッカー(第三者)に情報を「盗聴」や「改ざん」される危険があるからです。

しかし「https」のアドレスだと個人情報(住所、名前、クレジットカード情報)などの重要なデータを暗号化して、お店と通信をして安全に購入することが可能になります。
この通信方法はSSL/TLSというプロトコルを使っています。

※SSL(Secure Sockets Layer)
※TLS(Transport Layer Security)

もう少し細かい説明をすると、データの暗号化に「共通鍵暗号方式」と「公開鍵暗号方式」の両方を用いてハッカー(第三者)から盗聴や改ざんを防ぎます。