脅威リサーチ

攻撃と防御という2つの側面:グループポリシーとログオンスクリプト

投稿者 Anthony Giandomenico | 2020年8月11日
FortiGuard Labsによる脅威分析レポート

「攻撃と防御という2つの側面」と題したブログシリーズの4回目となる今回は、サイバー犯罪者が攻撃に際して使用するさまざまな戦術や手法を解説し、組織がそれらを検知して最終的には防ぐ方法も紹介します。このシリーズの最初の3つのブログ記事をお読みになっていない方は、攻撃と防御という2つの側面:PowerShell攻撃と防御という2つの側面:Bypass UAC攻撃と防御という2つの側面:OS認証情報のダンプ(英語)をお読みください。

はじめに

今回のブログでは、Windows OSにおけるGPO(グループポリシーオブジェクト)について解説します。具体的には、GPOを使用して、Active Directory環境のターゲットマシンに不正ペイロードを展開して実行する方法を説明します。また、この手法を使用する攻撃のリスクを軽減する方法も紹介します。この手法は、MITRE ATT&CKのナレッジベースではGroup Policy Modification(グループポリシー変更)と呼ばれており、最近の標的型ランサムウェア攻撃で広く利用されるようになっています。

グループウォールポリシーとは

簡単に言えば、GPOは、WindowsとActive Directoryに組み込まれた構成管理テクノロジーです。管理者はこれらのテクノロジーを次のようなさまざまな管理タスクに利用できます。

  • 一般的なシステムのロックダウン
  • セキュリティ機能の強化
  • Internet Explorerの設定変更
  • ログオン / ログオフスクリプトの変更
  • ドライブやプリンターのマッピング
  • ローカル管理者の設定:ローカルグループのメンバーシップ

GPOは以下の2つの場所に存在します。

  1. GPC(グループポリシーコンテナ)
  • GPCは、Active Directory環境の各ドメインコントローラに存在し、ステータスやバージョン情報、CSE(Client-Side Extensions:クライアント側拡張機能)への参照、GPT(グループポリシーテンプレート)やソフトウェアインストールパッケージへのパスなどのプロパティ情報が保存されます。重要な点として、GPCがGPO GUID(Globally Unique Identifier)によって参照されることを覚えておく必要があります。
  1. GPT(グループポリシーテンプレート)
  • GPTは、ドメインポリシーのサブフォルダ内のシステムボリュームフォルダ(SysVol)にファイルシステムフォルダとして保存されます。このファイルには、ポリシーで定義した特定の設定に関する情報、具体的には、セキュリティ設定やスクリプトファイルなどが保存されます。
図1:ドメインコントローラのSYSVOLのパスとGUID

GPOは、ユーザーまたはコンピュータごとに適用でき、バックグラウンドで90分ごとに0~30分のランダムオフセットで更新されます。これに対し、ドメインコントローラの更新間隔はそれより短く、約5分ごとに更新されます。GPOは変更された場合のみ更新される点に注意してください。

グループポリシーを作成したら、そのポリシーを何かにリンクあるいは適用する必要があります。その場合、リンク先は、サイト、ドメイン、または部門のいずれかです。すべてのWindowsデバイスにローカルGPOが存在しますが、GPCやGPTにGPOがリンクされている場合、そのGPOがローカルGPOの構成より優先されます。これは、コンピュータやユーザーに複数のGPOが存在できますが、競合する場合は、「継承のブロック」設定を有効にしない限り、最後に適用されるGPOが優先されるためです。適用の順序は以下のとおりです。

  • ローカルGPO
  • サイトGPO
  • ドメインGPO
  • 部門GPO

セキュリティグループを使用することで、GPOの適用方法により詳細なフィルタリングを指定することもでき、WMI(Windows Management Instrumentation)フィルタリングを使用すれば、OS、デバイスのメーカーやモデル、タイムゾーンなどに基づいて適用を判断し、項目レベルでのターゲット設定で設定ごとにフィルターを設定できます。図2に、これらの設定の例を示します。

図2:GPOの項目レベルのターゲット設定

ここで、GPOの強制についても説明しておく必要があります。前述のように、複数のGPOが存在し、リンクを指定できます。そして、これも前述のように、競合する場合は、リンクの優先順位に従って処理されます。この概念はとてもわかりやすいように聞こえますが、複数のGPO、GPOのリンク、継承のブロック、GPOを適用する機能がある場合、適用されるGPOとされないGPOが完全に理解するのが少し困難になる可能性があります。

GPOの強制は、この管理の問題を解決する1つの方法です。GPOを強制することで、親のコンテナにリンクされたGPOが存在するためにそのGPOの設定がブロックされたり上書きされたりすることがなくなり、強制されたGPOが確実に適用されるようになります。継承やブロックされた継承に関係なく、強制されたGPOが常に適用されることを図で説明すると、次のようになります。

図3:GPOの強制のロジック

GPO(グループポリシーオブジェクト)の悪用

前のセクションでの説明にあるように、GPOの管理には多くの柔軟性(複雑さと言うべきかもしれません)が存在します。その結果、セキュリティの世界でよく言われる、「複雑さは多くの場合に攻撃者が構成ミスに乗じる機会を誘発する」という問題が生じることになります。それでは、GPOがどのように攻撃者に悪用されるのでしょうか。

まず初めに、GPOには極めて有用な情報がたくさんあります。また、デフォルトでは、AD内の認証されたユーザーは、GPOの情報を照会して有効な答えを受け取ることができます(すなわち、誰が何にアクセスしているかを知ることができます)。この手順にあたって、権限の昇格は必要ありません。

これまでに、GPO環境のマップの作成に必要な偵察活動を自動化できる、いくつかのオープンソースのツールが作成されてきました。最近の攻撃で使用されているツールの一部を以下に紹介します。

  • PowerView
    • PowerViewは、PowerSploitの一部であるPowerShellツールで、Active Directory環境の状況認識の目的で利用されます。このツールを利用することで、ユーザー、グループ、権限などの有用な情報を取得できます。
  • BloodHound
    • これは、攻撃経路として悪用される可能性がある、Active Directory内の関係を検索するツールです。また、グラフ理論を活用して、ネットワークでの水平移動や特権の昇格を可能にする目的で悪用できる脆弱性を特定します。
  • Grouper2
    • Active Directoryグループポリシーのセキュリティ関連の構成ミスを見つける目的で利用されるツールです。

GPOの(少なくとも私にはとって)最も手っ取り早い悪用は、設定を変更することで、GPOが適用されるデバイスに不正ペイロードを配信し、実行するというものです。標的型攻撃では、攻撃者が標的とする環境に対するアクセスを手に入れて、グループポリシーの設定を変更し、ランサムウェアなどの破壊型ペイロードを送り込むのは、珍しいことではありません。このような攻撃では、タスクのスケジュールやログオン / ログオフスクリプトなどのWindows環境設定を変更したり作成したりすることで、これを実行できます。

これらの設定の中には、外部パスを参照できるものもあり、それらのパスには、GPOと同じセキュアアクセスが存在するとは限りません。そのため、GPOを変更できない場合であっても、参照されたパスにアクセスできるのであれば、正規のファイルを不正ファイルに置き換えることができます。スケジュールされたタスクを手動で作成し、直ちに実行されるようにする方法の例を、以下の図4に示します。

図4:GPOでのスケジュールされたタスクの作成

GPOの設定を変更できるようになった攻撃者は、さまざまなことを実行できるようになり、たとえば、セキュリティ設定を変更することで他の不正アクションを実行できるようしたり、新しいローカル管理者アカウントを追加してマシンに対する管理者アクセスを付与したり、新しいサービスを作成して実行するなどの不正ファイルを実行するための方法を作成したりできるようになります。

GPOは上位からの継承に基づいて適用されるため、必要なアクセス権を手に入れた攻撃者は、GPOのリンクやリンクの解除が可能になります。これにより、ドメイングループのメンバーシップの変更によるアクセスの昇格やWindowsデバイスのセキュリティポリシーの変更などのタスクの実行が可能となり、攻撃対象領域が拡大する恐れがあります。

これ以外にも、GPOを悪用する方法はたくさん考えられますが、ここでは省略します。GPOに対する攻撃の詳細については、GPTリダイレクト、管理者テンプレートの悪用、registry.polファイルを操作するスターターGPOに関連する攻撃を参照してください。

対策

GPO攻撃には色々な対策がありますが、最大の対策は、攻撃者が管理者権限を手に入れないようにすることです。これに役立つツールはたくさんあり、パスワード保護から特権昇格攻撃のブロック、さらには異常検知まで、その範囲は多岐にわたります。これらの攻撃を実行するには適切なアクセスが必要であり、管理者アクセスがなくても何らかの方法を完成させることができるかもしれませんが、時間や手順が余分に必要になるため、防衛側が環境内で発生する不審な動きを特定できる可能性が高くなります。

アクセスという点では、認証されたユーザーへのGPOのセキュリティフィルタリングに対する読み取りアクセス付与のデフォルト設定を削除するのも1つの手段です。これがドメインコンピュータに変更されると、攻撃者がセキュリティ態勢のマップを作成する作業がより困難になります。前述の偵察ツール(PowerView、BloodHound、Grouper2)の多くで、必要なすべての情報をハッカーが手に入れるためには、GPOへの読み取りアクセスが必要です。これらのツールで一部の役に立つ情報を取得できる可能性はありますが、すべての情報を手に入れられるわけではありません。攻撃者に知られる情報を少なくすることで、攻撃者がはるかに困難な状況に置かれることになります。

図5:デフォルトのドメインポリシーでの認証されたユーザーの読み取りアクセス

防衛側もこれらの偵察ツールを利用することで、GPOやADの全体的なセキュリティ態勢を知ることができます。たとえば、AD環境でGrouper2ツールを実行すると、攻撃者に悪用される可能性があるGPOのすべての構成ミスを簡単に知ることができます。その良い例として、Grouper2の結果を図6に示します。

図6:Grouper2ツールによるGPO構成ミスの結果

この図に示すように、7zipのMSIパッケージを構成し、インストールするようにしてみました。このファイルはもう存在しませんが、ファイルが参照しているディレクトリへの書き込みアクセスは残っており、これは、攻撃者が不正ペイロードの名前を7z1900-x64.msiに変更し、参照しているそのパスにペイロードをコピーできることを意味します。つまり、攻撃者は、このポリシーが適用されるすべてのマシンに不正ペイロードをロードして実行できるということです。

防御に役立つもう1つの偵察ツールが、BloodHoundです。下記のビデオでは、このツールで取得できる情報の一部と、攻撃側だけでなく、防御側である管理者にもどのように役立つかを解説しています。

最後の対策として紹介するのは、AD管理階層モデルの実装です。ADの階層モデルの概念はネットワークセグメンテーションにとてもよく似ており、基本的には、ADにゾーンを設定することで特権アクセスを制御します。階層モデルを実装することで、攻撃者が何らかの管理権限を手に入れたとしても、階層から階層へと移動するのが少し困難になります。このモデルは、管理アカウントの以下に概説する3つのレベルで構成されています。

  • 階層0
    • この最上位の階層は、フォレスト、ドメイン、ドメインコントローラなどを始めとする、アクティブディレクトリの管理制御を担当するすべてのADオブジェクトで構成されます。ADそのもののメンテナンスを担当する管理ユーザーだけがこの階層にアクセスできます。
  • 階層1
    • この階層が攻撃されると、エンタープライズサーバーや、一般的なサーバー管理者がアクセスすることになるクラウドサービスなどのアプリケーションへのアクセスが可能になります。
  • 階層2
    • この最下位の階層には、ユーザーのワークステーションやデバイスが含まれます。一般的には、ヘルプデスクやその他のサポート担当者がこの階層のリソースにアクセスできるようになっているはずです。

この階層モデルを使用することで、攻撃者が階層2の管理者の権限を手に入れた場合であっても、さらに、階層1や0へのアクセスを手に入れる必要があります。これも、完全な保護ソリューションというわけではありませんが、攻撃者がこれらの異なる階層にアクセスするために必要な手順が多くなります。また、ネットワーク全体のセキュリティ管理が適切であれば、攻撃者が実行する必要のある手順が多くなり、攻撃者の活動を検知できる可能性が高くなります。

結論

AD保護に構成ミスが存在すると、GPOが悪用されて、ランサムウェアなどの不正ペイロードの配信や実行が可能になり、セキュリティを強化するための構成が明らかになり、結果として、攻撃対象領域が拡大し、システムが脆弱になる恐れがあります。このブログでは、GPOの基礎、攻撃者がGPOを始めとするADネットワークに関する情報を収集する際に利用するツールと方法、さらには、それらの情報を悪用してサイバー攻撃を遂行する方法について解説してきました。

重要なのは、攻撃者の視点に立って自らの環境を検証することであり、このブログで紹介したツールを利用することで、潜在的なセキュリティギャップや攻撃者がたどる可能性のある攻撃経路に対する理解が深まるだけでなく、ネットワークを悪用しようとする攻撃者という新たな視点で環境を見直すことができます。攻撃側と防御側の両方の視点に立つことは、どのような状況においても有益です。

保護ソリューション

Group Policy Modification(グループポリシー変更)からの保護という点では、おそらく、1対1の関係は存在しません。ポリシーの変更そのものは、必ずしも悪意のある行為というわけではありません。Group Policy Modificationの手法の前後にあり、敵対者が実行している可能性がある、関連性のある手法に注目する必要があります。

フォーティネットのMDR(Managed Detection and Response)やIR(Incident Response)のお客様で検知されることの多い、わかりやすい例を挙げると、攻撃者は最初にOS Credential Dumping(OS認証情報ダンピング)の手法を使用して、GPOの変更に必要なアクセス権を手に入れてから、GPOを変更することで、ランサムウェアなどのマルウェアをすべてのWindowsシステムにダウンロードして実行します。この場合、FortiEDRなどのEDRソリューションであれば、悪意のあるアクティビティを特定して実行を防止できるため、前後の両方のアクションに対応できます。FortiGuard Labs

の脅威リサーチ、およびFortiGuardセキュリティサブスクリプション / サービスのポートフォリオについて、詳細をご覧ください。FortiGuard Labs Weekly Threat Brief(英文)の購読は、こちらからお申込みいただけます。

フォーティネットの無償サイバーセキュリティトレーニングについて、またフォーティネットのネットワーク セキュリティ エキスパート プログラムネットワーク セキュリティ アカデミー、およびFortiVetプログラムについて、詳細をご覧ください。