ESET社は、ウクライナを標的とした新たなワイパー「HermeticWizard」とローカルネットワークにHermeticWiperを拡散させるワーム「IsaacWiper」を発見しました。
本記事はESET Japanが提供する「ESETブログ」に掲載された「ウクライナを標的とした新しいワイパー「HermeticWizard」とワーム「IsaacWiper」を確認」を再編集したものです。
ロシアによるウクライナへの軍事行動が開始されましたが、ESETのリサーチ部門は、時を同じくしてウクライナの組織を標的とする複数のマルウェアファミリーを発見しました。
- 2022年2月23日、ウクライナの複数の組織を標的に、HermeticWiperを使用する破壊的な攻撃が行われました。
- このサイバー攻撃は、ロシア連邦軍がウクライナへの侵攻を開始する数時間前から開始されています。
- 最初の侵入方法は、標的組織により異なっています。ESETは、GPO(グループポリシーオブジェクト)によってワイパーが配布された事例を1件確認しており、セキュリティが侵害された別のネットワークでこのワイパーを拡散するためにワームが使用されていた事例も発見しました。
- マルウェアの痕跡から、この攻撃は数ヶ月前から計画されていたことが判明しました。
- 2022年2月24日、ウクライナ政府のネットワークに対して、ワイパーを使用した2回目の破壊的な攻撃が開始されました。ESETはこのワイパーをIsaacWiperと命名しました。
- ESET Researchは、これらの攻撃と過去に特定されているサイバー攻撃者との関係をまだ特定できていません。
ウクライナに対する破壊的な攻撃
ESET ResearchのツイートとWeLiveSecurityのブログで伝えたように、ESETはウクライナのコンピュータに対する破壊的な攻撃が2022年2月23日14:52(UTC)に開始されたことを特定しました。この攻撃は、ウクライナの主要なウェブサイトに対する分散型サービス妨害(DDoS)攻撃に続いて発生しました。これは、ロシア軍がウクライナに侵攻する数時間前から開始されていました。
これらの破壊的な攻撃では、次の少なくとも3つのコンポーネントが使用されていました。
- HermeticWiper:データを破壊してシステムを動作不能にします
- HermeticWizard:WMIおよびSMBを介してHermeticWiperをローカルネットワークに拡散します
- HermeticRansom:Go言語で記述されたランサムウェアです
HermeticWiperは、ウクライナにある少なくとも5つの組織の数百台のシステムで検出されました。
2022年2月24日、ESETはウクライナ政府のネットワークで別の新たなワイパーを検出しました。ESETはこのワイパーをIsaacWiperと命名し、HermeticWiperとの関連について現在分析しています。特筆すべき点は、IsaacWiperは、HermeticWiperの影響を受けていない組織で検出されています。
攻撃の帰属
現時点では、ESETは既知のサイバー攻撃者とこれらの攻撃との明確な関連性を特定できていません。HermeticWiper、HermeticWizard、およびHermeticRansomは、ESETが過去に検出および分析してきた多くのマルウェアのコードと大きな類似性が確認されていません。IsaacWiperの帰属についても不明のままです。
タイムライン
HermeticWiperおよびHermeticWizardは、2021年4月13日に発行されHermetica Digital Ltdに割り当てられたコード署名証明書(図1)によって署名されています。ESETは、発行元のCA(DigiCert)に証明書を無効にするように要求し、2月24日にこの証明書は失効しました。
ロイターの報道によると、この証明書は、Hermetica Digital社から盗まれたものではないようです。攻撃者は、DigiCertからこの証明書を取得するために、キプロスにある会社になりすましていた可能性があります。
ESETのリサーチ部門は、セキュリティを侵害されたこの組織は、このワイパーが展開されるかなり前の段階から攻撃されていたと、確信をもって判断しています。これは、次のようないくつかの事実に基づいています。
- HermeticWiper PEがコンパイルされた最も古いタイムスタンプは2021年12月28日でした。
- コード署名証明書の発行日は2021年4月13日でした。
- 少なくとも1つの攻撃事例において、GPOからHermeticWiperが展開されていたことから、攻撃者は被害者のActive Directoryサーバーの1つに事前にアクセスしていたことが分かります。
これらのイベントを、図2のタイムラインにまとめています。
初期アクセス
HermeticWiper
最初の侵入経路は不明なままですが、標的となった組織ではラテラルムーブメント(ネットワーク内での横展開)の痕跡が観察されています。ある組織では、このワイパーは、次のシステムパスにあるように、ActiveDirectoryのデフォルトのドメインポリシー(GPO)を介して展開されていました。
C:\Windows\system32\GroupPolicy\DataStore\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cc.exe
これは、攻撃者がActive Directoryサーバーを掌握している可能性が高いことを示しています。
また、ほかの事例では、HermeticWiperを展開するためにImpacketが使用されていた可能性があります。Symantecはブログ記事の中で、このワイパーが以下のコマンドラインを使用して展開されたと説明しています。
cmd.exe /Q /c move CSIDL_SYSTEM_DRIVE\temp\sys.tmp1 CSIDL_WINDOWS\policydefinitions\postgresql.exe 1> \\127.0.0.1\ADMIN$\__1636727589.6007507 2>&1
このコマンドの最後の部分は、GitHubにあるImpacketのwmiexec.pyのデフォルトの動作と同じです。
最後に、SMBとWMIを介して、侵害されたネットワーク全体にHermeticWiperを拡散するために独自のワームが使用されていました。ESETはこのワームをHermeticWizardと命名しました。
IsaacWiper
最初の侵入方法は、まだ明らかになっていません。攻撃者はImpacketなどのツールを使用してネットワーク内を横展開していた可能性があります。いくつかのマシンでは、RemComも確認されました。これは、リモートアクセスツールであり、IsaacWiperと同時に展開されていました。
技術的な分析
HermeticWiper
HermeticWiperはWindowsの実行ファイルであり、そのリソースには4つのドライバが埋め込まれています。これらは、EaseUS Partition Masterソフトウェアの正規のドライバであり、CHENGDU YIWO Tech Development Co.によって署名されています。これらのドライバは、下位レベルでディスクを操作します。以下のファイルが観測されています。
- 0E84AFF18D42FC691CB1104018F44403C325AD21:x64ドライバ
- 379FF9236F0F72963920232F4A0782911A6BD7F7:x86ドライバ
- 87BD9404A68035F8D70804A5159A37D1EB0A3568:x64 XPドライバ
- B33DD3EE12F9E6C150C964EA21147BF6B7F7AFA9:x86 XPドライバ
OSのバージョンによって、4つのドライバの中の1つが選択され、
C:\Windows\System32\drivers\<4 random letters>.sysにドロップされます。 次に、サービスを作成してこのドライバをロードします。
HermeticWiperは、次に、ボリュームシャドウコピーサービス(VSS)を無効にし、ランダムなバイトで自身のファイルを上書きして、ディスクから自身を消去します。これは、インシデント後の解析によってこのワイパーの構造が解析されないようにするフォレンジック対策と考えられます。
ファイル操作のほとんどが、DeviceIoControlコールを使用して下位レベルで実行されていることは注目に値します。
Windows API関数のDeviceIoControlによって生成されるランダムバイトによって、以下の場所が上書きされます。
- マスターブートレコード(MBR)
- マスターファイルテーブル(MFT)
- すべてのドライブの$Bitmapおよび$LogFile
- レジストリキーが含まれるファイル(NTUSER*)
- C:\Windows\System32\winevt\Logs
また、FSCTL_MOVE_FILE操作を使用して、Windows、Program Files、Program Files(x86)、PerfLogs、Boot、System Volume Information、およびAppDataフォルダにあるフォルダおよびファイルも再帰的に消去します。この手法は、特異であり、GitHubのWindowsワイププロジェクトで実装されている内容と酷似しています(wipe_extent_by_defrag関数を参照)。My DocumentsおよびDesktopフォルダにあるシンボリックリンクや大きなファイルについても、ランダムバイトで上書きして消去します。
最後に、マシンを再起動します。しかし、MBR、MFT、および多くのファイルが消去されているため、起動に失敗します。ESETは攻撃を受けたマシンを復旧することは不可能だと考えています。
HermeticWizard
同じコード署名証明書(Hermetica Digital Ltd)で署名されているほかの検体をESETが調査したところ、新しいマルウェアファミリーを特定し、HermeticWizardと命名しました。
2022年2月23日14:52:49(UTC)に、ウクライナのあるシステムにワームが展開されました。このワームは、C++で開発されたDLLファイルで、DllInstall、DllRegisterServer、およびDllUnregisterServer関数をエクスポートします。エクスポートDLLの名前は、Wizard.dllです。3つのリソースが含まれています。これらは暗号化されたPEファイルです。
- HermeticWiperの検体(912342F1C840A42F6B74132F8A7C4FFE7D40FB77)
- exec_32.dll、WMIからほかのローカルコンピュータに拡散する機能を提供します
(6B5958BFABFE7C731193ADB96880B225C8505B73) - romance.dll、SMBからほかのローカルコンピュータに拡散する機能を提供します
(AC5B6F16FC5115F0E2327A589246BA00B41439C2)
これらのリソースはリバースXORループで暗号化されます。4バイトの各ブロックは、前のブロックでXORされます。最後に、最初のブロックはハードコードされた値(0x4A29B1A3)でXORされます。
HermeticWizardは、コマンドラインregsvr32.exe /s /i <path>を使用して起動されます。
HermeticWizardは、最初にローカルネットワークにあるほかのマシンを探そうとします。以下のWindowsの関数を使用して、既知のローカルIPアドレスを収集します。
- DNSGetCacheDataTable
- GetIpNetTable
- WNetOpenEnumW(RESOURCE_GLOBALNET, RESOURCETYPE_ANY)
- NetServerEnum
- GetTcpTable
- GetAdaptersAddresses
次に、これらのIPアドレス(ローカルIPアドレスの場合のみ)に接続し、アクセス可能かどうかを確認します。HermeticWizardの起動時に、-s引数が指定された場合(regsvr32.exe /s /i:-s <path>)、/24の全範囲をスキャンします。つまり、たとえばDNSキャッシュで192.168.1.5が見つかった場合、192.168.1.1から192.168.1.254まで順番にスキャンします。各IPアドレスに対して、以下のポートでTCP接続を開こうとします。
- 20: ftp
- 21: ftp
- 22: ssh
- 80: http
- 135: rpc
- 137: netbios
- 139: smb
- 443: https
- 445: smb
ポートはランダムな順序でスキャンされているため、HermeticWizardのトラフィックをフィンガープリンティングすることはできません。
HermeticWizardは、アクセス可能なマシンを見つけると、WMIスプレッダ(詳細は後述)をディスクにドロップし、コマンドラインrundll32 <current folder>\<6 random letters>.ocx #1 -s <path to HermeticWizard> – i <target IP>を使用して、新しいプロセスを作成します。
SMBスプレッダ(詳細は後述)も同じ処理を実行し、異なるランダムな文字を使用して、<current folder>\<6 random letters>.ocxにドロップします。
最後に、HermeticWiperを<current folder>\<6 random letters>.ocxにドロップして、実行します。
WMIスプレッダ
このWMIスプレッダ「exec_32.dll」は、その開発者によってファイル名が付けられており、次の2つの引数を取ります。
- -i: ターゲットのIPアドレス
- -s: ターゲットマシンにコピーして実行するファイル
最初に、WNetAddConnection2Wを使用してターゲットのリモート管理共有への接続を作成します。次に、-s引数で指定されるファイルは、CopyFileWを使用してコピーされます。リモートファイルには、CoCreateGUIDで生成されるランダムな名前(例、 cB9F06408D8D2.dll)と、c%02X%02X%02X%02X%02X%02Xの文字列形式が設定されます。
次に、コピーしたファイル(HermeticWizard)を、DCOMを使用してリモートマシンで実行します。引数としてCLSID_WbemLocatorを使用して、CoCreateInstanceを呼び出します。次に、コマンドラインC:\windowssystem32.exe /c start C:\windowssystem32.exe /s /i C:\windowssystem32.dll /s /i C:\windows<filename>.dllを使用し、WMIのWin32_Processを使用してリモートマシンで新しいプロセスを作成します。
-s引数はHermeticWizardに渡されないため、この新しく侵害されたマシンのローカルネットワークが再びスキャンされることはありません。
WMIの手法に失敗すると、上記と同じコマンドとOpenRemoteServiceManagerを使用して、サービスの作成を試行します。
何らかの方法でリモートDLLの実行に成功すると、このリモートファイルを削除できるようになるまでスリープします。
SMBスプレッダ
SMBスプレッダ「romance.dll」は、その開発者によってファイル名が付けられており、WMIスプレッダと同じ2つの引数を取ります。SMBスプレッダはエクスプロイトを使用しませんが、このDLLの名前はEternalRomanceエクスプロイトに因んでいる可能性があります。
最初に、リモートのSMB共有(ポート445)にある以下のパイプへの接続を試みます。
- samr
- browser
- netlogon
- lsarpc
- ntsvcs
- svcctl
これらのパイプは、ラテラルムーブメントで使用されることが分かっています。このスプレッダには、SMB共有に対してNTLMSSP経由で認証するために使用されるハードコードされた認証情報のリストが含まれています。
— usernames —
guest
test
admin
user
root
administrator
manager
operator
— passwords —
123
Qaz123
Qwerty123
この認証情報のリストは極めて短く、十分に保護されていないネットワークでも認証は成功しない可能性があります。
接続に成功すると、ターゲットの管理共有に、-s引数で指定されたファイルをドロップします。WMIスプレッダについては、リモートファイルの名前は、CoCreateInstanceへの呼び出しによって生成されます。
次に、SMBから、コマンドラインcmd /c start regsvr32 /s /i ..\\<filename> & start cmd /c \”ping localhost -n 7 & wevtutil cl System\”を実行します。
HermeticRansom
ESETのリサーチ部門は、HermeticWiperキャンペーンと同時に、Go言語で記述されたランサムウェアHermeticRansomがウクライナで使用されていることも発見しました。HermeticRansomは、2022年2月24日の未明(UTC)に、AVASTのツイートによって初めて報告されました。ESETのテレメトリ(監視データ)を見ると、HermeticWiperと比較してその展開規模は小規模でした。このランサムウェアは、HermeticWiperと同時に展開されており、このワイパーの挙動を隠ぺいするために展開されていた可能性があります。あるマシンで確認された攻撃のタイムラインを以下に示します。
- 2022年2月23日17:49:55(UTC):HermeticWiperがC:\Windows\Temp\cc.exeに展開される
- 2022年2月23日18:06:57(UTC):HermeticRansomがnetsvcsサービスによってC:\WindowsTemp?c2.exeに展開される
- 2022年2月23日18:26:07(UTC):2つ目のHermeticWiperがC:\Userscom.exeに展開される
ある事例では、HermeticWiperと同様に、HermeticRansomがGPOから展開されていました。
C:\WINDOWS\system32\GroupPolicy\DataStore\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cpin.exe
攻撃者は、バイデン米国大統領とホワイトハウスに関する次のようないくつかの文字列をバイナリに残していました。
- _/C_/projects/403forBiden/wHiteHousE.baggageGatherings
- _/C_/projects/403forBiden/wHiteHousE.lookUp
- _/C_/projects/403forBiden/wHiteHousE.primaryElectionProcess
- _/C_/projects/403forBiden/wHiteHousE.GoodOffice1
ファイルが暗号化されると、図3のメッセージが攻撃を受けたユーザーに表示されます。
IsaacWiper
IsaacWiperは、Authenticode署名のないWindows DLLまたはEXEとして検出されています。ESETのテレメトリに最初に登場したのは、2022年2月24日です。先に説明したように、ESETが発見した最も古いPEコンパイルのタイムスタンプは2021年10月19日です。つまり、そのPEコンパイルのタイムスタンプが改ざんされていなければ、IsaacWiperは数ヶ月前から使用されていた可能性があります。
PEエクスポートディレクトリにあるDLLの検体の名前はCleaner.dllであり、シングルエクスポート_Start@4が設定されています。
ESETは、%programdata%およびC:\Windows\System32フォルダにある次の名前のIsaacWiperを確認しています。
- clean.exe
- cl.exe
- cl64.dll
- cld.dll
- cll.dll
HermeticWiperとIsaacWiperのコードには類似性がなく、IsaacWiperのコードはそれほど高度ではありません。タイムラインを考えると、両者が関連している可能性もありますが、関連性を強く示唆する証拠は見つかっていません。
IsaacWiperは、最初に物理ドライブを列挙し、DeviceIoControlをIOCTLのIOCTL_STORAGE_GET_DEVICE_NUMBERと一緒に呼び出して、デバイス番号を取得します。次に、各ディスクの最初の0x10000バイトを、ISAAC疑似乱数発生器を使用して消去します。この疑似乱数発生器には、GetTickCountの値がシードとして提供されます。
次に、論理ドライブを列挙し、各ディスクにあるすべてのファイルを、同じくISAAC PRNGで生成したランダムバイトで再帰的に消去します。単一のスレッドで再帰的にファイルを消去していることから、大きなディスクを消去する場合に長い時間が必要となっています。
2022年2月25日に、攻撃者はデバッグログ機能のあるIsaacWiperの新バージョンをドロップしました。攻撃者がターゲットマシンの一部を消去できなかったことから、その問題を理解するためにログメッセージを追加した可能性があります。以下のようなログメッセージがC:\ProgramData\log.txtに保存されます。
- getting drives…
- start erasing physical drives…
- –– start erasing logical drive
- start erasing system physical drive…
- system physical drive –– FAILED
- start erasing system logical drive
結論
このレポートでは、2022年2月23日にウクライナを標的として実行された破壊的なサイバー攻撃と2022年2月24日から26日にかけてウクライナの別の組織を標的として実行された2回目の攻撃について詳しく説明しました。現時点では、ほかの国がターゲットになった事例は確認されていません。
しかし、現在進行中であるウクライナ危機により、同じサイバー攻撃者がウクライナ政府を支持する国家や、ロシアの組織に制裁を科している国家に対して別のキャンペーンを展開する恐れもあります。
IoC
SHA-1 | ファイル名 | ESETの検出名 | 説明 |
---|---|---|---|
912342F1C840A42F6B74132F8A7C4FFE7D40FB77 | com.exe | Win32/KillDisk.NCV | HermeticWiper |
61B25D11392172E587D8DA3045812A66C3385451 | conhosts.exe | Win32/KillDisk.NCV | HermeticWiper |
3C54C9A49A8DDCA02189FE15FEA52FE24F41A86F | c9EEAF78C9A12.dat | Win32/GenCBL.BSP | HermeticWizard |
F32D791EC9E6385A91B45942C230F52AFF1626DF | cc2.exe | WinGo/Filecoder.BK | HermeticRansom |
AD602039C6F0237D4A997D5640E92CE5E2B3BBA3 | cl64.dll | Win32/KillMBR.NHP | IsaacWiper |
736A4CFAD1ED83A6A0B75B0474D5E01A3A36F950 | cld.dll | Win32/KillMBR.NHQ | IsaacWiper |
E9B96E9B86FAD28D950CA428879168E0894D854F | clean.exe | Win32/KillMBR.NHP | IsaacWiper |
23873BF2670CF64C2440058130548D4E4DA412DD | XqoYMlBX.exe | Win32/RiskWare.RemoteAdmin.RemoteExec.AC | 正規のRemComリモートアクセスツール |
MITREのATT&CKの手法
この表は、MITRE ATT&CKフレームワークのバージョン10を使用して作成されています。
手法 | ID | 名前 | 説明 |
---|---|---|---|
リソース開発 | T1588.002 | 機能の取得:ツール | 攻撃者は、このキャンペーンの一環としてRemComを使用しています。また、Impacketを使用していた可能性があります。 |
T1588.003 | 機能の取得:コード署名証明書 | 攻撃者は、このキャンペーンのためにコード署名証明書を取得しています。 | |
初期アクセス | T1078.002 | 有効なアカウント:ドメインアカウント | 攻撃者は、GPOからワイパー型マルウェアを展開しています。 |
実行 | T1059.003 | コマンドおよびスクリプトインタプリタ:Windowsコマンドシェル | 攻撃者は、攻撃時にコマンドラインを使用しています(Impacketを使用した可能性があります)。 |
T1106 | ネイティブAPI | 攻撃者は、マルウェアにネイティブAPIを使用しています。 | |
T1569.002 | システムサービス:サービスの実行 | 拡張機能のIIStealerによって、IISサーバーは、Windowsサービスとして常駐します。 | |
T1047 | Windows Management Instrumentation | HermeticWizardは、WMIを使用してローカルコンピュータに自身を拡散します。 | |
検出 | T1018 | リモートシステムの検出 | HermeticWizardは、ローカルのIPアドレス範囲をスキャンし、ローカルマシンを見つけます。 |
ラテラルムーブメント | T1021.002 | リモートサービス: SMB/Windows管理共有 |
HermeticWizardは、SMBを使用してローカルコンピュータに自身を拡散します。 |
T1021.003 | リモートサービス: Distributed Component Object Model(DCOM) |
HermeticWizardは、WbemLocatorを使用してWMIを介してリモートから新しいプロセスを開始し、ローカルコンピュータに自身を拡散します。 | |
影響 | T1561.002 | ディスクの消去:ディスク構造の消去 | HermeticWiperは、システムのMBRとMFTのデータを破壊します。 |
T1561.001 | ディスクの消去:ディスク内のファイルの消去 | HermeticWiperは、Windows、Program Files、Program Files(x86)、PerfLogs、Boot、System Volume Information、およびAppDataのファイルを破壊します。 | |
T1485 | データの破壊 | HermeticWiperは、システムで見つかったユーザーデータを破壊します。 | |
T1499.002 | エンドポイントのサービス妨害攻撃:DDoS攻撃によるサービスの利用妨害 | 攻撃者は、DDoS攻撃によって、多くの政府系ウェブサイトが利用できないようにしました。 |