無効化設定したTLS 1.0,TLS 1.1が本当に無効化されたか、nmapで確認してみる


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

脆弱性対応として、前回「TLS 1.0 TLS 1.1無効化」の記事を書きました。

 

"各プロトコルが無効になったことの確認"について、日本マイクロソフトの記事では、確認するコマンドは準備されていないので、レジストリが正しく設定されているかをご確認くださいとのことでした。

 

正直、本当に無効化されたのか不安ですよね。

 

今回の記事では、nmapを利用してTLS 1.0 TLS 1.1無効化を確認する方法を紹介します。

 

 

無効化したTLS 1.0,TLS 1.1が本当に無効化されたかNmapで確認

わたしはあるプロジェクトで"TLS 1.0"と"TLS 1.1"が脆弱性として見つかり、該当の暗号化プロトコルの無効化対応を行いました。

 

参考にした日本マイクロソフトの記事では、"各プロトコルが無効になったことの確認"について、「レジストリによって各プロトコルを無効化した後に、実際にプロトコルが無効化されていることを確認する方法についてお問い合わせもいただきます。OS としてコマンドなどで確認できる方法は準備されておりませんので、レジストリが正しく設定されているかをご確認いただければ問題ございません。」とありました。

 

無効化設定後に再スキャンを依頼した結果、無効化設定したサーバ7台中3台からまた"TLS 1.0"と"TLS 1.1"が検知されてしまったのです。

 

パスしたサーバと検知されたサーバのregファイルをdiffっても違いがありません。しょうがないので一度レジストリキーを削除し再設定しましたが、本当に無効化されたのか確証が持てませんでした。

 

そこで利用したのが"Nmap"です。

 

 

■Nmapとは

nmapアイコン

 

Nmapはネットワーク調査ツールで、ポートスキャンを行うことができます。

 

Nmap (「Network Mapper」)は、ネットワーク調査およびセキュリティ監査を行うためのオープンソースのツールである。大規模ネットワークを高速でスキャンするように設計されているが、単一のホストに対してもまったく問題なく機能する。
 
Nmapは生の(raw)IPパケットを用いて、ネットワーク上でどのようなホストか利用可能になっているか、これらのホストが提供しているサービス(アプリケーション名とバージョン)は何か、ホストが実行しているOS(OS名とバージョン)は何か、どのような種類のパケットフィルタ/ファイアウォールが使用されているかなど、その他数多くの特徴を斬新な方法で判別する。(nmap公式webサイトより)

 

↓Nmapには暗号化プロトコルのバージョンスキャンをチェックできるオプションも用意されています。

nmap -sV --script ssl-enum-ciphers -p 443 <host>

 

↓スキャン結果例

PORT    STATE SERVICE REASON
443/tcp open  https   syn-ack
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|       Weak certificate signature: SHA1
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - C
|       TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
|       TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|       Broken cipher RC4 is deprecated by RFC 7465
|       Ciphersuite uses MD5 for message integrity
|_  least strength: C

 

 

今回の無効化確認ではNmapを利用してバージョンスキャンを行い、TLSの1.0,1.1が出力されなければ無効化されていると確認できます。

 

 

■無効化確認方法

Nmapを利用してTLS 1.0 TLS 1.1無効化を確認していきます。

 

前提条件としてnmapをインストールするサーバを用意しましょう。わたしはWindowsServer2022を用意し、RDP接続しインストールします。

 

 

↓Nmapをインストールする。https://nmap.org

 

nmapインストール

 

↓環境に合わせて選択してください。

 

nmapインストール

 

↓最新版(nmap-7.93)を選択します。ver6.xxだとscriptオプションでバージョンスキャンができませんでした。

 

nmapインストール

 

↓ウィザードを起動します。

 

nmapインストール

nmapインストール

 

↓デフォルトのまま、[Next]をクリックし、インストールしていきます。

 

nmapインストール

nmapインストール

nmapインストール

nmapインストール

nmapインストール

nmapインストール

nmapインストール

nmapインストール

nmapインストール

 

 

↓インストールが完了しましたら、管理者権限として実行でコマンドプロンプトを起動します。

 

コマンドプロンプト

 

↓Nmapコマンドが使えるか、以下のコマンドを実行してみましょう。

nmap --version

 

↓以下が実行結果です。

C:\Users\Administrator>nmap --version
Nmap version 7.93 ( https://nmap.org )
Platform: i686-pc-windows-windows
Compiled with: nmap-liblua-5.3.6 openssl-3.0.5 nmap-libssh2-1.10.0 nmap-libz-1.2.12 nmap-libpcre-7.6 Npcap-1.71 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: iocp poll select

 

※コマンドが認識されていない場合、環境変数のPathに以下のフォルダパス(インストール先)を追加しましょう。

C:\Program Files (x86)\Nmap

 

 

↓それでは、TLS無効化を確認するため、以下のコマンドを実行していきます。部分にスキャンしたいサーバのipアドレスを入れてください。

nmap -sV --script ssl-enum-ciphers -p 3389 <host>

 

↓コマンドオプションの簡単な説明をしておきます。

 

  • -sV:開いているポートをプローブして、サービス/バージョン情報を特定します。
  • –script:ファイル名、スクリプト カテゴリ、およびディレクトリのコンマ区切りリストを使用して、スクリプト スキャンを実行します。
  • ssl-enum-ciphers:このスクリプトは、SSLv3/TLS 接続を繰り返し開始し、ホストがそれを受け入れるか拒否するかを記録しながら、毎回新しい暗号または圧縮を試行します。
  • -p:指定したポートのみスキャン(1-65535,443,3389など)

 

 

まずは無効化設定をしていない対象サーバにポートスキャンを実行してみると、

 

C:\Users\Administrator>nmap -sV --script ssl-enum-ciphers -p 3389 172.31.18.22
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 05:32 Coordinated Universal Time
NSOCK ERROR [0.1120s] ssl_init_helper(): OpenSSL legacy provider failed to load.

Nmap scan report for ip-172-31-18-22.ap-southeast-1.compute.internal (172.31.18.22)
Host is up (0.00021s latency).
Not shown: 1000 filtered tcp ports (no-response)
PORT     STATE SERVICE       VERSION
3389/tcp open  ms-wbt-server Microsoft Terminal Services
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|   TLSv1.1:
|     ciphers:
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|   TLSv1.2:
|     ciphers:
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|_  least strength: C
MAC Address: 02:4B:7F:25:BF:6C (Unknown)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.81 seconds

 

 

11行目と、23行目にTLSv1.0、TLSv1.1が検出されているのがわかりますね。

 

対象サーバのTLS無効化設定を実施して、コマンドを実行してみると、

 

C:\Users\Administrator>nmap -sV --script ssl-enum-ciphers -p 3389 172.31.18.22
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-14 06:09 Coordinated Universal Time
NSOCK ERROR [0.0910s] ssl_init_helper(): OpenSSL legacy provider failed to load.

Nmap scan report for ip-172-31-18-22.ap-southeast-1.compute.internal (172.31.18.22)
Host is up (0.00013s latency).

PORT     STATE SERVICE       VERSION
3389/tcp open  ms-wbt-server Microsoft Terminal Services
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|_  least strength: C
MAC Address: 02:4B:7F:25:BF:6C (Unknown)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.03 seconds

 

 

TLS 1.0とTLS 1.1がスキャンされず、ポート3389ではTLS 1.2を使用しているのが確認できました。

 

確認は以上です。

 

 

■おまけ:LinuxにNmapをインストールする場合

今回の記事では、WindowsOSでnmapを利用しました。Linuxでのインストール方法も簡単に載せておきます。

 

↓インストールコマンド

rpm -vhU https://nmap.org/dist/nmap-7.93-1.x86_64.rpm

 

↓インストールして、バージョンスキャンをした実行結果

 

[ec2-user@ip-172-31-20-24 ~]$ sudo su -
[root@ip-172-31-20-24 ~]# rpm -vhU https://nmap.org/dist/nmap-7.93-1.x86_64.rpm
Retrieving https://nmap.org/dist/nmap-7.93-1.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:nmap-2:7.93-1                    ################################# [ 50%]
Cleaning up / removing...
   2:nmap-2:6.40-13.amzn2             ################################# [100%]
[root@ip-172-31-20-24 ~]# nmap --version
Nmap version 7.93 ( https://nmap.org )
Platform: x86_64-redhat-linux-gnu
Compiled with: nmap-liblua-5.3.6 openssl-3.0.5 nmap-libssh2-1.10.0 nmap-libz-1.2.12 nmap-libpcre-7.6 nmap-libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select
Last login: Wed Mar 15 04:49:55 UTC 2023 on pts/0
[root@ip-172-31-20-24 ~]# nmap -sV --script ssl-enum-ciphers -p 3389 172.31.16.111
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-15 05:08 UTC
Nmap scan report for ip-172-31-16-111.ap-southeast-1.compute.internal (172.31.16.111)
Host is up (0.00075s latency).

PORT     STATE SERVICE       VERSION
3389/tcp open  ms-wbt-server Microsoft Terminal Services
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|     compressors:
|       NULL
|     cipher preference: server
|     warnings:
|       64-bit block cipher 3DES vulnerable to SWEET32 attack
|_  least strength: C
MAC Address: 02:A3:90:D9:43:FC (Unknown)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.00 seconds

 

 

以上です。

 

 

まとめ:無効化設定したTLS 1.0,TLS 1.1が本当に無効化されたか、nmapで確認してみる

TLS 1.0,TLS 1.1の無効化を確認するために、Nmapを初めて利用しました。

 

Nmapにはオプションが豊富に用意されていますので、スキャンテクニックを身に着けて、ネットワークセキュリティのスキルを高めていきたいです。

 

※Nmapでのポートスキャンは自身が責任を持てる環境内で利用しましょう。場合によっては、攻撃とみなされるそうです。

 

 

参考リンク:nmap公式webサイト
 

 

↓ほかの協栄情報メンバーも"WindowsOS"に関する記事を公開しています。ぜひ参考にしてみてください。

 

■WINDOWSサーバーのファイアウォールを無効にするコマンド(dapeng)
https://cloud5.jp/windows-firewall/

 

■WindowsでBashシェルを実行する!その1-WSL2にUbuntuをインストール(小林 剛)
https://cloud5.jp/windows_wsl2-ubuntu/

 

■Powershellからカレントディレクトリを開く(liyo)
https://cloud5.jp/powershell_open_command/

 

Last modified: 2023-03-25

Author