この数週間、CybereasonのSOCは、顧客環境において複数のBetabot(別名Neurevt)の感染を検知しました。Betabotは洗練されたInfostealer型のマルウェアであり、2012年末に初めて出現して以来、大幅に進化しています。このマルウェアは、バンキング型トロイの木馬として始まり、現在では、マシンを実際に乗っ取り、機密情報を盗むことを可能にする各種機能を備えています。Betabotの主な機能には次のものがあります。

  • ブラウザ向けフォームグラバー
  • FTPおよびメールクライアントスティーラー
  • バンカーモジュール
  • DDoS攻撃の実行
  • USB感染モジュール
  • 堅牢なユーザーランド(領域)のルートキット(x86/x64)
  • シェル経由で任意のコマンドを実行
  • その他のマルウェアをダウンロードする機能
  • パーシステンス
  • 暗号通貨マイナーモジュール(2017年に追加)

Betabotは、Microsoft Officeの数式エディタに含まれている18年来の脆弱性を悪用します。この脆弱性は数式エディタがOfficeに追加された2000年頃から存在していましたが、これが研究者により発見されたのは2017年のことであり、その時初めてMicrosoftによりパッチが公開されました

ほとんどの現代的なマルウェアは、検知および阻止分析をすり抜けるために設計された自己防衛機能を備えています。これらの機能には、アンチデバッギング、アンチ仮想マシン/サンドボックス、アンチ分解の各機能をはじめ、セキュリティ製品や分析ツールを検出する機能が含まれています。

マルウェアがアンチウイルスソフトウェアを無効化またはアンインストールするような、より攻撃的なアプローチを取ることは稀です。

その他のより一般的なプログラムでは、ユーザーのマシン上にすでに存在しているマルウェアやボットを削除し、包括的なアプローチとの競合を解消することで、多くのセキュリティ製品の裏をかこうとしています。

Betabotは、これらの自己防衛機能を備えており、しかも大手のアンチウイルス、セキュリティ、仮想化企業が提供しているプロセス名、製品ID、ハッシュ、ドメインなどを網羅した完全なブラックリストを保持しているという点で傑出しています。

本ブログでは、複数の顧客エンドポイントから収集したCybereasonのテレメトリーデータを利用して、感染のチェーンを詳しく調べることにします。また、Betabotが備えている自己防衛機構についても深く掘り下げて説明します。

感染ベクター: CVE-2017-11882兵器化悪用 に関するドキュメント

当社のテレメトリーデータにより観測されたBetabotは、ソーシャルエンジニアリングを利用して、電子メールに添付されているWord文書に見えるファイルをダウンロードして開くようユーザーに仕向けるフィッシング攻撃に由来するものでした。

下記のスクリーンショットは、この感染ベクターがLotus Notesの電子メールクライアントに由来していることを示しています。

Purchase order#.docの詳細: (SHA-1:566154dadb304019a8b035d883c9e32ca95cd64e)

この文書をバイナリエディタで開いて調べてみると、このファイルは実はRTFファイルであることが分かります。

Didier Stevenが作成したrtfdump.pyを使用すると、組み込みオブジェクトによる複数のエントリがあることが分かります。


使用コマンド:rtfdump.py -f O [file]

ダンプ後に復号化したエントリの例、文書内に組み込まれているバッチスクリプトが示されている:

使用コマンド:rtfdump.py -s 7 -H [file]

投下されるファイル

各エントリをダンプすると、次のファイルが含まれていることが分かります。これらのファイルが最終的に投下されることになります。

ファイル 目的 SHA-1
%temp%\dqfm.cmd 過去の感染をチェックした後、hondi.cmdを開始 86B5058C89231C691655306E12E1E4640D23ED19
%temp%\gondi.doc 囮のWord文書。 33C3F3F4BA62017F5186343C0869B23AB72E081E
%temp%\hondi.cmd ・Resiliencyレジストリエントリを削除することで痕跡を消去
・囮の文書を配備
・mondi.exeを起動
92F2515828C77056AE04696FD207783DFF8F778D
%temp%\mondi.exe ・NSISベースのドロッパー
・マルウェアのペイロードを展開
・ペイロードを他の実行プロセスに注入(事前定義済みリストを使用)
・パーシステンスを生成
FE1B51FE46BDAD6EA051110AB0D1B788A54331E4

観測された感染チェーンの図:

dqfm.cmdの内容:

hondi.cmdの内容:

悪用行動の実行ツリー

Cybereasonプラットフォームは、次のスクリーンショットに示すような、悪用の行動チェーンを捉えました。

  1. 1.武器化された RTF文書を開くことで、数式エディタの脆弱性(CVE-2017-11882)がトリガされ、dqfm.cmdが実行され、その結果としてhondi.cmdが生成されます。
  2. 2.Hondi.cmdは次のコマンドを実行します。
    • Resiliencyレジストリキーをすべて列挙しそれらを削除することで、元のRTF文書の痕跡を消去します。
      reg delete
      HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Word\Resiliency /f
    • 囮の文書を作成するために、最も直近に使用された(MRU)Officeファイルに関する情報を収集します。
      C:\Windows\system32\cmd.exe /c REG QUERY “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Word\File MRU” /v “Item 1”
    • Wordプロセス(RTF文書を実行したプロセス)を停止します。
      Taskill.exe TASkKILL /F /IM winword.exe
    • Betabotドロッパーである “mondi.exe”を実行します。
      C:\Users\[snip]\AppData\Local\Temp\mondi.eXe
    • 囮の文書を開きます。
      “C:\Program Files\Microsoft Office\Office12\WINWORD.EXE” /n /dde

Betabotドロッパーに関する分析

Mondi.exeは実際にはNSIS (Nullsoft Scriptable Install System)により圧縮されています。これは、“Nullsoft PiMP stub”というコンパイラシグネチャが示すように、Windowsインストーラーを生成するために使用されるオープンソースのソフトウェアです。

このインストーラーはBetabotローダーと、暗号化されたメインのペイロードを展開します。

  1. 1.Performances.dll(ローダー、SHA-1: 22C35AEF70D708AA791AFC4FC8097C3C0B6DC0C1)
  2. 2.Midiron.dat(暗号化されたBetabotペイロード、SHA-1: B7599AF48FC3124BE65856012A7C2DCB18BE579A)

Betabotの展開とプロセスインジェクション

ローダーはペイロードを展開した後、ローダー自身の子プロセスに同ペイロードを注入します。

この注入プロセスは、次のような不審な行動を引き起こします。

performances.dllがmondi.exeにロードされる:

続いて、ローダーの子プロセスは、すべての実行中のプロセスを列挙することで、インジェクションの候補を見つけようとします。Cybereasonが観測した多くのケースでは、Betabotのローダーは、そのコードを複数の実行中のプロセスへと注入することで、パーシステンスを生成し、生存の可能性を最大化します。注入されたプロセスが終了すると、別のプロセスが開始され、ローダーを子プロセスとして生成します。

ほとんどの場合、メインのペイロードは、まずExplorer.exeの2番目のインスタンスに対して注入されます。

Explorer.exeの2番目のインスタンスに注入されたBetabotのコード

ただし、多くのインシデントのうちの1つとして、当社ではBetabotが自分自身をMcAfeeのプロセスである“shtat.exe”に対して注入した例を観測しています。

Shtat.exeファイルの詳細情報には、同ファイルが正式なMcAfeeのアンチウイルス製品であることが示されています。

(SHA-1:f384bb7564f26f37a48aadf714fccb5cbffe2dc6)

C2通信

インジェクションが行われると、BetabotはそのC2サーバーとの通信を試みます。それに先立って、Betabotは、次のドメインにリクエストを送信することにより、インターネット接続をチェックします(“check_connectivity”関数は、本ブログの著者によりリネームされています)。

インターネット接続が検証されると、Betabotは下記の図に示すように、そのC2サーバーへとリクエストを送信します。

IPアドレス“185.246.153[.]251”は、他のマルウェア(LokiBotなど)にもサービスを提供しています。
http://cybercrime-tracker.net/index.php?search=185.22.152.146

観測されたパーシステンス

Betabotはいくつかの興味深いパーシステンス手法を利用しています。ただし、当社が分析した例では、Betabotは古典的なレジストリのAutorunを利用していました。

Betabotは、インストーラーのリネームされたコピーを、“Google Updater 2.0”という名前でProgram dataディレクトリ内に投下した後、同ディレクトリと同ファイルのパーミッションを変更することで、それらの削除や改変されないようにしました。

Betabotが実行されると、BetabotはAPIフックの拡張使用を行うことで、regedit、SysinternalのAutorun、およびその他の監視ツールからパーシステンスを隠そうとします。

一部の感染では、Windowsのタスクスケジューラ―を通じて実装される二次的なパーシステンス機構も観測されました。

上記のコードは、次のようなスケジューリングされたタスクコマンドを生成します。
schtasks.exe’ /CREATE /SC ONLOGON /TN ‘Windows Update Check – [variable]’ /TR ‘C:\ProgramData\[path_to_file]

Betabotの偏執性

Betabotの作者は、このマルウェアがパラノイド(偏執性)モードで動作するように設計しています。たとえば、Betabotは、マシン上で動作しているセキュリティ製品を検知し、それが研究ラボ環境で動作しているかどうかを判定した後、同マシン上にあるその他のマルウェアを特定し停止させます。

このような自己防衛機構は、多くのハッキングフォーラムで大いに宣伝されています。

これらの機能のいくつかについて詳しく説明します。

仮想化の検知

Betabotは、レジストリへの問い合わせ、仮想マシンベンダー名(VMware、 VirtualBox、Parallelsなど)の検出、特定のドライバベンダーファイルの検索を行うことで、それが仮想環境で実行されているかを判定しようと試みます。

HARDWARE\\DESCRIPTION\\System\\BIOS [SystemManufacturer] – VMWARE
HARDWARE\\DESCRIPTION\\System [SystemBiosVersion] – VirtualBox
ドライバのリスト:vboxvideo.sys, vboxguest.sys, vmhgfs.sys, prl_boot.sys.

環境が仮想であるかどうかを判定するもう1つの手段として、 \\Device\\Harddisk0\\Partitionおよび\\??\\PHYSICALDRIVE0に対するハンドルを取得することが挙げられます。これは通常、ハードドライブのサイズを計算することにより実施されます。

サンドボックス検知

BetabotはWineが存在するかどうかをチェックします。多くの場合、これは、攻撃対象としている環境がサンドボックス環境であることを示す根拠となります。

続いて、Betabotは、“SOFTWARE\Microsoft\Windows NT\CurrentVersion”を列挙することにより、Windowsレジストリ内で一般的なサンドボックスベンダーの製品IDを検索します。

一般的なサンドボックスベンダー(Anubis、CWSandbox、Joe SandBox、GFI、Kaspersky)の製品ID:
76487-640-1457236-23837, 76487-337-8429955-22614, 76487-644-3177037-23510, 76497-640-6308873-23835, 55274-640-2673064-23950, 76487-640-8834005-23195, 76487-640-0716662-23535, 76487-644-8648466-23106, 00426-293-8170032-85146, 76487-341-5883812-22420, 76487-OEM-0027453-63796

また、Betabot はユーザー名が、ブラックリストに載っている一般的なサンドボックスのユーザー名(“sandbox”、“sand box”、“malware”、“maltest”、“test user”など)のどれかと一致するかどうかを調べます。

追加のサンドボックスDLLチェックにより既知のDLLを見つける:
SbieDll.dll (Sandboxie)、api_log.dll、dir_watch.dll (iDefense Labs):

アンチデバッギング

Betabotは、複数のテクニックを使用して、それがデバッグされないこと、およびデバッガがBetabotのプロセスに接続できないようにすることを保証します。

  • ProcessDebugPortフラグ(0x07)を使用したZwQueryInformationProcess / NtQueryInformationProcess の呼び出し:

    明らかなIsDebuggerPresent APIを使用する代わりに、Betabotは、“fs:[30h]”を呼び出した後、BeingDebuggedフラグ(0x02)を探すことにより、セグメントレジスタを利用してPEB(Process Environment Block)構造に対する問い合わせを行います。
  • NTDLL.DLLのDbgBreakPointパッチを適用し、INT3割り込み命令(0x0CC)をNOP(0x90)で置き換えることにより、デバッガがBetabotに接続できないようにします。

アンチウイルスベンダーの検知

Betabotは、プロセス名、特殊なファイル、フォルダ、レジストリキー、サービスを調べることにより、30種類のセキュリティ製品の検知(いくつかのケースでは、それに加えて無効化または削除)を試みます。これらの製品およびベンダーには次のものが含まれています。

Ahnlab v3 Lite、ArcaVir、Avast!、AVG、Avira、BitDefender(最小構成)、BKAV、BullGuard、Emsisoft Anti-Malware、ESET NOD32 / Smart Security、F-PROT、F-Secure IS、GData IS、Ikarus AV、K7 AntiVirus、Kaspersky AV/IS(旧バージョンのみ)、Lavasoft Adaware AV、MalwareBytes Anti-Malware、McAfee、Microsoft Security Essentials、Norman AntiVirus、Norton AntiVirus(Vista+のみ)、Outpost Firewall Pro、Panda AV/IS、Panda Cloud AV(無料版)、PC Tools AntiVirus、Rising AV/IS、Sophos Endpoint AntiVirus、Total Defense、Trend Micro、Vipre、Webroot SecureAnywhere AV、Windows Defender、ZoneAlarm IS

アンチウイルスベンダーが存在するかどうかをチェックする関数の例:

Betabotが感染ホスト上でTrend Microの中間ファイルを検知する例:

Betabotが感染ホスト上でIBMのTrusteerの中間ファイルを検知する例:

ネットワークアンチウイルスチェック(DNSブロッキング)

Betabotは、セキュリティ製品のアップデートを阻止し、同製品が利用しているその他のWeb関連の機能を利用できないようにするために、次のセキュリティベンダーへのDNSリクエストをブロックするよう試みます。

競合の解消(ボットキラー)

Betabotは、内蔵されているAVKillerに加えて、一般的なマルウェアのパーシステンスパターンやその他の包括的な機能を調べることで、感染ホスト上で他のボットやマルウェアを検知するよう試みます。たとえば、Betabotはレジストリキーを列挙することで、マルウェアにおいてよくある疑わしい見かけのパーシステンスインジケーターを見つけようとします。

Autorunキーの列挙:

スクリプトベースのファイルレス型マルウェアのパーシステントパターン:

Betabotの感染を防ぐ方法

感染のリスクを最小化するためのベストプラクティスを、下記にいくつか紹介します。

  1. 未知の送信者から送られてきたeメールに含まれているリンクやダウンロードボタンをクリックしないこと。そのようなメールの添付ファイルを開かないこと。
  2. eメールや添付ファイルにミススペル、誤記、およびその他の疑わしい内容が含まれていないかどうかを調べ、何か異常があればITまたは情報セキュリティ部門に報告すること。
  3. 自分の使用しているソフトウェアを最新の状態に保つこと。特に次のMicrosoftのセキュリティパッチを必ず適用すること。
    https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882
  4. 可能な場合は、次のレジストリエントリを編集することにより、Microsoft Officeの数式エディタ機能を無効化すること。

IOCS

HASHES

B4EEF8F14871FB3891C864602AEE75FE2513064A
CD46BD187F35EA782309B373866DEA1B6311FAD9
CA7E8C9AA7F63133BC37958A6AA3A59CFD014465
E23BED29C6D64AD80504331A9E87EB8C8ED59B8A
C61C5E61C6B80878245E2837DF949318A5831D85
48F2C9DC9FA41BAD9D1EA6C01DA034110AA9D4A0
FE1B51FE46BDAD6EA051110AB0D1B788A54331E4
F241F55480D54590D37C64916BC7B595DA7571A0
6B19C85B6A28C2EDCC1784CD3465F6AA665107C3
4FF2175B663750BA0CE9433A85069BA5FD6B78EC
7DA2408369F566BA9DB80DF857E6BFE818BEF525
F1DD50ED248D6EEA5620D59F15A39FB9E7226F27
8C15081B1615144F69A4B1784B43BBB84A79D13B
A45CF65FC4E4D7BC64CBC7CFB02367316881BE87
081D11E4FDECD0CA70E6EF57156C06454EBA02C2
11D04C2AFCA86718D2C8856301D5D55F73B7A344
22C35AEF70D708AA791AFC4FC8097C3C0B6DC0C1
25499BE38A3430DB8AEBA091D051EAC2A7C08133
566154DADB304019A8B035D883C9E32CA95CD64E
5DB5EB3CB52C5503B98DB4883366D52AC8B2FD13
792ECBC513246315306D81464D2A5714B3CD6E34
8212450A90AF9061B1DDE92ED79290225DF022CE
86B5058C89231C691655306E12E1E4640D23ED19
92F2515828C77056AE04696FD207783DFF8F778D
9A2B31B5B9BC99CBA49D64B3EBDDDC7F027FEADD
B7599AF48FC3124BE65856012A7C2DCB18BE579A
FE1B51FE46BDAD6EA051110AB0D1B788A54331E4

ホワイトペーパー「すべての組織が狙われている」

企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。
https://www.cybereason.co.jp/product-documents/input/?post_id=606

ホワイトペーパー「すべての組織が狙われている」