持参するもの:
受講者は、Microsoft® Windows® 2000、XP あるいは 2003 をネイティブかバーチャルマシン内にインストールした自己所有のラップトップを持参すること。
受講者は、DataRescue社のIDA ProとOllyDbgを自分でインストールし、慣れておくこと。
受講者は、Windows バージョンの Python をインストールしておくこと。
IDA Proのデモコピーは、DataRescure社より入手できる。
OllyDbgはここから入手できる。
その他のツールは、クラスルームにおいて用意される。
受講生は、Microsoft Windows を快適に使うことができること。X86アセンブリと高級言語とOSコンセプトのベーシックを理解していることが望ましい。
|
概要:
リバース・エンジニアリングは、少数のエリートだけに伝統的に限定された「dark art」としての存在から、公開されたツールや市販ツールを使って学習可能な方法論へと発展した。脆弱性研究者は、この芸術的手法を用いて伝統的な Fuzzing化技術による到達可能な深さを越え、裏側に隠されたものを特定する。なぜなら、現在の悪意があるコードは進化しているため、既存のライブ分析のテクニックに頼っていたのでは、分析研究者がマルウェア内部の動作構造をマッピングすることできないからである。一般的にも、「外装の内側」をのぞき見る必要にぶつかっている研究者の数は増加する一方である。
このクラスは、悪意のあるコードの分析についての最先端の理解を参加者へ伝授し、究極的には参加者をリバース・エンジニアリング技能の進歩したレベルへ到達させ、その技能をセキュリティの他の領域へも応用できるようにするためにある。
本講座で学ぶこと:
このコースは、x86アセンブリとリバース・エンジニアリングの入門的知識と基本的な理解を持つ受講者を対象として設計されているが、さらに先に進んだ受講者にとっては技能の復習とよく知られた問題への新しいアプローチを学ぶことができるようになっている。
このコースでは、x86アセンブリの基本とパターンの認識、Windowsプロセスのメモリーレイアウト、IDA ProやOllyDbg のような実用的ツール、ワームがターゲットシステムに侵入する際に悪用するPEファイル形式とスタックやヒープのオーバーフロウなど基本的なエクスプロイットの方法論をカバーする。このコースは悪意があるコードの分析に焦点を当てるが、その際受講者にはリバース・エンジニアリングするために実際のウィルスサンプルが与えられる。また、実行ファイルのパッキング、obfuscation(不明瞭化)の方法、アンチ・デバッグとアンチ・逆アセンブルなどの詳細が解説され、学習の補強としてハンズオン実習で実際に使ってみる。
コースの終わりに向かうにしたがい、さらに先進的なリバース・エンジニアリング・テクニックが、悪意があるコードの分析用アプリケーションとともに教えられる。それらの内容は以下のようなものである:
- 自動化への様々なアプローチ
- マルウェアの分類
- バイナリー・マッチングと相違発見のアプリケーション
本講座の構成:
これは2日間のコースであり、それぞれの局面での「素早いレスポンス」の概念が重要視されている。タイムリーかつ効果的な方法で応用できるテクニックと方法論に焦点を合わせる。このコースではショートカットを学ぶように仕向けられ、マウスよりキーボードが多用されることになる。
このコースを完了すると、受講者は実世界で応用可能な知識を持ってクラスルームより送り出される。様々なリバース・エンジニアリング関連の仕事に直接適用できる知識ばかりだが、悪意があるコードの分析に関する知識は特に有用である。
講義の進め方:
このコースは、2日間講師によるレクチャーのみが続くという類のものではない。参加者は、クラスで教えられた内容すべてについて実力が強化されるよう、個人とグループとでの多数のハンズオン実習を実践することになる。いくつかの実習は競争的な方法がとられる。それらはクラスのディスカッションによりフォローされ、特にエレガントなアプローチ法や個人やグループで使われた様々なソリューションについては、ピックアップして論じられる。
受講対象者:
リバース・エンジニアリングの分野に興味を持っている者、未知のコードをより速く解剖する方法を学ぶ意志がある者、テクニックやアイデアや最先端技術について論じたい者、あるいは単に友人たちをプログラミングで感服させたいという者であっても、受講対象者の資格として充分である。
学習環境:
受講者には、クラスで直接用意される資料やスライドとハンズオン実習以外にも、インストラクターに対して1対1で質問を訊ねられる多くのチャンスがある。さらに受講者は、受講者間での知識伝授が促進されるように、経験値によりグループに分けられる可能性もある。
必須条件:
受講者は、マイクロソフトWindowsを快適な運用でき、x86アセンブリと高レベル・プログラミングとOS概念の基本的な理解を持っていることを期待される。
|