Security and Trust are Priceless

Some articles about security and trust: セキュリティやトラストなどに関して、情報を共有することを目的としています

セキュリティ・ミニキャンプオンライン 2021に参加しました

セキュリティ・ミニキャンプオンライン 2021に参加しての感想 選考課題編

ブログ開設したので、一発目の記事として先月参加したセキュリティミニキャンプオンライン2021の参加した感想や選考課題について感想を語ろうかなと思います。

ただし、講義などに関しては公開範囲などの問題がありますので感想程度にとどめ、具体的な内容に触れるのは避けようかなと思います。

まずは選考課題についてです。

形式としては5問中3問以上を解答し、4問以上解答した場合は得点上位3問の合計点を得点としたそうです。

また、選考課題は講義それぞれに対応したものであったので、講義の説明を見ればどのようなことをする為の知識や能力を聞いてきているのかや調べる際の参考になったと思います。ここらへんは全国大会とも同様なのかなと思います。ちなみにですが、私は年齢制限的に今年の夏の全国大会が最初で最後のチャンスでしたが見事落ちました。年齢制限緩和してほしいなぁ... セキュリティネクストキャンプはまだ年齢的にいけるので何が何でも全国大会行きたいならネクスト参加→全国大会のチューターという方法もあるそうです。ネクストも全国大会参加の踏み台などでは決してなく、普通に面白そうな内容です。個人的にはモブプロとかTDDあたりがめちゃくちゃおもろそうやなと思っています。 あと、SecHack365とかも興味あります。

問題1

FAT32の問題です。

これ見たときは調べても中々それらしきものが見つからなかったので半分諦めていました。一応参考になったサイトはこれです。 elm-chan.orgこのサイトを丁寧に読み込んでいけば解けたような気がするのですが、自分にとっては明らかに他の問題のほうが難易度が低そうだったので後回しにしました。大学のOSの授業は受けていたのですが、流石にここまでの内容は取り扱わなかったのでかなり困惑しました。この問題に関連した講義のほうはめちゃおもろかったです。

問題2

pcapファイルをフロー形式に変換して、解析するという問題だと思うのですが、当時はネイティブ環境のUbuntuが無く、推奨されているzeekも使ったことが無かったので、Wireshrakのフロー機能を利用しました。 あんまり自信もって解けてなかった気がするのと、講義(『マルウェアトラフィックを分析・検知してみよう』)との関連が他の問題ほど深くはなかった気がします。 一応わかることだけ書いて提出しました。

問題3

こちらもpcapファイルを解析する問題です。こっちのほうの問題はある一つのことに気付けば簡単に解ける問題でした。おそらくユーザーエージェント文字列です。例えば、Wireshrakでユーザーエージェント文字列を列に追加して、httpでフィルタリングした後にずらずらっと見ていくと途中で「curl/7.74.0」 から 「Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0」に変わっています。つまり、前者はcurlコマンドを用いたhttp通信、つまりプログラムが自動的に発生させた通信と考えられ、後者が人がWebサイトにアクセスした際に発生させた通信と考えられます。よって、後者のときのポート番号が求めるポート番号となります。

自信満々に解説してますが、間違っていたら怖すぎる。許して下さい。

追記:ユーザーエージェント文字列は改ざんすることができるので、その点についても触れたほうがいいです。 一応弁明?しておくと、私が提出した解答のほうではずっとその話してましたし忘れていたわけではありません。単に答えをもろ書くのを避けたかったので書きませんでした。

参考書籍:[パケットキャプチャ入門 第4版― LANアナライザWireshark活用術]

www.amazon.co.jp

この本を買って、Wireshrakの基本的な使い方を確認しました。

Wireshrakのことが結構丁寧に解説されているのでいい本やなと思いました。

統計とか分析のほうはどうやらこの本の応用編で取り扱っているらしいのですが、そちらのほうは買えませんでした(そこまでお金無かった)。

問題4

forkして子プロセスで実行してなんか色々やった記憶がありますが、かなり忘れています。よくよく自分のコード見てたらfopen関数使ってて、ダメかもしれんのに気付きました(システムコールのexec関数ファミリアを使うという制限は受け取ったパスの実行だけにかかっていると解釈したら問題ない?というかそういう意図だと思われる)。自分はexeclp使いました。

参考書籍:例解UNIX/Linuxプログラミング教室: システムコールを使いこなすための12講 www.amazon.co.jp

この本はある会社の対面インターンに長野から新宿に3日間行った際の帰りに池袋周辺の本屋で買った記憶があります。

Linuxプログラミングは大学のOSの授業でもやってはいるのですが、そこまでちゃんとした内容ではなかったのでこの本を一度ちゃんとやろうと思っています。一応、この本でexec関数ファミリーについて大体理解しました。

あと、最近流行り?の自作OSの本やりたいなぁとか思っています。

zero.osdev.jp

ただし、時間がない。

問題5

コンテナって名前は聞くし、Dockerは授業とか開発で使わされたことあるけどどういう技術なのかよくわからへんなぁ、という状態だったのでまずは

仮想化&コンテナがしっかりわかる教科書 www.amazon.co.jp

を読みました。これで仮想化、コンテナ、コンテナオーケストレーションツール、クラウドサービス(AWS, GCP, Azure等)の概要を理解しました。

次に、コンテナセキュリティに関する書籍「Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド」が弊学工学部図書館にあったので、それを読みました。

www.amazon.co.jp

あと、Docker 実践ガイド 第二版も参考になりました。

www.amazon.co.jp

解答としてはDevOpsとコンテナの話など、調べた内容をさらさらっと書きました。

やはり、勉強になる内容の事前課題だったので非常に取り組みがいがありました。

特に問題3が好きです。ユーザーエージェント文字列に気付いた時の快感があったので。