fatsheep's memo.txt

気になったこと、試したこと、その他もろもろを書いていきます。

MNCTF 2018 Writeup その2

f:id:fatsheep:20180713074335p:plain

MNCTF 2018 Writeupのその2になります。その1は以下です。

fatsheep.hateblo.jp

★これからやる人はネタバレ注意

種類特定★★☆

株式会社マクニキのCSIRT担当のてしがわら君は、海外拠点のエンジニアからマルウェア感染の連絡を受けました。先方からは、マルウェアの種類が特定できておらず、右往左往しています。サンドボックス上でマルウェアを動作させた際のマルウェアの通信はこちらです。パケットから、マルウェアの名前を特定してください。英字で解答してください。

通信の特徴からマルウェアの名前を調べる問題のようです。Wiresharkで開くと以下のようなHTTP通信をしています。

f:id:fatsheep:20180713004129p:plain

Googleなどで「マルウェア /images/ gif」などと検索してみるとバンキングマルウェアのUrsnifであることがわかります。また別名としてDreamBotやGoziなどとも呼ばれており、今回はGoziで通りました。

FLAG:Gozi

解説ではIDSであるSnortを利用し解いていました。Snortは通常脆弱性を突くような通信を検知するものですが、マルウェアの通信を検知するシグネチャが公開されており、それを利用することで検知できるということでした。

標的攻撃I★★☆

ある日、株式会社マクニキにフィッシングメールのが届きました。メールを転送されたてしがわら君はその添付ファイル「製品価格一覧20180711.xls」を解析した。しかし、残念ながら、サンドボックス上では解析はできなかったため、手動で解析するととにしました。 特定のユーザ名の環境でないと動作しないようです。ファイルを調査して動作条件であるユーザ名を特定してください。(複数ある場合は一つのみ回答してください)。

パスワードは「infected」です。

ユーザで動作が変わる、ということなので、マクロで制御してると考えマクロを見てみます。

以下の画像のように、実行可能なマクロ一覧には出てこなかったので、開発リボンを有効にし、Visual Basicからマクロの管理画面を呼び出します。

f:id:fatsheep:20180713004917p:plain

すると開いた画面でさっそくマクロが表示されました。

f:id:fatsheep:20180713005020p:plain

マクロの内容を読み解くと、C6~C11までのセルの内容とつき合わせているようです。エクセル画面に戻り、C列が非表示になっているので再表示、C6の値を見るとユーザ名が記載されていました。(文字の色とセルの背景色をあわせ、パッと見でわからないようにしてるようです。)

f:id:fatsheep:20180713005242p:plain

FLAG:Yasu Kobayashi

ちなみにこの問題を解くために、急遽Office365(月払い版)を契約し、マクロを確認しました😌

標的攻撃II★★☆

「製品価格一覧20180711.xls」の攻撃が発動すると、HTTPSの通信が発生します。そのURLを回答してください。

前の問題が解けていれば、マクロの中にURLが存在するので、それが答えになります。

ただ私は前の問題より先にこちらの問題に着手したため(Office365契約前でエクセルがなく、前の問題は保留しました)、エクセルファイルを直接サクラエディタで開き、中身を確認しました。

f:id:fatsheep:20180713013911p:plain FLAG:https[:]//gist.githubusercontent[.]com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert

標的攻撃III★★☆

「製品価格一覧20180711.xls」の動作を終えると、別のファイルが生成され、そこから2次検体が生成されます。2次検体のSHA256ハッシュ値を調べてください。

2次検体のファイルの調査ということで、前の問題でURLがわかったので実際にアクセス、ダウンロードしてみました。

中身を確認したところ、1行目と最終行は証明書っぽい記述がありますが、間のBase64部分は不自然に長くなってます。

サクラエディタで開き、Base64部分を選択、「変換」→「文字コード変換」→「Base64デコードして保存」を選択し、ファイルとして保存します。

最後にLinuxのコマンドにてSHA256を求めました。

root@kali:~/mnctf2018# sha256sum cert.pem.decode
c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382  cert.pem.decode

FLAG:c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382

標的攻撃IV★★☆

2次検体を実行すると、HTTPSの通信が発生します。最初の通信のURLを調べてください。

前の問題で生成したバイナリファイルを動作させ通信先を確認しました。

問題文からHTTPS通信であることがわかっているため、Wiresharkでの解析は早々にあきらめ、Fiddlerを使用しました。Fiddlerの証明書を端末にインストールすることで、Fiddlerを通るHTTPS通信の内容を調査することができます。

Fiddlerの証明書をインストール後、マルウェアを実行させ通信させると以下のようにHTTTPS通信を見ることができます。

f:id:fatsheep:20180713011945p:plain FLAG:https[:]//shinobotps1[.]com/download_get.php

解説ではWiresharkを利用しており、実は通信先はDNSのTXTレコードのリクエストに対するレスポンスに含まれているというものでした。

穴埋防御★★★

株式会社マクニキのCSIRT担当のてしがわら君は不審なファイルを社内のサーバから見つけました。セキュリティベンダーに解析をお依頼したところ、最終的なマルウェアを検知するためのメモリをスキャンするためのYaraルールが提供されました。しかし、Yaraルールは一部欠けており、そのままでは使えません。マルウェアを解析し、Yaraルールを完成させてください。★に入る文字列を回答してください。

バイナリファイルを検知できるようYARAルールを作成する問題です。

こちらは残念ながら時間内に回答することができませんでした・・・

盗難情報★★☆

株式会社マクニキのCSIRT担当のてしがわら君は攻撃者が残したファイルを入手しました。調査したセキュリティベンダー曰く、攻撃者はC&Cサーバに情報をアップロードする際にファイルを暗号化するとのことで、以下のアルゴリズムで暗号化されたものらしい。
XOR(シングルバイトキー)→ Base64 → ROT13
同攻撃者はマクニキの新製品情報を狙ったとみられています。ファイルを復号して、新製品の製品型番を答えてください。

暗号化されたファイルを、暗号化とは逆順に処理をし、元のファイルに復号する問題です。

ROT13は以下のサイトにて変換しました。

ROT13 | Forensicist

変換後の文字列は、前の問題と同様に、サクラエディタの変換機能でデコードしました。

最後のXORについてですが、こちらは最初、以下のXORの鍵を検索してくれるサービスなどを使ったのですが、思うような情報が得られませんでした。

XOR Cracker

今回の鍵はシングルバイトキー(0x00~0xFF)ということなので、実際にバイナリエディタなどで見て調査することにしました。(ZIPなどの圧縮ファイルではなく一般的なファイルであれば、0x00が多く含まれているとあたりをつけました。1バイトの値Aと0x00のXORの結果はAになることを利用します。)

バイナリエディタで開いてみると、0x15が多く、また不自然に連続して出現していることがわかります。

f:id:fatsheep:20180713013122p:plain

以下のWindowsでXORするツールで、キー0x15を用いてXOR変換してみます。

Download Xor 0.2

C:\Users\user01\Downloads\xor>xor.exe a a.out 0x15

Xor 0.2
by Luigi Auriemma
e-mail: aluigi@autistici.org
web:    aluigi.org

- input file: a
- output file: a.out
- hex key (hex dump follows):
15                                                .
- read and xor file
- finished

変換後のファイルを再度バイナリエディタで開くと、ヘッダがPNG形式の画像のそれになっていることがわかります。

f:id:fatsheep:20180713013403p:plain

拡張子をPNGに変更し開いたところ、答えが得られました。

f:id:fatsheep:20180713013456p:plain FLAG:NEJI_190_3GM

解説では、こちらの問題もすべてCyberChefで解くことができ、特にXORのブルートフォースも可能で、その有用性に驚かされました。

最後に

今回もとても勉強になり、楽しく参加させていただきました。問題を解くうえで使用するツールで知らなかったものも多く出てきて、大変勉強になりました。

また今回はトップ3に入ることができ、とても豪華な景品もいただけました。ありがとうございました!

f:id:fatsheep:20180713211247p:plain

一応来年も参加しても大丈夫(ただ景品はでないかも?笑)ということでしたので、次回は全問正解を目指し、また参加させていただければと思います。