※この記事は「エムティーアイ Blog Summer 2026」の 6/25 の記事です。
こんにちは、テクノロジー本部 Red Teamの下山です。
普段はセキュリティ診断業務に携わっています。
本記事では、診断の現場で実際に使っているOSSツールを3つ紹介します。

目次
- はじめに
- 脆弱性診断の一般的な流れ
- 1. Nmap — ポートスキャン・サービス検出
- 2. testssl.sh — SSL/TLS設定チェック
- 3. dirsearch — ディレクトリ・ファイル探索
- おわりに
はじめに
セキュリティ診断(脆弱性診断)の現場では、有償・無償さまざまなツールが使われています。本記事では、その中でも無料で使えるOSSツールを3つ紹介します。いずれもインストールが簡単で、自分が管理するサーバーやシステムに対してすぐ試せます。
⚠️ これらのツールは必ず自分が管理・権限を与えられたシステムに対してのみ使用してください。無断でのスキャンは不正アクセス禁止法等に抵触する恐れがあります。
脆弱性診断の一般的な流れ
脆弱性診断では、対象システムの情報収集から始めて、段階的に調査を進めていきます。以下は一般的なWeb診断の流れです。
| ステップ | 内容 | 使用ツール |
|---|---|---|
| 1. ポートスキャン | 開放ポートや稼働サービスを把握する | Nmap |
| 2. SSL/TLS診断 | 暗号設定や既知脆弱性を確認する | testssl.sh |
| 3. コンテンツ探索 | 公開されていないページやファイルを探す | dirsearch |
| 4. 手動診断 | 認証・入力値・セッション等を詳しく調べる | Burp Suite 等 |
本記事ではステップ1〜3で使う3つのOSSツールを紹介します。ステップ4の手動診断で使うBurp SuiteやNessusは本格的な診断に有償ライセンスが必要なため、今回は対象外としています。
1. Nmap — ポートスキャン・サービス検出
概要
Nmap(Network Mapper)は、ネットワーク探索とセキュリティ監査のためのOSSツールです。対象ホストの開放ポートや稼働しているサービス・バージョンを調べられます。診断の最初のステップとして「どんなサービスが外から見えているか」を把握するのに使います。
ポートの状態
Nmapはスキャン結果としてポートの状態を以下の3つで表します。
| 状態 | 意味 |
|---|---|
open |
ポートが開いており、サービスが応答している |
closed |
ポートは到達可能だがサービスが起動していない |
filtered |
ファイアウォール等によりパケットがブロックされている |
filtered のポートが多い場合、ファイアウォールが適切に機能していると判断できます。
よく使うコマンド例
# バージョン検出 + デフォルトスクリプト実行 nmap -sV -sC <ターゲットIP> # OS推定も含める nmap -sV -O <ターゲットIP> # 特定ポートだけ指定 nmap -p 80,443,8080 <ターゲットIP> # UDPスキャン(時間がかかるため範囲を絞るのが実用的) nmap -sU -p 53,161 <ターゲットIP>
出力例
Starting Nmap 7.94 ( https://nmap.org ) Nmap scan report for example.com (93.184.216.34) Host is up (0.023s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu (protocol 2.0) 80/tcp open http nginx 1.18.0 443/tcp open ssl/http nginx 1.18.0 8080/tcp filtered http Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
open なポートとそのサービス・バージョンが一覧で確認できます。上記の例では nginx 1.18.0 が動いていることがわかるため、そのバージョンに既知の脆弱性がないかを次のステップで調べます。8080/tcp は filtered のため、ファイアウォールでブロックされていると推定できます。
主なオプション解説
-sV: 稼働しているサービスのバージョンを検出します。古いバージョンのミドルウェアが動いていないかの確認に使います。-sC: デフォルトのNSE(Nmap Scripting Engine)スクリプトを実行します。HTTPのタイトル取得やSSH認証方式の確認など、簡易的な追加情報を自動で収集してくれます。-O: OS推定を行います。TTL値やTCPウィンドウサイズ等の特徴からOSを推定します。-sS: TCP SYNスキャン(root権限実行時のデフォルト)。3ウェイハンドシェイクを完了せずにスキャンするため高速です。
NSEスクリプトの活用
NmapにはNSEという仕組みがあり、目的に応じたスクリプトを追加で実行できます。
# 特定のスクリプトを指定して実行 nmap --script=http-headers <ターゲットIP> # HTTPに関連するスクリプトをまとめて実行 nmap --script=http-* -p 80,443 <ターゲットIP>
脆弱性検査用のスクリプト(vulnカテゴリ)もありますが、対象への影響が出る場合があるため、使用には注意が必要です。
2. testssl.sh — SSL/TLS設定チェック
概要
testssl.sh は、サーバーのSSL/TLS設定を診断するシェルスクリプトのツールです。古いプロトコルや弱い暗号スイートが有効になっていないか、既知脆弱性への対応状況を確認できます。443番ポートのHTTPS以外にも、SMTP・IMAPなどSTARTTLSを使うサービスにも対応しています。
チェック項目
- 対応プロトコル : SSLv2、SSLv3、TLS 1.0、TLS 1.1 が有効になっていないか(これらは非推奨)
- 暗号スイート : RC4、DES、エクスポート暗号などの弱い暗号が有効になっていないか
- 証明書 : 有効期限、署名アルゴリズム(SHA-1等の弱いものが使われていないか)
- 既知脆弱性 : Heartbleed、POODLE、BEAST、ROBOT等への対応状況
よく使うコマンド例
# 基本スキャン(すべての項目をチェック) ./testssl.sh https://example.com # 脆弱性チェックのみ ./testssl.sh --vulnerable https://example.com # プロトコルのみチェック ./testssl.sh --protocols https://example.com # 暗号スイートのチェック ./testssl.sh --ciphers https://example.com # JSON形式で結果を保存 ./testssl.sh --jsonfile result.json https://example.com # STARTTLSを使うSMTPのチェック ./testssl.sh --starttls smtp example.com:25
出力例
Testing protocols via sockets SSLv2 not offered (OK) SSLv3 not offered (OK) TLS 1 offered (deprecated) TLS 1.1 offered (deprecated) TLS 1.2 offered (OK) TLS 1.3 offered (OK) Testing vulnerabilities Heartbleed (CVE-2014-0160) not vulnerable (OK) CCS (CVE-2014-0224) not vulnerable (OK) POODLE, SSL (CVE-2014-3566) not vulnerable (OK) BEAST (CVE-2011-3389) VULNERABLE -- but also supports TLS 1.3 ROBOT (CVE-2017-13099) not vulnerable (OK) Testing cipher categories NULL ciphers (no encryption) not offered (OK) RC4 (CVE-2013-2566) not offered (OK) LOW: 64 Bit + DES, RC2 not offered (OK)
上記の例では TLS 1.0/1.1 が offered (deprecated) と表示されており、無効化が推奨されます。BEAST については VULNERABLE と出ていますが、TLS 1.3 もサポートしているため実際のリスクは限定的です。このように検出結果の深刻度は文脈と合わせて判断することが重要です。
出力の見方
testssl.sh の出力では、問題の深刻度が色と記号で表示されます。
| 表示 | 意味 |
|---|---|
OK(緑) |
問題なし |
WARN(黄) |
注意が必要 |
NOT ok(赤) |
問題あり・修正推奨 |
VULNERABLE(赤) |
既知の脆弱性あり |
たとえば TLS 1.0/1.1 が有効な場合は offered (deprecated) と表示され、無効になっていれば not offered (OK) と表示されます。
よくある検出事項
- TLS 1.0/1.1 が有効になっている(PCI DSS等の基準では無効化が必要)
- SHA-1署名の証明書が使われている
- 証明書の有効期限が近い、または切れている
- 弱い暗号スイート(RC4等)が有効になっている
3. dirsearch — ディレクトリ・ファイル探索
概要
dirsearchは、Webアプリケーションの公開されていない隠しディレクトリやファイルを探索するツールです。バックアップファイル(.bak、.old)や管理画面(/admin、/wp-admin)が意図せず公開されていないかを確認できます。
動作の仕組み
ワードリスト(辞書ファイル)に記載されたパスに対してHTTPリクエストを送信し、レスポンスコードによって存在を判定します。
| ステータスコード | 意味 |
|---|---|
200 OK |
ファイル・ディレクトリが存在する |
301/302 |
リダイレクトされる(存在する可能性あり) |
403 Forbidden |
存在するがアクセス拒否されている |
404 Not Found |
存在しない |
403 のパスも「存在はしている」ため、診断対象として記録しておく必要があります。
よく使うコマンド例
# 基本スキャン python3 dirsearch.py -u https://example.com # 拡張子を指定(PHPサイトの場合など) python3 dirsearch.py -u https://example.com -e php,html,bak,old # スレッド数を増やして高速化 python3 dirsearch.py -u https://example.com -t 30 # 結果をファイルに保存 python3 dirsearch.py -u https://example.com -o result.txt # カスタムワードリストを使用 python3 dirsearch.py -u https://example.com -w /path/to/wordlist.txt
出力例
_|. _ _ _ _ _ _|_ v0.4.3 (_||| _) (/_(_|| (_| ) Extensions: php, html, bak | HTTP method: GET | Threads: 25 Target: https://example.com/ [10:23:46] 200 - 1KB - /index.php [10:23:47] 403 - 276B - /.git/ [10:23:48] 200 - 12KB - /admin/ [10:23:49] 200 - 4KB - /backup.zip [10:23:51] 301 - 178B - /images -> https://example.com/images/
上記の例では /admin/ と /backup.zip が 200 OK で返っており、管理画面とバックアップファイルが外部からアクセスできる状態です。また /.git/ は 403 ですが存在は確認できるため、Gitリポジトリが公開ディレクトリに残っている可能性があります。
主なオプション解説
-e: スキャン対象の拡張子を指定します。対象サイトで使われている言語・フレームワークに合わせて指定するのが効果的です。-t: 並列スレッド数です。増やすほど速くなりますが、対象サーバーへの負荷も上がります。-w: 使用するワードリストを指定します。デフォルトのリストで見つからない場合、用途に特化したリストに切り替えることがあります。--exclude-status: 除外するステータスコードを指定します。大量の404が出る場合に--exclude-status 404で結果を絞り込めます。
見つかると問題になるパスの例
| パス | リスク |
|---|---|
/admin、/wp-admin |
管理画面への不正アクセス |
/.git |
ソースコードの漏洩 |
/backup.zip、/db.sql |
バックアップファイルの漏洩 |
/.env |
環境変数(APIキー等)の漏洩 |
おわりに
3つとも無料・OSSで使えるツールです。
| ツール | 用途 | 対象 |
|---|---|---|
| Nmap | ポートスキャン・サービス検出 | ネットワーク・ホスト全般 |
| testssl.sh | SSL/TLS設定診断 | HTTPS・STARTTLSサービス |
| dirsearch | 隠しディレクトリ・ファイル探索 | Webアプリケーション |
有償ツール(Burp Suite・Nessus等)と組み合わせることが多いですが、まず無料ツールで試してみる入口として最適です。自分が管理するシステムの診断に、ぜひ活用してみてください。
参考
- Nmap 公式サイト : https://nmap.org
- testssl.sh GitHub : https://github.com/drwetter/testssl.sh
- dirsearch GitHub : https://github.com/maurosoria/dirsearch