【図解】管理共有(C$・ADMIN$・IPC$)とは?使いどころと安全な守り方を初心者向けに解説

net share を実行したり、「コンピューターの管理」の「共有フォルダー」を開いたりすると、自分では作った覚えのない C$、ADMIN$、IPC$ といった共有が並んでいます。これは「管理共有」と呼ばれるもので、Windowsが自動で作っています。ドライブ全体が共有されているように見えるので、セキュリティは大丈夫なのかと心配になるかもしれません。この記事では、管理共有が何のためにあるのか、だれが使えるのか、そして今どう守るのがよいのかを見ていきます。

この記事でわかること
  1. C$・ADMIN$・IPC$ などの管理共有の中身と、使われる場面
  2. 管理共有に入れるアカウントと、入れないアカウントの違い
  3. 管理共有が攻撃に使われる理由と、今のおすすめの守り方

管理共有とは:Windowsが自動で作る隠し共有

管理共有は、管理者やプログラムがコンピュータをリモートで管理するために、Windows(Serverサービス)が起動時に自動で作る共有です。名前の最後に $ が付いた共有は、エクスプローラーでコンピュータを開いたときの一覧に表示されません。そのため「隠し共有」とも呼ばれます。

エクスプローラーで見ると実際にある共有(PC01)\\pc01(自分で作った共有だけが見える)$ で終わる共有は一覧に出ないC$C:\(ドライブ全体)ADMIN$C:\WindowsIPC$名前付きパイプ(プログラム間の通信)PRINT$プリンタードライバー(プリンターを共有したとき)Windows が自動で作る。C$ と ADMIN$ に入れるのは、そのコンピュータの Administrators だけ
図1 管理共有の正体。一覧には出ないが、Windowsが自動で作っている
共有名中身と用途
C$、D$ …各ドライブのルート全体。管理者がリモートからファイルを置いたり取り出したりするのに使う
ADMIN$Windowsのフォルダ(ふつうは C:\Windows)。リモート管理のときに使う
IPC$名前付きパイプ(プログラム同士の通信の入口)。ファイルは入っていない。削除できない
PRINT$プリンタードライバー。プリンターを共有したときに作られ、リモートでのプリンターの管理に使う
FAX$FAXサーバで、FAXのクライアントが使う
SYSVOL、NETLOGONDCだけにある共有。グループポリシーやログオンスクリプトを配る。名前に $ がないので隠し共有ではない

「隠し」といっても、一覧に表示されないだけです。名前を知っていれば \\pc01\C$ のように指定して接続を試せます。守っているのは「見えないこと」ではなく、次の節で説明するアクセス許可です。

管理共有に入れるのはだれか

C$ と ADMIN$ に入れるのは、そのコンピュータのローカルの Administrators グループに入っているアカウントだけです。一般のユーザーは入れません。ドメインに参加したPCでは、Domain Admins グループが自動で Administrators に入るので、ドメインの管理者は管理共有を使えます。

ただし、ローカルのアカウントの場合は事情が違います。

\\pc01\C$ に、どのアカウントで入れるかドメインのアカウントPC01 の Administrators に入っている(Domain Admins など)入れるローカルの管理者アカウントPC01 で作った管理者(Administrator 以外)入れない(UAC のリモート制限)組み込みの AdministratorPC01 のローカルの Administrator(RID 500)既定では入れる3つ目が攻撃に使われやすいので、LAPS でパスワードを PC ごとに変え、ネットワークからのログオンを拒否する
図2 管理共有に入れるアカウント
アカウントネットワーク越しに管理共有を使えるか
ドメインのアカウント
(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$ につなぎ、名前付きパイプを通す」方法です。

管理用のPC「コンピューターの管理」などPC01IPC$SMB の入口\pipe\srvsvc共有の一覧など、サーバの管理\pipe\winregリモートレジストリ\pipe\svcctlサービスの管理(TCP で届かないとき)TCP 445SMB で接続名前付きパイプの先でRPC が動く名前付きパイプの例
図3 IPC$を使ったリモート管理

RPCには、名前付きパイプを使わずにTCPで直接つなぐ方法(TCP 135と動的なポート)もあります。たとえばサービスの管理は、Windows Vista以降、まずTCPを試し、届かないときに名前付きパイプに切り替えます。どちらを使うかは機能によって違うので、SMB(TCP 445)を止めると、ファイル共有以外の管理機能にも影響が出ることがあります。

なぜ攻撃に使われるのか

管理共有そのものに穴があるわけではありません。問題は、管理者の資格情報を手に入れた攻撃者にとって、管理共有がとても便利な道具になることです。攻撃者は、乗っ取った1台のPCから、ネットワーク上のほかのPCやサーバへ次々に入り込もうとします。これを横展開(ラテラルムーブメント)と呼びます。

① 1台のPCが乗っ取られるフィッシングなどで② 管理者の資格情報を盗むLSASS のハッシュなど③ 別のPCの ADMIN$ にプログラムを置く④ サービスとして実行次のPCへ広がる攻撃者の横展開(ラテラルムーブメント)各段階で止める対策②を止める:Credential Guard、管理者アカウントをふだん使いと分ける③を止める:Windows LAPS でパスワードを PC ごとに変える、ローカル管理者のネットワークログオンを拒否③④を止める:PC 同士の SMB(TCP 445)を Windows ファイアウォールで止め、管理用のサーバからだけ許可
図4 管理共有を使った横展開と、それぞれの段階で止める対策

とくに被害が大きくなるのが、「すべての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の遮断、管理者アカウントの使い分け、監査

管理共有は、正しく使えば便利な管理の道具です。「共有があるから危ない」のではなく、「だれの資格情報でも入れてしまう状態」が危ないと考えると、どこを固めればよいかが見えてきます。

コメント