ブログ(脅威調査)

北朝鮮からの脅威が疑われる、ハングルワードプロセッサー(HWP)に対する最新ゼロデイ攻撃について

ファイア・アイは今回、ハングルワードプロセッサー(HWP)の未知の脆弱性(CVE-2015-6585)を悪用した複数の悪意ある文書を実環境において発見しました。韓国企業によって開発されたHWPは韓国語のワードプロセッサー・ソフトウェアで、韓国では主に政府機関や公共機関で広く利用されています。HWPプログラムの中には、HWPビューアなど、民間組織でもよく利用されているものがあります。今回の攻撃のペイロードとインフラストラクチャには、北朝鮮の脅威アクターと疑われる関連性が見られます。同ワードプロセッサ・ソフトウェアを開発したHancom社では、2015年9月7日付のセキュリティ・アップデートでCVE-2015-6585用のパッチを公開しています。

エクスプロイトの詳細
「HWP 2014」では、韓国産業規格のKS規格で標準化されたHWPファイル形式(HWPX)のサポートを開始しました。HWPX形式の文書が初期設定で使用するファイル拡張子は.hwpxですが、従来のHWPファイルである.hwpが使用されることもあります。この新たな形式であるOWPML(Open Word-Processor Markup Language)は、zipアーカイブ内でXMLファイルを使用します。HWP文書とHWPX文書の構造的な違いは、Microsoft Wordの.docファイルと.docxファイルのそれに類似しています。

段落テキストは、データ記録型として本文の各段落の内容を保存しています。.hwpxファイル内の段落テキストのタグを解析すると、hwpapp.dllの論理エラーにより、型の取り違えのシナリオが発生します。こうした脆弱性としかるべきヒープ・スプレー攻撃を組み合わせることで、コードの実行に影響を及ぼすことが可能です。

HWPXファイルの構造は、一連のディレクトリやXMLファイルを格納するアーカイブ(zip)ファイルに類似しています。「Contents」ディレクトリ内のXMLは、HWPXファイルが格納するデータと、データのレンダリング方法を定義しています。Contents/section1.xml(参照:付録1)には、脆弱性を発動させるXMLが格納されています。

段落テキストの記述形式は以下の通りです。

図1:段落テキストの構造

パーサーは、linesegアイテム用のオブジェクトを作成し、その中の属性を解析・保存します(図2)。

図2:linesegオブジェクト

hp:tエレメントには、数字、Unicodeキャラクター、タブ、改行が格納されています。Unicodeは、型の取り違えの発生後の実行ファイルのリダイレクトに使用されます。

図3:実行ファイルのリダイレクトに使用されるUnicodeバイト

これは、図4および図5のように、メモリの中に段落テキストを構成します。

図4:Unicodeバイトを格納する段落テキスト

図5:メモリにロードされた段落テキスト

このコンテンツの定義にlinesegアレイが含まれているため(参照:付録1)、パーサーはlinesegオブジェクトを複製し、段落テキストの末尾に追加します(参照:付録2)。その場所はptrParaText+10*4で、linesegの属性に基づき、段落テキストをさらに解析します。

2番目のlinesegtextpos属性は“5”であるため、パーサーはオフセット5から始まる段落テキストの解析を行い、これによってパーサーは、SECTION_COLUMN_DEF(0002)制御文字の中央にジャンプします。この結果、121c1000はオブジェクト・ポインターとして扱われます。ヒープ・スプレー攻撃により、エクスプロイトは同アドレスで偽のクラスを提供します。HWPがこの偽のクラスを使用すると、エクスプロイトによって提供されたアドレスが呼び出されます。これは、下図のシェルコードを指し示しています。

図6:シェルコードの実行

このシェルコードは、ヒープスプレー・データ内でタグ(「SVCHSVCH」)を検索し、悪意あるペイロードを見つけ出したあと、シンプルなXOR(排他的論理和)でデコードを行い、%temp%\svchost.exeにドロップした上で実行します。

攻撃の属性
断定はできませんが、韓国独自のワープロ・ソフトウェアを標的にしているということは、韓国を狙うことに明確な利益、関心があることを示唆しています。コードの類似性とインフラストラクチャの重複に基づき、ファイア・アイのインテリジェンスチームは、今回のアクティビティがおそらく北朝鮮の脅威アクターに関連したものであると推定しています。

これらの悪意あるHWPX文書は例外なく、私たちが「HANGMAN」と呼ぶ、バックドアの類似コピーをインストールします。HANGMANは、ファイル、プロセス、ファイルシステム管理のアップロードとダウンロード、システム情報の収集、構成のアップデートを行うことが可能です。このバックドアは、通信プロトコルとしてSSLも採用しています。通信を開始する際に、HANGMANは、コマンド&コントロール(C2)サーバーに正規のSSLハンドシェイクを送信します。次に、SSLヘッダー・メッセージを使用して通信を継続しますが、メッセージのペイロードはカスタム・バイナリ・プロトコルです。

HANGMANのサンプルはいずれも、PEインポート・ハッシュ、コンパイル日時(2015年8月18日15:08:28)、C2に使用されるハードコードIPアドレスが同一のものでした。C2用IPアドレスの1つは、コンパイル日時が4カ月早い(2015年4月8日00:53:29)MACKTRUCKバックドアの亜種でも使用されたものです。MACKTRUCKはこれまで、北朝鮮の関与が疑われる脅威アクターの標的型攻撃で使用されてきました。

HWPX文書がドロップするHANGMANの亜種で使用される関数は、私たちがPEACHPITと呼ぶバックドアなど、北朝鮮の関与が疑われるアクターで使用された他のマルウェア・ファミリーに見られるものと非常によく似ています。

PEACHPITとHANGMANのいずれも、WindowsコマンドがリモートC2サーバーからバックドアに渡される関数を採用しています。渡されるコマンドにリダイレクト文字(>)が含まれるかを確認した後、感染したホストマシン上では、以下の形式のいずれかにより、コマンドが実行されます。

  • cmd.exe /u /c [PASSED_COMMAND] >[RESULT_PATH] 2>&1
  • cmd.exe /u /c [PASSED_COMMAND] 2>[RESULT_PATH]

次に、感染したホストマシン上では、コマンドの実行結果が%tmp%/[hexdecimal].tmpに保存されます。

図7:HANGMANとPEACHPITのサンプルのコード比較

上記の関数は、これまでの他のマルウェア・ファミリーでは広く観察されてはおらず、比較的独自性が高いものに思われます。この事実は、PEACHPITとHANGMANの作成者が同じ開発者グループであるか、少なくとも、同一のソースコードを一部共有していることを暗示しています。PEACHPITなどのバックドアの使用の観察例が極めて限定的であることを考えると、両バックドアは開発履歴が共通なだけでなく、同一もしくは緊密な関係にある脅威アクターによって使用された可能性があると、結論づけるのが妥当です。

付録

<1 – Contents/section1.xml>

<2 – 段落テキストに追加されたlineseg>