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>: イメージファイルを指定する
- -h: で使えるプラグイン一覧がわかる
- imageingo: OSを特定
- --profile=<osname>: 特定したOSを指定する(今回はWinXPSP2x86)
- pstree: プロセスツリーを表示
- connections: ネットワーク接続を表示
- connscan: クローズしたネットワーク接続を表示、IPアドレスとプロセスIDが表示される
- malfine -p
--dump-dir=<dirname>: 指定PIDのダンプを指定したディレクトリに取り出す - mutantscan: Mutexの名称一覧を表示。二重起動を制御するためにMutexを使用、その際の文字列から攻撃者を知ることがある
- printkey -K <keyname>: 指定したレジストリキーの内容を表示 "MicrosoftNT"を指定する事で、スタートアップの自動起動している実行ファイルを見つける事ができる
本
- the Art of MEMORY FORENSICS
コメント
コメントを投稿