過去数か月間、FireEye は侵害されたサイトを利用して偽のアップデートを拡散する実際のキャンペーンを追跡してきました。場合によっては、ペイロードが NetSupport Manager リモート アクセス ツール (RAT) でした。 NetSupport Manager は、システム管理者がクライアント コンピュータにリモート アクセスするために合法的に使用できる市販の RAT です。しかし、悪意のある攻撃者は、知らないうちに被害者のシステムにインストールして、マシンへの不正アクセスを取得することで、このアプリケーションを悪用しています。このブログでは、識別されたペイロードが NetSupport RAT であるインスタンスで使用された JavaScript とコンポーネントの分析について詳しく説明します。
感染ベクター
これらのキャンペーンの背後にいるオペレーターは、侵害されたサイトを使用して、Adobe Flash、Chrome、および FireFox の更新を装った偽の更新を拡散します。ユーザーが侵害された Web サイトにアクセスすると、悪意のある JavaScript ファイルがダウンロードされます。ほとんどの場合、DropBox リンクからダウンロードされます。ペイロードを配信する前に、JavaScript は基本的なシステム情報をサーバーに送信します。サーバーからさらにコマンドを受信した後、最終的な JavaScript を実行して最終的なペイロードを配信します。この場合、ペイロードを配信する JavaScript は Update.js という名前で、wscript.exe を使用して %AppData% から実行されます。図 1 に感染フローを示します。
JavaScript の詳細な分析
最初の JavaScript ファイルには、複数の難読化レイヤーが含まれています。他の悪意のあるスクリプトと同様に、第 1 層には、第 2 層を新しい機能として構築および実行する難読化があります。 JavaScript の 2 番目の層にはdec関数が含まれており、これを使用してさらに JavaScript コードを復号化および実行します。図 2 は、2 番目のレイヤーのスナップショットを示しています。
2 番目の JavaScript ファイルでは、マルウェアの作成者がトリッキーな方法を使用して、リバース エンジニアによる分析を困難にしています。作成者は、呼び出し元と呼び出し先の関数コードを使用して、復号化のためのキーを取得します。通常の JavaScript 分析中に、アナリストが難読化されたスクリプトを見つけた場合、アナリストは分析のためにスクリプトを難読化解除または美化しようとします。 JavaScript 美化ツールは通常、改行とタブを追加して、スクリプト コードの見栄えを良くし、分析しやすくします。また、ツールはローカル変数の名前を変更し、参照されていない変数とコードをスクリプトから削除しようとします。これにより、コア コードのみを分析するのに役立ちます。
ただし、この場合、マルウェアは呼び出し元と呼び出し先の関数コードを使用してキーを導出するため、アナリストが第 1 層または第 2 層のスクリプトに何かを追加または削除すると、スクリプトはキーを取得できずに終了します。例外。図 3 のコード スニペットは、このトリックを示しています。
このコードは、JavaScript コードを関数として復号化し、実行します。この復号化された関数には、ネットワーク接続を開始するコードが含まれています。デコードされた関数では、コマンド アンド コントロール (C2) URL とtidという名前の値がスクリプトにハードコードされ、エンコードされた関数で保護されています。
サーバーとの最初の通信中に、マルウェアはtid値とシステムの現在の日付をエンコードされた形式で送信し、サーバーからの応答を待ちます。図 4 に示すように、サーバーの応答をデコードし、応答を関数として実行します。
サーバーからの応答は、マルウェアがstep2 という名前の関数として実行する JavaScript コードです。
step2関数は WScript.Network を使用し、 Windows Management Instrumentation (WMI) を使用して次のシステム情報を収集し、それをエンコードしてサーバーに送信します。
アーキテクチャ、コンピュータ名、ユーザー名、プロセッサ、OS、ドメイン、メーカー、モデル、BIOS_Version、AntiSpywareProduct、AntiVirusProduct、MACAddress、キーボード、PointingDevice、DisplayControllerConfiguration、ProcessList;
システム情報をサーバーに送信した後、サーバーからの応答にはcontent2とcontent3の 2 つの部分が含まれます。
スクリプト ( step2関数) は両方の部分をデコードします。 デコードされたcontent3部分には、 step3という名前の関数が含まれています (図 5 参照)。
step3関数には、デコードされたcontent2をUpdate.jsとして %temp% ディレクトリに書き込むコードが含まれています。 Update.js には、最終的なペイロードをダウンロードして実行するためのコードが含まれています。 step3関数は、 runFileResultや_tempFilePathなどの結果データもサーバーに送信します (図 6 参照)。
Update.js ファイルには、多層難読化も含まれています。デコード後、JavaScript には、7zip スタンドアロン実行可能ファイル (7za.exe)、パスワードで保護されたアーカイブ (Loglist.rtf)、バッチ スクリプト (Upd.cmd) など、複数のファイルを %AppData% にドロップするコードが含まれています。これらのコンポーネントについては後で詳しく説明します。
JavaScript は PowerShell コマンドを使用して、サーバーからファイルをダウンロードします。属性の実行ポリシーをバイパスに設定し、ウィンドウ スタイルを非表示に設定して、エンド ユーザーから自分自身を隠します。
攻撃の構成要素
図 7 は、マルウェア作成者がスクリプト コンテンツを更新していることを確認した悪意のあるサーバーのインデックスを示しています。
- 7za.exe: 7zip スタンドアロン実行可能ファイル
- LogList.rtf: パスワードで保護されたアーカイブ ファイル
- Upd.cmd: NetSupport クライアントをインストールするためのバッチ スクリプト
- Downloads.txt: IP のリスト (おそらく感染したシステム)
- Get.php: LogList.rtf をダウンロードします
Upd.cmd
このファイルは、アーカイブ ファイルを抽出し、リモート コントロール ツールをシステムにインストールするバッチ スクリプトです。スクリプトは変数置換方式で難読化されています。このファイルは、分析中にマルウェアによって定期的に更新されました。
スクリプトの難読化を解除すると、スクリプト内にバッチ コマンドが表示されます (図 8)。
スクリプトは次のタスクを実行します。
- スクリプトに記載されているパスワードを使用して、7zip 実行可能ファイルを使用してアーカイブを抽出します。
- 解凍後、ダウンロードしたアーカイブファイル(loglist.rtf)を削除してください。
- Windows エラー報告とアプリの互換性を無効にします。
- リモート コントロール クライアントの実行可能ファイルを、ファイアウォールの許可されたプログラム リストに追加します。
- リモート コントロール ツール (client32.exe) を実行します。
- 「ManifestStore」という名前の Run レジストリ エントリを追加するか、スタートアップ フォルダにショートカット ファイルをダウンロードします。
- 属性を使用してファイルを非表示にします。
- すべての成果物 (7zip 実行可能ファイル、スクリプト、アーカイブ ファイル) を削除します。
ノート: スクリプトを分析しているときに、スクリプトにいくつかのタイプミスが見つかりました (図 9)。はい、マルウェア作成者も間違いを犯します。このスクリプトはベータ段階にある可能性があります。スクリプトの新しいバージョンでは、作成者はこれらのタイプミスを削除しました。
アーティファクトクリーニング
前述のとおり、スクリプトには、攻撃で使用されたアーティファクトを被害者のシステムから削除するコードが含まれています。サーバーを監視しているときに、図 10 に示すように、このコードに関連するスクリプトの変更も確認しました。
亜種の 1 つで強調表示されているコマンドは、攻撃でこのファイルをドロップまたは使用する可能性があることを示しています。ファイルはおとり文書である可能性があります。
持続メカニズム
分析中に、この攻撃の 2 つの亜種が異なる持続性メカニズムで観察されました。
最初の亜種では、マルウェアの作成者が RUN レジストリ エントリを使用してシステム内に永続的に存在します。
2 番目の亜種では、マルウェアの作成者は、サーバーでホストされているショートカット ファイル ( desktop.ini.lnkという名前) を使用します。図 11 に示すように、ショートカット ファイルがダウンロードされ、Startup フォルダーに配置されます。
ショートカット ファイルのターゲット コマンドは、%AppData% にドロップされたリモート アプリケーション「client32.exe」を指し、起動時にアプリケーションを開始します。
ログリスト.rtf
ファイル拡張子は .rtf ですが、ファイルは実際には 7zip 圧縮されたアーカイブです。このアーカイブ ファイルはパスワードで保護されており、NetSupport Manager RAT が含まれています。スクリプト upd.cmd には、アーカイブを抽出するためのパスワードが含まれています。
NetSupport ツールが提供する主な機能は次のとおりです。
- リモートデスクトップ
- ファイル転送
- リモート インベントリおよびシステム情報
- クライアントのマシンでアプリケーションを起動する
- 位置情報
ダウンロード.txt
このファイルには、侵害されたシステムである可能性がある IP アドレスのリストが含まれています。ユーザーエージェントとともにIPがあります。ファイル内の IP アドレスは、主に米国、ドイツ、オランダなど、さまざまな地域に属しています。
結論
RAT は正当な目的で広く使用されており、多くの場合、システム管理者によって使用されています。ただし、これらは正当なアプリケーションであり、すぐに利用できるため、マルウェアの作成者は簡単に悪用でき、ユーザーの疑いを回避できる場合もあります。
FireEye HX エンドポイント プラットフォームは、攻撃サイクルの初期段階でこの攻撃を正常に検出します。
了承
同僚の Dileep Kumar Jallepalli、Rakesh Sharma、Kimberly Goody の分析への協力に感謝します。
侵害の痕跡
レジストリ エントリ
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun : ManifestStore
HKCUソフトウェアSeXKEx
ファイル
%AppData%ManifestStoreclient32.exe
%AppData%ManifestStoreclient32.ini
%AppData%ManifestStoreHTCTL32.DLL
%AppData%ManifestStoremsvcr100.dll
%AppData%ManifestStorenskbfltr.inf
%AppData%ManifestStoreNSM.ini
%AppData%ManifestStoreNSM.LIC
%AppData%ManifestStorensm_vpro.ini
%AppData%ManifestStorepcicapi.dll
%AppData%ManifestStorePCICHEK.DLL
%AppData%ManifestStorePCICL32.DLL
%AppData%ManifestStoreremcmdstub.exe
%AppData%ManifestStoreTCCTL32.DLL
%AppData%systemupdateWhitepaper.docx
ショートカットファイル
%AppData%RoamingMicrosoftWindowsスタート メニュープログラムスタートアップdesktop.ini.lnk
次のアプリケーションを許可するファイアウォール プログラム エントリ
%AppData%ManifestStoreclient32.exe
パス「%AppData%ManifestStoreclient32.exe」から「client32.exe」という名前のプロセスを実行中
ハッシュ
次のハッシュは、ブログで説明されているのと同じ難読化手法を使用する JavaScript ファイルです。
fc87951ae927d0fe5eb14027d43b1fc3
e3b0fd6c3c97355b7187c639ad9fb97a
a8e8b2072cbdf41f62e870ec775cb246
6c5fd3258f6eb2a7beaf1c69ee121b9f
31e7e9db74525b255f646baf2583c419
065ed6e04277925dcd6e0ff72c07b65a
12dd86b842a4d3fe067cdb38c3ef089a
350ae71bc3d9f0c1d7377fb4e737d2a4
c749321f56fce04ad8f4c3c31c7f33ff
c7abd2c0b7fd8c19e08fe2a228b021b9
b624735e02b49cfdd78df7542bf8e779
5a082bb45dbab012f17120135856c2fc
dc4bb711580e6b2fafa32353541a3f65
e57e4727100be6f3d243ae08011a18ae
9bf55bf8c2f4072883e01254cba973e6
20a6aa24e5586375c77b4dc1e00716f2
aa2a195d0581a78e01e62beabb03f5f0
99c7a56ba04c435372bea5484861cbf3
8c0d17d472589df4f597002d8f2ba487
227c634e563f256f396b4071ffda2e05
ef315aa749e2e33fc6df09d10ae6745d
341148a5ef714cf6cd98eb0801f07a01
参照: https://www.mandiant.com/resources/blog/fake-software-update-abuses-netsupport-remote-access-tool
Comments