脅威のスポットライト:ブラックベリーサイランス VS. Njw0rm (リモートアクセス型トロイの木馬)

By The Cylance Threat Research Team

本ブログ記事は、2019年3月26日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

「BlackBerry Cylance Versus」シリーズは、過去から現在に至るさまざまなマルウエアを深く分析し、何年にもわたって活動している可能性がある脅威とその理由を明らかにすること、およびセキュリティコミュニティとしてそれらのマルウエアと戦うことを目的としています。

はじめに

Njw0rmは、ワーム機能を備えたリモートアクセス型トロイの木馬(RAT)です。Google Chrome、Filezilla、VitalWerks(No-IPの親会社)がそれぞれ保存している認証情報をターゲットとしています。リムーバブルデバイスがあるかどうか確認し、あればそれに感染します。Njw0rmは、リムーバブルドライブ上にある他のローカルファイルの属性を改変し、ユーザーをだまして、そのドライブにアクセスするあらゆるシステムが感染するよう仕向けます。

技術的分析

ビルダー

Njw0rmには、コマンドアンドコントロール(C2)サーバーの通信ポートを攻撃者が設定できるようにするビルダーが存在します。デフォルトではポート1888が使用されます。このビルダーには、ワームの名前を設定するオプションと、そのワームが実行されたときにワーム自身のコピー先となるディレクトリを選択するオプションもカスタマイズ用に用意されています(図1)。


図1:Njw0rmのビルダーのGUI

  • UPX: AutoITのコンパイル済み実行可能ファイルをUPXパックするオプションを提供します。
  • MELT:指定のディレクトリにドロップされたマルウエア自身のファイルが削除されるようにするオプションを提供します。
  • Obfuscate: 埋め込まれたAutoITスクリプトを難読化するオプションを提供します。

ターゲットマシン上でこのワームが実行されると、C2サーバーへの接続がただちに確立されます。この接続を使用して、ターゲットマシンに関する情報がC2サーバーに転送されます。

図2:C2との接続を確立するNjw0rm(例)

この情報は、フォーマットが設定され、攻撃者に表形式で表示されます。攻撃者は、コンピューター名、ユーザー名、OSのバージョン、ワームのバージョン、アクティブなウィンドウ、そのマシンに接続されているUSBデバイスを知ることができます。

図3:感染したマシンを攻撃者側から見た状態

攻撃者は、感染したマシンをいくつかの方法で操作することもできます(図4)。


図4:Njw0rmで攻撃者が利用できるオプション

  • Run file: ファイルを実行します(対象とするユーザーを攻撃者が指定できます)。
  • Autoit Script: AutoITスクリプトをコピーアンドペーストして、実行できるようにします。
  • CMD.EXE: コマンドラインを使用してアクションを実行します。
  • Update: 更新用のURLを指定しておき、ワームを更新します。
  • Uninstall: 感染したマシンからマルウエアをアンインストールします。
  • Builder: Njw0rmのマルウエアビルダーを起動します。r
  • About: ワームのバージョン情報と作成者のTwitterページへのリンクを表示します。このTwitterアカウントは2013年に作成されましたが、そこにあるつぶやきはアラビア語で「おはよう」と書かれた1件のみです。


図5:ビルダーのバージョン情報

Get Passwords: このオプションでは、感染したマシンから収集されたユーザー名、パスワード、関連するウェブサイトがすべて表形式で表示されます。

ワーム

Njw0rmがマシン上で初めて実行されると、Njw0rmによって.iniファイルが作成されます。マシンにリムーバブルデバイスが接続されているかどうかに応じて、このファイルには値「Y」または「N」が記述されます。%TEMP%ディレクトリに、Njw0rmによって自身のコピーが作成されます。

ビルダーで指定されたファイル名とファイルパスに基づき、Njw0rmによってミューテックスが作成されます。次の例(図6と図7)では、「tempMicrosoft.exe」を使用してミューテックスが作成されています。


図6:Microsoft.exe.iniの作成


図7:Microsoft.exeの作成

このワームは、自身をレジストリキーとstartupの場所に追加し、感染したマシンが再起動するたびに自身が実行されるようにすることでパーシスタンスを達成します(図8)。

図8:パーシステンスを達成したNjw0rm

また、このマルウエアは、netsh.exeを使用して、許可されたプログラムとして自身をWindowsファイアウォールに追加します。図9に示すShellExecuteコマンドは次のようにデコードできます。「firewall add allowedprogram "C:\Users\%USER%\AppData\Local\Temp\Microsoft.exe" “Microsoft.exe" ENABLE」これによって、マルウエアはファイアウォールを実質的に迂回できます。

図9:

Njw0rmは、「sss6e6xxx[dot]myvnc[dot]com」に接続することでIPアドレスを解決し、そのIPを使用してC2に接続します(図10)。

図10:DNSのIPアドレスの解決

情報の窃盗

このマルウエアは、AutoITスクリプト言語で記述されています。このスクリプトには、Filezilla、Google Chrome、No-IPの各アカウントからの認証情報窃盗に関連する以下の3種類の機能があります。No-IPはダイナミックDNSプロバイダです。

NO-IP

No-IP機能は、No-IPのダイナミックDNSサーバーに使用するユーザー名とパスワードが、レジストリキー「HKLM\SOFTWARE\Vitalwerks\DUC」にあるかどうかを確認します。それらが見つかると、その認証情報とパスワードがC2サーバーに送信されます。


図11:No-IPの認証情報の窃盗

Filezilla

Filezilla機能は、ログイン認証情報とサーバー情報が「\Filezilla\recentservers.xml」にあるかどうかを確認します。それらが見つかると、その認証情報とパスワードがC2サーバーに送信されます。


図12:Filezillaの認証情報の窃盗

Google Chrome

Chrome機能は、特定のURLに関連付けられたユーザーログインデータを探します。それが見つかると、Chromeで保存されたパスワードを復号する関数がNjw0rmによって呼び出され、得られた情報がC2サーバーに送信されます。


図13:Google Chrome認証情報の窃盗

感染拡大

Njw0rmでは、リムーバブルデバイスのみに依存して感染拡大を実現しています。AutoITスクリプト内のusb()関数を使用して、接続されているリムーバブルドライブを継続的に検索しています(図14)。


図14:継続的に実行されるループ

リムーバブルデバイスが検出されると、そのデバイス上にある既存のファイル10個の属性が非表示に設定されます。次に、非表示に設定したフォルダごとに.lnkファイルが作成されます。また、ドライブにMy Pictureフォルダがない場合は、そのフォルダが作成されます。


図15:リムーバブルドライブを確認するNjw0rm


図16:感染後のUSBドライブ

Njw0rmによって作成された.lnkファイルは、対応する非表示フォルダが開かれる前にワームのコピーを実行するよう設定されています(図17)。このアプローチによって、ワームが検出されることを回避しています。


図17:.lnkファイルのプロパティ

BlackBerry CylanceはNjw0rmを阻止

テストでは、3年以上にわたりCylancePROTECT®が、 予測優位性スコアによってNjw0rmを検出し、ブロックしています。BlackBerry Cylanceが開発し、クラウドでトレーニングされたAI(人工知能)セキュリティエージェントが、2015年10月29日以来、Njw0rmおよびその最新亜種の検出とそれらに対する防御を可能にしてきました。

侵入の痕跡(IOC)*

  • ハッシュ

Builder: 37C246AF3B9980DD069BA971E6FDAA49FF264A256DCF44377D0979B816813319
Worm: 966BDEBA31C31C351E181D8DEDED2F4D213656F6484C7EB7CCD1C31B47B5C007

  • ファイル名

Microsoft.exe, Microsoft.exe.ini

  • C2s/IPs

sss6e6xxx[dot]myvnc[dot]comに対するDNSクエリ

ポート4040を使用した通信

  • ミューテックス

TempMicrosoft[dot]exe

*注: ビルダーを容易に利用できることから、Njw0rmのサンプルは多様で、サンプルの大多数はそれぞれ異なるIOCを示します。

ファイル情報

Tags: