マルウェア
偽暗号資産サイトと正規リモート管理ツールを悪用する攻撃キャンペーン
正規のリモート操作ソフトとして有名な「TeamViewer」を悪用するマルウェア「SpyAgent」を介した攻撃キャンペーンについて、トレンドマイクロは追跡し、調査してきました。過去のSpyAgentを介した攻撃については、既に他のレポートでも言及されていますが、本ブログエントリではSpyAgentの最新攻撃手法に着目します。
■ はじめに
正規のリモート操作ソフトとして有名な「TeamViewer」を悪用するマルウェア「SpyAgent」を介した攻撃キャンペーンについて、トレンドマイクロは追跡し、調査してきました。過去のSpyAgentを介した攻撃については、既に他のレポートでも言及されていますが、本ブログエントリではSpyAgentの最新攻撃手法に着目します。
トレンドマイクロは、SpyAgentマルウェアの新バージョンを使用し、暗号資産(旧:仮想通貨)を狙う新しい攻撃キャンペーンの存在を確認しました。この攻撃では、以前のTeamViewerのように、正規のロシア製遠隔操作ツール(RAT)である「Safib Assistant」が悪用されます。また、DLLサイドローディング脆弱性を狙い、SpyAgentのDLLを読み込ませます。このDLLは、Safib Assistantが用いる様々なAPIをフックして中身を書き換え、結果として、RATのウィンドウをユーザから隠します。次にこのSpyAgentのDLLは、マルウェアのオペレータが感染したマシンに接続して操作するために必要なRATのID情報を送信します。アクセスパスワードについては、本マルウェアによって固定値に設定されているため、攻撃者はRATのIDを知るだけで、感染したマシンに接続することができます。
■ 拡散経路
SpyAgentマルウェアのドロッパは、ロシア語の偽暗号資産サイト上から、偽の暗号通貨ウォレットやコインマイナー、あるいはサーフィン・プラグインに偽装して配布されていた事例を確認しています。図1~4にこうした偽Webサイトの例を示します。
図1:ロシア語で書かれた偽の暗号資産ウォレット
図2:ロシア語で書かれた偽の暗号資産マイナー
図3:dogecoin獲得を謳う偽のサーフィン・プラグイン
図4:bitcoin獲得を謳う偽のサーフィン・プラグイン
ユーザがこれらのサイトにアクセスすると、すぐにSpyAgentドロッパのダウンロードを勧めるダイアログが表示され、続いて、実行ファイルを保存して実行するように促します。
被害者をこれらの偽サイトに誘導する経路は様々です。トレンドマイクロが確認したソーシャルエンジニアリングの1つとしては、図5の広告のように「サイト閲覧により暗号資産を稼ぐ」ことを謳ったウェブサイト広告によるものが挙げられます。閲覧と引き換えに暗号資産を稼がせる全てのサイトが悪質なものとは限りませんが、下記スクリーンショットは、偽の暗号資産サイトに誘導する悪質なWebサイトです。
図5:不正なWebサイトに誘導する悪意ある広告
リンクを押下すると被害者のブラウザはすぐに偽の暗号資産サイトの1つに転送され、偽アプリケーションを保存するダイアログが表示されます。
図6:偽ビットコインボットのWebサイト
図7のTweetのようにソーシャルメディアも感染経路として利用されます。興味深いことに、このTwitterアカウント自体は正規のものに見え、セキュリティ侵害を受けた可能性があります。
図7:Twitterで偽Webサイトを拡散するユーザ
サイバー犯罪者によるSEOポイズニング(検索エンジン最適化汚染)により、検索サイト上でキーワード検索した際に、これらの偽サイトが検索結果に含まれてしまう可能性があります。
図8:偽のDoge Minerウェブサイトへのリンクを含む検索結果
■ ドロッパの分析
ドロッパは通常、スクリプト記述が可能な正規のインストーラ生成ツールの1つであるNullsoft Scriptable Install System(NSIS)によって作成されます(過去には別のインストーラであるInno Setupによって作成された亜種も見られました)。ドロッパ(NSISインストーラ)ファイルは、ランダムな名称の暗号化されたバイナリファイルのみを含みます。
図9:ランダム名のバイナリファイル1つのみを含むインストーラ
NSISインストーラはMicrosoft CryptoAPIを呼び出して当該バイナリファイルを復号します。復号結果はファイルを抽出する7-zipアーカイブです。図10の578行目は、復号鍵の抽出に必要な文字列(tno7wul0zusmglmdl)を示します。
図10:コード内に定義されたパスワードからRC4復号鍵を抽出し、それを使用してランダムなバイナリファイルの復号化を行う
続いて、この文字列はMD5アルゴリズムでハッシュ化されます(定数0x00008003を参照)。
図11:パスワードのMD5ハッシュ化
図12:RC4鍵の抽出
dwFlagsパラメータ(上図0x280011)の上位16ビットから、鍵の係数の長さが分かります(0x28 / 8 = 40 / 8 = 5バイト)。下位16ビットはフラグ値CRYPT_EXPORTABLEとCRYPT_NO_SALTに対応します。
従って、上述した鍵抽出用文字列に対するMD5ハッシュ値の先頭5バイトが、7-zipアーカイブ復号化用のRC4鍵に相当します。
図13:鍵の長さの算出法について記載した記事
抽出した7-zipアーカイブは複数のファイルを含み、その殆どは、正規で無害なRATコンポーネントです。図14中、赤字で記したファイルのみが、マルウェア作成者によって付加されたものです。
バッチファイル(.bat)は、メインの実行ファイル(Assistant, ast.exe)を起動します。コンフィグファイル(*.cfg)は暗号化された設定内容を保持します。ビットマップファイル(.bmp)はコンフィグファイルの復号鍵抽出に用います。最後にquartz.dllは、マルウェアを含む悪意あるDLLであり、ast.exeによってサイドロードされます。quartz DLLの実質的なサイズは数十キロバイト程度ですが、多量のゼロ列を付加して意図的にサイズを膨らませてあります。このようにする狙いは、一部のセキュリティソリューションによる対象ファイルのアップロードと追加分析を阻止、または妨害するためと推測されます。
図14:RATを同梱する7-zipアーカイブの中身。マルウェア開発者による追加ファイルを赤字で示す
■ サイドロードで取り込まれるDLLの分析
当該DLLはコンフィグファイルを復号化します。はじめにコンフィグファイルの先頭1バイトをチェックします。値が0x01の場合、本マルウェアが初めて起動していること、コンフィグファイルはビットマップファイルから抽出される鍵によって暗号化されていることを意味します。また先頭1バイトが0x00の場合には、SOFTWARE\Microsoft\Cryptography\MachineGuid の値から抽出される鍵によってコンフィグファイルが暗号化されていることを意味します。
鍵の抽出は下記4ステップで行われます。
1) 入力(.bmpファイル)からCRC32チェックサム値を算出する。
2) チェックサム値を16進数文字列(8文字)に変換し、アルファベットは全て大文字にする。
3) MD5ハッシュ値を算出する。
4) ハッシュ値の16進数文字列(32文字)を、コンフィグファイル復号用のRC4パスワードとして使用する。
復号後のコンフィグファイル内にはコマンド&コントロール(C&C)サーバのURLアドレスが含まれます。このURLアドレスのドメイン部は、更に別の部分の復号鍵として、今回の例では、DLL実行コード内の一部分に対する復号鍵に使用されます。というのも、このDLLは、自分自身を部分的に書き換える動作をするためです。
図15:暗号化されたコードへの関数呼び出し。復号化前(上)、復号化後(下)
復号された一番目の関数はAPI関数のアドレス解決を行い、二番目の関数は、様々な関数をフックしてRATのデフォルト動作を書き換え、「乗っ取り」ます。
下の表に、フックされるRAT関数の中で重要なものと、それによる影響について記載します。
関数 | 詳細 |
RegCreateKeyEx | RAT設定を使用してレジストリを \ast\SSから\ast\SS1 に書き換える。 |
RegSetValueKeyEx | RATのIDがレジストリに保存された際にその値を抜き出す。更にC&C通信用、アイドル監視用の2スレッドを起動する。 |
FindWindow | RATのウィンドウを表示しないようにする。 |
RegisterClass | RATのウィンドウを表示しないようにする。 |
ShowWindow | RATのウィンドウを非表示にする。 |
CreateFile | RATがデフォルトで作成するログファイルを無効化する。 |
GetCommandLine | RATをバックグラウンド上の隠しプロセスとして起動するように、コマンドラインパラメータを設定する。 レジストリに保存する接続パスワードを、既知の固定値で設定する。 タスクマネージャとエクスプローラのタスクを強制終了するスレッドを起動する。 |
表1:復号化後の関数実行によってフックされる重要な関数
RATがマルウェアに乗っ取られていない状態で正常起動した場合は、図17のスクリーンショットのようなウィンドウが表示されます。図中の9桁の数字(RegSetValueKeyExのフックにより抜き取られる)と4桁の数字(GetCommandLineのフックで設定されたレジストリ値で上書きされる)について注目してください。更に、このウィンドウは、FindWindow, RegisterClass, ShowWindowへのフックによって、表示されなくなります。
図16:正常起動した場合のRATウィンドウ。9桁の数字はIDを、4桁の数字はパスワードを表す
最後に、上述の2つのスレッドについて分析します。C&C通信スレッドは定期的に、GETリクエストを<C&Cドメイン>/<C&Cパス>?id=<数字9桁>&stat=<環境ハッシュ値>に送信します。環境ハッシュ値は、以下に記す5種の値を結合した文字列に対するMD5ハッシュ値として算出します。
Value 1 = to_uppercase(crc32(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid))
Value 2 = to_uppercase(crc32(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName))
Value 3 = to_uppercase(crc32(user name))
Value 4 = to_uppercase(crc32(computer name))
Value 5 = concatenate Value1 Value2 Value3 Value4
このリクエストに対し下記のようなフォーマットの応答が返されることがあります。
!lexec;<url to download>
restart
delproc
アイドル監視スレッドは、キー押下や選択、ドラッグ動作を監視します。ユーザが1分以上に渡りアイドル状態となった場合、アイドルになった時刻情報を添えてsidl(start idle)のリクエストを送ります。
<C&C domain>/<C&C path>?id=<9digit number>&stat=<environment hash>&sidl=<time>
<C&C ドメイン>/<C&C パス>?id=<数字9桁>&stat=<環境ハッシュ値>&sidl=<時刻>
また、定期的にアイドル継続時間をcidl(count of idle)値として送信します。
<C&C domain>/<C&C path>?id=<9digit number>&stat=<environment hash>&cidl=<number of seconds>
<C&C ドメイン>/<C&C パス>?id=<数字9桁>&stat=<環境ハッシュ値>&cidl=<秒数>
ユーザがアクティブ状態になった時、当該マルウェアはeidl(end of idle)のリクエストを送ります。
<C&C domain>/<C&C path>?id=<9digit number>&stat=<environment hash>&eidl=<time>&cidl=<number of seconds>
<C&C ドメイン>/<C&C パス>?id=<数字9桁>&stat=<環境ハッシュ値>&eidl=<時刻>&cidl=<秒数>
アイドル監視スレッドの機能を使用することにより、マルウェア運用者は、自身の存在が気づかれないように、被害者不在の時間を意図的に狙うことが可能です。
■ 関連マルウェア
SpyAgentは通常、機密データ窃取などの追加タスクを実施するため、その他のマルウェアもダウンロードします。トレンドマイクロの調査では、以下の情報窃取ツールがSpyAgentによってダウンロードされることを、確認しました。
- RedLine Stealer
- Ducky stealer
- AZOrult
- Cypress Stealer
Clipper (クリップボードに保存された様々な暗号資産アドレスを、攻撃者の管理下にあるものと置き換える)
また、下記RATも攻撃キャンペーンに使用されていることを確認しました。
- Remcos RAT
- NanoCore
- njRAT
- AsyncRAT
■ 結論
本マルウェアの背後にいる攻撃者は、金銭面での明確な動機に基づいて活動し、クリップボードの暗号資産アドレス書き換えを行い、機密情報や暗号資産ウォレットを窃取することを主目的にしていると考えられます。
幸い、こうした攻撃から自身を守るための手段もまた明確なものです。悪意あるアクターが用いる手段は、従来から見られるソーシャルエンジニアリング、例えば偽Webサイトや悪意ある広告、ソーシャルメディア上の偽投稿であることを考慮すると、ユーザはよく注意を払って、疑わしいリンクやサイトへのアクセスを避けるように行動すべきです。また、セキュリティのベストプラクティスの実施を勧めます。信頼済のサイトをブックマークしておくことや、初めてアクセスするサイト、特にソーシャルエンジニアリングの標的になりがちなサイトに対してはよく注意する習慣を身に付けることが挙げられます。
■ 侵入の痕跡(Indicators of Compromise、IoC)
今回の分析で用いたIOCについては、こちらをご参照ください。
参考記事:
- 「Campaign Abusing Legitimate Remote Administrator Tools Uses Fake Cryptocurrency Websites」
By: Jaromir Horejsi
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)