掲載日:2022/06/01

PDFマルウェアは死んでいない

※ 本ブログは、2022年5月20日にHP WOLF SECURITY BLOGにポストされた PDF Malware Is Not Yet Dead の日本語訳です。

 

過去10年間、攻撃者はマルウェアをMicrosoft Officeのファイルフォーマット、特にWordやExcelでパッケージ化することを好んできました。実際、2022年第1四半期にHP Wolf Securityが阻止したマルウェアの約半数(45%)がOfficeフォーマットを使用していました。その理由は明確で、ユーザーがこれらのファイル形式に慣れていること、ファイルを開くためのアプリケーションがどこにでもあること、ソーシャルエンジニアリングのルアーに適していることです。

このポストでは、HP Wolf Securityが今年初めに発見した、一風変わった感染チェーンを持つマルウェアのキャンペーンについて紹介します。このマルウェアは、攻撃者がPCへの感染に用いることの少ないPDFドキュメントで現れ、不正ファイルの埋め込み、リモートでホストされるエクスプロイトのロード、シェルコードの暗号化など、いくつかの手口を用いて検知を回避します。

マルウェアが隔離されている様子を示す HP Wolf Security Controllerのアラートタイムライン 図1 - マルウェアが隔離されている様子を示す HP Wolf Security Controllerのアラートタイムライン

 

 

SNAKEキーロガーを配信するPDFキャンペーン

"REMMITANCE INVOICE.pdf" という名前のPDFドキュメントが、Eメールの添付ファイルとしてターゲットに送信されました。このドキュメントは、この場合Eメールという、危険な経路から来たものであったためユーザーがこのドキュメントを開くと、HP Sure Clickが隔離されたマイクロ仮想マシン内でファイルを実行し、ユーザーのシステムが感染することを防止しました。

このドキュメントを開いた後、Adobe Readerはユーザーに.docxファイルを開くように促します。攻撃者は、Wordドキュメントにこっそりと "has been verified. However PDF, Jpeg, xlsx, .docx " (訳注:「は検証されました。しかしながらPDF、Jpeg、xlsx、docxは」と名付け、あたかもAdobe Readerのプロンプトの一部にファイル名が含まれているかのように見せかけました。(図2)

別のドキュメントを開くように促すプロンプトを表示するPDFドキュメント 図2 - 別のドキュメントを開くように促すプロンプトを表示するPDFドキュメント

 

PDFファイルを分析すると、.docxファイルがEmbeddedFileオブジェクトとして格納されていることがわかります。調査員は、Didier Stevens氏のpdfidスクリプト(図3)を使って、PDFドキュメントの最も重要なプロパティを素早く把握することができました。

ドキュメントのPDFiD分析 図3 - ドキュメントのPDFiD分析

 

EmbeddedFileを分析するために、Didier Stevens氏のツールボックスにある別のツール、pdf-parserを使用することができます。このスクリプトは、PDFドキュメントからファイルを抽出し、ディスクに保存することができます。

pdf-parserを使って埋め込みファイルをディスクに保存 図4 - pdf-parserを使って埋め込みファイルをディスクに保存

 

 

埋め込みWordドキュメント

PDF ドキュメントに戻り、プロンプトで “Open this file” (このファイルを開く)をクリックすると、Microsoft Word が開かれます。保護ビューを無効にすると、WordはWebサーバーからリッチテキスト形式(.rtf)ファイルをダウンロードし、開いているドキュメントのコンテキストで実行されます。

Webサーバーに問合せをするWordドキュメント 図5 - Webサーバーに問合せをするWordドキュメント

 

Microsoft Wordはどのサーバーに問い合わせたかを明示しないため、Wiresharkを使ってネットワークトラフィックを記録し、作成されたHTTPストリームを特定します。(図6)

RTF ファイルを返すHTTP GET リクエスト 図6 - RTF ファイルを返すHTTP GET リクエスト

 

.rtfをダウンロードする方法を理解するために、Wordドキュメントに戻りましょう。これはOOXML(Office Open XML)ファイルなので、図7に示すコマンドで中身を解凍し、文書内のURLを探すことができます。

Wordドキュメント内のURL一覧 図7 - Wordドキュメント内のURL一覧

 

ハイライトされたURLは、Officeドキュメントに見られる正規のドメインではないため、私たちの目を引きました。このURLは、ドキュメントのリレーションシップをリストアップするdocument.xml.relsファイル内にあります。このURLから外部のOLEオブジェクトがロードされていることがわかります。(図8)

XMLドキュメントの関係 図8 - XMLドキュメントのリレーションシップ

 

 

外部OLEオブジェクト

この URL に接続するとリダイレクトされ、f_document_shp.doc という RTF ドキュメントがダウンロードされます。このドキュメントをより詳しく調べるに、rtfobj を使用して、ドキュメントに OLE オブジェクトが含まれているかどうかを確認します。

2つのOLEオブジェクトを示すRTFObj出力 図9 - 2つのOLEオブジェクトを示すRTFObj出力

 

このツールを使ってディスクに保存できるOLEオブジェクトは2つあります。コンソール出力に示されるように、両方のオブジェクトは整形されていないので、oletools で分析すると混乱した結果になる可能性があります。この問題を解決するために、foremostを使用してオブジェクトを再構築することができます。するとoleid を使ってオブジェクトの基本情報を見ることができます。これによって、オブジェクトがMicrosoft Equation Editorに関連していることがわかります。

 oleidで抽出されたOLEの基本情報 図10 - oleidで抽出されたOLEの基本情報

 

 

暗号化されたEQUATION EDITORのエクスプロイト

OLEオブジェクトを調べると、Equation Editorのリモートコード実行の脆弱性CVE-2017-11882を悪用するシェルコードが見つかります。この脆弱性については多くの分析があるため、詳細な解析は行いません。代わりに、以下では攻撃者が検知を回避するためにシェルコードをどのように暗号化したかに焦点を当てます。

CVE-2017-11882をエクスプロイトするシェルコード 図11 - CVE-2017-11882をエクスプロイトするシェルコード

 

シェルコードはオブジェクトの最後にある OLENativeStream 構造体に格納されています。次に、デバッガでシェルコードを実行し、GlobalLock への呼び出しを探すことができます。この関数は、メモリブロックの最初のバイトへのポインタを返します。これは、シェルコードがメモリ内で自分自身の位置を特定するために使用する手法です。この情報を使って、シェルコードは定義されたオフセットにジャンプし、復号化ルーチンを実行します。

復号化ルーチンの乗算と加算の部分 図12 - 復号化ルーチンの乗算と加算部分

 

鍵はイテレーション毎に定数倍され加算されます。そして、暗号文はその都度XOR演算で復号化されます。復号されたデータはシェルコードとなり、その後に実行されます。

ペイロードのURLを示す復号化されたシェルコード 図13 - ペイロードのURLを示す復号化されたシェルコード

 

さらに実行することなく、マルウェアがfresh.exeという実行ファイルをダウンロードし、ShellExecuteExWを使用してパブリックユーザーディレクトリで実行していることが分かります。この実行ファイルは、以前にも紹介した情報窃取型マルウェア Snake Keylogger です。ようやく、このマルウェアから、動的解析などを用いて侵入の痕跡(IOC)を抽出することができるようになりました。この時点で、完全な感染チェーンを分析し、脅威の追跡や新しい検知方法の構築に利用することができるIOCを収集しています。

 

結論

Office フォーマットは依然として人気がありますが、このキャンペーンは、攻撃者が武器化したPDFドキュメントを使用してシステムを感染させる方法を示しています。ファイルの埋め込み、リモートでホストされるエクスプロイトのロード、シェルコードの暗号化は、攻撃者が水面下でマルウェアを実行するために使用する3つの技術にすぎません。このキャンペーンでエクスプロイトされた脆弱性(CVE-2017-11882)は、4年以上前のものですが、依然として使用されており、このエクスプロイトが攻撃者にとって引き続き有効であることが示唆されています。

 

侵害の痕跡(IoC)

REMMITANCE INVOICE.pdf
05dc0792a89e18f5485d9127d2063b343cfd2a5d497c9b5df91dc687f9a1341d

 

has been verified. however pdf, jpeg, xlsx, .docx
250d2cd13474133227c3199467a30f4e1e17de7c7c4190c4784e46ecf77e51fe

 

f_document_shp.doc
165305d6744591b745661e93dc9feaea73ee0a8ce4dbe93fde8f76d0fc2f8c3f

 

f_document_shp.doc_object_00001707.raw
297f318975256c22e5069d714dd42753b78b0a23e24266b9b67feb7352942962

 

エクスプロイトシェルコード

f1794bfabeae40abc925a14f4e9158b92616269ed9bcf9aff95d1c19fa79352e

 

fresh.exe (Snake Keylogger)
20a3e59a047b8a05c7fd31b62ee57ed3510787a979a23ce1fde4996514fae803

 

外部 OLE 参照 URL
hxxps://vtaurl[.]com/IHytw

 

外部 OLE 参照 最終 URL
hxxp://192.227.196[.]211/tea_shipping/f_document_shp.doc

 

Snake Keylogger ペイロード URL
hxxp://192.227.196[.]211/FRESH/fresh.exe

 

Snake Keylogger  SMTP経由の持ち出し
mail.saadzakhary[.]com:587