今日表示しない

トップへ戻る

トップへ戻る

国内IPから流布されたPureCrypter適用Formbookペイロードの分析
国内IPから流布されたPureCrypter適用Formbookペイロードの分析

脅威インテリジェンス

脅威インテリジェンス

脅威インテリジェンス

IPPureCrypterFormbook

IPPureCrypterFormbook

IPPureCrypterFormbook

エンキホワイトハット

エンキホワイトハット

コンテンツ

コンテンツ

コンテンツ

概要

  • フィッシングサイトおよびマルウェアの配布に悪用された韓国のIPを特定した。

  • 攻撃者はPureCrypterでパッキングされたFormbookマルウェアを使用した。

  • アンチデバッグや複数段階のコードインジェクションなど、多様な手法を用いて分析の難易度を上げ、悪意ある行為を隠蔽する。

  • 攻撃に使用されたC&Cサーバーと、他のKimsuky攻撃インフラとの間の類似性が発見された。

1. 概要

2025년 5월경 国内のIP 158.247.250[.]251に関連する多数のRAR、EXEファイルが発見された。当該IPは、過去のDNSレコードにおいてNAVER関連のフィッシングインフラと疑われるドメインが確認されており、VirusTotalにNAVERログイン関連のURLクエリレコードが残っている。

158.247.250[.]251의 URL 질의 기록

caption - 158.247.250[.]251のURLクエリレコード

その中で、関連する電子メールファイル、および当該電子メールの添付ファイルであるRAR、EXEファイルは韓国国内で報告されており、電子メールを受信したメールアカウントもまた韓国のエネルギー企業のドメインである。IPに関連するマルウェアは、韓国のほかにも様々な国にそれぞれ異なるファイル名で流布された。流布されたファイルは、分析の結果、PureCrypterでパッキングされたFormbookマルウェアであることが確認された。

2. マルウェア解析

공격 개요도

caption - 攻撃概要図

2.1. 初期アクセス

初期アクセス時には outlook フィッシングメールを送信した。メール送信先ドメインは国内のエネルギー企業のドメインであることが確認された。メールには航空貨物運送状を装った EXE ファイルが RAR 圧縮されて添付されており、圧縮パスワードは設定されていない。

피해자에게 전달된 피싱 이메일

caption - 被害者に送信されたフィッシングメール

メール送信者は noreplychleeportchlee@dhl.com である。ドイツに所在する運送会社のドメインを詐称したものとみられ、国際運送会社の運送状形式でフィッシングメールを送信する戦略は、過去から攻撃者が初期侵入の手口として頻繁に利用してきた。

2.2. PureCrypter

メール添付ファイルの圧縮を解凍すると、.NET 実行ファイルが出現する。当該 EXE ファイルは、商用の .NET ローダーである PureCrypter の第1ステージであることが確認された。

商用の .NET ローダーである PureCrypter は2021年から販売されており、数多くのマルウェアの流布に使用されてきた。攻撃者は PureCrypter を使用して、永続性の確保方式やインジェクション方法およびターゲット、セキュリティアルゴリズムの回避技法など、さまざまな攻撃設定をカスタムすることができる。攻撃者が設定したデータは Newtonsoft.json フレームワークを介してシリアル化された後、リソース領域に保存され、動作時にこれをデシリアライズして使用する。

アセンブリ名は Utdmecvq.exe であり、内部ではオープンソースである MonoTorrent 関連のクラスと、実際の行為を遂行する RemoteExecuterApp クラスが確認される。RemoteExecuterApp クラスにおいてのみメインロジックが実行され、エントリーポイントも RemoteExecuterApp クラスの内部に存在する。

Utdmecvq.exe 내부 클래스

caption - Utdmecvq.exe 内部クラス

マルウェアはまず最初に User-Agent を設定し、C&C サーバーにダウンロード要求を送信する。これにより、マルウェアの C&C サーバーに対するダウンロード要求を、一般的なブラウザから発生した要求に偽装する。

ダウンロード要求を送信する URL と、設定される User-Agent は以下の通りである。

  • URL: http://158.247.250[.]251/Gmfbssvfg.vdf

  • User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0

C&C 서버에서 암호화된 파일 다운로드

caption - C&C サーバーからの暗号化されたファイルのダウンロード

ダウンロードに成功すると、ダウンロードしたファイルを Base64 でエンコードされた AES key と IV 値で復号した後、メモリにロードする。その後、Ts8mNZe9r3J0nu8Oa0.e4XQsmqqJcMfslpD8o クラスの pY8vRcOLI メソッドを Invoke する。

  • base64 エンコードされた key : eq78+DV08bw6vTK7GtbEEcXfM/7YWzVL50qlG2HSJkY=

  • base64 エンコードされた IV : LqF17M9RPpHJCRbrkD6msw==

복호화 및 Invoke 로직

caption - 復号および Invoke ロジック

ダウンロード後に復号されたファイルも .NET アセンブリファイルであり、難読化ツールである .NET Reactor で難読化されている。

caption - 復号された .NET ファイル情報

アセンブリ情報から Newtonsoft.Json フレームワークの情報を確認することができ、これによりマルウェアが PureCrypter を利用していることが分かる。

복호화된 .NET 파일 어셈블리 정보

caption - 復号された .NET ファイルのアセンブリ情報

リソースデータの復号

マルウェアは実行後、まず最初に暗号化されたリソース領域のデータを取得して復号プロセスを経た後、ハッシュテーブルの形式で保存する。暗号化方式は DES, AES, TDES, Rijndael, RC2, カスタムブロック暗号の中から選択できる。分析された事例の場合、AES 方式を使用している。

  • AES key(16進数形式): A872738399912091389AE9720D5E068A0EF3B7D4C42B1FF24EA864F6C85683E9

  • AES IV(16進数形式): F96CF8CAFBAF112548F6F122D9270CCA

문자열 테이블 구축 로직

caption - 文字列テーブル作成ロジック

復号されたデータのテーブルにはマルウェアの動作に使用される各種文字列が含まれており、その後ハッシュテーブルに key 値でアクセスして文字列を取得する。リソース名文字列を抽出した後に、Dnspy の watch 機能を利用して AppDomain.CurrentDomain.GetData メソッドを呼び出すと、復号完了した Hashtable を確認できる。

caption - 復号された文字列テーブル

設定データのシリアル化

PureCrypter の適用時、インジェクション方式およびターゲットプロセス、セキュリティ機能の回避有無など各種設定を行うことができる。設定データはシリアル化および AES 暗号化されてパッキングされたファイルのリソース領域に保存される。その後、ランタイム中にリソース領域の設定情報を動的にデシリアライズして使用する。

PureCrypter 설정 데이터 역직렬화 로직

caption - PureCrypter 設定データのデシリアライズロジック

設定データの構造

データインデックス作成は ProtoMember を基準に作成しており、「ペイロードインジェクションのための設定データ」、「検知回避のための設定データ」、「追加機能のための設定データ」が存在する。

1. ペイロードインジェクションに使用される設定データ

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | インジェクションするペイロードに、内部に保存された値を使用するか、ダウンロードするかを決定するフラグ ( Trueなら内部データをロード、Falseなら外部からダウンロード ) | true |
| 2 | インジェクションするペイロードまたはダウンロード url が保存されたバイト配列 | Formbook ペイロードバイト配列 |
| 3 | マルウェア実行プロセスが 64bit であるかを示すフラグ | false |
| 4 | ペイロードをインジェクションする方式を決定する Enum ( 0: .NET アセンブリロードおよび Invoke, 1: プロセス中空化(Process Hollowing), 2: Reflective DLL インジェクション ) | 1 |
| 5 | 実行またはペイロードをインジェクションするターゲットプロセス名の文字列 | "Itself" |
| 6 | インジェクションしたペイロードの実行時に渡されるコマンドライン引数の文字列 | "" |
| 7 | 親プロセスとして使用するプロセスの名前文字列 | "explorer" |
| 8 | 使用されない値 | null |
| 9 | プロセス生成時のウィンドウの形状を決定する DWORD  | 1 (通常のサイズ)

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | インジェクションするペイロードに、内部に保存された値を使用するか、ダウンロードするかを決定するフラグ ( Trueなら内部データをロード、Falseなら外部からダウンロード ) | true |
| 2 | インジェクションするペイロードまたはダウンロード url が保存されたバイト配列 | Formbook ペイロードバイト配列 |
| 3 | マルウェア実行プロセスが 64bit であるかを示すフラグ | false |
| 4 | ペイロードをインジェクションする方式を決定する Enum ( 0: .NET アセンブリロードおよび Invoke, 1: プロセス中空化(Process Hollowing), 2: Reflective DLL インジェクション ) | 1 |
| 5 | 実行またはペイロードをインジェクションするターゲットプロセス名の文字列 | "Itself" |
| 6 | インジェクションしたペイロードの実行時に渡されるコマンドライン引数の文字列 | "" |
| 7 | 親プロセスとして使用するプロセスの名前文字列 | "explorer" |
| 8 | 使用されない値 | null |
| 9 | プロセス生成時のウィンドウの形状を決定する DWORD  | 1 (通常のサイズ)

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | インジェクションするペイロードに、内部に保存された値を使用するか、ダウンロードするかを決定するフラグ ( Trueなら内部データをロード、Falseなら外部からダウンロード ) | true |
| 2 | インジェクションするペイロードまたはダウンロード url が保存されたバイト配列 | Formbook ペイロードバイト配列 |
| 3 | マルウェア実行プロセスが 64bit であるかを示すフラグ | false |
| 4 | ペイロードをインジェクションする方式を決定する Enum ( 0: .NET アセンブリロードおよび Invoke, 1: プロセス中空化(Process Hollowing), 2: Reflective DLL インジェクション ) | 1 |
| 5 | 実行またはペイロードをインジェクションするターゲットプロセス名の文字列 | "Itself" |
| 6 | インジェクションしたペイロードの実行時に渡されるコマンドライン引数の文字列 | "" |
| 7 | 親プロセスとして使用するプロセスの名前文字列 | "explorer" |
| 8 | 使用されない値 | null |
| 9 | プロセス生成時のウィンドウの形状を決定する DWORD  | 1 (通常のサイズ)

2. 検知回避のための設定データ

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | マルウェアの実行中に SleepEx(999) 関数を何回実行するかを決定する変数 | 0x15 |
| 2 | ミューテックス設定を進めるかどうかを決定するフラグ | false |
| 3 | ミューテックス設定時に使用される文字列 | "Xilnulmx" |
| 4 | 現在実行中のプロセスのファイルおよび %Temp% にコピーされたファイルを、Windows Defender のスキャン対象から除外するかどうかを決定するフラグ | false |
| 5 | システムおよびプロセス情報を利用した、仮想マシンおよびサンドボックス検知ロジックを実行するかどうかを決定するフラグ | false |
| 6 | プロセスハンドルの複製を実行するかどうかを決定するフラグ | false |
| 7 | ip release または renew コマンドを実行するかどうかを決定するフラグ | false |
| 8 | 追加의 PowerShell スクリプト文字列 | null |
| 9 | ライブラリフック検知を実行するかどうかを決定するフラグ | false |
| 10 | Amsi 回避を実行するかどうかを決定するフラグ | false |
| 11 | ETW ベースの検知回避を実行するかどうかを決定するフラグ | false |
| 12 | 使用されない値 | false |
| 13 | 自己削除を実行するかどうかを決定するフラグ | false |
| 16 | 追加の PowerShell スクリプトを管理者権限として実行するかどうかを決定するフラグ | false

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | マルウェアの実行中に SleepEx(999) 関数を何回実行するかを決定する変数 | 0x15 |
| 2 | ミューテックス設定を進めるかどうかを決定するフラグ | false |
| 3 | ミューテックス設定時に使用される文字列 | "Xilnulmx" |
| 4 | 現在実行中のプロセスのファイルおよび %Temp% にコピーされたファイルを、Windows Defender のスキャン対象から除外するかどうかを決定するフラグ | false |
| 5 | システムおよびプロセス情報を利用した、仮想マシンおよびサンドボックス検知ロジックを実行するかどうかを決定するフラグ | false |
| 6 | プロセスハンドルの複製を実行するかどうかを決定するフラグ | false |
| 7 | ip release または renew コマンドを実行するかどうかを決定するフラグ | false |
| 8 | 追加의 PowerShell スクリプト文字列 | null |
| 9 | ライブラリフック検知を実行するかどうかを決定するフラグ | false |
| 10 | Amsi 回避を実行するかどうかを決定するフラグ | false |
| 11 | ETW ベースの検知回避を実行するかどうかを決定するフラグ | false |
| 12 | 使用されない値 | false |
| 13 | 自己削除を実行するかどうかを決定するフラグ | false |
| 16 | 追加の PowerShell スクリプトを管理者権限として実行するかどうかを決定するフラグ | false

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | マルウェアの実行中に SleepEx(999) 関数を何回実行するかを決定する変数 | 0x15 |
| 2 | ミューテックス設定を進めるかどうかを決定するフラグ | false |
| 3 | ミューテックス設定時に使用される文字列 | "Xilnulmx" |
| 4 | 現在実行中のプロセスのファイルおよび %Temp% にコピーされたファイルを、Windows Defender のスキャン対象から除外するかどうかを決定するフラグ | false |
| 5 | システムおよびプロセス情報を利用した、仮想マシンおよびサンドボックス検知ロジックを実行するかどうかを決定するフラグ | false |
| 6 | プロセスハンドルの複製を実行するかどうかを決定するフラグ | false |
| 7 | ip release または renew コマンドを実行するかどうかを決定するフラグ | false |
| 8 | 追加의 PowerShell スクリプト文字列 | null |
| 9 | ライブラリフック検知を実行するかどうかを決定するフラグ | false |
| 10 | Amsi 回避を実行するかどうかを決定するフラグ | false |
| 11 | ETW ベースの検知回避を実行するかどうかを決定するフラグ | false |
| 12 | 使用されない値 | false |
| 13 | 自己削除を実行するかどうかを決定するフラグ | false |
| 16 | 追加の PowerShell スクリプトを管理者権限として実行するかどうかを決定するフラグ | false

3. 追加機能のための設定データ

3.1. 永続性確保の設定データ

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | 永続性の確保方式を決定する Enum ( 0: レジストリキーの登録、1: スタートアッププログラムの登録、2: タスクの登録) | 1 |
| 2 | 自己複製パスとして使用される文字列 | "%appdata%" |
| 3 | 自己複製ファイル名として使用される文字列 | "temp.exe" |
| 4 | 自己複製時にダミーバイトを追加するかどうかを決定するフラグ | false

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | 永続性の確保方式を決定する Enum ( 0: レジストリキーの登録、1: スタートアッププログラムの登録、2: タスクの登録) | 1 |
| 2 | 自己複製パスとして使用される文字列 | "%appdata%" |
| 3 | 自己複製ファイル名として使用される文字列 | "temp.exe" |
| 4 | 自己複製時にダミーバイトを追加するかどうかを決定するフラグ | false

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | 永続性の確保方式を決定する Enum ( 0: レジストリキーの登録、1: スタートアッププログラムの登録、2: タスクの登録) | 1 |
| 2 | 自己複製パスとして使用される文字列 | "%appdata%" |
| 3 | 自己複製ファイル名として使用される文字列 | "temp.exe" |
| 4 | 自己複製時にダミーバイトを追加するかどうかを決定するフラグ | false

3.2. MessageBox 出力の設定データ

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | MessageBox 出力時に警告または情報の表示を決定するフラグ | false |
| 2 | MessageBox に出力される文字列 | null

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | MessageBox 出力時に警告または情報の表示を決定するフラグ | false |
| 2 | MessageBox に出力される文字列 | null

| ProtoMember | Description | Info |
| --- | --- | --- |
| 1 | MessageBox 出力時に警告または情報の表示を決定するフラグ | false |
| 2 | MessageBox に出力される文字列 | null

3.3. ファイルドロップおよび実行の設定データ

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | ドロップおよび実行される実行ファイルのデータバイト配列 | null |
| 2 | ドロップおよび実行される実行ファイルの名前文字列 | null |
| 3 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false |
| 4 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | ドロップおよび実行される実行ファイルのデータバイト配列 | null |
| 2 | ドロップおよび実行される実行ファイルの名前文字列 | null |
| 3 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false |
| 4 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | ドロップおよび実行される実行ファイルのデータバイト配列 | null |
| 2 | ドロップおよび実行される実行ファイルの名前文字列 | null |
| 3 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false |
| 4 | ファイルドロップおよび実行を行うかどうかを決定するフラグ | false

3.4. GZIP 圧縮の設定データ

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | 追加でインジェクションされる GZIP 圧縮されたペイロード | null

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | 追加でインジェクションされる GZIP 圧縮されたペイロード | null

| ProtoMember | Description | Info (null) |
| --- | --- | --- |
| 1 | 追加でインジェクションされる GZIP 圧縮されたペイロード | null

詳細な動作

ミューテックスの生成

デシリアライズされた構造体のメンバーから特定のフラグを検査し、True の場合にはミューテックスを生成する。分析されたマルウェアはフラグが False に設定されている。ミューテックスの生成時には15秒間ミューテックスを確保するために待機し、ipconfig コマンドを実行して IP を更新する。ミューテックス名は以下の通りである。

  • Xilnulmx

뮤텍스 설정 로직

caption - ミューテックス設定ロジック

アンチデバッグ

以下の条件を確認し、該当する場合はプロセスを終了する。

  • CheckRemoteDebuggerPresent() メソッドによってデバッガが検知された場合

  • 現在実行中のプロセスに SbieDll.dll, cuckoomon.dll モジュールが含まれている場合

  • 実行環境のコア数が2個以下の場合

  • 現在のプロセスの親プロセス名に "cmd" 文字列が含まれている場合

  • BIOS Version および SerialNumber に "Microsoft", "VMWare", "Virtual" 文字列が含まれている場合

  • BIOS manufacturer および model に "Microsoft", "VMWare", "Virtual" 文字列が含まれている場合

  • モニターの解像度が低いか、32bit オペレーティングシステムである場合

  • ユーザー名が "john", "anna", "xxxxxxxx" である場合

IP Release

IPアドレスの release の有無を確認し、ipconfig コマンドを実行して IP アドレスの割り当てを解除する。

IP release 명령어 실행 로직

caption - IP release コマンドの実行ロジック

Amsi 回避

Amsi スキャンで使用される AmsiScanBuffer 関数のアドレスを取得した後、メモリ権限を変更する。その後、AmsiScanBuffer 関数が呼び出されたときに Windows OS のビット数に応じて特定 の値を返し、即座に終了するようにパッチを適用する。

AmsiScanBuffer 패치 로직

caption - AmsiScanBuffer パッチロジック

該当するメソッドでは、AmsiScanBuffer 文字列を取得するために文字列に含まれる "Janroe" を削除する。

Janroe 제거 로직

caption - Janroe 削除ロジック

가공 전 AmsiScanBuffer 문자열

caption - 加工前の AmsiScanBuffer 文字列

ETW ベースの検知回避

EtwEventWrite も上記の AmsiScanBuffer と同様の方法でパッチを適用する。AmsiScanBuffer のパッチロジックとは異なり、特定の文字列の削除は行わない。

EtwEventWrite 패치 로직

caption - EtwEventWrite パッチロジック

アンチライブラリフック

現在実行中のプロセスにロードされた ntdll.dll または kernel32.dll を、%System% ディレクトリのオリジナルファイルで上書きする。

안티 라이브러리 후킹을 위한 라이브러리 복원 로직

caption - アンチライブラリフックのためのライブラリ復元ロジック

Windows Defender のスキャン対象からの除外

現在実行中のプロセスのファイルパスが "%appdata%\temp.exe" であるか確認する。パスが異なる場合、次の PowerShell スクリプトを base64 エンコードした後、-enc オプションを付与して PowerShell で実行する。

Add-MpPreference -ExclusionPath {filepath};
Add-MpPreference -ExclusionProcess {filepath};
Add-MpPreference -ExclusionPath %appdata%\\temp.exe;
Add-MpPreference -ExclusionProcess %appdata%\\temp.exe;
Add-MpPreference -ExclusionPath {filepath};
Add-MpPreference -ExclusionProcess {filepath};
Add-MpPreference -ExclusionPath %appdata%\\temp.exe;
Add-MpPreference -ExclusionProcess %appdata%\\temp.exe;
Add-MpPreference -ExclusionPath {filepath};
Add-MpPreference -ExclusionProcess {filepath};
Add-MpPreference -ExclusionPath %appdata%\\temp.exe;
Add-MpPreference -ExclusionProcess %appdata%\\temp.exe;

実行されるスクリプトは、現在実行中のファイルと %appdata%\temp.exe ファイルを Windows Defender のスキャン除外プロセスとして追加する。

Windows Defender 검사 제외 로직

caption - Windows Defender のスキャン対象除外ロジック

PowerShell スクリプトの実行

構造体の特定のフィールドに保存された PowerShell スクリプトがある場合、特定のフラグに応じて、通常または管理者権限で PowerShell プロセスを実行して引数として渡す。

추가 Powershell 스크립트 실행 로직

caption - 追加の PowerShell スクリプト実行ロジック

ファイルの生成および実行

構造体に保存されたパスと名前のファイルが存在しないとき、構造体に保存されたデータを反転し、Gzip 解凍して該当パスに保存および実行する。

추가 실행파일 드롭 및 실행 로직

caption - 追加実行ファイルのドロップおよび実行ロジック

MessageBox の出力

現在実行中のプロセスが "%Appdata%\temp.exe" ではない、または %Windows% 配下のパスに存在しない場合、構造体内の特定の文字列を MessageBox で出力する。このとき、フィールド内の特定の定数が 0 の場合は警告アイコン、それ以外の場合は情報アイコンを使用して出力する。

MessageBox 출력 로직

caption - MessageBox 出力ロジック

永続性の確保および自己複製

現在実行中のプロセスの実行ファイルが “%AppData%\temp.exe” ではない、または “%Windows%” 配下のパスに存在しない場合、“%AppData%\temp.exe” に自己複製する。このとき、“%AppData%” フォルダが存在しない場合はフォルダを作成する。自己複製のパスおよびファイル名は攻撃者によって設定可能である。

자가 복제 로직

caption - 自己複製ロジック

その後、構造体に保存された値に応じて異なる動作を行う。

  • 0 の場合 : "%Appdata%\temp.exe" パスを "HKCR\Software\Microsoft\Windows\CurrentVersion\Run" キーとして登録し、永続性を確保する。

    Software\Microsoft\Windows\CurrentVersion\Run 레지스트리 키 등록 로직

    caption - Software\Microsoft\Windows\CurrentVersion\Run レジストリキー登録ロジック

  • 1 の場合 : スタートアッププログラムディレクトリに "%Appdata%\temp.exe" を実行する temp.vbs ファイルを生成し、スタートアッププログラムとして登録する。

    시작 프로그램 등록 로직

    caption - スタートアッププログラム登録ロジック

  • 2 の場合 : "%Appdata%\temp.exe" を2~4分間のランダムな周期で実行するタスクを生成する。タスク名には、自己複製結果のファイル名がそのまま使用される。

    작업 등록 로직

    caption - タスク登録ロジック

永続性確保のタスクを完了すると、現在実行中のプロセスの実行ファイルを "%Appdata%\temp.exe" ファイルにコピーする。

プロセスハンドルの複製

マルwareのプロセスハンドルを explorer.exe に複製することにより、マルウェアが使用中と表示され、セキュリティプログラムやユーザーなどがファイルの削除や修正を行えないようにする。

프로세스 핸들 복제 로직

caption - プロセスハンドル複製ロジック

ペイロードインジェクション

まず、現在プロセスが管理者権限で実行中の場合、DebugMode に侵入した後に動作を実行する。ペイロードをインジェクションする際、特定のフィールドフラグに基づき、内部に保存されたデータを直接 AES 復号および Gzip 解凍するか、または Url を利用して外部からダウンロードする。このとき使用される AES key と IV は、最初のリソース復号時に使用された値と同様である。分析されたマルウェアは、暗号化されたペイロードをファイル内部に含んでいる。

추가 페이로드 획득 로직

caption - 追加ペイロード取得ロジック

ペイロードインジェクションの際、構造体内の特定の値によって異なる方式を使用する。

  • 0 の場合 : アセンブリデータをメモリにロードした後にメソッドを呼び出す。

    .NET 어셈블리 로드 및 실행 로직

    caption - .NET アセンブリロードおよび実行ロジック

  • 1 の場合 : プロセス中空化(Process Hollowing)を通じてコードを注入した後に実行する。このとき、渡された引数に応じて通常のプロセス中空化、または親プロセスなりすまし(Spoofing)を経たプロセス中空化を実行する。

    일반 프로세스 할로잉 로직

    caption - 通常のプロセス中空化ロジック

    부모 프로세스 스푸핑을 진행하는 프로세스 할로잉 로직

    caption - 親プロセスなりすましを進行するプロセス中空化ロジック

  • 2 の場合 : ネイティブシェルコードをメモリに割り当てて実行する。このとき、渡された引数に応じて、現在のプロセスまたは他のプロセスにシェルコードをロードした後に実行する。

    현재 프로세스 쉘코드 삽입 로직

    caption - 現在のプロセスへのシェルコード挿入ロジック

    원격 프로세스 쉘코드 삽입 로직

    caption - リモートプロセスへのシェルコード挿入ロジック

分析されたマルウェアは explorer.exe が親プロセスになるように偽装した後に、自分自身に対してプロセス中空化を実行する。

圧縮ペイロードインジェクション

構造体内部の特定のデータを反転させ、Gzip 解凍した後に、上記のシェルコードインジェクション方式を使用して特定のプロセスにインジェクションする。

Gzip 압축된 쉘코드 인젝션 로직

caption - Gzip 圧縮されたシェルコードインジェクションロジック

自己削除およびプロセス終了

PowerShell スクリプトを実行してマルウェアを自己削除した後、実行中の現在のプロセスを強制終了する。実行される PowerShell スクリプトは以下の通りである。

  • Start-Sleep -Seconds 5; Remove-Item -Path '{filepath}' -Force

자가 삭제 및 프로세스 종료 로직

caption - 自己削除およびプロセス終了ロジック

2.3. Formbook

暗号化されて保存された最終的なペイロードは PE ファイルであり、分析の結果 Formbook マルウェアであることが確認された。

PureCrypter로 패킹된 최종 페이로드 정보

caption - PureCrypter でパッキングされた最終ペイロードの情報

分析の結果、マルウェアの動作およびコード領域の復号プロセスは、以下の記事の Formbook マルウェアと類似している。

  • https://www.fortinet.com/blog/threat-research/deep-analysis-formbook-new-variant-delivered-phishing-campaign-part-ii

このタイプの Formbook は、低レベルライブラリを動的にロードした後に使用して API 呼び出しのプロセスを隠蔽する。このために ntdll.dll ファイルハンドルを ZwCreateFile で取得し、メモリ内に NtReadFile で保存した後、NtAllocateVirtualMemory で ERW 権限を付与する。その後、ntdll.dll API を呼び出すたびに該当する領域のコードを参照する。

메모리에 별도로 적재된 ntdll.dll

caption - メモリに別途ロードされた ntdll.dll

ntdll.dll API のアドレスを動的に取得して呼び出すコマンドに渡されたレジスタ値と引数を分析することで、詳細な動作を確認できる。


マルウェアは全体的に複雑な暗号化ロジックによって暗号化されており、マルウェアの実行と同時にメインロジックの復号およびジャンプが行われる。このように第1次復号が完了した後も、マルウェアの主要な関数は依然として暗号化されたままである。マルウェアはそれらの関数を使用する直前に復号し、関数が終了した後に再び暗号化する方法で動作を実行する。

함수 복호화 및 암호화 루틴

caption - 関数の復号および暗号化ルーチン

また、悪意のある行為を実行する前にデバッグ環境を検知するロジックが存在する。デバッグ検知プロセスでロードするシステム情報が、マルウェアの行為実行にも使用されるため、動的分析時にはデータロード関数のリターンポイントまで正常に進行させなければならない。アンチデバッグで検知する要素は、特定のプロセス名、親ディレクトリ名、Windows アカウント名、カーネル情報クラスなどである。

환경 정보 저장 및 디버깅 탐지 로직

caption - 環境情報の保存およびデバッグ検知ロジック

検知ロジックが終了すると、Formbook ペイロードをインジェクションするための準備を開始する。このプロセスにおいて、32bit コードから 64bit コードへと変換する Heaven’s Gate 技法が使用される。保存された 64bit コードは、実行時点によって異なる動作を行い、現在のプロセスでは他のプロセスに同一の 64bit コードをコピーした後に実行する役割を担う。

64bit 코드로 점프하는 명령어

caption - 64bit コードへジャンプするコマンド

실행되는 64bit 의사 코드

caption - 実行される 64bit 擬似コード

他のプロセスにコピーされた 64bit シェルコードは、現在稼働中、すなわちコピーの対象となったプロセスの子プロセスとして runonce.exe プロセスを生成する。作成された runonce.exe プロセスと、既存の親プロセスである OneDrive.exe との間に共有メモリセクションを作成した後に、コピーされた 64bit シェルコードはタスクを終了する。

64bit 쉘코드가 생성한 자식 프로세스

caption - 64bit シェルコードが生成した子プロセス

既存のローダープロセスは、共有メモリセクションを介して runonce.exe プロセスに Formbook ペイロードをコピーする。その後、ntdll.dll のスレッド関連の API を利用して RtlUserThreadStart の rax レジスタを操作した後にスレッドを再開し、runonce.exe プロセスでインジェクションされたペイロードが実行されるようにする。

Formbook 情報収集およびリモートコマンド実行モジュール

runonce.exe プロセスにインジェクションされたシェルコードは、まずコード全体を復号する。復号の後にはアンチデバッグロジックを実行し、主要な動作関数を呼び出す。

정보 수집 모듈의 디버깅 탐지 로직

caption - 情報収集モジュールのデバッグ検知ロジック

まず、レジストリキーや advapi32.dll API を利用して基本的なシステム情報およびユーザー情報を収集する。収集後にマージされる情報は以下の通りであり、各情報は ":" 文字で区切られる。

  • Windows 情報

  • コンピュータ名およびユーザー名を base64 エンコードした値

초기에 수집 되어 메모리에 저장되는 시스템 및 사용자 정보

caption - 初期に収集されメモリに保存されるシステムおよびユーザー情報

収集された情報は、以下のプロセスを経て暗号化される。

  1. RC4 暗号化

  2. Base64 エンコード

  3. 接頭辞 "PKT2:" を付与した後に RC4 暗号化

上記のプロセスで使用される RC4 key は以下の通りである。

  • 第1次 RC4 key hex: 1DC0668A628EA91766A75C87319A23B24939C07B

  • 第2次 RC4 key hex: 3A665CF99A9B7A79F4FECB77BBE2BF5FF79687E3

初期情報の収集後は、64bit コードをもう一度呼び出して explorer.exe の配下にある 64bit プロセスのいずれかに同じ Formbook 通信モジュールペイロードを挿入する。このとき挿入されたペイロードは、その後に C&C サーバーとの通信に使用される。

インジェクションおよび rip 操作の後に再び 32bit コードへ戻ると、User Request を待機中の通信モジュールスレッドに PostThreadMessageW で WM_COMMAND メッセージを送信して実行を再開する。追加でインジェクションされたペイロードは、既存のマルウェアエントリーとは異なるポイントで動作し、通信モジュールの役割を果たす。

インジェクション後は、情報収集、コマンド受信および実行ロジックを繰り返す。情報収集のプロセスでは、各種ブラウザやメール情報を収集する。

  • Windows 情報

  • メールプロファイル ( Outlook, Thunderbird, Foxmail )

  • ブラウザ ( Internet Explorer, Firefox, Chrome など ) 個人情報

  • Windows Vault 資格情報

민감 정보 수집 로직

caption - 機密情報収集ロジック

Chrome ブラウザの Login Data の場合、%Temp%\IE13ci5 ファイルにコピーされた後に sql クエリでデータを抽出する。

Login Data 복사 로직

caption - Login Data コピーロジック

収集された各種データは、64bit プロセスの通信モジュールとの共有メモリに保存され、通信モジュールが C&C サーバーと通信する際に送信される。

また、Formbook マルウェアは C&C サーバーからデータを受信してリモートコマンドを実行する。通信モジュールが受信して共有メモリに保存したデータの先頭に "XLNG" 文字列が存在する場合、すぐ次のバイトを opcode として使用する。

패킷 검사 로직

caption - パケット検査ロジック

コマンド識別子は "1"~"9" で構成されており、それぞれの動作は以下の通りである。

| Command | Behavior |
| --- | --- |
| "1" | exe, dll, ps1 拡張子を持つファイルをダウンロードして `%Temp%` ディレクトリに保存した後に実行 |
| "2" | PE ファイルをダウンロードおよびヘッダー検証した後、`%Temp%` ディレクトリに保存した後に実行 |
| "3" | 自己削除および explorer.exe の再起動 |
| "4" | exe または ps1 ファイルを `%Temp%` ディレクトリにダウンロードして実行 |
| "5" | ブラウザデータ (クッキー、ログイン情報、プロファイル、セッション) の収集 |
| "6" | Windows、オペレーティングシステム、ユーザー名情報の収集 |
| "7" | システムの再起動 |
| "8" | システムのシャットダウン |
| "9" | 何の動作も行わない

| Command | Behavior |
| --- | --- |
| "1" | exe, dll, ps1 拡張子を持つファイルをダウンロードして `%Temp%` ディレクトリに保存した後に実行 |
| "2" | PE ファイルをダウンロードおよびヘッダー検証した後、`%Temp%` ディレクトリに保存した後に実行 |
| "3" | 自己削除および explorer.exe の再起動 |
| "4" | exe または ps1 ファイルを `%Temp%` ディレクトリにダウンロードして実行 |
| "5" | ブラウザデータ (クッキー、ログイン情報、プロファイル、セッション) の収集 |
| "6" | Windows、オペレーティングシステム、ユーザー名情報の収集 |
| "7" | システムの再起動 |
| "8" | システムのシャットダウン |
| "9" | 何の動作も行わない

| Command | Behavior |
| --- | --- |
| "1" | exe, dll, ps1 拡張子を持つファイルをダウンロードして `%Temp%` ディレクトリに保存した後に実行 |
| "2" | PE ファイルをダウンロードおよびヘッダー検証した後、`%Temp%` ディレクトリに保存した後に実行 |
| "3" | 自己削除および explorer.exe の再起動 |
| "4" | exe または ps1 ファイルを `%Temp%` ディレクトリにダウンロードして実行 |
| "5" | ブラウザデータ (クッキー、ログイン情報、プロファイル、セッション) の収集 |
| "6" | Windows、オペレーティングシステム、ユーザー名情報の収集 |
| "7" | システムの再起動 |
| "8" | システムのシャットダウン |
| "9" | 何の動作も行わない

Formbook 通信モジュール

64bit プロセスにインジェクションされたペイロードは C&C サーバーと通信を開始する。Formbook マルウェアは、実際の C&C サーバーのアドレスだけでなく、数多くの偽のダミー C&C アドレスを保存して全てのアドレスに要求を送信し、実際の C&C アドレスの特定を困難にさせている。

복호화 후 힙 메모리에 저장된 도메인 정보

caption - 復号後にヒープメモリに保存されたドメイン情報

マルウェアは暗号化された C&C サーバー URL を動的に復号して要求を送信する。流出するデータは複雑なカスタム暗号化の後に base64 エンコードされてパケットに含まれる。収集された URL は、記事の付録 「Formbook URLs」 に添付した。

通信モジュールはこの他にも、GetClipboardData API でクリップボード情報を収集して共有メモリに保存する。クリップボードデータは runonce.exe で動作中の情報収集モジュールが共有メモリに記録した機密情報とともに、C&C サーバーへ送信される。

클립보드 데이터 수집을 위한 함수들

caption - クリップボードデータ収集のための関数群


3. 追加のマルウェアおよび関連性

3.1. 同じIPから流布されるマルウェア

PureCrypterでパッキングされており、同じIP(158.247.250[.]251)からダウンロードしたファイルを復号して実行する別のマルウェアを確保した。これらは初期侵入経路を特定できなかったが、大部分がRAR圧縮ファイルの形式で配信されていたことから、分析されたマルウェアと同様の手法でフィッシングメールを通じて流布されたものとみられる。

確保したマルウェアから確認した情報は以下の通りである。

| 어셈블리 이름 | MD5 | Base64 인코딩된 AES  | Base64 인코딩된 AES IV | User-Agent |
| --- | --- | --- | --- | --- |
| ljwflx.exe | 81bfe3b3204ede1fca418e44aa19b310 | KnJ27qGTjAZZNKQexmBuXSOnnFvFQv/BKoLXk48czKg= | +PNBK7GBbAf397zUxJVbQA== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80 |
| Kahogdwhj.exe | 52a321e48902b8fbd1e984d9bd15f278 | PDXdRECJmaHFmRrowwO11ODbcK9klmg78nXy4Dd9VuE= | 3Dma78UCdly9DQH6md97kw== | Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0 |
| Endolsydm.exe | 310ebb7ca19ff9b75d4054c340b0c82e | x1ehIEX7Pxv5/8qKPc91WFsl+5PCPtjdaxJZa0J05+c= | eCzZQvqLFuqZ5qiO471g2g== | Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Mobile Safari/537.36 |
| lkdsnivzaem.exe | ca9cb7bb06398670abc6d19186c336cd | auCoaTwzm/qB/9TAvmSm81zuddQ/sJbMELul5a5ti6s= | oH8nCT02nAmvySgN5wye6g== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80

| 어셈블리 이름 | MD5 | Base64 인코딩된 AES  | Base64 인코딩된 AES IV | User-Agent |
| --- | --- | --- | --- | --- |
| ljwflx.exe | 81bfe3b3204ede1fca418e44aa19b310 | KnJ27qGTjAZZNKQexmBuXSOnnFvFQv/BKoLXk48czKg= | +PNBK7GBbAf397zUxJVbQA== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80 |
| Kahogdwhj.exe | 52a321e48902b8fbd1e984d9bd15f278 | PDXdRECJmaHFmRrowwO11ODbcK9klmg78nXy4Dd9VuE= | 3Dma78UCdly9DQH6md97kw== | Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0 |
| Endolsydm.exe | 310ebb7ca19ff9b75d4054c340b0c82e | x1ehIEX7Pxv5/8qKPc91WFsl+5PCPtjdaxJZa0J05+c= | eCzZQvqLFuqZ5qiO471g2g== | Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Mobile Safari/537.36 |
| lkdsnivzaem.exe | ca9cb7bb06398670abc6d19186c336cd | auCoaTwzm/qB/9TAvmSm81zuddQ/sJbMELul5a5ti6s= | oH8nCT02nAmvySgN5wye6g== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80

| 어셈블리 이름 | MD5 | Base64 인코딩된 AES  | Base64 인코딩된 AES IV | User-Agent |
| --- | --- | --- | --- | --- |
| ljwflx.exe | 81bfe3b3204ede1fca418e44aa19b310 | KnJ27qGTjAZZNKQexmBuXSOnnFvFQv/BKoLXk48czKg= | +PNBK7GBbAf397zUxJVbQA== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80 |
| Kahogdwhj.exe | 52a321e48902b8fbd1e984d9bd15f278 | PDXdRECJmaHFmRrowwO11ODbcK9klmg78nXy4Dd9VuE= | 3Dma78UCdly9DQH6md97kw== | Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0 |
| Endolsydm.exe | 310ebb7ca19ff9b75d4054c340b0c82e | x1ehIEX7Pxv5/8qKPc91WFsl+5PCPtjdaxJZa0J05+c= | eCzZQvqLFuqZ5qiO471g2g== | Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Mobile Safari/537.36 |
| lkdsnivzaem.exe | ca9cb7bb06398670abc6d19186c336cd | auCoaTwzm/qB/9TAvmSm81zuddQ/sJbMELul5a5ti6s= | oH8nCT02nAmvySgN5wye6g== | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80

C&Cサーバーである158.247.250.251でディレクトリリスティングを通じてファイルを確認することができ、6月3日までもファイルが修正されて攻撃が行われていた。分析当時ダウンロード可能だったファイルは、分析されたファイルを含めて計4個であり、このうち1つのファイルが追加で復号可能であった。

접속된 C&C 서버의 루트 디렉토리

caption - 接続されたC&Cサーバーのルートディレクトリ

追加で確保した2次PureCrypterローダーは、分析されたマルウェアと同様に.NET Reactorで難読化されている。

Csxkd.dll 내부 클래스

caption - Csxkd.dll 内部クラス

同様の方法で文字列ハッシュテーブルと逆シリアル化されたデータを確認できる。シリアル化されたデータおよび後続のマルウェアのAES復号時に使用されるkeyとIVは以下の通りである。

  • base64エンコードされたkey : "aOmN7DquQ0DhLOXV9UsPjyqVGWY5RNEE2rx2fcmP/pk="

  • base64エンコードされたIV : "numBuSJgCDpuy8TlrrBsIg=="

追加のマルウェアも、最終的に分析された事例と完全に同一のFormbookマルウェアをインジェクションする。

6月の第2週以降にはC&Cサーバーが非活性化され、ファイルを確認することができなかった。最後に、6月の最終週にはルートパスにb374kウェブシェルであるadmin.phpファイルが確認された。

업로드된 b374k 웹쉘

caption - アップロードされたb374kウェブシェル

3.2. 追加のC&Cサーバー

使用されたUser-Agentをベースに調査した結果、同時期に製作された.NET PureCrypterダウンローダーが確認された。検出されたマルウェアは、分析された事例のように攻撃者が構築したC&Cサーバーを使用する方式だけでなく、侵害されたウェブサイトや共有ドライブにファイルをアップロードした後にこれをダウンロードする方式も使用している。また、RARファイルはもちろん、ISOイメージ、7zなど様々な圧縮形式で配布された。

PureCrypter内部に設定されたUser-Agent情報だけでは、これらが同一の攻撃者によって製作されたマルウェアであると断定することは難しいと考えられた。そこで、分析された事例と同じssl thumbprintが表示される攻撃者構築のC&Cサーバーから流布され、Formbook関連の検出名が残っているマルウェアのみを選別した。

  • C&Cサーバー

161.248.239[.]119
95.214.54[.]164
195.177.94[.]43
147.135.109[.]

161.248.239[.]119
95.214.54[.]164
195.177.94[.]43
147.135.109[.]

161.248.239[.]119
95.214.54[.]164
195.177.94[.]43
147.135.109[.]

いずれもPureCrypterでパッキングされたマルウェアを流布したという点は同じだが、Formbook以外にもSnakeKeyloggerなど他の種類のマルウェアも流布された事例が知られている。現在は大部分がアクセス不可能な状態であるため、サーバーに保存されていた最終ペイロードを確認することができない。

3.3. Kimsuky C&Cインフラの関連性

マルウェア流布サーバーである国内IP 158.247.250[.]251は、北朝鮮を背景とする攻撃グループKimsukyの攻撃インフラとの共通点が多数発見された。ENKI Whitehat脅威分析チームは、2025年上半期のKimsukyによるGithub悪用攻撃事例の分析以降、関連する脅威を継続的にモニタリングしてきた。この過程で、Formbook流布サーバーと共通点を持つXenoRAT C&Cサーバー 158.247.240[.]40を確認した。

発見された共通点は以下の表の通りである。

| 특징 | 158.247.250[.]251 | 158.247.240[.]40 |
| --- | --- | --- |
| 웹쉘 경로 | /admin.php | /admin.php |
| 웹쉘 종류 | b374k | b374k |
| 주로 매핑된 도메인 | *.store | *.store |
| JARM Fingerprint | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c

| 특징 | 158.247.250[.]251 | 158.247.240[.]40 |
| --- | --- | --- |
| 웹쉘 경로 | /admin.php | /admin.php |
| 웹쉘 종류 | b374k | b374k |
| 주로 매핑된 도메인 | *.store | *.store |
| JARM Fingerprint | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c

| 특징 | 158.247.250[.]251 | 158.247.240[.]40 |
| --- | --- | --- |
| 웹쉘 경로 | /admin.php | /admin.php |
| 웹쉘 종류 | b374k | b374k |
| 주로 매핑된 도메인 | *.store | *.store |
| JARM Fingerprint | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c | 07d19d12d21d21d07c42d43d0000009424803a662b126a748cf4f90707a33c

また、158.247.250[.]251にマッピングされていたドメインである menavcorp[.]storenidlip.onlinenservicesite[.]store などは、攻撃者がNaver関連のフィッシング攻撃に該当のC&Cサーバーを利用しようとしていたことを示している。Kimsukyは過去から韓国のユーザーを対象としたNaverフィッシング攻撃に、{Naver関連キーワード}[.]store 形式のドメインを頻繁に利用してきた。

  • https://hunt.io/blog/million-ok-naver-facade-kimsuky-tracking

4. 対応策

4.1. 出処が疑わしい電子メール添付ファイルのダウンロードおよび実行の自粛

電子メールに含まれる画像に韓国語が登場することから、攻撃者は攻撃対象を韓国籍の個人に設定し、初期アプローチを試みたことがわかる。また、送信元電子メールをDHL社の公式ドメインに偽装し、実際の企業の自動送信電子メールアドレスによく使用される「noreply」文字列を使用することで、被害者が電子メールを疑わないように設計していた。

このように疑わしい電子メールを受信した場合、添付ファイルのダウンロードおよび実行を自粛すべきであり、virustotalなどの検査ツールを積極的に利用して、圧縮対象ファイルが不正な行為を行うかどうかを確認する必要がある。

한글 이미지가 포함된 피싱 이메일

caption - 韓国語の画像が含まれるフィッシングメール

しかし、今回の事例の場合、添付された圧縮ファイルにパスワードが設定されていないため、ブラウザなどのファイル検査の対象となり、解凍時にexe拡張子がそのまま露出するため、セキュリティプログラムを使用しているユーザーは危険を察知することができる。

5. おわりに

本稿では、フィッシングメールを介した韓国国内IPからのFormbookマルウェアの亜種拡散事例を分析した。最終的なマルウェアであるFormbookファイルはPureCrypterを利用してロードされ、感染したPC情報の流出や遠隔コマンドの実行などの動作が行われる。

分析された事例の場合、モジュール型多段階Formbookマルウェアに加え、PureCrypterまで適用されており、行為を隠蔽し、分析を困難にしていた。このようにセキュリティおよび検知技術が徐々に発展するにつれて、隠密でありながらも成功裡に悪質な行為を実行するための回避技術も継続して開発されている。

また、攻撃に使用されたC&CサーバーにおいてKimsukyの攻撃インフラとの共通点が発見された。分析された事例は、最近のKimsukyの攻撃パターンと全般的に差異があり、一つのIPを複数の攻撃者が利用した可能性もあるため確信は難しいが、過去にNaverのフィッシングドメインがマッピングされていた点、同一のタイプ(b374k)のウェブシェルがC&Cサーバーに存在した点、JARM Fingerprintが一致する点などの共通点を根拠として挙げることができる。

フィッシングメールを介して複数の企業や機関を騙り、マルウェアを拡散させる事例は絶えず発見されている。攻撃者たちは、信頼できる対象であることを利用してユーザーの警戒心を下げさせ、感染へと誘導するため、個人および組織のレベルで、より一層の特別な注意と徹底したセキュリティ対応が求められる。

6. 付録

付録 A. MITRE ATT&CK

| Tactics | Techniques |
| --- | --- |
| Initial Access | T1566.001: Phishing: Spearphishing Attachment |
| Execution | T1059.001: Command and Scripting Interpreter: PowerShell-nT1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1047: Windows Management Instrumentation-nT1204.002: User Execution: Malicious File |
| Persistence | T1547.001: Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
| Defense Evasion | T1027.002: Obfuscated Files or Information: Software Packing-nT1027.014: Obfuscated Files or Information: Encrypted/Encoded File-nT1055.002: Process Injection: Portable Executable Injection-nT1055.003: Process Injection: Thread Execution Hijacking-nT1055.012: Process Injection: Process Holowing-nT1134.001: Access Token Manipulation: Token Impersonation/Theft-nT1140: Deobfuscate/Decode Files or Information-nT1497.001: Virtualization/Sandbox Evasion: System Checks-nT1622: Debugger Evasion-nT1070.010: Indicator Removal: Relocate Malware |
| Discovery | T1057: Process Discovery-nT1082: System Information Discovery |
| Collection | T1115: Clipboard Data-nT1005: Data from Local System |
| Command and Control | T1095: Non-Application Layer Protocol-nT1071: Application Layer Protocol: Web Protocols-nT1665: Hide Infrastructure-nT1132.001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography |
| Exfiltration | T1041: Exfiltration Over C2 Channel

| Tactics | Techniques |
| --- | --- |
| Initial Access | T1566.001: Phishing: Spearphishing Attachment |
| Execution | T1059.001: Command and Scripting Interpreter: PowerShell-nT1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1047: Windows Management Instrumentation-nT1204.002: User Execution: Malicious File |
| Persistence | T1547.001: Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
| Defense Evasion | T1027.002: Obfuscated Files or Information: Software Packing-nT1027.014: Obfuscated Files or Information: Encrypted/Encoded File-nT1055.002: Process Injection: Portable Executable Injection-nT1055.003: Process Injection: Thread Execution Hijacking-nT1055.012: Process Injection: Process Holowing-nT1134.001: Access Token Manipulation: Token Impersonation/Theft-nT1140: Deobfuscate/Decode Files or Information-nT1497.001: Virtualization/Sandbox Evasion: System Checks-nT1622: Debugger Evasion-nT1070.010: Indicator Removal: Relocate Malware |
| Discovery | T1057: Process Discovery-nT1082: System Information Discovery |
| Collection | T1115: Clipboard Data-nT1005: Data from Local System |
| Command and Control | T1095: Non-Application Layer Protocol-nT1071: Application Layer Protocol: Web Protocols-nT1665: Hide Infrastructure-nT1132.001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography |
| Exfiltration | T1041: Exfiltration Over C2 Channel

| Tactics | Techniques |
| --- | --- |
| Initial Access | T1566.001: Phishing: Spearphishing Attachment |
| Execution | T1059.001: Command and Scripting Interpreter: PowerShell-nT1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1047: Windows Management Instrumentation-nT1204.002: User Execution: Malicious File |
| Persistence | T1547.001: Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
| Defense Evasion | T1027.002: Obfuscated Files or Information: Software Packing-nT1027.014: Obfuscated Files or Information: Encrypted/Encoded File-nT1055.002: Process Injection: Portable Executable Injection-nT1055.003: Process Injection: Thread Execution Hijacking-nT1055.012: Process Injection: Process Holowing-nT1134.001: Access Token Manipulation: Token Impersonation/Theft-nT1140: Deobfuscate/Decode Files or Information-nT1497.001: Virtualization/Sandbox Evasion: System Checks-nT1622: Debugger Evasion-nT1070.010: Indicator Removal: Relocate Malware |
| Discovery | T1057: Process Discovery-nT1082: System Information Discovery |
| Collection | T1115: Clipboard Data-nT1005: Data from Local System |
| Command and Control | T1095: Non-Application Layer Protocol-nT1071: Application Layer Protocol: Web Protocols-nT1665: Hide Infrastructure-nT1132.001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography |
| Exfiltration | T1041: Exfiltration Over C2 Channel

付録 B. IOCs

Hash

  • e78be07019dfaf682c601985ac3ba424

  • 108b5fd1b62489fd5cdb4ebd4a463226

  • 42d24ccfb0a05c5f299181ca3afc7ae3

  • a6c26a0b5df0db6a35b15c24342f27f8

  • 6e5198c3aae9005cc58d011a8c6f0bec

  • 81bfe3b3204ede1fca418e44aa19b310

  • 52a321e48902b8fbd1e984d9bd15f278

  • 310ebb7ca19ff9b75d4054c340b0c82e

  • ca9cb7bb06398670abc6d19186c336cd

C&C

  • 158.247.250[.]251

  • 95.214.54[.]164

  • 161.248.239[.]119

  • 195.177.94[.]43

  • 147.135.109[.]226

  • 158.247.240[.]40

Mutex

  • Xilnulmx

  • Ncppn

User-Agent

  • Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/96.0.4693.80

  • Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0

  • Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Mobile Safari/537.36

Email

  • noreplychleeportchlee@dhl.com

付録 C. Formbook URLs

  • www.asymptote[.]fund/geqw/

  • www.u90hm[.]top/q3ld/

  • www.eufi[.]xyz/sk5i/

  • www.netbarg[.]com/r6jx/

  • www.ml[.]com/zh1t/

  • www.adoptados[.]pet/rnaj/

  • www.synergysynergyeqhu[.]lol/hjvu/

  • www.businessauth[.]xyz/9nn7/

  • www.realbigteeth[.]net/29f4/

  • www.cleartrek[.]top/e35m/

  • www.dekoratifcamfilmi[.]xyz/gxr6/

  • www.sanlou86[.]vip/4h4w/

  • www.tridentoutdoor[.]net/odp0/

  • www.bmf.gv[.]at/bmvd/

  • www.dgdetailing[.]pro/g9w4/

  • www.ogrex[.]org/w7hs/

  • www.teamx[.]club/egab/

  • www.df96w[.]top/oodw/

  • www.dubrovnik[.]services/8fpw/

  • www.gamevui[.]shop/84g1/

  • www.uwd64[.]top/p1wy/

  • www.iconimax[.]org/geqw/

  • www.parshmen[.]art/ym9z/

  • www.g50tz[.]top/cdm7/

  • www.goldenstreamzxy[.]pro/vvrb/

  • www.070bn[.]shop/panb/

  • www.later[.]info/trou/

  • www.imprint[.]boutique/eqc8/

  • www.honghuo-qq2l2[.]sbs/aa4d/

  • www.fabu2024b01[.]xyz/ow2j/

  • www.aishiteru4[.]click/wirg/

  • www.japp4[.]icu/2q9x/

  • www.agrimater[.]shop/o05o/

  • www.fmtuxu[.]top/hlfg/

  • www.new8838[.]win/7evm/

  • www.slayflu[.]xyz/n871/

  • www.thebriefingpod[.]media/hwu8/

  • www.lawson[.]co[.]jp/n307/

  • www.yourcredential[.]xyz/v4li/

  • www.donaldcoin[.]com/n66l/

  • www.novatek[.]tech/o29b/

  • www.gorillalegends[.]xyz/xgry/

  • www.babyhan64[.]shop/4s99/

  • www.artscriptor[.]info/a2d4/

  • www.cardo[.]work/am6j/

  • www.hirufm[.]lk/whj4/

  • www.h34ry[.]top/ssr8/

  • www.ztg86[.]top/3whz/

  • www.freedom[.]golf/ip3t/

  • www.kl3u2l[.]top/v5n7/

  • www.dagdijital[.]xyz/bhvz/

  • www.resolve[.]fitness/d7x3/

  • www.precisednutrition[.]net/z82q/

  • www.autorolluphub[.]xyz/ulhr/

  • www.mastermohamedfight[.]top/o7rb/

  • www.farcana-drop[.]xyz/2p9m/

  • www.itmoh[.]town/hwcx/

  • www.sticker[.]business/728a/

  • www.arcade[.]plus/lvbq/

エンキホワイトハット

エンキホワイトハット

ENKI ホワイトハット
ENKI ホワイトハット

オフェンシブセキュリティの専門企業として、攻撃者の視点から次元の異なるセキュリティを提示します。

オフェンシブセキュリティの専門企業として、攻撃者の視点から次元の異なるセキュリティを提示します。

隙のないセキュリティ設計の始まり、NO.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

隙のないセキュリティ設計の始まり、
No.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

隙のないセキュリティ設計の始まり、
No.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

購読する

コンテンツが役に立ったら?
エンキーレターを購読しましょう!

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.