ホーム
Topics
ペネトレーションテスト
ペネトレーション・テスト(別名ペン・テスト)とは、模擬的なサイバー攻撃を仕掛けることで、コンピューター・システムの脆弱性を見つけるセキュリティー・テストのことです。
ハッキング・ツールや技術を悪用するのではなく、セキュリティー上の脆弱性を修正することを目的とした、倫理的ハッキング技術に熟練したセキュリティー専門家がこのテストを実施します。企業はペネトレーション・テストの実施者(ペンテスター)を雇い、アプリケーション、ネットワーク、その他資産に対して模擬攻撃を開始します。ペンテスターが偽の攻撃を仕掛けることで、セキュリティー・チームは重大なセキュリティー上の脆弱性を発見することができ、全体的なセキュリティー体制を強化できます。
「倫理的ハッキング」と「ペネトレーション・テスト」という用語は同じ意味で使用されることがありますが、厳密には違いがあります。倫理的ハッキングは、ネットワーク上のセキュリティーを強化するためのハッキング・スキルの使用を含む、より広範なサイバー・セキュリティーの一分野を指します。一方でペネトレーション・テストは、倫理的ハッキングの実行者が使用する手法の1つにすぎません。倫理的ハッキングの実行者は、マルウェア分析、リスク評価、その他のサービスを提供する場合もあります。
最新のデータ侵害コストに関する調査を使用して、データ侵害のリスクをより適切に管理するためのインサイトを入手します。
企業がペネトレーション・テストを実施する理由は主に3つあります。
ペネトレーション・テストは、脆弱性評価だけを行うよりも包括的な結果を得られる。 またペネトレーション・テストと脆弱性評価はどちらも、セキュリティー・チームがアプリケーション、デバイス、ネットワーク上の脆弱性を特定する目的で活用されます。ただし、これらの方法は目的が若干異なるため、多くの組織はどちらか一方を選ぶのではなく、両方を実施することが一般的です。
脆弱性評価は通常、システム内の既知の脆弱性を探し、見直せるようフラグを立てるために定期的に実施される自動スキャンのことです。セキュリティー・チームは脆弱性評価により、一般的な欠陥を迅速にチェックします。
一方でペネトレーション・テストにはさらに一歩踏み込んだチェック機能があります。それはペンテスターが発見した脆弱性をハッカーを模倣した模擬攻撃で利用してみる、というプロセスです。そうすることでセキュリティー・チームは、実際のハッカーがどのように脆弱性を悪用して機密データにアクセスしたり、業務を妨害するのか、理解を深めることができます。さらにハッカーが何を行うかを推測するだけはなく、この知識を用いてサイバー脅威に対する現実的なネットワーク・セキュリティー対策の設計にも役立てることができます。
ペンテスターは自動プロセスと手動プロセスの両方を駆使して、既知および未知の脆弱性の発見に努めます。また、発見した脆弱性を積極的に利用するため、誤検知が発生する可能性は低くなります。ペンテスターが欠陥を利用できるのであれば、サイバー犯罪者も悪用できるでしょう。ペネトレーション・テスト・サービスは、ハッカーの視点からシステムにアプローチする外部セキュリティー専門家により提供されるため、社内のセキュリティー・チームが見逃した脆弱性が発見されることもよくあります。
サイバーセキュリティーの専門家が、ペネトレーション・テストの実施を推奨。多くのサイバーセキュリティーの専門家や規制当局は、事前対応型のセキュリティー対策としてペネトレーション・テストの実施を推奨しています。例えば2021年、米国連邦政府(ibm.com外部へのリンク)は、増加するランサムウェア攻撃を防ぐため、ペネトレーション・テストを実施するよう企業に促しました。
ペネトレーション・テストは法規制への準拠をサポート。医療保険の相互運用性と説明責任に関する法律(HIPAA法)や一般データ保護規則(GDPR)をはじめとするデータ・セキュリティー規制では、特定のセキュリティー管理が義務付けられていることがあります。ペネトレーション・テストは、企業が意図したとおりの制御が機能することを確認することで、これらの規制への準拠を証明する際に役立ちます。
他の規制では、ペネトレーション・テストが明示的に要求されています。クレジット・カード業界データ・セキュリティー基準(PCI DSS)では、定期的な「内部と外部のペネトレーション・テスト」を特に要求しています(ibm.com外部へのリンク)。
ペネトレーション・テストは、ISO/IEC 27001(ibm.com外部へのリンク)などの自主的な情報セキュリティー規格への準拠もサポートします。
すべてのペネトレーション・テストには、企業のコンピューター・システムに対する模擬攻撃が含まれますが、実施されるテストの種類によって、攻撃対象となる企業資産の種類も異なります。
アプリケーションのペネトレーション・テストでは、WebアプリケーションやWebサイト、モバイル・アプリやIoTアプリケーション、クラウド・アプリケーション、アプリケーション・プログラミング・インターフェース(API)などのアプリケーションや関連システムの脆弱性を探し出します。
多くの場合、ペンテスターは、オープン・ウェブ・アプリケーション・セキュリティー・プロジェクト(OWASP)トップ10(ibm.com外部へのリンク)にリストされている脆弱性を検索することから始めます。OWASPトップ10とは、Webアプリケーションにおける最重要脆弱性のリストのことです。このリストはサイバーセキュリティー情勢の変化を反映するために定期的に更新されますが、一般的な脆弱性には悪意あるコードの挿入、構成ミス、認証の失敗などがあります。OWASPトップ10以外にも、対象のアプリケーション特有の、あまり一般的ではないセキュリティー上の欠陥や脆弱性も探し出されます。
ネットワークのペネトレーション・テストは、会社のコンピューター・ネットワーク全体を対象にして行われます。このテストには、大きく分けて外部テストと内部テストの2つのタイプがあります。
外部テストでは、ペンテスターが外部ハッカーの動作を模倣して、サーバー、ルーター、Webサイト、従業員のコンピューターなどのインターネットに接続された資産のセキュリティー上の問題を特定します。外部からネットワークに侵入を試みるため、これらは「外部テスト」と呼ばれます。
一方、内部テストでは、ペンテスターは悪意のある内部者や盗まれた資格情報を持つハッカーの行動を模倣します。このテストの目的は、ネットワーク内部から悪用される脆弱性(例えば、アクセス権限を悪用して機密データを盗むなど)を明らかにすることです。
このセキュリティー・テストでは、ノートPC、モバイル・デバイス、IoTデバイス、運用技術(OT)など、ネットワークに接続されたデバイスの脆弱性が調査されます。
ペンテスターは、ハッカーがエンドポイントへのリモート・アクセスを得ることを目的とした場合のオペレーティング・システムのエクスプロイトなど、ソフトウェアの欠陥を調べます。悪意ある攻撃者が侵入する可能性のある不適切に保護されたデータセンターなど、物理的な脆弱性を探す場合もあります。侵害されたデバイスからネットワークの他の部分への移動経路の評価も行います。
人材のペネトレーション・テストは、サイバーセキュリティーと関連した従業員の意識における弱点を評価するためのものです。簡単に言えば、企業がソーシャル・エンジニアリング攻撃に対してどの程度脆弱かを測るテストです。
人材のペン・テスターは、フィッシング、ヴィッシング(音声フィッシング)、スミッシング(SMSフィッシング)などの手法を使用して、従業員を騙して機密情報を漏洩させることを試みます。また、オフィスの物理的なセキュリティーを評価することもあります。例えば、ペンテスターが配達員に変装し、建物への侵入を試みます。「共連れ」と呼ばれるこの手法は、現実世界の犯罪者がよく使う手口です。
ペネトレーション・テストを開始する前に、テスト・チームと会社はテストの範囲を設定します。この範囲では、どのシステムがテストされるのか、いつテストが行われるのか、ペネトレーション・テストの実施者が使用できる方法が概説されます。テスト範囲は、ペネトレーション・テストの実施者が事前にどの程度の情報を取得できるかも決定します。
ブラックボックス・テストでは、ペネトレーション・テストの実施者は攻撃対象となるシステムに関する情報を持ちません。実際のハッカーが行うように、攻撃計画を立てるために独自の調査に頼る必要があります。
ホワイトボックス・テストでは、ペネトレーション・テストの実施者は攻撃対象となるシステムに対するあらゆる情報を持ちます。企業は、ネットワーク図、ソースコード、認証情報などの詳細を共有します。
グレーボックス・テストでは、ペンテスターには限られた情報しか与えられません。例えば、企業がネットワーク・デバイスのIP範囲を共有する場合もありますが、ペンテスターは自らそれらのIP範囲の脆弱性を調査する必要があります。
範囲が設定されたら、テストを開始します。ペネトレーション・テストの実施者は、いくつかのペネトレーション・テストの手順に従う場合があります。一般的なものとしては、OWASPのアプリケーション・セキュリティー・テスト・ガイドライン(ibm.com外部へのリンク)やペネトレーション・テスト実行標準(PTES)(ibm.com外部へのリンク)、および米国国立標準技術研究所(NIST)SP 800-115(ibm.com外部へのリンク)などがあります。
どの方法が使用されてもテストのプロセスは通常、以下の手順で実施されます。
テスト・チームは攻撃対象となるシステムに関する情報を収集します。攻撃対象に応じてさまざまな偵察方法が使用されます。例えば、攻撃対象がアプリの場合、そのソースコードを調べるかもしれません。攻撃対象がネットワーク全体の場合、パケット・アナライザーを使用して、ネットワーク・トラフィック・フローが検査されることがあります。
ペネトレーション・テストの実施者は、オープンソース・インテリジェンス(OSINT)もよく活用しています。ペネトレーション・テストの実施者は、公開された文書やニュース記事、さらには従業員のソーシャル・メディアやGitHubアカウントを確認して攻撃対象に関する貴重な情報を収集します。
ペンテスターは、偵察ステップで得た知識を利用して、システム内の悪用されかねない脆弱性を特定します。例えば、ペンテスターは、Nmapなどのポート・スキャナーを使用して、マルウェアを送信可能で、悪用できそうなポートを探します。ソーシャル・エンジニアリングのテストでは、従業員の認証情報を盗むためのフィッシング・メールに使用する、偽のストーリー、つまり「口実」を作成することがあります。
ペンテスターはセキュリティー機能が侵入にどのように反応するかを確認する場合があります。例えば、不審なトラフィックを会社のファイアウォールに送信して反応を見ます。得られた結果を活用して、残りのテストで検知されないように工夫します。
テスト・チームは実際の攻撃を開始します。ペンテスターは、攻撃対象のシステム、発見した脆弱性、テストの範囲に応じて、さまざまな攻撃を試みます。一般的にテストされる攻撃は、次のようなものがあります。
SQLインジェクション:テスト実施者が悪意のあるコードを入力フィールドに入力し、ウェブページまたはアプリに機密データを開示させようとします。
クロスサイト・スクリプティング:テスト実施者が、企業のウェブサイトに悪意のあるコードを埋め込もうとします。
サービス拒否攻撃:ペネトレーション・テスト実施者が、サーバーやアプリ、その他のネットワーク・リソースにトラフィックを大量に送信してオフラインにしようとします。
ソーシャル・エンジニアリング:ペネトレーション・テスト実施者が、フィッシングやおとり、プリテキスティング、またはその他の戦術を使用して、従業員をだましてネットワーク・セキュリティーを侵害します。
ブルート・フォース攻撃:ペネトレーション・テストの実施者は、いくつかのパスワードを生成し、機能するまでテストするスクリプトを実行して、システムに侵入しようとします。
中間者攻撃: ペンテスターは、2つのデバイスまたはユーザー間のトラフィックを傍受して、機密情報を盗んだり、マルウェアを仕掛けます。
ペネトレーション・テストの実施者は、脆弱性を悪用してシステムへの足がかりを得ると、移動してさらに多くのシステムにアクセスしようとします。この段階では、ペネトレーション・テストの実施者が脆弱性から脆弱性へと横移動してネットワークの奥深くまで侵入するため、「脆弱性連鎖」と呼ばれることもあります。例えば、従業員のコンピューターにキーロガーを仕掛けることから始めるかもしれません。そのキーロガーを使用すると、従業員の資格情報を取得できます。これらの資格情報を使用して、機密データベースにアクセスします。
この段階でのペネトレーション・テストの実施者の目標は、セキュリティー対策を回避しながらアクセスを維持し、より多くのシステムや情報に侵入できるようにすること(エスカレーション)です。ペネトレーション・テストの実施者はこれらすべての手順を、攻撃者として捕まるまで、数週間、数カ月、または数年間かけてシステムに潜む可能性がある標的に対して持続的に行われる攻撃(APT攻撃)を模倣します。
模擬攻撃が終わると、ペネトレーション・テストの実施者は、仕掛けたバックドア型トロイの木馬や変更したコンフィギュレーションなど、自分たちが残した痕跡を一掃し、実際のハッカーがペネトレーション・テストの実施者のエクスプロイトを利用してネットワークに侵入できないようにします。
この段階では、攻撃に関するレポートが作成されます。レポートには通常、発見された脆弱性、使用したエクスプロイト、セキュリティー対策を回避した方法の詳細、システム内部で行なったことなどに関する説明が記載されます。脆弱性の修復に関する具体的な推奨事項も含む場合があります。社内セキュリティー・チームはこの情報を使用して、現実世界の攻撃に対する防御を強化して行くことができます。
ペンテスターは、さまざまなツールを使用して偵察を実施し、脆弱性を検知し、テスト手順の主要な部分を自動化します。最も一般的な戦術には次のものがあります。
専用のオペレーティング・システム:多くのペンテスターたちは、ペネトレーション・テストや倫理的ハッキングのために設計された専用OSを使用しています。最も人気があるのは、Nmap、Wireshark、Metasploitなどのペン・テスト・ツールがプリインストールされた、オープンソースとしてLinuxが配布した「Kali Linux」です。
認証情報クラッキング・ツール:これらのプログラムは、暗号を解読したり、ブルート・フォース攻撃を開始したりすることでパスワードを明らかにすることができ、ボットやスクリプトを使用して潜在的なパスワードを自動的に生成し、アクセスできるまでパスワードのテストを繰り返します。例としては、Medusa、Hyrda、Hashcat、John the Ripperなどが挙げられます。
ポート・スキャナー: ポート・スキャナーを使用すると、ペンテスターは、ネットワークへの侵入に悪用できる箇所がポートにあるかどうかをリモートでテストできます。Nmapは最も広く使用されているポート・スキャナーですが、masscanやZMapもよく使用されています。
脆弱性スキャナー:脆弱性スキャナーは、既知の脆弱性についてシステムを偵察し、ペンテスターが攻撃対象への潜在的な侵入口を素早く見つけることを可能にします。Nessus、Core Impact、Netsparkerなどがあります。
Web脆弱性スキャナーは、WebアプリケーションやWebサイトを評価する脆弱性スキャナーに含まれる一機能です。例えば、Burp SuiteやOWASPのZed Attack Proxy(ZAP)などがあります。
パケット・アナライザー:ペンテスターは、パケット・スニファーとも呼ばれるパケット・アナライザーを使用し、パケットをキャプチャーして検査することでネットワーク・トラフィックを分析できます。また、トラフィックがどこから来ているのか、どこに向かっているのか、場合によってはどのようなデータが含まれているのかを把握できます。Wiresharkとtcpdumpは、最も一般的に使用されているパケット・アナライザーです。
Metasploit:Metasploitは、多数の機能を備えたペネトレーションテストフレームワークです。最も重要なことは、Metasploitを使用すると、ペンテスターがサイバー攻撃を自動化できるようになります。Metasploitには、事前に作成されたエクスプロイト・コードとペイロードのライブラリーが組み込まれています。ペンテスターはエクスプロイトを選択し、これをペイロードに仕組んでから攻撃対象のシステムに転送し、残りの処理はMetasploitに任せることができます。
最も重要な資産を攻撃にさらす脆弱性を発見して修正するために、アプリケーション、ネットワーク、ハードウェア、担当者に対してペネトレーション・テストを行います。
X-Force Redは、組織に侵入して、攻撃者が個人的な利益のために利用するリスクの高い脆弱性を明らかにする、エシカル・ハッカーのグローバル・チームです。
脅威ハンティングは、組織のネットワーク内で未知の脅威、または現在進行中で未修復の脅威を特定する事前対応型のアプローチです。
サイバー攻撃とは、コンピューター・システムへ不正にアクセスし、情報の盗難、公開、改ざん、無効化、さらに破壊を行う望ましくない試みのことです。
内部脅威とは、企業資産への正当なアクセスを許可されたユーザーが、意図的または偶発的に資産を悪用することです。