RPISEC Malware Lab#01 をやった
RPISEC Malware Lab#01 をやった
RPISEC/Malwareとはマルウェア解析について体系的に学ぶことができる教材のこと。
今回はその中のLab_01-1.malware
を解析した。
Lab_01-1.malware
1. このファイルはいつコンパイルされたか答えよ
コンパイル時間を確認するときはPEviewを利用する。 画像のようにPEviewにファイルを読み込ませたあとIMAGE_NT_HEADERS->IMAGE_FILE_HEADER->TimeDataStampを確認する。 ここにはコンパイルされた時間が格納されている。 2009/05/14 Thu 17:12:41 UTCがコンパイルされた時間だ。
2. インポートされた関数やそれらのまとまりをいくつか取り上げてマルウェアでどのように使われているか説明せよ
インポートされた関数を確認してみる。 CFF Explorer でLab01_01-1.malware を開く。 次に画面左のImport Directory を選ぶ。 下の画像のようにインポートに使われているdllが一覧表示される。 あとは気になるdllをクリックするだけで、そのdllからインポートされている関数を確認することができる。 回答としては下のようになる。
- SHELL32.dllからインポートされている"ShellExecuteExA" - プロセスを起動させる
- ソケット関連のAPI - ネットワーク通信をする際に用いられる。
- ファイル関連のAPI - ファイルを読みこんだり書き換えたりする。マルウェアをディスクに書き込むときに使われたりする。
3. ファイルの文字列で手がかりになりそうなものはどれか
PowerShell上でstringsコマンドを実行しファイル内の文字列を確認する。 (本当はfileinsightでstringsスクリプトを実行して文字列を抽出しようと思っていたが、なぜか動かなかった。あとで原因を調べる) 結果としては以下の文字列が気になった
- http://www.ueopen.com/test.html - 通信先っぽい
- 60.248.52.95:443 - 同様に通信先っぽい
- cmd.exe - コマンドを実行しそう
他には
*(SY)# cmd *(SY)# send = %d *(SY)# cmd.exe exit Open > nul /c del
といった文字列が気になった。 何かしら受け取ったコマンドを実行しそう。
4. このマルウェアを動かした時に予想される挙動はどのようなものか
問2の回答より、インポートされたAPIから察するにネットワーク通信をしファイルを書き込みマルウェアを実行させる。 通信先は問3の回答で抽出した通信先と予想。
5. procmonでフィルタをかける際に使う名前とそれを使う理由
procmonとはプロセスのイベントを取得しログとして残してくれるツールのこと。 ログを取得する際にフィルタを利用することで特定のイベント/プロセスについて情報を抽出できる。 今回はプロセスの名前を使うと適切だと考えられる。 理由としてはマルウェアの挙動を追うにはプロセス単位で見たほうが効率的だから。
6. ホストベースのシグネチャとなりそうなものは何か(ファイルやレジストリキー、プロセスやらサービス、その他)。もしも存在していたらどのようなものか
抽出した文字列から考えるに
cmd.exe /c del
でファイル削除をしそう。
7. ネットワークベースのシグネチャとなりそうなものは何か(URL, 通信, その他)。もしも存在していたらどのようなものか
抽出した文字列から下記のURLとIPアドレスがネットワークベースのシグネチャになりそう
* http://www.ueopen.com/test.html
* 60.248.52.95:443
8. 解析を妨害する機能は存在するか。存在していた場合、どのようにそれを回避するか
このファイルは自身を削除することで解析を妨害してくる。 回避するには2つ手段が存在する。 1. ファイルをコピーして保存しておく 2. ファイルを削除する箇所の命令を無効化しておく
9. このマルウェアの目的は何か
抽出した文字列からネットワーク越しに何かしらのコマンドを実行する。 いわゆるバックドアだと考えられる。