2024年 7月23日公開
ペネトレーションテストツールとは ~侵入編~
ペネトレーションテストを実施する際、検査員は攻撃の段階や目的、検査対象システムの環境に合わせて様々なツールを駆使して検査を行います。本記事では検査対象システムに侵入するまでの「侵入フェーズ」で一般的によく使用されるツールを紹介し、各ツールの概要やペネトレーションテストにおける活用例などを解説します。
侵入フェーズでは攻撃の準備段階である「①公開情報の収集」と、脆弱性を探して悪用まで行う「②スキャン」の二つの段階に分けて紹介します。
はじめに
ペネトレーションテスト(Penetration Test)とは、実際の攻撃者視点でシステムへの侵入を試み、実在する脆弱性を悪用することでどういう被害が発生するかを検証するテスト手法の一種です。侵入テスト、ペネトレ、ペンテストなどと呼ばれることもあります。
ペネトレーションテストの概要については以下の記事で詳しく説明しているため、そちらをご参照ください。
ペネトレーションテストとは?知っておきたいペネトレの基本
ペネトレーションテストを行う際、手動のみで検査を行おうとすると時間と手間が非常にかかるため、様々なツールを活用して効率的に検査を行うのが一般的です。
今回はペネトレーションテストでよく使われるツールを「侵入フェーズ」と「侵入後活動フェーズ」の二つに大きく分けて紹介します。
本記事では前半パートとして、検査対象システムへ侵入するまでの「侵入フェーズ」でよく使用されるツールを解説していきます。
本記事で紹介するツールは、執筆時点の情報に基づいています。実際に利用する際は最新の情報を確認し、ご自身の責任でご使用ください。
※本記事で紹介するツールは悪用厳禁です!!
事前に許可を得ていないシステムに対して攻撃を行うと、不正アクセス禁止法に違反する可能性があります。
ペネトレーションテストの流れ
本題に入る前に、まずはペネトレーションテストの全体的な流れを紹介します。
下図は外部から侵入し、社内の機密情報(テスト用ファイル)を持ち出すシナリオ例です。
これはあくまでも一例で、実際は事前にテストの種類やゴール設定、禁止事項などを決めた後にシナリオを考えます。
【侵入フェーズ】
①インターネット上から、検査対象システムに関する公開情報(公開を意図していない情報も含む)を収集する。
②Webサイトやサーバーに対して脆弱性スキャンを行い、サーバー内部へ侵入できそうな脆弱性を探す。見つけた脆弱性を実際に悪用し、侵入に成功すると侵入後活動フェーズへ移行する。
【侵入後活動フェーズ】
③侵入後、遠隔操作用のプログラムをサーバー内部に設置する。
④検査員があらかじめ準備していたC&Cサーバー (*1) と③で設置したプログラムの通信を確立し、遠隔操作を開始する。
⑤侵入したシステム内を探索して脆弱性を探したり、さらなる攻撃に役立つような情報を収集する。
⑥侵入したアカウントの権限が一般ユーザーなどの場合、管理者権限への昇格を試行する。
⑦内部ネットワークのサーバーやほかの端末への侵入を試行する。
⑧事前に用意されていたテスト用の機密ファイルを探し、C&Cサーバーへ転送する。
以上が全体的な流れの一例です。次の章からはこの流れに沿って、各段階で使用されるツールを紹介していきます。
(*1) 「Command and Control Server」の略称で、C2サーバーとも呼ばれる。攻撃者(検査員)が侵入したサーバーを遠隔操作するために使用される。
侵入フェーズで使用されるツール
ここからは侵入フェーズで使用されるツールを紹介します。侵入後活動フェーズ(ペネトレーションテストの流れの③~⑧)で使用されるツールについては次回の記事で紹介します。
①公開情報の収集
実際に攻撃を開始する前に、まずは検査対象システムに関する公開されている情報を収集します。ここでは、公開情報を収集するツールを紹介します。
【概要】
Shodanは、インターネットに接続されたデバイスやサービスを検索するための検索エンジンです。
デバイスの開いているポート、OSの種類、ドメイン名、所在地(国名や都市)等を検索できます。
【ペネトレーションテストでの活用】
Shodanで検査対象システムを調べることで、脆弱なデバイスやサービスを特定するのに役立ちます。
活用例:
- ・ 外部に公開されているデバイスやサービスのスキャン
- ・ 特定のポートやサービスを開いているデバイスの検索
- ・ デフォルト設定や既知の脆弱性を持つデバイスの特定
【無償/有償】
無償版と有償版があります。
有償版は買い切りのメンバーシップアカウントのほかに、月額制のプランも存在します。
有償版では検索回数や検索結果の表示数が増えるほかに、高度なフィルタリング機能などが使用可能になります。
【概要】
Censysは、Shodanと同様にインターネットに接続されたデバイスやサービスを検索するための検索エンジンです。
Shodanとは異なり、有償版はなく無償版のみが提供されています。
【ペネトレーションテストでの活用】
Shodanと同様で、外部に公開されている脆弱なデバイスやサービスを特定するのに役立ちます。
活用例:
- ・ 特定のポートやサービスを開いているデバイスの検索
- ・ デフォルト設定や既知の脆弱性を持つデバイスの特定
【無償/有償】
無償で利用可能です。
【概要】
Maltegoは、公開情報の収集とリンク解析を行うためのツールです。
グラフィカルにデータの関係性を視覚化し、複雑なネットワークを分析する際に役立ちます。
【ペネトレーションテストでの活用】
検査対象に関する公開されている情報を収集し、取得したデータの関係性を分析する際に活用されます。
活用例:
- ・ ドメイン、IPアドレス、メールアドレスの収集と分析
- ・ ソーシャルメディアや公開データベースからの情報収集
- ・ データの関係性の視覚化
- ・ 複雑なネットワークの分析
【無償/有償】
無償版と有償版があります。
有償版では様々なデータソースや機能を使用可能になります。また、有償版は二つのプランがあり、使用可能なユーザー数やツールなどに違いがあります。
Google Dorks(※手法)
【概要】
Google Dorksはツールではなく、Googleの検索エンジンを使用して特定の情報を検索する手法のことを指します。
Google検索を行う際、特定の検索クエリを用いることで通常の検索では見つけにくい有用な情報を見つけることが可能になります。
【ペネトレーションテストでの活用】
公開されているWebページから潜在的な脆弱性や機密情報を収集するために使用されます。
活用例:
- ・ 意図せず公開されている機密ファイルやデータの検出
- ・ 本来は非公開であるべきデフォルトの設定ページや管理画面の検出
- ・ ディレクトリリスティング (*2) の検出
【無償/有償】
Googleの検索エンジンを活用する手法のため、無償です。
(*2) Webサーバー上の指定したディレクトリにあるファイルやサブディレクトリ一覧を表示する機能のこと。
②スキャン
公開されているWebサイトやサーバーに対して脆弱性スキャンを行い、サーバー内部へ侵入できそうな脆弱性を探します。脆弱性を発見した場合、実際にその脆弱性を悪用してサーバー内部への侵入を試みます。
ここでは脆弱性スキャンに関連するツールを紹介します。
【概要】
Nmapは、ネットワーク探索やセキュリティ監査で使用されるポートスキャンツールです。
ネットワーク上のデバイスやサービス、開いているポートの検出、OSの識別などを行うことが可能です。
【ペネトレーションテストでの活用】
検査対象のサーバーやネットワークに対してスキャンを実行し、検査対象システムの情報を収集します。
活用例:
- ・ 開いているポートとそのサービスの特定
- ・ OSおよびサービスの種類とバージョンの識別
- ・ ネットワーク内のデバイスの発見と、ネットワーク状況の把握
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
Nessusは、サーバーやネットワーク機器に対する脆弱性スキャンツールです。
ネットワーク内のデバイスをスキャンすることで、サーバーやネットワーク機器に存在する脆弱性や設定ミスの検出などを行うことが可能です。
【ペネトレーションテストでの活用】
サーバーやネットワーク機器に存在する脆弱性を検出する際に活用されます。
活用例:
- ・ サーバーやネットワーク機器に存在する脆弱性の検出
- ・ 検出した脆弱性の評価とレポート生成
【無償/有償】
無償版と有償版があります。
無償版(Nessu Essentials)はスキャン対象のIPアドレス数に制限があるため、一般的には有償版が使用されます。
有償版には二つのプランがあり、使用可能な機能に違いがあります。
【概要】
Dirbは、Webディレクトリを探索するためのツールです。
Webサーバー上に存在する隠しファイルやディレクトリを検出することが可能です。
ほかのWebディレクトリ探索ツールと比較すると、デフォルトで再帰的な探索を実施する点と、探索速度が緩やかな点が特徴的です。
【ペネトレーションテストでの活用】
Webサーバー上に存在する隠しファイルやディレクトリを調査する際に活用されます。
活用例:
- ・ 単語リストを使用したファイルとディレクトリの探索
- ・ HTTPステータスコードに基づいたファイルとディレクトリの検出
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
Gobusterは、Dirbと同様のWebディレクトリ探索ツールです。
Go言語で書かれており、ディレクトリ探索やサブドメインの検出に使用されます。ほかのWebディレクトリ探索ツールと比較すると、高速で探索を行う点が特徴的です。
【ペネトレーションテストでの活用】
Webサーバー上に存在する隠しファイルやディレクトリを調査する際に活用されます。
活用例:
- ・ 単語リストを使用したファイルとディレクトリの探索
- ・ HTTPステータスコードに基づいたファイルとディレクトリの検出
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
DirBusterは、DirbやGobusterと同様のWebディレクトリ探索ツールです。
ほかのツールと比較すると、GUIベースでの操作が可能で直感的な操作がしやすい点が特徴的です。
【ペネトレーションテストでの活用】
Webサーバー上に存在する隠しファイルやディレクトリを調査する際に活用されます。
活用例:
- ・ 単語リストを使用したファイルとディレクトリの探索
- ・ HTTPステータスコードに基づいたファイルとディレクトリの検出
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
Niktoは、Webサーバーに特化したCUIの脆弱性スキャンツールです。Webサーバーに存在する脆弱性や設定ミスなどを検出します。
【ペネトレーションテストでの活用】
Webサーバーに存在する脆弱性を調査する際に活用されます。
活用例:
- ・ Webサーバーに存在する脆弱性や設定ミスの検出
- ・ デフォルト設定など、望ましくない設定の検出
- ・ 本来は非公開にすべきディレクトリやファイルが公開されていることの検出
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
SSLScanは、Webサーバーなどが使用しているSSL/TLSの設定を確認・評価するためのツールです。
IPアドレスを指定するだけで簡単に使用でき、SSL/TLSの脆弱性を検出することも可能です。
【ペネトレーションテストでの活用】
検査対象システムのSSL/TLSの設定を確認し、弱い暗号の使用や脆弱性の存在を確認する際に活用されます。
活用例:
- ・ サーバーがサポートしている暗号スイートや証明書などの情報収集
- ・ 弱い暗号やSSL/TLSの脆弱性の評価
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
AutoReconは、ネットワークスキャンやデバイスの情報収集を自動化するためのツールです。
Nmap、Gobuster、SSLScanなどのツールを組み合わせた包括的なスキャンを実行します。
【ペネトレーションテストでの活用】
検査対象システムに対する初期段階の情報収集を自動化するために使用されます。
活用例:
- ・ ネットワークスキャンによるアクティブなデバイスと開いているポートの特定
- ・ 検出されたデバイスとポートに対応するサービスの識別と、詳細なバナー情報の収集
- ・ GobusterやDirbによるWebサーバー上の隠されたディレクトリやファイルの検出
- ・ NiktoやSSLScanによるWebサーバーやSSL/TLSの脆弱性の評価
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
Burp Suiteは、Webアプリケーションのセキュリティテストを行うためのローカルプロキシツールです。
脆弱性診断でよく使われており、Webアプリケーションに対する脆弱性スキャンを行うための機能が豊富に搭載されています。
【ペネトレーションテストでの活用】
Webアプリケーションの脆弱性を検出し、悪用する際に活用されます。
活用例:
- ・ Webサイトのクローリング
- ・ Webアプリケーションに対する脆弱性スキャンの実行
- ・ 手動による改ざんしたHTTPリクエストの送信
【無償/有償】
無償版と有償版があります。
無償版は様々な機能が制限されているため、脆弱性スキャンやログの保存などを行う場合は有償版を使用する必要があります。
【概要】
ZAP(Zed Attack Proxy)はBurp Suiteと同様で、Webアプリケーションのセキュリティテストを行うためのローカルプロキシツールです。
機能面ではBurp Suiteに劣るところもありますが、オープンソースソフトウェアのため無償で脆弱性スキャンを行えます。
【ペネトレーションテストでの活用】
Webアプリケーションの脆弱性を検出し、悪用する際に活用されます。
活用例:
- ・ Webサイトのクローリング
- ・ Webアプリケーションに対する脆弱性スキャンの実行
- ・ 手動による改ざんしたHTTPリクエストの送信
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
SQLMapは、SQLインジェクション (*3) に特化した攻撃ツールです。
SQLインジェクションの様々な攻撃パターンを自動で検証することが可能です。
【ペネトレーションテストでの活用】
Webアプリケーションに存在するSQLインジェクションの脆弱性を検出し、悪用する際に活用されます。
活用例:
- ・ SQLインジェクションの検出
- ・ SQLインジェクションを悪用した情報の抽出やデータベースの操作
【無償/有償】
無償のオープンソースソフトウェアです。
(*3) SQLインジェクションとは、外部からデータベースを不正に操作可能な脆弱性で、データの窃取や改ざん、削除などの被害を受ける可能性がある。
【概要】
Hydraは、様々なプロトコルに対するパスワードクラックツールで、リモート認証サービスに対して総当たり攻撃や辞書攻撃などを行えます。
FTP、SSH、HTTP、LDAPなど多数のプロトコルに対応しています。
【ペネトレーションテストでの活用】
リモート認証サービスに対してパスワードクラックを行う際に活用されます。
活用例:
- ・ FTP、SSH、HTTP、LDAPなどに対する総当たり攻撃や辞書攻撃の実施
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
Medusaは、Hydraと同様のリモート認証サービスに対するパスワードクラックツールです。
Medusaも様々なプロトコルに対応しており、並列処理による総当たり攻撃や辞書攻撃が可能です。
【ペネトレーションテストでの活用】
リモート認証サービスに対してパスワードクラックを行う際に活用されます。
活用例:
- ・ FTP、SSH、HTTP、SMBなどに対する総当たり攻撃や辞書攻撃の実施
【無償/有償】
無償のオープンソースソフトウェアです。
そのほかの便利ツール
ここでは、厳密には上記の「①公開情報の収集」や「②スキャン」には当てはまりませんが、侵入フェーズでよく使用される便利なツールを紹介します。
【概要】
Metasploitは、ペネトレーションテスト用の統合ツールです。
幅広い機能が搭載されているため、情報収集やスキャンだけではなく、侵入後活動フェーズの各段階においても使用されます。
【ペネトレーションテストでの活用】
侵入フェーズにおいては、ネットワークスキャンや脆弱性の検出、検出した脆弱性を悪用する際などに活用されます。
活用例:
- ・ ネットワークスキャンや脆弱性スキャンの実行
- ・ 検出した脆弱性を悪用した攻撃の実行
- ・ 侵入後の様々な活動
【無償/有償】
無償版と有償版があります。
無償版はオープンソースソフトウェアとして、有償版はMetasploit Proとして提供されています。
有償版はGUIによる操作が可能で、さらに無償版にはない自動化機能やフィッシングキャンペーン機能など、様々な機能が追加されています。
【概要】
Aircrack-ngスイートは、Wi-Fi(無線LAN)ネットワークのセキュリティを評価するためのツールセットです。
暗号鍵の特定やパケットキャプチャ、ネットワーク解析などを行うことが可能です。
【ペネトレーションテストでの活用】
検査対象システムがWi-Fiネットワークに接続している場合に、Wi-Fiに関する脆弱性を検出・悪用する際に活用されます。
活用例:
- ・ WEPおよびWPA/WPA2-PSK暗号鍵の特定
- ・ ネットワークパケットのキャプチャと解析
- ・ パケットインジェクション (*4) およびリプレイ攻撃 (*5) の実行
【無償/有償】
無償のオープンソースソフトウェアです。
(*4) パケットインジェクションとは、攻撃者が作成した悪意のあるパケットを挿入する攻撃のこと。
(*5) リプレイ攻撃とは、キャプチャした正当なパケットをそのまま再送信する攻撃のこと。たとえば盗聴して得た認証データをそのまま再送信することで、本人になりすませる可能性がある。
【概要】
Wiresharkは、パケットキャプチャおよびパケットの解析が可能なネットワーク分析ツールです。
GUIで操作可能で、ネットワークトラフィックをリアルタイムで詳細に解析することも可能です。
【ペネトレーションテストでの活用】
ネットワークトラフィックを解析することでネットワークの脆弱性を特定したり、情報収集を行う際に活用されます。
活用例:
- ・ パケットキャプチャと解析
- ・ プロトコルの詳細な解析
- ・ ネットワークの脆弱性の特定
【無償/有償】
無償のオープンソースソフトウェアです。
【概要】
tcpdumpは、Wiresharkと同様のパケットキャプチャおよびパケットの解析が可能なネットワーク分析ツールです。
Wiresharkとは異なりCUIベースのため、軽量かつほかのCUIツールと連携しやすい点が特徴的です。
【ペネトレーションテストでの活用】
パケットキャプチャと基本的な解析を行う際に活用されます。
活用例:
- ・ パケットキャプチャと解析
- ・ プロトコルの詳細な解析
- ・ ネットワークの脆弱性の特定
【無償/有償】
無償のオープンソースソフトウェアです。
まとめ
本記事では、ペネトレーションテストで検査対象システムに侵入するまでの「侵入フェーズ」でよく使われるツールを紹介しました。
今回は代表的なツールを紹介しましたが、まだまだ紹介しきれていないツールも存在します。
実際のペネトレーションテストでは、ここで紹介したような様々なツールを目的や環境によって使い分けたり、複数のツールを組み合わせたりして検査を行っていきます。
次回は後半パートとして、検査対象システムに侵入した後の「侵入後活動フェーズ」で使用されるツールを紹介します。