ビジネス&テクノロジー
ペネトレーションテストは、組織が弱点やセキュリティギャップを特定し、攻撃者に悪用される前に 減災策を講じるのに役立ちます。侵害の平均コストが世界で380万ドルを超え、米国では1件あたり860万ドルを超えていることを考えると、ペネトレーションテストの価値は明らかです。
FortiGuard Labs は、組織がシステムやネットワークの相対的なセキュリティを評価するための複数のサービスやツールを提供しています。FortiPenTestは、OWASP Top 10をベースにしたクラウドベースのペネトレーションテスト・アズ・ア・サービスのツールです。OWASP Top 10 は、開発者やWebアプリケーションセキュリティソリューションが最も一般的な脅威に対して適切な防御を行うために使用する標準的なフレームワークです。このフレームワークは、システムアナリストやペネトレーションテスト担当者が、攻撃者に悪用される前に問題を発見するためにも使用されています。
FortiPenTest v21.2では、FortiPenTest Scripting Engine(FSE)というエクスプロイトエンジンが導入されており、セキュリティ担当者はターゲットとなるネットワーク上でホストされている潜在的なアプリケーションの脆弱性を調査し、脆弱性が見つかったアプリケーションのエクスプロイトの可能性を判断することができます。この重要な機能により、FortiPenTestは実世界の攻撃をより正確にシミュレートすることができ、開発者やセキュリティチームは、敵対者による典型的な攻撃シナリオがどのように実行されるかについて、より多くのインサイトを得ることができます。
FortiPenTestは、様々な技術を活用してターゲットとなるシステムのセキュリティ脆弱性をテストします。FSEはLuaフレームワークを活用しており、ユーザーはFortiGuard Labs独自のスクリプト言語を使ってシグネチャを書くことができます。FortiPenTestは、これらのシグネチャを処理して、ターゲットアプリケーションの脆弱性を検査、判定します。Luaを採用した理由は、Luaは実行速度が速いため、シッククライアントやネットワークアプリケーションを問わず、多くの一般的なアプリケーションで使用されている一般的なスクリプト言語だからです。軽量で、学習曲線が短く、高速な実行が可能です。
FSEは、スクリプト開発者がHTTP、FTP、SMB、DNSなどのさまざまなネットワークプロトコルとのインタラクティブなアプリケーションプログラミングインターフェース(API)を提供しています。このような柔軟性のあるプロトコルにより、スクリプト開発者は、ソフトウェア開発時に低レベルのプログラマーが通常扱う必要のある従来のAPI初期化ルーチンをあまり気にすることなく、検出ロジックに集中することができます。
以下の図は、FortPenTest の FSE アーキテクチャのハイレベルな概要を示しています。
図1を見ると、FSEがサポートするシグネチャには、カスタムシグネチャとグループシグネチャの2種類があることがわかります。
カスタムシグネチャは、オンデマンドシグネチャとして扱うことができます。カスタムシグネチャは、ユーザーがアップロードできる1つのスクリプトファイルであり、スクリプトで指定された内容が最終的にFSEによって実行されます。
グループシグネチャは、社内のアナリストが開発したPOC(概念実証)のエクスプロイトシグネチャのコレクションです。このコレクションは、WordPress、Joomla、Apache Struts、Microsoft Exchange Serverなどの標的性の高いアプリケーションを含む、幅広いアプリケーションをカバーしています。これらのシグネチャの目的は、潜在的な脆弱性があると考えられるアセットに対して、Nデイエクスプロイト評価を行うことです。なお、グループシグネチャが対象とするNデイエクスプロイトの中には、FortiGuard Labsのゼロデイリサーチに基づいたものもあります。
ファジングは、ソフトウェアテストの手法の一つで、アプリケーションに無効なデータ、予期しないデータ、ランダムなデータを入力します。アプリケーションは、クラッシュ、メモリリーク、マルウェアに悪用される可能性のあるコードアサーションの失敗などを監視します。
自動化されたファザーモジュールは、FortiPenTestの脆弱性スキャン操作の主要なコンポーネントです。このモジュールには、図2に示すような一連のファザーモジュールが含まれており、OWASPトップ10に基づくさまざまな脆弱性についてアプリケーションを検査します。
ファザーモジュールが提供するアプリケーションの脆弱性検査と、エクスプロイトシグネチャの間には、いくつかの類似点がありますが、ファザーモジュールは、脆弱性を発見した後にエクスプロイトテストを行うわけではないことを覚えておくことが重要です。 ファザーモジュールは、比較的攻撃的で汎用的な脆弱性パターンを適用することで、他の方法では発見が困難な潜在的なソフトウェアバグを発見します。しかし、それらのバグの悪用性をテストするわけではないので、ファザーモジュールは偽陽性になりやすいことに留意する必要があります。
ここでいう誤検知とは、効率的にエクスプロイトができないソフトウェアのバグのことです。FortiPenTestのファザーモジュールがすべての脆弱性を攻略するわけではないのは、そのような行為が攻略の過程で望ましくない動作を引き起こす可能性があるためです。ハッカーはソフトウェア開発者と同じように目的を持っており、悪意のある目的のために活用できる脆弱性のみをターゲットにします。そのため、FortiPenTestでは、ファジングなどで発見された脆弱性を分類し、適切な対策を講じることができるように、正確な脆弱性パターンを用意しています。
FSEには、特定のアプリケーションの脆弱性、特にCVE(Common Vulnerabilities and Exposures)番号が付与されているもの、を識別して、エクスプロイトテストを実行するために設計された幅広いグループシグネチャが用意されています。注意点は、グループシグネチャはデフォルトでは有効になっていないことです。図5に示すように、ユーザーは「Scan Configuration」ページで明示的にグループシグネチャを有効にする必要があります。
しかし、重要な問題は、ユーザがどのような場合にグループシグネチャを有効にすべきかということです。いくつかの使用例がありますが、最も一般的なのは、アプリケーションが、広く悪用されているNデイの脆弱性に対して脆弱であるかどうかを調べたいが、手動でテストを実行できない、あるいは実行したくない場合です。このような場合、FSEを使えば、一連のグループシグネチャを自動的に実行することができます。
ただし、各グループシグネチャは特定の脆弱なアプリケーションに対応しているため、テストしたいアプリケーションのグループシグネチャのみを実行することに留意する必要があります。1つのアセットに対してすべてのグループシグネチャを実行すると、より多くのリソースを消費し、完了までに時間がかかり、異なる結果にはなりません。
FSEは、SAPとWordPressアプリケーションのグループシグネチャを提供しています。(現在サポートしているアプリケーションのCVEの全リストはFortiPenTest v21.2のユーザーガイドに記載されています。) ここでは、グループシグネチャを活用して、SAP ERPシステム バージョン7.5の潜在的な脆弱性を検査する方法をご紹介します。
i. アセットの認証が完了したら、設定ページに移動し、「オプション」の下にあるプラスアイコンをクリックします。
ii. 続いて「Scan Configuration」ページがポップアップします。ここでは、HTTPプロキシ、認証方法、アセットの認証に使用するクレデンシャルなどの追加設定を入力することができます。また、対象となるアセットが使用する認証情報を入力する必要があります。このFSEの例では、SAP ERPシステムがデフォルトの認証情報を使用していない場合、SAPシグネチャでは新しい認証情報の入力が必要となります。そうしないと、SAPグループのシグネチャは脆弱性を正しく検出することができません。
iii. 「NEXT」をクリックすると、「Exploit Engine」タブが表示されます。ここでは、グループシグネチャのリストが表示されます。この例では、sapグループシグネチャを選択しました。(この例では、sapグループシグネチャを選択しました。これは、より良い結果を得ることなく、プロセスに多大な時間とオーバーヘッドを追加することになります)。グループシグネチャを選択すると、グループシグネチャが有効になり、図5に示すように、アプリケーションリストから少なくとも1つのカテゴリを選択すると、FortiPenTestによって実行されます。
iv. 最後のタブに到達するまで「NEXT」ボタンをクリックし、「SAVE」ボタンをクリックして、スキャンプロセスを開始する前に設定した設定を保存することを確認してください。
v. アセットの複雑さによっては、スキャン処理に時間がかかる場合があります。スキャンが完了すると、図7のように結果が表示されます。
vi. 対象アセットのルートURL、つまりURIのリストから最初のエントリをクリックすると、FSEの結果を取り出すことができます。
図8に示された出力から、Vulnerability Stateのコードが次のように変換できることは注目に値します。
グループシグネチャのほとんどは、VulnerableとExploitableのコードを使用しています。このコードは、侵害の結果を通知するために使用されます。例えば、Vulnerableコードは、アセットがDescriptionで定義された脆弱性の影響を受けているが、既知のエクスプロイト可能なシグネチャを持っていない場合に使用されます。Exploitableコードが返された場合、そのアセットは脆弱性と悪用可能性の両方があると判断されます。この場合、FortiPenTestは共通脆弱性評価システム (CVSS : Common Vulnerability Scoring System)を提供します。CVSSは、脆弱性の主要な特徴を把握し、その深刻度を反映した数値スコアを生成する業界標準のスコアリングシステムです。
このグループシグネチャーで使用されたエクスプロイトペイロードは、悪意や有害性を持つものではありませんのでご安心ください。しかし、ペイロードは、エクスプロイトの証明として、脆弱性のあるサーバ上にいくつかのアーティファクトを作成します。例えば、グループシグネチャが悪用しようとしている脆弱性の種類に応じて、ダミーのファイルをドロップしたり、ダミーのユーザーアカウントを作成したりします。便利なことに、これらの成果物は、エクスプロイト後の段階でグループシグネチャによってクリーンアップされます。セキュリティ担当者にとって最も重要なことは、FSE スキャンの結果から「修復」のセクションで述べたカスタムルールを活用して、フォーティネットの FortiGate Intrusion Prevention System(IPS)を介してネットワークアプリケーションを保護できることです。既存のFortiGateユーザーの場合、図10に示すように、提供されたカスタムルールをFortiGateデバイスに適用することができます。
FortiGateにアプリケーション制御シグネチャを追加する方法については、こちらの管理者向けガイドでより詳細なステップバイステップの説明を行っています。
フォーティネットの脅威インテリジェンスおよび研究組織であるFortiGuard Labsは、さまざまな先進的な独自技術を用いて、フォーティネットのお客様に世界レベルの保護を提供しています。多くのお客様に長年利用されている技術の一つにFortiGuard IPSがあります。FortiPenTestのエクスプロイトエンジンは、お客様のネットワーク環境で稼働している脆弱なアプリケーションを検出することで得られるIPSのインテリジェンスを活用しています。このデータはその後、FortiGuard Labsのアナリストがエクスプロイトのシグネチャを作成するための重要なソースとして使用されます。
また、FortiGuard Labsのアナリストは、攻撃シグネチャに関連するアプリケーションが特定されると、それに対応するFSEエクスプロイトシグネチャを作成する可能性を判断します。公開されているPOCに基づいて開発されたエクスプロイトシグネチャとは異なり、新しいエクスプロイトシグネチャの開発プロセスは、かなりの量の調査が必要となるため、一般的に時間がかかります。そのため、このタイプのエクスプロイトシグネチャは、他のソースから派生したものとは区別しています。図11に示すスキャン出力から、FortiGuard IPSのエンサイクロペディアのリンクが見えます。検出されたエクスプロイトシグネチャが、当社のIPSインテリジェンスフィードに由来するものかどうかを識別します。
この概要では、FortiPenTest FSEのデザインと、FortiPenTestの結果をFortiGate導入時の新しいIPSルールのベースとして使用する方法など、通常のネットワークアプリケーション評価プロセスにどのような価値を付加できるかについて説明しました。また、指定したネットワークアプリケーションに対してグループシグネチャを使用して自動化されたエクスプロイトテストを実行する方法についても簡単にご紹介しました。
次回の記事では、新しいカスタムシグネチャなど、FSEのエキサイティングな機能についてご紹介します。それまでは、このデモでFortiPenTestの詳細を確認し、安全にお過ごしください!
[1] FortiPenTest Fuzzer Modules - https://docs.fortinet.com/document/fortipentest/21.2.0/fortipentest-user-guide/966543/what-is-fortipentest#Fuzzer_Module
[2] FortiPenTest Complete User Code - https://fortinetweb.s3.amazonaws.com/docs.fortinet.com/v2/attachments/e7c37db1-983a-11eb-b70b-00505692583a/FortiPenTest-21.2-User_Guide.pdf