OSCPに合格できたので所感とか個人的にやったこととか書いとく
極力長くならない程度で要点(以下の3点)と私のパターンを書いとく
- Preparation
- Exam
- Reporting
Penetration Testingの仕事をする場合にもなにかが効いてくるかもしれない. 知らんけど
スキル
- 診断員, RedTeamerのアラサー
- Web診断がメイン, バイナリはiOSで見る程度, マルウェア解析は遠い昔にやったことがある
- Web/NW/iOS/Android/メール訓練の診断提供側はなんとなくわかる
- 2年ぐらい前に初めてNW診断にちゃんと触れた, 同時にペネトレも勉強し始めた
- RedTeam関連はVBA/VBSを使ってAV/EDRと戦ってることが多い
- 英語スキルは読み書き聞きならなんとなく, べしゃり暮らせない
Preparation
2ヶ月ぐらいで以下をやった
Penetration
VulnHub
Penetration Testingの入り, アイデア補填として良コンテンツ, Lab/Exam攻略を考えると物足りない. 「ペネトレって具体的にどうやっていけばいいのかわからん」「PenetrationTestingやってたけどちょっと間が空いちゃった」みたいなシチュエーションで感覚を掴む/取り戻すのに有用かも. 4,5台やった.
HackTheBox
Exam対策と考えると良環境, easy-mediumがなんなく解けてLogging & ReportingのトレーニングをしておくとExamに直接効く. medium以上はExamの一番難しいmachine向けにいいのかもしれない. わたしはeasy-mediumを3,4台, difficult以上はやってない.
Lab
良環境だがExamで出ないタイプがある, 知見増と検証を目的と考えれば使わない手はない. 20台ぐらいしか触れなかった. もうちょい触りたい
Reporting
- High-level report, key findings - recommendation matrix, Detailsのテンプレを用意
- Detailsに関してはFindings name, Description, Recommendation, logs, Walkthroughの枠とテンプレを各マシン分用意
- 外資の診断チームにいるのでEnglish reportを参考にしまくった
- 各種画像, Findingsに対応したRecommendations, Referencesの3つを載せればほぼ完成, という程度を目指して用意した(Reporting時はどうせ疲れて頭が働かないと予想)
Attacking Methodology
- Local WikiにInitial attack vector/Priv Esc/Reverse shell/Persistenceの枠を作って、コマンド/ログレベルでメモしまくった. イメージはMITRE ATT&CKの詳細版
- VulnHub/HackTheBoxのWriteupを読み漁った. 手法, コマンドを参照するのではなく, 調査方針等自分にない観点を漁る目的
- Attacking flowを思いつく限り用意. smb mount > download ssh key > ssh login > (goto priv esc section), traversal/lfi config file > Web admin > login > edit php(add reverse shell) > (goto priv esc section)とかとか. 観点漏れを防ぐ目的
直前の1週間
- ほぼ艦これのイベントやってた. 今回の規模どうかしてる(All甲, 第4マップまで攻略情報参照禁止縛り, この記事書いてる時は最終海域最後のボスに挑戦中)
- 前日にBoFのおさらいとReportingの練習&テンプレの更新
- 緊張して疲れるのが一番まずいのでリラックスして挑むことを心がけた. 艦これイベントのおかげで精神にキた
Exam
- 事前に目標のタイムテーブルを作成した. 以下みたいな感じ
- AM 1時開始、5時までに3台(10pt, 20 pt, BoF)の攻略&ログ取得, Reportへのざっくりな記載まで終えた, 気分転換目的でジョギングしてシャワー浴びて30分ぐらい横になった. ここではアドレナリンドバドバであまり寝れなかった(失敗)
- 6 AM, 残り 20 pt 一台と25 pt 一台でまったり気楽にやった. 20 ptをざっとみたもののInitial accessで使えそうなものがなかったのでもう一回AutoReconをかけたら, 初回での検出漏れっぽいPortが出てきた.
- 8 AM, 出てきたPortをみてみたらHackTheBoxでやったパターンと同じやつだった(??「ゼミでやったところだ!」). その後local.txtはすぐ取れたもののPriv escでハマったので3時間ぐらい寝た. 睡眠リラックス大事.
- 11 AM, 起床後にもう一回シャワー浴びて目覚ましがてら 25pt をやった. AutoReconの結果がイミフすぎてもう一回スキャンし始める.
- 0 PM, 20 ptでPriv Escに使えそうなやつを見つけたのでいろいろ試し始める
- 3 PM, Priv esc - Attacking flowの3,4番目に試したやつで管理者権限をとる. ここで合計 75pt をGet(残り10時間). Reportingを始めてログの再取得等に時間を使う
- 5 PM, 25ptに再度向き合う, 相変わらずイミフだった&頭が働いてなかったので不貞寝(7 PM), 起きたら11 PMだった(残り2時間足らず)
- 11 PM -, あくびしながらいろいろ考えてみたものの進まずそのまま終了. 今考えるとJavaでHttpヘッダになんか突っ込む系だったかもしれない
Reporting
- Exam中にちょこちょこやってたので2 AMぐらいまで少し手直しして, その後就寝
- 11 AMに起きる, Reporting再開
- 2 PM, 90%完成までいった. その後散髪やら買い物やらジョギングしに出かけたりしてリフレッシュ
- 5 PM, Review&艦これ(この辺から酒飲みながらやってた)&Reviewやって提出, 最終的に9 PMにアップロードした
- Codeとかも全部載せ, 4 machinesの完全攻略と「誰でも攻撃の意図を理解し, 再現できること」を目標としたレポートの構成にした結果, 70 pagesちょうどまでいった. 全クリしてたら 100 pagesいってたかもしれない.
- このボタンを押す, このコマンドでこれを手に入れる, この情報はこれに役立つ, ○○を目指して××から行うなどなど, ExploitだけでなくExploitに使う情報の取得, 出力, その意図とかもだいたい書いた, おかげで時間かかってた
所感
- 結局、準備(特にReport)とggr力と運だと思う. 「ゼミで(ry」は運としか言えない. 事前にHackTheBoxとかにたくさんチャレンジしておけば本番でぶち当たる確率を上げることはできるかもしれない
- Max 75ptで合格できたという点からReportingはほぼ減点なしだったんだと思う. 誰でも攻撃の意図を理解でき, かつ再現できるレベルを目指して手順を残すといいのかもしれない
- 報告書の構成もUSのものに沿って作成していたのでそれが採点者に刺さった可能性も
以上, Happy hacking