
Active Directory の SMB 共有を監査し、過剰な権限を棚卸し、分析、報告します。アクセス可能なシステムを発見し、共有 ACL を列挙し、高リスクな構成を特定し、改善優先順位付けのための HTML/CSV レポートを生成します。
PowerHuntSharesは、サイバーセキュリティチームやペネトレーションテスターが、保護するActive Directory環境内のSMB共有をより適切に特定、理解、攻撃、および修復するために設計されたPowerShellツールです。すべてのハッカーはSMB共有を悪用した経験を持っていますが、それでもサイバーセキュリティチームが防御に苦労する攻撃対象領域です。このプロジェクトは、包括的な共有インベントリを作成し、統計、チャート、グラフ、言語モデルを活用して共有を文脈化し、関係を要約し、リスクを評価し、修復の優先順位を付けるためのオープンな概念実証ツールを提供することを目的としています。
以下の機能をサポートします:
追加機能:
PowerHuntShares v2 リソース:
PowerHuntShares v1 リソース:
PowerHuntSharesは、「過剰な権限」が設定されたSMB共有ACLをインベントリし、「高リスク」なACLを強調表示します。以下は、この文脈での定義です。
過剰な権限
過剰な読み取りおよび書き込み共有権限は、「Everyone」、「Authenticated Users」、「BUILTIN\Users」、「Domain Users」、または「Domain Computers」グループに対する明示的なACE(アクセス制御エントリ)を含むネットワーク共有ACLとして定義されています。これらはすべて、権限の継承問題により、ドメインユーザーが影響を受ける共有にアクセスできるようにします。オペレーターが独自のターゲットグループを追加できるパラメーターがあることに注意してください。
以下に追加の背景を示します:
ご注意: 共有権限はNTFS権限によって上書きされる可能性があります。また、テストでは以下のキーワードを含む共有名は除外されていることに注意してください:
print$, prnproc$, printer, netlogon, and sysvol
高リスク共有
このレポートの文脈では、高リスク共有はシステムまたはアプリケーションへの未承認のリモートアクセスを提供する共有として定義されています。
デフォルトでは、これには共有
wwwroot, inetpub, c$, および admin$
以下は、現在のPowerShellセッションにPowerHuntSharesをロードするために使用できるコマンドのリストです。PowerShellを実行するたびにこれらのいずれかを実行する必要があることに注意してください。永続的ではありません。
# 実行ポリシーの制限をバイパス
Set-ExecutionPolicy -Scope Process Bypass
# カレントディレクトリにあるモジュールをインポート
Import-Module .\PowerHuntShares.psm1
または
# githubへの接続をサポートするためにSSL動作レベルを低下
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
# PowerHuntShares.psm1をダウンロードしてメモリに読み込む
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/PowerHuntShares/main/PowerHuntShares.psm1")
重要: すべてのコマンドは、特権のないドメインユーザーとして実行する必要があります。
.EXAMPLE 1: ドメインコンピュータから実行。デフォルトでActive Directoryコンピュータの検出を実行。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test
.EXAMPLE 2: 代替ドメイン資格情報を使用してドメインコンピュータから実行。デフォルトでActive Directoryコンピュータの検出を実行。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -Credential domain\user
.EXAMPLE 3: 現在のユーザーとしてドメインコンピュータから実行。ファイル内のホストをターゲット。1行に1つ。
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -OutputDirectory c:\temp\test -HostFile c:\temp\hosts.txt
.EXAMPLE 4: 資格情報を使用して非ドメインコンピュータから実行。デフォルトでActive Directoryコンピュータの検出を実行。
C:\temp\test> runas /netonly /user:domain\user PowerShell.exe
PS C:\temp\test> Import-Module PowerHuntShares.psm1
PS C:\temp\test> Invoke-HuntSMBShares -Threads 100 -RunSpaceTimeout 10 -OutputDirectory c:\folder\ -DomainController 10.1.1.1 -Credential domain\user
=============================================================== PowerHuntShares =============================================================== この関数は以下のタスクを自動化します: o 現在のコンピュータのドメインを特定 o ドメインコンピュータを列挙 o ping要求に応答するコンピュータをフィルタリング o TCP 445が開いてアクセス可能なコンピュータをフィルタリング o SMB共有を列挙 o SMB共有権限を列挙 o 過剰な権限の可能性がある共有を特定 o 読み取りおよび書き込みアクセスを提供する共有を特定 o 高リスクの共有を特定 o 一般的な共有所有者、名前、ディレクトリ一覧を特定 o 作成日、最終書き込み日、最終アクセス日のタイムラインを生成 o HTMLサマリレポートと詳細なcsvファイルを生成 注: 大規模環境では実行に数時間かかる場合があります。 --------------------------------------------------------------- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| --------------------------------------------------------------- 共有検出 --------------------------------------------------------------- [*][03/01/2021 09:35] スキャン開始 [*][03/01/2021 09:35] 出力ディレクトリ: c:\temp\smbshares\SmbShareHunt-03012021093504 [*][03/01/2021 09:35] ドメインコントローラへの接続成功: dc1.demo.local [*][03/01/2021 09:35] demo.localドメインに関連するコンピュータのLDAPクエリを実行中 [*][03/01/2021 09:35] - 245台のコンピュータが見つかりました [*][03/01/2021 09:35] 245台のコンピュータにpingを実行中 [*][03/01/2021 09:35] - 55台のコンピュータがping要求に応答しました。 [*][03/01/2021 09:35] 55台のコンピュータでTCPポート445が開いているか確認中 [*][03/01/2021 09:36] - 49台のコンピュータでTCPポート445が開いています。 [*][03/01/2021 09:36] 49台のコンピュータからSMB共有のリストを取得中 [*][03/01/2021 09:36] - 217個のSMB共有が見つかりました。 [*][03/01/2021 09:36] 217個のSMB共有から共有権限を取得中 [*][03/01/2021 09:37] - 374個の共有権限が列挙されました。 [*][03/01/2021 09:37] 33個のSMB共有からディレクトリ一覧を取得中 [*][03/01/2021 09:37] - 最大3レベルのネストされたディレクトリを対象 [*][03/01/2021 09:37] - 563個のファイルとフォルダが列挙されました。 [*][03/01/2021 09:37] 過剰な可能性がある共有権限を特定中 [*][03/01/2021 09:37] - 12システムで33個の過剰な可能性がある権限が見つかりました。 [*][03/01/2021 09:37] スキャン完了 --------------------------------------------------------------- 共有分析 --------------------------------------------------------------- [*][03/01/2021 09:37] 分析開始 [*][03/01/2021 09:37] - 12システムで14個の共有が読み取り可能。 [*][03/01/2021 09:37] - 1システムで1個の共有が書き込み可能。 [*][03/01/2021 09:37] - 32システムで46個の共有が非デフォルトとみなされます。 [*][03/01/2021 09:37] - 0システムで0個の共有が高リスクとみなされます [*][03/01/2021 09:37] - 過剰な共有の上位5所有者を特定しました。 [*][03/01/2021 09:37] - 上位5共有グループを特定しました。 [*][03/01/2021 09:37] - 上位5共有名を特定しました。 [*][03/01/2021 09:37] - 過去90日間に作成された共有を特定しました。 [*][03/01/2021 09:37] - 過去90日間にアクセスされた共有を特定しました。 [*][03/01/2021 09:37] - 過去90日間に変更された共有を特定しました。 [*][03/01/2021 09:37] 分析完了 --------------------------------------------------------------- 共有レポートサマリー --------------------------------------------------------------- [*][03/01/2021 09:37] ドメイン: demo.local [*][03/01/2021 09:37] 開始時間: 03/01/2021 09:35:04 [*][03/01/2021 09:37] 終了時間: 03/01/2021 09:37:27 [*][03/01/2021 09:37] 実行時間: 00:02:23.2759086 [*][03/01/2021 09:37] [*][03/01/2021 09:37] コンピュータサマリー [*][03/01/2021 09:37] - 245台のドメインコンピュータが見つかりました。 [*][03/01/2021 09:37] - 55台(22.45%)のドメインコンピュータがpingに応答しました。 [*][03/01/2021 09:37] - 49台(20.00%)のドメインコンピュータでTCPポート445がアクセス可能でした。 [*][03/01/2021 09:37] - 32台(13.06%)のドメインコンピュータに非デフォルトの共有がありました。 [*][03/01/2021 09:37] - 12台(4.90%)のドメインコンピュータに過剰な権限の可能性がある共有がありました。 [*][03/01/2021 09:37] - 12台(4.90%)のドメインコンピュータにREADアクセスを許可する共有がありました。 [*][03/01/2021 09:37] - 1台(0.41%)のドメインコンピュータにWRITEアクセスを許可する共有がありました。 [*][03/01/2021 09:37] - 0台(0.00%)のドメインコンピュータに高リスクの共有がありました。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] 共有サマリー [*][03/01/2021 09:37] - 217個の共有が見つかりました。最低98個の共有を期待しています [*][03/01/2021 09:37] なぜなら49システムが開いているポートを持ち、通常2つのデフォルト共有があるからです。 [*][03/01/2021 09:37] - 32システムにわたる46個(21.20%)の共有が非デフォルトでした。 [*][03/01/2021 09:37] - 12システムにわたる14個(6.45%)の共有に33個の過剰な可能性があるACLが設定されています。 [*][03/01/2021 09:37] - 12システムにわたる14個(6.45%)の共有がREADアクセスを許可しました。 [*][03/01/2021 09:37] - 1システムにわたる1個(0.46%)の共有がWRITEアクセスを許可しました。 [*][03/01/2021 09:37] - 0システムにわたる0個(0.00%)の共有が高リスクとみなされます。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] 共有ACLサマリー [*][03/01/2021 09:37] - 374個のACLが見つかりました。 [*][03/01/2021 09:37] - 374個(100.00%)のACLが非デフォルト共有に関連付けられていました。 [*][03/01/2021 09:37] - 33個(8.82%)のACLが過剰な可能性があると判明しました。 [*][03/01/2021 09:37] - 32個(8.56%)のACLがREADアクセスを許可していると判明しました。 [*][03/01/2021 09:37] - 1個(0.27%)のACLがWRITEアクセスを許可していると判明しました。 [*][03/01/2021 09:37] - 0個(0.00%)のACLが高リスク共有名に関連付けられていると判明しました。 [*][03/01/2021 09:37] [*][03/01/2021 09:37] - 最も一般的な共有名トップ5は次のとおりです: [*][03/01/2021 09:37] - 発見された14個の共有のうち9個(64.29%)が上位5共有名に関連しています。 [*][03/01/2021 09:37] - 4 backup [*][03/01/2021 09:37] - 2 ssms [*][03/01/2021 09:37] - 1 test2 [*][03/01/2021 09:37] - 1 test1 [*][03/01/2021 09:37] - 1 users [*] -----------------------------------------------




作者
Scott Sutherland (@_nullbind)
使用されたオープンソースコード
これらの個人がこのプロジェクトの一部として使用されたオープンソースコードを書きました。彼らとその作業に多大な感謝を捧げます!
| 名前 | サイト |
|---|---|
| Will Schroeder (@harmj0y) | https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1 |
ライセンス
BSD 3-Clause
修正予定のバグ
予定されている機能
以下は、PowerHuntShares の動作方法、抽出するデータ、および実行可能な結果を提示する方法のビジュアルウォークスルーです。
発見された共有と関連リスクの高レベルビューを提供します。

簡単な分析とオフラインレビューのために自動生成されたレポート。

共有名とそのプロパティの詳細なマッピング。

特定されたリスクに対処するための推奨修復手順。

時間の経過に伴う発見された問題の可視化。

異なるシステム間での発見された共有と権限の比較。

関連するフォルダと共有をグループ化してコンテキストを向上。

発見されたフィンガープリントに基づく資産露出の表示。

発見された共有と関係の視覚的表現。

スキャン中に発見された機密情報とシークレットを強調表示。

共有内で見つかった潜在的に興味深いまたは価値の高いファイルのリスト。

機密データが露出している可能性がある領域を強調表示。

詳細な分析を伴う包括的なリスク露出ビュー。

| Warren F (@pscookiemonster) | https://github.com/RamblingCookieMonster/Invoke-Parallel |
| Luben Kirov | http://www.gi-architects.co.uk/2016/02/powershell-check-if-ip-or-subnet-matchesfits/ |