ページの本文へ

Hitachi

Hitachi Incdent Response Team

HIRT-PUB15002:2014 SANS Holiday Hacking Challenge

更新日:2015年03月27日

HIRTのスタッフであるMasashi Fujiwaraが、オンラインコンテストのひとつであるSANS Holiday Hacking Challengeの2014年Best Technical Answerとして選出されました。オンラインコンテストは、新しい技術分野に触れ、技術力向上のきっかけとして利用できるツールであると考えています。HIRT-PUB15002では、オンラインコンテストの活用のきっかけにつながることを願いつつ、SANS Holiday Hacking Challengeが、どのようなものかを知ってもらうために、2014年に出題された課題をBest Technical Answerと共に紹介していきたいと思います。

正解者の中から上位3名(Grand Prize Winner、Best Technical Answer、Most Creative Answer)が選ばれます。SANSのWebサイトには、入賞者の提出した解答だけではなく、入賞者以外でも優れた解答が掲載されています。

1.Holiday Hacking Challengeとは、

Holiday Hacking Challengeとは、米国セキュリティ教育機関のSANS Instituteが毎年開催している情報セキュリティのスキル向上を支援するためのオンラインでのコンテストです。今年で11年目の開催となります。
コンテストの課題を作成しているのは、SANSのペネトレーションテストコースのカリキュラム責任者で、SANSフェローでもあるEd Skoudis氏とそのチームです。指定されたサイトで脆弱性を見つけたり、ダウンロードしたファイルを調査して、得られた解答をメールで提出します。

2. 2014の課題とその解説

毎年、その年に話題となった脆弱性やインシデント事例に関連した課題が出題される傾向にあります。2014年は、OpenSSLの脆弱性(Heartbleed)、GNU Bashの脆弱性(ShellShock)を攻略する課題、USBメモリディスクから削除されたファイルを復元したり、パスワードで暗号化されたファイルを抽出したりするようなファイルシステムのフォレンジック調査に関する7件の課題が出題されました(図 1)。

それでは、課題を見ていきましょう。

図 1:2014 SANS Holiday Hacking Challengeの課題
図 1:2014 SANS Holiday Hacking Challengeの課題

2.1 172.255.233.59

2.1.1. [課題]

What secret did the Ghost of Hacking Past include on the system at 173.255.233.59?

この課題は、「IPアドレス173.255.233.59のサーバに隠されている秘密は何か?」というものです。ポート番号31124/TCPで稼働する対話型サービスを利用して、指定したURLにアクセスをさせ、アクセスログから秘密の情報「Eliza Secret」を入手するというものでした。

2.1.2. [解説]

(1)Eliza Secret

秘密の情報「Eliza Secret」を入手するまでの流れは、次の通りです。まず、Nmapというツールを使って、一般的によく使われるポート番号(0〜1023/TCP)をスキャンしてみましたが、特に有益な情報は得られませんでした。しかし、1024/TCP以上の上位ポート番号をスキャンしたところ、31124/TCPのポート番号から応答がありました(図 2)。

図 2:稼働ポートの調査
図 2:稼働ポートの調査

このポート番号は、機械的ですが対話型サービスを提供するもので、netcat(nc)というツールを使って、いろいろと会話を試みたところ、「secret」というキーワードには、どのURLにアクセスすれば良いか聞かれ、「surf」というキーワードの後ろにURLを指定すると、そのURLにアクセスするという仕様でした(図 3)。

図 3:ポート番号31124/TCPが提供する対話型サービス
図 3:ポート番号31124/TCPが提供する対話型サービス

ここで、「surf」というキーワードの後ろに、アクセスログを参照できるWebサーバのURLを指定したところ、アクセスログに秘密の情報「Eliza Secret」が記録されていました(図 4)。

図 4:答え:Eliza Secret:
図 4:答え:Eliza Secret: "Machines take me by surprise with great frequency. -Alan Turing"

2.2 http://www.scrooge-and-marley.com

2.2.1. [課題]

What two secrets did the Ghost of Hacking Present deposit on the http://www.scrooge-and-marley.com website? You have permission to attack that website (TCP port 80 and 443 only) with the goal of retrieving those secrets, but please do not attempt any denial of service attacks or performance hogging attacks on that machine.

この課題は、「Webサイトhttp://www.scrooge-and-marley.comに隠されている2つの秘密は何か?」というもので、秘密の情報を入手するために、サービス不能攻撃を除いて、80/TCPと443/TCPへの脆弱性の攻略が許されている課題です。
一つ目の秘密の情報「Website Secret #1」は、OpenSSLの脆弱性(Heartbleed)を利用して、メモリ情報に隠された秘密の情報「Website Secret #1」を入手するというものでした。二つ目の秘密の情報「Website Secret #2」は、GNU Bashの脆弱性(ShellShock)を利用して、secretファイルに隠された秘密の情報「Website Secret #2」を入手するというものでした。

2.1.2. [解説]

(1)Website Secret #1

秘密の情報「Website Secret #1」を入手するにあたっては、443/TCPはHTTPS(SSL)で使用されるポートであることから、2014年に大きな話題となったOpenSSLの脆弱性(Heartbleed)が関係するものと予想し進めました。まず、ssltest.pyというツールで脆弱性の有無をチェックすると共に、Webサーバのメモリ情報をファイル名dumpとして入手します(図 5)。

図 5:OpenSSLの脆弱性(Heartbleed)のチェックとメモリ情報の取得
図 5:OpenSSLの脆弱性(Heartbleed)のチェックとメモリ情報の取得

次に、ファイル名dumpの中から文字列「Secret」を検索し、さらに、その結果をデコード処理(URLエンコードされた形式で保存されているため)すると、秘密の情報「Website Secret #1」が記録されていました(図 6)。

図 6:答え:Website Secret #1=Hacking can be noble.
図 6:答え:Website Secret #1=Hacking can be noble.

(1)Website Secret #2

秘密の情報「Website Secret #2」を入手するにあたっては、試行錯誤の結果、2014年に話題となったGNU Bashの脆弱性(ShellShock)が関係するものと予想し進めました。

まず、Webサイトの構成を確認したところ、CGIプログラム(/cgi-bin/submit.sh)へデータを送信する問合わせページがあることが分かりました(図 7)。ここで、「.sh」という拡張子は、シェルスクリプトのファイルに使われることから、2014年に話題となったGNU Bashの脆弱性(ShellShock)を連想することになります。

図 7:CGIプログラム(/cgi-bin/submit.sh)へデータを送信する問合わせページ
図 7:CGIプログラム(/cgi-bin/submit.sh)へデータを送信する問合わせページ

次に、Curlというツールを使って、GNU Bashの脆弱性(ShellShock)の存在を確認できたので、サーバのどこかに秘密のファイルが置いてあると予想しました。GNU Bashの脆弱性(ShellShock)を使って、ルートディレクトリ直下にあるファイルの一覧を調べてみたところ、秘密の情報「Website Secret #2」が記録されている「secret」という名前のファイルがありました(図 8)。

図 8:答え:Website Secret #2: Use your skills for good.
図 8:答え:Website Secret #2: Use your skills for good.

2.3 USB file system image

2.3.1. [課題]

What four secrets are found on the USB file system image bestowed by the Ghost of Hacking Future?

この課題は、「USBファイルのイメージファイルに隠されている4つの秘密は何か?」というものです。USBファイルのイメージファイルをダウンロードして、そのファイルを調査し、隠されている秘密の情報を見つけることになります。

ダウンロードしたイメージファイルには、図 9に示すようなファイルが格納されています。図 9は、FTK Imagerというツールを使って抽出したイメージファイルの内容です。

図 9:USBファイルのイメージファイルに格納されている情報
図 9:USBファイルのイメージファイルに格納されている情報

この中には、LetterFromJackToChuck.doc、hh2014-chat.pcapng、hh2014-chat.pcapng:Bed_Curtains.zip、Tiny_Tom_Crutches_Final.jpgなど、秘密の情報が隠されていると思われるファイルがあります。

USBファイルのイメージファイルの課題では、一つ目の秘密の情報「USB Secret #1」は、LetterFromJackToChuck.docに、二つ目の秘密の情報「USB Secret #2」は、hh2014-chat.pcapngに、三つ目の秘密の情報「USB Secret #3」は、代替データストリームと呼ばれる、他のファイルの別領域に保存されているhh2014-chat.pcapng:Bed_Curtains.zipに、四つ目の秘密の情報「USB Secret #4」は、削除されたファイルで、データ領域が他のファイルで上書きされていないため復元することが可能なTiny_Tom_Crutches_Final.jpgに隠されています。

2.3.2. [解説]

(1)USB Secret #1

LetterFromJackToChuck.docは、ワードファイルで作成されたクリスマスの挨拶状(図 10)です。この課題の場合、ワードファイルのプロパティに秘密の情報「USB Secret #1」が記録されていました(図 11)。

図 10:LetterFromJackToChuck.doc
図 10:LetterFromJackToChuck.docc

図 11:答え:USB Secret #1: Your demise is a secure of mirth.
図 11:答え:USB Secret #1: Your demise is a secure of mirth.

(2)USB Secret #2

hh2014-chat.pcapngは、パケットダンプのファイルです。Wiresharkなどのツールを用いることでファイルの内容を確認できます。この課題の場合、パケットに付与されたコメントに、秘密の情報「USB Secret #2」が記録されていました(図 12)。コメントそのものはBase64で符号化されていたので、復号して秘密の情報を入手することになります。

図 12:答え:USB Secret #2: Your demise is a source of relief.
図 12:答え:USB Secret #2: Your demise is a source of relief.

(3)USB Secret #3

hh2014-chat.pcapng:Bed_Curtains.zipは、ZIP形式で圧縮されたファイルです。ただし、このファイルは、代替データストリームというNTFSファイルシステムの標準機能で、「hh2014-chat.pcapng」というファイルの別領域に保存されています。FTK Imagerなどのツールを使うことで、ファイルの本体を取り出すことができます。

さらに、取り出したBed_Curtains.zipファイルには、ZIPパスワードが掛かっており、ファイルを解凍するためには、パスワードが必要となります。そこで、カスタムメイドのパスワード辞書を作成し、パスワード解読ツールJohn the Ripperを使って、ZIPパスワードを特定する、辞書の作成には、Website Secretの課題サイトhttp://www.scrooge-and-marley.comからCustom Word List generatorと呼ばれるCeWLというツールを使ってキーワード抽出する、という方法をとりました。

パスワード解読の結果、ZIPパスワードは"shambolic"で、そのZIPパスワードを使ってBed_Curtains.zipを解凍し、Bed_Curtains.pngという画像ファイルを取り出します(図 13)。

図 13:画像ファイルBed_Curtains.pngの抽出
図 13:画像ファイルBed_Curtains.pngの抽出

この課題の場合、ZIPファイルから取り出した画像ファイルBed_Curtains.pngのExifデータに、秘密の情報「USB Secret #3」が記録されていました(図 14)。Exifデータは、カメラの機種や撮影時の条件情報のメタデータで画像に埋め込まれた情報で、exiftoolなどのツールを使って入手することになります。

図 14:答え:USB Secret #3: Your demise is a source of pain for others.
図 14:答え:USB Secret #3: Your demise is a source of pain for others.

(4)USB Secret #4

最後の課題は、Tiny_Tom_Crutches_Final.jpgというJPEG画像ファイルです。ただし、このJPEG画像ファイルは削除されたファイルであるため、FTK Imagerなどのツールを使って復元してから、隠された秘密の情報を探すことになります。

まず、復元したJPEG画像ファイルのExifデータを確認したところ、画像に何らかの符号化処理が施されていることが分かりました(図 15)。

図 15:画像ファイルTiny_Tom_Crutches_Final.jpgのExifデータ
図 15:画像ファイルTiny_Tom_Crutches_Final.jpgのExifデータ

"JPEG Encoder Copyright 1998, James R. Weeks and BioElectroMech."をキーワードで調べたところ、f5-steganographyというステガノグラフィーツールで(図 16)、このJPEG画像ファイルの中に何かしらの情報が埋め込まれていることが分かりました。

図 16:ステガノグラフィーツールf5-steganography
図 16:ステガノグラフィーツールf5-steganography

この課題の場合、最終的に、JPEG画像ファイルからステガノグラフィーツールf5-steganographyと、情報を埋め込む際に使用したパスワード「abc123」を使って、秘密の情報「USB Secret #4」を抽出することになります(図 17)。なお、パスワード「abc123」は、このツールのデフォルト値です。

図 17:答え:USB Secret #4: Your can prevent much grief and cause much joy. Hack for good. not evil or greed.
図 17:答え:USB Secret #4: Your can prevent much grief and cause much joy. Hack for good. not evil or greed.

更新履歴

2015年03月27日
  • このページを新規作成および公開しました。

担当:藤原、寺田、大西/HIRT