ひとこと

― 今日のひとこと ―
起業しました。
(2024.4.24)

2020年6月11日木曜日

OSCP学習 #1

2020年4月末頃、会社の上司(趣味が"冒険"のアメリカ人。よくジャングルに消える)から「OSCP受けたい人いたら経費で受けられるよ」と連絡があり、もともと自分で受けるつもりだったのでこれ幸いと申し込み。約10万円浮きました。

OSCPというのは海外のセキュリティに関する民間資格で、サイバー攻撃に特化したハンズオンの試験が行われるなかなか難しいと評判のもの。
試験は48時間あり、最初の24時間で5台のマシンをハッキングして管理者権限を取り、次の24時間でその過程についてレポート(全部英語)を作成し提出するというもの。
うーんめんどくさい。

Kioptrixの記事は#2を書く気力がないのでOSCPの方をメモしておこう。。

----------------------------------------------------------------------------

OSCPはいきなり受けることもできるが、基本的にはラボ利用権を購入し、ラボで学習した上で受験する形になる。
利用権は30日/60日/90日から選択し、その期間内はラボのマシンに攻撃を仕掛けることができる。
また、権利発生初日にテキスト(これも全部英語)がPDFで送られてくるので、それを読んで基礎を学習することができる。

自分は5月9日から90日間で申し込んでおり、6月5日時点でテキスト読了&6月10日時点でラボ4台攻略済みという状態。

----------------------------------------------------------------------------

■テキストについて

850ページ超あります。以前は350ページ程度だったらしいが最近アップデートされたとか。
複数のブログ等では、以前のバージョンでの受験記なんかで「1か月かけて読みました」という記述を目にするが、今や850ページ・・・
全部英語だしふつーに読んでたら2か月くらいかかりそうだぞ。

ということで、まずテキストを機械翻訳。
会社がNDA付きで導入している翻訳サービスを利用。翻訳対象ファイルのサイズ制限によりテキストを8分割して翻訳依頼キューに登録。
翻訳完了通知が来たのが3日後の朝。8つのうち1つは翻訳不可とのエラーだったので、それは更に2分割して再度翻訳依頼。
次の朝には2つのうち1つは翻訳できたので(もう1つはやはりエラー)、そのまま読み進めることに。

内容としては、Bashの使い方やfind, vi, grep等とそれに類する便利なコマンドの利用方法にはじまり、
DNSからのホスト名列挙やポートスキャン等のEnumerationテクニックや、
RFIやSQLインジェクション等のWeb系、Active Directory、ラテラルムーブメント等の技術やツールについてなど、
25章に渡って解説されるもの。
途中途中でエクササイズと称したハンズオンがあり、それをやると理解が深まる。やらなくてもいい。

仕事が忙しかった日や2度の抜歯で悶え苦しんでいた期間を除き、だいたい20日くらいかけて読了した。

自分の場合は、体感的には6割くらいは既知の内容だったものの、Enumerationの知見が広がったこと、
ADやラテラルムーブメント等のRedteam的な部分を多少体系的に理解できたのがよかった。
ただ、バッファオーバーフローについてはもう少し手を動かしてスムーズに実践できるようになるべきだな。

あらゆる技術を実践するにあたり、自分の得意な部分(完全に自力でできること)や不得手な分野(何かを参考にしないと自力でできないこと)を細かく確認できたと思う。

----------------------------------------------------------------------------

■ラボについて

ちゃんと数えてないけど多分50以上のIPがあります。
VPNでラボのネットワークに繋ぎ、任意のIPを攻撃し、管理者権限またはシステム権限を取得し、Shellを得て、特定のテキストファイルを探すという流れ。

IPによってはどうも指定されたテキストファイル以外にも重要情報があるそうで、そこについてはノーヒント。
とりあえず、今のところ自分は指定のテキストファイルだけを探すようにしている。
情報を見つける見つけないよりも高権限のShellを奪うまでの技術習得を優先したいので。

試験本番ではMetasploitやSqlMap等の一部の強力なツールと商用ソフトウェアの利用が制限ないし禁止される。
https://support.offensive-security.com/oscp-exam-guide/#exam-restrictions:-metasploit

理由は「プロセスの自動化ではなく脆弱性の特定と悪用に関するスキルを評価するため」らしい。
ラボ環境においては学習のため積極的にそれらのツールを使うべきとテキストに記載されているとはいえ、
自分はラボでも基本的にそれらは使わないか、使ったとしてもその後に使わないパターンでも攻略するようにしている。

例えば、ラボのとあるIPを攻略するにあたり、どうもSMBがあやしいという時。
Enumerationの結果EternalBlueの脆弱性がありそうだということがわかるも、
カーネルレベルのメモリの脆弱性をネットワーク経由で悪用する(=そのExploitを作れる)ほどの力も時間もない。いやある方がおかしいけど。
Webで見つけたExploitの概要を読んでもピンとこない。
ここで、MetasploitのEternalBlueに関するExploitモジュールを使えばシステム権限のShellをスムーズに取得することはできた。
その後Githubで改めてExploitを見つけ、単発的なコード実行ができることは確認した。
それ単体ではShellが取れないので、「ただファイルを作成するだけ」というPythonのExploitを他で見つけ、FTPコマンドを持つテキストファイルを作成するよう書き換えた。
(1つ目のExploitで繰り返しechoリダイレクトしてもよかったがスマートではないしレスポンス時間に難があった)
自身の環境でFTPサービスを起動し、nc.exeやwhoami.exeをFTP用ディレクトリに準備し、Shell用のポートをlistenしておく。
その後、2つ目のExploitで作成したFTPコマンドファイルを使って、1つ目のExploitでFTPを実行し、自身の環境からexeファイルをダウンロードし、再度1つ目のExploitでnc.exeによるreverse shellのコマンドを実行し、listenしておいたポートでShellを取得。
whoamiで現在のユーザを確認。システム権限であることが明示的にわかったのでdirコマンドでフラグを検索。
これで無事クリア。という流れ

難易度は様々ありそうだけどたしかにKioptrixと似ているものもある。

----------------------------------------------------------------------------

■今後の学習の流れ

来月中にラボを30台以上は攻略し、バッファオーバーフローを完全に修め、準備が整ったと判断できたら試験に申し込むつもり。
契約上は12月頭までに受ければいいことになっているがラボは8月上旬までしか使えないし、8月には受験したい。

今のところ1日1台くらいのペースで攻略できているが、難しいやつにあたると3日とかかかりそうではある。。
Try Harderだぜ!

0 件のコメント:

コメントを投稿