ファイア・アイは9月16日、北朝鮮からの脅威が疑われる「ハングルワードプロセッサー(HWP)」に対する最新ゼロデイ攻撃について解説した。

HWPは、韓国企業の「Hancom」が開発した韓国語に対応したワードプロセッサ・ソフトウェアで、韓国の政府機関や公共機関などで広く利用されている。

今回のゼロデイ攻撃では、HWPに未知の脆弱性(CVE-2015-6585)を悪用した複数の悪意ある文書が見つかった。悪意のある文書は、北朝鮮の脅威アクターと疑われる関連性あると見られている。

HPWの「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には、脆弱性を発動させるXMLが格納されている。

段落テキストの構造

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

linesegオブジェクト

hp:tエレメントには、数字、Unicodeキャラクター、タブ、改行が格納されおり、Unicodeは、型の取り違えが発生した後の実行ファイルのリダイレクトに使用される。これは、メモリの中に段落テキストを構成している。

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

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

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

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

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

シェルコードの実行

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

悪意あるHWPX文書は「HANGMAN」と呼ばれるバックドアの類似コピーをインストールする。HANGMANは、ファイル、プロセス、ファイルシステム管理のアップロードとダウンロード、システム情報の収集、構成のアップデートを行うことが可能。このバックドアは、通信プロトコルとしてSSLを採用しており、通信を開始する際に、コマンド&コントロール(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に保存される。

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

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