ランサムウェア: 仮想マシンを使用する攻撃者の増加

暗号化プロセスの実行中にランサムウェアのペイロードを隠蔽し、発覚を回避する手口

シマンテックが収集した証拠によると、侵害対象のコンピュータ上でランサムウェアのペイロードを実行するために、仮想マシン(VM)を利用するランサムウェア攻撃が増加しています。この手口の目的はステルス性を高めることです。ホストコンピュータ上のファイルを暗号化する最中に、ランサムウェアのペイロードがVM内に「隠れる」ことで、不審な動作の感知やウイルス対策ソフトウェアの発動を回避します。

この手口は最近考案されたもので、昨年、RagnarLockerとの関連でSophosにより報告が行われています。このケースでは、ランサムウェアはOracle VirtualBoxを使用したWindows XPのVM内から実行されました。

VirtualBoxの使用

あるランサムウェア攻撃についてシマンテックが最近調査したところ、攻撃者が一部の侵害対象コンピュータにVirtualBoxのVMをインストールしていたことが明らかになりました。以前に報告されていたRagnarLocker攻撃ではWindows XPが利用されていたのに対して、このケースのVMではWindows 7が実行されていたと見られています。

このVMは、次のようなさまざまなファイル名が付けられた悪質なインストーラファイルを通じて標的に送り込まれました。

  • fuckyou.msi
  • fuck.msi
  • aa51978f.msi
  • s3c.msi

このインストーラによって作成されたrunner.exeというファイルは、次のソースファイルからコンパイルされたGolang(Go)実行可能ファイルでした。

  • C:/builder/runner/main.go

このファイルでは、標準のGoライブラリに加えて、プロセス列挙のためにgo-psライブラリが使用されました。この実行可能ファイルで使用された埋め込み文字列(ファイル名、プロセス名、コマンドなど)は、4バイトのXOR鍵を使用して難読化されていました。各文字列は固有の鍵を使用して暗号化されていました。

この実行可能ファイルでは、同じディレクトリに存在すると想定されていた他の複数のファイルが利用されました。この実行可能ファイルの主な目的は、VirtualBoxのVMをヘッドレスモードでインストールすることです。

runner.exeは実行されると、次のような動作を行いました。

  • C:\Windows\SYSVOLディレクトリの有無に基づいて、このファイルがActive Directory(AD)コントローラ上で実行されているかどうかをチェックしました。ADコントローラ上で実行されていた場合は、このファイルは終了しました。
  • russianDetectという関数を使用して、ロシア語のキーボード配列(0x0419)が使用されているシステム上でこのファイルが実行されているかどうかをチェックしました。こうしたシステム上で実行されていた場合は、このファイルは終了しました。このようなチェックは、標的型ランサムウェア攻撃に共通する特徴です。
  • 実行中のプロセスとサービスを列挙してから、taskkill.exesc.exeを使用して、ブラックリスト(procBlacklist、servicesBlacklist)に登録されているものをすべて強制終了しました。

次に、この実行可能ファイルは、回復パーティションをマウントするために、次の内容が含まれたstarter.batというファイルを投下して実行し、削除しました。

  • mountvol E:\ \\?\Volume{<ID>}\

次に、この実行可能ファイルは、VirtualBoxの設定ファイルであるVirtualBox.xmlとVMの設定ファイルであるmicro.xmlを復号して投下しました(これらのファイルについては付録を参照してください)。この実行可能ファイルは、SDRSMLINKディレクトリを作成し、次の例のようにシステムファイルをこのディレクトリにリンクしました。

  • cmd /C mklink /j "%SYSTEMROOT%\SDRSMLINK\Program Files" "%SYSTEMROOT%\Program Files"

さらにこの実行可能ファイルは、micro.xml内の<SharedFolders>セクションを調整して、CSIDL_WINDOWS\SDRSMLINK内でリンクされているファイルとディレクトリを反映させました。次に、この実行可能ファイルは、次のようにVirtualBoxのコンポーネントを初期化しました。

cmd /C sc create VBoxDRV binpath= %SYSTEMROOT%\\app64\drivers\VBoxDrv.sys type= kernel start= auto error= normal displayname= PortableVBoxDRV regsvr32 /S %SYSTEMROOT%\\app64\VBoxC.dll cmd /C %SYSTEMROOT%\\app64\VBoxSVC.exe /reregserver rundll32 %SYSTEMROOT%\\app64\VBoxRT.dll ,RTR3Init

この実行可能ファイルは、次のようにWEvtUtil.exeを使用してWindowsのシステムログを列挙して消去しました。

wevtutil.exe enum-logs wevtutil.exe clear-log <LOG_NAME>

シマンテックはVMイメージを取得できませんでしたが、おそらく次に起こったことは、ランサムウェアのペイロードがVMのディスク上に配置され、オペレーティングシステムが完全に起動された後に、このペイロードが自動的に実行開始されたというものです。このVMはおそらく、ホストコンピュータのファイルとディレクトリに(runner.exeによってセットアップされたSharedFoldersを通じて)アクセスし、ホストコンピュータ上のファイルを暗号化できるようにしたと考えられます。

ContiまたはMount Lockerの可能性

このVMで実行されていたペイロードは特定されませんでしたが、いくつかの痕跡から、これがContiであったことが示唆されました。これらの攻撃で使用されたユーザー名とパスワードの組み合わせ(nuuser/7HeC00l3stP@ssw0rd)は、2021年4月に始まったContiによる過去の攻撃に使用されていたものと同じです。

ただし、このVMが配備されたのと同じコンピュータ上に、Mount Lockerも配備されていたことが確認されたため、このペイロードが実際にMount Lockerであったかどうかについて疑問が生じました。VM上でペイロードを実行する主な目的は、発見を回避することであるため、攻撃者がそのペイロードをホストコンピュータ上にも配備したことはあまり合理的ではありません。

1つの説明として、この攻撃者はContiとMount Lockerの両方にアクセスできるアフィリエイト攻撃者であることが考えられます。この攻撃者がVM上でペイロード(ContiまたはMount Locker)を実行しようとしたもののうまくいかなかったため、代わりにホストコンピュータ上でMount Lockerを実行することを選択した可能性があります。

悪質な活動の隠蔽

ランサムウェア攻撃者は、発覚を逃れるために手口を絶えず巧妙化しています。今では多くの攻撃者が、標的となるネットワークに攻撃を仕掛けるために、正規ツールの中から悪用可能なものを多用するようになっています。ランサムウェアのペイロード自体は攻撃段階として警戒の対象になる可能性が非常に高いですが、VMに隠すことによってペイロードが発見されにくくなる可能性があります。個々の組織では、組織内のネットワークにVMが許可なくインストールされないように警戒を強める必要があります。

保護/緩和

Symantec Protection Bulletinで保護に関する最新情報をご確認ください。

侵害の痕跡

  • 2eae8e1c2e59527b8b4bb454a51b65f0ea1b0b7476e1c80b385f579328752836 - インストーラ
  • 9f801a8d6b4801b8f120be9e5a157b0d1fc3bbf6ba11a7d202a9060e60b707d8 - runner.exe
  • e5291bae18b0fa3239503ab676cacb12f58a69eb2ec1fd3d0c0702b5a29246cb - VirtualBox
  • d89bd47fb457908e8d65f705f091372251bae3603f5ff59afb2436abfcf976d8 - Mountlocker
  • 8f247e4149742532b8a0258afd31466f968af7b5ac01fdb7960ac8c0643d2499 - Mountlocker

付録

VirtualBox.xml - VirtualBox configuration file
<?xml version="1.0" encoding="UTF-8"?> <!-- Sun VirtualBox Global Configuration --> <VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.7-windows"> <Global> <ExtraData> <ExtraDataItem name="GUI/UpdateDate" value="1 d, 2020-05-05"/> <ExtraDataItem name="GUI/SUNOnlineData" value="triesLeft=2"/> <ExtraDataItem name="GUI/LastWindowPostion" value="298,109,770,550"/> </ExtraData> <MachineRegistry> <MachineEntry uuid="{ea68756b-4a61-4f99-a824-82bd26041256}" src="micro.xml"/> </MachineRegistry> <MediaRegistry> <HardDisks> <HardDisk uuid="{a9605e9f-31df-4dc6-827c-5b684f32bb64}" location="micro.vdi" format="VDI" type="Normal"/> </HardDisks> <DVDImages/> <FloppyImages/> </MediaRegistry> <NetserviceRegistry> <DHCPServers> <DHCPServer networkName="HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter" IPAddress="192.168.56.100" networkMask="255.255.255.0" lowerIP="192.168.56.101" upperIP="192.168.56.254" enabled="1"/> </DHCPServers> </NetserviceRegistry> <USBDeviceFilters/> <SystemProperties defaultMachineFolder="." defaultHardDiskFolder="." defaultHardDiskFormat="VDI" remoteDisplayAuthLibrary="VRDPAuth" webServiceAuthLibrary="VRDPAuth" LogHistoryCount="3"/> </Global> </VirtualBox>
Micro.xml - virtual machine configuration file
<?xml version="1.0" encoding="UTF-8"?> <!-- Sun VirtualBox Machine Configuration --> <VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.7-windows"> <Machine uuid="{ea68756b-4a61-4f99-a824-82bd26041256}" name="micro" OSType="Windows7" lastStateChange="2020-05-13T03:49:05Z"> <ExtraData> <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/> <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/> <ExtraDataItem name="GUI/MiniToolBarAlignment" value="bottom"/> <ExtraDataItem name="GUI/LastWindowPostion" value="8,31,800,643"/> <ExtraDataItem name="GUI/Fullscreen" value="off"/> <ExtraDataItem name="GUI/Seamless" value="off"/> <ExtraDataItem name="GUI/AutoresizeGuest" value="on"/> <ExtraDataItem name="GUI/MiniToolBarAutoHide" value="on"/> </ExtraData> <Hardware> <CPU count="1"> <HardwareVirtEx enabled="true"/> <PAE enabled="true"/> </CPU> <Memory RAMSize="512"/> <Boot> <Order position="3" device="HardDisk"/> </Boot> <Display VRAMSize="12" monitorCount="1" accelerate3D="false"/> <RemoteDisplay enabled="false" port="43399" authType="Null"/> <BIOS> <ACPI enabled="true"/> <IOAPIC enabled="false"/> <Logo fadeIn="true" fadeOut="true" displayTime="0"/> <BootMenu mode="MessageAndMenu"/> <TimeOffset value="0"/> <PXEDebug enabled="false"/> </BIOS> <DVDDrive passthrough="false"/> <FloppyDrive enabled="false"/> <USBController enabled="false" enabledEhci="false"/> <Network/> <UART> <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> <Port slot="1" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> </UART> <LPT> <Port slot="0" enabled="false" IOBase="0x378" IRQ="4"/> <Port slot="1" enabled="false" IOBase="0x378" IRQ="4"/> </LPT> <AudioAdapter controller="AC97" driver="DirectSound" enabled="false"/> <SharedFolders/> <Clipboard mode="Bidirectional"/> <Guest memoryBalloonSize="0" statisticsUpdateInterval="0"/> <GuestProperties> <GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="C" timestamp="1589341300166459600" flags=""/> </GuestProperties> </Hardware> <StorageControllers> <StorageController name="IDE" type="PIIX4" PortCount="2"> <AttachedDevice type="HardDisk" port="0" device="0"> <Image uuid="{a9605e9f-31df-4dc6-827c-5b684f32bb64}"/> </AttachedDevice> </StorageController> </StorageControllers> </Machine> </VirtualBox>

You might also enjoy

Explore Upcoming Events

Find experts in the wild

See what's next