ランサムウェア

知られざるマルウェアファミリ、Vatet、PyXie、Defray777 の詳細

Clock Icon 10 min read

This post is also available in: English (英語)

最後の重要な記事: Defray777

Defray777は、Ransom XRansomExxとも呼ばれるランサムウェアのファミリで、その実像はまだ捉えられていません。最近は、新たなファミリとしてニュースで取り上げられるようになってきましたが、2018年にはすでに使用されており、ランサムウェアインシデントを多数引き起こして注目を集めています。詳細はリンク先の記事をご覧ください。

Defray777は、完全にメモリ内で実行されるので、サンプルについて公に議論されることはこれまでほとんどありませんでした。最近起きたいくつかのインシデントでは、Vatetローダーが送り込んだCobalt StrikeによってDefray777がメモリにロードされ、実行されました。

弊社が調査を始めてから、早くも2018年には、このランサムウェアファミリの復号ツールを複数発見していました。2018年から現在までの復号ツールを確認すると、ランサムウェアの暗号化や復号手法、復号ツールをパックするためのThemidaの使用に一貫性があることがわかります。表10は、Defray777の復号ツールがAutoFocusで見つかった日付と、ランサムウェア攻撃を受けた組織のリストを示しています。これを見ると、Defray777は2018年から一貫して活発に使用されていることがわかります。

日付 被害者
2018/12/07 教育機関
2019/02/04 医療機関
2019/03/01 テクノロジ系の組織
2019/03/15 教育機関
2019/08/08 医療機関
2019/08/25 教育機関
2019/08/28 運輸・物流組織
2019/09/03 法律関連組織
2019/09/06 教育機関
2019/09/26 医療機関
2019/10/30 政府機関
2019/11/01 医療機関
2020/02/04 テクノロジ系の組織
2020/02/10 政府機関
2020/03/16 食品関連組織
2020/10/17 金融機関

表10: Defray777ランサムウェア攻撃の日付と被害組織リスト

Defray777復号ツールのメッセージ。メッセージの内容は次のとおりです。
図21: Defray777復号ツール

弊社は最近のDefray777サンプルからいくつかを調査しました。そのうちの1つは、最近、インシデント発生中にメモリから直接取得されたサンプルです。弊社の詳細な分析の結果、得られた知見の概要を以下に示します。

復号された文字列

文字列の復号プロセスは、PyXieで確認したものと同じです。次の文字列は、最近のDefray777サンプルから復号したものです。

Already active [%s]
+%u (%u) files done [%s] [%u KB/s]
Started (PID: %u; Workers: %u; AES-%s) [%s]
Complete (+%u (%u) files done) [%s]
Work time: %d:%02d:%02d
Unable to get computer name
CryptoGuard
kernel32.dll
ConvertStringSecurityDescriptorToSecurityDescriptorW
advapi32.dll
IsWow64Process
SystemDrive
KiUserExceptionDispatcher

表11: Defray777の暗号化されていた文字列

被害システム上でDefray777を優先

復元されたDefray777を詳細に調査したところ、スレッドとプロセスの優先順位付けに関し、Defray777が以下の注目すべき特徴を示すことがわかりました。

  • このランサムウェアは、実行中にSetProcessPriorityBoostを使用してDefray777プロセスのスレッドを優先します。
  • さらに、Defray777はSetThreadAffinityMaskSetThreadPriorityBoostを呼び出し、暗号化のスレッドを作成して優先する処理に重点を置きます。
  • Defray777は、ランサムウェアのパフォーマンス向上のためにマルチスレッドを利用します。
Defray777は、ここで示すようにSetThreadAffinityMaskとSetThreadPriorityBoostを呼び出し、暗号化のスレッドを作成して優先する作業に重点を置きます。
図22: 実行中Defray777のスレッドを優先する

「好ましくない」プロセスの終了

実行ワークフロー中、Defray777は攻撃者が「好ましくない」とみなすプロセスを終了させるスレッドを作成します。まずCreateToolhelp32Snapshotを使ってプロセス一覧を取得し、Defray777以外のすべての有効なプロセスをイテレートしてすべての「好ましくない」プロセスを終了させてから実行を継続します。特にDefray777が標的とするのは、SYNCHRONIZE | PROCESS_QUERY_INFORMATION | PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_VM_OPERATION | PROCESS_CREATE_THREADのアクセス権つきでオープンされるプロセスです。

Defray777は、イメージのフルパスにシステム ファイル パスを含むすべてのプロセスを除外します。また、実行中に終了させるプロセスから以下を除外します。

powershell.exe rundll32.exe
wefault.exe explorer.exe
vmnat.exe

表12: 除外されるプロセス

システムサービスの停止

実行中、Defray777は以下のサービス実行を停止します。

Acronis VSS Provider MSExchangeADTopology MSSQLSERVER SQLAgent$PRACTTICEMGT
AcronisAgent MSExchangeAntispamUpdate MSSQLServerADHelper SQLAgent$PROD
AcronixAgent MSExchangeEdgeSync MSSQLServerADHelper100 SQLAgent$PROFXENGAGEMENT
AcrSch2Svc MSExchangeES MSSQLServerOLAPService SQLAgent$SBSMONITORING
Antivirus MSExchangeFBA MySQL57 SQLAgent$SHAREPOINT
ARSM MSExchangeFDS MySQL80 SQLAgent$SOPHOS
AVP MSExchangeIS NetMsmqActivator SQLAgent$SQL_2008
BackupExecAgentAccelerator MSExchangeMailboxAssistants nginx SQLAgent$SQLEXPRESS
BackupExecAgentBrowser MSExchangeMailboxReplication ntrtscan SQLAgent$SYSTEM_BGC
BackupExecDeviceMediaService MSExchangeMailSubmission OracleClientCache80 SQLAgent$TPS
BackupExecJobEngine MSExchangeMGMT OracleServiceXE SQLAgent$TPSAMA
BackupExecManagementService MSExchangeMTA OracleXETNSListener SQLAgent$VEEAMSQL2008R2
BackupExecRPCService MSExchangeProtectedServiceHost PDVFSService SQLAgent$VEEAMSQL2012
BackupExecVSSProvider MSExchangeRepl POP3Svc SQLBrowser
bedbg MSExchangeRPC ReportServer SQLsafe Backup Service
DbxSvc MSExchangeSA ReportServer$SQL_2008 SQLsafe Filter Service
DCAgent MSExchangeSearch ReportServer$SYSTEM_BGC SQLSafeOLRService
EhttpSrv MSExchangeServiceHost ReportServer$TPS SQLSERVERAGENT
ekrn MSExchangeSRS ReportServer$TPSAMA SQLTELEMETRY
Enterprise Client Service MSExchangeThrottling RESvc SQLTELEMETRY$ECWDB2
EPSecurityService MSExchangeTransport sacsvr SQLWriter
EPUpdateService MSExchangeTransportLogSearch SamSs SstpSvc
EraserSvc11710 msftesql$PROD SAVAdminService svcGenericHost
EsgShKernel MSOLAP$SQL_2008 SAVService swi_filter
ESHASRV MSOLAP$SYSTEM_BGC SDRSVC swi_service
FA_Scheduler MSOLAP$TPS SepMasterService swi_update
IISAdmin MSOLAP$TPSAMA ShMonitor swi_update_64
IMAP4Svc MSSQL$BKUPEXEC Smcinst Symantec System Recovery
KAVFS MSSQL$ECWDB2 SmcService TmCCSF
KAVFSGT MSSQL$PRACTICEMGT SMTPSvc tmlisten
kavfsslp MSSQL$PRACTTICEBGC SNAC TrueKey
klnagent MSSQL$PROD SntpService TrueKeyScheduler
macmnsvc MSSQL$PROFXENGAGEMENT Sophos Agent TrueKeyServiceHelper
masvc MSSQL$SBSMONITORING Sophos AutoUpdate Service UI0Detect
MBAMService MSSQL$SHAREPOINT Sophos Clean Service Veeam Backup Catalog Data Service
MBEndpointAgent MSSQL$SOPHOS Sophos Device Control Service VeeamBackupSvc
McAfeeEngineService MSSQL$SQL_2008 Sophos File Scanner Service VeeamBrokerSvc
McAfeeFramework MSSQL$SQLEXPRESS Sophos Health Service VeeamCatalogSvc
McAfeeFrameworkMcAfeeFramework MSSQL$SYSTEM_BGC Sophos MCS Agent VeeamCloudSvc
McShield MSSQL$TPS Sophos MCS Client VeeamDeploymentService
McTaskManager MSSQL$TPSAMA Sophos Message Router VeeamDeploySvc
mfefire MSSQL$VEEAMSQL2008R2 Sophos Safestore Service VeeamEnterpriseManagerSvc
mfemms MSSQL$VEEAMSQL2012 Sophos System Protection Service VeeamHvIntegrationSvc
mfevtp MSSQLFDLauncher Sophos Web Control Service VeeamMountSvc
MMS MSSQLFDLauncher$PROFXENGAGEMENT sophossps VeeamNFSSvc
MongoDB MSSQLFDLauncher$SBSMONITORING SQL Backups VeeamRESTSvc
mozyprobackup MSSQLFDLauncher$SHAREPOINT SQLAgent$BKUPEXEC VeeamTransportSvc
MsDtsServer MSSQLFDLauncher$SQL_2008 SQLAgent$CITRIX_METAFRAME W3Svc
MsDtsServer100 MSSQLFDLauncher$SYSTEM_BGC SQLAgent$CXDB wbengine
MsDtsServer110 MSSQLFDLauncher$TPS SQLAgent$ECWDB2 WRSVC
MSExchangeAB MSSQLFDLauncher$TPSAMA SQLAgent$PRACTTICEBGC Zoolz 2 Service

表13: Defray777によって停止されるサービス

ファイルの暗号化

メモリから復元された最近のDefray777サンプルを確認したところ、このランサムウェアは、GetLogicalDriveStringsW呼び出しを使用してシステムの論理ドライブのすべてのリストを取得してから、以下のプロセスを使用して各ドライブのファイル暗号化を反復処理します。

  • はじめに、影響を及ぼすシステムにプロセッサ機能PF_XMMI64_INSTRUCTIONS_AVAILABLEが存在するかをチェックします。
    • この機能が有効であれば、Defray777は、SSE2がサポートされており、比較的複雑な数学演算が可能であることを把握します。
  • Defray777はまた、暗号化のパフォーマンス向上のために、プロセッサがAES-NIを使用できるかどうかも判断します。
  • 暗号化が始まると、ファイルを暗号化する各ディレクトリで身代金要求文を作成します。
    • 身代金要求文の名前はさまざまです。しかし、弊社の調査によると、ほとんどの身代金要求文には、感嘆符、「README」の文字列、被害者名を示す内容の組み合わせが含まれます。
    • 例: !!!_IMPACTED_Client_README_!!!.txt
  • ファイルコンテンツは、その場で生成されたAESキーで暗号化されます。AESキーは、RSA(4096ビット)で暗号化され、ブロック長512バイトのブロックでファイルフッターに保存されます。
  • 暗号化されたファイルは、被害者の一意識別子とランダムな8桁の16進数を含む拡張子を付加した名前に変更されます。
    • 例: .v1ct1m-1bc461ac
最近のDefray777身代金要求文の例にはこう書かれています。回復に問題が生じる可能性があります。暗号化されたドキュメント(本ほど大きくはありません)をメールで送信していただければ、回復できます。影響を受けたファイルには機密情報は含まれていないはずです。残りのデータは、お支払い後にご利用いただけます。警察へのご連絡はお控えください。未払い勘定が凍結されてお支払いができなくなります。業務を滞りなく進めたければ、ご連絡ください。」
図23: 最近のDefray777身代金要求文の例

具体的には、暗号化メカニズムには次のステップが含まれています。

  • 32バイトのAESキーを動的に生成します。
  • ブロック長16バイトのブロックを使用するECBモードのAES(256ビット)でファイルを暗号化します。
  • RSA(4096ビット)でAESキーを暗号化し、0x200バイトの暗号化テキストを暗号化されたファイルの最後に付加します。

暗号化の結果

暗号化プロセスの間、Defray777は、システムのコア機能に影響を与えることなくできるだけ多くのファイルの暗号化を目指します。このことを実現するために、Defray777は、実行中に暗号化の対象としない、除外されるフォルダ、ファイル、ファイル拡張子のセットを使用します。

除外されるフォルダは以下のとおりです。

\windows\system32\ \windows\syswow64\ \windows\system\
\windows\winsxs\ \appdata\roaming\ \appdata\local\
\appdata\locallow\ \all users\microsoft\ \inetpub\logs\
:\boot\ :\perflogs\ :\programdata\
:\drivers\ :\wsus\ :\efstmpwp\
:\$recycle.bin\ :\EFSTMPWP\ crypt_detect
cryptolocker ransomware

表14: Defray777の暗号化対象から除外されるフォルダ

除外されるファイルは以下のとおりです。

iconcache.db thumbs.db ransomware ransom
debug.txt boot.ini desktop.ini autorun.inf
ntuser.dat ntldr ntdetect.com bootfont.bin
bootsect.bak

表15: Defray777の暗号化対象から除外されるファイル

Defray777が除外対象ファイルリストに身代金要求文の名前を追加することも、留意するべき重要なポイントです。

除外対象の拡張子は以下のとおりです。

.ani .cab .cpl .cur .diagcab
.diagpkg .dll .drv .hlp .icl
.icns .ico .iso .ics .lnk
.idx .mod .mpa .msc .msp
.msstyles .msu .nomedia .ocx .prf
.rtp .scr .shs .spl .sys
.theme .themepack .exe .bat .cmd
.url .mui

表16: Defray777の暗号化対象から除外される拡張子

マッピングされていないファイル共有の検索

Defray777は実行中、WNetOpenEnumWおよびWNetEnumResourceWを使用して、暗号化できるファイルを含む可能性のあるファイル共有を検索します。この手法は、その他のランサムウェアの亜種で実際に確認されており、マッピングされていないファイル共有を通じてアクセス可能なファイルを暗号化します。

Defray777は実行中、WNetOpenEnumWおよびWNetEnumResourceWを使用して、暗号化できるファイルを含む可能性のあるファイル共有を検索します。
図24: Defray777がネットワークリソースを列挙

アンチフォレンジック手法

システム上ですべてのファイルが暗号化されると、Defray777は、多くのランサムウェアの亜種と同様の一般的なアンチフォレンジック手法として、できる限り多くの侵入の痕跡を消去し、バックアップがなければシステムの回復がきわめて困難な状態にします。このようなコマンドは、その他のランサムウェアの亜種では一般的ですが、Defray777はコマンドを暗号化の終了後に実行します。つまり、セキュリティツールがアラートをあげたり、Defray777に対して対策を講じたりするときには、ファイルはすでに暗号化されています。

Defray777によって実行されるコマンドは以下のとおりです。

cipher.exe /w:[DRIVE]
fsutil.exe usn deletejournal /D [DRIVE]
wbadmin.exe delete catalog -quiet
bcdedit.exe /set {default} recoveryenabled no
bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
schtasks.exe /Change /TN “\Microsoft\Windows\SystemRestore\SR” /disable

wevtutil.exe cl Application
wevtutil.exe cl System
wevtutil.exe cl Setup
wevtutil.exe cl Security
wevtutil.exe sl Security /e:false

表17: Defray777によって実行されるアンチフォレンジックコマンド

レジストリキーは以下のように変更されます。

\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore\DisableConfig
\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore\DisableSR
\SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore\DisableSR
\SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore\DisableConfig

表18: Defray777によって変更されたレジストリキー

Defray777のLinuxへの移植

弊社が調査を進める中で、Defray777ランサムウェアがLinuxに移植されていたことがわかりました。Defray777が現れる以前には、WindowsとLinuxの両オペレーティングシステムに影響を及ぼすランサムウェアは、JavaまたはPythonなどのスクリプト言語による記述に限られていました。このようなランサムウェアの亜種は、両方のオペレーティングシステムによるインストールとサポートが必要な単一の言語で記述されているので、両システムで機能すると考えられるでしょう。Defray777のLinuxへの移植により、このランサムウェアは、外部依存関係のない、スタンドアロンの実行可能ファイルを各プラットフォームに対して確保しました。

Defray777の復号ツールとして確認されたWindows実行可能ファイルを含むZIPアーカイブは、2020年10月17日に公開マルウェアリポジトリにアップロードされました。さらに、このZIPアーカイブにはdecryptor64という名前のELF形式のバイナリも含まれています。このバイナリの分析から、Linuxに移植された別のDefray777復号ツールが存在すると判断しました。

Defray777のLinuxバージョンが実際に存在する可能性があるという考えの下、弊社ではAutoFocusで捕捉を始め、ELFバージョンのランサムウェア暗号化ツールを迅速に見つけ出しました。

このサンプルの確認をさらに進めると、2020年8月にアップロードされたことが分かりました。2020年10月上旬の時点で、LinuxバージョンのDefrayは、VirusTotalのアンチウイルス(AV)では検出されていません。

Defray777のLinuxおよびWindowsの亜種それぞれを詳細に確認したところ、暗号化および復号化に使用されたプロセスはほとんど同じであると判断しました。実際に、弊社独自のRSAキーペアを生成し、バイナリを変更することで、両方のオペレーティングシステムの暗号化ツールと復号ツールに互換性があることが確認できました。

開発者は、Windowsバージョンとは異なり、Linuxサンプルの保護にはあまり力を入れなかったようです。驚いたことに、私たちが分析したバイナリには、両方のバージョンを簡単に入れ替えるための記号が元のまま残っていました。

開発者は、Windowsバージョンとは異なり、Linuxサンプルの保護にはあまり力を入れなかったようです。私たちが分析したバイナリには、両方のバージョンを簡単に入れ替えるための記号が元のまま残っていました。
図25: Defray777のELFバージョンでリストされた名前付き関数

Windowsの亜種とLinuxの亜種の間で見られる最大の違いの1つは、暗号化するファイルを決定するロジックです。Windowsバージョンはファイルシステムを再帰的に呼び出し、明示的に除外されていないファイルはすべて暗号化します。Linuxでは対照的に、コマンドライン引数で指定されたディレクトリのみを暗号化します。

続きを読む: Vatet、PyXie、Defray777のつながり

Enlarged Image