トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

悪意あるWindowsサービスの実行 のバックアップ(No.5)


設定対策?

悪意あるWindowsサービスの実行

対象OS

  • Windows

必要なアクセス許可

  • 管理者
  • SYSTEM

概説

Windowsサービスとは、ユーザーインターフェースを持たずにバックグラウンドで常駐して動作するプログラムです。Windowsが起動した際に自動起動するように設定できるため、悪意あるプログラム(マルウェア)をWindows サービスとしてインストールできれば、マルウェアの永続化が可能となります。
悪意あるWindowsサービスは、キーボード・画面の窃取、C&Cサーバーとの通信、リモート操作などの機能を提供します。

攻撃評価

戦術分類119 ValuePen Value
初期侵入33

119 Value:Min:1 Max:3 数値が高いほど攻撃実績が多い
Pen Value:Min:1 Max:3 数値が高いほどペネトレーションテストで攻撃が成功しやすい

MITRE 緩和策

特権アカウント管理

アクセス許可によって、上位のアクセス許可レベルで実行されるサービスが、下位のアクセス許可レベルを持つユーザーによって作成または操作されないようにしてください。

psexeを使用せずアンインストールする、もしくは -uオプションを使用しない。(Pass the Hashのおそれ、必ず管理者のコンテキストでKervberos認証されるようにする)

ファイルとディレクトリのアクセス許可を制限する

アクセス許可レベルの高いサービスバイナリを、アクセス許可レベルの低いユーザーが置換または変更できないようにしてください。

Windows 10 STIG

V-63889 認証後のクライアントの偽装ユーザー権利は、管理者、サービス、ローカルサービス、およびネットワークサービスにのみ割り当てる必要があります。

Windows 2016 STIG

V-73785 認証後のクライアントの偽装ユーザー権利は、管理者、サービス、ローカルサービス、およびネットワークサービスにのみ割り当てる必要があります。

Others

CWE-428:引用符で囲まれていない検索パスまたは要素に該当するサードパーティ製のWindowsサービスを修正する。

空白を含むパスを正しく "C:\Program Files\abc\service.exe" ダブルクォテーションで囲まないと、プログラム C:\Program.exe 引数 file\abc\service.exe という解釈ができ、Program.exe がローカルシステムアカウントで実行できる。

デスクトップ エクスペリエンス搭載 Windows Server 2016 上のシステム サービスを無効にする場合のガイダンス

PowerShell でサービスの変更を検知する

$Name=Get-Service |Select Name 
$hash=[string]::concat(([security.cryptography.SHA256]::create().computehash([text.encoding]::ascii.getbytes($Name))|%{$_.tostring("x2")}))
Write-host "ハッシュ値は $hash"
Write-host "サービス数は $($Name.Length)"