Shi0shishi0

とても眠い。

SECCON 2016 Online CTF >>> Writeup

友人達と集まって、SECCON 2016 Online CTFに参加しました。
放課後のプレアデス』Blu-rayBox を延々と流し続けることで頑張ることができた。


f:id:echoha610:20161213070033p:plain

Vigenere(Crypto 100)

名前の通り、ヴィジュネル暗号を解く問題。友人が解いてた。

SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

VoIP(Forensics 100)

VoIPパケットをキャプチャしたファイルを渡されたのでWireSharkを使って音声を聴きました。WireSharkすごい。
FLAG消失…。

Anti-Debugging(Binary 100)

Windowsの32bit実行形式ファイル(exeファイル)が与えられる。
実行するとパスワードの入力を求められるタイプの問題。

パスワードを確認するために、入力した文字列を処理するあたりまでデバッガで見ていくと、パスワードが「I have a pen.」であることがわかった。
正しいパスワードを入力すると、その先で解析ツール避け、仮想環境避けのルーチンを通過する。

IsDebuggerPresent()
GetCurrentProcess() , CheckRemoteDebuggerPresent()
GetTickCount()
CreateFileA -> \\\\.\\Global\\ProcmooDebugLogger
CreateToolhelp32Snapshot() , Process32First()
PEB!NtGlobalFlag
IN(check I/O Port)

上に挙げたような関数・アセンブリ命令で解析ツール避け、仮想環境避けを行なっていた。(何か他にもあった気がする。。。)
解析ツール避け、仮想環境避けのチェックを全部躱して進めていくと、FLAGを生成している処理を確認できた。

SECCON{check_Ascii85}

FLAGは得られましたが、その中に含まれる「Ascii85」って何のことだろう?と気になって調べてみたところ、そのような名前のエンコード方式があることがわかりました。「Base85」とも言うそうです。

f:id:echoha610:20161212204001p:plain

試しにFLAG生成の元になっていた文字列「;aj&@:JQ7HBOt[h?U8aCBk]OaI38」をオンラインのBase85デコーダにかけてみると、FLAGと同じ文字列を得ることができました。「BaseXX」系エンコード方式は色々なものがあるのですね。

Memory Analysis(Forensics 100)

Memory Analysis
Find the website that the fake svchost is accessing.
You can get the flag if you access the website!!

memoryanalysis.zip
The challenge files are huge, please download it first. 
Hint1: http://www.volatilityfoundation.org/
Hint2: Check the hosts file

password: fjliejflsjiejlsiejee33cnc 

偽物のsvchostがアクセスしているWebサイトを調べろという問題。
Hint1に「Volatility」のホームページのURLが書かれていたので、素直にvolatilityで与えられたファイルの情報を取得。

vol.py -f forensic_100.raw imageinfo
Volatility Foundation Volatility Framework 2.5
Suggested Profile(s) : WinXPSP2x86, WinXPSP3x86 (Instantiated with WinXPSP2x86)

WinXP(x86)のメモリをダンプしたファイルっぽい。
プロファイルをWinXPSP2x86に設定し、とりあえずプロセス一覧取得してみる。

vol.py -f forensic_100.raw --profile=WinXPSP2x86 pslist
Volatility Foundation Volatility Framework 2.5
Offset(V)  Name                    PID   PPID   Thds     Hnds   Sess  Wow64 Start                          Exit                          
---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0x823c8660 System                    4      0     58      259 ------      0                                                              
0x81a18020 smss.exe                540      4      3       19 ------      0 2016-12-06 05:27:04 UTC+0000                                 
0x81ef6da0 csrss.exe               604    540     11      480      0      0 2016-12-06 05:27:07 UTC+0000                                 
0x82173da0 winlogon.exe            628    540     24      541      0      0 2016-12-06 05:27:07 UTC+0000                                 
0x8216e670 services.exe            672    628     15      286      0      0 2016-12-06 05:27:07 UTC+0000                                 
0x81f8c9a0 lsass.exe               684    628     26      374      0      0 2016-12-06 05:27:07 UTC+0000                                 
0x82154880 vmacthlp.exe            836    672      1       25      0      0 2016-12-06 05:27:08 UTC+0000                                 
0x81e18da0 svchost.exe             848    672     20      216      0      0 2016-12-06 05:27:08 UTC+0000                                 
0x82151ca8 svchost.exe             936    672     10      272      0      0 2016-12-06 05:27:08 UTC+0000                                 
0x82312450 svchost.exe            1036    672     87     1514      0      0 2016-12-06 05:27:08 UTC+0000                                 
0x81f92778 svchost.exe            1088    672      7       83      0      0 2016-12-06 05:27:08 UTC+0000                                 
0x81e41928 svchost.exe            1320    672     12      183      0      0 2016-12-06 05:27:10 UTC+0000                                 
0x8231f698 explorer.exe           1556   1520     15      466      0      0 2016-12-06 05:27:10 UTC+0000                                 
0x81f0dbe0 spoolsv.exe            1644    672     15      133      0      0 2016-12-06 05:27:10 UTC+0000                                 
0x81e4f560 svchost.exe            1704    672      5      107      0      0 2016-12-06 05:27:10 UTC+0000                                 
0x81f65da0 svchost.exe            1776    672      2       23      0      0 2016-12-06 05:27:10 UTC+0000                                 
0x821f8438 vmtoolsd.exe           1856   1556      3      129      0      0 2016-12-06 05:27:11 UTC+0000                                 
0x82170da0 ctfmon.exe             1872   1556      1       87      0      0 2016-12-06 05:27:11 UTC+0000                                 
0x81f00558 VGAuthService.e         196    672      2       60      0      0 2016-12-06 05:27:13 UTC+0000                                 
0x81e4b4b0 vmtoolsd.exe            312    672      9      265      0      0 2016-12-06 05:27:13 UTC+0000                                 
0x81e886f0 GoogleUpdate.ex         372   1984      7      138      0      0 2016-12-06 05:27:13 UTC+0000                                 
0x82062b20 wuauclt.exe             488   1036      7      132      0      0 2016-12-06 05:27:13 UTC+0000                                 
0x81e89200 wmiprvse.exe            596    848     12      255      0      0 2016-12-06 05:27:13 UTC+0000                                 
0x82267900 rundll32.exe           1712   1556      2      144      0      0 2016-12-06 05:27:16 UTC+0000                                 
0x81f46238 alg.exe                2028    672      7      104      0      0 2016-12-06 05:27:16 UTC+0000                                 
0x81e56228 wscntfy.exe             720   1036      1       37      0      0 2016-12-06 05:27:18 UTC+0000                                 
0x8225bda0 IEXPLORE.EXE            380   1776     22      385      0      0 2016-12-06 05:27:19 UTC+0000                                 
0x8229f7e8 IEXPLORE.EXE           1080    380     19      397      0      0 2016-12-06 05:27:21 UTC+0000                                 
0x81f2cb20 wuauclt.exe            3164   1036      5      107      0      0 2016-12-06 05:28:15 UTC+0000                                 
0x819b4380 tcpview.exe            3308   1556      2       84      0      0 2016-12-06 05:28:42 UTC+0000                                 
0x8216a5e8 DumpIt.exe             3740   1556      1       25      0      0 2016-12-06 05:28:46 UTC+0000                                 

このプロセス群の中に、外部と通信しているプロセスがあるかチェックする。

vol.py -f forensic_100.raw --profile=WinXPSP2x86 connections
Volatility Foundation Volatility Framework 2.5
Offset(V)  Local Address             Remote Address            Pid
---------- ------------------------- ------------------------- ---
0x8213bbe8 192.168.88.131:1034       153.127.200.178:80        1080

IEXPLORE.EXE がどこかにアクセスしていた模様。しかし、問題文では svchost.exe について調べるように書かれていたのでこれは関係無いか?
通信先IPアドレスさくらインターネットのものらしい。普通にブラウザから 153.127.200.178 へアクセスしてみる。
nginxで作られたページらしきものが見えるが、FLAGは見当たらず。怪しいところも特には無い模様。

複数ある svchost.exe に怪しいものがないか調べていこうかな、とか思ってたら、Hint2に「Check the hosts file」と書かれているのが目に入った。
hostsファイルをイメージファイルから探して見ることに。

vol.py -f forensic_100.raw --profile=WinXPSP2x86 filescan | grep hosts
Volatility Foundation Volatility Framework 2.5
0x000000000217b748      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts

オフセット 0x000000000217b748 にhostsファイルがあることがわかったので、これを抽出する。

vol.py -f forensic_100.raw --profile=WinXPSP2x86 dumpfiles -Q 0x000000000217b748 --dump-dir /home/otaku/SECCON2016/

抽出したhostsファイルを見てみると、「153.127.200.178 crattack.tistory.com」という形でIPアドレスFQDNの紐付けが設定されていた。

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
153.127.200.178    crattack.tistory.com 

抽出したhostsファイルと同じように自分の環境のhostsファイルを編集し、crattack.tistory.comにアクセスすると Data-Science-import-pandas-as-pd というファイルが降ってきた。
中身をStringsコマンドで確認するとFLAGが書かれていた。

SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}

Volatilityはあまり使ったことがなかったのですが、結構便利だなと思いました。解析の幅広げるためにもっと勉強してみたいかも。
crattack.tistory.com に本来紐付いているIPアドレスについてVirusTotalで調べてみると、若干黒そうな感じで面白かった。(余談)

basiq(Web 100)

分からず放置していたら友人が入れてた。。。要復習。

SECCON{carnival}

所感

randomwareとuncomfortable webが解ききれなかったのでとても悔しかったです。
明日以降時間があれば続きをやってみようかと思っています。

難しい問題が多かったですが、結構楽しかったです。
運営の方々、参加された皆様はお疲れ様でした。

参考にしたページ

Volatility : Command Reference
github.com

Online ASCII85 decoder
https://www.tools4noobs.com/online_tools/ascii85_decode/