さて、リモートからシェルを奪取し侵入したので、ここからはペネトレーションテストの現場での侵入後の活動を紹介していく。
もちろん、ペネトレーションテストは、システムにダメージを与えることが目的ではないので、「悪意の第三者」のように、Webサイトの改ざんやサービス停止などを行うことは基本的にない。
では、ダメージを与えることのない侵入後の活動とはどのようなものだろうか。ペネトレーションテストは、文字どおり、「テスト」なので、どのような結果であったのかということの実証とその証跡が必要なのである。
それでは、その実証と証跡のいくつかを見ていこう。
侵入に成功した際、まず行うことは、システム情報の確認である。
確認する情報は、侵入に成功した条件(管理者権限での侵入なのか、一般ユーザー権限での侵入なのかなど)にもよるため、今回は一般的なものを下図に示す。
第7回の4ページ目にて、権限昇格の脆弱性の実証画面として紹介したものと似ているだろう。ほかにもipconfigなどの実行も行う。
これらは、侵入に成功しないと知り得ない、もしくは、表示することができない情報を検査用のPCに表示し、侵入に成功したこと、そして、どの権限で侵入することができたのかなどを示すために使用するのである。
情報確認の後は、ファイル・ディレクトリの書き込みである。
前述したが、ペネトレーションテストは、検査対象に実害を与えることが目的ではない。従って、侵入後の活動によって、検査後、運用に必要のないファイルをどこに配置したのかが分からなくなっては問題であるため、分かりやすい位置にディレクトリを作成し、基本的にその中に、この後、必要となるファイルを格納していく。
ディレクトリを作成したら、システム内にファイルの書き込み権限を有していることを実証するためにテキストファイルの書き込みを行う。書き込みを行う理由は、書き込み権限を有していれば、重要なファイルの削除や改ざんを行うことができるということを示すためである。
下図はディレクトリの作成から、テキストファイルの書き込みを行っている様子である。
(2)で「intrude success!!!」と書かれた「pen-test.txt」という名前のテキストファイルの作成を行っている。テキストファイルの作成を行う前のdirコマンド(1)と作成を行った後のdirコマンド(3)では結果が違うことが分かる。
侵入に成功したといっても、システム内には、侵入に成功したアカウント以外のアカウントが存在する場合がある。また、脆弱性実証コード(Exploit Code)などを使用し、セキュリティホールを利用した場合には、管理者権限を有した状態で侵入に成功する場合がある。
このような場合は、システム内に存在するユーザーのID、パスワードは一切判明していない状態での侵入成功となる。そのため、ペネトレーションテストではパスワードを判明させるというアクションも行うのである。
検査対象がWindowsの場合であればパスワードハッシュ、Linux系OSなどであればshadowファイルを取得することとなる。shadowファイルは基本的に/etc/shadowに存在するファイルをコピーするだけなので、今回はWindowsのパスワードハッシュを取得する様子を紹介しよう。
まずは、侵入に成功した検査対象上に、必要なファイルをコピーする。侵入した方法次第では、検査用PCから検査対象に対してアクティブにコピーできない場合があるため、基本的には、TFTPやFTPなどのファイル転送サーバを検査用PC上で稼働させ、検査対象を操作し、目的のファイルをダウンロードさせるという手段を使用する。侵入後の手順としては以下のとおりである。
また、下図は検査用PCから必要ファイルを検査対象上にコピーしている様子である。
Copyright © ITmedia, Inc. All Rights Reserved.