net share を実行したり、「コンピューターの管理」の「共有フォルダー」を開いたりすると、自分では作った覚えのない C$、ADMIN$、IPC$ といった共有が並んでいます。これは「管理共有」と呼ばれるもので、Windowsが自動で作っています。ドライブ全体が共有されているように見えるので、セキュリティは大丈夫なのかと心配になるかもしれません。この記事では、管理共有が何のためにあるのか、だれが使えるのか、そして今どう守るのがよいのかを見ていきます。
- C$・ADMIN$・IPC$ などの管理共有の中身と、使われる場面
- 管理共有に入れるアカウントと、入れないアカウントの違い
- 管理共有が攻撃に使われる理由と、今のおすすめの守り方
管理共有とは:Windowsが自動で作る隠し共有
管理共有は、管理者やプログラムがコンピュータをリモートで管理するために、Windows(Serverサービス)が起動時に自動で作る共有です。名前の最後に $ が付いた共有は、エクスプローラーでコンピュータを開いたときの一覧に表示されません。そのため「隠し共有」とも呼ばれます。
| 共有名 | 中身と用途 |
|---|---|
| C$、D$ … | 各ドライブのルート全体。管理者がリモートからファイルを置いたり取り出したりするのに使う |
| ADMIN$ | Windowsのフォルダ(ふつうは C:\Windows)。リモート管理のときに使う |
| IPC$ | 名前付きパイプ(プログラム同士の通信の入口)。ファイルは入っていない。削除できない |
| PRINT$ | プリンタードライバー。プリンターを共有したときに作られ、リモートでのプリンターの管理に使う |
| FAX$ | FAXサーバで、FAXのクライアントが使う |
| SYSVOL、NETLOGON | DCだけにある共有。グループポリシーやログオンスクリプトを配る。名前に $ がないので隠し共有ではない |
「隠し」といっても、一覧に表示されないだけです。名前を知っていれば \\pc01\C$ のように指定して接続を試せます。守っているのは「見えないこと」ではなく、次の節で説明するアクセス許可です。
管理共有に入れるのはだれか
C$ と ADMIN$ に入れるのは、そのコンピュータのローカルの Administrators グループに入っているアカウントだけです。一般のユーザーは入れません。ドメインに参加したPCでは、Domain Admins グループが自動で Administrators に入るので、ドメインの管理者は管理共有を使えます。
ただし、ローカルのアカウントの場合は事情が違います。
| アカウント | ネットワーク越しに管理共有を使えるか |
|---|---|
| ドメインのアカウント (Administrators のメンバー) | 使える。管理者のトークンのままアクセスする |
| ローカルの管理者アカウント (Administrator 以外) | 使えない。UACの「リモート制限」で、ネットワーク越しのログオンでは管理者の権限を取り除いたトークンになるため |
| 組み込みの Administrator (RID 500) | 既定では使える。このアカウントは、既定の設定ではUACの対象外のため |
UACのリモート制限は、レジストリの LocalAccountTokenFilterPolicy で決まります。既定値の0のままなら制限が効きます。ワークグループでの管理のためにこの値を1にする手順がよく紹介されていますが、1にするとローカルの管理者アカウントでもネットワーク越しに管理者として入れるようになります。同じパスワードのローカル管理者が多くのPCにある環境では、とても危険な設定です。
管理共有が使われる場面
管理共有は、ふだんは意識しなくても、さまざまな管理の仕事で使われています。
| 場面 | 使われ方 |
|---|---|
| 管理者のファイル操作 | \\pc01\C$\Logs を開いてログを取り出す、修正ファイルを置く |
| ソフトウェアの配布 | 配布ツールが ADMIN$ などにインストーラーを置き、リモートでインストールする |
| リモートでのコマンド実行 | PsExec のようなツールは、管理共有を使ってリモートのPCでプログラムを動かす |
| リモート管理(IPC$) | 「コンピューターの管理」で別のPCに接続して、共有やセッションを見る、リモートレジストリを操作する |
| 製品のエージェント | バックアップ、資産管理、ウイルス対策などの製品が、管理共有を前提にしていることがある |
IPC$と名前付きパイプ
IPC$ は、ファイルではなく「名前付きパイプ」を共有しています。名前付きパイプは、プログラム同士がデータをやり取りするための通り道です。リモートのコンピュータの管理機能の多くはRPC(リモート プロシージャ コール)というしくみで呼び出され、その運び方の1つが「SMBで IPC$ につなぎ、名前付きパイプを通す」方法です。
RPCには、名前付きパイプを使わずにTCPで直接つなぐ方法(TCP 135と動的なポート)もあります。たとえばサービスの管理は、Windows Vista以降、まずTCPを試し、届かないときに名前付きパイプに切り替えます。どちらを使うかは機能によって違うので、SMB(TCP 445)を止めると、ファイル共有以外の管理機能にも影響が出ることがあります。
なぜ攻撃に使われるのか
管理共有そのものに穴があるわけではありません。問題は、管理者の資格情報を手に入れた攻撃者にとって、管理共有がとても便利な道具になることです。攻撃者は、乗っ取った1台のPCから、ネットワーク上のほかのPCやサーバへ次々に入り込もうとします。これを横展開(ラテラルムーブメント)と呼びます。
とくに被害が大きくなるのが、「すべてのPCのローカル管理者が同じパスワード」という環境です。1台からローカル管理者のパスワード(またはハッシュ)を盗まれると、同じパスワードのPCすべてに管理共有から入られてしまいます。前の節のとおり、組み込みの Administrator は既定でUACのリモート制限を受けないので、この攻撃に使われやすいアカウントです。
管理共有は消すべきか
管理共有はレジストリ(AutoShareServer、AutoShareWks)で作らないようにできます。ただ、Microsoftは基本的に管理共有を変更しないよう勧めています。グループポリシーの設定項目の説明でも、管理共有を有効にすることが「高いセキュリティが必要な環境を除いて推奨」とされています。
| 消すことの問題 | 内容 |
|---|---|
| 管理ツールが動かなくなる | ソフトウェアの配布、バックアップ、監視などの製品が失敗することがある |
| IPC$ は消せない | 名前付きパイプの入口なので、レジストリの設定でもなくならない |
| 攻撃者は止まらない | 管理者の権限を持った攻撃者は、自分で共有を作り直したり、別の方法で入ったりできる |
つまり、守るべきなのは「管理共有」ではなく「管理者の資格情報」と「PC同士の通り道」です。管理共有を消すよりも、次の対策を重ねるほうが効果があります。
今のおすすめの守り方
| 対策 | 内容 |
|---|---|
| Windows LAPSを使う | ローカル管理者のパスワードを、PCごとにランダムな値にして自動で変える。1台から盗まれても、ほかのPCには使えない |
| ローカル管理者のネットワークログオンを拒否する | グループポリシーの「ネットワーク経由でコンピューターへアクセスを拒否」に「ローカル アカウントと Administrators グループのメンバー」(S-1-5-114)を入れる。ローカルの管理者アカウントでは、ネットワーク越しに入れなくなる |
| UACのリモート制限を外さない | LocalAccountTokenFilterPolicy を既定の0のままにする。グループポリシーで0を配ることもできる |
| PC同士のSMBを止める | Windowsファイアウォールで、クライアントPCが受けるSMB(TCP 445)を、管理用のサーバなど決まった相手からだけ許可する。PC同士でファイルを共有する必要は、ふつうはない |
| 管理者のアカウントを分ける | ふだんのメールやWeb閲覧は一般ユーザーのアカウントで行い、管理作業のときだけ管理者のアカウントを使う。ドメインの管理者で一般のPCにサインインしない |
| 資格情報を盗まれにくくする | Credential Guard や LSA保護で、LSASSのメモリからハッシュやチケットを取り出しにくくする |
| アクセスを記録する | 監査ポリシーの「ファイル共有の監査」を有効にすると、共有へのアクセスがセキュリティログに残る(イベントID 5140。詳細は「詳細なファイル共有の監査」の 5145) |
リモートでの管理は、管理共有やRPCのほかに、PowerShellのリモート処理(WinRM、TCP 5985・5986)や Windows Admin Center、Intune などの管理ツールでもできます。管理の方法をこうした手段にまとめておくと、クライアントPCで受けるSMBを止めやすくなります。どの方法でも管理者の資格情報を使うことは同じなので、上の対策は変わらず必要です。
確認に使うコマンド
PC(コマンドプロンプト):このPCにある共有の一覧を表示する(管理共有も含む)
net share
PC(PowerShell):共有の一覧を表示する
Get-SmbShare
PC(PowerShell):管理共有を自動で作らない設定になっていないかを確かめる
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | Select-Object AutoShareServer, AutoShareWks
PC(PowerShell):UACのリモート制限が外されていないかを確かめる(値がない、または0なら制限が効いている)
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System | Select-Object LocalAccountTokenFilterPolicy
PC(PowerShell・管理者):SMBを受け付けるファイアウォールの規則と、有効かどうかを表示する
Get-NetFirewallRule | Where-Object { $_.DisplayName -like '*SMB*' } | Select-Object DisplayName, Enabled, Profile, Direction
管理用のPC(コマンドプロンプト):別のPCの管理共有に入れるかを試す
net use \\pc01\C$
PC(PowerShell・管理者):共有へのアクセスの記録を表示する(ファイル共有の監査を有効にしている場合)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5140} -MaxEvents 10 | Format-List TimeCreated, Message
AutoShareServer と AutoShareWks は、値がなければ既定の動き(管理共有を作る)です。0になっていたら、管理者が意図して設定したものか確かめます。管理者が設定していないのに管理共有が消えている場合は、マルウェアが消している可能性もあります。
まとめ
| 項目 | ポイント |
|---|---|
| 管理共有とは | Windowsが自動で作る隠し共有。C$(ドライブ)、ADMIN$(Windowsのフォルダ)、IPC$(名前付きパイプ)など |
| 入れる人 | そのコンピュータの Administrators だけ。ローカルの管理者アカウントはUACのリモート制限で入れない(組み込みの Administrator は既定で入れる) |
| 使われる場面 | 管理者のファイル操作、ソフトウェアの配布、リモート管理(IPC$ を通したRPC)など |
| 危ないところ | 管理者の資格情報を盗まれると、横展開の道具になる。同じパスワードのローカル管理者は特に危険 |
| 消すべきか | 基本は消さない。管理ツールが壊れ、攻撃者は止まらない |
| 守り方 | Windows LAPS、ローカル管理者のネットワークログオン拒否、PC同士のSMBの遮断、管理者アカウントの使い分け、監査 |
管理共有は、正しく使えば便利な管理の道具です。「共有があるから危ない」のではなく、「だれの資格情報でも入れてしまう状態」が危ないと考えると、どこを固めればよいかが見えてきます。
- How to remove administrative shares in Windows(Microsoft Learn)
- Overview of problems that may occur when administrative shares are missing(Microsoft Learn)
- Policy CSP – ADMX_MSS-legacy(AutoShareServer、AutoShareWks)(Microsoft Learn)
- Share Functions(IPC$、ADMIN$、C$)(Microsoft Learn)
- Local accounts(Microsoft Learn)
- Description of User Account Control and remote restrictions(Microsoft Learn)
- How to disable User Account Control (UAC) on Windows Server(Microsoft Learn)
- Block the remote use of local accounts in Windows(S-1-5-113、S-1-5-114)(Microsoft Learn)
- Appendix H: Securing Local Administrator Accounts and Groups(Microsoft Learn)
- Secure SMB Traffic in Windows Server(Microsoft Learn)
- Services and RPC/TCP(Microsoft Learn)
- [MS-SMB2] 4.4 Executing an Operation on a Named Pipe(Microsoft Learn)
- Service overview and network port requirements for Windows(Microsoft Learn)
- Advanced Audit Policy Configuration(ファイル共有の監査)(Microsoft Learn)
- PsExec(Microsoft Learn)
コメント