[2020年最新版] サイバー攻撃監視はカンタンに自動化できないのか? 専門知識不要、コスト不要の徹底自動化ガイド
「なぜサイバー攻撃に気づけないないのか」という基礎から、「自動検知するための具体的な仕組みづくり」まで。ログ管理の観点から、効率的なサイバーセキュリティ対策をご紹介します。
[2020年最新版] サイバー攻撃監視はカンタンに自動化できないのか? 専門知識不要、コスト不要の徹底自動化ガイド
資料を無料ダウンロード

MITRE ATT&CKからセキュリティ対策を読み解く(権限昇格とエクスプロイト編)

MITRE ATT&CKからセキュリティ対策を読み解く(権限昇格とエクスプロイト編)

サイバーセキュリティ業界でよく耳にするMITRE ATT&CK。MITRE ATT&CKとは、サイバー攻撃で使用される戦術と手法を体系的にまとめたナレッジベースです。これを読み解くことによって、サイバー攻撃の手法とその対策を理解することができます。今回は、侵入に成功した攻撃者がより広範囲の攻撃を可能にするために試みる「権限昇格」と、システムやソフトウェアの脆弱性を利用して攻撃する「エクスプロイト」について解説します。

権限昇格

PCやサーバーでは、ユーザ毎に権限が設定されています。その権限により、操作や変更できる範囲が異なります。通常、一般ユーザには、厳しい制限が設定されており、システムの変更などをできないよう運用されていることが多いかと思います。
侵入に成功した攻撃者は、まず、入り込んだユーザの権限でプログラムを起動し、システムやネットワーク内の広い範囲で活動するため、さらに高い権限に昇格しようと試みます。その活動が「権限昇格」で、ATT&CKでは、TA0004 Tacticsがそれにあたります。

Tactics(戦術) 概要
初期アクセス(Initial Access) ネットワークに侵入しようとするしている。
実行(Execution) 悪意のあるコードを実行しようとしている。
永続化(Persistence) 不正アクセスする環境を確保しようとしている。
権限昇格(Privilege Escalation) より高いレベルの権限を取得しようとしている。
防衛回避(Defense Evasion) 検知されないようにしようとしている。
認証情報アクセス(Credential Access) アカウント名とパスワードを盗もうとしている。
探索(Discovery) アクセス先の環境を理解しようとしている。
水平展開(Lateral Movement) アクセス先の環境を移動しようとしている。
収集(Collection) 目標に関心のあるデータを収集しようとしている。
コマンドアンドコントロール(C&C)
(Command and Control)
侵害されたシステムと通信して制御しようとしている。
影響(Impact) システムとデータを操作、中断、または破壊しようとしている。

権限昇格で使われる ATT&CK Technique

今回も、Windowsで使われる手法に絞って紹介しましょう。

昇格制御メカニズムの悪用(T1548)

昇格権限が与えられたユーザの操作により、権限を昇格します。Windowsであれば「User Access Control(UAC) -ユーザアカウント制御-」、Linuxなどなら「su -スーパーユーザ-」です。
Windowsでは、サブテクニックTA1548.001「UACのバイパス」がこれにあたるTechniqueです。最新システムのほとんどにはUACメカニズム(管理者権限の利用を制限する機能)が搭載されていますが、攻撃者が目的を果たすためには、このメカニズムをバイパス(迂回)する必要があり、その際利用されるのがこのTechniqueです。ソーシャルエンジニアリングにより、ユーザを騙してUACの確認ダイアログを操作させたり、Windowsシステム上にあるUACをバイパスできる脆弱性を利用します。侵入されたユーザが端末ローカルの管理者権限を持っている場合に悪用されます。

アクセストークンの操作(T1134)

Windowsは通常、アクセストークン(ユーザのセキュリティ識別情報)を使用して、実行中のプロセスの所有権を判断します。
攻撃者は高い権限のアクセストークンを盗み出したり、偽装したりして、起動するプロセスの権限を昇格します。トークンを盗み出すためには、あらかじめ、他のテクニックにより昇格したプロセスが必要となります。

ブートまたはログオン時の自動実行・初期化スクリプト(T1547T1037

これらは、前回の「永続化」でも利用されていました。ATT&CKでは、一つのATT&CK Techniqueが複数のTacticsに使われている場合があります。「永続化」では、ログオン時の自動実行に限定して解説しましたが、一度昇格に成功してから、システムブート時のプログラム自動実行やシステム初期化スクリプトを設定すると、OSの起動時から高い権限で攻撃プログラムを起動できます。

システムプロセスの生成または改竄(T1543)

こちらも一度昇格に成功してから、攻撃プログラムをWindowsサービスとして登録することで、高い権限で攻撃プログラムを継続起動させるTechniqueです。

イベント起動による実行(T1546)

これのも「永続化」でも使われてたTechniqueです。他の手段で一度昇格に成功してから、システム上のイベント(WMIなど)により起動するプログラムを登録することで、高い権限で攻撃プログラムを起動できます。

権限昇格のためのエクスプロイト(T1068)

システムやソフトウェアの脆弱性を悪用し、それらのプログラムの権限を昇格させます。多くの場合は、昇格可能なユーザから行う必要があります。

グループポリシーの変更(T1484)

これには、一度Active Directoryドメインの高い権限を取得する必要があります。ドメインの高い権限を取得されてしまうと、グループポリシーを変更し、攻撃プログラムを高い権限で起動するための様々な設定を行うことが可能となり、非常に危険です。

実行フローのハイジャック(T1574)

これも「永続化」でも使われていたTechniqueです。高い権限で起動されるプログラムの実行フローの途中に、攻撃プログラムを起動するよう仕掛けることで、攻撃プログラムに高い権限を与えることができます。ハイジャックされる側に脆弱性があるか、あるいは一度昇格に成功した状況でハイジャックを仕掛ける必要があります。

プロセスインジェクション(T1055)

起動中のプロセスに、攻撃プログラムのコードを注入して実行させるもので、DLLインジェクション(T0155.001)、PEインジェクション(T0155.002)、スレッド実行ハイジャック(T0155.003)、APCインジェクション(T0155.004)などなど、様々な手法があります。それらの細部の仕組みを理解するためには、Windowsのプロセス実行に関する専門知識が必要です。
権限昇格のためには、高い権限のプロセスに対してコードを注入できる必要があるため、通常は一度昇格した状態で実行しますが、脆弱性により、高い権限でなくても実行できてしまう場合があります。

スケジュールされたタスク・ジョブ(T1053)

タスクスケジューラに登録したタスクを、高い権限で実行させる手法です。現在では、一般ユーザではタスクの登録ができないようになっているので、これも一度昇格してから行う必要があります。

正規のアカウントの盗用(T1078)

侵入した状況で、ドメインやシステム内の高い権限を持つ正規のアカウントの資格情報を盗み出し、その後、攻撃プログラムを起動するために使用します。「脆弱性を悪用できる場合」、「管理がずさんである場合」を除くと、他のアカウントの情報にアクセスする時点で、一度昇格に成功している必要があります。

さて、前述したTechniqueの多くが、「一度昇格した状態で」実行する必要があり、事前に他の手段で昇格しなければなりません。この際に使えそうなのは、「UACのバイパス」「権限昇格のためのエクスプロイト」、あるいは「実行フローのハイジャック」「プロセスインジェクション」の4つ。
このうち、「権限昇格のためのエクスプロイト」以外の3つは、Windowsシステムやソフトウェア脆弱性を利用した「エクスプロイト」の一種です(ソーシャルエンジニアリングによる手法は除く)。次章では特に重要なこの「エクスプロイト」について解説します。

TIPS:
ところで……「一度昇格に成功しているなら、他の手段を使う必要はないのでは?」と疑問に思うかもしれません。しかし、いつもと異なるプログラムとして起動したものは「怪しい」と判定されるかも知れませんし、継続的に動けるとも限りません。次回アップデートで脆弱性がつぶされてしまうかもしれません。攻撃者からすれば、他のTechniqueを使うことによって、昇格したプログラムを永続化(TA0003)できたり、正規のプログラムに隠れて起動できたり(偽装:TA0005)とメリットがあるのです。

エクスプロイト

さて、権限昇格では「エクスプロイト」が危険ということがわかりましたが、そもそも「エクスプロイト」とは何でしょう?
本来のExploitは、「全力を振り絞って何事かをやり遂げる」という良い意味合いを持つ言葉でしたが、いつしか「奴隷労働などの搾取(搾り取る)」という悪い意味に転じてしまったようです。サイバーセキュリティの世界では主に、「ソフトウェアの脆弱性を悪用するテクニック」を意味します。
ATT&CKでは、権限昇格以外のTacticsにおいても、「○○のためのエクスプロイト」というTechniqueが設定されています。目的は異なりますが、脆弱性を悪用するという点は同様です。以下がその一覧になります。

 

さまざまな攻撃フェーズでのエクスプロイトがありますが、これらの記述内容は「T1068:権限昇格のためのエクスプロイト」と大差なく、いずれも詳細なサブテクニックの記載がATT&CKにはありません。危険であるにもかかわらず、記述が少ないのはなぜか。それは、「脆弱性が日々様々なソフトウェアに対して発見され、対処され続けているためである」と考えられます。スタンダードなTechniqueとして記述するのが困難なのでしょう。
より危険なものは、存在が知られていないか、存在はわかっていても対応されていない脆弱性(ゼロデイ脆弱性)です。攻撃者側のみが知っているゼロデイ脆弱性を突くマルウェアがあったとしても、アンチウィルスなどのシグネチャベースの手法では検出することができません。

エクスプロイトの一般的な形は、攻撃者のコードのインジェクションです。実行パスの脆弱性によるインジェクションの他は、一般的にバッファオーバランの脆弱性のあるプログラムが狙われます(※参考になるURLを後述)。その箇所をきっかけに、動作中のプログラムの中に、攻撃者側のプログラムを仕込んで動かします。もし、高い権限で動作するプログラム、高い権限に移行しうるプログラムに脆弱性があると、攻撃者の権限昇格を招きます。

※参考になるURL

権限昇格を検出する方法

権限の昇格や、そのきっかけとなる3つ手法(「UACのバイパス」「実行フローのハイジャック」「プロセスインジェクション」)の実行は、下記一覧のイベントの監視によって検知できる可能性があります。

検出対象 イベントID 解説
Windows
監査ログ
4672 UACで昇格できるユーザがログオンした時に出力されます。Windowsサービス関連以外で出力されたものがあれば、昇格可能なユーザのログインの検知となります。
4688 プロセス起動時に出力されます。このイベントのうち、一般ユーザが起動したプロセスで、TokenElevationTypeが、"%%1936" (Type1、UAC無効時)、%%1937 (Type2、UACにより昇格された)の場合で、MandatoryLabelが "High"を含む、あるいはSID(S-1-16-xxxx)の末尾が12288(0x3000)以上の場合、昇格されています。
sysmon ログ 1 監査ログ 4688 と同様、プロセス起動時に出力されます。一般ユーザが起動したプロセスで、InegrityLevelが "High"の場合、昇格されています。
7 プロセスが、実行イメージ(EXE、DLLなど)をロードした時に出力されます。ユーザが書き込むことのできるフォルダ:C:\Users、C:\ProgramData、C:\Windows\temp などから読み込まれるものを監視します。
8 プロセスが、CreateRemoteThread APIにより、他のプロセスにプログラム実行を指示しする場合に出力されます。ユーザが起動したプロセスが、他のプロセスに対して行うものは、プロセスインジェクションの可能性があります。
10 プロセスが、他のプロセスをオープンした(情報を取得したり、制御するため)場合に出力されます。ユーザが起動したプロセスによるものを監視します。
25 プロセス外部から、プロセスの実行イメージの変更を受けたものを出力します。変更後のイメージファイルが、該当のプロセスとは無関係なもの、ユーザが書き込むことのできるフォルダ:C:\Users、C:\ProgramData、C:\Windows\temp などから読み込まれるものを監視します。

エクスプロイトの検知

さて、もっと一般的にエクスプロイトの検知を考えたいところですが、実はそれが難しい……。T1068のDetectionは、以下のように記述されています。(私のつたない日本語訳で恐縮です)。

「利用できるツールに依存しますが、ソフトウェアへのエクスプロイトを検出することは困難です。ソフトウェアへのエクスプロイトは常に成功するとは限らず、エクスプロイトされたプロセスは、不安定になったりクラッシュしたりする可能性があります。また、侵害が成功したことを示す可能性のあるシステムのふるまい、例えばプロセスの異常な動作などを探します。例として、ディスクに書き込まれた疑わしいファイル、実行を隠そうとするプロセスインジェクション(T1055)の痕跡、または探索活動の痕跡などが含まれます。OS資格情報のダンプ(T1003)などの探索活動には、多くの場合、より高い権限が必要です。 攻撃者がより高い特権を獲得したことを示唆する、付随したふるまいを探します。」

直訳体でわかりにくいですが、注目して欲しいのは下記の2つです。

  • 不安定になったり、クラッシュしたプロセスに、プロセスインジェクションの痕跡が無いかを探す
  • プロセスが通常と異なるふるまいをしていないか、昇格した結果として、他の活動をしていないかを探す

 

プロセスインジェクションの痕跡は、前述したsysmonのログで検出できる場合がありますが、その他の「通常と異なるふるまい」としては、例えば「通常行わないファイル読み書き」や「ネットワーク通信」、「他のプロセスの起動」、「DLLのロード」、「活動する時間帯の違い」などが考えらえます。これには、各プロセスの通常の活動パターンを把握しなければいけません。あらかじめ調査したり、日常的にモニタしてふるまいの変化を検知したりという手法が必要になります(例えば、網屋のALogシリーズでは、機械学習によるふるまい検知の手法「リスクモニタリング」が組み込まれています)。

リスク低減・防御

権限昇格を防ぐ手段としては、以下のようなものがあります。

  • システムやアプリケーションのアップデートを確実に行い、脆弱性を放置しない。
  • エンドユーザに端末ローカルの管理者権限を渡さない。
  • 管理アカウント情報の管理を厳格にする。(平文メモ、メール、チャットなどに残さない)
  • システムのセキュリティ機能、データ実行防止(DEP)、アドレス空間のランダム化(ASLR)などのセキュリティ機能を有効にする。今時のOSインストールではデフォルトで有効になっていますが、これを無効化しない。Windowsのコントロールパネル「Exploit Protection」で確認できます。

 

脆弱性を放置すると、エクスプロイトによる、権限昇格を始めとしたさまざまなリスクが高まります。システムの既知の脆弱性は月例アップデート等で随時対応されますが、サードパーティ製ソフトウェアの更新チェックは漏れることがあるので、注意が必要です。特定の業種を狙う標的型攻撃では、その業種で良く使われるアプリケーションの脆弱性が悪用されることがあります。
社内の業務によっては、情シス以外でも、管理者権限を必要とする場合があります。例えば、システム開発業務では、開発やテストのため、開発・検証システムの管理者権限が必要になります。そのような場合、開発・検証に用いるネットワークを通常の業務ネットワークから切り離し、開発・検証ネットワークの構成に対応した制御・監視のポリシーを設定する必要があります。

ゼロデイ脆弱性、つまり未知(あるいはパッチ未提供)の脆弱性については、権限の限定、システムのセキュリティ機能による間接的な防御に頼る他ありません。

まとめ

今回は、権限昇格と、それに関連するエクスプロイトについて解説しました。昇格のきっかけとなるものはエクスプロイトが多いですが、ATT&CK ではエクスプロイトについて詳細な情報が記載されておらず、検出と防御も難しそうだ、ということがわかりました。
脆弱性を狙うエクスプロイトとしては、今回のように侵入した後に行うものの他、WebサーバーやVPN機器のような公開ポイントからの侵入に利用するもの(T1190など)があります。それらは権限の高い状態で動作したり、ユーザ認証情報を持っていたりする場合があるため、狙われると非常に危険です。最近はVPN機器の脆弱性からアカウント情報を盗まれ、侵入されるケースも多く報道されています。社内のエンドユーザ端末のみでなく、それらの機器やサーバーのファームウェア、OS、ミドルウェア、アプリケーションのバージョンも常に最新に保つ手順を整備しておくのが肝心です。

株式会社網屋
さっぽろ研究所フェロー
石川 貴之(いしかわ たかゆき)

前職では、エンドポイントログ管理製品をはじめとする数々の開発案件にプロジェクトマネージャーとして携わる。
現在は網屋さっぽろ研究所のフェローとして、最先端のサイバー攻撃手法の調査・解析に従事。
特にサイバー攻撃のナレッジベースである「MITRE ATT&CK」に精通し、近年はログという着眼点でサイバーセキュリティについて研究している。

ホワイトペーパー

[2020年最新版] サイバー攻撃監視はカンタンに自動化できないのか?

専門知識不要、コスト不要の徹底自動化ガイド

「なぜサイバー攻撃に気づけないないのか」という基礎から、「自動検知するための具体的な仕組みづくり」まで。ログ管理の観点から、効率的なサイバーセキュリティ対策をご紹介します。

こんな方におすすめ!

  • 1

    標的型攻撃の
    手法・対策を
    知りたい

  • 2

    セキュリティ運用
    の自動化メソッド
    を知りたい

  • 3

    サイバーセキュリティ
    対策にログを
    活用したい