デジタル人材の育成
ソフトウェアのサービスを公開する前に、開発者がすべてのバグや脆弱性を発見・修正することは困難です。そのため、多くのサービスでは、顧客から自動的にクラッシュの報告を収集し、それを基にサービスを公開した後にバグや脆弱性を修正しています。顧客体験やセキュリティレベルの低下を抑えるためには、顧客に大きな影響を与えるバグや脆弱性を特定し、優先度の高いものから迅速に修正することが重要です。しかし、大規模なサービスでは、毎日数百万件の報告を受け取ることがあり、開発者がそれらを手動で確認することは不可能です。この問題を解決するために、自動化された様々なトリアージ技術が提案されています。
トリアージはクラッシュ原因となる入力を分析し、報告するプロセスです。トリアージは一般に以下のようなプロセスで構成されます:
- クラス分類:同じバグや脆弱性に属するクラッシュの報告をクラスに分けます。
- 根本原因解析:分類された各クラスの代表ケースを解析して、そのバグや脆弱性を引き起こす原因を分析します。
- 優先順位付け:顧客への影響度(クラス分類に基づく各クラスの報告数)やセキュリティ上の脅威度(根本原因解析に基づく脆弱性の悪用可能性)から、各クラスを修正する優先度を決定します。
このようなプロセスにより、開発者が確認すべき報告の数が減り、適切な順序でバグや脆弱性を修正するためのパッチを作成することができるようになります。
本講義では、実世界で使われているトリアージ手法から、研究レベルの最先端な手法まで、様々な手法を幅広く学びます。また、いくつかの手法を実装し、トリアージが適切にできる事例やできない事例を体験します。最終的に、トリアージ技術の全体像を理解し、実務レベルでトリアージ手法を扱えるようになることを目指します。
Linux Kernelは私達が日常的に利用するプログラムの中で最も身近で大規模なものの一つです。カーネルにおけるバグは高い技術力を持った攻撃者に悪用されることで権限昇格等の重大なリスクに繋がる可能性を持っています。本講義ではCTF-likeな問題を題材としてカーネル領域で動くプログラムの脆弱性を扱い、演習形式で実際に攻撃を行います。演習はLinux Kernelに対する攻撃手法・脆弱性のRoot Causeの特定・カーネルの解析手法等を手を動かして経験・理解し、キャンプ後に自主的に学習を継続できる力を身につけることを目的としています。
Kernel Exploitには、攻撃を通してLinuxやその周辺技術に対する理解を加速させる働きがあります。また、カーネル内の複数の要素をコントロールして権限昇格を行う過程は純粋なパズル的面白さを含んでいます。実際に手を動かしながらの試行錯誤を介して、これらの楽しさを経験していただきます。
講義で扱う内容の詳細・難易度は、参加者の決定後皆さんの経験とスキルをもとに調整します。
現段階では、ユーザランドの基本的なExploitの知識とスキル・x64アーキテクチャの基礎的知識・C製大規模プログラムのコードリーディングやGDBを用いたデバッグスキルがあることを想定しています。但し、ユーザランドにおけるこれらの前提知識・スキルは事前課題で扱う予定のため、現段階で持ち合わせている必要はありません。
高度な攻撃グループが行う攻撃を未然に防いだり、類似した攻撃を受けないようにするためには、攻撃グループや攻撃手法について様々な情報を収集・分析し、予防・検知に役立てる技術「脅威インテリジェンス」が重要となります。また、分析・作成した脅威インテリジェンスを組織内外に共有することにより、早期警戒を促すことも可能です。
一方、攻撃手法の分析といえば、マルウェア解析、脆弱性分析、フォレンジック分析などが思い浮かぶかもしれませんが、ここから得られた情報をどのように予防・検知に役立てていくべきでしょうか?本講義では、マルウェア解析・フォレンジック分析などで判明した情報を前提として、MITRE ATT&CKフレームワークなどを活用し、攻撃グループが利用した攻撃手法を分析し、攻撃者の攻撃プロセスを理解するとともに、予防・検知に役立つIOC(Indicator of Compromise)の作成技法、脅威ハンティング(Threat Hunting)や侵入テストへの応用、対策手法の検討などについて取り組みます。
脆弱性診断やペネトレーションテストで使われる技術のひとつにポートスキャンがあります。 セキュリティエンジニアがネットワークやインフラに対するネットワーク診断やペネトレーションテストを行う際には最初にポートスキャンを行います。 開いているポートがあれば、何かおもしろい情報が返ってこないか確認し、古いミドルウェアが動いていることがわかれば、脆弱性情報を調べて攻撃を試行します。
本講義では、ポートスキャナを自作し、動作原理について理解を深めた後、Dockerコンテナで構成されたLinux環境に対して演習を行い、脆弱性の発見/攻撃手法、端末に侵入後の攻撃者の思考について学びます。侵入後の攻撃者の活動のことを広義にPost-Exploitationと呼びます。
パケットを自由に操作できるようになっておくことや、PoC(Proof of Concept)のコードを素早く実装できることは、ペンテストに必要なスキルです。
例えば、Nmapに実装されていない特殊なプロトコルで通信するソフトウェアの脆弱性を調査したい場合は、プロトコルの仕様に従ったパケットで通信するためのツールを自作する必要があります。このような理由から本講義では、ポートスキャナの自作を行います。
攻撃者の思考を知ることは、マルウェア解析や通信監視業務に従事している人たちも含め、すべてのセキュリティエンジニアが知っておくべき内容であり、 セキュリティエンジニアを目指す初学者にとっても必要不可欠な知識です。 また、セキュリティエンジニアのみならず開発者にとっても大切です。 開発者は日々発見される、OSやライブラリなどの大量の脆弱性の対応を日常的に迫られていますが、 攻撃者の思考を分かっていなければ、何が脅威なのか分からず脆弱性のリスクレベルを評価できません。 脆弱性診断やペネトレーションテストに従事している講師が攻撃手法を解説し、攻撃者側の思考プロセスや、攻撃されないようにするにはどうすればいいのかといった防御側の手法までを解説します。
※本講義では、リバースエンジニアリングは行いません。
現代社会において、サイバー空間は新たな戦場となっている。従来の戦争においては、陸、海、空、宇宙が戦場とされてきたが、ネットが星を被い、高度に情報化された現代ではインターネットやネットワーク上での攻撃や諜報活動が重要になっている。2022年に発生したロシアのウクライナ侵攻では、現実世界の侵攻に合わせてサイバー攻撃が実施された。この講義では、マルウェア解析の基礎から最新のテクニックまでを習得し、サイバー戦争の最前線で対抗するスキルを身につけます。
講義ではまず、サイバー戦争の概要と最新事例、マルウェアの機能と解析方法、脅威アクターと攻撃の目的など基礎概論を学びます。その後、Ghidraの使い方を学びながら、マルウェア解析の基礎技術を習得します。
最終的には、現実世界のサイバー戦争で脅威となったマルウェアを解析して、高度なマルウェアのテクニックや解析手法を理解します。
サイバー攻撃や内部不正などのインシデントへの対応において、デジタルフォレンジックが必要となることがあります。特に被害が深刻なケースにおいて原因や被害状況を明らかにすることを目的として実施しますが、その際に求められる手法や技術は様々です。
本講義では、デジタルフォレンジックの要素技術であるイベント再構築の各種手法に焦点を当て、コンピュータに記録されているデータからいかに意味のある情報を抽出し、インシデントの解明に役立てられるかを学びます。
2024年4月8日
URLを変更しました