受講が終わってから1か月くらいたってますが、バタバタしていて記事にするのを忘れていたので、ここで記事にしちゃいます!
コースの概要
情報セキュリティについて、ハンズオン形式で学ぶ授業でした。エッセイや試験はなく、課題をひたすら進めていく形式です。
コースの詳しい情報やシラバス、Prerequisits等は下記リンク先にあるので、興味があれば一読してみてください!
また、コースに対してOMSCS生がレビューしているサイトもあるので、こちらも覗いてみると楽しいです。
主な課題
わたしは 2023秋学期に受講したんですが、そのときの主な課題(というかテーマ)を書いてみます。
- Man in the Middle
- Database Security
- Malware Analysis
- Api Security
- RSA Cryptography
- Binary Exploitation
- Log4Shell
学期が始まってから最初の3日ほどは暇でしたが、そのあとに課題が順次解放されていく形式でした。それぞれの課題に与えられる時間は、1~4が10日ほど、5~7は2週間ほどだった気がします。
ちなみに、「1が終わったから2の課題を先取りしておこう」というようなことはできません。ですが、それぞれの課題に必要な知識の予習はできるので、不安な人はその部分を一読しておくといいと思います。
全体的な感想
授業全体をふりかえって、このコースのいけずだったところと良かったところを挙げてみます。
いけずだった点
体系的に学べるわけではない
情報セキュリティについて、初歩的な知識を体系的に学べるに違いない!!と思って受講すると、たぶん期待外れと感じてしまう気がします。特に、Web系のセキュリティに偏っている点には注意です。
いちおう過去の授業で使われていたであろう講義動画はあるんですが、インストラクターが「見る必要は特にない」と明言してしまっていますので、観る人はかなり少なそうです(少なくともわたしは観ませんでした)。
必要な知識を得るための読み物や動画は課題ごとに用意されていますが、それで情報セキュリティを俯瞰できるようになるかというと、それも否です。
全体感的な知識は、また別途入れる必要があるのかなと思いました。
課題が「謎解き」に近い
それぞれの課題は、用意された環境を、読み物や動画から得た知識をもとにハックすることでハッシュ値や単語を手に入れ、それを提出することで採点されます。
ですがそれが、結構謎解き要素があるんですよね。
もちろん最低限の知識がないと解けないようにはなっていますが、突然ひらめいて、あまりテーマを理解していなくても解けちゃった、のようなことも平気でありました。
クラッカーのような人たちも、そんな感じで一進一退してるのかもしれない、と考えると楽しいですが、それで理解度が上がるかというと、疑問に感じる部分も正直あります。
質問と回答が役に立ちにくい
このコースでは、TAや受講生が使うディスカッションフォーラムのような場所が解放されており、そこで課題に関する質問が自由にできるようになっているんですが、たとえば下のような会話が随所で繰り広げられます。
Q. 僕は今、問題番号〇の××あたりで詰まっているんだ。手がかりが少なくてもう12時間ほど往生している。何かヒントはないかい?
A. 一度この課題から離れた方がいい。リフレッシュした後に、頭をクリアにしてこの問題に向き合うんだ。
変に答えになるようなことを書き込んではいけないため(当たり前)、当たり障りのないことしか書けない結果、上記のような回答がTAからもOMSCS生からも飛び出します。
もちろん、中には
〇〇というサイトが参考になったから、そのURLを貼っておくね!
のような嬉しい回答もあるんですけどね。。。
良かった点
ハンズオン形式で体験できる
この授業の一番良かった部分は、「体験」にあります。
わたしは教科書を読んでいるだけだと眠くなるので、課題を解きながら読み物の理解を深めていく形式のこの授業はだいぶ合ってました。
また、過去にどんなふうに情報セキュリティが侵され、どんなふうに克服されたのか、自分が攻撃する側になることで、その一端を垣間見ることができたのは貴重な経験でした。もちろん、授業で教わる手法のほとんどは、現在では使えないですが(というか使えたら困る)、今自分が使っているものが、どういう経緯を辿ってその形になったのかを知れるのは良かったです。
クラスメート同士のやりとりが結構活発
ディスカッションフォーラムが開放されていると、結構殺伐とするイメージがあるんですが、このコースでは質問する場所として使われていたせいか、活発なやりとりがあっていいなあ、と思うことが多かったです。
みんな躊躇せずに書き込むし、書き込んだ質問に対してTAだけでなく、もう課題が終わった生徒も積極的に回答を書いてくれます。
もちろん先述の通り、ぼやっとしたあいまいな回答も多いけど、ヒントをチラ見せしてくれたりもするので、なんやかんや課題のたびにありがたくフォーラムを見ていました。
また、「TAは24時間以内(12時間以内だったかも)に回答するから、回答がなかったら連絡して!」と明記されていたのも良かったです。
救済が多め
このコースは、
- 知識があまりない人でも解ききれるようになっている
- とある課題は110点満点だった(はみ出た10点も圧縮なしで成績に加算される)
- (たぶんAをとれない人向けに)おまけ課題が出されることもある
と、全体的にやさしい設計です。
課題ごとの感想
1. Man in the Middle
1つ目の課題
— min (@min58691490) September 4, 2023
テーマは中間者攻撃で、計13時間ほどで終えた
初回だからか、謎解きみたいな内容が多くてだいぶ楽しんだ
学んだことは
・パケットキャプチャ
・IRCやTCP、IP、DNS、DCC等のプロトコル
・パストラバーサル攻撃
・pysharkやWireshark等の使い方
前半は、Wiresharkというソフトを使って、パケットキャプチャをして問題に答えていく、という形式の課題でした。インターネットのプロトコルについて一通り復習しておくと吉です。
後半はとあるWebサイトに対しパストラバーサル攻撃をしました。こちらはもう完全に謎解きです。
結果的には満点でした。
2. Database Security
2つめの課題終わり〜
— min (@min58691490) September 12, 2023
テーマはデータベースセキュリティで、計7時間ほどで終えた。普段Web開発をしてる人ならパパっと片付く分量だった気がする
学んだことは
・類推攻撃
・SQLインジェクション攻撃
前半は、いくつかテーブルを渡され、それらを突き合わせることで本来見えないはずの情報を読み取ろう、という課題です(類推攻撃)。そして後半は、SQLインジェクション攻撃をすることでさらに情報を取りに行きます。
ちなみに、この課題のタイミングで仮想マシンのでっかいファイルをダウンロードする必要があります。そのサイズは、驚異の9.5GBです。これを起動するにはさらに容量を食います。ただし、1回ダウンロードすればその学期中ずっと使えるので、そこは安心してください。この課題の前までには余裕のある端末を用意しましょう!!
この課題でも満点を取りました。
3. Malware Analysis
3つめの課題done
— min (@min58691490) September 25, 2023
今回はマルウェア分析がテーマで、分析レポートを読んで挙動を確認することと、機械学習を使ってマルウェアを分類する課題だった。機械学習のパラメータをいじって最適化していくのは面白かったし、レポートなんて普段読まないし、総じて楽しかったかな。難易度も過去1だったけど。
心理的に大変だった課題ナンバーワンです。
前半は、とあるマルウェア解析ソフトのレポートを数枚渡され、どのレポートがどんな解析結果を出したかを読み解いていきます。ただ、問題が今一つあいまいで、レポートの読み方もわからないので結構苦労しました。
後半は、機械学習を使ってマルウェアを分類していきます。ちょっとだけPythonの機械学習に触ることになりますが、ちょこちょこ最適化していくのが気長な作業でした。こちらは本当に勘だけを頼りにしていたので、あまり身についた感覚がないですね。
この課題は97点でした。
4. API Security
4つめのプロジェクト終わり〜。今回はapiのセキュリティに関するもので、テスターを使ってハックする感じの課題だった。web開発経験者だったら5時間かからないかも。#cs6035
— min (@min58691490) October 4, 2023
個人的お手軽だった課題の筆頭です。
APIテスターを使ってAPIを投げるだけです。パラメータを工夫すればすぐに解けます。
Web開発の経験がない人は、HTTPメソッドについて調べておくと良いですね。
無事に満点を取りました。
5. RSA Cryptography
数学が苦手な自分にとって難関過ぎたことと、その他プライベートの事情で完走できなかったプロジェクトです。Xへの投稿も忘れてます笑。
modあたりの数学を良く復習するのが、この課題の近道です。
たしか30点ほどだったかと。
6. Binary Exploitation
このプロジェクトについては、下記記事に感想を載せてますので、よければぜひ!!
準備としては、アセンブリコードやC言語をほんの少しでいいから調べておくのがおすすめです。
110点満点を取ったのが確かこの課題だったはずです。
7. Log4Shell
同じく記事がありますよ!!!
これは人によってはかなり記憶に新しい脆弱性だと思います。日本語の記事もヒットするので、先に調べておくと理解が進みます。
結果的には満点を取りました。
最終成績
92.6点くらいで、無事にAを取ることができました!!
OMSCSでは、Foundationコース対象の授業2つでB以上の成績を取らないといけないので、無事に良い成績を取れてほっとしています。
おわりに
もう明後日から始まりますが、次回は紆余曲折の結果、KBAIを受講することにしました。その辺りはまた記事にしていきます。
受講済みコース↓
コード | コース名 | 学期 |
---|---|---|
CS6035 | Introduction to Information Security | 2023秋 |
CS7637 | Knowledge-Based Artificial Intelligence - Cognitive Systems | 2024春予定! |