
ハッカーは何十年もの間、人間の信用と不注意を悪用してきました。 ほとんどのユーザーは、メールセーフなメールを一見して迷わずに開き、知らないうちにマルウェアを起動します。 このような攻撃から身を守るには、敵を直接知る必要があります。 今日は、今年発見されたオフィスアプリケーションでコードを実行するための3つの新しい手法がどのように配置されているのか、またそれらに対するどのような保護方法が存在するのかを理解しようとします。
Xlmマクロ
Outflankの専門家は、いわゆるXLMマクロ(XMLと混同しないでください)を介してMS Office Excelでコードを実行する新しい方法を導入しました 。 XLMマクロテクノロジは26年以上使用されていますが(Windows 3.0 / 3.1のExcel 4.0で初めて登場)、Office 2016までのMicrosoft Office Excelのすべてのバージョンで引き続きサポートされています。
ExcelでXLMマクロを作成するには、次の手順を実行する必要があります。
Excelシートのコンテキストメニューで、[挿入]を選択します。

次に、「MS Excel 4.0」を選択します。

その結果、「EXEC」機能を使用して任意のセルに「Macro1」シートが表示され、目的のプロセスを開始できます。 マクロを自動的に実行するには、最初のセルの名前を「Auto_open」に変更する必要があります(VBAマクロのAutoOpen()プロシージャと同様)。
保存されたドキュメントを開くと、マクロを実行する要求とともに標準通知が表示されます。

コンテキストメニューで[非表示]を選択すると、マクロシートを非表示にできます。
プロセスを開始する機能に加えて、XLMマクロはREGISTERおよびCALL関数を使用してWin32 APIにアクセスできます。 以下は、シェルコードインジェクション手法を実装するマクロのPoCコードです。

同時に、CHARエンコード関数は、マクロセル内のシェルコードの文字を格納するために使用されます。 nullバイトを削除するには、Metasploit Frameworkの一部であるmsfvenomユーティリティを使用できます。
Excelファイル内の格納方法により、XLMマクロは、Excel 5.0で1年後に登場した従来のVBAマクロとは大きく異なります。 ZIPアーカイブである新しいExcel .xlsm形式では、XLMマクロはmacrosheetsディレクトリのXMLファイル内に保存されます。 .xsl形式(Excel 97-2003)では、マクロはOLEストリーム内に格納されます。
さらに、VBAマクロは別のコンテナ(左の図)に格納され、XLMマクロは同じデータコンテナに配置されています。

マクロストレージ方法のこれらの違いは、ウイルス対策ソフトウェアによる検出の品質に大きく影響します。特に、Office 365からのサポートが主張されているにもかかわらず、マルウェア対策スキャンインターフェイス(AMSI)テクノロジはXLMをサポートしません。
たとえば、Metasploit powershell web_deliveryコードは、VBAおよびXLMマクロを使用してExcelに実装されました(下図)。


Virustotalでは、VBAマクロを含むExcelドキュメントが59個のアンチウイルスのうち21個をトリガーしました。

同時に、XLMマクロを使用した同様のドキュメントは、ウイルス対策の疑いを引き起こしませんでした。

デモンストレーション
OfficeのXLMマクロを介したコード実行
Microsoft Officeオンラインビデオ
Cumulateの研究チームは、オンラインビデオを使用してビデオを挿入することにより、Wordでコードを実行する新しい方法を発見しました 。 この要素を使用すると、YouTubeビデオをドキュメントに追加し、ドキュメントへのリンクを、ドキュメントを開いてビデオをクリックしたときにInternet Explorerで実行されるJavaScriptコードに置き換えることができます。 以下のベクトルは、ソーシャルエンジニアリングを実施する場合に最適です。
- YouTubeビデオを含むiframeにIE / Flashのエクスプロイトコードを追加する。
- msSaveOrOpenBlobメソッドを使用して、YouTubeビデオでiframeにJavaScriptコードを追加します。これにより、悪意のあるファイルをダウンロードして実行することが提案されます。 ファイルの本文は、base64 javascript内に含まれています。
docx拡張子を持つファイルを作成します。 説明した負荷で、次の手順を実行する必要があります。
1.「挿入-オンラインビデオ」からYouTubeビデオを追加します。

2.作成したdocxファイルを保存します。
3.保存したdocxを解凍します。 Docx形式 次のコンテンツのzipアーカイブです。

4. embeddedHtml要素のdocument.xmlファイルのWordディレクトリで、iframe本体にJavaScriptコードを挿入するか、iframe内の対応するリンク(src)を置き換えることにより、JavaScriptコードを追加します。
5.行った変更を使用して、zipアーカイブ(拡張子docx)を作成します。
次に、生成されたdocxファイルを開くとき、ユーザーはビデオリンクをクリックしてダウンロードしたファイルを起動する必要があります。 または、Flash Playerを更新する提案を含むスクリーンショットを表示して、ユーザーにファイルをダウンロードして実行するように促すことができます。 セキュリティ警告は表示されません。

XLMマクロの場合のように、このコード実行手法はVirustotalのアンチウイルスによって検出されず、ウイルス作成者にとって非常に魅力的であり、侵入テストの一部としてソーシャルエンジニアリングでも一般的です。
デモンストレーション
Officeのオンラインビデオを介したコード実行
VBAストンプ
Derbycon 2018カンファレンスで、 VBA Stompingと呼ばれる、OfficeドキュメントでVBAマクロを起動する技術が紹介されました 。 この手法の本質は、オフィスドキュメントの本文にあるVBAソースコードを削除/変更(ゼロで埋めるオプションとして)し、p-codeと呼ばれるコンパイル済みマクロコードをそのままにすることです。 VBAコードとそのコンパイルされたバージョンは、zipアーカイブ(拡張子.docm、.xslmのファイル)にあるvbaProject.binファイル内にあります。

したがって、この技法は、vbaProject.binファイルのゼロ部分を削除/埋めることに要約されます。

その結果、このドキュメントは、ソースコードのみでマクロを分析するウイルス対策ソフトウェアに疑念を抱かせません。 たとえば、この手法を使用することで、研究者はOfficeファイルを通じて配信されるEmotetバンキング型トロイの木馬に対するウイルス対策応答の数をVirustotalで36/59から7/58に減らすことができました。


また、この手法では、ファイルを分析することが難しくなります。単一のツールでは、逆コンパイルせずにVBAソースコードを抽出できず、解決されるまでOfficeマクロエディターに表示されません。
保護
説明されている手法に対抗するための推奨事項は、ソーシャルエンジニアリング手法に対する保護のための伝統的なものです。
- 情報セキュリティの問題に関する従業員の意識を高めます。
- Microsoft Officeでのマクロの使用を禁止します。
- エンドポイントソリューションや境界セキュリティツール(次世代ファイアウォール、UTMソリューション、メールゲートウェイ)の使用を含む、情報セキュリティを確保するための統合アプローチ。