SiliVaccine:北朝鮮のアンチウイルス製品

北朝鮮のアンチウイルス製品「SiliVaccine」のコードを専門家が解析したところ、興味深い点が次々と見つかりました。

ある日、Check Pointの調査チームの元に、マーティン・ウィリアムズ(Martyn Williams)というBloombergのジャーナリストから1通のメールが転送されてきました。そのメールは日本から送られてきたとされるもので、北朝鮮のアンチウイルス製品が添付されていました。北朝鮮のソフトウェアなど、めったにお目にかかれるものではありません。マーク・レクティック(Mark Lechtik)氏とマイケル・カジロティ(Michael Kajiloti)氏はこのウイルス対策ツールがどんなものかを調査し、その結果第35回Chaos Communication Congress(35C3)で発表しました。

北朝鮮のアンチウイルス製品についてお話しする前に、北朝鮮とインターネットの関係を簡単に説明しておこうと思います。

世界的なネットワークの構築における北朝鮮の役割

特定の国の特定のグループにより特定の攻撃が企てられたという主張は、正しいこともあれば正しくないこともあります。証拠の解明は難しく、誤った方向へ導かれてしまうことも多々あります。それでもある時点で、複数の調査グループが共同で、いくつかの攻撃を北朝鮮によるものだと見なしています。また、北朝鮮が国をあげてハッカー集団を支援し、政権のために資金を調達させていると一般的に信じられています。もちろん、北朝鮮の当局者はこれを否定しています。

とはいえ、北朝鮮には事実上、インターネットというものは存在しません。World Wide Webには、選ばれた少数の人しかアクセスできないのです。国民の大部分は、クァンミョン(Kwangmyong、「光明」という意味)と呼ばれる、「退廃した西側諸国」の情報がすべて粛清された国内向けイントラネットにしかアクセスできません。一方、西側諸国も北朝鮮のネットワークをのぞき見する機会はほとんどなく、かの国のインターネットに関する情報はどのようなものでも歓迎されます。

北朝鮮のアンチウイルス製品「SiliVaccine」は、いかにして調査チームの元にたどりついたのか(プレゼンテーションより引用)

日本にルーツを持つ北朝鮮製アンチウイルス製品

最初の疑問は、インターネットのない北朝鮮で、なぜアンチウイルス製品が必要なのか、ということです。第1の理由は、西側の記事や韓国のTV番組など、北朝鮮で正式に手に入らない情報の入ったメモリースティックに紛れて国内に持ち込まれたウイルスから保護するためです。密輸されたメモリースティックは、驚くほど広まっています。第2に、あまり知られていませんが、北朝鮮はこのアンチウイルス製品「SiliVaccine」を世界中に売り込もうとしていたように見受けられます。少なくとも、1つのバージョンは英語のインターフェイスを備えています。

次なる疑問ですが、北朝鮮はアンチウイルスソフトウェアをどこから手に入れたのでしょうか?このように高度な製品を一から作り上げるのは、リソースが限られている場合は特に、そう簡単なことではありません。Check Pointの調査チームも同じ疑問を持ち、興味深い結論を導き出しました。それは、この北朝鮮製アンチウイルス製品の2013年版(彼らの手元にあるもの)はTrend Microの有名なアンチウイルス製品の2008年版エンジンを使用している、というものでした。

北朝鮮の開発者が製品のコードをあれこれ詮索されたくなかったのは明らかで、コンポーネントの多くは、Themidaというリバースエンジニアリング防止用のラッパープログラムで保護されていました。しかし、SiliVaccineのコンポーネントのパッキングに当たっては大半でThemidaが使用されていなかったため、Check Pointの調査チームはプログラムのコードにアクセスすることができました。

SiliVaccineのコードの約4分の1は、Trend Micro製アンチウイルス製品のコード要素と完全に一致しましたが、いくつかの関数が若干変更されていました。調査チームはこの盗用についてTrend Microに連絡を取り、北朝鮮が日本製アンチウイルス製品のソースコードをどこで手に入れたと考えられるかを問い合わせました。Trend Microからは、北朝鮮による当該エンジンの入手経路は不明であり、違法に使用されたものと考えられるとの回答が寄せられました。また、Trend Microの保護ソリューションをOEM販売しているパートナー企業がこのエンジンを使用した可能性についても言及がありました。少なくとも、ソースコードがいかにして北朝鮮のプログラマーの手に渡ったかの手がかりが見えてきます。

本調査に対するTrend Microの公式回答(プレゼンテーションより引用)

SiliVaccineのベースがTrend Microのエンジンであることを隠そうとしたことは明らかで、SiliVaccineには余計な機能があれこれ追加されています。そのため、一見しただけでは、これら2つのアンチウイルス製品はウイルスのシグネチャに関してまったく異なるプロセスを採用しているように見えるかもしれません。Trend Microが使用するシグネチャファイルは1つだけですが、SiliVaccineには20もあります。しかし、エンジンを起動すると、これらのファイルは1つのファイルにマージされます。シグネチャ自体も、疑われても仕方ないほどTrend Microのものと似ています。たとえば、Trend Microがあるマルウェアに対してTROJ_STEAL-1というシグネチャを使用しているのに対して、SiliVaccineはTrj.Steal.Bを使っています。大文字を小文字に変え、アンダーバーとハイフンをピリオドにし、細かい変更をいくつか加えているだけです。

この北朝鮮のアンチウイルス製品を調査する過程で、調査チームは多数のバグや奇妙な点を報告しています。たとえばこの製品は、ファイルをウイルススキャンするためのものと推定されるコンポーネントを備えています。この機能を使うには、ファイルエクスプローラーを右クリックし、該当のオプションをメニューから選択する必要がありますが、そのオプションを選択しても何も起こりません。

奇妙な点はほかにもあります。このアンチウイルス製品には、ネットワーク接続に関する情報を収集するドライバーが付属していますが、これがまったく使われていないのです。理論的には、何らかのファイルがこのドライバーにアクセスするはずですが、SiliVaccineのどのファイルもこのドライバーを使用しません。

コンポーネントの中には、BopCrypt(ロシア語のインターネットコミュニティで15年ほど前によく使われていたパッケージングツール)で暗号化されているものがあり、ほとんどが使い物にならないコードで構成されているように見えるものもありました。印象としては、一部のファイルはただ時間を無駄にしているだけのようでした。さらに調査チームは、少なくとも一部のSiliVaccineコンポーネントの作成に携わった人々はリバースエンジニアリングに挑戦してはみたもののコードの正確な働きを解明できなかった、との見解を持つに至っています。

また、コードを記述した人々が共同作業をあまり得意としていなかったようにも見受けられました。たとえば、あるファイルでは特定の値に設定されたパラメーターを使って別の関数をトリガーする設計となっている一方で、2つめのファイルはその値が与えられたときには何も処理しないようにプログラミングされていました。

これらを総合した結果、北朝鮮のSiliVaccineは、Trend Microのアンチウイルス製品を大きく改変したバグだらけのバージョンであることが判明したのでした。

マルウェアである可能性は?

インターネットに関する北朝鮮の対外政策をよく知る人なら、こう考えずにはいられません。もし、これが実はトロイの木馬だったら?この製品がマルウェアの植え付けを意図して作られていたとしたら?Check Pointはこのような質問にも回答しています。

その見解は、やはり興味深いものでした。SiliVaccine自体は潔白のようで、悪意のある機能は含まれていませんでした。ただし、この製品は、ある特定のシグネチャを無視します。スキャンしたファイルがこのシグネチャを持つマルウェアに感染していたとしても、SiliVaccineは放置します。

特定のシグネチャを持つマルウェアファイルを無視するSiliVaccine(プレゼンテーションより引用)

調査チームの好奇心がかき立てられたのは言うまでもありません。これがどのマルウェアであるかを正確に知るため、調査チームは、SiliVaccineのウイルス定義データベースにあるこのシグネチャを、Trend Microのデータベースにある、これに対応するシグネチャと照合しようとしました。ところが、これは特定のふるまいを示すすべてのファイルに割り当てられるヒューリスティックシグネチャであることが判明し、北朝鮮のアンチウイルス製品がどのマルウェアファイルを無視するようにプログラミングされていたかは解明できませんでした。しかし、SiliVaccine開発者がある時点で誤入力をおかし、正しくないシグネチャをホワイトリストに登録していたことが明らかになっています。

SiliVaccineのインストーラー自体は悪意のあるものではありませんでしたが、自称日本在住のエンジニアからBloombergのジャーナリストが受け取ったアーカイブには、ファイルがもう1つ入っていました。このファイルは、SiliVaccineのパッチファイルであることを示唆するファイル名を持つ一方で、メタデータはMicrosoftの自動更新ファイルとの関連を主張していました。

BBloombergのジャーナリストが受け取ったアーカイブには、DarkHotel APTにつながるマルウェアも含まれていた(プレゼンテーションより引用)

Check Pointの調査チームはこのファイルを分析し、2016年にForcepointが発見したジャクー(JAKU)と呼ばれるマルウェアであることを突き止めました。Forcepointがその調査で示した説明によると(英語記事)、Jakuは北朝鮮と何らかのつながりがある個人に対して使われたもので、DarkHotel2014年にKaspersky Labが発表した、韓国・朝鮮語話者グループによる攻撃)と明らかに関係していました(リンク先はいずれも英語)。

調査チームは、こう推測しています。SiliVaccineの添付されたメールを受け取ったBloombergのジャーナリスト、マーティン・ウィリアムズ氏は、北朝鮮に関する記事を多数執筆しており、彼の活動は北朝鮮指導部にとって決してありがたいものではない。そのため、アンチウイルス製品が添付されたメールを使ったこの企て全体が、ウィリアムズ氏に対する標的型攻撃であった可能性がある。SiliVaccineについては、本物のアンチウイルス製品で、実際に北朝鮮で使われているものと思われます。ほかに選択肢はありませんから。

ヒント