最近、Seqrite Labは、メールの添付ファイルを通じてフォームブックスティーラーを配信するフィッシングキャンペーンを確認しました。2016年以降、フォームブックはステルス機能から回避技術まで、様々な点で進化を遂げてきました。ハッキングフォーラムではMalware as a Service(MaaS)として販売されており、様々な亜種が確認されています。回避技術自体は同じですが、ペイロードを展開する前に複数のレイヤーが使用され、識別を回避するためメモリ内にのみロードされます。他の亜種と同様に、この亜種もステガノグラフィを用いて画像内に悪意のあるファイルを隠し、復号化してメモリ内にロード・起動します。
この亜種には、最終ペイロードの前に3つのステージが含まれています
- 購入注文.exe/XXXI.exe
- アーサー.dll
- モンテロ.dll
- MASM(最終ペイロード)

テクニカル分析:
攻撃は、注文書とZIPファイルが添付されたスピアフィッシングメールから始まります。解凍すると、.net コンパイルされたバイナリである PE ファイル PurchaseOrder.exe が 1 つだけ含まれます。

ステージ 1 (Purchase Order.exe):
この亜種は、Purchase Order.exeのリソース内にステージ2およびステージ3のマルウェアを隠しています。リソース名「キル図2に示す「」はステージ3のバイナリです。
マルウェアはまず2秒間スリープ状態になり、その後ステージ3のペイロードの復号に進みます。図2に示すように、マルウェアはステージXNUMXの暗号化されたデータを以下の場所から取得します。 APP Purchase Order.exeのリソースに存在するリソースをバイト配列に格納します。また、ステージ16のペイロードの2バイトの復号鍵も格納します。これは「AP7H9H5OI4478F8CH05FGA"。


ステージ2のペイロードを復号する前に、図4に示すように3つのrd サイズが 256 バイトの配列を作成し、0 から 255 までの値で初期化します。

その後、3 バイトのキーをランダムな位置にコピーして、配列 16 を設定します。

配列3の値を設定すると、暗号化されたデータと配列3のXOR演算を実行し、ステージ2のPEファイルarthur.dllを含む配列2に保存します。
ステージ2のDLLファイルを実行するために、InvokeMember()を使用して、復号化されたアセンブリ(Arthur.dll)をLoadメソッドでメモリにロードします。図5に示すように、Load関数を直接使用するのではなく、オブジェクトから値を取得します。 HJ is 負荷。

ステージ 2 (Arthur.dll):
メモリにロードされると、 メインフォーム.Justy() ステージ2のPEファイルから2つの引数を指定して実行します。ステージ3のPEファイル内のこれらの引数を使用して、ステージXNUMXのPEファイルを取得します。


- WA = “486B796C”=Hkyl (PurchaseOrder.exe 内のリソース、図 2)
- WZ = “62616F” = bao(ステージ3の復号鍵)
- @namespace = “AssessExampleCombatForm”[PurchaseOrder.exeのプロジェクト名]
最初、このステージ 2 は、ステージ 3 の復号化に進む前に XNUMX 秒間スリープします。
この関数は、引数として渡されたキーを使用して画像を復号化し、画像内の各非透明ピクセルから赤、緑、青の値を抽出して配列を作成します。

この配列は、値[を使用してXOR演算すると、バオステージ2で渡された[]は、ステージ3のmontero.dllを呼び出します。これもAssembly.Loadメソッドを使用してメモリにロードされます。メインメソッドgnWmyvSdDoAS8VNPByを取得した後、ukHjJHqoK1ステージ 3 モジュールの () を呼び出します。

ステージ 3 (Montero.dll):
このステージ3のPEファイルでは、メインメソッドを呼び出す前に ukHjJHqoK1(), コンストラクタは必要な構成設定を復号します。これらの設定には、最終ペイロードの復号キー、ミューテックス名とミューテックスフラグの有効化/無効化、ファイルのドロップ場所、ファイルのダウンロード動作の有効化/無効化、ファイルのダウンロード場所などが含まれます。これらの構成設定は配列[gnWmyvSdDoAS8VNPBy.YiEuqBAod0]に格納されます。

構成設定を復号した後、29でMutexフラグが有効になっているかどうかを確認します。th 配列YiEuqBAod0の位置。trueの場合、「zpkpGXyWHvBpdzNULuLRtAzq」。ミューテックスが既に存在する場合、マルウェアは自身を終了します。この動作は、セキュリティベンダーによる検出を回避し、同じマルウェアの2つ目のインスタンスの実行を回避するために一般的に実装されています。次に、スリープフラグが有効化されているかどうかを検証します。有効化されている場合は、サンドボックスによる悪意ある動作の捕捉を阻止するため、実行を遅らせるためにスリープ状態に入ります。

次に、メッセージボックスの表示フラグが有効になっているかどうかを確認します。th 配列 YiEuqBAod0 の場所。有効になっている場合、ユーザーを欺くためにメッセージ ボックスがポップアップ表示されます。

その後10を検証するth 除外パス機能として使用される配列YiEuqBAod0の位置。有効にすると、マルウェアのパスが除外リストに追加され、LOLバイナリ[powershel.exe]によってこのコマンドレットが非表示ウィンドウ属性で実行されるため、アンチウイルスベンダーによる検出を回避し、被害者からその動作を隠すことができます。

5th 配列YiEuqBAod0の位置。この位置は、別のペイロードをダウンロードするか、タスク機能を更新するために使用されます。このフラグが有効になっている場合、別のマルウェアファミリをダウンロードするか、脅威アクターC2からコマンドを受信してそのコマンドを%temp%の場所にXMLファイルに挿入し、%temp%から実行します。このXMLは、スケジュールタスクでインポートとして指定されます。

2nd 配列YiEuqBAod0の場所。脅威アクターはこの場所をファイルのドロップ先として使用していました。このフラグが有効になっている場合、マルウェアはまず「qwwnzxGmN.exe」を実行し、被害者のホストの「C:\Users\username\AppData\Roaming」にファイルが既に存在するかどうかを確認します。もしその場所にファイルが存在しない場合は、隠し属性が設定されたファイル(親ファイルの自己コピー)を作成します。この属性は、攻撃者が管理者やユーザーによるマルウェアの発見を阻止するために、マルウェアの存在を偽装するために利用される可能性があります。

図14に示すように、親ファイルが「%appdata%Roaming」に自己コピーされると、このファイルは除外パスに追加されます。そして、ステージ64のmainメソッドのコンストラクタで復号されたbase3エンコードされたデータを、XMLファイルである文字列にデコードします。このXMLファイルには、タスクを生成する値が含まれています。これらの値は以下のとおりです。 マルウェア ファイルの隠し属性、永続性、機能の有効化、ファイルパスのコマンド実行など。


このXMLファイルは%temp%ディレクトリに「*.tmp」という名前で作成され、XMLファイル内の「Location」や「USERID」などの必要な値を更新します。その後、被害者から動作を隠蔽し、永続化を図るため、「updates\qwwnzxGmN」などの隠し属性を持つスケジュールタスクを作成し、そのXMLファイルをインポートします。脅威アクターは、セキュリティアナリストによる痕跡の追跡を回避するため、tmpファイルを削除しました。

図18は3rd 最終ペイロードを復号するステージモジュール。変数gnWmyvSdDoAS8VNPBy.AtOuOF5iCk = “4kQLt8DIME” はリソース名です(motero.dll 内)。gnWmyvSdDoAS8VNPBy.NJMuDv6Sv6 = “pqDVZxpXC” がキーです。リソースを読み込み、KEYと共に復号メソッド Pp62t2mj9p に渡します。
復号化方法は、最終ペイロードを gnWmyvSdDoAS8VNPBy に保存します。うわー。


この最終ペイロードは、32ビットのMASMコンパイルバイナリで、「.text」セクションのみで構成されています。要件に基づいて高度に難読化されたファイル復号化および暗号化コードが含まれています。

バッファ内の最終ペイロードを復号すると、1をチェックします。st 配列YiEuqBAod0の位置。この値に基づいて、プロセスホローイングの対象となるプロセスが選択されます。脅威アクターは0から4までの値を提供しています。値が4の場合、アセンブリロード方式で最終ペイロードをメモリにロードし、最終ペイロードのエントリポイントを実行します。

値が「1” 値が「2” ターゲットプロセス名はvbc.exeで、値が“3” の場合、対象プロセス名は RegSvcs.exe です。上記のいずれの値も指定されていない場合は、対象プロセスを親ファイルとして選択します。

ステージ 3 のコンストラクターでは、CreateProcessA に格納されているメソッド bLmuzQDIA5() のプロセス ハロウイングの API シーケンスを復号化し、このマルウェアは上記の値 (図 17) に基づいて対象のプロセスを作成し、そのプロセスを中断モードで作成します。
![]()

メソッド je3uFjEe5y() は WriteProcessMemory を保存し、対象のプロセス メモリ内の最終ペイロード「.text」セクションを復号化しました。

IOCS:
6A9F890C529C410FA32793F496E7F200
0DA34A44EE4876DD5E35939AF02F1D32
D751816C3673935BF989716ABD0DAB21
F8EC1BE3F2BD8269DB033375ED1A841E
検出:
Trojan.Formbook.S34651912
ヤラルール:
インポート「pe」
ルールFormbook_varainat
{
文字列:
$s1=”AP7H9H5OI4478F8CH05FGA” wide ascii
$s2 ={67 B7 76 87 0A C8 C4 5E 29 AC 76 8F 70 E8 6E 09 91 40 4A AE 28 D5 7F CE AB 90 4B D3 07 C1 A8 B2 A0 B3 88 B9 58 F3 CA A9 43 9D C5 C1}
$s3 ={78 33 66 C6 4D CD 82 2F B8 D6 10 8A B7 E9 D5 65 8B 45 1A B7 ED 08 2E B3 89 2F 0B 89 75 F5 08 5D}
調子:
それらのすべて
}
MITRE攻撃のTTP:
| 戦略 | テクニック/手順 |
| 初期アクセス | T1566.001: スピアフィッシング添付ファイル |
| 実行 | T1059.001:コマンドおよびスクリプトインタープリター:PowerShell |
| T1053.005:スケジュールされたタスク/ジョブ:スケジュールされたタスク | |
| 固執 | T1053.005:スケジュールされたタスク/ジョブ:スケジュールされたタスク |
| 防衛回避 | T1027.003:難読化されたファイルまたは情報:ステガノグラフィー |
| T1036:仮装 | |
| T1497:仮想化/サンドボックス回避 | |
| T1055.012:プロセスインジェクション:プロセスホローイング | |
| プーケットの魅力 | T1082:システム情報の発見 |
| T1083:ファイルとディレクトリの検出 | |
| T1057:プロセスディスカバリー |
まとめ:
マルウェア・アズ・ア・サービス(MaaS)では、フォームブックの複数のバージョンが見られます。多くの場合、ラッパーは変化し続けますが、最終的なペイロードは同じままです。これは、アンチウイルス(AV)による検出を回避するためです。脅威アクターは、悪意のあるドキュメントや実行可能バイナリを添付したスピアフィッシングメールを通じてこのマルウェアを拡散します。ユーザーは、添付ファイル付きの不審なメールを開かないようにすることをお勧めします。この亜種は、永続性を維持するための回避技術を実装しています。ファイル属性を非表示にすることで、システム管理者やユーザーによる検出を回避します。ミューテックスを作成することで、システム内でマルウェアのインスタンスが1つだけ実行されるようにします。
著者: ルマナ・シディキ、マノージ・クマール・ニーラメガム



