情報システム実験B「バイナリプログラムの解析」(2022年度)
担当教員: 大山恵弘 (筑波大学 システム情報系)
実験の概要
バイナリプログラムを解析するための基本的な技術やツールを学ぶ.受講者は具体的には以下の事項を実行する.
- 解析のためのツールや解析を妨害するためのツールの使い方を学ぶとともに.解析現場における問題を模した問題をそれらのツールによって実際に解決する.
- それらのツールを改造して機能を拡張したり,それらのツールの核となる部分だけを有するような小さいツールを実装する.
- バイナリプログラムの解析のための,規模がある程度大きいシステムを最終課題として開発し,発表会でそれについてのプレゼンテーションを行う.
最終課題とは別に,2週に1回程度のペースで小さい課題についてのレポートを課す予定である.
manabaのコースページ
情報システム実験B
K-15 バイナリプログラムの解析 (この実験テーマを選択した学生のみがアクセス可)
実験の資料,参考書
教科書は指定しない.各週の実験についての資料をmanaba上で配布する.
実験を行うにはそれだけで十分であるが,さらに深く学びたい人には,以下の書籍を参考書として薦める.
どれも相当レベルが高く難解なので,時間をたっぷり確保して,覚悟して読んだほうがいい.
- Dennis Andriesse, "Practical Binary Analysis," No Starch Press,2018.
和訳:
Dennis Andriesse 著,株式会社クイープ/遠藤美代子 訳,「実践バイナリ解析 バイナリ計装、解析、逆アセンブリのためのLinuxツールの作り方」,ドワンゴ,2022.
- Reginald Wong, "Mastering Reverse Engineering," Packt,2018.
- Monnappa K A, "Learning Malware Analysis," Packt,2018.
和訳:
Monnappa K A 著,石川 朝久 訳,「初めてのマルウェア解析」,オライリー・ジャパン,2020.
上記3冊を最も薦めるが,他には以下の書籍を薦める.
- 姜 秉卓 著, 金 輝剛 監修, 金 凡峻 翻訳,「リバースエンジニアリングバイブル」,インプレス,2013.
- Digital Travesia管理人 うさぴょん 著, 「デバッガによるx86プログラム解析入門【x64対応版】」,秀和システム,2014.
実験のスケジュール(予定)
受講者の技術レベルに応じて臨機応変に変更する.
- 第1週: ガイダンス,プログラムファイルのメタデータ
- 第2週: 逆アセンブルと逆コンパイル
- 第3週: マルウェア解析Webサービス
- 第4週: パッカー
- 第5週: 難読化
- 第6週: シグネチャマッチング
- 第7週: 動的解析
- 第8週: 解析回避と環境fingerprinting
- 第9週: ファジング
- 第10週: シンボリック実行
- 第11週: 最終課題のシステムの実装(1)
- 第12週: 最終課題のシステムの実装(2)
- 第13週: 最終課題のシステムの実装(3)
- 第14週: 最終課題発表会
最終課題(予定)
バイナリプログラムの解析に関連する既存のツールや機構のクローン,改造版,機能限定版などを実装する.
実装するのは,解析する側のツールや機構でもよいし,解析される(ことを回避する)側のツールや機構でもよい.
いわゆる「〇〇もどき」「なんちゃって〇〇」「〇〇インスパイア」と呼ばれるツールを作る.車輪の再発明をする.
実装を通じて解析ツールや解析に関連する知識についての理解を深める.
関連するツール,資料,記事(随時更新)
これらのツールが100%安全であることは保証できません.
ツールを自分の環境にインストールするときには,十分に情報を収集して納得した上で,自分の責任においてインストールして下さい.
VirtualBoxなどの仮想マシンやWindows Sandboxなどのサンドボックスの利用も検討して下さい.
- 全体
- 第1週
- ファイルのダンプに使えるコマンド: od, hexdump, xxd
- PEファイル情報出力ツール
- バイナリエディタ
- 汎用ツール
- 関連資料
- 第2週
- 第3週
マルウェア解析Webサービス
- 第4週
パッカー
- オープンソース
- 無料
- 商用(ただし多くは無料の評価版も提供)
- Packing/unpacking関連の資料
- 第5週
難読化
- 第6週
- 第7週
- トレーサ
- デバッガ
- バイナリinstrumentation
- サンドボックス
- コンテナ基盤
- エミュレータ
- ハイパバイザ,仮想マシンモニタ
- 第8週
- (第9週)
- (第10週)
Copyright (C) 2022 Yoshihiro Oyama All rights reserved.