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
2.3k
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
830
サイバーセキュリティの話 Ver.20210904
firefire2
1
520
Other Decks in Technology
See All in Technology
Amazon CloudWatchのメトリクスインターバルについて / Metrics interval matters
ymotongpoo
3
270
[TechNight #91] Oracle Database 最新パフォーマンス分析手法
oracle4engineer
PRO
2
110
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
110
OpenTelemetry の Log を使いこなそう
biwashi
5
1.1k
経理出身PdMがAIプロダクト開発を_ハンズオンで学んだ話.pdf
shunsukenarita
1
210
Wasmで社内ツールを作って配布しよう
askua
0
150
ObsidianをLLM時代のナレッジベースに! クリッピング→Markdown→CLI連携の実践
srvhat09
7
9.6k
MCPに潜むセキュリティリスクを考えてみる
milix_m
1
840
大規模組織にAIエージェントを迅速に導入するためのセキュリティの勘所 / AI agents for large-scale organizations
i35_267
6
310
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
670
機械学習を「社会実装」するということ 2025年夏版 / Social Implementation of Machine Learning July 2025 Version
moepy_stats
1
1.4k
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
350
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Docker and Python
trallard
45
3.5k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
4 Signs Your Business is Dying
shpigford
184
22k
KATA
mclloyd
30
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How STYLIGHT went responsive
nonsquared
100
5.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
Documentation Writing (for coders)
carmenintech
72
4.9k
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