This post is also available in: English (英語)
最後の重要な記事: Defray777
Defray777は、Ransom XやRansomExxとも呼ばれるランサムウェアのファミリで、その実像はまだ捉えられていません。最近は、新たなファミリとしてニュースで取り上げられるようになってきましたが、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サンプルからいくつかを調査しました。そのうちの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はSetThreadAffinityMaskとSetThreadPriorityBoostを呼び出し、暗号化のスレッドを作成して優先する処理に重点を置きます。
- 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
具体的には、暗号化メカニズムには次のステップが含まれています。
- 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は、多くのランサムウェアの亜種と同様の一般的なアンチフォレンジック手法として、できる限り多くの侵入の痕跡を消去し、バックアップがなければシステムの回復がきわめて困難な状態にします。このようなコマンドは、その他のランサムウェアの亜種では一般的ですが、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の亜種の間で見られる最大の違いの1つは、暗号化するファイルを決定するロジックです。Windowsバージョンはファイルシステムを再帰的に呼び出し、明示的に除外されていないファイルはすべて暗号化します。Linuxでは対照的に、コマンドライン引数で指定されたディレクトリのみを暗号化します。
続きを読む: Vatet、PyXie、Defray777のつながり