This post is also available in: English (英語)

私たちは最近、2017年6月9日に開催される毎年恒例のLabyREnth、第2回Palo Alto Networksセキュリティ コンテスト(CTF)の課題を発表しました。昨年と同様、LabyREnthカウントダウン ページにはちょっとしたティーザーを含めました。見つけることができたでしょうか?  見つからなくても、心配は無用です。誰もが確実に情報を確認できるようにしたいため、カウントダウン ページのCTF情報にリンクを追加してあります。また、まだ試してみたいとお思いの場合は、ティーザーを解く方法も示されます。

今年は、いくつかの素晴らしい賞品が用意されています。すべての賞金の金額を増やし、すべての種目を最初に解決した人には$10,000が授与されます。これが、セキュリティ コミュニティの多くの人々が遊び感覚で学習し、楽しむための動機付けになることを期待しています。

 

図1 賞金の情報
図1 賞金の情報

ティーザーの課題を解決するには、まず初めにメインのlabyrenth.comページに移動します。

ページの開発者ツールをプルアップした場合、ページの本文の任意の場所をクリックすると、404ページにリダイレクトされることがわかります。それはかなり異常です。スレッドをたどり、好奇心の導く先になにがあるのかを確認しましょう。

図3 index.htmlを示す開発者ツール
図3 index.htmlを示す開発者ツール

この404ページはありふれたApache 404ページのように見えますが、ページの開発者ツールを見ると、非表示の入力とwat_do.jsという名前のjavascriptファイルがあることがわかります。これは、ログインを非表示にするためにPriv8 Webシェルで使用されている手法と同様です。

図4 非表示の入力がある404ページ
図4 非表示の入力がある404ページ

javascriptを見ると、それが難読化され、evalを使用していることがすぐにわかります。これは、解凍されたjavascriptコードを評価するためにマルウェアで使用される一般的なjavascript難読化手法です。元のjavascriptをコピーして、開発者ツールのコンソールに貼り付けることができます。その後、次のレイヤーを出力するため、evalをconsole.logに変更します。

図5 初期javascriptのconsole.log
図5 初期javascriptのconsole.log

出力をコピーして、Visual Code Studioなどのテキスト エディタに貼り付け、javascriptを整えます。dat_otha_boyとsome_otha_stuffを伴うxorデコード ループがあることがわかります。また、dat_otha_boyがユーザー入力で、デコード ループの出力にリダイレクトされることもわかります。

図6 2番目のレイヤーが除去されたjavascript
図6 2番目のレイヤーが除去されたjavascript

ここで自問する必要があります。dat_boyがevent.srcElement.idに設定され、決して使用されないのはなぜでしょうか?  おそらく、それが実際に探している少年だからです。javascriptを開発者ツールのコンソールに貼り付けることで、dat_boyが使用された場合に、リダイレクト先を出力するようにjavascriptを変更できます。それを行うと、w3_sh0w_U_wUt_w3_g0000t.htmlという正しいリソースらしきものが得られます。

図7 正しいリソースのデコード
図7 正しいリソースのデコード

G3t$chW1ftyを404ページの非表示のテキスト ボックスに入力するか、または直接デコードしたリソースに移動して、偽のWebシェルを取得できます。使用可能なコマンドのhelpを入力することで、偽のシェルとやり取りできます。

チームは、皆さんに楽しんでもらえるように、CTFに多数のサプライズを用意しています。幸運を祈ります。6月9日にLabyREnthでお会いできることを楽しみにしています。

Enlarged Image