情報セキュリティの技術を競うコンテスト「CTF」の問題から情報システムの仕組みやセキュリティを理解する連載。第2回は、「C&Cサーバに送信された機密情報を特定せよ」という問題について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
情報セキュリティの技術を競うコンテストであるCTF(Capture The Flag)は、セキュリティ教育や優秀な人材発掘に役立てようとする組織や企業が注目する、実践的な学習の環境でもあります。本連載「CTF問題から学ぶセキュリティ基礎知識」では、筆者が所属する会社で実施している社内向けCTFの問題を中心に毎回一問一答をしていきます。
例えば、前回はアクセス制御に問題のあるWebサーバから公開前の情報が漏えいしてしまう状況の問題でした。このように、現実に起こりそうなストーリー仕立ての問題にすることで、参加者に、業務において気を付けなければならないポイントを実感してもらえるようにしています。
さて、今回は「ネットワーク」ジャンルの問題です。今回も、調査対象のファイルの解析を実際に試すことはできませんが、ファイルの内容を一部、画像として添付していますので、どのような観点で調査すればよいか、解き方を考えてみてください。
H社が契約しているセキュリティ監視ベンダーから、「あなたの会社にある一部のPCが、C&C(Command and Control)サーバと通信しているようだ」と連絡が入りました。その後、セキュリティ監視ベンダーからパケットキャプチャーのファイルが送られてきました。
C&Cサーバと通信しているということは、PCがマルウェアに感染して機密情報が漏えいしている可能性があります。
あなたは、パケットキャプチャーを解析して、機密情報が含まれていないか、確認することになりました。機密情報を見つけることができるでしょうか?
※問題の都合上、PCとC&CサーバにはプライベートIPアドレスが割り振られています。
この問題に取り組むことで、以下のようなセキュリティに関する知識を学ぶことができます。
前提としてCTFは、その名の通り、「フラグ」を見つけることが正解の条件です。フラグは、大会ごとに決められた特定の形式の文字列であることが多く、今回の場合、「HSCTF{xxx}」(xxxは問題ごとに割り当てられた任意の文字列)という形式です。この問題文では、機密情報を見つけることが目的なので、この機密情報がフラグであり、それを見つけることができれば正解となります。
パケットキャプチャーを確認すると、2つのIPアドレス間でICMP(Internet Control Message Protocol)のエコー要求(応答)、通称「ping」で通信していることが分かります。ICMPのエコー要求(応答)は通常、ネットワークの疎通確認や機器の死活監視に使われますが、任意のデータを送信することもできます。そのため、今回はICMPのエコー要求(応答)が機密情報の送信に使用されているという観点で解いてみましょう。
C&Cサーバとの通信は通常の業務とは異なるネットワークトラフィックである可能性が高いので、まずは通常と異なる通信を検出する必要があります。
今回、IPアドレスは問題のものだけに絞り込まれており、プロトコルもICMPのみです。IPアドレスが192.168.109.128の機器が192.168.109.1の機器にリクエストを送り、192.168.109.1の機器がリプライを返していることから、192.168.109.128の機器がPC、192.168.109.1の機器がC&Cサーバだと推測できます。
それ以外に気になる点がないか確認していきましょう。ここで、各パケットの長さ(Length)に注目します。ICMPのエコー要求(応答)のパケットは、基本の設定なら一定の長さで繰り返し送信されます。1組だけ長さの違うリクエストとリプライの組み合わせがあります。
17、18番目の長さが「75」となっているパケットの詳細を確認します。ICMPのエコー要求(応答)のパケットの形式はRFC(Request for Comments)で以下のように定義されています。
Wiresharkはこの形式に従って各パラメーターを自動で見やすいように成形して、パケット詳細欄に表示してくれます。注目したパケットは長さが他と異なることから、可変長のData領域に機密情報が含まれている可能性が高いと考えられます。Data領域に注目してみましょう。
送信されているデータを確認すると、フラグ形式の文字列を発見することができました。
解析の結果、無事に通信内容から機密情報を検出できました。H社では、この後、漏えいした情報やその経路についてさらに調査し、しかるべき経路で公表して説明責任を果たすことでしょう。ではなぜ、C&Cサーバとの通信はこんなに簡単に解析できてしまったのでしょうか? 理由として、以下の2つが考えられます。
幾つかあったICMPのエコー要求(応答)のパケットのうち、長さが異なるものを確認することで、機密情報を送信している箇所を発見できました。このように、期待されるパターンまたはデータセット中の他のアイテムと一致しないアイテムやイベントや観測結果を識別することを、データマイニングにおいて「異常検知」「アノマリ検知」と呼びます。
今回はこの異常検知の仕組みによって、問題の通信を検出できたといえます。
ネットワークの異常検知は、サイバー攻撃やマルウェアの検知において重要な観点です。通常と異なる通信を判別する観点の例には下記があります。
なお異常検知には、通常時のトラフィックを記録しておくことが必要です。問題が発生していないときも継続的に監視しておくことで、異常が発生したときに効果的に検知できます。このような監視や検知は、運用コストがかかる部分でもありますが、システムの重要度に応じて適切なソリューションを活用して、強化することをお勧めします。
C&Cサーバに送信されていたデータは、平文で書かれていました。そのため、簡単に内容を知ることができました。もし送信データが暗号化されていたら、漏えいした機密情報の特定は困難になり、H社はさらなる説明や対応に追われ、問題の原因特定などの他の調査にも遅れが生じたことでしょう。
暗号化されていない通信データは、簡単に傍受することができます。今回、平文で通信していた攻撃者は“うかつ”だったといえますが、逆に考えれば、皆さんが業務で通信しているデータがこのように平文で通信されていれば、簡単に傍受されてしまうことになります。この問題を通して実感した、平文で通信しているデータのセキュリティリスクについて、適切に対策することが重要です。
通信データが暗号化されているかどうかは、下記3つの観点で確認できます。
データの暗号化は、3つのうち、最も小さい単位での暗号化です。送信するデータそのものを暗号化します。ICMPのエコー要求(応答)には暗号化の仕組みはありませんが、あらかじめ暗号化されたデータを送っていれば送信した内容を解析されずに済んだことでしょう。例えば、パスワード付きの圧縮ファイルなどはデータの暗号化に該当します。
通信プロトコルによる暗号化は、HTTPSやSSHなどの暗号化された通信プロトコルを用いることです。例えばHTTPはWebページを取得する際に使われるプロトコルですが、暗号化されていないので、通信途中で内容を傍受されたり、改ざんされたりするリスクがあります。それに対してHTTPSはSSL/TLSを用いてHTTPの通信を暗号化したプロトコルです。Webページの閲覧中、ブラウザのアドレスバーに鍵のマークが付いている場合、そのページはHTTPSで取得されており、通信中は暗号化されていることを示しています。もし、暗号化されていないプロトコルでユーザー名やパスワードのような重要な情報を送信してしまうと傍受される可能性があるので注意しましょう。
通信経路の暗号化は、VPNや無線LANの暗号化などにより、特定の経路が暗号化されているようなものを指します。この場合、あくまで暗号化されているのは特定の経路のみなので、その他の部分には別の配慮が必要となります。VPNを利用していても内部ネットワークで通信経路が暗号化されていない場合、一度内部に攻撃者の侵入を許してしまうと暗号化されていない通信は無防備な状態になってしまいます。また、正規の利用者でも、自分の権限を越えた通信を傍受できる可能性があり、内部不正のリスクにもなります。
システムやデータの重要度に応じた適切な暗号化通信を心掛けましょう。
問題の内容は理解できたでしょうか? 暗号化の観点は通信以外でも非常に重要です。ユーザーが意識しなくても適切に暗号化されるような、安全性の高いシステムを作っていきましょう。セキュリティ機能は、後から付け足そうとするとコストが高くなりがちです。暗号化や監視、検知など、必要な機能は設計からしっかり盛り込むことをお勧めします。
今回は攻撃者の手口をログから解析する問題でした。このように、攻撃の痕跡は攻撃者の挙動を理解する重要な手掛かりとなります。興味を持った方は、パケットキャプチャーはもちろん、さまざまなログに目を通してはいかがでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.