攻撃者の視点で見る|ペネトレーションテストの舞台裏

ペネトレーションテストの基本的な流れ
ペネトレーションテストとは、実際の攻撃者の視点で組織のネットワークやシステムを疑似攻撃し、どのような経路で侵入され得るか、どれほどの被害につながるかを検証するセキュリティ診断です。単に脆弱性を列挙するだけでなく、それらが現実に悪用可能かを確かめることで、より実践的かつ効果的な対策を講じることができます。サイバー攻撃が高度化、巧妙化する昨今において、ペネトレーションテストの実施を検討する企業も増えています。
ペネトレーションテストには専門的な知識や技術が要求されるため、外部の専門家に依頼するのが一般的です。基本的な流れとしては、最初にテストの目的や範囲、実施ルールを定め、対象システムの情報収集、初期侵入の試行、権限昇格、重要情報の取得などを段階的に行います。最終的には、テスト結果をレポートにまとめて改善策を策定し、対策につなげていきます。
今回の記事では、ペネトレーションテストの入り口となる部分を実施者の目線で解説していきます。ペネトレーションテストの定義や事前準備、実際にどのような手順で攻撃者が情報を収集し、侵入の糸口を探していくのかについて、詳細な例を交えながら解説していきます。初期フェーズにおける調査や脆弱性の見つけ方を知ることで、セキュリティ対策の本質や、守るべきポイントがより明確になるはずです。
目的とスコープの定義(Pre-Engagement)
ペネトレーションテストの開始前には、DoS攻撃の可否や業務時間中の実施可否などを含む「ルール・オブ・エンゲージメント(Rules of Engagement)」を明確に定める必要があります。たとえば、企業によっては古いOSや脆弱なサーバー構成を使用しているケースがあり、ブルートフォース攻撃やスキャンによる負荷に耐えられず、サービス停止や業務障害を引き起こす可能性があります。
また、業務時間中に診断を実施することで、社内のネットワーク帯域を圧迫したり、誤検知によってセキュリティチームが不要な対応に追われる可能性もあります。こうしたリスクを避けるためにも、攻撃手法の範囲、対象システム、実施時間帯、緊急時の連絡体制などを事前に合意することが不可欠です。
このような事前定義は、ペネトレーションテストの品質と信頼性を支える非常に重要な準備工程であり、診断の安全性と組織との信頼関係を両立させるための基盤となります。
顧客との合意形成、事前準備を行う(Agreement & Preparation)
スコープとルールが固まったら、次は顧客との正式な合意形成に進みます。契約書や同意書の取り交わしに加え、関係部署への通知や緊急時の連絡体制の確認など、運用面での準備が必要です。これらが不十分だと、テスト中に予期せぬトラブルが発生する可能性があるため、慎重な調整が求められます。
技術面では、診断対象へのアクセス方法の整理や、障害発生時の復旧体制の確認も重要です。特に本番環境で診断を行う場合は、影響範囲の想定や監視体制の明確化が不可欠です。こうした合意形成と準備は、ペネトレーションテストの安全性と信頼性を支える基盤となります。
現場では、診断チームに加え、有事対応のための連絡待機メンバーが緊急連絡先として配置されるのが一般的です。これは、診断中にファイアウォールが誤って通信を遮断したり、EDRがテストツールを誤検知して業務端末を隔離したりする事態に備えるためです。IT部門やCSIRT、インフラ担当者が待機し、必要に応じて設定変更や一時対応を行うことで、診断の安全性と業務継続性を両立させることができます。
情報収集(OSINT & ネットワークスキャン)
ペネトレーションテストの最初のステップは、対象環境に関する情報をできる限り多く収集することです。これには、SNSやWebサイト、DNS情報、ネットワーク構成などの公開情報が含まれます。特に、企業ドメイン名やメール構成、名前解決の仕組みなどは、攻撃の足がかりとして非常に有用です。
ネットワークレベルでは、Nmapを使ったスキャンが基本です。例えば sudo nmap -sV --top-ports 10 --disable-arp-ping (対象のIP) のように実行することで、使用頻度の高い上位10ポートに対して、稼働中のサービスとそのバージョン情報を取得できます。
また、--disable-arp-ping オプションを付けることで、ARP(アドレス解決プロトコル)を用いたホスト検出を無効化し、ARPレスポンスを返さない環境でもスキャンを実行できるようにします。
.png)
スキャン結果を見ると、ファイル転送に用いられるFTPの21番ポートや、SSHの22番ポートなど、特定のポートが開いていることがわかります。特に致命的なのは、HTTPの80番ポートも開いているため、Webサイトに脆弱性が存在する可能性も確認できます。Nmapの結果からSSHで使われているOpenSSHのバージョンも把握できるため、そのバージョンから既知の脆弱性を探ることも可能です。さらに、whois example.com でドメイン登録者情報、digやnslookup を使ってDNS構成の確認を行うことで、内部構造の推定が可能になります。
以下は典型的な Google.com に対するWhoisを行った例です。
.png)
詳細は割愛しますが、この結果から、Google のドメインはMarkMonitorというドメイン保護に特化した企業を通じて管理されており、1997年に取得されてから現在まで長期にわたって運用されていることが分かります。また、ドメインには複数の保護ステータスが設定されており、削除や移管といった操作に対して厳しい制限がかけられていること、さらにネームサーバーに自社のDNS(NS1〜NS4)を用いていることからも、信頼性と管理体制の堅牢さがうかがえます。
その他、ドメインやインフラ構造の調査を行うサイトが多く存在します。
.png)
DeHashedと呼ばれる上記のサイトは、漏えいした認証情報(メールアドレス、ユーザー名、IPアドレス、電話番号など)を検索できる情報照会のサービスサイトです。実際に以下の画像では、とある企業のドメインが保有するメールアドレスのリストとそれに付随する情報を入手することができます。攻撃者やペネトレーションテスターは、このようなところから得た情報をもとに、パスワードクラックなどの攻撃を仕掛けていきます。他にもShodan、Spiderfoot、Maltego、Intelligence X等様々な類似サービスがあります。
また、別の脆弱性の観点では、以下のような「企業の募集要項」を用いた情報収集を行うこともあります。
.png)
例えば、上記の募集要項の様に、「使用ツール」や「利用言語」「インフラ」などが詳細に記載されていれば、攻撃者はそれらに関する既知の脆弱性を調査したり、特定のツールに依存する構成上の弱点を狙った攻撃を検討したりできます。
たとえば、Cisco Merakiには過去に深刻な認証回避の脆弱性が報告されており、定期的なアップデートを怠っていると、そのまま侵入口として悪用される可能性があります。また、Google Workspace や Slack のようなクラウドサービスを使用している場合でも、設定不備やAPIの過剰な許可設定が思わぬ情報漏えいにつながることもあります。このように公開情報からの情報収集を行うことをOSINT(Open Source INTelligence)といいます。
その他、Webサイトの脆弱性ということでBurp Suite等を活用した情報収集がありますが、こちらはこれだけでも1つの記事にできるので、別の機会に詳しく解説します。
.png)
これらの情報収集は、攻撃者にとってもペネトレーションテスターにとっても基本中の基本であり、非常に重要なポイントです。
ペネトレーションテスト|侵入の手法とその実例
初期侵入(Initial Access)
情報収集の結果、脆弱性が確認された場合には、それを悪用して実際に侵入が可能かどうかを検証します。実務の現場では、上記で述べた「情報収集フェーズ」と「初期侵入」を明確に分離せず、Nmapなどのスキャンツールによって得られた結果に基づき、脆弱性の有無や実際に内部侵入できるかどうかを同時並行で調査することも多くあります。ただし、今回は体系的な説明のため、「初期侵入」というフェーズを独立させて紹介します。
この「初期侵入」とは、組織外部から内部へと不正にアクセスするための入口を探し、そこから実際にネットワークやシステム内部へ侵入を果たす工程を指します。以下では、代表的な初期侵入の手法を複数紹介していきます。
ファイル転送の脆弱性(21番ポートが開いている場合)
21番ポートが開いている場合、そのホストがFTPサーバーとして稼働している可能性があります。特に、認証が緩い設定(匿名ログインが許可されている、またはパスワードが空など)であれば、初期侵入の足がかりとして利用されることがあります。攻撃者は anonymous:anonymous といった資格情報で接続を試み、ファイルの読み取りやアップロードが可能なディレクトリを探し出します。もし書き込みが許可されていれば、そこにWebシェルなどのペイロードを配置し、リモートコマンド実行や横展開への足がかりを得られるでしょう。FTPは古くから存在するサービスですが、誤設定によって侵入口として悪用されやすい典型例の一つと言えます。
SSHの脆弱性(22番ポートが開いている場合)
22番ポートが開いている場合、リモートログイン用のSSHサービスが稼働している可能性が高いでしょう。攻撃者は、流出した認証情報(メールアドレスとパスワードの組み合わせ)や、よく使われるパスワードリストを使った辞書攻撃、あるいは公開鍵の使い回しといった手口でログインを試みます。
ログインに成功すると、攻撃者は即座にシェルアクセスを獲得し、ローカル環境の調査、権限昇格、ファイルの転送、さらにはネットワーク内の他のホストへの横展開など、次の攻撃への足がかりを得ます。
以下は、Hydraと呼ばれるパスワードクラッキングツールを使用し、rockyou.txt という辞書ファイルを参照しながら、SSHサービス上のadminユーザーのパスワードを特定する例です。この手口でSSHに侵入し、対象システム上でシェルアクセスが可能になります。ログイン後は、さらに情報収集や権限昇格を試み、攻撃の範囲を広げていくことになります。
.png)
TELNETの脆弱性(23番ポートが空いている場合)
23番ポートが開いている場合、リモート接続に利用されるTelnetプロトコルが稼働している可能性があります。しかし、Telnetは通信がすべて平文で行われるため、非常に脆弱です。もしデフォルトの認証情報や空のパスワードが設定されていれば、攻撃者は容易にログインし、システム内に侵入できてしまいます。さらに、通信が暗号化されていないことから、ネットワーク上にいる攻撃者はTelnetセッションを盗聴し、平文の認証情報を収集する可能性もあります。Telnetは現代ではほとんど使われなくなったサービスですが、レガシー環境では今なお侵入口になり得るため、注意が必要です。
HTTPの脆弱性(80番ポートが空いている場合)
80番ポートが開いているということは、Webサーバーが稼働しており、HTTPベースのWebアプリケーションにアクセス可能であることを意味します。攻撃者はまず、サーバー上で動作しているソフトウェア(Apacheやnginxなど)のバージョンを調査し、既知の脆弱性がないかを確認します。加えて、Webアプリケーションに対してSQLインジェクションやファイルアップロード、ディレクトリトラバーサルといった攻撃手法を用いて、サーバー内部に不正アクセスを試みます。特にCMSや開発途中のページが公開されている場合、初期侵入の糸口になりやすいです。
以下は、SQLインジェクションというWebアプリケーションの脆弱性を突いた攻撃の一例で、これを利用することで本来認証が必要なadmin権限でログインできてしまうケースを示しています。
HTTPの脆弱性(80番ポートが空いている場合)
80番ポートが開いているということは、Webサーバーが稼働しており、HTTPベースのWebアプリケーションにアクセス可能であることを意味します。攻撃者はまず、サーバー上で動作しているソフトウェア(Apacheやnginxなど)のバージョンを調査し、既知の脆弱性がないかを確認します。さらに、Webアプリケーションに対してSQLインジェクションやファイルアップロード、ディレクトリトラバーサルといった攻撃手法を使い、サーバー内部に不正アクセスを試みます。特にCMSや開発途中のページが公開されている場合、初期侵入の糸口になりやすいでしょう。
以下は、SQLインジェクションというWebアプリケーションの脆弱性を突いた攻撃の一例で、これを利用することで本来認証が必要なadmin権限でログインできてしまうケースを示しています。
.png)
この攻撃が成立する理由は、ユーザー名の入力欄に admin'-- と入力することで、サーバー側のSQL処理が意図的に改変されてしまう点にあります。たとえば、ログインフォームでユーザー名に admin'-- を入力すると、サーバー側では次のようなSQL文が生成される可能性があります。
.png)
悪意のあるユーザーが、意図的に ‘ を入れることで、username = 'admin' の条件が成立し、シングルクォートが意図的に閉じられることでSQL構文が完結してしまいます。
また、 – はSQLにおけるコメント記号であり、それ以降の部分(パスワードチェックなど)はすべて無視されます。
.png)
要はパスワードのチェック部分が完全に無視され、不要になってしまうということです。これによってadminでログインができてしまうわけです。
また、LinuxやUnix系のファイルシステムでは、../ を使うことで1階層上のディレクトリに移動できます。これを繰り返すことで、ユーザーが本来アクセスできないはずのディレクトリに到達してしまう可能性があります。
たとえば、現在 /var/www/html/files/ というディレクトリにいるとします。そこで、以下のようなコマンドを打ちます。
.png)
サーバーが適切な入力検証を行っていない場合、/etc/passwd というユーザーアカウントの一覧が記載されるシステムファイルが返されてしまうことがあります。
こちらはあくまで脆弱性の一例にすぎませんが、ユーザーが本来アクセスすることを想定していない情報が漏えいしているケースは、他にも数多く存在します。
Kerberoastingの脆弱性(88番ポートが空いている場合)
TCPの88番ポートは、Windows のドメイン環境で利用される「Kerberos認証」に必須のポートです。もし攻撃者がドメインに参加している一般ユーザーのアカウントを手に入れた場合、このポートを通じて「Kerberoasting(ケルべロースティング)」という攻撃を実行できます。
この攻撃では、Kerberos認証の中で使われる「TGSチケット」と呼ばれる情報を不正入手し、その中に含まれるパスワードのハッシュ値をあとからじっくりと解析します。特に、パスワードが簡単なものであれば、短い時間で解読されてしまう可能性があります。
ケルべロースティングの大きな特徴は、ドメインコントローラーのような高権限のサーバーに直接アクセスせずとも、正規の通信を利用して攻撃が可能な点です。そのため、検知が難しく、防御しにくい攻撃とされています。中でも、権限が高く、かつパスワードが弱いサービスアカウントがあると、そこを起点に社内のネットワークの他システムへと攻撃が広がる恐れがあるため、注意が不可欠です。
以下の図では、1枚目にケルべロースティング攻撃によってサービスアカウントに紐づくKerberosのTGSチケットを取得し、そこからハッシュ値を抽出する過程を示しています。続く2枚目では、取得したハッシュを辞書攻撃ツール(hashcat)を用いてオフラインで解析し、サービスアカウントのパスワードを特定する流れを示しています。
現場でのペネトレーションテストでも、このようなケルべロースティングは稀に見つかる脆弱性の1つです。
%20.png)
SMBの脆弱性(139番および445番ポートが空いている場合)
139番および445番ポートは、Windows のファイル共有サービスSMB (Server Message Block) が使用しており、社内ネットワークでは頻繁に利用されます。初期侵入の観点からは、匿名ログインが許可されている場合、ユーザー情報や共有ディレクトリの列挙が可能となり、場合によってはパスワードなしでアクセスできるファイル共有が存在することもあります。
また、SMBを対象とした既知のエクスプロイト(EternalBlueなど)を用いることで、脆弱なバージョンの Windows マシンに対し、リモートコード実行が成功するケースも存在します。SMBは、初期侵入から横展開への橋渡しとなることが多い代表的なプロトコルです。
.png)
上記では、まず enum4linux コマンドを用いて、ターゲットのSMBサービスに対してユーザー名や共有情報の列挙を行っています。これにより、匿名ログインが許可されているかどうかや、アクセス可能な共有ディレクトリの存在を確認できます。
.png)
次に、匿名ログインが許可されたSMB共有に対して、smbclient を使用して実際にファイルへアクセスし、機密情報を含む可能性のあるファイルをダウンロードしている様子を示しています。
.png)
最後に、収集した情報をもとに、Metasploit Framework を用いて EternalBlueという有名なSMBの脆弱性を悪用し、リモートコード実行(RCE)を成功させる例を示しています。これにより、攻撃者は認証なしでSYSTEM権限を取得し、ターゲットシステムを完全に制御可能な状態となります。
その他の初期侵入経路と防御策
他にも、RDP(3389番)やLDAP(389番)など、初期侵入のきっかけとなり得るプロトコルは数多く存在します。これらは一見便利なサービスでありながら、設定ミスや脆弱性によって攻撃者にとって格好の侵入口となることがあります。
日々のセキュリティ対策の基本として、まずは不要なポートを閉じること、そして公開するサービスについてはアクセス制御や暗号化の有無を含めて正しく設定されているかを確認することが重要です。特にWebサービスに関しては、Secure属性やHttpOnly、Content-Security-Policyなどのヘッダー設定を意識することで、攻撃対象面を大きく減らすことができます(Webの診断については別の機会で解説します)。
今回は、ペネトレーションテストの初期フェーズに焦点を当て、情報収集から脆弱性の特定、そして初期侵入に至るまでの流れを解説しました。実際の攻撃者がどのような視点でシステムを調査し、どのような手法で侵入を試みるのかを追体験することで、セキュリティ対策の重要性や、守るべきポイントがより具体的に見えてきたのではないでしょうか。
もちろん、読者の皆さん全員がペネトレーションテストの専門家を目指すわけではないと思います。しかし、こうした攻撃の裏側を知ることは、日々の業務や設計において「どう守るか」を考える上で非常に有益です。セキュリティは単なる技術ではなく、視点の切り替えと想像力が問われる分野だからです。
今回の内容が、セキュリティの裏側に興味を持つきっかけとなり、今後の学びや実務に役立つヒントになれば幸いです。初期侵入後の権限昇格などの対応については、別の記事でご紹介します。
執筆者
