sakuraです。
本ブログ記事は、「CDIで働くエンジニアに、オススメの勉強方法を聞いてみた」シリーズ 2日目のBinary Exploit分野です。
前回は、Hardware、Web Exploit、RedTeam分野でのオススメの勉強方法をご紹介しました。
気になる方はこちらから
質問内容は、前回と変わらず以下です。
- Q1: 普段の業務はなんですか?
- Q2: 学生時代何をやっていましたか?
- Q3: 現状の能力はどう培われましたか?
- Q4: 学生時代に何をやっておくと業務に入りやすいですか?
- Q5: 学び始めで、おすすめの教材はありますか?
- Q6: あらかた学んだあと、実力を伸ばすおすすめの方法はありますか?
- Q7: 新卒1年目〜新卒3年目までに望む能力はありますか?
また、「Binary Exploitの学び方がよくわかりません」といったピンポイントな質問を頂いたこともあり、今回は個別枠を用意しています。
質問は以下です。
- Q1. 所属されているチームで活躍するために、実力を伸ばせるような良いサイトがあればご教示ください。 (etc. pwnable.kr)
- Q2. 新卒の際、会社選びのコツみたいなのがあればご教示ください。
- Q3. 学生時代に「これをやっておけば良かったと」思うことがあればご教示ください。
それでは、現役セキュリティエンジニアの回答を見ていきましょう!
回答
Q1: 普段の業務はなんですか?
- Web アプリケーション診断を主軸に、ネットワークペネトレーションテストやトレーニングコンテンツやインフラの作成、サービス開発等を経て、現在はリバースエンジニアリングが絡む領域の案件を担当しています。
- ソースコードやバイナリを読むこともあればパケットを読むこともあります。
- 診断用にツールを書くこともあります。
Q2: 学生時代何をやっていましたか?
- 情報系の学部学科だったので、任意に選択できる講義では、プログラミングやアプリケーション開発やセキュリティに関するものを中心に選択していました。
- 正式な研究室配属よりも前に自分が研究したい領域の研究室に顔を出すこともしていました。
- コンテスト関係
- CTFに参加。
- オンサイト CTFの開催。
- 情報機器管理コンテストに参加したりしていました。
- 仕事関係
- CDI でのアルバイト。
- 受託開発を行っている会社で Android アプリケーションやタブレット端末のブラウザで使用することを想定した Web アプリケーションの開発をアルバイトでお手伝いしたりしていました。
- その会社でラボを新設することになったときには、少しだけインフラも面倒を見ていました。
Q3: 現状の能力はどう培われましたか?
- CDI に正社員として入社してから必要になって獲得した能力が大部分な気がしています。
- アプリケーションやツールを書くことで読み書きを覚えますし、フレームワークやライブラリを使う過程で特異な挙動を知っていれば、それを攻撃者側の視点に活かせるといった具合です。
Q4: 学生時代に何をやっておくと業務に入りやすいですか?
- どういった業務に携わりたいかにもよると思いますが、以下4点はどの領域でも必要な気がしています。
- 各 OS のコンピュータを扱うことができる
- CLI 操作ができる
- 業務で要求されそうなプログラミング言語を読み書きできる
- 必要な環境を構築できる
- 日本語と英語もできた方が良いです。
Q5: 学び始めで、おすすめの教材はありますか?
- プログラミングができないのであれば、インターネットや本を活用して入門すると良いと思います。
- 次に、自分がやりたい領域の入門書が良いと思います。そのあとは、Q6で回答した内容が効いてくると思います。
Q6: あらかた学んだあと、実力を伸ばすおすすめの方法はありますか?
- Hack The Box (HTB Academy を含む) は色々勉強できて良いと思います。
- SECCON Beginners CTFやpicoCTF等の初学者向けのCTFに参加することも良いと思います。
- 初学者向けの問題を解くことができたら、難易度の高い CTF に参加すると良いと思います。
- 自分がやりたい領域において、何か作ってみたり壊してみたり直してみたりが良いと思います。
- 何をするにもまずは試行錯誤してみることが今後につながると思います。
Q7: 新卒1年目〜新卒3年目までに望む能力はありますか?
- 入社する会社にもよると思いますが、Q4で回答した内容は最低限望まれる能力だと思います。
- 「こうしたらどうなるんだろう」と疑問に思ったり想像したりできると良いと思います。
- これは言うまでもないと思いますが、勉強し続ける意欲や向上心は必須だと思います。
Q1: 普段の業務はなんですか?
- 主な業務はお客様への提案活動支援とマネジメントです。
- 稼働状況によっては脆弱性診断やペネトレーションテスト等の実務に携わることもあります。
- それぞれの割合は提案活動支援が4割、マネジメントが4割、実務が2割です。
Q2: 学生時代何をやっていましたか?
- 学生時代は電子工学を学んでいました。
- 趣味としてCTFに取り組んでいました。
Q3: 現状の能力はどう培われましたか?
- 現状の能力はCTFと実務を通して身につきました。
- 特に脆弱性攻撃に関するスキルはCTFでの経験によるところが大きいです。
Q4: 学生時代に何をやっておくと業務に入りやすいですか?
- 脆弱性診断の場合は、対象を問わず脆弱性を見つける力が問われるため、自身でなにかしらの脆弱性を発見した経験があると即戦力として業務に携わる機会が得られるでしょう。
- もっとも学生のうちは経済的な課題もあるため、無償で十分または低コストで済む活動に取り組むことがおすすめです。例えば以下のものはパソコンさえあれば取り組めます。
- CTF
- バグバウンティ
- OSSの脆弱性調査
Q5: 学び始めで、おすすめの教材はありますか?
- まずは取り組む分野についてですが、脆弱性診断の場合はWebアプリケーションを対象としたものがおすすめです。
- Webアプリケーションは身近な存在ですし、資料が豊富なため始めやすいです。
- Webアプリケーションにまつわる脆弱性の理解を深めることが目的であれば、『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』が王道だと思います。
Q6: あらかた学んだあと、実力を伸ばすおすすめの方法はありますか?
- 脆弱性リサーチャーが書いた脆弱性関連の記事を読んで再現したり、それを参考に脆弱性を探したりして実践すると力がつきます。
- なにかしらの対象を決めて脆弱性の発見・攻略に取り組むことがおすすめです。
- そして、一番重要なのはそれを継続することです。
Q7: 新卒1年目〜新卒3年目までに望む能力はありますか?
- 常になにかしら手が動いているくらいの技術への興味関心とやる気を望みます。
個別質問枠
Q1: 所属されているチームで活躍するために、実力を伸ばせるような良いサイトがあればご教示ください。 (etc. pwnable.kr)
- そこいらのサイトはあまり多くは知らないですが、過去問とかをやったりしていた。
- 自身で問題を作るのも勉強になる。
Q2: 新卒の際、会社選びのコツみたいなのがあればご教示ください。
- 自分はバイトから上がっているので、就活面倒でそのまま入ってしまいました。
- 選ぶ際にはやっている内容はもちろんの事、福利厚生や給与面もある程度確認すると良いと思います。
- あとは結果論ですが、もともと見知ってる人らがいると幾分か気は楽ですね。(普通の新卒の人の参考にはならなさそうですが)
Q3: 学生時代に「これをやっておけば良かったと」思うことがあればご教示ください。
- もっとハードウェアや電気・電波など、基礎的な分野をしっかりと勉強しておくべきだったと後悔してます。
- 今からでも遅くはないのでしょうが、腰が重く...
Q1: 所属されているチームで活躍するために、実力を伸ばせるような良いサイトがあればご教示ください。 (etc. pwnable.kr)
- 問題を解いてモチベーションを保てるタイプならpwnable.twがいいと思います。
- ただ常設CTFには問題が公開された当時のまま時が止まってしまうという大きな欠点があります。
- 実際にpwnable.twも大部分は2017年のリリース時の問題がそのまま残っていますし、2020年に問題が追加されていますがそこからですら5年が経過しています。
- いたちごっこで対策が進むPwnの世界では1~2年経つだけで解法が使えなくなってしまうので、最新のテクニックをキャッチアップする手段は持っておくべきだと思います。
- 最新のテクニックは最新のCTFからしか得られないものなので、サイトという意味ではWriteupを読むのがいいと思います。
- ただ、見たことも解いたこともない問題のWriteupだけ読んでも得られるものは少ないので、実際にチャレンジして解けなかったら読むとか、読みながら手順を繰り返すとかの工夫は必要です。
Q2: 新卒の際、会社選びのコツみたいなのがあればご教示ください。
- 面白そうくらいの感覚で選んだのでコツとかはわからないです。
- 数年前には今ほど主流ではなかった気もしますが、今はどの会社も積極的にブログ等で情報発信をしているので、選ぶまでの情報には困らないんじゃないかと思います。
- ただ、対面で話すところまで行くと更に面白い話を聞けることがあるので、そういう機会があれば参加することをおすすめします。
Q3: 学生時代に「これをやっておけば良かった」と思うことがあればご教示ください。
- 学生時代でないとできないことはそんなにないと思いますが、一番のメリットは時間が取れることだと思います。
- やっててよかったのはイベント開催です。
- 事情が特殊で大人の人々から手厚いサポートが受けられていたとはいえ、能動的に行動する経験を積めたのは大きいです。
- 情報は発信する人のところに集まるという言葉を聞いたことがあります。
- 発信すれば社会から「そういう人がいる」と認識してもらえますが、受け身ではそうはいきません。
- 情報発信するほどの力はないよという人もイベントなら開催できるかもしれません。
- 何かしら社会に向かって自ら行動してみてください。
最後に
本ブログ記事では、Binary Exploit分野のおすすめの勉強方法を紹介しました。
明日は、Malware Analysis, OSINT, Forensic分野です。お楽しみに!