OSDA合格!試験勉強から当日のスケジュール、そしてトラブル対応まで
田村 由佳
はじめに
Security Operation Center(SOC)の田村由佳です。セキュリティアナリスト向けの認定資格としてOffSec社が2023年4月に新しく始めたOffSec Defense Analyst(OSDA)を受験し、無事合格することができましたので受験記として情報を共有したいと思います。
受験時のスキル・経歴
新卒で情報セキュリティベンダーに入社し、セキュリティ部署とはほぼ関係ないインフラエンジニアを約5年やっていました。その後、当社に入社し、3年ほどログ分析基盤周りの運用や構築業務を行いました。現在はSOCで商用環境の監視業務やハンティング業務を2年ほど担当している初級アナリストです。
受験時に保有していたセキュリティ系の資格としては、下記でした。
・CompTIA Security+
・GSEC
・(未登録)情報安全確保支援士
ちなみに、英語については読むことはなんとなくできるけど、リスニング・スピーキングは壊滅的、ライティングは翻訳ツールにお任せレベルです。
プライベートでは絶賛イヤイヤ期男児(2歳)を育てつつ、第2子出産に向けて5月から産休/育休の取得を予定しています。
OSDAとは
OSDAとは先述の通り、OffSec社が新たに提供開始したセキュリティアナリスト向けの認定資格です。試験の内容としては、10フェーズの攻撃を行い、攻撃の痕跡をSIEMに格納されているログから見つけ出し、レポートを作成するというものになります。
SIEMはElastic SearchとKibanaを使用しており、SIEMでの分析時間は23時間45分です。その後24時間かけて英語でレポートを作成します。
レポートは再現性の高いものが求められるので、他のアナリストがみた時に再現できるよう実際の分析に使用した検索クエリや証跡となるキャプチャの添付が求められます。
OSDA認定試験では75点以上取得する必要があります。ただ、結果は合格か不合格かだけなので、自分が何点で合格したのかはわかりません。不合格の場合は個別で問い合わせをすると不合格となった理由などを教えてくれることもあるようです。
受験のきっかけ
受験のきっかけは、端的にいうと上司に勧められたからです。OffSecの認定資格=レッドチーム向けと思っていたので、レッドチーム系スキルのない私には全然視野に入っていなかったのですが、ログの分析に興味があることを知っていた上司に勧められ、大変そうだけど面白そうと思い、受験することにしました。
試験勉強
OffSec社が提供するオンライン教材のパッケージには基本的に3パターンあります。今回は1年間Labが使用でき、試験を2回受験できるLearn Oneのバウチャーを購入し、コースの受講を開始しました。
(https://www.offsec.com/courses/soc-200/)
ここでは、実際の勉強期間や方法などを共有します。
期間/時間
勉強期間は4ヶ月ほどでした。子供がまだ小さいこともあり、1日あたりの勉強時間は子供が寝た後の2~4時間でした。
学習コンテンツ
OSDA関連のコンテンツとしては、Learn Oneのバウチャーには下記のコースが含まれています。
- SOC-100
- SOC-200
- Challenge Lab
- OSA-SOC-200
SOC-100
WindowsやLinux、ネットワーク等の基礎的な内容になります。私は元々インフラエンジニアとして触っていたので受講しませんでした。ただ、SOC-200を受講する上での前提知識になっているので、自信のない人は受講をした方が良いかもしれません。
(https://www.offsec.com/products/fundamentals/)
SOC-200
OSDAの肝となるコースです。WindowsやLinuxに対しての攻撃手法を学び、ログから攻撃の痕跡を発見する手法を学べます。攻撃手法自体も有名なものを取り扱っており、難易度としては、それほど高度な内容ではありませんでした。
試験ではSIEMで検索しますが、コース内ではSIEMを使わず攻撃の痕跡を発見するためのPowershellを作成したり、Pythonプログラムを作成することもありました。
テキストはWebで提供されており、ブラウザの翻訳ツールが使用できたため英語が苦手でも困ることはそれほどありませんでした。ただ、各セクションにはLabがついており、回答を入力するようになっているのですが、翻訳と原文でニュアンスの違いがあるため、何を回答すれば良いかわからないことがそれなりにありました。
また、テキストには解説動画もついているため、動画を見ながら進めることもできます。全てを見たわけではありませんが、解説動画の中で説明されている内容は、テキストに記載の内容とほぼ同じで新しい情報はなさそうだったので、私の場合はリスニングがダメダメなのもあり、あまり解説動画を見ませんでした。各セクションのLabがうまくいかない場合に参考程度に見たくらいでした。
(https://www.offsec.com/courses/soc-200/)
Challenge Lab
試験と同じ形式のLabで、全部でChallenge1~13のLabが用意されています。各Lab毎に攻撃Phaseが用意されており、Challenge1から徐々に難易度が上がっていく(攻撃Phaseの数が増える)ようでした。実行すると、そのChallengeの環境の構成やIPアドレスが提供され、その情報を元に調査を開始する流れでした。
Challenge Labでは、テキスト内では学びきれなかった内容も学ぶことができるようになっていました。(テキストに載っていない攻撃や調査が必要になる)
各Labの答え合わせは基本的にDiscordのbotで確認しました。botの内容は荒めなので、内容に納得いかない場合やChallengeがうまく動作しない場合はDiscordでStudent Menterといわれるサポートしてくれる人たちに質問し、解決しました。
ただ、それでも1つのChallengeに関しては解決できず(Lab環境側に問題があったため)、確認すると言われてから音沙汰のない状態となっています。その間に他の受講者から「同じ問題に直面している。その後どうなった?」や、「こうやればいいよ!」というアドバイスなどのDMがきたりして、ちょっとしたやりとりを楽しみながら学べました。
こんな感じでアドバイスもらったり
同じ問題に直面した方からDMをもらったり(若干の愚痴入り)しました。
私としてはChallenge Labは非常に有用でした。Challenge1や2などの序盤では、難易度は高くないにも関わらず、どこから調査を開始して良いかわからない、といった状況があったのですが、Challenge13を終える頃には、ある程度のパターンがわかるようになり、調査の勘所のようなものがわかるようになりました。
本番の試験ではレポートの提出が必要になりますが、Discordで依頼すれば、Challenge Labで作成したレポートの添削もしてくれます。私は時間がなくレポートの添削まではしてもらいませんでしたが、Discordを見ていると添削依頼をしている受講者も結構いました。
OSA-SOC-200
Challenge Labの解説動画です。一部のChallengeのみとはなりますが、Challenge Labの調査方法や攻撃の流れなどの解説をしてくれています。
Challenge Labを自力でやった際、どこから手をつけていいかわからないなどがある場合は、この動画を見てから実施すると理解が深まると思います。
また、この動画の中で使用しているダッシュボードやサイトもDiscordに載せてくれているので、事前にDiscordを確認し、本番試験時に利用すると効率的に調査が開始できると思います。
勉強にあたって思ったこと
SOC-200については、SIEMを使用する機会が少なく(SIEMパートのみ)、PowershellやPythonなどが多く、そのスクリプトを正確に作成することに時間がかかってしまったように思います。どのログを見たら良いかを学ぶには良いと思いますが、試験はSIEMでの調査であり、PowershellやPythonは関係ないため力の入れどころを見極める必要があると思いました。
動画については確認した限りでは新しい情報は出ていませんでしたが、CPEポイントを取得した場合はコースの80%以上を完了している必要があるため、そのあたりを考慮の上で動画は活用するのが良いと思いました。
実機試験
実機試験では10個の攻撃Phaseがあります。それぞれのPhaseを自分のタイミングで実行し、攻撃の痕跡をSIEMに取り込まれたログから調査する必要があります。
実機試験は監督付き試験となるため、試験を受ける部屋の準備や、本人確認をする必要があります。
事前準備
受験にあたり、下記を事前に準備しました。
準備物 |
備考 |
パスポート |
本人確認資料は公的機関が発行した英語で記載されているものが必要なので、大体の日本人はパスポートになると思います。 |
Webカメラ (PC内蔵でも最悪大丈夫) |
試験開始時に試験監督に部屋を見せる必要があります。その際、部屋全体を映す必要があるので、外付けのWebカメラがあると映しやすくて便利です。PC内蔵でも大丈夫ですが、PCを持って部屋の中でグルグル回ることになります。 |
部屋の準備 |
不要なモニターの撤去や使用しない電子デバイスの撤去をしました。試験監督に部屋を見せる必要があるのでお片付けとお掃除も行いました。 |
KaliLinux |
試験環境はUTCなので時刻設定をUTCにしておくと、攻撃を実行した時刻がわかりやすいです。 |
当日のタイムスケジュール
実機試験当日は下記のスケジュールで動きました。試験はUTCなどの海外の時刻が標準になるので日本時間だと夕方や深夜開始になることが多いです。私は夕方から試験が開始される時間帯を選択しました。
ちなみに、子供は義実家にお泊まりしてもらいました。
時刻 |
概要 |
内容 |
16:45 |
監督ツールへ接続/トラブル発生① |
指定された監督ツールに接続し、下記を行いました。 ・本人確認 ・試験環境確認(部屋の確認) ・画面の共有 画面が試験監督に共有されず、時間が流れる |
17:50 |
試験開始/調査準備 |
SIEMに取り込まれているログの確認 事前に作成していたダッシュボードやアラートのインポートを行う |
18:10 |
Phase1実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
19:00 |
Phase2実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
20:00 |
Phase3実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
22:00 |
休憩 |
夜ご飯やお風呂など |
23:20 |
Phase4実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
01:25 |
Phase5実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
02:00 |
トラブル発生② |
Phase6を実行後、攻撃の痕跡を見失ったと思い、どこかに痕跡がないか調査を実施。 どこにもなく、おかしいと思ったため、試験監督やサポートに問い合わせを行い、環境が再構築されることに。待機の時間。 |
05:00 |
Phase6実行 |
環境の再構築が完了し、サポートチームにてPhase6が実行された旨の連絡をうけ、調査を再開。 |
06:00 |
攻撃実施時刻の修正 |
Phase1~6までサポートチームによって実行されたため、攻撃実行時刻が不明に。。 各Phaseがいつ実行されたのか再確認。 |
07:00 |
気絶 |
このあたりで限界が来て寝ました。 |
08:30 |
Phase7実行 |
ちょっと寝てスッキリしたので再開。 調査とキャプチャの取得、実行した検索クエリの記録 |
09:30 |
Phase8実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
10:30 |
Phase9実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
11:00 |
Phase10実行 |
調査とキャプチャの取得、実行した検索クエリの記録 |
12:00 |
休憩 |
とりあえず全Phaseが完了したので一安心し昼食タイム |
13:00-18:45 |
見直し、 キャプチャの取得確認 |
自信のないPhaseの再確認やキャプチャの取得漏れの確認 |
各Phaseはおおよそ1~2時間で完了できる内容でした。実機試験では、下記を意識しました。
- 攻撃Phaseを実行した時刻を記録すること
- キャプチャをしっかり取得すること
- 実行した検索クエリを記録すること
OSDAではログから痕跡を見つける必要があるため、ある程度の推測も必要になってきます。例えば、「とあるファイル(例:test.txt)が攻撃者に取得されており、その後、不審なログインが確認された」場合、test.txtに認証情報が記載されていて、その情報を用いて攻撃者がログインしてきた可能性がある。など、絶対的な根拠はないけれど、攻撃者の手に重要な情報が渡った可能性があるものとして調査を進めていく必要がありました。
また、攻撃に使用されるツールに対する理解も必要でした(PSEXECが実行されているということは何が起きているかを理解するなど)。試験中はインターネットで情報を集めることも可能なので、足りない知識はインターネットかSOC-200のテキストで補いました。
ちなみに、試験中はSNSやAIの使用は禁止されていますが、インターネットでの検索は可能です。
発生した2つのトラブル
トラブル①:画面が試験監督に共有されない
試験の際、用意されている監督試験ツールにログインし、手順に沿って自分が使用する全ての画面を試験監督に共有する必要があるのですが、何度やっても同じ画面が共有されている、と言われました。
私が試験に使用したホストマシンはMacでしたが、使用する推奨ブラウザはChromeしか入れていませんでした。(Safariは非推奨)この問題に対応するために、急遽Firefoxをインストールし、ブラウザを変えることで全ての画面が試験監督に共有され、試験を受けることができるようになりました。この時点で試験開始から1時間ほど経過していました。
トラブル②:攻撃ログが出力されない
事前に他の方のOSDAの体験ブログを読んだ際、攻撃ログが出力されないトラブルがあった方もいるようでした。しかし、まさか自分も同じトラブルにあうとは思っていませんでした。以下トラブル発生時の詳細になります。
時刻 |
実施内容 |
詳細 |
2:00 |
Phase6を実行/攻撃ログが見つからない |
自分が攻撃ログを見つけられないのか、ログが出力されていないのかわからないため、切り分け調査を実施 |
3:00 -3:20 |
試験監督にチャットで問い合わせ |
攻撃ログが出ていない旨の問い合わせを実施するも、「試験に関することは回答できない」的な回答をもらう |
試験サポート用チャットで問い合わせ |
試験監督に事象を説明するように言われる |
|
試験監督にチャットで再度問い合わせ |
試験サポート用チャットで言われたことを伝え、「試験環境について調査してほしい」と依頼し、受領してもらえる |
|
3:30 |
試験環境の再構築開始 |
調査の結果、試験環境の再構築が必要と判断され、再構築が開始される |
5:00 |
再構築が完了/Phase6の調査開始 |
再構築が完了しPhase6までサポートチームにて実行される |
6:00 |
攻撃実施時刻の修正 |
再構築によってPhase1~6が再実行されたため、各Phase実行時刻を再調査 |
実際にトラブルに直面すると、「攻撃のログが出ていないのか」「自分が攻撃の痕跡を見つけられていないのか」がわからず切り分け調査に時間を使ってしまいました。
その後、試験監督にチャットとサポートチャットへの問い合わせで板挟みのような状態になり、自分の英語力と状況(この時すでに深夜3時)に軽く絶望しました。最終的には再度試験監督にチャットをし、試験環境を調査してもらうことができ、環境を再構築してもらうことでこのトラブルは解決しました。
再構築後はサポートチームが各Phaseをいつ実施したのかわからず、結局各Phaseが何時に実行されたのかを調査する必要が出てきてしまい、ここでも時間ロスが発生しました。
このトラブルの補填として実機試験の2時間の延長が認められましたが、レポート提出時間の延長は認められず、22時間でレポートを作成する必要が出てきてしまい、相当焦りました。
このトラブルで合計4時間近く使ってしまいました。いつ連絡がくるかわからないため、仮眠をとるわけにもいかず、かといって試験も進められない状態だったので、このトラブル対応中が一番メンタルにくる時間帯でした。
今後、この試験を受ける方は、何かおかしいと思ったらとりあえず試験監督にチャットしてみるのが良いと思います。最初は試験に関する回答は〜的なことを言われる可能性がありますが、言い方を変えたりすると意外と対応してくれたりします。
レポート作成
トラブルがありつつもなんとか実機試験が終わり、その後のレポート作成を行いました。
レポート作成のスケジュールについては下記の通りです。
時刻 |
概要 |
内容 |
20:00 |
日本語で大雑把な内容を記載 |
各Phaseでどのような種類の攻撃(ブルートフォースなど)があったかを大まかに記載 |
00:00 |
就寝 |
2回目の限界を迎えて就寝 |
08:00 |
日本語レポート作成 |
思ったよりも寝てしまい、焦りながら日本語でレポートを作成する |
12:00 |
キャプチャ挿入 |
実機試験の際に取得したキャプチャをトリミングしながらレポートに挿入していく |
14:00 |
英訳 |
全てを英訳 |
16:44 |
レポート提出 |
圧縮し、指定サイトにアップロード |
レポートについては、OffSec社にてテンプレートが用意されていたのでそのテンプレートを参考に作成していきました。
まずは日本語でレポート作成を行いました。日本語でなんとなく作成が終わったら、翻訳ツールで英語に翻訳していきました。私は英語に自信がなかったので、キャプチャと検索クエリなどを多用し、「再現度を高く」ということを意識しレポートを作成しました。
また、試験では試験環境の構成やIPアドレスといった情報は提供されないため、レポートにどのマシンが存在し、その中のどのマシンが侵害されたのか、といった情報を付与しました。
レポート作成時に気がついたのですが、実機試験中に十分なほどキャプチャを取得したつもりが、実は足りないキャプチャがいくつかあり、エビデンス不足になってしまう箇所もありました。十分キャプチャを取得したと思っても、足りないことがあるので、試験に余裕があればなんとなくでよいのでレポートに記載しながらキャプチャを取得していければよかったと思いました。
提出
なんとかレポートの作成が終わったのが提出の30分前と言うギリギリのタイミングでした。提出の際は7-Zipで圧縮し、指定されたアップロードサイトへログインの上アップロードする必要があるのですが、焦りすぎてしまい7-Zipの圧縮手順を見間違えたり、アップロードサイトのログインパスワード(MD5ハッシュが提供されている)を入力すべきところにVPNのパスワードを入れてアップロードできない、などが発生し、なんとか提出が完了したのは試験終了の1分前でした。余裕を持って行動することの大切さが身に染みました。。
発表/感想
試験の結果は提出から3日後にきました。フェーズによっては痕跡を探しきれなかったと思っているところもあり、自信はなかったのですが、無事に合格の連絡をいただくことができとても嬉しかったです。
試験を受けてみての感想ですが、難易度としてはそれほど高くないと思いました。 SOC-200とChallenge Labを完了していれば、試験の内容は調査可能な知識が付くと思います。全体的な攻撃の流れや侵害されたマシンの整理、わかっている情報(痕跡が探しきれていなくても)を再現度高くレポートに残すことを意識することで合格できる可能性が上がるのかなと思います。
約48時間の試験は体力的には辛いものもあり、子供の乱入などを危惧していましたが、家族や職場の協力でなんとか乗り切ることができました。ご協力いただいたみなさま、ありがとうございました。