MNCTF 2018 Writeup その1
去年も参加させていただきましたが、今年も7月12日に品川にてマクニカネットワークスデイ2018が開催され、その中のMNCTFに参加しました。
「WriteupまでがCTF」ということで、私が解いたやり方と、解説の時に印象に残った手法を書いていこうと思います。おそらく今後正式な回答が出るかと思いますので、そちらも見ていただければと思います。
また今回も本番開催後は常設され誰でも登録・回答することができるようになっていますので、まだの方は1度見てみてはいかがでしょうか。
※長くなりましたので、記事を2つに分けています。その2はこちら。
★これからやる人はネタバレ注意
練習問題☆☆☆
「MNCTF2018」が答えです。下の欄に入力して解答してください。
練習問題です。上記がそのままフラグとなります。
FLAG:MNCTF2018
新人奮闘I☆☆☆
7月から株式会社マクニキのCSIRTに配属された新人のとだ君は、さっそく仕事が与えられました。サーバ管理者のこばやし君がADの最適化ツールと思い込み、誤ってマルウェアを実行してしまいました。ファイル名は「AD_OptimizationTool.exe」で、ADサーバ上、ドメイン管理者権限で実行してしまいました。とだ君はこばやし君からマルウェアを受け取り、さっそくマルウェアの解析に挑みます。 まずはマルウェアののSHA-256のハッシュ値を求めてください。
SHA256ハッシュを求める問題です。Linuxのコマンドを実行し調査しました。
root@kali:~/mnctf2018# sha256sum AD_OptimizationTool.exe f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29 AD_OptimizationTool.exe
FLAG:f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29
新人奮闘II★☆☆
とだ君は「AD_OptimizationTool.exe」の解析レポートを書こうとしています。ここにアクセスして、手伝ってあげてください。※すべての項目を入力すると正解が得られます。
ハッシュ値、PEファイルの情報を調査する問題です。ハッシュ値は前の問題と同様にLinuxのコマンドを実行し調査しました。
root@kali:~/mnctf2018# md5sum AD_OptimizationTool.exe 541427a9dbe43b10c05b856cdcdc5ba6 AD_OptimizationTool.exe
root@kali:~/mnctf2018# sha1sum AD_OptimizationTool.exe e0fa838e0f191f97c5dac7a831af60d750432017 AD_OptimizationTool.exe
root@kali:~/mnctf2018# sha256sum AD_OptimizationTool.exe f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29 AD_OptimizationTool.exe
PEファイルの情報の調査はうさみみハリケーンを利用しました。UMPE.exeを起動し「PEエディタを起動し編集」を押します。 その後、PEファイルをD&Dなどし開きます。
コンパイル時間は「ヘッダ」から、インポート関数は「インポート」から確認しました。
レポートのページにてすべて正しい値を入力するとFLAGが表示されます。
FLAG:d56d9a6036bd18ee98878eb74ae8d663
解説ではハッシュ値を求めるツールとして「CyberChef」というツールを紹介されておりました。
これは単一のHTMLファイルで各機能はJavaScriptで書かれており、ハッシュ値計算のほかにBase64デコード・エンコード、ROT13、XORなどさまざまな機能を搭載した便利ツールでした。
CTFにも有用ですが、マルウェアの表層解析などを行う際にも使えるなと思い、こちらのツールはぜひいろいろと試してみたいと思います。
新人奮闘III★☆☆
とだ君はマルウェア解析を継続し、マルウェアを実行するとコマンドが実行されることに気づきました。コマンドは何でしょうか?コマンド全体を入力してください。
マルウェア実行後、何らかのコマンドを実行するようです。こちらについてはProcess Monitorを利用し動的解析を行いました。
Process Monitorを起動後マルウェアを動作させます。少したった後でProcess Monitorの「Tools」→「Process Tree」でプロセスツリーを表示させます。
プロセスツリーの中でマルウェアが実行したコマンドを確認します。netコマンドを実行しアカウントを作成しようとしていることがわかります。
FLAG:net user /add /domain vpnadmin P@ssw0rD1!
解説ではStrings、IDAなどの方法を紹介していました。
IDAで開くと以下のようになっており、ShellExecuteAに引数としてコマンドを渡しているのを確認できます。
新人奮闘IV★☆☆
とだ君はコマンドを調査した結果、ADと連携しているVPNシステムに不正ログインされている可能性を考えて、VPNのログを調査するとにしました。マルウェア解析で分かった情報と照らし合わせて、不正ログインされている時刻を答えてください(YYYY/MM/DD hh:mm形式)
ログを確認すると、日時、アカウント名、接続元のIPアドレスが記載されています。
前の問題で作成しようとしたアカウントは「vpnadmin」であるため、ログの中からこのアカウントを探します。
FLAG:2018/07/13 15:01
余談ですが、時刻を見ると開催日(7/12)より未来になっています(CTF実施中は気付きませんでした)。これはマルウェアを作成した日が7/11(!)でそれよりも未来のログにしないといけないため、ということでした。
新人奮闘V★☆☆
とだ君は不正ログインのIPアドレスを元に攻撃元の国を調べました。どの国でしょうか?日本語で解答してください。
前の問題で判明したIPアドレスの国を調査します。ViewDNS.infoのWhoisにて調査したところ韓国のIPアドレスであることがわかりました。
Domain / IP Whois - ViewDNS.info
FLAG:韓国
大量不正★★☆
株式会社マクニキのCSIRT担当てしがわら君は、過去に自社内に見つけたマルウェアの断片を調査してみることにした。このマルウェア群から、類似性の高い組み合わせを見つけて、そのファイル名をハイフンでつなげて答えてください。 例)sample1.bin-sample2.bin zipのパスワードは「infected」です。
類似する2つのファイルを見つける問題のようです。類似度はfuzzyhashツールのssdeepを利用しました。
まず「ssdeep.exe malware\* > result.txt」ですべてのファイルのfuzzyhashを求めます。その後テキストファイルをサクラエディタで開き、「Ctrl+a」→「Alt+a」で全行をソートし目Grepしました。
FLAG:sample1.bin-sample68.bin
解説ではssdeepの便利な使い方の紹介がありました。以下のようにオプションをつけて実行すると、指定のファイル郡のうち一致度が高いファイルの組み合わせを表示できます。
C:\tools\ssdeep-2.13\ssdeep-2.13>ssdeep.exe -bdcr malware\* "sample68.bin","sample1.bin",99
その2へ続く…