- 2021/11/24
- マルウェア
【脅威分析レポート】Uaparser.jsライブラリへの悪意あるコードの埋め込み
Post by : Cybereason Global SOC Team
サイバーリーズンのGlobal Security Operations Center(GSOC)では、影響力のある新たな脅威に関する情報をお客様にお知らせするために、サイバーリーズン脅威アラートを発行しています。サイバーリーズン脅威アラートとは、そのような脅威に関する情報を要約した上で、同脅威から守るための実践的な推奨事項を提供するものです。
脅威の概要
GSOCに所属するCybereason Managed Detection and Response(MDR)チームは、現在、最近発生した一連のマルウェア攻撃を調査していますが、この攻撃では、悪意あるアクターがUAParser.js(User-AgentデータをパーシングするJavaScriptライブラリ)に埋め込んだコードが使用されています。ユーザーは、UAParser.jsをJavaScriptパッケージマネージャーであるnpmを使うことで、UAParser.jsを1つのnpmパッケージとしてシステムにインストールできます。この埋め込まれた悪意あるコードは、侵入先のシステム上に、暗号通貨マイニングを行うマルウェアやインフォスティーラー型のマルウェアを導入します。
主な調査結果
- 悪意あるアクターが、npmソフトウェアパッケージとして配布されているUAParser.jsライブラリのソースコードに、悪意あるコードを埋め込みました。この悪意あるコードは、侵入先のシステム上に、暗号通貨マイニングを行うマルウェアやインフォスティーラー型のマルウェアを導入します。
- ユーザーがこの悪意あるUAParser.jsのnpmパッケージをインストールすることによって、どれくらいの数のシステムが実際に侵入されたかは、現時点では不明です。なお、UAParser.jsライブラリは非常によく利用されており、1週間に700万回以上もダウンロードされています。
- この問題の発見時には、0.7.28より後のUAParser.jsのnpmパッケージの全バージョンが影響を受けることが確認されていました。ただし、本稿執筆時点でのUAParser.jsのnpmパッケージの最新版である1.0.1には、埋め込み型の悪意あるコードは含まれていません。
分析
悪意あるアクターがUAParser.jsの開発者のnpmアカウントをハッキングし、npmソフトウェアパッケージとして配布されているUAParser.jsのソースコードに、悪意あるコードを埋め込みました 。これは、ハッキングされたUAParser.jsのnpmパッケージをユーザーがインストールすると、埋め込まれた悪意あるコードが実行されることを意味します。
ハッキングされたUAParser.jsのnpmパッケージに埋め込まれた悪意あるコードは、preinstall.jsという名前のスクリプトを実行します。
▲悪意あるコードはpreinstall.jsスクリプトを実行する
preinstall.jsスクリプトは最初に、スクリプトが実行されるオペレーティングシステムの種類を判断します。preinstall.js スクリプトは、Windowsシステム上ではpreinstall.batという名前のWindowsバッチスクリプトを実行し、Linuxシステムではpreinstall.shという名前のLinuxシェルスクリプトを実行します。
▲preinstall.js はpreinstall.bat またはpreinstall.sh を実行する
preinstall.batおよびpreinstall.shスクリプトは、攻撃者が管理するエンドポイント(ラトビアに存在し、IPアドレスが159.148.186[.]228であるもの)から、それぞれjsextension.exeおよびjsextensionという名前の悪意ある実行ファイルをダウンロードして実行します。 jsextension(.exe)という実行ファイルは、暗号通貨のマイニングを行うマルウェアを実装しています。
- Windows システムの場合、preinstall.batスクリプトはcurl、certutil、またはwgetユーティリティを使用してjsextension.exeをダウンロードした後、同ファイルを実行します。jsextension.exeは、SHA(Secure Hash Algorithm)-256ハッシュ「7f986cd3c946f274cdec73f80b84855a77bc2a3c765d68897fbc42835629a5d5」を持つWindows実行ファイルです。
- Linuxシステムの場合、preinstall.shスクリプトはcurlまたはwgetユーティリティーユーティリティを使用してjsextensionをダウンロードした後、同ファイルを実行します。jsextensionは、SHA-256ハッシュ「ea131cc5ccf6aa6544d6cb29cdb78130feed061d2097c6903215be1499464c2e」を持つELF(Executable and Linkable Format)形式のLinux実行ファイルです。
注:preinstall.shがjsextensionをダウンロードして実行するのは、侵入先のシステムが、ロシア、ウクライナ、ベラルーシ、カザフスタン(それぞれ国コードがRU、UA、BY、KZである国)に存在していない場合に限られます。
▲preinstall.batは、curl、certutil、またはwgetユーティリティを使用してjsextension.exeをダウンロードする
Windowsシステム上での振る舞い
Windowsシステムの場合、jsextension.exeに加えて、preinstall.batは、攻撃者が管理するエンドポイントcitationsherbe[.]at(ロシアに存在するもの)からcreate.dllという名の悪意ある実行ファイルをダウンロードします。create.dllは、SHA-256ハッシュ「bb8ccdcf17761f1e86d8ebbc1a12b123929c48c5eea4739b7619bd53728d412b」を持つWindowsのダイナミックリンクライブラリ(DLL)です。create.dllファイルは、インフォスティーラー型のマルウェアを実装しています。
preinstall.batは、jsextension.exeとcreate.dllをダウンロードした後、Windowsのタスクリストユーティリティを使用して、侵入先のシステム上でjsextension.exeがすでに実行されているかどうかを判断します。jsextension.exeが実行されていない場合、preinstall.batはWindowsユーティリティであるregsvr32.exeを使用して、まずjsextension.exeを実行した後、続いてcreate.dllを実行します。
▲preinstall.batはjsextension.exeとcreate.dllを実行する
サイバーリーズンによる推奨事項
サイバーリーズンでは次のことを推奨しています。
- ユーザーがハッキングされたUAParser.jsのnpmパッケージを自社システムにインストールしたことがあるかどうかを判定すること。また、自社システムにインストールされているUAParser.jsライブラリを最新版に更新すること。
- セキュアなパスワードを使用した上で、定期的にパスワードを変更すること。また、可能な限り多要素認証を使用すること。
- プロアクティブなハンティングを行うために、CybereasonプラットフォームのInvestigation(調査)画面と、Hunting Queriesセクションにおけるクエリを使用して、ハッキングされたUAParser.jsのnpmパッケージに感染している可能性のあるマシンを検索すること。その後、この検索結果に基づいて、さらなる対応策を講じること。例としては、修正アクション感染したマシンを隔離すること、感染したマシンのユーザーを無効にすること、ユーザーのクレデンシャルを変更することなどが挙げられます。
【グローバル調査結果】ランサムウェア 〜ビジネスにもたらす真のコスト〜
サイバーリーズンは、ランサムウェアがビジネスに及ぼす影響に関するグローバル調査を2021年4月に実施しました。
本レポートでは、主な業種におけるランサムウェア攻撃のビジネスへの影響を把握した上で、ランサムウェア対策アプローチを改善するために活用できるデータを紹介しています。
https:https://www.cybereason.co.jp/product-documents/survey-report/6368/