GuLoaderはポリモーフィックコードと信頼されたクラウドホスティングを利用して検知を回避

GuLoaderマルウェアは、2019年以降RATやスティーラー向けの主要なダウンローダーとして、引き続きシステムを悩ませています。最近のZscalerの分析で明らかになったのは、防御をすり抜けるために、変幻自在のコードと安全なクラウド上の隠れ場所を多用している点です。​

SonicWallの調査では、スパム経由で拡散する新しい亜種において、さらに多くの例外処理トリックが強調されています。​

GuLoaderは、アドレスやサイズなどの重要な値を、mov、xor、add、subといったアセンブリ命令を組み合わせて実行時に構築します。固定の数値がないため、スキャナーはパターンを容易に検出できません。​

強制的なCPUフォールトが発生した際、直接ジャンプを行いません。まずRtlAddVectoredExceptionHandlerでVectored Exception Handler(VEH)を設定します。その後、ブレークポイントや不正アクセスなどのフォールトを引き起こすコードを作成します。​

ハンドラはEXCEPTION_POINTERSを取得します。ExceptionRecordでコード/種類を、ContextでEIPなどのレジスタを参照します。デバッグフラグを確認し、オフセットを計算(多くの場合2バイト先をXOR)し、EIPをパッチして再開します。​

デオブファスケータによれば、サンプルではハンドラ呼び出しが1100回以上発生します。初期バージョンはデバッガ回避のためにターゲット内の0xCCをスキャンしていましたが、後に削除されました。​

文字列はXORで暗号化されます。2022年:シェルコード内で静的。CALLがキーアドレスをプッシュし、((0x34BB49B7 – 0x6774883) ^ 0x34EC7B91) – 0x1AA87A69 = 0x3C のようにサイズを計算し、文字列アドレス、ASCIIフラグ(0/1)をプッシュしてsimple_xor_bufsを呼び出します。最初のDWORDに長さが入り、別途XORキーがあります。

2023年以降:ポリモーフィックなスタック構築でmov/xor/add/subの定数を組み立てて文字列/キーを生成し、その後XORします。復号にはエミュレーションが最適です。

Zscaler/GitHubのIDAスクリプトは、定数や文字列をアンパックし、フローをフラット化します。​

マルスパムで拡散:NSISドロッパー入りのRAR。NSISがDLL(例:System.dllが「Call」をエクスポート)やシェルコード層を展開します。​

Layer1ではNSISがDLL.Callを呼び出します。メモリを確保し、Hangarer.Manのようなファイルのオフセット0x409からLayer2シェルコードをコピーし、CallWindowProcWをlpPrevWndFuncフックとして用いた間接実行を行います。​

Layer2はオフセット0x1C9にあるLayer3(メインのGuLoader)を復号し、そこへジャンプします。​

C2 URL(それ自体が暗号化文字列)から取得するペイロードのXORキーとして、大きなバイナリ文字列(>0x300B)を復号します。URLはGoogle/OneDrive由来であることが多く、信頼性を悪用してレピュテーション回避を行います。​

RAT(Remcos、Azorult)やスティーラー(AgentTesla、RedLine)を投下します。SonicWallは、最終ペイロードがhxxp://lena[.]utf[.]by/…/kdRrHFMqRUIujuOy126[.]binから取得されたAzorult(d5af42b118d0597c6b71831f2b2ebc8294eca907481d53939563fce7c0f14767)であることを確認しました。​

アンチVM/デバッグ/エミュレーション:ジャンクコード、間接呼び出し、スタック文字列、APIフックのチェック、偽命令。フィッシングは2026年まで活発で、例として人事(HR)文書などがあります。​

翻訳元: https://cyberpress.org/guloader-evades-cloud-defenses/

ソース: cyberpress.org