マルウェア

悪意あるJavaScriptの傾向: 侵入型仮想通貨マイニングソフトから詐欺サイトまで

Clock Icon 3 min read

This post is also available in: English (英語)

パロアルトネットワークスでは、さまざまな手法を使用して、お客様がアクセスしたWebサイト上の、悪意のあるWebページや悪意のあるJavaScriptを検出しています。弊社のセキュリティ クローラーは、シグネチャ一致などの静的なアプローチに加え、Webページ上で検出されたすべてのスクリプトを実行し、それらの動的なふるまいを観察しています。

その後、実行時に宣言されたグローバル変数、ユーザーに表示されたポップアップメッセージ、確立されたWebSocket接続などの異なるインジケーターに基づいて特殊な挙動シグネチャを適用します。最終的な悪意のある動作に変わりはないため、このようなシグネチャを使用すると、難読化、圧縮、またはランダム化されたJavaScriptの中に潜む悪意のあるキャンペーンも検出できます。

特に、この手法は侵入型仮想通貨マイニングソフト(以前にこちらで説明)やさまざまな種類の詐欺キャンペーンなど、最新の脅威を検出する際に効率的であることが実証されています。

2018年11月に、弊社は侵入型の仮想通貨マイニングを伴う8,712のURLを検出しました。これらのURLには、様々な人の30,000台以上のデバイスから100万回以上アクセスしようとされていました。最も存在感のあるCoinhive以外には、JSE-Coin、Crypto-Loot、CoinImpなどのほんのわずかなライブラリしか目に留まりません。他の合法的な目的は果たさずに、悪意ある活動しか行わないWebサイトとは異なり、仮想通貨マイニングのスクリプトは人気のあるビデオ ストリーミング サイトに挿入されることがあります。そのため、それらのドメインは、他のタイプの悪意あるJavaScriptをホストするサイトよりも遥かに寿命が長く人気があります。ただし、挙動分析を使用すると、(ユーザーの同意なしに起動する)無許可の仮想通貨マイニングを分離できるため、実際の侵入事例を検出してブラックリスト化することができます。

さらに、パロアルトネットワークスでは、地球上のあらゆる場所からお客様を狙う詐欺やクリックジャック(リンクなどの要素を偽装してクリックを誘うこと)、フィッシングや、その他の悪意あるJavaScriptへと誘導する4,633のURLを追加で確認しました。この中で最も多く観察された詐欺キャンペーンの2つは、テクニカル サポートを装うものと偽のFlash更新ページでした。

悪意のあるJavaScriptにおける傾向

2018年10月19日から2018年11月19日の間、弊社では1日単位のURLフィルタリング カテゴリでは未知と判断されていたURLに挙動分析を適用しました。その後、Alexaトラフィックランクの上位100万個のURLと最近登録されたドメインのフィードをクロールしました。全体として、8,712を超える個別URLから延べ9,104の仮想通貨マイニング スクリプト、4,633を超える個別URLから4,788の悪意あるJavaScriptsを検出しました。これらは、静的解析では検出できなかったものでした。

仮想通貨マイニングの結果

平均すると、1日あたり、184の未知の悪意あるURLを含む、1,097の仮想通貨マイニングURLが検出されました。図1に、日々の検出率を示しています(これは、1日単位の個別の結果を示したものであり、累積グラフではないことに注意してください)。数字上で、細かい定期的な低下は見られるものの、より新しいURLの検出における全体的な傾向は時間が経過しても一定しています。また、弊社で毎日同じ仮想通貨マイニングソフトを検出し続けていることから、仮想通貨マイニングを行うWebサイトは、フィッシングやエクスプロイトなどのより明白な悪意のあるJavaScriptに比べて寿命が長いという事実が浮き彫りになっています。

図1.仮想通貨マイニングURLの1日単位の検出率
図1.仮想通貨マイニングURLの1日単位の検出率

図2は、該当期間に検出された9,104のスクリプトの中で人気のある仮想通貨マイニングソフト ファミリーの分布を示しています。図からは、Coinhiveが46.8%と最多を占めており、次に12.6%の匿名のStratum Protocol通信が続いていることが明らかです。その後に、JSE-Coin(10.9%)、Crypto-Loot(10%)、CoinImp(6.7%)、Monerise(6.6%)、NeroHut(1.4%)などのその他の仮想通貨マイニング ライブラリが続いています。興味深いことに、CoinNebula、BatMine、DeepMiner、CryptoNoter、Minrなどのその他の10種類以上の仮想通貨マイニング ライブラリは、合計しても、検出されたすべてのスクリプトの5%しか占めていません。以前は他のライブラリもより多く検出されていたので、おそらく仮想通貨マイニングの傾向に変化が生じたと思われます。さらに、この1ヵ月で、3ヵ月前までは検出されていたいくつかのライブラリ、すなわちWebXMR、ProjectPoi、およびGrindcashは観察されませんでした。

図2.最近観察された上位の仮想通貨マイニングソフト
図2.最近観察された上位の仮想通貨マイニングソフト

仮想通貨マイニングソフトを伴う8,712のURLのうち、6,026、つまり69.1%で「許可されていない」仮想通貨マイニングが実行されています。つまり、それらのページにユーザーがアクセスすると、ユーザーに同意を求めることなく直ちにマイニングが開始されます。仮想通貨マイニング ライブラリの中で、許可されていないマイニングを実行するために最も人気があり、よく使われていたのが、CoinImp (612スクリプト中、100%が未許可)、Crypto-Loot (906スクリプト中、86%が未許可)、Coinhive (3,312スクリプト中、77.7%が未許可)で、その他に特定されなかったStratumトラフィックを生成しているスクリプトが1,143ありました。

同時に、多くの仮想通貨マイニング キャンペーンでは、隠匿性を維持するために別の手法が追加で利用されています。そうした手法には、静的難読化やコードの圧縮などがあります。たとえば、以下のようなマイニングJavaScriptライブラリの多数の亜種が見つかったとします。それらの亜種は、カスタム サーバーから提供され、通常は、認識不可能な名前が付けられていますが、"jquery.min.js"などの、人気のある安全なスクリプトを装っている場合もあります。

このような場合は、静的シグネチャとファイル ハッシュを一致させるのが困難になってしまうことがあります。それらはほとんど常に固有だからです。ただし、これらのスクリプトを実行すると、ページ上で作成された同じ既知のグローバル変数、"CoinHive"と"miner"は簡単に検出されます。さらに、仮想通貨マイニングを行うプロセスは、WebSocketトラフィックを分析することでも検出できます。

結果として、4,264のCoinhiveスクリプトのうち1,414、つまり33.2%以上が、行動シグネチャに動的解析を使用しただけで検出されました。抽象構文ツリーのハッシュ一致などのその他の手法は、難読化を回避できませんでした。

同じWebページがアクセスごとに仮想通貨マイニングソフトをローテーションしている場合、またはいくつかの異なる仮想通貨マイニング ライブラリを同時にホストしている場合に検出されたケースが多数あったことにも言及しておきたいと思います。たとえば、CoinhiveとJSE-Coin、Crypto-LootとNeroHutなどの組み合わせが一般的です。図3は、ユーザーがページにアクセスした直後に両方のライブラリがマイニングを開始した場合の、こうしたケースの1つのスクリーンショットを示しています。これらの出現により、1ヵ月間に検出されたマイニング スクリプトの総数(9,104)は、個別のURLの総数(8,712)を上回りました。

図3.2つのアクティブな仮想通貨マイニングソフトを伴うWebサイトの例
図3.2つのアクティブな仮想通貨マイニングソフトを伴うWebサイトの例

詐欺関連のJavaScriptについて

仮想通貨マイニングソフトを除いた悪意あるJavaScriptsについては、1日あたり約184のURLと、約143の新しいURLを検出できました。図4は、1日単位の検出率を示しています。このとおり、検出されたURLの総数と新たに検出されたURLの割合は、仮想通貨マイニングURLを示した図1と比べて、お互いにかなり近い値を示していることがわかりました。つまり、詐欺関連のJavaScriptをホストしているURLは、寿命が短く、連続して何日も観察される可能性は低いと思われます。

図4.詐欺関連のURLの日単位の検出率
図4.詐欺関連のURLの日単位の検出率

弊社は、仮想通貨マイニングソフトを使ったJavaScript攻撃以外に、図6のような分布を示す、4,788のマイニング関連以外の悪意あるサンプルも検出しました。前述のとおり、テクニカル サポートを装った詐欺と偽のFlash更新を装う詐欺が、2018年11月に最も人気のあった悪意あるキャンペーンでした(図5にこのような悪意のあるページの例が示されています)。同時に、その他のタイプの悪意のある詐欺キャンペーンには、フィッシングキット、クリックジャック キット、偽の賞金やその他の詐欺などがありました。

図5.2018年11月に最も人気のあった詐欺ページのスクリーンショット
図5.2018年11月に最も人気のあった詐欺ページのスクリーンショット
図6.最近観察された上位のマイニング以外の悪意のあるJavaScript
図6.最近観察された上位のマイニング以外の悪意のあるJavaScript

特に興味深いのは、テクニカル サポート詐欺を装うケースで、ユーザーが詐欺師に電話をしてお金を支払ったり、無用なプログラムをインストールしたりするように仕向けています。これらのページを分析したところ、すべてが単一の攻撃者グループに関連付けられている可能性があることを示す証拠が明らかになりました。第1に、テクニカル サポート詐欺につながる1,989の検出されたURLのうち1,668以上が、結果として図6の左側に示すような同じスクリーンショットの同じページになりました。これらのページは、同じアラート テキストを含むJavaScriptポップアップを表示していました。

第2に、これらURLの最近のランディング ページの多くは、以下の正規表現に従って、同じパターンの後に続くドメイン上でホストされていました(たとえば、"gaf9342[.]space"や"gba9462[.]site")。

比較すると、偽のFlash更新を装うページの方が被害端末への適応性が高く、Google Chrome対Internet ExplorerおよびMS Windows対macOSといったケースでも、さまざまなページが表示されます。さらに、偽のFlashの更新を装うページでは、より頻繁にそれらのポップアップ テキストが更新されます。たとえば、以下はページ上のアラートで最も一般的なテキストです。(「警告!あなたの公式Adobe Flash Playerは古いものです。最新のソフトウェアをインストールしてください。『更新』ボタンを押して」

このようなアラートのテキストを正確に一致させた時には検出数が限られるため、詐欺に関連付けられた最も重要な用語に基づいて弊社のモデルをトレーニングすることができなくなることを強調しておきたいと思います。そのため、弊社では、上記の"Flash Player"のようなキーワード間のダブル スペース、改行の挿入、他の言語でのメッセージなど、テキストのランダム化と難読化のトリックに備えて準備しています。

11月には、リダイレクター/インジェクター、ドロッパー、エクスプロイトなどのその他のタイプの悪意あるJavaScriptは、振る舞いに基づくアプローチではそれほど広く検出されていません(図6によると1%未満)。このような脅威には、通常、iframeをページにドロップするだけでグローバル変数を使用しないリダイレクターなどのよりシンプルなスクリプトが含まれます。パロアルトネットワークスは、このような悪意のあるスクリプトを検出するためにその他の手法を実装しています。たとえば、挿入された悪意のあるiframeやスクリプトからのリクエストを含め、クロール中にページから発生したすべてのサブリクエストを分析します。エクスプロイト キットに関しては、高対話型Windows/IE環境内でエクスプロイト キットのOSレベルの動作を調べています。

悪意のあるドメインの分析

全体として、8,712の仮想通貨マイニングのURLを検出し、7,654の異なるドメインとして解決されました。仮想通貨マイニングに加え、他の悪意あるスクリプトを伴う4,633のURLが検出され、2,666のドメインとして分析されました。弊社のパッシブDNS(pDNS)データベースで両方のドメイン セットを検索したところ、両方の寿命と人気度を推定できました。図7は、各ドメインがアクティブだった日数と、それが解決された回数(つまり、そのドメインがどれくらい人気があるか)を示す散布図です。

図7.悪意のあるURLの寿命と人気
図7.悪意のあるURLの寿命と人気

図7に基づくと、仮想通貨マイニング ドメインはかなり人気が高く長寿命ですが、その他の悪意のあるドメインは通常、寿命は100日未満で、10,000未満のDNS名前解決しか受信していません(青い点の下部の集団)。これは驚くことではありません。詐欺やフィッシングのキャンペーンは最終的に検出され、ブロックされるため、それらのドメインをローテーションさせる必要があるからです。対照的に、仮想通貨マイニングは通常、グレーゾーンに分類されます。つまり、ユーザーがブロックを望めるだけの悪意はあるが、永続的にドメインをブロックしたりサーバーをシャットダウンしたりできるだけの理由が常にあるわけではありません。多くの評判の良いWebサイトでさえ、意図的に仮想通貨マイニングを組み込んで、それに対する訪問者の同意を「無料」のコンテンツ アクセスと引き換えに強制的に得ています。

図7でわかるとおり、一部のドメインはかなり広く普及しており、数千万回を超えるDNS名前解決を受信し、その寿命は4年を超えます。これらの例としては、マイニングに直接関連するドメイン("coinhive[.]com"や"moonbit[.]co[.]in"など)と、需要の高いコンテンツを持つさまざまなWebサイト("xxgasm[.]com"、"seriesfree[.]to"、"rumorfix[.]com"、"gooddrama[.]net"など)があります。興味深いのは、散布図に、DNSリクエストは多数あっても寿命が短いドメインも存在することです。それらは、違法なWebサイトが登録され、人気が非常に高まったケースであると疑われます。たとえば、"indoxxi[.]cool"が提供するオンライン ムービーの寿命はたった14日間でしたが、pDNSレコードですでに63,694回解決されています。

マイニング以外の悪意のあるJavaScriptの例は、通常、"win32-0x2ndt-firewall-error[.]gq"(テクニカル サポート詐欺)、"www2[.]betterdealupgradeaflash[.]icu"(偽のFlash更新)、"paypal-verificationupdate[.]obay[.]me"(フィッシング)などの特別に作成されたドメイン上でホストされています。または、一般にあまり人気のないWebサイト上でホストされています。お気づきかもしれませんが、図7には、非常に人気が高くて長寿命の詐欺ドメインという、稀なケースも存在します。たとえば、これらには、URLが短いドメイン("ow[.]ly"、"smarturl[.]it"など)や、広告を提供し、詐欺キャンペーンで頻繁に使用されているドメイン("blank[.]com"、"elitedollars[.]com"など)があります。同様に、人気はあっても違法なWebサイト("mytorrents[.]org"、"yourmovie[.]org"など)も比較的長い期間存在しています。

検出された仮想通貨マイニング ドメインのTLD+1ドメイン(abc.xyz.comではなくxyz.comなど)についてAlexaでのランキングを分析した後、それらの大半(66.9%)が該当月で1日以上、Alexaの上位百万で見つかったことは驚きでした。さらに、先頭から10,000以内の37ドメインを含む、1,295の仮想通貨マイニング ドメインが上位百万に存続していました。一方では、これらの結果は、人気のあるWebサイトがマイニングを採用し始めると、上位の人気のあるWebサイトから脱落する傾向があることを示唆しています。そのまた一方で、弊社は、Alexaの上位百万のWebサイトに許可されていない仮想通貨マイニングが多数含まれていることで、引き続き危機感を抱いています。図8は、Alexaのランク別に検出された1,295の仮想通貨マイニング ドメインの分布を示しています。明らかに、許可されていないマイニングが上位100,000でも優勢を占めています。

対照的に、マイニング以外の悪意のあるJavaScriptドメインは、Alexaの上位百万のうち71のみでした(上位10,000中の7つを含む)。悪意のあるJavaScriptのマイニングとマイニング以外の両方のカテゴリで、最も人気のある例の1つが、"blogspot[.]com"でホストされたWebサイトです。これは、各サブドメインが完全に異なるWebサイトで構成されているからです。

図8.Alexaの上100万における仮想通貨マイニング ドメインのランク別分布
図8.Alexaの上100万における仮想通貨マイニング ドメインのランク別分布

表1は、仮想通貨マイニングおよびその他の悪意のあるスクリプトとして動作する、最も人気のあるTLDを一覧しています。おわかりのとおり、[.]icu TLDが、さまざまな種類の詐欺を配信するために11月中に最も悪用されました。仮想通貨マイニング ドメインに関しては、それらの大半がより評判の良い[.]com TLD上に存在しています。このことは、マイニングがより人気のある寿命の長いWebサイト(ブログ、ビデオ ダウンロード、トレントなど)上に頻繁に存在するという以前の調査結果に一致します。

仮想通貨マイニング 悪意のあるJS
TLD ドメイン数 TLD ドメイン数
com 3487 icu 1299
ir 394 com 409
net 337 club 290
ru 319 xyz 83
org 285 tk 61
br 206 cf 49
tk 111 net 32
info 108 ga 27
de 91 ml 23
in 91 online 22

表1.仮想通貨マイニングおよび悪意のあるJavaScriptとして動作する上位10のTLD

悪意のあるWebサイトの地理的な分布を把握するために、それらのIPアドレスを場所に変換しました。図9は、仮想通貨マイニングのIPの国レベルの分布を示しています。一方、図10は、その他の悪意のあるJavaScriptの地図を示しています。仮想通貨マイニングに関与するWebサイトは日本を含むより多くの国を網羅していますが、どちらの地図もサーバーの大半が米国内にあることを示しています。

図9.仮想通貨マイニングのIPの国レベルの分布
図9.仮想通貨マイニングのIPの国レベルの分布
図10.マイニング以外の悪意のあるJSを提供するIPの国レベルの分布
図10.マイニング以外の悪意のあるJSを提供するIPの国レベルの分布

お客様への影響

この1ヵ月の間、弊社のお客様は、上記の8,712のうち、仮想通貨マイニングを伴う6,804のURLにアクセスを試みました。全体として、30,000台を超えるデバイスからこれらのWebサイトへの110万を超えるリクエストを登録しました。同様に、弊社のテレメトリ データから、世界中の12,000台の固有デバイスから4,476の詐欺関連のURL(4,633中)を243,000回余りリクエストしたことが明らかになりました。

実際のWebユーザーにこのような広範にわたる影響を及ぼすことから、悪意のあるJavaScriptキャンペーンは最新のWebにおける最も一般的な脅威の1つとして位置付けられます。そのため、予防的に保護するには、大規模に実行して、難読化された悪意あるコードを検出することのできる軽量な動的手法が極めて重要となります。

結論

JavaScriptの行動分析は、許可されていない仮想通貨マイニングや無数の詐欺キャンペーンなどの最新の脅威を撃退するための重要な手段です。グローバル変数、アラート テキスト、WebSocketメッセージなどの行動シグネチャは、有用ですが、悪意のあるスクリプトの検出に役立つ唯一の動的情報というわけではありません。パロアルトネットワークスでは、継続的なオンライン脅威の検出手法の改善とお客様の保護に努めています。

侵入型の仮想通貨マイニングは、引き続き、Web上での主要な脅威の1つですが、過去1ヵ月で流行した仮想通貨マイニング ライブラリはほんのわずかです。最も有名なCoinhiveライブラリ以外の目立つ存在は、JSE-Coin、Crypto-Loot、およびCoinImpのみです。仮想通貨マイニング ドメインは、お客様を保護するうえで正確にブロックすることが極めて重要な詐欺キャンペーンに比べると、遥かに寿命が長くて人気があります。挙動分析によって、許可されていない仮想通貨マイニングを分離し、マイニング ライブラリを含むものだけでなく、それ自体がマイニング プロセスであるものも検出できます。

テクニカル サポートを装う詐欺と偽のFlash更新を装う詐欺は、仮想通貨マイニングの次に広まっている悪意のあるJavaScriptのタイプです。ユーザーがこれらのWebサイトにアクセスする前に、これらのWebサイトを検出してブロックすることが非常に重要です。

今のところ、弊社は日単位でのWebのスキャンを継続し、悪意のあるWebサイトのデータベースを強化しています。結果として、パロアルトネットワークスのお客様は、脅威防御サブスクリプションの一部である、PAN-DB URLフィルタリングとDNSシグネチャを使用して、悪意のあるJavaScriptをホストしているWebサイトから保護されます。

IOC

以下のファイルに、仮想通貨マイニングと詐欺JavaScriptに誘導するすべてのURLの一覧を示しています。これらのURLは、上記の結果に基づいてPAN-DBに公開されました(これらのURLの一部は、異なるランディング ページに誘導する可能性のある悪意のあるゲートウェイであることに注意してください)。

coin_mining_urls

scam_js_urls

Enlarged Image