PowerShell を使用してローカル アカウントの特権を昇格する

PowerShell を使用してローカル アカウントの特権を昇格する

特権昇格とは、攻撃者がアカウントの現在の権限を使用して、システムへの追加の (通常はより高いレベルの) アクセスを取得することです。 権限昇格は、ゼロデイ脆弱性の悪用、標的型攻撃を実行する一流のハッカーの仕業、または巧妙に偽装されたマルウェアの結果である可能性がありますが、ほとんどの場合、コンピュータまたはアカウントの構成ミスが原因です。 攻撃をさらに発展させると、攻撃者は多数の個別の脆弱性を利用し、それらが組み合わさって壊滅的なデータ漏洩につながる可能性があります。

ユーザーがローカル管理者権限を持ってはいけないのはなぜですか?

セキュリティの専門家であれば、次のようにユーザーがローカル管理者権限を持つべきではないことは明らかだと思われるかもしれません。

  • アカウントがさまざまな攻撃に対して脆弱になる
  • 同じ攻撃をより深刻なものにする

残念ながら、多くの組織にとって、これは依然として非常に物議を醸す問題であり、時には激しい議論が伴うこともあります (たとえば、 私の上司は、すべてのユーザーはローカル管理者でなければならないと言っています)。 この議論の詳細には立ち入りませんが、攻撃者はエクスプロイトによって、またはマシンが適切に保護されていなかったため、調査対象のシステムのローカル管理者権限を取得したと考えられます。

ステップ 1PowerShell を使用した逆 DNS 解決

デフォルトでは、PowerShell は多くのローカル ワークステーションとほとんどの Windows サーバーにインストールされます。 そして、それが信じられないほど便利な自動化および制御ツールであると考えられているのは誇張ではありませんが、同様に、それ自体をほとんど目に見えないものに変えることができます。 ファイルレスマルウェア (攻撃の痕跡を残さないハッキング プログラム)。

今回の場合、攻撃者は PowerShell スクリプトを使用してネットワーク偵察を開始し、ネットワーク IP アドレス空間を順次反復処理して、指定された IP がホストに解決されるかどうか、解決される場合はこのホストのネットワーク名が何であるかを判断しようとします。
このタスクを実行するにはさまざまな方法がありますが、コマンドレットを使用します。 取得する-ADComputer は、各ノードに関する非常に豊富なデータのセットを返すため、確実なオプションです。

 import-module activedirectory Get-ADComputer -property * -filter { ipv4address -eq ‘10.10.10.10’}

大規模なネットワークの速度が問題になる場合は、DNS コールバックを使用できます。

[System.Net.Dns]::GetHostEntry(‘10.10.10.10’).HostName

PowerShell を使用してローカル アカウントの特権を昇格する

ほとんどのネットワークはゼロトラスト セキュリティ モデルを使用しておらず、不審なアクティビティのバーストについて内部 DNS クエリを監視していないため、ネットワーク上のホストを一覧表示するこの方法は非常に一般的です。

ステップ 2: ターゲットを選択する

このステップの最終結果は、攻撃を継続するために使用できるサーバーとワークステーションのホスト名のリストを取得することです。

PowerShell を使用してローカル アカウントの特権を昇格する

名前からすると、「HUB-FILER」サーバーは適切なターゲットのように思えます。 一般に、時間の経過とともに、ファイル サーバーには多数のネットワーク フォルダーが蓄積され、多くの人によるフォルダーへの過剰なアクセスが発生します。

Windows エクスプローラーで参照すると、開いている共有フォルダーの存在を検出できますが、現在のアカウントではアクセスできません (おそらく、リスト権限しか持っていないため)。

ステップ 3: ACL を学習する

これで、HUB-FILER ホストとターゲット共有で PowerShell スクリプトを実行して ACL を取得できるようになりました。 すでにローカル管理者権限を持っているため、これをローカル マシンから実行できます。

(get-acl hub-filershare).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags –auto

実行結果:

PowerShell を使用してローカル アカウントの特権を昇格する

このことから、Domain Users グループはリストへのアクセスのみを持っていますが、Helpdesk グループは変更する権限も持っていることがわかります。

ステップ 4: アカウントの識別

ランニング 取得-ADGroupMember、このグループのすべてのメンバーを取得できます。

Get-ADGroupMember -identity Helpdesk

PowerShell を使用してローカル アカウントの特権を昇格する

このリストには、すでに特定されており、すでにアクセスしているコンピューター アカウントが表示されます。

PowerShell を使用してローカル アカウントの特権を昇格する

ステップ 5: PSExec を使用してコンピューター アカウントとして実行する

PsExecは Microsoft Sysinternals のコマンドを使用すると、ヘルプデスク ターゲット グループのメンバーであることがわかっている SYSTEM@HUB-SHAREPOINT システム アカウントのコンテキストでコマンドを実行できます。 つまり、次のことを行うだけです。

PsExec.exe -s -i cmd.exe

これで、HUB-SHAREPOINT コンピュータ アカウントのコンテキストで作業しているため、ターゲット フォルダ HUB-FILERshareHR への完全なアクセス権が得られます。 このアクセスにより、データをポータブル ストレージ デバイスにコピーしたり、ネットワーク経由で取得したり送信したりすることができます。

ステップ 6: この攻撃を検出する

この特定のアカウント権限調整の脆弱性 (ユーザー アカウントやサービス アカウントの代わりにネットワーク共有にアクセスするコンピューター アカウント) が発見される可能性があります。 ただし、適切なツールがなければ、これを行うのは非常に困難です。

このカテゴリの攻撃を検出して防止するには、次を使用できます。 データアドバンテージ コンピュータ アカウントが含まれるグループを識別し、それらへのアクセスを拒否します。 データアラート さらに進んで、この種のシナリオ専用の通知を作成できるようになります。

以下のスクリーンショットは、コンピューター アカウントが監視対象サーバー上のデータにアクセスするたびに起動されるカスタム通知を示しています。

PowerShell を使用してローカル アカウントの特権を昇格する

PowerShell を使用した次のステップ

もっと知りたい? 「ブログ」ロック解除コードを使用すると、すべての機能に無料でアクセスできます。 PowerShell と Active Directory の基本ビデオ コース.

出所: habr.com

コメントを追加します