概要
Cisco Advanced Malware Protection(AMP)のエクスプロイト防止エンジンからのアラートに基づき、Cisco Talos はここ数ヶ月、Smoke Loader の新型亜種を追跡してきました。Smoke Loader は、他のマルウェアを送り込むための悪意あるアプリケーションです。幸いマルウェアはホストに感染する前に、AMP により食い止められました。しかし詳細な分析では、Smoke Loader の一連の進化が確認されました。「PROPagate」として知られるインジェクション手法が実際のマルウェアで初めて使用されており、これも今回確認された進化点のひとつです。RIG エクスプロイト キットをベースにする別のキャンペーン(先週末にリリースされたレポートを参照)を除けば、PROPagate を実際に使用するマルウェアはこれまで確認されていませんでした。
Talos では、これまでも Smoke Loader を幾度に渡り分析してきました。例えば 1 月には、ウクライナの会計ソフトウェア開発企業「Crystal Finance Millennium(CFM)」社の Web サイトを悪用したサイバー攻撃で、Smoke Loader がダウンローダとして使用されています。
他の多くのキャンペーンと同様、最初の感染経路は、悪意のある Microsoft Word ドキュメントが添付された電子メールでした。 電子メールのメッセージにより被害者が騙され、添付ファイルを開いて埋め込みマクロを有効にしたことで感染し、マルウェアのダウンロードの連鎖を引き起こしたのです。これが最終的に Smoke Loader やそのプラグインへの感染につながりました。
Smoke Loader の中心的な用途は、ランサムウェアや暗号通貨の採掘ソフトウェアといった他のマルウェアを取得・実行するためのダウンローダです。Smoke Loader ボットネットを使用する攻撃者は、マルウェア掲示板で、サードパーティ ペイロードのインストール サービスを販売すると述べていました。ただし今回の Smoke Loader のサンプルは、他の実行ファイルを取得しませんでした。これは Smoke Loader の人気が落ちているか、あるいは個人的な目的のみに利用されていたことを示唆しています。
プラグインはすべて、被害者から機密情報を窃取するために設計されており、ブラウザ経由で転送されるクレデンシャルや機密情報を標的としています。これには、Windows と Team Viewer のクレデンシャルや電子メールのログイン情報なども含まれます。
技術詳細
感染の連鎖
前述のように、感染の連鎖は電子メールと悪意のある添付 Word ドキュメント(b98abdbdb85655c64617bb6515df23062ec184fe88d2d6a898b998276a906ebc)から始まりました。この電子メールの内容は以下より確認できます。
図 1 – フィッシング メール
添付の Word ドキュメントにはマクロが埋め込まれており、これが第 2 段階として Trickbot マルウェアをダウンロードします。(0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41)。
図 2 – 電子メールの添付ファイル:IO08784413.doc
このドキュメントは、Trickbot のマルウェアを hxxp://5[.]149[.]253[.]100/sg3.exe から、または %TEMP%\[a-zA-Z]{6-9}.exe として hxxp://185[.]117[.]88[.]96/sg3.exe からダウンロードして実行します。これらの URL は、Trickbot サンプルも含めて、悪意のある実行可能ファイルをこれまで複数提供してきました。
今回の Trickbot は最終的にトロイの木馬「Smoke Loader」(b65806521aa662bff2c655c8a7a3b6c8e598d709e35f3390df880a70c3fded40)をダウンロードしました。このトロイの木馬により、5 つの Smoke Loader プラグインがインストールされています。これらのプラグインについては、本レポートのプラグインのセクションで詳しく説明します。
Trickbot
(0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41)
Smoke Loader はしばしばペイロードとして Trickbot を取得しますが、今回のサンプルではそれが逆転しています。テレメトリを見る限り、Trickbot のサンプルが Smoke Loader を取得しています。これはおそらく Malware-as-a-Service(サービスとしてのマルウェア、MaaS)の例で、ボットネット運営者が、感染したコンピュータにサードパーティ製のマルウェアを有料でインストールするものです。Trickbot サンプルの詳細な分析はまだ行われていませんが、参考までに Trickbot の構成を記載します(セキュリティのため IP アドレスのドットは括弧で囲んでいます)。
<mcconf>
<ver>1000167</ver>
<gtag>wrm13</gtag>
<srv>185[.]174[.]173[.]34:443</srv>
<srv>162[.]247[.]155[.]114:443</srv>
<srv>185[.]174[.]173[.]116:443</srv>
<srv>185[.]174[.]173[.]241:443</srv>
<srv>62[.]109[.]26[.]121:443</srv>
<srv>185[.]68[.]93[.]27:443</srv>
<srv>137[.]74[.]151[.]148:443</srv>
<srv>185[.]223[.]95[.]66:443</srv>
<srv>85[.]143[.]221[.]60:443</srv>
<srv>195[.]123[.]216[.]115:443</srv>
<srv>94[.]103[.]82[.]216:443</srv>
<srv>185[.]20[.]187[.]13:443</srv>
<srv>185[.]242[.]179[.]118:443</srv>
<srv>62[.]109[.]26[.]208:443</srv>
<srv>213[.]183[.]51[.]54:443</srv>
<srv>62[.]109[.]24[.]176:443</srv>
<srv>62[.]109[.]27[.]196:443</srv>
<srv>185[.]174[.]174[.]156:443</srv>
<srv>37[.]230[.]112[.]146:443</srv>
<srv>185[.]174[.]174[.]72:443</srv>
</servs>
<autorun>
<module name=”systeminfo” ctl=”GetSystemInfo”/>
<module name=”injectDll”/>
</autorun>
</mcconf>
Smoke Loader パッカー/インジェクタの詳細
マルウェアは、プロセス リストの反復処理を頻繁に行って、インジェクト先のプロセスを検索します。セキュリティ研究者はこのプロセスを熟知しており、この手法で使用される Windows API を追跡するために CreateToolhelp32Snapshot などの多くのツールを作成しました。今回の Smoke Loader のサンプルでは、プロセス リストの反復処理を回避しています。そのため、Windows API の GetShellWindow を呼び出してシェルのデスクトップ ウィンドウを取得し、次に GetWindowThreadProcessId を呼び出して Explorer.exe のプロセス ID を取得しています。
その後、標準インジェクション API を使用してエクスプローラー内の 2 つのメモリ セクションを作成し書き込みます。一方はシェルコード用で、他方は後ほど PROPagate インジェクションで使用する UxSubclassInfo 構造用です。
GetShellWindow -> GetWindowThreadProcessId -> NtOpenProcess -> NtCreateSection -> NtMapViewOfSection x2 -> NtUnmapViewOfSection
先述した GetShellWindow によるウィンドウの取得には、2 番目の目的があります。Smoke Loader は、EnumChildWindows を使用して各ハンドルの子ウィンドウを反復処理し、UxSubclassInfo プロパティ(PROPagate インジェクションに対する脆弱性を示す)が含まれるものを検索します。
PROPagate インジェクションは、2017 年の後半に セキュリティ研究者によって初めて特定されました。ただし Smoke Loader での使用が開始された当時は、利用可能なパブリック POC が存在していませんでした。おそらく Smoke Loader の開発者は、一般に公開されていた PROPagate 関連資料を基に手口を再現したと思われます。
図 3 – PROPagate のインジェクション
「Deobf_next_chunk」は、続くコード チャンクのサイズとオフセットの引数を取得してコード解読と実行を行います。悪意のあるコードは必要に応じてまとめて難読化を解除され、次のチャンクが読み込まれると再び難読化されます。難読化の手法は、すべての部分についてハードコードされた同じ値を持つ、シンプルな 1 バイトの XOR です。それぞれの子ウィンドウについて、インジェクタは EnumPropsA を呼び出し、UxSubclassInfo が見つかるまで、ウィンドウのプロパティを反復処理します。この関数では、このサンプルのパッカーで採用されている分析対抗手法もいくつか示しています。制御フローの難読化を狙った不要なジャンプがいくつかあります。ジャンク コードとなるシンプルな Opaque Predicate(不明瞭な述語)も含まれます。
これらの分析対抗手口には、分析ツールに属するプロセス/ウィンドウをスキャンする専用スレッドに加え、アンチ デバッグとアンチ VM のチェックも含まれます。これらの機能により、フォレンジック、ランタイム AV スキャナ、トレース、およびデバッグが複雑になります。
図 4 – WM_NOTIFY および WM_PAINT 経由で悪意のあるイベント ハンドラをトリガー
インジェクトされたシェルコード:Smoke Loaderシェルコードと UxSubclassInfo データがリモート プロセスに書き込まれると、インジェクタは SetPropA を呼び出してウィンドウのプロパティを更新します。その後、WM_NOTIFY および WM_PAINT メッセージを標的のウィンドウに送信して、インジェクトされたシェルコードを実行する悪意のあるイベント ハンドラを強制的にトリガーします。
Smoke Loader は、追加のペイロードの代わりに 5 つの興味深いプラグインを取得します。各プラグインには、独自の Explorer.exe 実行プロセスが確保されます。マルウェアは古い手法で各プラグインをこれらのプロセスにインジェクトします。各 Explorer.exe プロセスは CREATE_SUSPENDED オプションで作成され、シェルコードがインジェクトされ、その後 ResumeThread を使用して実行されます。これは目立つ方法で、感染したマシン上で 6 つの Explorer.exe プロセスを実行したまま放置します。
プラグイン
前述のように、プラグインはすべて被害者から機密情報を窃取するために設計されており、ブラウザ経由で転送されるクレデンシャルや機密情報を明確な標的としています。各プラグインはミュー テックス「opera_shared_counter」を使用しており、同一プロセスに複数のプラグインがコードを同時にインジェクトするのを防いでいます。
プラグイン 1:
これは約 2,000 の機能を持つ、最大級のプラグインです。ローカル データベース ファイルを読み取るための、静的にリンクされた SQLite ライブラリを含んでいます。
- Firefox、Internet Explorer、Chrome、Opera、QQ ブラウザ、Outlook、および Thunderbird に保存された情報が標的です。
- 名前が「json」のファイルを再帰的に検索し、ファイル内の hostname、encryptedUsername、および encryptedPassword を解析します。
- dll – Windows 資格情報マネージャー
- POP3、SMTP、IMAP クレデンシャル
プラグイン 2:
このプラグインは、解析してデータを窃取するファイルを見つけるため、ディレクトリ内の検索を繰り返します。
Outlook
*.pst
*.ost
Thunderbird
*.mab
*.msf
受信トレイ
送信済み
テンプレート
ドラフト
アーカイブ
The Bat!
*.tbb
*.tbn
*.abd
プラグイン 3:
このプラグインは、HTTP/HTTPS で転送されるクレデンシャルと cookie を窃取するためブラウザに注入されます。
- 「fgclearcookies」が設定されると、ブラウザのプロセスが強制終了され、cookie が削除されます。
- exe と microsoftedgecp.exe
- HttpSendRequestA
- HttpSendRequestW
- InternetWriteFile
- exe
- dll または nss3.dll における PR_Write
- exe
- dll 内の不明な関数
- exe
- dll または opera.dll 内の不明な関数
プラグイン 4:
このプラグインは、ftp、smtp、pop3、imap のクレデンシャルを窃取するためにws2_32!send ?と ws2_32!WSASend ?をフックします
プラグイン 5:
このプラグインは、クレデンシャルを窃取するためにコードをTeamViewer.exe にインジェクトします
IOC
B98abdbdb85655c64617bb6515df23062ec184fe88d2d6a898b998276a906ebc (IO08784413.doc) 0be63a01e2510d161ba9d11e327a55e82dcb5ea07ca1488096dac3e9d4733d41 (Trickbot) b65806521aa662bff2c655c8a7a3b6c8e598d709e35f3390df880a70c3fded40 (Smoke Loader)ミュー テックス: opera_shared_counter Trickbot IPs: 185[.]174[.]173[.]34
162[.]247[.]155[.]114
185[.]174[.]173[.]116
185[.]174[.]173[.]241
62[.]109[.]26[.]121
185[.]68[.]93[.]27
137[.]74[.]151[.]148
185[.]223[.]95[.]66
85[.]143[.]221[.]60
195[.]123[.]216[.]115
94[.]103[.]82[.]216
185[.]20[.]187[.]13
185[.]242[.]179[.]118
62[.]109[.]26[.]208
213[.]183[.]51[.]54
62[.]109[.]24[.]176
62[.]109[.]27[.]196
185[.]174[.]174[.]156
37[.]230[.]112[.]146
185[.]174[.]174[.]72
ローダ ドメインを確定したもの: ukcompany [.]me
ukcompany [.]pw
ukcompany [.]top
ファイルのドロップ: ?%appdata%\Microsoft\Windows\[a-z]{8}\[a-z]{8}.exe ?スケジュール タスク: ?Opera [0-9] {1 ~ 10} 自動更新のスケジュール
まとめ
トロイの木馬やボットネットは常に変化しており、これまでもそれを目の当たりにしてきました。攻撃者は常に質や手口の向上を図っています。前述のような手口を継続的に変更することで、セキュリティ ツールに対抗する能力を磨いているのです。このことは、すべてのシステムを最新状態に保つことの重要さを物語っています。多層の防御アプローチを組織で利用すれば、この種の脅威を検出および防御できます。Talos では、お客様を確実に保護できるよう、進化するキャンペーンの監視をこれからも続けていきます。個々のユーザと組織に対しては、セキュリティ パッチが利用可能になったらすぐにインストールする、知らない第三者からメッセージを受信したときには用心する、信頼性の高いオフラインのバックアップ ソリューションを確実に実施するなどの、推奨されるセキュリティ対策を実行することを強くお勧めします。これらの対策を取ることで、侵害による脅威の軽減が可能になり、そのような攻撃を受けた場合の復旧にも役立ちます。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
シスコクラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。
電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。
次世代ファイアウォール(NGFW)、次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。
本稿は 2018年7月3日に Talos Group のブログに投稿された「Smoking Guns – Smoke Loader learned new tricks」の抄訳です。