- 脆弱性診断士に興味があるけど中々転職に踏み出せない
- 技術や知識としてどのようなものが必要となるか事前に知りたい
脆弱性診断士はセキュリティ業界未経験から始める際にお勧めできる職業の一つです。
セキュリティに興味がある人であれば、脆弱性診断士という言葉自体は聞いたことがある人も多いと思います。
しかし、全く知識もない状態のまま脆弱性診断士に転職するというのはハードルが高く、思いとどまっている人もいるのではないでしょうか。
脆弱性診断士は、未経験からの参入が他に比べ比較的しやすい部類に入ります。
しかし、何も知らない状態で入るよりかは、ある程度知識をつけた状態で入った方が安心できるという人も多いと思います。
そこで、ここでは脆弱性診断の中でも数の多いWebアプリケーション診断に絞り、お勧めできる勉強方法についていくつか紹介しようと思います。
あくまで私個人が「知っていてよかった」と思うことや「これやっておけばよかった」ということをまとめています。
他にも「こんな勉強方法おすすめだよ!」などあればぜひメッセージください!
基礎知識の勉強について
セキュリティは広い分野の知識を求められます。
これさえ覚えておけばOK、という基準のようなものはありませんが最低限ここだけは覚えておいた方が良いと思える知識はあります。
ここでは、Webアプリケーション脆弱性診断やるなら最低限押さえておいた方がいいかなと思うことを3つあげています。
既に身についているものであれば読み飛ばしていただいてOKですし、不安があれば改めて勉強しなおしてみるのもいいともいます。
ただ、完璧に理解するというところまで求めてしまうと難しいところがあるので、まずはざっくり押さえておく程度でいいかなと思っています。
TCP/IPに関する知識
Webアプリケーション診断なのになぜ?と思われるかもしれませんが重要な知識です。
診断は疑似とはいえサーバを攻撃していることになります。
その際にどのような通信経路を辿っているのかをある程度理解していないと、問題が発生した際対処に困るケースがあります。
実は診断と一口にいっても、対象システムにアクセスするための入口が異なる場合があります。
具体的には、以下の2種類から選択されます。
- オンサイト(現地作業)
- オフサイト(リモート作業)
それぞれの違いでどのようなルートを辿って通信をするのかを、ある程度把握しておく必要があります。
接続確認時のトラブルが発生した際に自身の環境に不備があるのか、依頼者側の設定に不備があるのか判断も難しくなるためです。
Webアプリケーション診断に必要な知識、というよりどちらかというと身を守るためにも知識をつけておいた方がいいという意味合いになります。
ただ、TCP/IPに関する知識といっても、最初から深く知っておく必要はありません。
資格であれば、CCNAレベルの知識があれば十分です。
実際に資格を取らないまでも、この分野に関して不安がある人は初心者向けに解説している本などを読んでみることをおすすめします。
サーバに関する知識
次に知っておいて損はないと思われる知識は、サーバの知識です。
Webアプリケーション診断では、リクエスト/レスポンス時のヘッダーやボディをみることになります。
ヘッダーに出力される情報は、サーバの設定やインストールされたソフトウェアの環境に影響されます。
出力されている情報次第では、脆弱性を調べるヒントになる場合もあるので、ある程度サーバ側の知識は必要になります。
特によく使われているサーバは以下の3つです。
- Apache HTTP Server
- Apache Tomcat
- Nginx
一度もサーバ構築などをやったことがない人は、まずWebサーバを構築するところから始めることをお勧めします。
サーバ周りを勉強する場合は、ローカルの仮装環境で構築するかクラウドサービスなどを利用すると比較的簡単に学習できます。
仮装環境を動かすPCスペックはそれなりに必要とはなりますが、現在はスペックを満たしたPCも10万円以下で購入できることから、昔に比べて敷居は下がったように思われます。
仮に、購入することが厳しかったとしても、クラウドサービスなどを利用すれば手持ちのPCのスペック関係なしに安価で構築することもできます。
また、どちらのケースも検索すればすぐに詳しいやり方についてたどり着けてしまうほど、今は情報が溢れているので、勉強するには有利な環境です。
昔に比べてサーバ構築をするハードルは下がっているので、やったことがない方はこれを気にぜひ取り組んでみましょう。
プログラミングに関する知識
プログラミングの知識もあった方がいいです。
脆弱性に関する詳細を確認する際、ある程度プログラミングや言語に関する知識がないと本質を理解しにくいためです。
また、Webプログラミングといっても、フロントエンドとバックエンドで言語や処理範囲に違いがあります。
脆弱性診断をする上で、フロントエンドとバックエンドの処理の違いを認識しておくことは重要です。
怪しい挙動を見つけた際、それがフロントエンド処理なのかバックエンドエンド処理なのかで調査する方法が変わるためです。
また、脆弱性を発見した際にツールなどに登録された攻撃シグネチャでは対応できないケースがあります。
その場合は、自分で仕様を仮定し成立しそうなシグネチャを作り探っていく必要があります。
そのようなケースにおいて、ある程度プログラミングや言語の知識がないと当たりにつけることが難しくなります。
採用時にWebアプリケーション開発経験が優遇される背景には、そういった知識が必要になるためです。
ただ、Webアプリケーション開発経験が無くとも採用されている人はいます。
独学でもなんとかなる世界なので、興味があればWeb開発に転職しなくても勉強してみるといいと思います。
脆弱性診断士方面での勉強方法について
- 上記のことは既に一通りやっている
- 興味のないことに取り組んでも身が入らない、続かない
そういう方は、脆弱性に関する勉強をしてみることをおすすめします。
書籍から入る方法や、あらかじめ脆弱性が含まれるイメージファイルを使って学習するなど様々な方法があります。
どれがあるかはやってみないとわからない部分もあると思うので、まずは色々やってることをおすすめします。
せっかく取り組むんだったら転職時に有利になるようなものにしたいですよね。
転職時にはポートフォリオと呼ばれるアウトプットを出すと良いといわれています。
勉強したことの復習ついでに、勉強したこと自体をポートフォリオとして作ってしまうのがおすすめです!
詳しくは以下の記事で解説してますので合わせて読んでみてください。
書籍を読んで学習する
書籍を使った勉強方法について、ここではおすすめできる2冊について紹介をします。
脆弱性についてしっかり学びたい人は、体系的に学ぶ 安全なWebアプリケーションの作り方がおすすめです。
Webアプリケーション診断サービスを手がける会社の代表取締役で、IPAの非常勤研究員を務めるなどセキュリティ業界では有名な徳丸浩氏が執筆された本です。
教科書のような形式となっており、認識に齟齬がないよう配慮された文章構成となっているため安心してじっくり読み進めることができます。
それぞれの脆弱性について一つ一つしっかり解説されている本は少ないため、脆弱性への理解を深めておきたいのであれば一度この本を手に取ってみると良いと思います。
また、ハンズオン用のVMも用意されており、実際に手で動かしながら学ぶことができます。
言語は HTML/CSS/JavaScript/PHP を使用していますが、丁寧に解説されているので少し触ったことがある人であれば問題なく読み進めることができると思います。
本に関する疑問をブログやTwitterで記載すると、ご本人からコメントがもらえたりすることもあるようです。
脆弱性診断の流れなどについて学びたい人であれば「Webセキュリティ担当者のための脆弱性診断スタートガイド」がお勧めです。
セキュリティ業界で有名な株式会社トライコーダトライコーダの代表取締役である上野宣氏が執筆したものです。
こちらは脆弱性の説明だけでなく脆弱性診断の流れについても詳しく解説されている本です。
OWASP ZAP や Burp Suite を使いながら、診断の流れを学ぶことができます。
Webアプリケーション診断の業務について興味があったり、知りたいといった方にお勧めできる書籍です。
やられアプリを攻略してみる
本に書いてあることをなぞってやるだけだと味気ない方や、性に合わない方はやられアプリを触ってみることをおすすめします。
やられアプリ(やられサーバと読んだりする)は、脆弱性が意図的に含まれた状態で配布されたイメージファイルです。
PC内でローカルネットワークとして立ち上げ、実際にアクセスしながら脆弱性を見つけて学んでいきます。
現在、様々な種類のやられアプリがありますが、最初に触るのであれば OWASP が配布している BWA がおすすめです。
ここには、何種類かのやられアプリがすでに組み込まれており、構築自体も簡単なためおすすめできるイメージファイルです。
中でも、最初に取り掛かる際におすすめできるアプリは以下3つです。
- OWASP WebGoat
- OWASP Mutillidae ii
- Damn Vulnerable Web Application
こちらは攻略方法がわからなくても、やられアプリによってはヒントのようなものが用意されていたり、検索することで解説してくれているページもあったりするので、比較的スムーズに進めることができると思います。
Damn Vulnerable Web Application(DVWA) の最新版をサーバ構築するのに苦戦したのはいい思い出です。サーバ周りの知識もつくので、ぜひチャレンジしてみてください。
CTFに参加してみる
脆弱性についてある程度勉強していて、少し腕試し的なことがしたくなってきたという方にはCTFのWeb問がおすすめです。
CTFとは、Capture the flag の略でセキュリティ技術、知識を競う大会のようなものです。
国内であればSECCONが一番大きな大会になります。
SECCONは初心者向けの大会である、「seccon for beginners」も開催しており、CTFに興味があればここから入ると良いと思います。
ただ、SECCONのような大会は開催期間が決まっており、その時期にならないと問題サーバにアクセスできないなどの問題があります。
CTFの大会によっては、過去問をGithubにあげていたりするので、開催期間じゃなかったとしても開催済みの大会の問題をサーバにダウンロードして解いてみるだけでも刺激になると思います。
資格の取得取得してみる
もし資格を検討されているのであれば、国家資格の「情報処理安全確保支援士試験」がおすすめです。
ただ、情報処理安全確保支援士試験は割とハードルが高いので、もう少しライトな方面で資格取得を目指されるのであれば CompTIA の Security+ がおすすめです。
ただし、ベンダー資格の受験料はIPAの資格に比べて割高なのでその辺は注意をしてください。
比較的新しめな資格としては、認定脆弱性診断士という資格があります。
こちらもCompTIA同様ベンチャー資格にはなりますが、試験料は若干リーズナブルで、トライコーダの上野氏やEGセキュアの徳丸氏など有名な人が参画して作成した資格とのことで、注目を集めています。興味があれば受けてみてもいいと思います。
まとめ
脆弱性診断に関する勉強方法について簡単に紹介してきました。
セキュリティはサーバやネットワーク周りから、ミドルウェア、Webアプリケーションなど幅広い知識が求められます。
また、脆弱性診断をする上で脆弱性に関する知識をつけておくこと・理解しておくことも重要です。
脆弱性診断士になる前にこれら全てを完璧に満たしている人は稀です。
特に脆弱性については、セキュリティ業界未経験者を募集している会社に入ってから学ぶのも遅くはありません。
まずは興味のあるところから取り組んでみることをおすすめします。
コメント