Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CRTO/CRTL/OSEPの比較・勉強法とAV/EDRの検知実験

tera
September 07, 2024

 CRTO/CRTL/OSEPの比較・勉強法とAV/EDRの検知実験

OffSecLab MeetUp in 渋谷オフ会での講演スライドです。
https://off-sec-lab.connpass.com/event/326460/

tera

September 07, 2024
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 • 経歴 • セキュリティ歴は5-6年程度、8割がSOC • 今は研究員というポジション、実際はサイバー演習、内部レッド、 Conference参加・登壇と何でも屋な感じ • ペンテスト・脆弱性診断は未経験で素人、器用貧乏なのが悩み

    • 資格 • CRTL/CRTO/OSCP/CISSP/CKS/GMON/CEH/LPIC/NW/RISS • OSEPはまだ受かってない・・・今月再々受験・・・ • 趣味:サッカー観戦、温泉、旅行、漫画 • その他 • OSCPは”マルウェア解析ブログ、OSCP受験記&勉強方法”で記載 • X (Twitter): @chayakonanaika – 解析mob
  2. CRTOとは ➢Zero-Point Securityが提供するレッドチームトレーニング ➢クラウド上にあるラボを利用して学習 • 攻撃マシンもクラウドにあり、CobaltStrikeを使えるのが特徴 • 仕事でCobaltStrikeを使う必要ができたため受験 • CobaltStrikeを利用してAD環境を攻撃する

    • PTH, PTT, Kerberoast, Delegation, RBCD, GPO, Domain Forest, AV Evasion, AppLocker, ADCS, MCM(Microsoft Configuration Manager)の悪用, etc ➢費用 • 大体トータルで10万前後 • コースの購入に365ポンド(約7万)、ラボは別売り • ラボは15日、30日、45日、60日と使いたい期間分購入する • 30日だと44ポンド (約8,500円) • 自分の場合、30日を2回購入
  3. CRTOの感想 ➢よかったところ • CobaltStrikeを使えるのは唯一無二、実践的なスキルがつく • ADの攻略がうまくテキストにまとまっている • 環境構築が不要、クラウドにさえ繋がればどこでもラボ学習できるので楽 • テキストは充実、試験は優しめ(4日間

    or 48時間、8 台のマシンがターゲット) • 企業NWのWindows1台を利用できる(侵入済み)ところから試験スタート • 試験も作業しないときは試験環境をオフにできるので、受験者に優しい、レポートも不要 • C2セッションも落ちるので、Persistenceも求められたりとリアル • Offsecと違いrabbit holeも少ない、自分の場合は2日間程度で攻略完了 • 値段も手頃 ➢残念なところ • 攻撃マシンも割り当てられる(外部には繋がらない)ため、独自ツール等は利用不可 • Blood HoundやSliverとかは利用できない、基本用意されたツールだけで攻略する • ペーストだけ可能なので、常識範囲内の量のコードを貼り付けてコンパイルは可 • ただしコピーペーストがうまく動かないことが多い・・・ • テキスト検索がほぼできない • ラボ環境が1つだけなので、完全な初心者はHTBやTHM等も必要かも
  4. CRTLとは • CRTOを前提とした環境・スキルに最新のAV/EDRが追加される • CRTOをスキップしてCRTLのみを受けることも可能 • 試験時間は8日(6台程度のマシン)で時間は十分にあるのでひたす らAV/EDRとの戦い • C#、C++でコードを書く部分が多い

    • CRTOと違い手取り足取りではない、コードも全部載せないことが多い • D/Invoke API Hashing、D/Invoke Manual Mapping、PPID Spoofing、Thread Stack Spoofing、GadgetToJScript、Sleep Mask Kit、C2インフラ構築、etc • テキストを学ぶだけでEDRのバイパスは厳しい • テキスト以外も学ぶことが必要 • とはいえEDRやC2コマンドの仕組みを理解することは重要
  5. CRTLの感想 ➢よかったところ(CRTOと同様のところは省略) • EDRバイパス(Elastic)が主目的な試験は希少(これ以外にない?) • C2のインフラ構築、カスタムマルウェア作成等が実践的 • 試験はCRTOより難しく、ちょうど良い難易度 • 試験時間に余裕がある(8日間)ため、根気の勝負・TRY&ERROR

    • 自分の場合は4日間で合格点に達した ➢残念なところ(CRTOと同様のところは省略) • テキストの手法を試しても普通に検知される • おそらくテキストの更新速度よりもEDRの進化の方が早い(仕方がない)
  6. OSEPの感想 ➢よかったところ • CI/CDを利用した横展開 • 外部からの侵入を学習できる(公開サーバ経由、メール経由、etc) • チャレンジラボ(6つの練習環境)、カスタムマルウェアが充実 ➢残念なところ •

    環境やテクニックが古い(というか不便)ところがある & .netを使いすぎの印象 • シェルコードの暗号化を.netで行う (ローカルでできるのでPythonの方が便利、Cybershefで も良い) • Metasploit以外のC2もテキストに追加してほしい(Sliver, Havoc, etc) • CRTOのような試験時間方式(作業しないときは休める)にして欲しい・・(ほぼ愚 痴) • 値上げが厳しい (Learn Oneだと$2599、30-40万円程度) • ラボNWが重い、ラボによってはOfficeや開発環境のインストールで1時間くらい消 費・・・ • VisualStudio, Officeは極力自前の環境を用意することをお勧め
  7. Tips1 個人的テキストの使い方 • CRTO, CRTL, (OSEP)ではテキストの理解は重要 • 自分なりのテキストの読み方・使い方を共有 • 主なテキストの使い方・読み方

    1. 英語PDFを片手にシンプルに最初から最後まで読む • 一番脱落するやり方、よほど英語と読解力に自信がない限りおすすめしない 2. 翻訳サイトや生成AIを利用して和訳して読む • あまりやってほしくないやり方 • 英語は筋トレのようなものなので、翻訳に頼ったら英語が身につかない 3. コード/コマンドを中心に部分的に読む&実行して自分なりのメモを作成 • 個人的におすすめ • 大体最初のパラグラフとコード/コマンドの下のListingで薄い理解はできる
  8. Tips1 個人的テキストの使い方 - 例 • 16.1.3 Abusing WriteDACL赤枠の部分を訳すと以下の感じ • WriteDACLがあるとACL(アクセス制御リスト)を変更できるので悪用

    1. まずWriteDACLの権限があるアカウントを列挙、 TestService2アカウントを発見 • コマンド: ` Get-DomainUser | Get-ObjectAcl -ResolveGUIDs (略) ` 2. TestService2アカウントに対してWrite権限を付与 • コマンド: ` Add-DomainObjectAcl -TargetIdentity testservice2 (略) ` 3. 付与されたか確認、TestService2アカウントに対してGeneric Allが付与された • コマンド: `Get-ObjectAcl -Identity testservice2 -ResolveGUIDs (略) ` 4. TestService2アカウントに対してパスワード変更が可能になった • コマンド: ` net user testservice2 h4x /domain ` 赤枠部分だけで十分薄い理解ができる
  9. Tips1 個人的テキストの使い方 - 例 • コードを中心に翻訳サービスを使わずに読んでまとめる • 頭ではなく、手を動かす • CRTOやOSEPのようなハンズオン形式のテキストはコード前後だけで程度理解可能

    • あまりコピペは使わない • コマンドを覚えることも重要 • コマンドをタイピングしていると個人的に集中力が上がる • コード・コマンドがない章は飛ばしてもよい(少なくとも1周目は) • 例えばWindows APIの仕様の説明など • 仕様の説明⇨コードよりも、コード⇨仕様の説明の方が頭に入る • どれだけ英語が苦手でも10回コマンドを打てば理解度は上がる • とはいえ最低限の技術的英語は覚える • 少しずつ読む範囲を増やして理解度を上げる
  10. (参考)自分なりCRTOのテキストまとめ • 使い慣れているHackmdにまとめた • Notion, Obsidian なんでも良いので、検索・一覧化しやすいことが重要 • 迷子になった時に参照できるようにする •

    特にCRTO, CRTLはテキスト検索がほぼできない(pdfもない)ので重要 • CheatSheetは公開されているものを流用 • 使えるツールが全員同じなので、独自のCheatSheetの必要性は感じなかった
  11. Tips3 複数のC2に慣れよう C2 長所 短所 備考 Metasploit 定番フレームワークで長い歴史、安定性も高い サーバの攻撃モジュールなどカバー範囲が広い 歴史がある分ほぼ検知される

    カスタマイズ性が低い印象 基本的にCUI Cobalt Strike (CS) 商用で攻撃者もペンテスターも多数利用 GUI&複数人サポートで機能も豊富 プロファイルやArsenal Kit等、カスタマイズ性 が高い 悪用されすぎてカスタマイズしないと 検知されやすい(狙い撃ち)印象 有料 Offsecでは禁 止 Havoc GUIでCSに似たUI、無料 CSに慣れているとすぐに使いこなせる SMBのリスナーを作れるのが個人的に便利 CSに比べるとできない部分がある ドキュメントが少ない印象 個人的によく 使う、GUIは便 利 Sliver 最近だと一番人気な気がする 拡張性が高い、BOFもサポート 基本的にCUIで慣れるまで時間が必要か も まだ使いこな せてない 他にもEmpire, Covenant, Merlin… それぞれ得意・不得意があるので、状況に応じて使うことが重要(例えば”shell”コマンドの挙動が違う) 2・3種類使い慣れていると安心 色々なC2フレームワークに慣れていると便利だし理解が深まる 個人的C2比較
  12. Tips4 様々な侵入方法・バックドアの作 り方を学ぼう • 様々な侵入する方法を学ぶことが重要(主に横展開) • 特にAV/EDRが動いている場合は、色々なやり方を試すことが重要 シナリオ 対応策 まずは定番

    Msfvenom等でリバースシェル(exe, ps1, dll, http, https, tcp, (dns), (smb), x86/x64, Starger/Non- Stager) AppLockerがある MsBuild, InstallUtil※, rundll32※, regsvr32, etc AVがリバースシェルをブロック カスタムマルウェア(Downloader, ビット操作でシェルコードを暗号化)、Shellter等のEvasion Framework、Kill AV (権限があれば) EDRがブロック RDPユーザ作成 (権限が必要だけどできれば最強)、自作リバースシェルを使う(後述)、あとは根気 Rubeus等のPostExploitがブ ロックされる そもそもRubeusやMimikatz、C2に依存しない。Impacket等で割と代替手段がある(psexec, getTGT, ticketer, secretsDump (dcsync), etc)。他にもカスタムmimikatz、カスタムPsExec 自分の思考回路を雑にまとめた、細かい説明は省略 ※Offensive Security Articles Vol.1、4章 Living Off the Land 攻撃の紹介
  13. 自作シンプルリバースシェル(TCP) ➢まず安定したリバースシェルを作ることが大事 • C2セッションを作れるのがベストだが、無理ならシンプルなリバースシェルを作る • Defenderは回避できてもEDRは難しい • 保存時:怪しいAPIを利用するだけで検知 • 実行時:シェルコードをYaraルール等で検知(暗号化しても復号したタイミングで検知)

    • NetcatやInvoke-PowerShellTcp.ps1, shell_reverse_tcpで良いのでは? • 悪用されすぎていてAVでも検知されるので自作したい ➢利点 • 検知されにくい • 手軽に実装可能、自作シェルコードよりも簡単 • TCPで接続するだけなので、Kaliをサーバにしなくて良い • 侵害済みのWindowsをサーバ※にすれば、FWを無視できる ➢個人的によく利用する例 (横展開が中心) • 単発コマンドを実行できるが(コマンドインジェクション等)、リバースシェルを確立できない • CIFSチケットを取得してファイルの読み書きはできるが、リバースシェルを確立できない ※ももいろテクノロジー, PowerShellでnc(netcat)を書いてみる, https://inaz2.hatenablog.com/entry/2015/04/16/025953 侵害済み端末 Netcat等でサーバにする FW
  14. 様々なマルウェアを作成して実験 • マルウェアを作成してAV(Windows Defender)、EDR で検知検証 • Windows Defenderは最新、EDRは個人的最強格の2つで実験 • EDR1はPolicyで特に挙動が変わるので、大体強いの設定

    • 脆弱なドライバ・ツールを持ちこむ方法は対象外 (CRTL等では不可) マルウェア 備考(カスタムコードは最低限のAV回避の処理(難読化等)を追加) 1 C2作成 Msfvenomで作成 ほぼデフォルトのプロファイル 2 Havocで作成(exe) 3 Sliverで作成 (dll) 4 カスタ ム コード ダウンローダー (sliver) シェルコード(sliver)をダウンロード、notepadを起動してinject (CRTL式、.net) 5 暗号シェルコードを復号実行 .netでOSEP式、シェルコードはwindows/x64/meterpreter/reverse_httpで作成 6 自作リバースシェル 30行程度のお手軽リバースシェル 7 6をDLLに変換 dllのほうが検知されにくい印象、少なくともSOCの経験上exeよりも調査・対応は難しい 8 Word psをリモート実行するマクロ ASCIIでObfuscate(OSEP式) 9 6をマクロで作成・実行(後述) Downloadではなくbase64で直接VBAに記載 (後述) 10 その他 EventLogからシェルコード実行※ (おまけ)本来はPersistence用、Bsides LVで発表があったので実験 ※Persistence – Event Log, https://pentestlab.blog/2024/01/08/persistence-event-log/
  15. 実験結果一覧 ◦が検知・ブロック、△が条件付き検知、Xは検知せず。EDR1はセッションを貼り続けてコマンドを実行し続けると検知するかも マルウェア AV EDR1 EDR2 備考 1 C2作成 Msfvenomで作成

    ◦ - 2 Havocで作成(exe) 3 Sliverで作成 (dll) 4 カスタム コード ダウンローダー (sliver) X ◦ ◦ 5 暗号シェルコードを復号 実行 △ ◦ ◦ AV: デモ動画はStagerで追加ダウンロードされたファイルが検知の原因、 Stagelessの全体Payloadを暗号化すれば多分検知されない 6 自作リバースシェル X X △ EDR1: 検知せず、ただしwhoamiやhostname実行時に検知する事もあった EDR2: 検知したりしなかったり 7 6をDLLに変換 X X △ EDR1: 検知せず、ただしwhoamiやhostname実行時に検知する事もあった EDR2: 検知したりしなかったり 8 Word psをリモート実行するマ クロ ◦ - - 9 6をマクロで作成・実行 (後述) X ◦ - AV: 検知せず、EDR1: Highアラート EDR2: Officeライセンスがないため検証不可 1 0 その他 EventLogからシェル コード実行※ X X ◦ AV, EDR1: shell_reverse_tcpをpayloadとすると意外とEDR1は検知せず、事前準 備のシェルコードを仕込むところも同様に検知せず EDR2: exe自体を検知・・・
  16. 実験結果考察 ➢AV (Windows Defender) • C2のデフォルトpayloadやマクロは検知するが、カスタムコードの検知は難しい • 生成AIで既存攻撃ツールの修正も容易いのでDefenderのみに依存は厳しい • HTBのProLabsやOffsecの古いマシンでは、SliverやHavocのpayloadも検知されなかった印象

    • とはいえ定番ツールは検知するので、多層防御の1つとして考える • 攻撃(試験対策)からすると検知されないリバースシェルを2・3種類作れると安心 • ダウンローダーが簡単に作れて動作も変更しやすいため個人的おすすめ ➢EDR • 優秀なEDRの検知率は高い • MSBuild・Install Utilの悪用、Direct API、API Hashing、色々試したがほぼ検知 • 単体で回避できない場合は脆弱性を利用する方(DLL SideLoading等)が良いかも • C2のシェルコードを実行できない場合は自作リバースシェルは一つの回避策 • ポリシーやプロセスの流れ等の設定で挙動が変わるので、自身の環境でテストす ることを推奨
  17. (参考)項番9の自作リバースシェルをVBAで作成・ 実行の補足 • 色々な実装方法がある • 例えばPowershellでダウンロード・実行など • http通信が発生すると難読化してもAVにほぼ検知された • 今回はbase64で直接vbaに記載してexeを作成、実行という無理矢理な方法で実装

    • 自作リバースシェルは最小の7kb程度なので、base64のコピペでも許容範囲(若干面倒) • もっとスマートな方法はあると思う、ファイルレス、etc • 今思えばGadgetToJscript ※の方が良かったかも・・・(忘れてた) GadgetToJScript を利用した Office VBA のAMSI バイパスと原理、https://www.shutingrz.com/post/explore-dotnet-serialize-g2js/
  18. 全体まとめ 1. CRTO・CRTL・OSEPの比較 • ADに詳しくない人 or Cobalt Strikeを使いたい人はCRTO • 検知回避を学びたい人(特にEDR)はCRTL

    • 企業NWへの攻撃全般を学びたい人 or とにかくTRY HARDERしたい人 はOSEP 2. 自分なりの勉強方法・tipsの紹介 • テキストの読み方、頭ではなく手を動かす • NW図を作成しながら整理 • 複数のC2に慣れよう • 様々なバックドアの作り方を学ぼう 3. AV/EDRの検知実験