1. OSCP について
OSCP はペネトレーションテストの資格.ペネトレーションテスト関係で業界で一番メジャーな資格は間違いなく EC-Council の CEH で,その他には GIAC の GPEN などが認知されている.OSCP は比較的新しい資格 (といっても 2006 年には始まっていたらしい) で特に日本での認知度は高くないように思うが,海外で,特に実務に携わる人間には CEH 以上に評価されている資格のようだ.OSCP は Offensive Security によって運営されている.Offensive Security は Kali Linux (旧 BackTrack) や exploit-db.com などを運営している組織で,ペンテスターはほぼ間違いなく依存しているのではないだろうか.それで,OSCP の何が特徴的かというと,
- 試験は 24 時間 (!) のオンラインラボ試験で,環境内のターゲットに実際に攻撃を行いシステムに侵入する
- ラボ実施後にさらに 24 時間が与えられ,そこでレポートを書き上げて提出する
自分はこれらの評判などを調べた結果,OSCP を受験することを選んだ.結論から言ってとても有意義なものだった.OSCP は単なる試験対策の勉強で終わることはなく,勉強のなかで得た知識と経験は今後役立つだろうと感じている.もともと資格が好きな人間ではないのだけれども,これは良い資格だと本気で思っている.
選んだ理由のひとつに,価格の安さがある.最短だと 30 日のコース・ラボ環境へのアクセス + 試験 1 回で 800 USD. 1 週間のオンサイトのコースと試験を受けて 30 万円というような,会社の援助が前提な資格が多いなかで,これは違う.自分は 800 USD より多くかかってしまったが,自腹で受けた.
2. 難易度・前提知識
おそらくプロのペンテスターならば特に問題なく合格できるものだと思う.自分はセキュリティ関係の仕事をしているものの,ペネトレーションテストの経験はない状態で始めた.そんな自分にとっては,ものすごく難しかった.コース自体は前提知識がないところからでも試験範囲をカバーできるように作られているが (それこそ Bash の for ループの書き方などから始まる),それはあくまでトピックが存在することの紹介であって,それらを自由に使いこなせることは実質的に必要な前提知識になる.その観点で自分の考える前提知識は以下となる.
- 英語:
この業界全てのリソースは英語 (ロシア語・中国語なんかもわかると有利なのかもしれないが).コースも試験も提出するレポートも全部英語.必須. - Windows/Linux の CLI 操作とシステム管理:
両方をそれなりに知っているか,一方にかなり熟練していたほうが良い.わからないことは調べれば良い. - インターネットプロトコルの理解:
HTTP や SMTP あたりのプロトコルはパケットキャプチャを眺めて意味がわかるくらいの必要はある.あと Wireshark. 細かいことは必要に応じて調べれば良い. - プログラミング・スクリプティング:
経験があると有利なのは Bash と Python. それからたまに C と Ruby. 何かの言語をある程度やったことがあれば他の言語でもちょっとしたプログラムなら調べながらなんとかなる. - CPU (x86) の動作の理解:
そこまで深く理解している必要はないけれども,CPU はメモリに配置された命令を実行していくものだとか,CPU のレジスタとかメモリのセクションのイメージくらいはあったほうが良い.自分は過去に『はじめて読む 486』を読み終わらなかった経験があるが,それがかなり役に立った.
3. 自分の経緯
3.1. 最初の 30 日間
コースを始めたのは 2017 年 7 月後半.自分のスキルに根拠のない自信を持っていたために最短 30 日で登録.本当に最初のほうは Bash や Python のスクリプトの書き方から始まるので,1–2 日でコース資料の 1/3 程度は終了した.こりゃ余裕だと思って力を抜いて進めていたところ,ドラクエ 11 が発売され,ハマる.期限が近づいてきたためにあわててコース資料を全部終えた.そして気がついた.- 30 日の期間はコース資料を終えるための期間ではなく,それをふまえてラボ環境のターゲットを攻略する練習のための期間だった.
3.2. 2 回目の 30 日間
2017 年 11 月に 30 日間のラボアクセスを追加購入 (250 USD).コース資料は終わっているのでラボでの練習に集中したが,まったく攻略できない.Nmap が脆弱だと言っている脆弱性があって,PoC コードがあって (自分用の) shellcode を組み合わせたエクスプロイトコードが全然動かない.試しに Metasploit で同じ脆弱性をつくと,あっさりと動く.仕事の合間を縫ってトラブルシューティングを続け,ようやく原因がわかって動作させることができたのは 3 週間後.しかも原因はよくよく見てみるとコース資料に書いてあることだった.がっくりした.あっさりと 3 週間を無駄にしたように見えるかもしれないが,これは自分にとって重要な経験だった.その 3 週間いろいろな試行錯誤を繰り返していたからか,その後結構な確率でエクスプロイトを動作させることができるようになった.これを機に,何台かのターゲットは攻略することができるようになった.が,そのあたりで期間が終了.まだ試験を受ける状態になったとは思えなかった.
3.3. 3 回目の 15 日間
2018 年 1 月,年始から 15 日間のラボアクセスを購入 (150 USD).併せて,勉強に集中するためその期間は有給休暇を取得.このときになるとかなり面白いようにターゲットを攻略できるようになってきた.また,受験者用のフォーラムを見るようになった (それまではまったく見ていなかった).行き詰まったときには,そのフォーラムにヒントが書いてあるのでそれを足がかりに攻略することを繰り返した.ラボには結構な数のターゲットがあるが,最初の 1 週間までで累計半分程度のターゲットを攻略した.そろそろ受験の時だと思い,まだラボ期間は終わっていなかったが試験を受け,合格した.
4. 所感,Tips
情報収集は大事
OSCP に取り組む際には,特に受験者の体験談とかをいろいろと読むようになる (“OSCP review” で検索).これは序盤,ないし取り組み始める前に行っておいたほうが良い.体験談には技術的に直接役立つ情報はほとんどないが (この記事のように),貴重なラボ期間を有効に活用するためのヒントが豊富にある.ある程度学習が進むと,この体験談の類は読まなくなる.フォーラムを活用する
学習が進んできたときに技術的に役立つ情報源は,Offensive Security が運営する受験者のためのフォーラムになってくる.ここはスタッフが内容をモニタリングしていて,行き過ぎたヒントなどは <Spoiler> としてマスクされる.つまり,マスクされない程度のヒントまでを得たところからは自分で調べて解決できることが最低限受験者に求められるレベルだと考えて良いと思う.フォーラムには他の受験者がさまざまな書き込みをしており,自分で何かを尋ねる必要はない.自分も書き込みは 1 回もしていない.自分はフォーラムを読み始めたのが極めて遅かったが,もっと早い時期に読んでいたほうが効率的だったと思う.ただし,簡単にフォーラムにヒントを求めに行くことには慎重になったほうが良いと思う.自分で思い浮かぶことは全部やった,けれどもわからない,というときにヒントを見ると大抵「なんだ,そんなことだったのか」とがっくりする.このあまり愉快ではない経験がとにかく大事.
大変参考になりました。
返信削除