Moz Blog

勉強したことや今行っていることをゆるーく書いていきます。

セキュリティ・キャンプ 2024 参加記

8月12日から8月16日までの5日間で開催されたセキュリティ・キャンプ2024 全国大会のBクラス(プロダクトセキュリティ)にチューターとして参加したので、体験記を書き残す。 昨年、Bクラス(当時は、Webセキュリティ)を修了し、今年チューターとして、もう一度セキュリティ・キャンプに参加することになった。

昨年の参加記は、以下である。今読み返してみると、次はネクスト受講生かチューターで参加したいということを書いており、今年チューターとして参加できたのはとてもよかった。

moz-security.hatenablog.com

日程表

Bクラスの日程は、このような感じだった。 6つの専門講義があり、それに加えて共通講義やグループワーク, 特別講演などがあり、毎日8:30~21:00に稼働するというハードスケジュールとなっている。

セキュリティ・キャンプ Bクラス スケジュール

共通講義、グループワーク

共通講義では、ゲームセキュリティや法律、人の心理・行動特性についての講義があった。 また、毎日グループワークの時間が30分あり、1グループ4人構成でセキュリティ教育について話しあっていた。 コンピュータを全く知らない主婦や子供からコンピュータサイエンスをある程度学んだ学生などさまざまなターゲットに対して、いろいろなアプローチでセキュリティ技術を伝えようとするアイデアがあり、ディスカッションや最終発表を見ていてとてもおもしろかった。

専門講義

Bクラスでは、プロダクト開発におけるセキュリティをテーマにして、講義が構成されていた。全て4時間の講義で、座学と演習の両方を行う形式になっている。

1日目のホームルームでプロデューサーから、講義設計にあたり未知との遭遇の最大化を目標としている旨を伝えられた。知らないこともたくさん出てくるだろうが、「アウトプットを行う→フィードバックを得る→新たな知らないことが生まれる」のループを回すことをセキュリティキャンプを通じて、また、セキュリティキャンプが終わった後も行うことが大事だということを話されていた。 また、技術の話だけでなくお金の話も講義に盛り込むようにしており、コストとセキュリティのバランスを見定めるといった、より社会で行われていることを体感して、社会に出た後に活躍してほしいというお話があった。そういう意味で、プロデューサーがBクラスは社会人クラスと言っていたのもおもしろかった。

これら2つのことは、講義を全て終えた今、改めてとてもプロデューサーの講義設計に対する意図や思いを感じている。

2日目

B1: プロダクトセキュリティの展望

セキュリティ・キャンプ2024 全国大会 B1 プロダクトセキュリティの展望(#seccamp2024) | ドクセル

"プロダクトセキュリティの展望" では、プロダクトの定義とそれが指す範囲の広さ、非機能要件であるセキュリティと組織としての向き合い方について学んだ。

なかでも、社会と技術と資産を面で見れるようになるとセキュリティを俯瞰して見ること・考えることができ、面で見れるようになるためには、社会の変化に敏感になることが重要であるということはとても記憶に残っている。 セキュリティを仕事にする上で新技術の把握や継続的な学習は大事だと言われているが、この講義を通して再認識させられた。 また、プロダクトの価値を早く・大きく・継続して届けるための技術についても学んだ。これらはお金が密接に絡んでくる点で経営側の視点も必要であり、今まで考えたことがなかったが、組織で自分が影響力を発揮していくためには押さえておく必要はあるし、今後勉強していきたいと思った。 最後に、組織規模に応じたセキュリティ対策について学んだ。セキュリティ対策が必要だといっても実際に行うには導入・運用にコストがかかるため、コストとセキュリティのバランスが必要となってくるし、その判断が難しいのはよく言われているためすでにわかっていた。しかし、ではどれくらいの組織規模に対してどのような対策を行うのかということは今まであまり考えたことなく(学生で考える人はあまりいないと思っているが)、グループディスカッションや発表、講師以外の方のお話なども含めてとても学びになった。いろんな会社のいろんな役職の人たちがいるのもセキュリティ・キャンプのよさであると思う。

B-2: 情報セキュリティ戦略戦術ワークショップ

"情報セキュリティ戦略戦術ワークショップ" では、組織のセキュリティ対策の進め方やインシデントハンドリングについて学んだ。

この講義でも、やはり組織規模に応じたセキュリティ対策についてのお話はあり、やらないといけないことはたくさんあるがどれから取り組むかを考えるといったときに、ベストプラクティスやガイドラインフレームワークは非常に参考になることがわかった。また、インシデント対応において、まず気付ける仕組みと改善の実施が重要であることがわかった。たしかにログが残っていたり、インシデント発生時にアラートが出なかったりすると、そもそもインシデントに気付けない。そのため、セキュリティ担当でなかったとしても、インシデントに気付くために一開発者としてどのような情報(ログ, メトリクス, アラート)が必要なのかは考えるようにしたいと思った。 演習では、受講生がグループでインシデントハンドリングを体験しており、チューターとしてはチャットツールでの関係者とのやり取りを見ていた。インシデントというと私は外部の攻撃者からのサイバー攻撃を想像してしまうが、それだけではない。メールの誤送信などといったオペレーションミスや部署間での情報共有の不足、内部不正なども、ちゃんとインシデントであり、それも意外と発生してしまうことがあることを学んだ。 演習で関係者とのやりとりがなかなかうまくいかず、大変そうだったのはとても記憶に残っている(覚えるべきとこはそこじゃないw)。

3日目

B-3: セキュリティ監視入門

セキュリティ監視入門 | Notion

"セキュリティ監視入門" では、監視の重要性と監視アーキテクチャの設計・構築について学んだ。

監視をする上で最も重要で、最初に考えなければいけないのはなぜ監視するのか・何のために監視するのかであり、そこが曖昧であると例え監視を行っていて異常を見つけたり、アラートが出たりしても、その後の対応に繋がらないということはとても頭に残っている。 この講義でもB-1に引き続いて、組織規模に応じた監視アーキテクチャの構築やSOCやCSIRTといった組織の構築を学んだ。どれだけのコストをセキュリティ対策にかけるかは経営判断だが、現場で何が行われているのかやどのようなデータがどこに存在しているかは把握していなければ、セキュリティ監視を行うことやそれにかかるコストを見積もることはできない。ログの対象となるデータは無限と言っていいほど存在しており、どのログを取るのかとコストのバランスを考えることがセキュリティ担当者としての腕の見せ所であることがわかった。 また、セキュリティ監視において大規模な運用が始まると不可逆性はかなり高いことも学んだ。これは、データ移行が大変になるからという理由だったが、私自身今までトライアンドエラーを繰り返すことをよしとしていたため、セキュリティ監視というケースではそれがあまりふさわしくないこともあることがわかった。

B-4: モダンなプロダクト開発を攻撃者の視点で捉える

"モダンなプロダクト開発を攻撃者の視点で捉える" では、攻撃者がどうやって組織に対して攻撃を行うのかについて学んだのちに、それにやられないために防御側はどのような対策が必要なのかということを考えた。

講義を通して、攻撃側と防御側の両方の視点でセキュリティを考えることができたのは非常に学びになった。なかでも、攻撃者はフロー(グラフ)で考え、防御側はリストで考えるというのはとても記憶に残っている。攻撃側は一点だけでも突破できればいいのに対して、防御側は全てを守らなければならない。加えて、多層防御を行い、全てを守っていると思っていても、攻撃者は全く思わぬところからクリティカルな攻撃を行うかもしれない(VPN脆弱性を突いて初期侵入とかではなく、物理的に侵入するとか)。そのため、セキュリティ担当者として組織を守るには、ベストプラクティスやガイドラインを参考にしつつ、明確なWhyを持ったセキュリティ対策を取るように意識することが重要になってくるとわかった。ゼロトラストやDevSecOpsといった新しく出てきたワードに縛られないようにすることも重要であり、それもWhyを意識することで具体的なセキュリティ対策の実現という本質的な部分に焦点を当てることができることを学んだ。 大学や勉強会では防御について学んだり考えたりすることが多いが、攻撃側の視点を養うためにも、もっとHack The Boxを頑張ろうと思う。

4日目

B-5: 設計・開発・テストにおけるセキュリティの実践と考え方を知ろう

"設計・開発・テストにおけるセキュリティの実践と考え方を知ろう" では、プロダクト開発において考慮すべきセキュリティと実践方法について学んだ。

プロダクトをセキュアにするというと、実装する際に脆弱性を作らないよう気をつけたりリリース前に脆弱性診断を行ったりすることを私はイメージする。しかし、要件定義・設計・実装の段階にテスト工程を前倒しにするというShift-leftの理解と実践により、開発工程の早い段階で脆弱性の検出を行うことが重要であることがわかった。 ただ、早い段階で脆弱性を発見しようとするとやらないといけないことが大量に増えるため、できるだけ自動化して、人でないとできない箇所に開発者が注力できる仕組みを作ることが大事だと学んだ。 セキュリティに携わるものとして、意識改革やセキュリティ教育ももちろん大事だが、技術者である以上、仕組みで解決できないかという視点は大事だと思う。 脆弱性を自動で発見する方法としてはSASTやDASTというものがあり、これらのツールを使ってスキャンを行うことを学んだ。 これをCI/CDのパイプラインに組み込むことで、例えば、マージされたタイミングでSASTを行い、ステージング環境にデプロイしたタイミングでDASTを行うといったことができる。 これにより、仮に開発者に全くセキュリティの知識がなくても、ある程度のセキュリティは担保することができることがわかった。

B-6: クラウドネイティブなシステムを保護するための実践的Kubernetesセキュリティ

GitHub - kyohmizu/seccamp2024-B6

"クラウドネイティブなシステムを保護するための実践的Kubernetesセキュリティ" では、Kubernetesとは何かということととコンテナやKubernetesに対する脅威・セキュリティ対策について学んだ。

なかでも、3章の攻撃シナリオを学び、実際に演習したことは記憶に残っている。Kubernetesやコンテナに対する攻撃手法として、コンテナブレイクアウトや認証情報の窃取があることはすでに知っていたが、それ単体で攻撃として成り立つわけではなく、攻撃の中の一工程に過ぎない。そのため、演習を通して、OSコマンドインジェクションの脆弱性を突いた後、徐々に範囲を拡大していき、最終的にKubernetesクラスタのAdmin権限取得まで行うとという経験ができたのはよかった。Kubernetesに対する脅威を身にしみて実感できたし、攻撃者が範囲を拡大していく(ラテラルムーブメント)どこか一箇所でも防ぐことができればここまでやられなかったかもしれないといった防御視点でも考えることができた。

講義全体を通して

昨年に引き続き、B-1からB-6まで非常に幅広い分野の講義があった。どの講義も講師の方が4時間で終わるか怪しいと講義前から言うほどのボリュームになっており、チューターとして参加しながらも、全てを理解できているわけではない。また、講義の位置付けとしては一応入門となっているし、講義資料には大量のリンクが貼ってある。これは、もっと勉強することはあるよというメッセージ?だろう。勉強するための足がかりも与えられた今、これらを活用して、今後さらに勉強していきたいと思う。 また、どの講義でもコストとセキュリティについて取り上げられており、組織の中でセキュリティ対策を進めていこうと思うとコストとセキュリティを見定める能力(費用対効果を考える能力)は求められることを強く実感した。

チューターとして

立ち位置としては講師と受講生の間となるため、セキュリティ・キャンプ全体を通して、昨年よりもいろんな人といろんな話をすることができた気がする。今思い返すと、受講生として参加した昨年は講義に食らいつくのに必死だったし、自分のスキルに自信もなく、講師の方にも積極的に話を聞きにいこうとしていなかった。今年はチューターとして講義全体を俯瞰して見ることができ、受講生として参加したときよりも少しだけ気持ちに余裕が持てたのはよかったと思う。 一方で、受講生の知識・スキルの高さには驚かされ、チューターと受講生というよりは、同じ関心を持つ同世代の仲間という気持ちで講義だけに限らず、休憩時間やご飯の時間も含めてたくさんの話ができたし、そのなかで勉強になることも多かった。チューターとして参加してみて、受講生が演習で困っているときに一緒に解決できたときには私も嬉しかったし、教えたり技術を広めることの面白さを少しだけ感じることができた気がする。セキュリティ・キャンプを修了した方には、チューターとしてセキュリティ・キャンプにもう一度参加することも検討に入れるのをお勧めしたい。

感想

どの講義も濃密で、チューターとして参加した今年も私にとって初めて知ることも多かった。勉強するきっかけをたくさん与えられるので、キャンプ中はもちろんのことキャンプ後も継続して勉強するネタが見つかるし、私自身これからもっと勉強したいと思う。 また、受講生やチューターとして参加している同世代のすごい人たちやセキュリティの第一線で活躍している講師の方や関係者の方を見て話すことができ、今年もとても刺激を受けることができた。 講義資料自体は講師の方が公開されているものも多くある(Bクラスの講義に限らず)ため、講師の方と話したり、みんなで議論したりできることこそがセキュリティ・キャンプに参加することの一番のよさであると思う。 セキュリティに興味がある人はもちろん、もっと広くコンピュータに興味がある人全員にセキュリティ・キャンプを勧めたい。

昨年書いていたので、今年も書いておこうと思う。 来年はネクストの受講生としてまた戻ってきたい。

Bクラス ほかの方のブログ

hack.nikkei.com

zenn.dev

セキュリティ・キャンプ 2023 参加記

8月7日から8月11日まで開催されたセキュリティ・キャンプの Bクラス(Webセキュリティ)に参加してきたので、やってきたことや感想について、体験記として書き残そうと思う。

セキュリティ・キャンプについては、以下のホームページを参照してほしい。今年が20回目の開催で、4年ぶりに対面で行われた。

www.ipa.go.jp

応募課題

まず、セキュリティ・キャンプに参加するには、応募課題を解かなければならない。

これに関しては、また別のブログとして、私の答案については出そうと思うが、今までのプログラミング言語やコンテナ技術の利用経験を問われたり、Webにおける脆弱性の検証と調査、Webの標準や実装の調査を行なって、それをレポートとしてまとめ、提出した.

応募課題は、下記のURLにある。

セキュリティ・キャンプ全国大会2023 応募要項(エントリー) | デジタル人材の育成 | IPA 独立行政法人 情報処理推進機構

共通講義

共通講義では、行動経済学やXR、国際政治とセキュリティといったものやサイバー犯罪についての講義があった。これらについてはあまり書かないが、日頃勉強している技術的なもの以外の部分について学ぶことができるいい機会であり、新鮮であった。サイバーセキュリティという分野は、法律・犯罪と密接に関連してくるにも関わらず、グレー部分の範囲がとても広くて、どこまでが許されて、どこからがダメなのかという判断が難しい。そのため、ワークショップの形で弁護士や検事の方の考えを知ることができたのはよかった。講義の中でも仰っていたが、私はあくまで技術者であり、法律家ではない。だからこそ、”わかった気にならない”という点は気をつけようと思った。

専門講義

専門講義では、各クラスによって講義が変わってくる。Bクラスでは、Webセキュリティをテーマにして、講義が構成されている。基本的には4時間の講義で、どれも座学と演習が 1:1 くらいの割合になっており、手を動かしたり、ツールの動きを確認しながらだったため、概念だけでなく、実装も学べたし、何よりも楽しかった。講師の方が一般に公開している資料については一緒に貼っている。

1日目

B-1 Webプロダクトセキュリティへの誘い

最初の講義は、初日の18:30~20:30に行われた。この講義では、プロデューサーがどのような意図を持って講義を構成したか、何を学んでほしいのかというところを整理した。

このクラスでは、"将来と今の両方を考えて、意思決定ができるリーダーになること" を目標としており、その時点でいろいろ考えさせられた.私の感覚では、すごいセキュリティエンジニアというのは、技術のことをたくさん知っていることだったからである.でも、実際に社会に出ると、技術とは違ったベクトルの強さというものが必要だとわかった.これに関しては、 この時点でも納得はしていたが、B-5やB-7の講義を受けた後により強く実感した.技術的な強さだけであれば、5日間ひたすらWebアプリケーションの脆弱性を勉強して、探せばいいが、そのような構成にはなっていない."How と Why を考えながら受講すること"というのは念を押されたが、これに関しては、非常に大切なことであり、日頃から意識する必要があると感じた。

また、B-2からB-7の講義に関して、自分がどこまでわかっていて、どのようなことを学べそうか、何を習得することを目標にするかというのを考えて、グループワークでお互いに共有した.1つ例を挙げると、B-2の講義に関して、サイバーキルチェーンやActive Directoryはわかるが CI/CDパイプライン を狙った攻撃とはなんなのか、加えて攻撃者はどういう視点とか考えで攻撃を計画するのかというのはわからないから学びたいというのがあった.

2日目

B-2 開発のプロセスを攻撃者の視点で捉える

この講義は、2日目の8:30~12:30に行われた.この講義では、なぜ攻撃をするのかというところから始まり、レッドチーム演習の効果やサイバーキルチェーンと攻撃フローについて座学で学んだ.また、仮想環境で攻撃演習を行うことで、実際に攻撃フローを見ることができた.演習で自分で攻撃してみることで、攻撃者の視点というものをより実感することができた.最終的には、防御側ができることを考えたが、攻撃者の視点を持つことで、より深く考えることができた.レッドチーム演習の情報はWebで調べてもあまり出てこないため、その界隈の第一人者の方から、生の声を聞けたのはよかったし、貴重な経験になった.最近、Hack The Boxに取り組めていなかったが,講義を受講して、モチベーションが上がり、また再開した.

この講義では、CI/CD環境のセキュリティについても学んだ.オンプレミスからクラウドへと環境の変化はあるが、"攻撃方法は変わったとしても、攻撃の流れは変わらない"というのが大事な点であった.例えば、攻撃モデルの一つにサイバーキルチェーンがあるが、この考え方はオンプレでもクラウドでも関係なく、有効である.今までCI/CDを狙った攻撃というのは全く想像もつかなかったが Github Actions などの CI/CD Configuration から Credential が漏洩したり、3rd party tool を汚染することで莫大な被害につながるといった CI/CD Pipeline への攻撃もなんとなく理解できた.

B-3 クラウドネイティブセキュリティの実践と戦略

この講義は、2日目の13:30~17:30に行われた.この講義では、そもそもクラウドネイティブとはなんなのかの説明を受けたのちに、Kubernetesが提供する耐障害性の機能やマイクロサービスのセキュリティについて学んだ.k8sを実際に動かして、アプリケーションのスケーリングの様子などを確認しながら進めることができたのはとてもよかった.また、コンテナから権限掌握→AWSアカウントの侵害という演習を通して、クラウドネイティブ環境を構築・運用するにあたって、どのようなことに気をつけなければならないかといったことを学んだ.k8sのセキュリティモニタリングに関して、eBPFの紹介も少しあった.事前課題や講義を通して、最低限 k8s が動かせるようになったり、提供している一部の仕組みについてはわかったりしたが、まだまだ知らない機能はたくさんあるし、現在進行形で新たな技術が生まれている分野である.たしかにクラウドネイティブ環境の構築・運用は難しいのかもしれないが、技術の面白さというのはとても感じたし、もっともっと学んでいきたいと思った.

3日目

B-4 Webサービスにおける安全な認証とID連携の実装

この講義は、2日目の14:00~18:00に行われた.この講義では、最初に認証・認可の技術であるFIDO, WebAuthn, Passkey, OAuth, OpenID Connect についての用語とそれぞれの用語の関係に関して説明を受けた.各用語は知っているが、説明できるほどの理解はできていなかったため、整理して学ぶことができ、理解できた.また、認証・認可はWebアプリにおいて最もクリティカルな箇所であり,

セキュリティも十分に配慮しなければならない.CSRFの発生メカニズムを押さえ、どうすれば防ぐことができOpenID Connectではどのような処理フローになっているのかを学ぶことで、安全な認証・認可を実現する仕組みについて理解できた.その後、パスキーのハンズオンとOpen ID Connectのハンズオンを行なった.ハンズオンでは、プログラムの穴あき部分を埋めることで、ちゃんと機能が実装できているか確認しながらステップアップ形式で進めた.ID連携やパスキーの実装となると、難しいイメージだったが、すでにあるライブラリを使うことで、簡単に実装することができた.一度学んだとしても、使わなければ忘れてしまうため、Webアプリケーションを開発するときに、今回学んだ技術を組み込むことで、さらなる理解と自分で使える技術にしたいと思う.

B-5 適応し続けるプロダクトセキュリティ

speakerdeck.com

 

この講義は,3日目の19:00~20:40に行われた.この講義では,組織やプロダクトの変化に対して,セキュリティをどう確保するのか考える技術者というよりは,CISOといったセキュリティにおいてリーダーシップを発揮し,変化に対応する組織を作るにはどうすればいいのかといったことを学んだ.プロデューサーの"将来と今の両方を考えて,意思決定ができるリーダーになること"という思いが最も顕著に出ている講義であった.昨今の世の中は,プロダクトも組織もどんどん変化する時代であり,その変化に応じて,セキュリティのあり方も変わってくる.セキュリティの難しさはどこか一つでも弱い部分があってはいけないというところである.サービスを提供する場合,何か一つ強みがあれば,それで大ヒットするかもしれないが,セキュリティは全てが一定水準にならなければならない.プロダクト運営に求められるセキュリティは幅広いが,バランスよく,少しずつ積み重ねていくことが大事だとわかった.個人的には,セキュリティ人材が置かれる現実と求められることというところが面白く,より優れたセキュリティ人材,セキュリティ分野でリーダーシップを発揮して組織を変えるには,人間としての成長が不可欠だとわかった."深化と探索のバランスとそれらの継続" が重要になってくると学んだ.将来は,セキュリティ関連の仕事をしたいとは思っていたが,CISOのようなリーダーシップを発揮して組織を変えていくということは考えたことがなかった.セキュリティ人材として成長するために,人間的な成長が必要になるというのは面白かった.

4日目

B-6 ソースコード解析によるWebアプリケーションの脆弱性調査

この講義は,4日目の8:30~12:30に行われた.この講義では,ソースコードから脆弱性を探す方法について学んだ.最初に,静的解析で見つけやすい脆弱性の説明を受け,演習として,まずは,脆弱性を手動で探した.CVEが3つ取り上げられており,それらの脆弱性をNVDやそこに載っているGithubのPatchのプログラムやPoCを見て,調査した.プログラムベースで実際にどのような入力値であれば,脆弱性が悪用できるのかを探すのがこの調査のゴールであった.しかし,複雑なWebアプリケーションになると,大量の関数呼び出しによって,コードを追うのが大変になる.そこで,脆弱性調査の自動化のためのツールとして,CodeQLの説明があり,その後の演習で実際に使って,調査を行った.CodeQLを使うことで,特定の関数呼び出しや変数宣言,構文パターンを抽出することができ,脆弱性となりうるコードが含まれていないか簡単に調査できることがわかった.プログラムを書くことはあっても,解析して脆弱性を探し出すといったことはやったことがなかったため,新たな知見が得られたのはよかったし,楽しかった.自分で書いたコードに対して,脆弱性を探し,修正するといったことやバグバウンティに取り組むといったことも今後していきたいと思った.

B-7 Policy as Code 入門

docs.google.com

この講義は,4日目の13:30~17:30に行われた.この講義では,ポリシーをコードとして書くことで,k8sの設定ファイルやクラウドサービスのリソース状態の監視結果に対して制約を満たすかどうかチェックすることができるといったことを学んだ.この講義に関しても,B-5と同じで,一見セキュリティと関係ないため,今まで勉強してきたことがなかったが,クラウドサービスのリソースにポリシーを定義して不要なポートが開いてないかやクレデンシャルが書き込まれていないかなどのチェックはセキュリティ向上のためにも有効である.一部の先進的な組織しかPolicy as Codeを実践できていないという部分で,まだまだ新しい技術ではあるが,この講義を通して,こういうものがあるということを知れたのはよかった.演習では,3以降のよりリアルなポリシーになった途端に難しく,書くのに苦戦した.いつ使うことになるかわからないが,このようなものがあるというのを覚えておいて,いざという時に使えるようにしたいと思う.

講義全体を通して

B-1からB-7まで非常に幅広い分野の講義があり,それに加え,どの講義も4時間で終わり切らない程濃密なものであったため,まだ整理ができていない部分も多々ある.本当に知識をひたすら叩き込まれた感じであるため,また時間を取って整理して,理解したいと思う.4日間講義があり,ホームルームの時には思考停止するほどの疲れがあったが,講義内容の濃さと演習の楽しさでものすごい充実感はあった.あと,講義のレベルも高く,わからない箇所があったりもしたが,講師の方やチューターの方に質問するとなんでも教えてくださったため,問題なく演習を進めたり,疑問点を残すことなく学ぶことができた.

対面での開催について

今年は,4年ぶりの現地開催ということだったが,本当に楽しかった.5日間だけで,たくさんの人に出会ったし,たくさん話した.基本的にクラスで講義を受けるため,クラスの人とはずっと一緒にいることになり,仲良くなるが,だからこそ,食事のときや名刺交換会というのは違うクラスの子とも知り合ういい機会だった.ジュニアで参加している中学生とかから同世代の受講生やチューター,実際に社会で活躍している講師の方たちまで異なる立場や年齢の人たちと話すことができたのはよかった.X(Twitter)の中でよく見るすごい人たちと面と向かって話したり,議論できたりするのは楽しかったし,とても刺激を受けた.授業はもちろん素晴らしいのだが,同世代で自分よりもすごい人たちと出会い,それによってモチベーションが爆増するというのが個人的にはセキュリティ・キャンプに参加する一番のよさだと思う.学内という狭い世界で自分はそれなりにできると思っていても,全国から人が集まってくるセキュリティ・キャンプでは上には上がたくさんいるというのをすごい体感したし,もっと頑張ろうと思った.

参加した感想

今年22歳になるため,今年が最後のチャンスだったが,本当に参加することができて良かった.キャンプ参加が決まった後も,講義に対してワクワクしながらも,一方で講義についていけるのか,私みたいな人が行って大丈夫なのか,他の人たちはやっぱりつよつよなのかという不安はあったが,そんな不安は初日で解消した.たしかに,みんなすごい人たちだったが,コミュニケーションを取る上では,ITに興味があるというその一点だけで仲良くなることができたし,講義でわからないことがあったとしても,他の受講生やチューター,講師の方に聞いたらちゃんと教えてくださった.

セキュリティに興味があるのなら,少しでも早いうちから応募課題に挑戦するべきだと思うし,そこで得られるものはたくさんある.たとえ,課題で落ちてしまったとしても,課題を解くことに意味があり,それだけでも知らないことをたくさん学ぶことができる.セキュリティ・キャンプ 2023 に参加したからこそ,心の底から参加することを勧めたい.

来年は,チューターかネクストキャンプ受講生としてまた戻って来たいと思う.

まとめ

・どの講義も濃密で、わからない部分もあったが、チューターや講師の方のサポートもあり、なんとかついていくことができた.

・やっぱり対面での開催はいい.

・全国のすごい人たちを間近に見ることができ、刺激がもらえる.

・セキュリティに興味がある人はもちろん、ITに興味がある人全員にセキュリティ・キャンプを進めたい.

PC作ってみた

SECCON Beginners CTF 2023 でボコボコにされて、少し萎えていますが、超絶久しぶりにブログでも書きます。

なぜ自作PC

まず、4月29, 30日(土・日)にGMOインターネットグループが開催するDevSecOpsThon2023というイベントに参加しました。これに関しては、イベント直後に、参加記を書こうと思っていたのですが、書かんといけないな〜と思いながら、2週間も経つと、完全に書く気がなくなりました。気になる方は、下に他の参加者さんが書いたリンクを貼っているのでそちらからご覧ください。

イベントの参加者には、自宅サーバ勢が多く、確か半分くらいは、自宅にサーバを立てていたと思います。イベント自体が、インフラハッカソンというちょっと変わったイベントで、ハードウェアやOS、ミドルウェアといった低レイヤの知識を必要としており、もう自宅サーバ勢が無双状態で、自分の知識の欠如を非常に実感しました。

そこで、その人たちに近づくための第一歩として、自作PCに取り組もうと思いました。

developers.gmo.jp

DevSecOpsThon2023 参加ブログ

DevSecOpsThonに参加してきた

「DevSecOpsThon at GMO kitaQ」に参加したらすごく良かった件!! - Qiita

DevSecOpsThon2023 at GMO kitaQ - Qiita

【📝】DevSecOpsThon at GMO kitaQ

 

自作PCに取り組む

これに取り組んだのは、5月27, 28日でした。この理由は、25日に給料日だったからですね。

まずは、パーツの選択と購入から始めました。別にゲーム用途ではないため、GPUはいらない代わりに、グラフィック機能があるCPUにしたり、メモリの拡張性を考えて、4スロットあるマザーボードにしたりしました。

初めての自作PCということで、そこまでスペックのいいものを作る気は最初からなく、まぁ10万円くらいかなと考えていたのですが、メモリやSSDが思ったよりも安く、7万円くらいで全てのパーツを購入することができました。

購入したパーツが届いたら、あとは組み立てるだけでした。ググったら、自作PCについてのサイトはたくさん出てきましたが、正直マザーボードとPCケースの取扱説明書だけでも十分なほど説明が細かく書いてあります。全てのパーツをマザーボードにくっつけるだけなので、そこまで難しくはなく、電源など配線が終わったら、本当に起動してくれるのかドキドキしながら、電源ボタンを押しました。プラス端子とマイナス端子を逆にしていないかなど心配しながらも、BIOS画面が立ち上がった時はとても安心したし、嬉しかったです。

ここまできたら、あとはブータブルUSBからOSを起動するだけで、無事に初めての自作PCを完成させることができました。

今は、仮想マシンを複数台起動していて、それを使って、遊びつつ、勉強していこうと思っています。とりあえずは、Kubernetesクラスタを組んでみたり、脆弱性検証から始めていこうって感じです。

自作PCのメモについては、下のリンク先にあります。

moz-security.me

作ってみて

自作PCというと、とてもハードルが高いように感じますが、実際に作ってみると意外と簡単だし、色々と勉強になることもたくさんあります。また、デスクトップという制約はあるものの、同じ値段であれば、ノートPCよりもいいスペックで構築することができるし、店頭にあるデスクトップPCと比べても、自分で改造できるため、拡張性があるといったメリットがあります。

一度だけでも作ってみるのはおすすめです。(自分に合わなければ、2度目をなくせばいいだけ)

2023年の目標

前回のブログで「近々、新年の抱負として、今年やりたいことを書きたいと思っています。」と書いておきながら、もう少しで1ヶ月が経ってしまいます。(近々とは?って感じですけど 笑)

1月は、大学のテストと溜まりに溜まった課題で手一杯でしたが、1月31日でそれも終わり、ひと段落したため、今年の目標について書いていこうと思います。

目標は大きく4つあります。

1つ目は、大学の研究です。これは目標というよりも、頑張ることになってますね。どれだけ独学で勉強しても、趣味でいろいろシステム開発しても、まずは大学を卒業しなければ、学士にはなれないため、これは間違いなく最優先で行わなければいけません。大学の授業としても、あと残っているのが卒業研究だけであるため、今年大学でやること・頑張ることはこれだけかなと思います。大学に行って、ひたすら研究、研究、研究になる気がします。

2つ目は、Hack The BoxでHackerランクになることです。昨年の3月ごろからHack The Boxを始めて、時間があるときに取り組んでいましたが、Starting Pointのいろいろな箇所で詰まったり、そもそも時間を十分に取れなかったりして、あまり攻略できていませんでした。今年は、授業もあまりなく、時間も取れそうなため、本腰を入れて頑張りたいと思います。具体的な数字でいうと、少なくとも毎日1時間、朝8時〜9時までをHack The Boxを攻略する時間に当てようと思っています。理想は、2時間、3時間、時間が取れるならそれよりもという感じなんですけど、日によっては、忙しい日もあるので、そんな日でも取れそうな最低限の1時間にしました。こういうのは1日に頑張りすぎるよりも、継続することが大事だと思うので、毎日コツコツやっていきたいと思います。将来的にはセキュリティ関連の仕事をしたいため、攻撃を通して防御を学び、防御を通して攻撃を学んでいきたいと思います。

3つ目は、資格の取得です。今まで、基本情報技術者応用情報技術者を取ってきたため、今年は、情報処理安全確保支援士に挑戦したいと思っています。資格は、知識問題でしかないから、社会では使えないという意見もあり、自分でも知識(知っていること) とスキル(できること)は違うと思っているため、半分は同意できるのですが、一方で、資格を取るために勉強するというこの資格を取るまでの過程が大事だとも思っています。また、幅広く体系的な知識を習得できるというのも資格取得のメリットだと思っています。情報処理安全確保支援士取得に向けて、これから頑張りたいと思います。

4つ目は、学外のイベントに参加することです。セキュリティキャンプやSecHack365といったセキュリティ関連のイベントに加え、ハッカソンやカンファレンスにも参加していきたいと思っています。前までは、自分のスキルでは学外イベントに参加するのは恥ずかしいと思い、挑戦できていなかったのですが、昨年、ハッカソンやセキュリティ・ミニキャンプに参加することで、参加する人全員がすごい人ではなく、自分と似たような人もいるし、イベントを通して、成長したいという人がたくさんいることも知りました。今年は、昨年に引き続き、より多くのイベントに参加し、成長できる環境に自分から臨んでいきたいと思います。

1月も終わり、今年もあと11ヶ月になりましたが、いろいろな経験をして、たくさんの人に出会い、成長できたと言える1年にしていきたいと思います。

ぼちぼちブログでもはじめます

もう新年始まって気づいたら4日目ですが、明けましておめでとうございます。

アウトプットの場として

2023年になり、気持ちを新たにして、なにか新しいことを始めようと思ったときに、前々からいつかやろうと思っていたブログを書くことに決めました。(いつかやろうを今やることは大事だと思う。)

ここらへんで、一応、自己紹介しておきたいと思います。

私は、現在、大学で情報理工学を学んでいて、ネットワークやセキュリティに興味を持っています。

今までやってきたこととしては、B2のときに基本情報技術者試験、B3のときに応用情報技術者試験に合格し、他には、セキュリティ・ミニキャンプ オンライン・東京 に参加したり、Hack The Boxを少しずつやってきました。(秋学期になってからHTBはほとんど触れていないが…)

他にも、いろんな勉強会にも参加してきました。今はオンラインで気軽に参加できるので。

ブログを書こうかなと考えた理由は大きく3つありまして。

1つ目は、セキュリティ・ミニキャンプのグループ活動でLT大会をしたときに、やっぱりアウトプットの場というのがあることで、より知識の定着につながることが実感できたからです。大学生になってからは、インプットがメインになっていてアウトプットの場がなかなかないため、どうアウトプットするのかというのは考える必要がありました。Twitterでもアウトプットはできるし、実際にそれを使っていましたが、文字数に制限があるため、正しく文章を書くには向いていません。(気楽にツイートできることがTwitterの良さではあるのですが。)

2つ目は、自分の言語化能力の向上のためです。自分の頭には考えがあるのに、それをうまく伝えられなかったり、わかりにくい説明になっていたりしていたため、どうすればわかりやすく説明できるのかというのは前からの悩みでした。そこでいろいろ考えたときに自分の頭にあることを言語化するというのは、結構慣れの要素が大きいと思うため、経験を積むことが大事だという結論にいたり、それならば、早く始めた方がいいというのが、ブログを書くきっかけにもなっています。

3つ目は、エンジニアになるなら、自分の技術力(今までどんなことをやってきたのか、私はどんなことができるのか)を証明するためにも技術ブログは書いておくといいということを聞くことが多いからです。今は、いきなり技術ブログを書くのは敷居が高いため、気楽に書けるこのHatena Blogでしか記事を書いていませんが、今年中には、QitaやZennの方に、技術系の記事を投稿していきたいと思っています。

ブログを書く前に、Hatena Blogを使うかも結構迷っていて、自分で個人ブログサイトを作ろうかとも思ったのですが、そこに時間をかける前にさっさとブログを書き始めようということで、こちらを選択しました。そのため、今年中には、個人のブログサイトを作ってそちらに移行したいと思っています。(願望)

このHatena Blogでは、月に1回は投稿していく予定です。内容としては、その月にやってきたこととか新たな発見があったこと、自分の書きたいことを勝手に発信していく感じで。ここであらかじめ宣言しておくことで、自分を追い込んでいくスタイル。(笑)

技術的な話は、QiitaやZennの方に書くかもしれませんが、もしかしたら、こっちで書くかもしれません。全然考えていないため、そこら辺はこれから考えていきたいと思います。

とりあえず、人生初めてのブログは、こんな感じで終わりたいと思います。

近々、新年の抱負として、今年やりたいことを書きたいと思っています。