アナライジング・マルウェア

―フリーツールを使った感染事案対処

[cover photo]
TOPICS
Web , Security
発行年月日
PRINT LENGTH
264
ISBN
978-4-87311-455-2
FORMAT
Print PDF
Ebook
3,300円
Ebookを購入する
Print
3,300円

本書では、今や社会問題となっているマルウェアへの対策として、効率的にバイナリレベルで検体を解析し、対処方法を導き出すためのテクニックを紹介します。解析対象はWindowsに感染するマルウェアです。ファイルをダウンロードするマルウェア、パックされているマルウェア、動的解析を妨害するマルウェア、コードインジェクションをするマルウェア、カーネルモード(Ring0)で動作するマルウェアといった特徴的な事案をピックアップし、それらを解析するためのツールやテクニックを日本人著者が実践的な形式で解説します。
/ART/OF/REVERSINGシリーズ、ここに極まれり。

著者によるサポートページ(本書のサンプルコードをダウンロード可)。

目次

推薦の言葉
まえがき

1章 ファイルをダウンロードするマルウェアの解析
    1.1 マルウェア解析の世界へようこそ
    1.2 マルウェア解析とは
        1.2.1 マルウェア解析における観点
    1.3 マルウェア解析方法の概略
    1.4 マルウェアの入手方法
        1.4.1 検索エンジンから入手する
        1.4.2 専門 Webサイトから入手する
        1.4.3 自分でハニーポットを運用して入手する
    1.5 ファイルの判別
    1.6 動的解析と静的解析
    1.7 解析環境の整備
        1.7.1 物理環境と仮想環境
        1.7.2 仮想化ソフトウェア
    1.8 動的解析
        1.8.1 動的解析を提供する Webサービス
    1.9 マルウェア解析環境で使用できるツール
        1.9.1 表層解析
        1.9.2 デバッガの基礎
        1.9.3 アンパック
        1.9.4 Process Monitor
        1.9.5 Malcode Analysis Pack
        1.9.6 SysAnalyzer
        1.9.7 FlyPaper
        1.9.8 BlackManta
    1.10 静的解析
        1.10.1 IDA Proによるマルウェア解析
        1.10.2 マルウェア解析のための Win32 APIチート表の使い方
    1.11 まとめ

2章 パックされているマルウェアの解析
    2.1 はじめに
    2.2 PEファイルフォーマット
        2.2.1 DOS MZヘッダ / DOSスタブ
        2.2.2 PEヘッダ
        2.2.3 セクションテーブル
        2.2.4 セクション
        2.2.5 PEファイルフォーマットを確認するツール
    2.3 パック
        2.3.1 パックされたプログラムの特徴
        2.3.2 パックされたプログラムの実行フロー
        2.3.3 自作パッカーで動作を理解する
    2.4 アンパック
        2.4.1 アンパックに使うツール
        2.4.2 マニュアルアンパック
        2.4.3 アンパックの実例
    2.5 アンパックを妨害するテクニック
        2.5.1 Stolen Bytes(Stolen Codes)
        2.5.2 SizeOfImageの改変
        2.5.3 Import Redirection
    2.6 まとめ

3章 動的解析を妨害するマルウェアの解析
    3.1 はじめに
        3.1.1 仮想化ソフトウェア
        3.1.2 システムリソース監視ツール
        3.1.3 デバッガ
    3.2 動的解析ツールの検出
        3.2.1 プロセス一覧から動的解析用のツールを探し出す方法
        3.2.2 ウィンドウを検出する方法
        3.2.3 動的解析ツールが利用するデバイスファイルを検出する方法
    3.3 タイマーによるチェック
        3.3.1 Win32 APIの利用
        3.3.2 RDTSC命令
    3.4 マルウェア自身の再起動
    3.5 デバッガの検出
        3.5.1 IsDebuggerPresent
        3.5.2 PEB!NtGlobalFlags
        3.5.3 CheckRemoteDebuggerPresent
    3.6 仮想化ソフトウェア上での動作の検出
        3.6.1 VMwareバックドア I/Oポート
        3.6.3 GDT、IDT、LDTアドレスの確認
    3.7 さまざまな例外発生への対処
    3.8 APIに設定されたブレークポイント( INT3)の検出

4章 コードインジェクションをするマルウェアの解析
    4.1 はじめに
    4.2 コードインジェクションの方法
        4.2.1 SetWindowsHookExを使う方法
        4.2.2 レジストリキー “AppInit_DLLs”を使う方法
        4.2.3 BHOを使う方法
        4.2.4 CreateRemoteThreadを使う方法
    4.3 コードインジェクションマルウェアの解析
        4.3.1 コードインジェクションの検出
        4.3.2 インジェクションされたコード( DLL)の解析
        4.3.3 CreateRemoteThreadでインジェクションされたコードの解析
    4.4 まとめ

5章 カーネルモード( Ring0)で動作するマルウェアの解析
    5.1 はじめに
        5.1.1 準備
        5.1.2 VMwareとWinDbgのセットアップ
        5.1.3 WinDbgの使い方
        5.1.4 WinDbg拡張機能作成のための環境構築
    5.2 カーネルモード( Ring0)のマルウェアの概要
    5.3 カーネルモードマルウェアの解析
        5.3.1 SSDT Hooking
        5.3.2 Runtime Patching(Inline Hooking)
        5.3.3 IDT Hooking
        5.3.4 IRP Hooking
        5.3.5 MSR Hooking(sysenter Hooking)
        5.3.6 DKOM
    5.4 オリジナルツールによるカーネルモードマルウェアの解析
        5.4.1 WinDbg拡張機能について
        5.4.2 基本的な拡張機能の作成
        5.4.3 実践的な拡張機能の作成
    5.5 まとめ

索引

マルウェア解析のためのWin32 APIチート表