本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。

最新情報

2021.05.24

ペネトレーションテストの過程でゼロデイを発見した話

筆者が担当するペネトレーションテストでは、お客様のご要望や環境に合わせて攻撃手順であるシナリオを作成し、リスク評価を実施します。お客様から頂くご要望として、特定のシステムへの侵入を懸念されているケースや標的型攻撃などへの耐性を評価したいなどが挙げられます。ペネトレーションテストでシナリオを作成する際に、お客様のご要望を踏まえて「ゴール」、「スコープ」、「レギュレーション」を定義します。

20210524_zeroday_fig1.pngFigure 1 テスト前に定義する項目

ゴール

「ゴール」は、テストにおける目標になります。お客様のご要望を踏まえて特定のサーバーに管理者権限で侵入することや特定のデータが持ち出せることなど設定します。ゴール設定はお客様と連携しながら設定しますが、ゴール設定が決まらない時にお客様のビジネスにおいて一番インパクトのあることは何かを確認し、優先順位に基づきゴールをご提案します。

スコープ

「スコープ」は、テストの実施範囲になります。どこまでをテストの範囲とするか定義します。お客様のネットワークすべてをスコープにする場合もあれば、特定のIPアドレス、セグメントのみをスコープとするケースもあります。ただ、一般的に攻撃者はスコープなどを考慮せずに目標とするサーバーへの侵入や情報搾取を行うと推測されるため、より現実的なリスクを評価する場合に、業務影響などを鑑みた上で極力スコープは広く設定していただくことをご提案します。

レギュレーション

「レギュレーション」は、テストの実施条件になります。弊社のペネトレーションテストでは、複数名の体制による人為的なミスの軽減や使用するツール、攻撃コードを事前に弊社内の検証環境にて影響調査を実施するなどテストによるサーバーなどへの影響を最小限に抑えるための施策を実施していますが、サーバーの影響を皆無にすることはできないため、業務影響を考慮しテストの実施条件を取り決めます。「レギュレーション」の例として、アカウントロック機能を有効にしている範囲で認証試行を制限したり、利用者のシステム利用時間帯でのテスト行為を制限したりするなどが挙げられます。

標的型攻撃により端末が乗っ取られたことを想定したテストが近年増えており、そういったケースの場合、「ゴール」をActive Directoryの管理者権限の掌握やC&Cサーバーを想定した外部との通信、情報の持ち出しとしてテストしています。

20210524_zeroday_fig2.pngFigure 2 ペネトレーションテストのシナリオ例

お客様の環境によっては、通常利用されているアカウントにローカル管理者権限(Administrators)を付与されているケースもありますが、付与されていない場合、一般ユーザー権限(Users)のアカウントが乗っ取られたことを想定し、テストを開始します。その場合にテストでは、まずローカル管理者権限の奪取を目指します。その理由として、メモリやレジストリなどに残存する認証情報の有無を調査するためにローカル管理者権限が必要なためです。

一般ユーザー権限からローカル管理者権限を奪取する方法として、以下が挙げられます。

  1. ローカル管理者権限を有するアカウントのパスワードを推測
  2. 残存する認証情報の利用
  3. 脆弱性を利用した権限昇格

「1.ローカル管理者権限を有するアカウントのパスワードを推測」は、単純なパスワードを利用しているケースです。「2.残存する認証情報の利用」は、Sysprepやログオンスクリプトなどに認証情報がハードコードされているケースです。「3.脆弱性を利用した権限昇格」は、OSやインストールされているアプリケーションの脆弱性を用いてローカル管理者権限を奪取するケースです。

2021年5月21日に公開されたCVE-2021-20713は、クォリティソフト社のQNDに存在する権限昇格可能な脆弱性で、ペネトレーションテストの過程の中で筆者が発見しました。当該製品はIT資産管理を行うためのソフトウェアで、クライアント端末にエージェントをインストールしサーバーで一元管理が行える仕組みになっています。クライアント端末では、当該製品のプロセスが複数動作しておりログインしているユーザー権限で動作するプロセスとSYSTEM権限で動作するプロセスが存在します。それぞれのプロセスは、隠しフォルダであるC:\Windows\$$$QND.TMP に保存されている複数のEXEファイルを実行したものですが、EXEファイル自体のアクセス権がEveryoneでフルコントロール可能な状態でした。


cacls C:\Windows\$$$QND.TMP\bin\A.exe
C:\Windows\$$$QND.TMP\bin\A.exe Everyone:F

※ファイル名は伏せています。

SYSTEM権限で動作するプロセスはOSの起動時に実行されます。そのため、当該プロセスを起動するEXEファイルはロックされていますが、特定の操作を行うとSYSTEM権限で動作するプロセスが実行されなくなり、EXEファイルはロックされない状態になります。ロックされていない状態で、任意のファイルに置き換えたのちに、通常の動作をさせるとSYSTEM権限でA.exeに置き換えた任意のファイルが実行され、権限昇格が可能となります。ペネトレーションテストの際は、cmd.exeに置き換えSYSTEM権限で任意のコマンド実行ができる状態となり、端末のローカル管理者権限を奪取することに成功しました。

本脆弱性の対策については、最新バージョンにアップデートする必要があり、詳細は当該製品サイトを参照ください。

20210524_zeroday_fig3.pngFigure 3 権限昇格の流れ

このようにペネトレーションテストの過程の中で新しい脆弱性を発見することもあります。試行錯誤した結果、発見することができました。行きつけのお店が閉店になったり、非常に残念なことが多いですが、こうした状況下でも試行錯誤して楽しく飲みたいです、テキーラを。

20210524_zeroday_fig4.pngFigure 4 以前おいしくいただいたテキーラ

プロフェッショナルサービス事業部
小河哲之