脆弱性診断士の軌跡 半年くらい v1.0

f:id:NickShadows:20191013122836j:plain

振り返り

知識

基本的なものは検出可能。

  1. XSS
  2. SQLインジェクション
  3. オープンリダイレクト
  4. IDOR
  5. パストラバーサル
  6. 不必要な情報の公開
  7. 認証関連の不備
  8. セキュリティヘッダの不備
  9. Cookie設定の不備
  10. 脆弱なミドルウェア、フレームワーク
  11. などなど


脆弱性診断プロジェクトで言うSilverを満たしているレベルかな?


課題

根本的なところがたくさん。

  1. 脆弱性のリスクについての詳細な説明
  2. 脆弱性の対策方法の熟知
  3. 脆弱性検出の応用
  4. プラットフォーム別の診断方法



理由について。
リスクや対策方法については、仕事ではテンプレートがあるのでそこまで困らなかったが、プライベートで困ることが多かった。

グループでの説明や個人サービスの診断をちょいちょいやっていたが、そこで具体的なリスクの説明が出来なかった。


最低限、こういうリスクがあるから悪用されると最悪こうなりますよってのは説明できるのだが、環境にあわせて何ができそうでこれは無理そうってのは説明できなかった。


応用やプラットフォーム別の診断方法については、個人サービスで様々なプラットフォーム(サービス?)を使っていることが多く、それが変わるだけでどうしていいかわからなくなることがあった。


正直、これはその都度調べて経験を積めばいいかなと思ってるのでそこまで気にしてはいない。


振り返って感想

前みたいに「こうしてればできる!こういうのが良い!」と言いにくくなってきた。


というのは、根本的なところで知らないことが多いということに気付き、未熟だということを強く実感したから。


仕事で必要な脆弱性検知などはできるし、どうリスクがあるかもある程度わかるが、悪用方法や対策方法などの知識が足りなさすぎる。


Struts2を見つけてもCVEに対応したpayloadsは出てこないし、SQLiを見つけてもすぐにselectやらsleepやらが出来ない。


テンプレ通りにしか出来てないじゃん、ってことに気付いてしまった。


それに気付いてから、根本的な仕組みやpayloadsについて調べるようになった。


そこでどのタイミングでどの勉強をすればいいか、時間配分はどうか、家と電車でできることは何かなどいろいろ検証し、本も参考にしたので現段階での考えをまとめておく。


勉強法

正直、これが書きたかったからこの記事を書いた。



参考文献
最短の時間で最大の成果を手に入れる 超効率勉強法



だいぶ前にこの本を買って読んではいたが、あまり活かせていなかった。

今、試行錯誤しながら自分に何があうか試しているところで読むと納得できる箇所が多かったので、メモとして残しておく。

やる時間帯

とはいえ、本の紹介ではないので主観的なメモになる。


勉強などに集中できる時間は午前がベストとなった(10:00~14:00くらい)


この時間は本から抜粋したが、体感的に合っていると感じた。
本には午後型もあると書いてあったが、その時間はぼーっとすることが多かったのでそちらではないなと思った。


また、早朝と夜はいつやっても頭がぼーっとして効率が悪いなと思っていたら、その時間は基本的に頭が働かないらしい。

基本的に効率がいいのは1日4時間くらいということ。

すごく納得できたが、納得できたのはどの時間でもやってみて検証したからだと思う。
研究の論文とかはどれかはわからなかったが、実感としてあるから信じようと思う。


内容

複数ジャンルを交互にやるといいらしい。
インターリービングと呼ばれる、フロリダ大学の研究によるもの。


本にはいろいろ書いてあったが、これかなって思ったのは1つ。


複数ジャンルを交互にやる


まだ始まったばかりなので、こまったら本を参考に改善していく予定。
これが腑に落ちた理由は、1つのことをやってると飽きる瞬間が必ず合ったから。


休日とかは1つのことをやろうとして、飽きてできなくなって困っていた。
この考えはこの問題を改善するすごく良いものだった。


やりかた

これは本を読む前からなんとなく感覚としてあった。


教えるつもりで調べる


実際、勉強会などで教えることがまぁまぁあったが、そこでやった内容は自分の中に密接に紐付いた。


そこの経験から、教えることが手っ取り早いと感じた。
教えなくても教えるつもりで調べれば近い効果があるかなと思っていたが、本を読んだことで確信に近くなった。


準備

本には7つくらい書いてあったが、現段階で気になったのは3つ。

  1. 自分を超える目標立て
  2. 知っていることを書き出す
  3. BGMの使い方


「1.自分を超える目標立て」について。
最近ビジネス書を色々読んでいて、まぁまぁ書かれていることだが、目標を立てるとそれを達成できるレベルでしか行動しない。


これも確かに実感としてあって、特に学校や仕事ではこれが顕著だった。
視野が狭くなるということ。


ということで、無理ゲくさい目標を設定すると良い感じになる、そういうこと。

これは始めたばかりなので確定的なことは言えない。


立て方について、本では今やっていることが社会的に役立つか?で考えてみると良いとあった。

今はWebやandroidの仕組みを調べまくれば満足するかなって感はある。

これを広く考えてみると、こうなった。


悪用する人が困る社会にする


診断できる人が増え、セキュリティに詳しい人が増え、悪用がしにくくなる。
悪をしばくのは根本的にアンパンマンみたいでワクワクするね。


もちろん、悪とは?という倫理感も大事。


「2.知っていることを書き出す」について。

これはこれからやってみようというもの。

知っているものと知らないものの線引ができ、知らないものがスッと入ってくるらしい。
夢のような方法だね。


「3.BGMの使い方」について。

これは購入当初から気になってやっていた。

作業する時にBGMがあると集中できない。

でも音楽は聞きたいなぁと思っていたら、そこも本に書いてあった。
休憩時間に聞くといいらしい。


勉強時間

90分やって20分休憩を1サイクルとする。


本に書いてあったオススメのサイクルだけど、集中が切れてふっと時間をみたら90分前後であることが多かった。

そこから無理に作業を続けようと何回かしたけど、10分も持たなかったからここらへんがラインなんだと思う。

休憩時間は試行錯誤の必要あり。


環境

家では検証、外出中は読書・SNSチェック


これは非常にシンプルで、外出中に技術のことは考えらんない。
確かめらんないし、ガンガン調べもできない。


反して、やたらと効率が良くできたのがSNSチェックと読書。

SNSというよりかは、コミュニティやらニュースのチェックと気になったものの深堀り。

読書は読書。

外では新しい情報の収集、家では気になることの深堀りが現状の吉。


まとめ

  • ドデカイ目標を立てる
  • 集中できるのは午前(10:00~14:00)
  • 3ジャンルを交互にやる
  • 作業中にBGMはかけない
  • 教えるつもりで調べる
  • 時間は90分やって20分休憩のサイクル
  • 外では新しい情報の収集、家では気になることの深堀り



おわりに

いつのまにか半年くらい経っていた。


ビジネス書やビジネス関連の動画を見ることが多い(その人の考えが強く伝わるので楽しい)

そこで、たくさん挑戦してたくさん失敗するみたいなことを多く見かけたが、本当かよって思っていた。


振り返ってみると、なんだか失敗ばかりだなぁ・・・
本当でした。


何かを習得する以前に、自分を定義するのに時間がかかった。

3ヶ月くらい前はあった自身も、少なくなっていった。
これがダニング=クルーガー効果かぁとポジティブに思っている。

振り返りは書く必要あるかなぁと思ってたが、なかなかに得るものがあった。
また3ヶ月後くらいに書いてみよう。