CS 6035: Introduction to Information Security

OMSCS 2 つ目の授業に関する記録

OMSCS の二つ目のコースとして、2024 Summer は Project ベースで情報セキュリティを学ぶことができる Introduction to Information Security を受講した。 Binary Exploitation、SQL Injection、Man in the Middle、Log4Shell などの脆弱性に関して学ぶことができた。

Overall

OMSCS の二つ目の講義は、情報セキュリティに関する様々なトピックを Project 形式で学ぶことができる Introduction to Information Security (IIS) を受講した。 夏学期は、春・秋学期に比べて期間が短いことから、一部の授業では課題の締め切りが短くよりハードな場合があるとのことだった。そのため、初回の夏学期でもあることから、負荷が低めの授業を選択した。 課題の内容としては、基本的には Capture the Flag (CTF) に近い形で、脆弱性を利用して Flag を取得し提出する形式だった。 過去の講義の動画も共有されたが、課題に合わせて更新がされておらずテストも存在しないため、見なくてもよいとのことであった。そのため、各トピックに対して課題中心に取り組み、進めながらわからないところを調べていった。

2024 Summer では、各週以下のようなトピックに関する課題を進め、講義で用意された VM を用いて攻撃手法を実践した。 これらの攻撃手法はセキュリティ強化のために学んだものであり、実際に攻撃することを目的としておらず、ここでの紹介もこれらの攻撃に対する注意を促すことが目的である。

Binary Exploitation

C 言語で書かれた脆弱性のあるプログラムを題材に、Binary Exploitaion を行うことで Flag の取得を行った。 Binary Exploitaion の一つの Buffer Overflow は、入力が不適切に実装されてることから、入力によってメモリ領域を不正に書き換えることで意図しない実行を行う攻撃方法である。 gdb を用いてデバッグすることで、C 言語のポインタやアセンブリなどに関しても学ぶことができた。 Binary Exploitaion を発生させるための Payload の生成には、Python ライブラリの Pwntools を駆使した。

バッファオーバーフロー

API Security

サンプルの API システムにおけるさまざまな脆弱性を利用して、Flag を取得するものであった。Swagger や Postman を利用し、API のパラメータなどを変更したことで、これらのツールに対して馴染むことができた。一部のタスクで JWT(Java Web Tokens)を書き換える必要があったため、JWT の理解を深める良い機会になった。

Database Security

Database Inference Attack と SQL Injection をカバーするプロジェクトであった。Database Inference Attack に関しては、サンプルで公開されている web の情報を組み合わせることで、匿名化されている情報と具体的な個人の情報を紐づけを行った。SQL Injection に関しては、不正な SQL クエリをアプリケーションから実行し、意図しない情報の取得や更新を行うことで Flag を取得した。

SQLインジェクション

RSA Cryptography

公開暗号方式に分類される RSA 暗号を主に対象として、暗号化を破る課題であった。 RSA 暗号が数学に基づいているため、脆弱性に関しても理解するためには数学の知識が必要となった。 RSA 自体、実社会で広く利用されていることから、どのような原理で暗号化され、どのような脆弱性が存在するか学ぶことができたのは有益だった。

RSA暗号とは?仕組みや応用事例を初心者にもわかりやすく解説!

Malware Analysis

このプロジェクトでは、マルウェア解析ツール JoeSandboxCloud のレポートを確認し、特定のプログラムの悪意のある振る舞いを分析した。 対象となったレポートは、CVE-2022-30190, Mirai, Nanocore, Emotet, AgentTesla に関するもので、レポートを確認すると Windows API やレジストリを操作する様子が確認できるため、それらに関する設問に回答した。

JoeSandboxCloud

それぞれがどのような動作をするものか調べておくと、レポートを読み進める際に参考になった。

CVE-2022-30190

Mirai

Nanocore

Emotet

AgentTesla

Log4Shell

2021 年に非常に注目された Log4Shell に関しても、課題を通して学ぶことができた。 Java のロギング用ライブラリである Log4j における JNDI (Java Naming and Directory Interface) lookup 機能を用いた脆弱性は Log4Shell と呼ばれ、Remote Code Execution (RCE) を可能にしたため注目を集めた。 仮想環境にて LDAP Server を構築し、この脆弱性によって悪意のある Java Class を Web アプリケーション上で実行させることで、Flag の取得を行った。

Apache Log4jに存在する RCE 脆弱性(CVE-2021-44228)についての検証レポート

なお、以下のサイトに沿って進めていくことで、LDAP Server も含めて環境を構築でき、Log4Shell に関して理解を深めることが可能な様子である。 解説動画もあり、課題を進めていく上で参考になった。

Solar, exploiting log4j

Log4J - CVE 2021-44228 (Log4Shell) - Exploitation & Mitigation

Man in the Middle

このプロジェクトでは、背景の設定がされており、ハッカー集団の通信を傍受したためやり取りの解析を行うというものであった。ハッカー同士の通信をキャプチャした pcap ファイルが提供された。 提供されたパケットキャプチャを Wireshark, pyshark を用いて分析し、ハッカー同士が TCP/IP, FTP, HTTP, IRC などの異なるプロトコルで接続を行っている様子が見られた。その状況でパケットの詳細を確認していき、通信内容の読み取りを行った。解析を行うためには、それぞれのプロトコルの理解が必要となったため、各プロトコルどのような流れで接続を確立するかなどが学びであった。

中間者攻撃(MITM)とは?

Machine Learning

このプロジェクトでは、機械学習を用いてマルウェアの分類を行った。One-Hot Encording や Feature Engineering など機械学習を行う際に必要になる前処理から進めていく内容であった。主に sklearn を用いて、K-means, Logistic Regression, Random Forest, Gradient Boosting などによって分類を行った。加えて、分類を行うタスクであったことから、評価指標には ROC を用いたがこちらの算出など基礎から学ぶことができた。一通りデータの前処理から機械学習による予測、評価までを体験することができる良い機会だったかと思う。 最終的には、以下のマルウェアのデータセットを用いて分類を行い、一定以上の ROC が得られることが求められた。

ClaMP (Classification of Malware with PE headers)

Web Security

Cross-Site Scripting (XSS) を題材にしたプロジェクトであった。以前までは Extra Credit (成績の救済措置) であったが、今回からは必修のプロジェクトとなったようであった。 しかし、最後のプロジェクトであり、ほぼ A が確定していたことから 1/4 しか解けず、今までのプロジェクトの中で最も得点が低い結果になった。HTML や JavaScript などフロントエンドの経験がないこともあり、かなり苦戦したことも原因である。

クロスサイトスクリプティング(XSS)とは? 攻撃の仕組みや対策をわかりやすく解説

Reflection

SQL Injection や Man in the Middle は、一度は耳にしたことのある脆弱性ではあるが、実際にどのような手順で攻撃を行うかなどは知らない部分も多かった。 しかし、今回のこの課題を通して、仮想環境で実際に攻撃を試してみることで、より詳細を理解することができたと思う。 攻撃者の気持ちになってみることで、どのような観点でセキュリティを強化すべきであるかをよりイメージできるようになったことは大きな収穫である。

本講義を通して、アセンブラ、Debugger、SQL、Java、ネットワーク、Web などとトピックが広かったことから、それぞれの入門としては良い位置づけであった。 今後、ネットワーク、OS の授業を取っていきたいと考えているが、第一歩として有益だったと思う。個人的には、アセンブラへの理解が深まったため、Binary Exploitation が最も面白かったプロジェクトである。

Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。