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/