Black Hat USA 2020・DEF CON 28調査報告 Part2

イノベーションセンターの星野と名雲です。 前回に引き続き、2020年8月上旬にオンラインで開催されたBlack Hat USA及びDEF CONの発表内容を2つ、紹介します。

BlackHat及びDEFCONについては、去年の参加記事を御覧ください。

この記事では、以下の2つの講演を紹介いたします。

講演 資料 動画
Office Drama on macOS 資料 動画
A Framework for Evaluating and Patching the Human Factor in Cybersecurity 資料 -

Office Drama on macOS

出典:http://i.blackhat.com/USA-20/Wednesday/us-20-Wardle-Office-Drama-On-macOS.pdf

Microsoft Officeのマクロ付きドキュメントを介した攻撃に関する講演です。対象はWindowsではなく、macOSです。(BH・DEFCONあるあるですが、この講演はBHとDEFCON双方で発表されていました。)

本講演では、大きく分けて以下の3点について説明しています。

  • 最近の攻撃事例
  • 上記事例よりも先進的な攻撃実証(最新OSでパッチ適用済み)
  • 実証した攻撃の防御方法

最近の攻撃事例

一つ目は、最近の攻撃事例です。Microsoft Officeのマクロ付きドキュメントを用いた攻撃について、2017年、2018年、2019年に起きた事例を一つずつ紹介しています。それぞれのマクロやペイロードの分析結果も説明されています。攻撃事例には以下のような特徴がありました。

  • 米大統領選やビットコインなど時事的なファイル名を利用
  • APT GroupであるLazarus APTがマクロ付きドキュメントを悪用
  • マクロ経由でPythonを呼び出し、ペイロードのダウンロードや実行を行う
  • 2018年の事例ではサンドボックスをエスケープする手法を利用(以降、サンドボックスエスケープと記載)

この中で最も興味深いのは、サンドボックスエスケープです。最近のMicrosoft Officeのアプリケーションは、サンドボックス化された環境で動いています。これが何を意味するかというと、仮にマクロ付きドキュメント経由で悪性なコードが実行されても最小限の被害に留めることができます。例えば、攻撃者がリバースシェル1を張ったとしても、サンドボックス内で許可されたリソースにしかアクセスできず、ユーザが利用するディレクトリにある機微情報の含まれたファイルにはアクセスできません。また、Persistence(永続化)を行うこともできません。

サンドボックスエスケープは、このサンドボックスから脱出する手法であり、権限的に許されるすべてのファイルへのアクセスや、Persistenceが可能になります。この手法は、Adam Chesterという研究者の手法で、講演中ではAdam's PoCと呼んでいます。Adam's PoCは、Microsoft Officeのアプリケーションが、特定の名称のファイルに限り、サンドボックス外のファイルの読み取り・書き込みを許可する仕様があることを利用します。これを利用すると、macOSのLaunchAgentsディレクトリ配下にプロファイルリストを作成できます。つまり、ログイン時に実行される処理に任意の悪性コードを登録できます。ここで起動されるコードは完全にサンドボックス外にいるため、Microsoft Officeのサンドボックスを抜け出して感染を実現できるというわけです。 詳細はこちらを御覧ください。

発表者によると、上述の攻撃はどれも"Super lame"(ちょーだせぇ)とのこと。なぜなら、マクロを実行する時に警告のポップアップが表示され、「許可」をおさなければマクロが実行されないためです。この機能は1999年にメリッサと呼ばれるマクロウィルスが登場した後、Microsoftが緩和策として施した機能のようです。

上記事例よりも先進的な攻撃実証(最新OSでパッチ適用済み)

2つ目の「上記事例よりもAdvancedな攻撃実証」では、いくつものエクスプロイトを組み合わせて、よりスマートな攻撃を目指します。個人的にはこれが最も興味深い内容でした。

個々のエクスプロイトを説明するとかなり長くなってしまうので、ここでは最終的なエクスプロイトチェーン2を簡単に説明します。 1. "0-click Attack"によるマクロ付きドキュメント開封時の警告をバイパスする 2. "Adam's PoC"に対するMicrosoftのパッチの穴を利用してマクロ経由でとあるZIPファイルを~/Library配下へダウンロードし、ログイン項目(Login Items)に登録する。 3. ユーザが再ログインすると、ZIPが展開され、~/Library/LaunchAgents/foo.plist が配置される 4. さらにユーザが再ログインするとfoo.plistで指定した悪性コードが実行され、感染する

出典:http://i.blackhat.com/USA-20/Wednesday/us-20-Wardle-Office-Drama-On-macOS.pdf

一つずつ意味を説明します。

1.では、SYLKというファイル形式とXLMというマクロ言語を利用し、マクロ付きドキュメントの保護ビューやマクロのアラートをバイパスします。

2.では、Adam's PoCに対するMicrosoftのパッチが「 LaunchAgentディレクトリ等の特定のディレクトリへのファイル書き込み/読み込みの禁止」であったことを利用し、サンドボックス外の領域へ任意のファイルを配置し、それをログイン項目に登録します。ログイン項目は、ユーザのログイン時に自動で指定したファイルを実行する機能です。ここでは、ZIPファイルを~/Library配下に配置し、そのZIPファイルをログイン項目に指定します。この理由は後ほど説明します。

なお、ログイン項目はあくまでファイルを指定するだけであり、引数指定ができないので、ターミナルアプリを起動させても悪性な処理を実行できません。かといって、ペイロードを含んだファイルをログイン項目に指定すると、信用できない作成者のファイルとみなされてブロックされます。そこで、3.の手法を取ります。

3.では、2.で配置したZIPファイルが展開されています。これは、ログイン項目にZIPが指定された場合、ZIPを開く際デフォルトのアプリケーションとして指定されているアーカイブユーティリティが起動し、自動でZIPを展開することを利用しています。さらに、ZIPファイルの圧縮前のディレクトリ構造を./LaunchAgents/foo.plist にしておくことで、展開されたときに~/Library/LaunchAgents/foo.plistとなるようにします。2.でZIPファイルを~/Library配下においたのはこのためです。

4.では、再ログイン時に3.で配置した起動エージェントが実行され、本命の感染処理が行われます。ログイン項目ではなくLaunchAgentsを利用することで、bashに引数を指定し、任意の処理を実行できます。発表者のスライドの例では、bashを使って外部とソケット通信を行うようにしています。

以上が、より先進的なエクスプロイトチェーンの簡単な説明です。

実証した攻撃の防御方法

最後は上記の攻撃実証に対する防御方法です。発表者は以下の二つを推奨しています。 まず一つ目は、プロセス監視です。Excel等のOfficeアプリを親プロセスに持つcurlやPythonなどのプロセスを監視することで、ファイルダウンロードや実行を検知します。 二つ目はファイル監視です。ログイン項目は、~/Library/Application Support/com.apple.backgroundtaskmanagementagent/backgrounditems.btm で管理されます。そのため、このファイルを監視することで、意図しないログイン項目が追加されたかどうかを確認できます。

以上、本講演の内容を簡単に説明しました。 彼らの発表スライドでは、リファレンスが多く示され、その一つである彼らのブログではより詳細な説明がされていました。そのため、興味を惹かれた部分を深堀りしやすいという点で、良い発表だと感じました。(あと、スライドのキャラクターが可愛かったです。)

A Framework for Evaluating and Patching the Human Factor in Cybersecurity

ソーシャルエンジニアリング攻撃に対するユーザーの対応力を評価するための方法とフレームワークを紹介した発表です。

ソーシャルエンジニアリング攻撃は、スピアフィッシング、スパムポップアップ、怪しい権限要求、証明書の操作など近年変化しており、これらの多様な種類の攻撃の対策のためにユーザーが必要とするスキルが多岐にわたることは、皆さんご存知かと思います。

これまで、一般的には以下のような対策がとられておりますが、いずれも単独では課題があります。

  • ヒアリング
    • 自己申告ベースであり正確性に欠ける
  • 攻撃シミュレーション
    • 部分的であり網羅性に欠ける
  • トレーニング
    • 汎用的であり現実性に欠ける
  • 保護・隔離
    • 一次的であり継続性に欠ける

提案

発表者は「特定のソーシャルエンジニアリング攻撃に対するユーザーの対策力を継続的かつ客観的に評価するためのフレームワーク」を提案しています。

上記に挙げた対策の欠点を補うため、全てを組み合わせて実施します。つまり、以下のようになります。

  1. ユーザーのアンケートによるセルフ診断
  2. フィッシング攻撃のシミュレーション
  3. セキュリティ意識トレーニング
  4. メール保護・ブラウザ隔離

セルフ診断では、ユーザーにセキュリティに関するアンケートを取り、対策が出来ているかを自己申告してもらいます。 攻撃シミュレーション中は、ユーザーが利用中のデータを収集します。測定機能として以下の方法を使用します。

  • Androidエージェント
    • スマートフォンで操作しているときのユーザーの実際の行動を測定
  • Chrome拡張機能
    • PC操作している間のユーザーの実際の動作を測定
  • ネットワークトラフィックモニター
    • デバイスとの間で送受信されるネットワークトラフィックを分析
  • 攻撃シミュレーター
    • ユーザーに複数のソーシャルエンジニアリング攻撃を実施

これらのアンケートと測定結果は別のデータベースで紐づけられており、例えばブラウジングに関する項目は以下のようになっています。 出典:引用文献であるEvaluating the Information Security Awareness of Smartphone Usersから抜粋および和訳

そして、継続的に評価するため、分析→監視→訓練というワンショットで終わるのではなく、このサイクルを回していくことが提案されています。 出典:資料から引用

実験結果と考察

提案するフレームワークの評価のため、162人のユーザーを対象とした7~8週間の実験結果が報告されています。 出典:資料から引用(※MDA:Mobile Device Agent、NTM:Network Traffic Monitor、SEQ:Security Questionnaire)

結果として、以下の考察がされています。

  1. 攻撃の種類によって、ユーザーが攻撃を対策するために必要なスキルは異なる。
  2. 実際の動作に対して、ユーザーの自己申告は多く誤っている。
  3. 実際の動作から算出されたセキュリティ意識レベルは、ソーシャルエンジニアリング攻撃を対策する能力と高い相関がある。

本発表の基となった論文)の方にはアンケートや測定手法の詳細、ユーザーの意識レベルの計算方法など、興味深い内容が記載されています。そちらも合わせて見てみると見識が広がるのではないでしょうか。


  1. リバースシェルとは、遠隔操作対象の端末から手元の端末に対して通信し、接続させる手法。攻撃者はこれを悪用し、一般的なFW回避などを目的に、標的マシン側から攻撃者マシンに対して接続させ、bashなどのシェルを遠隔で操作できるようにする。
  2. エクスプロイトチェーン: 複数のエクスプロイトの組合わせで実現される一連の感染・攻撃プロセスを指す。
© NTT Communications Corporation All Rights Reserved.