コースの概要
本コースは、ARMアーキテクチャにおける「実践的な」エクスプロイト技法を学んで頂くためのコースです。 XN(eXecute Never)、ASLR、又はスタッククッキーなどの緩和策によって、現実のエクスプロイトは以前より難しく且つ単純ではなくなっています。ARMで実際にエクスプロイトを成功させるには、これらの対策を現実的に突破しなくてはなりません。本コースの目的は、そのような現実を反映し、あくまで実践的なエクスプロイト技法を習得することにあります。
高度なエクスプロイト手法とともに、Linuxをベースに使いARMアーキテクチャを学びますが、その応用となる対象は、スマートフォン、タブレット、又は組み込みデバイスのプラットフォームです。 エクスプロイトの知見はあるもののARMについて何も分からない方でも、最終日には、ヒープに関する脆弱性を突き、ASLRやXNを迂回し、作成したROPのペイロードを使ってコネクトバックシェルを取得できるようになります。
履修対象者
- 下記のコンセプトに慣れていること (x86などARM以外のアーキテクチャにおけるソフトウェアのエクスプロイトのバックグラウンドがある方を想定しています)
- スタックオーバーフローのエクスプロイト
- ヒープオーバーフローのエクスプロイト
- IDAの基本的操作
- gdbの基本的操作
- Python (又はその他の軽量プログラミング言語)の簡単な知識
- C++ や C のコーディング経験
- また、下記の環境を持参頂くことが必要になります。
有線及び無線LANに接続できるPC (OSは問いません) / VMWare / IDA Pro (Starter、又はそれ以上のedition) / SSH/Telnet クライアント(各自のラボ環境へアクセスするため)
コース内容
テスト組み ARMアーキテクチャ
レイアウト、レジスタ、命令セットとモード
1日目: エクスプロイト 初級
ARMアーキテクチャ
レイアウト、レジスタ、命令セットとモード
[ラボ] GDBとIDA
ARMアプリのデバッグと改変 / ARMの呼出規約
[ラボ] GDBとIDA
ARMアプリのデバッグと改変 / ARMの呼出規約
[ラボ] ソースコードから特定する脆弱性
ラボ環境について
Gumstix ARM / カスタムツール
[ラボ] IDAとGDBを併用してアプリのフローを制御
[ラボ] ブラックボックスARMアプリのトレースとリバースエンジニア
シェルコード、ELF、動的リンク
[ラボ] シェルコーディング
[ラボ] シェルコーディング
アセンブリによるコーディング / ローダーアプリへのロード
スタックオーバーフロー
基本(NOPスレッド、バウンスポイントなど) / スタッククッキーなどの緩和対策とROP的なRet2Libcによる迂回 / バウンスポイントの特定 / ARM特有のニュアンス
[ラボ] スタックオーバーフロー
スタックオーバーフローを特定してエクスプロイト
2日目: エクスプロイト 中級
スタックオーバーフローとRet2Libc
XN(eXecute Never)スタック対策とROP的なRet2Libcによる迂回
[ラボ] スタックオーバーフローとXNスタック
XN(eXecute Never)mprotect()へリターンしてXNスタックのアプリを攻略
スタックオーバーフロー上級
XNスタック / ASLR / スタッククッキー / __stack_chk_guard の上書き、ポインタの上書き、例外ハンドラーの上書き
[ラボ] スタックオーバーフローとXNスタック上級
ネットワークサービス(XNとスタッククッキー付き)をエクスプロイト / ポインタの上書きとROP的な手法
ROP
なぜROPが必要か(コード署名、ASLR、クッキーなどに対して) / ARMでROPガジェットを見つける手法とツール / ターゲットアプリにある使えるガジェット / ARMのROPトリック
[ラボ] カスタムROP
ROPガジェットをつないでペイロードをカスタマイズ
[ラボ] カスタムROPでrootシェル
ROPペイロードをカスタマイズし、ターゲットホストのrootシェルを取得
3 - 4日目: エクスプロイト 中から上級
ヒープ基本: ARMにおけるヒープオーバーフロー
ヒープの実装とエクスプロイト / ヒープ grooming / TCMallocのスレッドキャッシュフリーリスト
[ラボ] ヒープ アンリンク
ネットワークサービスをエクスプロイト
ヒープ
シングルリンクリスト(LIFO)のエクスプロイト / ヒープオーバーフローの緩和対策 / TCMalloc の詳細
[ラボ] ヒープ WMW (Write Me Where)
TCMallocを使うネットワークサービスをエクスプロイト
アプリケーションレベルでのヒープのエクスプロイト
c調査の手法 / VTableの上書き、ポインタの上書きによるエクスプロイト
[ラボ] マルチヒープ
ヒープスプレーとVTableの上書きでエクスプロイト
スタックフリップ
スタックフリップ / ピボットの特定
[ラボ] マルチヒープ XN
ヒープスプレーなどによりC++のオブジェクトを上書きして偽のVTableエントリーを作成する / スタックポインタをヒープにリダイレクト / ROPペイロードを実行させてシェルを取る
ASLRを突破する
アドレスリーク、デバッグコード、RPC/RMIリーク、ASLR PRNGの推測、非初期化メモリ、JITなど
[ラボ] マルチヒープ XN ASLR
リモートアプリのアドレスリークから、libcの場所を特定 / XNとASLRを突破するペイロードを作成してコネクトバックシェルを取る
まとめ
講師について

ラウリ コルツパルン
Lauri Korts-Parn当研究所CTO。エストニア出身。タリン技術大学で8年間Linux管理者を務める過程で、ネットワーク、Linux、複合セキュリティ環境等に関する高度な技術と知識を習得する。2003年、欧州で開催された、セキュリティ研究機関Zone-hのハッキングミッションを史上最速でクリア。その後、Zone-hの中心メンバーとして、世界各国で実践ハッキングセミナーの講師を務めている。 2004年よりサイバーディフェンス研究所に参加し、セキュリティセミナーや脆弱性診断業務に従事している。この間、多数の重要な日本企業のセキュリティ診断を実施する傍ら、DefConのCTFコンテストの決勝戦に進むなど、数々の貴重な経験を積んでいる。卓越したハッキング技術に加え、エストニア語、英語、日本語、ロシア語、フィンランド語などの多言語を自在に操る。現在、様々なセキュリティ診断ツールの開発や当研究所セミナー講師等を担当している。時折、真っ赤なTシャツと短パンに、濃い色の派手なサングラスで出勤する。

坂井 祐介
Yusuke Sakai当研究所上級分析官。脆弱性、脅威情報の分析を専門とし、サイバー脅威や最新の脆弱性情報の収集に関する調査研究のエキスパート。 海外の演習専門家からサイバー演習の設計および実施の体系を習得し、サイバー演習の設計および実施ができる国内では数少ない技術者。 米国Immunity社の攻撃コード分析における認定講師。 TOEIC990点獲得。
開催要項
コース名 | Practical ARM |
形式 | ハンズオン |
期間 | 4日間|10:00~18:00 (プライベート開催も可能です。お問い合わせ下さい。) |
定員 | 10名(最低開講人数: 5名) |
教材 | 英語 |
価格 | お問い合わせください |
会場 | サイバーディフェンス研究所オフィス内トレーニングラボ |
トレーニングの申し込み
トレーニングのお申し込みはメール(seminar@cyberdefense.jp)にて受付けております。
受講申込書をダウンロードし、必要事項をご記入の上、トレーニング事務局まで
メール(seminar@cyberdefense.jp)してください。メールによるお申込みを受付後、当研究所よりトレーニングお申し込み受付確認のメールをお送りいたします。
お申込み時の注意
- 受講者の変更
受講申込書記載の受講者は、各コース開催日までにご連絡いただくことでご変更は可能です。
- 受講料のお支払い
各コースの終了後に請求書を送付いたします。お支払いは、各コース開催月の翌月末に一括ご入金いただきます。
- キャンセルについて
各コース開始日の2週間前までに書面もしくはEメールにてご連絡ください。それ以降各コース開催日までのキャンセルには、25,000円のキャンセル料金が発生します。また当日やむを得ず欠席される場合に関しては、受講料をお支払いいただきます。
- 誓約書への署名
各コース初日に誓約書類への署名が必要となります。これは、各コースで習得したハッキング技術等を悪意を持って使用しない旨をご誓約いただくものです。
受講申込書のダウンロード
上記の諸注意事項、トレーニングの申し込み注意事項をご確認のうえ、ご同意頂ける場合は下記より受講申込書をダウンロードしてください。