2016/03/05は第23回北海道セキュリティ勉強会が開催されたので参加してきた。 今回はツールを使って実際に動かしながらお話を聞くハンズオン形式だった。 Session1: フリーツールを使用したx86プログラムの解析 コンピュータの不正プログラムは攻撃者の意図がある 不正プログラムを解析して、攻撃者の意図を探る 攻撃者の視点で考える 1からすべて解析するには時間がかかるため、ある程度あたりをつけて解析する 表層解析:プログラムを実行せずに解析 動的解析:実際に実行して解析、サンドボックスによる自動解析 静的解析:逆アセンブルしてコードレベルで解析する、さまざまな知識が必要 注目するWin32API関数 ファイル操作関連 通信関連 サービス関連 レジストリ関連 文字列にも注目(IPやURLなど) 正常のプロセスのように見せかけて気づかれないように隠れる LoadLibraryでDLLを読み込んでからAPIを使用する(wininet.dll→通信する機能) GetProcAddressで読み込んだDLLの関数を取得 GetSystemTime、現在日時をみて動作するプログラム お勧めの本 Practical Malware Analysis 感想 使用関数を隠すためにLoadLibraryでDLLを動的に読み込んいるらしいが、関数を取得するのに関数名が必要だからあまり隠れていないように思うのだが、何か別の方法があるのだろうか。 Session2: Volatility Frameworkを使ったメモリフォレンジックス 正しい状態を知る 通常のプロセスの数を知る(Service.exeはひとつでなければならないなど) 正しい状態を知るにはSANSのページの ポスター がお勧め メモリフォレンジックス:メモリダンプの内容を解析して痕跡や攻撃手法を特定 利点はディスクを見なくても痕跡を見る事ができる メモリ解析の流れ メモリダンプ取得 OSの特定 フォレンジックスフレームワークを使用して解析 Volatility Framework オープンソース Python実装 コマンドラインで解析 Windows、Linux、OS Xに対応 ハンズオン -f <dumpfilename>: イメージフ