攻撃グループMirrorFaceの攻撃活動

JPCERT/CCでは、2019年ごろから継続してマルウェアLODEINFOやNOOPDOOR(2022年ごろから使用)を使用する攻撃グループMirrorFace(Earth Kashaとも呼ばれる)の活動を確認しています。この攻撃グループのターゲットは、当初はマスコミや政治団体、シンクタンク、大学などでしたが、2023年からは製造業や研究機関などを狙うようになりました。また、ネットワーク内部に侵入する方法として、当初は標的型攻撃メールを使用してターゲット組織に侵入する特徴がありましたが、2023年ごろから外部公開資産の脆弱性を悪用してネットワーク内に侵入するパターンも並行して使用するようになりました。図1に、MirrorFaceの攻撃活動の変遷を示します。

攻撃グループMirrorFaceの攻撃活動タイムライン
図1:攻撃グループMirrorFaceの攻撃活動タイムライン
(JPCERT/CCへの報告や他のベンダーから公開されているレポート[1] [2]をもとに集計しています。)

2023年11月にJPCERT/CCから注意喚起を公開した通り、この攻撃グループはArray AGやFortiGateの脆弱性を悪用していることを確認しています。Proselfの脆弱性も悪用されている可能性がありますが、本ブログでは上記2つの脆弱性が悪用された事案を分析対象としています。
今回は、この攻撃者が最近の攻撃で使用するマルウェアNOOPDOORおよび攻撃者が組織内ネットワーク内に侵入した際に使用する攻撃手法やツールについて解説します。

NOOPDOOR

NOOPDOOR実行までの流れ

NOOPDOORはShellcode形式のマルウェアで、正規のアプリケーションに自身をインジェクションすることで動作します。NOOPDOORの起動方法は、XMLファイルから起動する場合(Type1)とDLLファイルから起動する場合(Type2)の二種類が確認されています。それぞれの起動パターンを図2および図3に示します。

NOOPDOORがXMLファイルから起動する場合(Type1)
図2:NOOPDOORがXMLファイルから起動する場合(Type1)

Type1では、XMLファイル内に難読化されたC#のコードが格納されており、MSBuildにてC#のコードをビルドし、NOOPDOORのローダー(以下、「NOOPLDR」という。)が実行されます。実行後、特定のデータファイルまたはレジストリの値を読み取り、実行されたマシン固有の値であるMachineIdとComputerNameの値をもとにAES(CBCモード)で読み込んだデータを復号し、正規のアプリケーションへコードインジェクションします。

NOOPDOORがDLLファイルから起動する場合(Type2)
図3:NOOPDOORがDLLファイルから起動する場合(Type2)

Type2では、タスクから正規のアプリケーションを実行し、DLLサイドローディングによってDLLファイルであるNOOPLDRが正規のアプリケーションにロードされます。その後、Type1と同様にレジストリをロードし、正規のアプリケーションへ復号したコードをインジェクションします。NOOPDOORの実行後、Type1とType2の双方はコードを暗号化し、再実行した際にロードされるように指定のレジストリへ格納します。

NOOPLDRの種類

NOOPLDRはインジェクション先の違いやサービス登録機能の有無などさまざまな検体が確認されており、以下のような種類を確認しています。

表1:NOOPLDRの各検体の特徴
実行方式 インジェクション先プロセス名 サービス登録機能 本体保存レジストリ
XML lsass.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML tabcal.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML rdrleakdiag.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML svchost.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML wuauclt.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML vdsldr.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
XML prevhost.exe - HKLM\Software\License\{HEX}, HKCU\Software\License\{HEX}
DLL wuauclt.exe Yes HKCU\Software\Microsoft\COM3\{HEX}
DLL None - HKCU\Software\Licenses\{HEX}
DLL svchost.exe - HKCU\Software\Licenses\{HEX}

なお、Type2のサービス登録機能がある検体の一部については、次のコマンドを実行し、サービスを隠ぺいする機能があります。

sc start [SERVICE_NAME] && sc sdset [SERVICE_NAME] D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

NOOPLDRの難読化

NOOPLDR(Type2)では図4(左)のような制御フローを複雑にしてコードを読みづらくする難読化手法であるControl Flow Flattening(CFF)によってコードが読みづらくなっています。D810[3]などのCFF解除ツールを使用することで、ある程度難読化を解除することが可能ですが、NOOPLDRはCFFに加えて意味のないWindows API呼び出しが多数埋め込まれており、そのままではすべての難読化を解除することができません。そのため、JPCERT/CCで作成したツールを適用後、D810などを使用することで、図4(右)のようにCFFを解除することが可能です。

NOOPLDRのCFFされた関数(左)とCFF解除後の関数(右)
図4:NOOPLDRのCFFされた関数(左)とCFF解除後の関数(右)

NOOPLDRの難読化解除を補助するツールをGitHub上で公開していますので、ご活用ください。

GitHub:JPCERTCC/aa-tools/Deob_NOOPLDR.py
https://github.com/JPCERTCC/aa-tools/blob/master/Deob_NOOPLDR.py

NOOPDOORの機能

NOOPDOORは、システムの現在時刻をもとに算出するDGAによって生成された通信先へポート443番で通信する機能や、TCPの47000ポートでリッスンし、コマンドを待ち受ける機能があります。また、NOOPDOORにはファイルのアップロード・ダウンロード、追加モジュールの実行など、マルウェアの機能として基本的なものから、ファイルのタイムスタンプを改ざんするコマンドも存在しており、フォレンジック時には注意が必要です。
NOOPDOORのコマンド体系や、詳しい挙動はJSAC2024にて発表されたDominik氏の講演資料[4]をご覧ください。

攻撃者のネットワーク内での活動

以降では、ネットワーク内に侵入した攻撃者が使用したコマンドやツール、防衛回避手法について解説します。

認証情報の取得

攻撃者は複数の方法を使用して、Windowsネットワークの認証情報の取得を試みます。

(1) Lsassメモリダンプからの認証情報の取得

  • ツールを使用して、動作中のLsassプロセスのメモリダンプを取得し、内部に含まれるパスワード情報を抽出しようとします。
  • Microsoft Defenderが動作している環境では、Lsassメモリダンプの取得を検知する可能性があります(イベントログ Windows Defender/Operational: イベントID 1011: 検知名 Trojan:Win32/LsassDump)。

(2) NTDS.ditからのパスワード取得

  • ドメインコントローラーのデータベースファイル(NTDS.dit)を取得して、パスワード情報を抽出しようとします。
  • Vssadminコマンドなどを使用してNTDS.ditにアクセスします。
  • NTDS.ditを取得した痕跡はイベントログに記録されます。(詳しくは、JPCERT/CCが公開しているツール分析結果シートをご覧ください。[5] [6]

(3) レジストリハイブの取得

  • SYSTEM、SAM、SECURITYのレジストリハイブを取得し、SAMデータベースから認証情報を取得しようとします。

EDR製品によっては、これらのアクティビティを検知できる可能性があります。

横展開(Lateral Movement)

攻撃者は、Windowsネットワークの管理者ユーザーを使って、多数のクライアントおよびサーバーにアクセスします。特にファイルサーバーやAD、ウイルス対策ソフトの管理サーバーなど権限の高いユーザーで管理しているサーバーには注意が必要です。攻撃者が、他のシステムに横展開する際はSMB経由でマルウェアをコピーし、タスク登録(schtasksコマンド)することでマルウェアに感染させます。
このアクティビティは、Windowsイベントログで記録・監視することが可能です。タスクスケジューラの登録はイベントログ(セキュリティ)のイベントID 4698で記録されます。さらに、監査イベント「詳細なファイル共有の監査」を有効にしていれば、SMB経由でマルウェアをコピーしたことをイベントログ(セキュリティ)のイベントID 5145で記録できます(詳しい設定方法については、Appendix Dをご覧ください)。以下は、攻撃者によってファイルがコピーされた際のイベントログ(イベントID 5145)の例です。

クライアントに必要なアクセスを付与できるかどうかについて、ネットワーク共有オブジェクトがチェックされました。

サブジェクト:
    セキュリティ ID:  [ID]
    アカウント名:     [User name]
    アカウント ドメイン: [Domain name]
    ログオン ID:        [Logon ID]

ネットワーク情報:   
    オブジェクトの種類:  File
    送信元アドレス:        [IP address]
    ソース ポート:        [Port]

共有情報:
    共有名:            \\*\C$
    共有パス:       \??\C:\
    相対ターゲット名:   WINDOWS\SYSTEM32\UIANIMATION.XML

アクセス要求情報:
    アクセス マスク:   0x120089
    アクセス:       READ_CONTROL
                SYNCHRONIZE
                ReadData (または ListDirectory)
                ReadEA
                ReadAttributes

探索コマンド

攻撃者は侵入後、Windowsの標準コマンドを使用して内部探索を行っていました。以下は攻撃者が実行したコマンドの例です。一般ユーザーが使用しないコマンドも含まれているため、このようなコマンドの実行を監視することで攻撃者のアクティビティを検知できる可能性があります。

at
auditpol
bitsadmin
del
dir
dfsutil
dsregcmd
hostname
ipconfig
nbtstat
net
netstat
ntfrsutl
nslookup
mountvol
ping
powercfg
qprocess
quser
qwinsta
reg
sc
setspn
schtasks
systeminfo
tasklist
vdsldr
ver
vssadmin
wevtutil
whoami
wmic

情報窃取

攻撃者はNOOPDOORの他に、情報窃取のために以下のツールを使用していました。

  • WinRAR
  • SFTP

攻撃者は、システム内のファイルを一覧した後に、情報を持ち出そうとします。確認した事例では、ファイルサーバー上にあるファイルを列挙するためにdir /sコマンドを実行し、その出力結果をRARファイルとして圧縮していました。その他にも、攻撃者は以下のようなコマンドでファイル一覧を取得しており、OneDriveやTeams、IISのフォルダーなども調査していることが分かります。

cmd.exe /c dir c:\  
cmd.exe /c dir c:\users\
cmd.exe /c dir c:\users\\Desktop
cmd.exe /c dir c:\users\\Documents
cmd.exe /c dir "c:\users\\OneDrive"  /s /a
cmd.exe /c dir "c:\users\\OneDrive\Microsoft Teams\"
cmd.exe /c dir "c:\users\\OneDrive\Microsoft Teams チャット ファイル\[redacted].docx"
cmd.exe /c dir "c:\Program Files\"
cmd.exe /c dir "c:\Program Files (x86)"
cmd.exe /c dir c:\Intel
cmd.exe /c dir c:\inetpub
cmd.exe /c dir c:\inetpub\wwwroot

その他のツール

攻撃者は、LODEINFOおよびNOOPDOORのマルウェア以外にもツールを使用しています。複数の事案でHTTP/SOCKS5プロキシツールであるGO Simple Tunnel(GOST)が悪用されていることを確認しています。

GitHub:ginuerzh/gost
https://github.com/ginuerzh/gost

このツールがLinuxサーバー上でも動作していた事例を確認しています。その他にもLinuxサーバーでは、TinyShellベースのマルウェアが感染している場合があります。

防衛回避(Defense Evasion)

攻撃者は防衛回避としてさまざまな手法を用いていました。以下は確認した手法の例です。(各TTPsの詳細はAppendix Cをご確認ください。)

(1) MSBuildの悪用

  • 正規ツールであるMSBuildを用いて、不正なコードが含まれるXMLファイル(NOOPLDR)を実行

(2) レジストリに不正なデータを格納

  • 暗号化されたマルウェアのファイルを読み込んだ後、レジストリにデータを保存し、元のファイルは削除

(3) タイムスタンプ改ざん

  • 攻撃者が設置したマルウェアやツールの作成日時がいずれも侵害日時よりも古い日時に改ざん

(4) ファイアウォールのルール追加

  • Windows Firewallの除外リストに、NOOPDOORで使用する特定ポート宛ての通信を許可する設定を追加
  • イベントログ Firewall With Advanced Security/Firewall:イベントID 2004で記録される

(5) 登録したサービスの隠蔽

  • 登録したサービスが表示されないように、アクセス制御を設定

(6) Windowsイベントログの消去

  • システムログの削除
  • 各イベントログ:イベントID 1102で記録される

(7) Windows Defenderの停止

  • イベントログ Windows Defender/Operational:イベントID 5001で記録される

(8) ファイルの削除

  • 設置したマルウェアファイルを削除し、痕跡を消去

なお、攻撃者はシステム内の探索を一通り行った後、設置しているマルウェアの削除や自身のプロセスの停止を行っていました。これは組織内ネットワーク内での長期的な潜伏のため、痕跡の隠蔽を目的としていると思われます。

cmd.exe /c del c:\Windows\system32\UIAnimation.xml /f /q
taskkill.exe

おわりに

攻撃グループMirrorFaceは、長期にわたり国内の組織に対する攻撃を続けています。このような攻撃は今後も継続する可能性が高いことから、引き続き注意が必要です。通信先などのインディケータ情報は、Appendix Aをご確認ください。また、JPCERT/CCから公開している注意喚起もあわせてご覧ください。
先日JPCERT/CCから公表したOperation Blotless攻撃キャンペーンに関する注意喚起において、IoCベースのアプローチの限界について触れましたが、本件も同様にIoCベースでの早期検知は難しい可能性があります。このようなインシデントをセキュリティ製品・サービスで早期に検知していくためには、セキュリティベンダー間でマルウェアの検出に必要な情報やマルウェア以外のTTPに関する情報がある程度共有される必要性があると考えます。今後も、JPCERT/CCではセキュリティインシデントの報告をくださる組織やセキュリティベンダーと協力しながら、攻撃者のアクティビティを素早く情報共有および公表できるように取り組んでまいります。

謝辞

本レポートを公開するにあたり、情報提供にご協力いただきました複数の組織のみなさま、セキュリティベンダーのみなさまに感謝申し上げます。

レポート作成協力セキュリティベンダー
  • 伊藤忠サイバー&インテリジェンス株式会社
  • 株式会社マクニカ
  • セキュアワークス株式会社

また、下記のセキュリティベンダーから公開されているレポートを参考にさせていただきました。

  • 株式会社ラック
  • トレンドマイクロ株式会社

インシデントレスポンスグループ 増渕 維摩、喜野 孝太、朝長 秀誠

参考情報

[1] JSAC2024:Spot the Difference: An Analysis of the New LODEINFO Campaign by Earth Kasha
https://jsac.jpcert.or.jp/archive/2024/pdf/JSAC2024_2_7_hara_shoji_higashi_vickie-su_nick-dai_en.pdf

[2] ITOCHU Cyber & Intelligence Inc.:分析官と攻撃者の解析回避を巡る終わりなき戦い: LODEINFO v0.6.6 - v0.7.3 の解析から
https://blog.itochuci.co.jp/entry/2024/01/24/134047

[3] GitHub:D-810
https://github.com/joydo/d810

[4] JSAC2024:Unmasking HiddenFace: MirrorFace’s most complex backdoor yet
https://jsac.jpcert.or.jp/archive/2024/pdf/JSAC2024_2_8_Breitenbacher_en.pdf

[5] JPCERT/CC:ツール分析結果シート ntdsutil
https://jpcertcc.github.io/ToolAnalysisResultSheet_jp/details/ntdsutil.htm

[6] JPCERT/CC:ツール分析結果シート vssadmin
https://jpcertcc.github.io/ToolAnalysisResultSheet_jp/details/vssadmin.htm

Appendix A:通信先

  • 45.66.217.106
  • 89.233.109.69
  • 45.77.12.212
  • 108.160.130.45
  • 207.148.97.235
  • 95.85.91.15
  • 64.176.214.51
  • 168.100.8.103
  • 45.76.222.130
  • 45.77.183.161
  • 207.148.90.45
  • 207.148.103.42
  • 2a12:a300:3600::31b5:2e02
  • 2001:19f0:7001:2ae2:5400:4ff:fe0a:5566
  • 2400:8902::f03c:93ff:fe8a:5327
  • 2a12:a300:3700::5d9f:b451

Appendix B:マルウェアのハッシュ値

NOOPLDR Type1

  • 93af6afb47f4c42bc0da3eedc6ecb9054134f4a47ef0add0d285404984011072
  • bcd34d436cbac235b56ee5b7273baed62bf385ee13721c7fdcfc00af9ed63997
  • 43349c97b59d8ba8e1147f911797220b1b7b87609fe4aaa7f1dbacc2c27b361d
  • 4f932d6e21fdd0072aba61203c7319693e490adbd9e93a49b0fe870d4d0aed71
  • 0d59734bdb0e6f4fe6a44312a2d55145e98b00f75a148394b2e4b86436c32f4c
  • 9590646b32fec3aafd6c648f69ca9857fb4be2adfabf3bcaf321c8cd25ba7b83
  • 572f6b98cc133b2d0c8a4fd8ff9d14ae36cdaa119086a5d56079354e49d2a7ce

NOOPLDR Type2

  • 7a7e7e0d817042e54129697947dfb423b607692f4457163b5c62ffea69a8108d
  • 5e7cd0461817b390cf05a7c874e017e9f44eef41e053da99b479a4dfa3a04512
  • b07c7dfb3617cd40edc1ab309a68489a3aa4aa1e8fd486d047c155c952dc509e

Appendix C:MITRE ATT&CK

表 C-1:攻撃グループMirrorFaceのATT&CKマッピング
手法 ID 名前 説明
Initial Access T1133 External Remote Services VPN機器の脆弱性を悪用して侵入
Execution T1053.005 Scheduled Task/Job: Scheduled Task スケジュールタスク経由でNOOPLDRを実行
Persistence T1053.005 Scheduled Task/Job: Scheduled Task スケジュールタスクを設定して自動起動
T1543.003 Create or Modify System Process: Windows Service サービス登録して自動起動
Privilege Escalation T1134.002 Access Token Manipulation: Create Process with Token アクセストークンを操作してプロセス生成
Defense Evasion T1055 Process Injection C:\windows\system32配下にある正規のEXEファイルを使用し、復号したNOOPDOORをプロセスインジェクションして実行
T1070.001 Clear Windows Event Logs システムログの消去
T1070.004 File Deletion 設置したマルウェア・ツール等の削除
T1070.006 Timestomp 設置したファイルの作成日時を改ざん
T1112 Modify Registry レジストリにNOOPDOORを格納
T1127.001 Trusted Developer Utilities Proxy Execution: MSBuild 正規のMSBuild.exeを用いて不正なXMLファイルを実行
T1140 Deobfuscate/Decode Files or Information NOOPDOORを復号し、インジェクション先のプロセス内で実行
T1562.001 Disable or Modify Tools Windows Defenderの停止
T1562.004 Disable or Modify System Firewall NOOPDOORで使用するポート宛ての通信を許可するルールを追加
T1564 Hide Artifacts NOOPDOORを自動実行するために登録したサービスが表示されないように、アクセス制御を設定
Credential Access T1003 OS Credential Dumping lsass、ntds.ditから認証情報をダンプ
Discovery T1087 Account Discovery アカウント情報を収集
T1083 File and Directory Discovery ファイル情報を収集
Lateral Movement T1021.002 SMB/Windows Admin Shares SMB経由で他のシステムにマルウェアを設置
Collection T1560.001 Archive Collected Data: Archive via Utility WinRARを用いてデータを圧縮
T1039 Data from Network Shared Drive Network Shared Driveに保存されているデータの収集
Command and Control T1568.002 Dynamic Resolution: Domain Generation Algorithms DGAを用いて通信先を変更

Appendix D:監査イベント「詳細なファイル共有の監査」の有効化方法

Windows OSの監査設定は、グループ ポリシー エディター(gpedit.msc)から設定可能です。図5のとおり、[コンピューターの構成] -> [Windowsの設定] -> [セキュリティの設定] -> [監査ポリシーの詳細な構成] -> [オブジェクトアクセス] -> [詳細なファイル共有の監査] から有効にします。

グループ ポリシー エディターの設定画面
図5:グループ ポリシー エディターの設定画面

≪ 前へ
トップに戻る
次へ ≫