セキュリティミニキャンプ in 山梨 2023に参加させて頂きました。
お久しぶりです。みらい(@Minimal_Mirai)です。
先日、セキュリティミニキャンプ in 山梨 2023に参加させて頂きましたので参加記のようなものを書こうと思います。
はじめに
参加前のスペック
京都にある某情報系専門学校 4回生。
在学中は主にOffensive Securityについて学んでおり、今年の夏にOSCP(PEN-200)を取得しました。
次の目標として300レベルの資格を取りたいと考え、現在OSWE(Web-300)勉強中です。
Web周りの技術や知見をもっと知りたいと思っていたため、講義内容に興味を持ち応募させて頂きました。また開発系の知識の少なさは感じているところでそういったバックグラウンドがあると何をするにも、より理解度が上がると思いました。
受講内容について
1日目
1講座目:サイバー犯罪の現状と関連法・情報倫理について
技術を扱う際の法的リスクや倫理について学びました。
講師の方がなぜこういったセキュリティに興味を持つ人達が集まれる場を作り交流を推奨しているかというお話をされていて、失うもの(友人やコミュニティからの信頼、リスペクト)を持つことでダークサイドに傾くことを防げるという意見を述べられており、技術を学ぶ人間としてとても重要な内容だと感じました。
倫理的なラインをしっかりと持った人間と関わることが大切で、平然とラインを超えていく環境であれば少なからず悪い影響を受けるため注意しましょう。
コマンドを叩く前にsudo実行時の文言を思い起こすことが重要です。
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:#1) 他人のプライバシーを尊重すること。
#2) タイプする前に考えること。
#3) 大いなる力には大いなる責任が伴うこと。
2講座目:独自言語でサウンド・プログラミングとセキュリティ
独自言語によるサウンドプログラミングと、自作ツールや言語を公開する際のセキュリティについて学びました。
ライブコーディングで脆弱性について解説されており、とても迫力がありました。
さらっとカーネルのソースコードを読みに行って、〇〇の原因はここですねと言うような場面があり、こうやって深掘っていくんだなと思いました。
自分もPayload送信時やExploit実行時にエラーが出た時に深掘って原因となっている箇所までしっかりと特定する癖を付けないといけない(戒め)
2日目
3講座目:libFuzzerで始めるファジング入門
ファジングやソフトウェアテストについて、libFuzzerの実習と共に学びました。
かなり学術的な内容や文献に触れることができ、また今後CTFのの問題を解く際に学んだ内容を活かせないかなど色々と考えることが多かったです。
4講座目:ソースコード解析によるWebアプリケーションの脆弱性調査入門
CodeQLという静的解析ツールを動かしながら実際のOSSソフトウェアでの実例を学びました。
かなり本格的な内容で、課題に沿ってこれはこういう処理でこのクエリは〇〇を検出するためにこう書いているんだろうなという所が理解できる場面と理解が追いつかない場面があり、手を動かして追っていくだけで必死な部分がありました。
実際に自分で一からクエリを書いたり改善できるように今後もっと学んで積極的に使っていきたいです。リアルワールドのバグバウンティに興味があった自分にとって、とても興味深く面白い講座でした。
おそらく資料公開されていると思うので興味がある方はそちらをご参照ください。
感想
今までセキュリティキャンプ等に参加しておらず、キャンプ系は今回が初参加でした。
感想としては色々な分野のすごい人達がたくさん集まる場という印象がとても強く、モチベーションになります。
またセキュリティに特化している方と、他分野からセキュリティに興味を持った方など様々な動機から参加されている方がいるため、セキュリティ以外でも非常に学びが多かったです。
名刺交換されている方々も多く、名刺を作って持っていく方が良いなと感じました(自分も作らなくては...)。
まとめ
圧倒的にモチベーションの高い方々が多く、多方面で強い方々が沢山いる事をとてもリアルに感じることができ、とてもいい経験ができました。
講師やスタッフの方々、このような機会を頂き本当にありがとうございました!
セキュリティ・ミニキャンプ in 山梨 2023、とても楽しかったです!!
— みらい (@Minimal_Mirai) September 24, 2023
セキュリティもっと強くなれるよう頑張ります💪#seccamp pic.twitter.com/cV1VZefK2R
ペネトレ未経験の学生がOSCPに合格した話、学んだことや試験時のポイントについて
ご無沙汰しております。みらい(@Minimal_Mirai)です。
先日、OSCPの合格通知を頂きましたので合格記としてここまで学んだことや試験時の注意点について共有したいと思います。
OSCPを知ったきっかけ
まず私は現在22歳、情報系の専門学校4回(24卒)です。
私がOSCPを知ったのは、2021年頃でコロナ禍のリモート期間中でした。
この頃は、もっと手を動かして攻撃技術を学ぶことに集中しており、主にTryHackMeやHackTheBox、常設型のCTF攻略をメインに行なっていました。
その中でとある方のDiscordコミュニティにお誘い頂き、CTFにチーム参加させて頂いたりしていました。
かなりセキュリティに対するモチベーションの高い方々が多く、コミュニティ内でOSCPを取得された方が現れました。
英語試験+スキル感の違い+受講費用の高さといった点から社会人になったら取りたいなぁくらいに思っていました。
そんな時、某社にOSCPの90日間のラボアクセス可能なバウチャー(おそらく当時のドル円レートで15万円前後だったと思います)を購入して頂けることとなり、とても興奮していました。
本人確認には、免許証ではなくパスポートが必須ということですぐに琵琶湖沿いの滋賀県パスポートセンターに向かいました。
その後、Lab攻略開始までにtib3rius氏のLinux/Windows権限昇格に関する動画を購入しました。
また動画コンテツだけでなく、Try HackMeでBOFやAD関連の演習を行っていたことでスムーズにLab攻略に移れました。
OSCP開始前のスキルについて
当時のスキル感としては、インフラ・ネットワーク分野を専門的に学んでおり、Linuxはある程度触れて、Pythonの読み書きも問題ないレベルでした。
また元々セキュリティについては興味を持ちつつもCTFには参加して間もない頃であったため、実践的なマシンへの攻撃についてかじった程度の知識しかありませんでした。
Lab攻略開始
2021年8月頃からLabの攻略を開始。
Lab攻略時には、元よりチートシートの作成+各マシンの攻略記録を取ると良いとされていたため、OneNoteにまとめていきました。
基本的な部分は、HackTricksやGTFOBins等の既存リソースに頼りつつ、そこに記載のないツールの挙動やトラブルシューティング、TIPS的な事をメインにチートシートにまとめていきました。
途中チートシートとして利用していたOneNoteのバグを引いてしまい一部のページにアクセスできなくなり、色々なエディターを試しましたが最終的にはログの追いやすいGitBook or Notion辺りが最強だと思います。
特にGitBookの場合、GitHubリポジトリと連携できる点が便利でした。
Labマシンの難易度としては、慣れるまで少し分かりにくい部分もありましたが、触りどころが理解できるとそれほど難しくないと思います。
また一部のマシンは、不安定であったりExploitが上手く刺さらなかったりしてrevertしてから攻略を開始することを意識していました。
また古いOSで稼働しているマシンもあり、すぐにカーネルエクスプロイトで攻略してしまうと試験時に困りそうだったのでなるべく規定路線(Labマシン制作者が意図したであろう解法)での攻略を意識しました。
ただ最終手段としてのカーネルエクスプロイトの利用や、PoCのコンパイルみたいな部分は学ぶことも多いのでやっておくと良いのかなと思います。
当時はBOF問題が建材で、あまり解析経験のない低レイヤの部分も触れられて楽しかったです。
AD周りの知識も少なくTryHackMeやHackTheBoxで学んだり、Writeupを読んだりしていました。
また私の1度目のLab攻略時にはボーナスポイントの付与にラボレポートの提出が必須であったため(2023年現在はボーナスポイントの付与条件が改定されています)、攻略を優先し、ボーナスポイントは諦める形で進めました。
Lab攻略終了後は、IppSec氏の動画を見ながらHackTheBoxのマシンを攻略していく毎日でした。
HTBに関しては、OSCPを最短で攻略したいという場合必須でない気もしますが、様々なサービスに触れたり、それに付随するOSCPのカバー範囲外の攻撃手法等、学びが多いので興味があれば一度登録してみることをおすすめします。
1回目の試験
2022年2月に試験を受けることを決めました。
試験開始前に、試験監に「使用しないPCやモニター・デバイス類を全て部屋の外に持ち出すように」と指示されたため、少し時間を要しました。
正直ある程度の自信はあったのですが、ADセットを攻略しきれず完敗に終わりました。
後からログを見返すと、とても単純な点でかなり詰まっていたことが分かりました。
かなり高難易度のマシンが出題されるのではないかと身構えている節があり、winPEASany等の権限昇格に関するツールを回して出力を見ていても、あまりに単純すぎてそれはないだろう...という思い込みが敗因だったと思います。
これは今思えば的な所感ではあるのですが、個人的にOSCPで求められるのは、基礎的な列挙やPDF内の演習に沿う事だと思っていてどんな単純な箇所も思い込みで確認しないムーブを無くし、列挙していけば攻撃できるポイントは見つかるなと感じました。
RedditやDiscord等で「複雑に考えず、シンプルに考えろ」と言われる所以がよく理解できた試験でした。
PGを利用したスキル鍛錬とLabの延長
2022年3月からは、1度目の試験に失敗したため全体を通してもう少しEnum力を鍛えたほうが良いと考え、VulnHubやProving Groundsといったサービスでマシンを攻略していきました。
基本的には、以下のスプレッドシートにあるようなマシンがメインの攻略対象でした。
2回目の試験
そこから少し期間が空いてしまい、2023年2月 周りにボーナスポイント(10pt)さえあれば合格範囲だったという悔しい思いをされている方も何人かいらっしゃたので、とりあえず30日のLabアクセス延長権($356)と試験のリテイク($249)の購入を行いました。
米金利は絶賛上昇中、円安の中で学生がバウチャーを購入するとなると、決して安い資格ではないなと思いました。
また2023年3-4月頃にOSCPの内容が一部変更(BOFが廃止され、新しい内容となった2023コースが登場)された際に、Offsec側のシステム改修が入ったと思われ試験予約が行えないトラブルが発生しました。
Offsec側に問い合わせ、トラブルは解決しましたが当初予定していた時期よりも試験を遅らせる形になりました。
Lab攻略・エクササイズの演習は続け、結果的にボーナスポイントを獲得することができました。
2023年7月時点のボーナスポイントの付与条件は以下のとおりです。
- エクササイズで80%以上の解答を提出
- 30個のproof.txtの提出
またAD周りの認識を確認していき、コマンドをチートシートに追記していきました。
この点、AD周りの攻略法についてはOffsec公式からも動画が配信されており、どのような意図を持ってツールを動かすか解説されているためとても参考になりました。
以前よりもOffsec公式から配信される動画コンテンツが多く、興味があれば一度調べてみることをおすすめします。
色々とトラブルが発生しがちなファイル転送・ポートフォワードについては、いくつか代替手段を持っていた方が良いとご助言頂き、HackTricksに加え下記のサイトを参考にコマンド等をチートシートに追記させて頂きました。
またWindows周りの攻撃手法(mimikatzの利用・権限昇格/AV-Bypass)については、以下の2冊が非常に分かりやすく学びが多かったです。
試験本番
半ば精神論的ではあるのですが、23時間45分+24時間以内のレポート提出という試験時間が与えられている中で試されているのは技術力とEnum力、そして試行錯誤(Try Hader)だと自分に言い聞かせ、脆弱性は必ず盛り込まれているのでそれを見つけるだけだとシンプルに考えることを意識していました。
試験時間自体も長いのでどこかでダレるタイミングは出てくると思うのですが、適度な休憩(ウォーキングやランニング)とカフェインを取ることが私にとっては有効でした。
試験自体は、以下のような時間配分で行いました。
- 8時から試験開始
- 12時頃に昼休憩
- 13時頃に1台目のADマシンの初期シェルを獲得
- 13時半頃に1台目のADマシンの権限昇格を完了
- 16時頃にpivotを確立し、安定して他のADマシンにアクセスできるようになりました
- 17時頃には2台目のADマシンと、DCの侵害を完了しました
- 18時頃から19時半まで休憩
- 19時半頃から独立マシンの攻略を開始
- 翌日1時頃、中々独立マシンの初期シェルを獲得できず一度睡眠を取りました
- 翌日2時半頃に目覚め、再び独立マシンの攻略を開始
- 翌日3時頃には、初期シェルの取得+権限昇格が完了しました。この時点でADセット+独立マシン(local.txt+proof.txt)+ボーナスポイントの取得が完了しているため合格点に達しました
- そこから適度に休憩を挟みつつ、レポートのためのスクリーンショットを取ったりコマンドのログを見返したりして翌日7時45分に試験終了
試験中にautoreconを稼働させる影響からか自身のVMがクラッシュしたり、重くなる場面が何度かありました。
そのままレポートを書こうと思っていましたがアドレナリンが出て、興奮状態だったため、あまりよく眠れなかったこともあり試験終了後に再びシャワーを浴びて就寝。
14時頃に目覚め、15時から試験中のメモを見返してレポートを書き始めました。
私の場合、レポートに減点要素があれば即不合格になってしまうため、レポートを書く際は特に注意していました。
英文で書くこともあり普段以上に気をつける点も多く、翌日朝6時頃まで確認を繰り返しながらレポートが完成しました。
7時頃には全ての提出物をアップロードし、疲れからその後はグッタリしていました。
合格通知
試験終了後、5日後に合格通知が届きました。
注意点
- 年度末にはOffsecの試験制度が変更される可能性があり、Lab攻略・試験予約時期はズラした方が良さそう
- 試験前にどのように攻略していくか計画を立てて置くと良い
- 試験前に使用しないPC・モニター・デバイス類は部屋の外に出しておくこと
- 行き詰まっても1つのマシンに執着せず、勇気を持って切り替えること(Rabbit-Hole対策)
- マシンのrevertは大事
- 脆弱性は絶対に盛り込まれているので諦めない
学生の間にOSCPの取得を目指す方へ
個人的には、リモートでの授業・アルバイト・インターン等が当たり前になったことが追い風となり、移動時間がなくなりOSCPの学習に上手く充てられたと思います。
また学生(大学 or 専門学校等)の間にOSCP取得を目指す方は、1・2回生の間にがっつり勉強し始めると良いと思います。
理由として、私は2-3回生の期間にOSCPを学習していたため長期インターンシップやアルバイトに応募したり就活に向けての動きも取り始めていました。
どうしても忙しい時期はOSCPを保留する期間が出てしまい、ずるずると試験を引き伸ばしてしまった節があります(これは私自身の管理能力の無さなので今回の反省点です)。
意を決してLab+試験対策を再開しましたが、就活とOSCPの学習を並行して行う事は非常に体力がいるなというのが正直な感想で、ありがたい事に私は選考に通過する事が多く各社最終面接(現地)に行かせて頂くことが多かったため、そうした中でラップトップを抱えてホテルへ移動しVMを動かしてLab攻略を行うのはそこそこ疲れました。
当然、面接や選考結果がどうなるだろうという不安もある訳で同時並行するには負荷の高いタスクであったと思います。
まとめ
学生の間にOSCPを取得することを目標にしていたので、達成できたことを非常に嬉しく思います。
同じくOSCPの取得を目指す方に少しでも役立つことを願います。
記載内容に間違いがあればTwitter(@Minimal_Mirai)へのDM、またはコメントを頂けますと幸いです。
【随時更新】CTFでよく使用するツール等の紹介
こんにちは、みらい(@Minimal_Mirai)です。
今回は私がCTF(HTB, VulnHub, OSCP)でよく使うツール等の紹介です。同じような分野を学ぶ一助になれば幸いです。
第三者所有のサーバーや、管理外のネットワークに対する攻撃は絶対に行わないで下さい。
前提
先駆者の自動化ツールは頼るべきだが、内部の挙動やオプションをある程度把握するべきであり、何をしているか理解しながら脆弱性の列挙を行いましょう(自敬)。
個人的にはWeb系の脆弱性を列挙する際に使うツールの挙動を把握したい時などは、
Proxychains(場合によっては使用) -> BurpSuiteでキャプチャしてどんなPayloadを送信しているか見ると勉強になるのでおすすめします。
ポートスキャン
nmap
言わずとしれたポートスキャンツール、ただし実際の環境ではパケットに特徴がありFW等でブロックされるケースあり。
netcat
revシェルの取得で最も利用する事が多いが、nmapの出力の確認等で利用することがあります。
nc -nv <target-ip> <port>
また個人的には以下のコマンドで特定のポート番号から終了ポート番号までを指定し、ポートスキャンを行う事があります。
Web
Nikto
誤検知も多いが稼働しているWebサーバーによっては/usr/share/wordlists/dirbuster/.*等のsmall, midumサイズのファイルでは発見の遅れが発生する(最終行に近い)ページを列挙してくれたりする(MS-IS鯖であれば.aspxや.asp等の拡張子の付与等もした上で列挙してくれる)
DirBuster
言わずとしれたWebディレクトリの総当りツール、Webページを再帰的に列挙してくれる点がとても良い。
DIRBにも再帰的に列挙するオプションはあるがDirBusterの方をよく使用している。
SQL Map
SQL Injection等に特化した自動化ツール、場合によってはPHPのWebシェルをアップロード(--os-shell オプション)して自動で引っ張ってきてくれる。
便利ではあるが特に挙動を理解して使用する事をおすすめする。
またSQLiのPayloadに関しては以下3つの記事が大変参考になるのでおすすめします。
PayloadsAllTheThings/SQL Injection at master · swisskyrepo/PayloadsAllTheThings · GitHub
FFUF
ファジングツール、オプションが多く把握しきれていない点も多いが詳細な値を設定して結果をフィルタできる点が特徴的。
以下の記事が大変参考になる。
WEBファジングツール FFUFのすゝめ: NECセキュリティブログ | NEC
BurpSuite
Webのパケットキャプチャ等で重宝しているツール。
その他、Proxychainsと合わせて使用する事が多い。
ProxyChains
一般的なプロキシ用途からSSHポートフォワード等、汎用性の高いツール。
proxychains-ng | Kali Linux Tools
Windows権限昇格
winpeas.exe
権限昇格に繋がる脆弱性を自動で列挙してくれる。
オプションも含め理解するとかなり便利なツールの1つ。
PEASS-ng/winPEAS at master · carlospolop/PEASS-ng · GitHub
PowerSploit系
PowerShellを使用した攻撃系ツール全般。
権限昇格に繋がる脆弱性の列挙(PowerUp.ps1)やリバースシェル、AD鯖への攻撃に使用する事が多い。
GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework
Mimikatz
サイバー界のAK47の異名を持つ有名ツール。
大体の操作には管理者権限, SeDebugPrivilege権限等が必要なため、権限昇格後のローカル/DCユーザー等の列挙に使用する事が多い。
また一般的な環境(FW/AVが稼働している)では検知されるため、Bypassする方法やdump等についても頭に入れておくと良い。
以下聖書
wes.py
systeminfoコマンドの出力結果やWindowsのバージョン等からどのカーネルエクスプロイトに対して脆弱か判定してくれる。
攻撃対象マシンで動き回る必要がなく、検知リスクを回避できるため便利。
GitHub - bitsadmin/wesng: Windows Exploit Suggester - Next Generation
Juicy Potato
Windows権限昇格ツール。
使用には条件を満たしている必要あり。
Abusing Token Privileges For Windows Local Privilege Escalation
SharpUp
個人的にあまり使用する頻度は高くないが一応。
GitHub - GhostPack/SharpUp: SharpUp is a C# port of various PowerUp functionality.
BloodHound
AD系の情報を整理する時に利用する。
Apexとの関連はありません。
以下の記事と動画がとても参考になりました。
BloodHoundを使用したWindows Active Directory環境の分析 - Qiita
chisel.exe
ポートフォワードする際に利用。
バイナリから起動するだけなのでかなり楽。
使用できない環境も存在するため、netshを利用したポートフォワード等も覚えておくことをおすすめします。
Pivoting: Setting up a port proxy with netsh on Windows - David Hamann
pth-winexec / evil-winrm
ユーザーの資格情報でログインを試したい場合や、Pass-The-Hashでrevシェルを取得したい際等に利用。
LISTENは通常5985ポートを利用する。
5985,5986 - Pentesting WinRM - HackTricks
icaclsコマンド / accesschk.exe
パーミッション設定の確認に利用。
Security Professionals Network Inc. - 【SPN通信】Windowsオブジェクトのアクセス権を表示するAccessChk
AccessChk - Windows Sysinternals | Microsoft Docs
Linux権限昇格
linpeas.sh
言わずとしれた権限昇格ツール、オプションも含め覚えておくと重宝すること間違いなし。
PEASS-ng/linPEAS at master · carlospolop/PEASS-ng · GitHub
GTFOBins
Linux上でSUID/SGIDが付与されているアプリケーションから権限昇格する手法がまとめられている。
SUID/SGIDが付与されているアプリケーションの列挙はfindコマンドやlinpeas.shから出力されたものを見る事が多いです。
意外なものも列挙されていたりして、見るだけでも勉強になる。
SSHポートフォワード(Proxychains併用)
怪しげなプロセスがローカルポートで動いていたり、ネットワークの横展開する際に役立つ。
その他
SMB Clientを用いた再帰的なファイルダウンロード
SMB Map
SMBの列挙を行うツール。
知り得た資格情報の流用や、SMBディレクトリのR/W権限の確認で使うことが多い。
crackmapexec
SMBポートが開放されている場合、Windowsのバージョンやビルド番号まで列挙するため非常に有用なツール。
crackmapexec | Kali Linux Tools
・OS情報の列挙
metasploit
便利すぎる。ただしOSCP試験では使用制限があるため、頼りすぎず学習することをおすすめする。