実践バイナリ解析 バイナリ計装、解析、逆アセンブリのための Linux ツールの作り方(ジッセンバイナリカイセキ バイナリケイソウ、カイセキ、ギャクアセンブリノタメノリナックスツールノツクリカタ)
- 著者:
- Dennis Andriesse/株式会社クイープ/遠藤美代子(デニース アンドリーセ/カブシキガイシャクイープ エンドウミヨコ)
- 出版社:
- ドワンゴ
- 出版日:
- 2022年01月29日頃
- ISBN:
- 9784048931007
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
バイナリ解析とは、バイナリプログラムとそれに含まれているマシンコードやデータの性質を解析する科学と技術のことだ。セキュリティの脆弱性を狙う攻撃やマルウェアなど、悪意をもつソフトウェアに対処するには、バイナリプログラムの本当の性質を突き止める、そのプログラムが実際に実行することを突き止める必要がある。
本書は、バイナリプログラムの基礎知識、静的解析や動的解析といったバイナリ解析の基本から、ソースプログラムがなくてもバイナリプログラムの内容を書き換えるバイナリ計装といった高度な手法まで、リバースエンジニアリングの範囲を超えて実践的に解説する。
セキュリティエンジニアやセキュリティ研究者、ハッカーやペネトレーションテストの担当者、リバースエンジニア、マルウェアアナリスト、そしてコンピュータサイエンスの学生など、バイナリ解析に興味をもつすべての人を対象とした、最も魅力的で最も手ごわいテーマであるバイナリ解析入門の決定版である。
第 I 部 バイナリフォーマット
第 1 章 バイナリを解剖する
第 2 章 ELF フォーマット
第 3 章 入門:PE フォーマット
第 4 章 libbfd を使ってバイナリローダーを作成する
第 II 部 バイナリ解析の基礎
第 5 章 Linux での基本的なバイナリ解析
第 6 章 逆アセンブリとバイナリ解析の基礎
第 7 章 ELF にコードを注入する
第 III 部 高度なバイナリ解析
第 8 章 逆アセンブリのカスタマイズ
第 9 章 バイナリ計装
第 10 章 動的テイント解析
第 11 章 libdft を使った実用的な動的テイント解析
第 12 章 シンボリック実行
第 13 章 Triton を使ったシンボリック実行
第 IV 部 付録
付録 A 速習:x86 アセンブリ
付録 B libelf を使って PT_NOTE を上書きする
付録 C バイナリ解析ツール
付録 D 参考文献
技書の森解説
ソースコードのない実行ファイルの中身を読み解く技術、すなわちバイナリ解析は、セキュリティ研究やマルウェア解析の現場で不可欠でありながら、体系的に学べる書籍が限られていた分野です。本書は Dennis Andriesse 氏 (GameOver Zeus ボットネットのテイクダウンに携わったリバースエンジニア) による Practical Binary Analysis の日本語版で、 Linux の ELF 形式を中心に、逆アセンブル、バイナリ計装、動的テイント解析、シンボリック実行までを一冊で扱います。
構成は前半で ELF ヘッダや libbfd を使った解析ツールの自作を行い、後半で Pin や Triton といったフレームワークを使った高度な手法へ進みます。「読むだけ」では終わらせず、各章末の演習で実際にツールを組み立てるため、手を動かした分だけ技術が身につく設計です。前提として C 言語と Linux の基本操作、アセンブリの初歩的な読解力が求められますが、それらがあれば、一般にはエキスパートだけが持つとされるバイナリ解析の技能へ段階的に到達できます。
CTF (セキュリティ競技) の Rev 問題に取り組みたい人、脆弱性調査の実務に進みたい人にとって、解析の全体像を俯瞰しつつ手を動かせる入口として長く参照できる一冊です。
言及 Qiita 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
技術書の「参考文献リスト」は次の 1 冊への最短ルート
技術書の巻末にある参考文献リストを活用していますか。著者が厳選した文献リストは、次に読むべき本を見つける最も信頼性の高い方法です。参考文献リストの読み方と活用法を紹介します。
関連用語
SAML
企業の ID プロバイダーとサービスプロバイダー間でシングルサインオンを実現する XML ベースの認証プロトコル
Unicode
世界中の文字を統一的に表現するための文字コード規格
エンディアン
2 バイト以上のデータをメモリやファイルに格納する際の、バイトの並び順を定める規約
Base64
バイナリデータを ASCII テキストに変換するエンコーディング方式で、メールや JSON でのバイナリ転送に使われる
エンコーディングとシリアライゼーション
データを転送・保存可能な形式に変換する手法の総称
Java
エンタープライズ開発で広く使われるオブジェクト指向言語で、JVM 上で動作しプラットフォーム非依存を実現する