マルウェアを
解析してみよう
三村 聡志 / みむら (@MIMURA1133)
自己紹介
• 三村 聡志 a.k.a. 親方 (@mimura1133)
• Twitter : @mimura1133
• http://mimumimu.net/
• http://www.windowsinternals.moe/
• 普通の大学生やってます。
• CTF 入門者向け勉強会 “CTF for Beginners”
やってます。 ( http://2014.seccon.jp )
• 絶賛就活生(M1) です。
マルウェア解析?
テーマを決めるに当たって
まっちゃさん、今度の江戸前で
「マルウェア解析」って
やっても大丈夫ですか
ええんちゃう、
なんもないで。
解析手法
• 動的解析
• マルウェアを「動」かして解析する方法
• サンドボックス上で動かして眺めたり。
• Keyword: Cuckoo Sandbox, QEMU, etc…
• 静的解析
• マルウェアを動かさずに解析する方法
• 逆アセンブルして眺めたり。
• Keyword: IDA Pro, objdump, 逆アセンブル, etc…
解析準備
解析に必要なもの(今回使用したもの)
• Windows 7 x86, x64 – Service Pack 1
• 環境によって動くモノと動かないモノが出るので合わせる
• IDA Pro 6.7
• Pro 版は買うと世界が広がります。おすすめ。
• VMware Workstation
• 基本的には仮想マシン上で。潤沢なメモリと一緒に。
• 折れない心
• マルウェアの解析とプレゼン作成は昨日の深夜から。
解析をする環境
• 基本的には「仮想マシンの上で」
• 静的解析なら大丈夫?
→ その解析ソフトの脆弱性を突かれたらどうするの
• 何がおすすめ?
• 個人的に楽なのは Microsoft Hyper-V.
• よりもっと入りたいなら QEMU.
• でも VMware Workstation がベター。
解析する環境
• 参考までに・・。私はこんな感じです。
• IDA Pro / Windbg / Ollydbg
• Wireshark / Fiddler
• API Monitor
• MinGW
• MAP
→ なお、CTF4b の実習環境は
私の解析環境の構成がベースで組まれてます。
さぁ解析してみよう
基本的な解析の流れ
• 私の場合は IDA Pro でやってます。
• 静的解析でさっと眺め
(複雑な場合は動的から)
• 動的で詳しいところの挙動をブラックボックス
で見て、静的で追いかける。
基本的な解析の流れ
• 最初は分からないことだらけ
• 分かったときにメモを
書いていく
解析をする場合の注意点
• ネットワークは切りましょう。
• ネットワーク通信して・・というのを観察したい
→ グローバルIP アドレスを別のモノに。空き IP アドレス等を。
• VM 上でやるならば、万全の状態を作った上で
「スナップショット」を作りましょう
• 汚した後、スナップショットに戻して
ネットワークなりが戻ってしまった例をよく見ます・・。
解析をする場合の注意点
• 解析ツールの検知や
VM 検知をするマル
ウェアがあります。
解析をする場合の注意点
• これ以外にも
BIOS の名前を見て
“Oracle”
“Vmware”
“QEMU”
等の文字列を見てい
る事があります。
→ ただ Hyper-V の検知は、ほとんど見ない。
今回使用したもの
今回使用したもの
• 2014年11月25日に発生した
Sony Pictures Entertainment に対して
行われたマルウェアを使用しました。
• 紹介するのは下の4検体
• 760c35a80d758f032d02cf4db12d3e55
• E1864a55d5ccb76af4bf7a0ae16279ba
• b80aa583591eaf758fd95ab4ea7afe39
各検体がどういう動きをするか
• Piyokango さんのまとめが詳しいです。
• http://d.hatena.ne.jp/Kango/20141228/1419787
781
• なぞるのは面白くないと思うので
先ほどのマルウェアを見ながら
面白そうなところだけを見ていきます。
760c35a80d758f032
d02cf4db12d3e55
この検体だけは速度を落としてゆっくりと。
760c35a80d758f032d02cf4db12d3e55
-i, -k, -m, -d, -w が引数として取れる
• -i : 自身をサービスとして登録する
• -k : (サービスとして呼び出された際に実行)
→ サービスとしての main() を実行
→ 自身を taskhost??.exe としてコピーし
それらを –w, -m, -d を付けてそれぞれ起動
→ かつ MSExchangeIS サービスを停止する
760c35a80d758f032d02cf4db12d3e55
• -w : usbdrbv32.sys を産み落として MBR を消す
• -d : (ハードディスクをワイプするらしいですが)
該当部分の実装がないので、何もせず
• -m : iissvr.exe を産み落として実行(後述)
→ termservice も止める
760c35a80d758f032d02cf4db12d3e55
• コードは簡単に strings 等で特定出来ないよう
になっている
• これ、何がしたいか分かりますか?
760c35a80d758f032d02cf4db12d3e55
• 面白そうなところ
• 今のユーザ権限でシャットダウンできるかどうかを
ちゃんと判断して処理している
760c35a80d758f032d02cf4db12d3e55
• 面白そうなところ
• ブートセクタをちゃんと読む処理がある(ライブラリ使用か)
760c35a80d758f032d02cf4db12d3e55
• 面白そうなところ
• こいつ・・・もしかして Windows 9x 対応か・・
b80aa583591eaf758
fd95ab4ea7afe39
b80aa583591eaf758fd95ab4ea7afe39
• 基本的には
760c35a80d758f032d02cf4db12d3e55
と近いコード(1つめの検体)
• -n : 壁紙を書き換える
b80aa583591eaf758fd95ab4ea7afe39
• 壁紙の変更まで・・
• 別スレッドを作って 0x493E0 分 Sleep
→その後
壁紙変更
b80aa583591eaf758fd95ab4ea7afe39
• Sleep(0x493E0)?
→ 300,000 ms.
→ 300 sec.
→ 5 minutes.
その後、自身のリソースから walls.bmp を作り、
SystemParametersInfoW を使って
壁紙を変更する。
E1864a55d5ccb76af
4bf7a0ae16279ba
E1864a55d5ccb76af4bf7a0ae16279ba
• iissvr.exe という名前で実行
• TCP 2332 でバックドアとして動作
• ブラウザに警告のページを出す
家に帰って
解析したい人へ
家に帰って解析したい人へ
• VirusTotal にモノは上がってます。
• MD5 の値で照合可能
• ネットワークに繋いだ状態でやると
何がおきるか分からないのでご注意を。
• このマルウェアではないですが、
VirusShare とかでもマルウェアは手に入ります
• http://virusshare.com/
マルウェアを
解析してみよう
三村 聡志 / みむら (@MIMURA1133)
ささやかな宣伝
宣伝
• CTF for Beginners やりまぁす!
• CTF for ビギナーズ2015横浜 with mochigoma-
Beginners(2月15日)
• CTF for Beginners 2015 in Hiroshima
(2月21日)
• 横浜の募集は月曜日から開始する予定です。
• http://2014.seccon.jp/

Edomae 2015 - マルウェアを解析してみよう