情報システム実験A「バイナリプログラムの解析」(2020年度)
実験の概要
バイナリプログラムを解析するための基本的な技術やツールを学ぶ.受講者は具体的には以下の事項を実行する.
- 解析のためのツールや解析を妨害するためのツールの使い方を学ぶとともに.解析現場における問題を模した問題をそれらのツールによって実際に解決する.
- それらのツールを改造して機能を拡張したり,それらのツールの核となる部分だけを有するような小さいツールを実装する.
- バイナリプログラムの解析のための,規模がある程度大きいシステムを最終課題として開発し,発表会でそれについてのプレゼンテーションを行う.
毎週1回程度のペースでレポート課題を課す予定である.
manabaのコースページ
manabaのコースページ: 情報システム実験A
manabaのコースページ: 情報システム実験A K-15 バイナリプログラムの解析
このコースページは非公開である.
この実験テーマで実験を行うことになった学生をコースメンバーとして登録し,それらの学生はこのコースページを閲覧できるようにする.
実験の資料,参考書
教科書は指定しない.各週の実験についての資料をmanaba上で配布する.
実験を行うにはそれだけで十分であるが,さらに深く学びたい人には,以下の書籍を参考書として薦める.
どれも相当レベルが高く難解なので,時間をたっぷり確保して,覚悟して読んだほうがいい.
- Dennis Andriesse, "Practical Binary Analysis," No Starch Press,2018.
- Reginald Wong, "Mastering Reverse Engineering," Packt,2018.
- Monnappa K A, "Learning Malware Analysis," Packt,2018.
上記3冊を最も薦めるが,どうしても日本語の書籍がほしい場合には,以下の書籍を薦める.
- 姜 秉卓 著, 金 輝剛 監修, 金 凡峻 翻訳,「リバースエンジニアリングバイブル」,インプレス,2013.
実験のスケジュール(予定)
受講者の技術レベルに応じて臨機応変に変更する.
- 第1週: ガイダンス,解析に使えるコマンドとツール,プログラムファイルのメタデータ
- 第2週: 逆アセンブルと逆コンパイル
- 第3週: マルウェア解析Webサービス
- 第4週: パッカーと難読化
- 第5週: シグネチャマッチング
- 第6週: 制御フローグラフ
- 第7週: 仮想マシン,エミュレータ,デバッガ
- 第8週: 環境fingerprintingと解析回避
- 第9週: カバレッジツール
- 第10週: ファジング
- 第11週: シンボリック実行
- 第12週: 最終課題のシステムの実装(1)
- 第13週: 最終課題のシステムの実装(2)
- 第14週: 最終課題発表会
最終課題(予定)
既存の解析ツールのクローン,改造版,機能限定版などを実装する.
いわゆる「〇〇もどき」「なんちゃって〇〇」「〇〇インスパイア」と呼ばれるツールを作る.車輪の再発明をする.
実装を通じて解析ツールや解析に関連する知識についての理解を深める.
外部資料へのリンク
- 第1週
- od, hexdump, objdump, readelf, peid, file, strip, strace
-
-
- 第2週
- objdump, IDA Pro, Ghidra, gdb, Radare2, Boomerang
- うさみみハリケーン
-
- 第3週
- VirusTotal, Hybrid Analysis, ANY.RUN
-
-
- 第4週
- UPX, PECompact, PEtite, ASPack
- Themida, VMProtect
- Tigress
- 第5週
- 第6週
- 第7週
- 第8週
- 第9週
- 第10週
- 第11週
- 第12週
- 第13週
- 第14週
Copyright (C) 2020 Yoshihiro Oyama All rights reserved.