ペネトレーションテストとは?脆弱性診断との違いや脅威ベースの考え方
昨年末、JPNIC(一般社団法人日本ネットワークインフォメーションセンター)主催で開催された「InternetWeek 2018」にて、「丸ごとわかるペネトレーションテストの今」と題して、ペネトレーションテストに関して講演を行ってきました。 ...
https://www.secure-sketch.com/blog/explanation-of-penetration-test
こんにちは!UBセキュアでセキュリティコンサルタントをしている臼井(ウスイ)と申します。
担当業務は、主にWebアプリケーション脆弱性診断です。
ペネトレーションテストも担当しています。
私はサイバーセキュリティというものが好きでして、実際のサイトに疑似攻撃をして、
しかもそれで合法的にお金がいただけるという素晴らしい & 楽しいお仕事をしています。
さて、一口に"サイバー攻撃"や"ハッキング"と言っても色々な物・意味があります。
皆さんは"サイバー攻撃"と言われたら真っ先に何を思い浮かべますか?
(サービスダウンやサイト改竄、標的型攻撃など色々ありますよね)
私にとって"サイバー攻撃"と言えば"サーバへの侵入や乗っ取り"のイメージでした。
まさにその"ハッキング"のイメージにピッタリな資格「OSCP」を受験したので、
今回その話を投稿したいと思います。
OSCPとは、"ペネトレーションテスト" に関する資格です。
ざっくり言うと、攻撃対象への侵入や特権昇格の技術力を証明する資格で、
もっと分かりやすく言うなら「攻撃対象サーバを乗っ取ったら勝ち!」という攻撃的な資格です。
この資格の正式名称は「Offensive Security Certified Professional」と言い、
アメリカの「Offensive Security社」が提供・運営するベンダー資格となっています。
「Offensive Security社」は「Kali Linux」を提供していることでも有名ですね!
ちなみに、ペネトレーションテストと脆弱性診断の違いにピンと来ない方は以下が参考になります。
この違いについてもざっくり言うなら、
・「あるべき姿と比較する」のが脆弱性診断
・「攻撃者が目的を達成できるかどうか確認する」のがペネトレーションテスト
と捉えるとなんとなくイメージは掴みやすいと思います。
具体的な話をすると、例えば脆弱性診断ではXSSはもちろん検出しますが、
ペネトレーションテストではXSSの有無は調べない(興味がない)場合が殆どです。
逆に、脆弱性診断では診断対象の脆弱性や設定不備は洗い出しますが、
何かしらの手段でログイン情報が攻撃者に入手され、正規の手段でログインされた場合に
どんな影響が出るかは調べません。
ペネトレーションテストではログイン後に更なる情報収集と悪用を試みます。
さて、話を戻してOSCPの特徴を紹介する前に・・・
そもそも日本国内のセキュリティの資格と言えば、情報処理安全確保支援士が有名ですよね。
(ちなみに私も安全確保支援士です!)
ただ、私の中で安全確保支援士のイメージは「守るための資格」です。
どちらかというとマネジメントや防御寄りの知識が求められます。
対するOSCPでは、非常に攻撃的な知識・技術が求められます。
具体的には、攻撃に必要な情報収集からはじまり、
その後の発見された脆弱性を利用したエクスプロイトの作成・実行など、
あくまで攻撃技術に焦点が当たっています。
そして特に、OSCPにおいて他資格と異なる特徴的なものはその試験内容だと思います。
簡単に試験の特徴を紹介しましょう。
・試験は実技のみ。筆記試験はありません。
・試験時間は約48時間です。
・初めの23時間45分で試験サーバ(基本的に5ホスト)への攻撃を行います。
・残りの24時間で攻撃結果をレポート(報告書)にまとめ、PDFで提出します。
・オンラインで受験でき、試験中はWebカメラとPC画面共有による監視(試験監督)があります。
・試験はすべて英語で行われます。提出するレポート(報告書)も英語です。
試験はペネトレーションテスト実施~報告書提出まで実施するため、
実際のペネトレーションテスト業務にかなり近い内容となっています。
試験中の休憩・食事・仮眠については自由に取ることができますし、取らないこともできます。
試験では攻撃対象サーバごとに点数が割り振られており、合格点は70点です。
5ホスト全ての管理者権限を奪取すれば100点満点です。
尚、トレーニングガイドのエクササイズとトレーニングラボ内10ホスト分のレポートを提出すると
最大で5点(だけ)加点されます。が、量が膨大ですので実施すべきかどうかは微妙な所です。
(私は作成しませんでした!)
英語については、試験時の試験監督官とのチャットやメールでのやり取りや報告書など
試験に関するすべてが英語で行われます。
が、報告書はテンプレートが提供されますので、中学英語程度ができて、
Google先生の翻訳を駆使すれば何とかなるレベルだと思います。
(私もGoogle先生の力を借りました!)
ちなみに、試験中はツールの使用制限があります。例えば、
・Metasploitは1ホストに対してのみ使用可能
・Sqlmap使用禁止
・有償ツール使用禁止(Burp Proや弊社のVexも使用できません)
などです。違反すると合格できないので注意が必要です。
さて!
試験の紹介だけでてんこ盛りでしたが、(やっと)私の奮闘記に移りたいと思います。
まずは何より申し込みからです。
申し込みはOffensive Security社のホームページから行います。
OSCPの受験申込みは、基本的にPWKというトレーニングコースの申込みとセットになっています。
どちらかというとPWKトレーニングコースにOSCPの受験費用も含まれるイメージですね。
気になるお値段は、トレーニングラボへのアクセス権の有効期間によって変動します。
私は以下の一番お手頃なコースにしました。
・「トレーニングコース資料+受験費用+30日間のトレーニングラボアクセス権」
⇒$800.00(約8~9万円)
※最終的にトレーニングを延長したので、初めから90日コースを申し込めば良かったなと思いました。
■追記■
2020.2.11 PWKコースがアップデートされました。
申し込みプランの内容や費用が変わっていますので、アップデートの案内をご確認ください。
トレーニングコース資料も大幅にページ数が増え、トレーニングラボ内のホストも増えました。
また、トレーニング申し込みと受験申し込みが別になりました。(そして金額もUP...!)
■追記ここまで■
一見高く思えますが、CEHやGIACなど数十万する資格よりは断然お手頃です。
(それに弊社には「自己研鑽費」という仕組みがあり、自己研鑽にかかる費用は年間10万円まで
なんと会社が負担してくれます!もちろん私も利用しました。ありがたい!)
申し込んでから1~2週間ほどすると、トレーニングコースガイド(約350ページのPDF)と
約8時間分の講習動画データ、そしてトレーニングラボ接続用のOpenVPN設定ファイルの
それぞれのダウンロードリンクがメールで送られてきます。
トレーニングコースガイドと講習動画の内容は殆ど同じです。学びやすい方を使うといいと思います。
さて、貰えるもの貰ったところで、いよいよトレーニング(自習)開始です!
トレーニングでは、まずはコースガイドや動画を見ながら技術的な原理を理解します。
これは1週間ちょっとで見終わりました。
一通り見たら、次は実践練習です。
受講者専用のトレーニングラボには複数のネットワークと、
何かしらの脆弱性を抱えた複数のホストが存在します。(VPNで接続します)
その数がとても多く、なんと最初のネットワークだけで50ホスト近く存在します!
PWK受講者は、そのネットワーク内の対象ホストに自由に攻撃できます。
※ ↑ 操作中のKali Linuxの画面。攻撃対象にSQLインジェクションの脆弱性があり、
それを使ってサーバにバックドアを作成、侵入。内部から該当のファイルを確認中。
※OSCP(PWKラボ)とは別のトレーニング環境です!Spoilerじゃないよ!
「Try Harder」は、Offensive Security社の標語のようなもので、
日本語でいうと「もっと頑張れ!」というようなニュアンスでいいと思います。
トレーニング中、何度も何度も「もっと頑張れ!」と自分に言い聞かせることになりました。
まず驚いたことは、トレーニングラボのホストの攻略方法(正解)がどこにも載っていないことです。
攻撃の糸口が掴めず行き詰まったら、正解を見て「あぁここはこうすればいいのか」
なんて事はできません。
フォーラム(トレーニングコース受講者用の情報交換掲示板)もありますが、
仮にここに正解や具体的なヒントが投稿された場合には、
なんとOffensiveSecurityスタッフが迅速に投稿を削除・編集してくれます。
※回りくどくて分かりづらいヒントはギリギリ残ります。
行き詰まった時にできることは、本当に「もっと頑張る」しかないのです。
取り組み始めたばかりのころの私は、1ホスト攻略するのに10時間以上かかっていました。
試験は5ホスト。攻撃できる時間は約24時間。
睡眠無しでも1ホスト4時間半ちょっとで攻略する必要があります。
もっと頑張らないといけません。
様々な攻撃手法や列挙手法、有名な脆弱性とExploitを調べました。
コネクトバックシェルのコード(pythonやpowershell)も暗記しました。
良く使うコマンドは大抵記憶しましたが、時々使うコマンドもパッと調べられるように
自分用のチートシートも作成しました。
それでも行き詰まり過ぎて「ああああああぁぁぁぁぁあ!」と叫んでみたり
何度か机に頭を打ち付け、閃きを期待して自分の頬にビンタをかましたり(閃きませんでした)
何をしても手がかりが見つからず放心状態と苦痛を感じたこと数十回くらい。
そんな中でもより早く深く情報を収集し、脆弱性や設定不備を探し、
そしてサーバのshellを取り、最後にroot権限やAdministrator権限やSYSTEM権限を奪取した時、
道のりが苦しければ苦しかったほど、とんでもなく嬉しく、達成感を感じました。
実はトレーニングを始めた当初、セキュリティについてそれなりに詳しい自負がありました。
が、ペネトレーションテストでは今までと別の観点や考え方、アイデアが沢山求められました。
若干なめていたなと後悔しました。
そんなこんなしているうちに、気づけばトレーニングラボの40ホストの管理者権限を奪取し、
そして受験日を迎えることになります。
章タイトルでお察しの通り1回目は落ちました。
一番の原因は時間の使い方だったと思います。
なぜか一番難しいサーバから攻略しました。(超無計画!でもなんとか攻略できましたよ!)
ですが結局時間が足りず5ホスト中2ホストしか攻略できず、レポート提出から数日後、
不合格の通知メールを受信することになりました。
また、この試験中に睡眠は取りませんでした。今思うとこれも失敗だったと思います。
(正確に言うと、エナジードリンクの過剰摂取&試験が気になりすぎて眠れませんでした。)
睡眠不足により頭が働かず、時間だけが無駄に過ぎていくことがありました。
働かない頭で頑張るよりも、仮眠を取ってしっかりと頭が働く状態で挑むべきでした。
まぁ改善点が見えているだけ、何をどうすればいいか分からない状況よりは断然良いです!
こうして私の初のOSCP試験は、非常に貴重で、非常に不健康な体験となりました。
「今回は絶対寝るぞ!」
という、あまり試験で聞きなれない意気込みを持って迎えた2回目。
時間の使い方を事前に計画し、実践しました。
それでもなぜか得点が低いサーバが攻略できず困っていましたが、
試験中盤頃には得点の高い3ホストの攻略が終わってギリギリ合格点に達する見込みでした。
本当は寝ずにもう2ホストを攻撃すべきだったんですが、意気込んで寝ました。
前回の反省を活かして、エナジードリンク1本という(気持ち的に)ゼロカフェインの状態で試験に臨み、
中盤を超えたあたりでとーっても眠くなったためです。
6時間前後睡眠を取りました。
起きてから時間切れまであがいてそのまま時間切れ。
次の24時間でレポートを作成・提出してちょっとドキドキしながらまた寝ました。
合格してなければこんな記事書かないだろうと皆さんが思う通り、
レポート提出から2日後、合格通知のメールを受信することができました!
私はガッツポーズをして、メールのリンクから合格証の発送先住所を入力し、サブミットしました。
そして合格から約2か月後、待ちに待った合格証が届きました!
ホントに、ホントに大変でした。それだけの価値のある、非常に実践的な資格だと思いました。
しかしまぁ、英語の証書を持っているって、なんかいいですね!
低レイヤの勉強・攻撃にも興味がありますが、社内には機械語が読める変態さんも既にいます。
そう考えると、ペネトレーションテストに重点を置いていくのもいいかなぁと思ったりします。
OSCP以外にもGIACやCEHなどの資格もありますし、同じOffensiveSecurity社のOSWEという
Webアプリケーションに重点を置いた新しい資格も非常に面白そうです。
(ちなみにユービーセキュアでは、毎年何人かGIACやCEHのトレーニング/受験をさせもらえます!)
まだまだ面白そうな資格は沢山ありますから、次は家族や会社とも相談しつつ、
また奮闘していきたいと思います!
ユービーセキュアには色々なセキュリティに関する分野のプロがいます。
是非是非、ユービーセキュアという会社や、弊社が開発するVexに興味を持っていただければ幸いです!
以上、OSCP取得奮闘記でした!