HTML スマグリングの検出

Dec 28 2022
はじめに この記事では、過去 2 回の投稿で説明した検出エンジニアリング プロセスに従って、HTML スマグリングの検出について詳しく説明します。このプロセスには、新しい検出コンセプトの研究、テスト、および開発が含まれます。
私が考えることができる最も有名な架空の密輸業者

序章

この記事では、過去 2 回の投稿で説明した検出エンジニアリング プロセスに従って、HTML スマグリングの検出について掘り下げます。このプロセスには、新しい検出コンセプトの研究、テスト、および開発が含まれます。ただし、以前の投稿とは異なり、今回はラボで実際の QakBot マルウェアを観察、プロファイリング、および検出します。この記事では、現在および志望の検出エンジニアが、シミュレートされた CTF スタイルの課題を超えて、実際の攻撃者の手法を研究および検出し、SOC のフラグを立て、インシデント対応の同僚が脅威を無力化できるようにする方法を示したいと考えています。

私たちの旅程

いくつかの背景と目的を定義した後、ラボで QakBot HTML Smuggling マルウェアを実行し、Splunk でその動作を追跡する方法を示します。次に、この攻撃の観測可能なイベントを順序付けて、有用な検出ポイント (「ビルディング ブロック」または攻撃チェーンのリンクと考えています) を特定します。また、脅威検出ツールボックスの重要なツールである相関関係 (具体的にはチェーン ルール) についても紹介します。これがどのようなものかを説明するために、Sigma Correlations と呼ばれる Sigma のまだリリースされていない機能について説明し、デモンストレーションします。最後に、QakBot HTML Smuggling マルウェアの 10 個の追加サンプルに対して新しいチェーン ルールをテストし、それがどのように機能するかを確認します。

始めましょう!

バックグラウンド

サイバーセキュリティの旅の早い段階で、Black Hills Information Security の John Strand は、「『YOU HAVE BEEN HACKED』のログはありません」という言葉に心に引っかかりました。イベント ログは、天気の良い日でもわかりにくく、読みにくい場合があります。ログから実用的で実用的な洞察を導き出すのは簡単ではありません。この課題を成功させるには、深い分析と専門的な技術が必要になる場合があります。

セキュリティのキャリアを通じて、私はその教訓を心の奥底に持っていました。数か月前に、@pr0xylifeからの次のような投稿を大量に目にするようになったのは、このことを念頭に置いていたからです。

私は、pr0xylife とその仲間がこれらの攻撃を非常に簡潔にまとめている方法が気に入っています。ファイル タイプのシーケンスを大声で繰り返していることに気づきました。ほとんど奇妙な形式の詩のようです!

もっと学びたいと思ったが、何から始めたらよいか分からなかった。Trellix のチームによる QakBot に関するいくつかの優れた研究をレビューしていたので、彼らの技術について少し知っていました。(QakBot について聞いたことがない場合は、Trellix のレポートを読んでください!) QakBot の活動を追跡し、深く掘り下げていくと、pr0xylife や他の人たちが、QakBot が犠牲者をだまして私たちの攻撃を回避する方法の微妙な組み合わせやバリエーションについて説明していることに気付きました。防御。いくつかの例:

  • これは、エンコードされた JavaScript を含む悪意のある HTML ファイルが被害者のブラウザーによって実行され、ペイロードの次の段階をダウンロードするHTML Smugglingを使用します。
  • パスワードで保護された zip ファイルを使用して、サンドボックス分析をブロックします。
  • Red Canaryが非常によく説明しているように、.iso ファイルと呼ばれるディスク イメージ形式を使用して、Mark-of-the-Web 保護を回避します。
  • ユーザーをおびき寄せて隠し .CMD および .DLL ファイルを実行するように仕向ける LNK ファイル。
  • そして、ますます欺瞞的なトリックが続きます!

目的

HTML スマグリングやその他の QakBot に接続された技術について、いくつかの検出が行われています。これらは主に、エラスティック セキュリティからの次のような疑わしいログ イベントの一致に基づいています。

単純な照合ではなく相関関係を利用して、攻撃行動の微妙な変化に対応できる独自の検出を構築できるかどうかを確認したかったのです。

TBH、私も QakBot のばかげたごまかしにうんざりしていて、私たちの視界の中に真っ直ぐに配置するための信頼できる方法を求めていました。

私、さらに別の QakBot のバリエーションを見た後

QakBot マルウェアの初期観察と分析

目的を達成するには、セキュリティ ベンダーからの脅威インテリジェンス レポートと Atomic Red Team のテストを超える必要がありました。実際のマルウェア サンプルから作成した独自のデータが必要でした。私は昔からのお気に入り、Brad Duncan (@malware_traffic) による Malware-traffic-analysis.net に目を向けました。このサイトは、セキュリティに関して私が見つけた最も有用な教育リソースの 1 つです。このサイトでは、Wireshark のチュートリアルと実践的なネットワーク トラフィック演習に加えて、QakBot HTML スマグリング ファイルを含む、実際のマルウェア サンプルの品質分析を提供しています。

ラボ VM のスナップショットを作成した後、仮想検出ラボを起動し、最近のエントリにアクセスしました。注意してください、このサイトでホストされているファイルは安全ではありません!

アーティファクトの zip ファイルをダウンロードし、検出ラボに組み込まれている WinRAR ユーティリティを使用してダウンロード フォルダーに展開しました。

IOC メモは、含まれているファイルにコンテキストを与えるのに非常に役立ちました。メモの中に次のようなものがあります。これにより、感染チェーンが SCAN_DT6281.html という HTML ファイルから始まったことがわかりました。

2022-12-09 (FRIDAY) - HTML SMUGGLING FOR QAKBOT (QBOT) DISTRIBUTION TAG: AZD

DISTRIBUTION:

- Unknown source, possibly email --> HTML file --> password-protected zip archive --> extracted ISO image with .img file extension

スジは通ってるようだ

…はい、zip ファイルを開きましょう。

zip ファイルはパスワードで保護されていましたが、HTML ページに表示されるパスワードを使用して開くことができました。zip ファイルには単一の .img ファイルが含まれていましたが、これは別のマウント可能なディスク イメージ ファイル形式であることがわかっています。これをダブルクリックすると、ファイルがシステムの D ドライブとしてマウントされます。

ショートカット LNK (SCAN_DT6281) と隠しフォルダー (IncomingPay)

また、IncomingPay という隠しディレクトリがあり、.lnk ファイル、ウィキペディアの心理学ページからの抜粋を含む 2 つのテキスト ファイル (冗談ではありません)、.cmd ファイル 、および .lc ファイル が含まれていました。

セキュリティの専門家であり、企業のセキュリティ意識向上トレーニングの忠実なウォッチャーとして、私のすべてのは起き上がり、そよ風になびいていました。しかし、これは科学のためなので、攻撃者が被害者に望んでいるように、LNK ファイルをダブルクリックします。 コマンド ライン ウィンドウが数秒間表示されてから消えます。

LNK ファイルのターゲット プロパティは興味深いものです。

C:\Windows\System32\cmd.exe /c IncomingPay\Issues.cmd A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9

餌を取った直後に記録されたコマンドに注目してください!

どの検索を実行するかを知るにはどうすればよいですか? 実際にはそうではありませんが、アナリストおよび研究者としての経験から、ログに特定の種類の証拠 (プロセスの実行、ファイルの作成、ネットワーク接続など) が表示される可能性があることを知っています。これは、セキュリティ アナリストとしての実地経験、または十分な量の CTF スタイルのトレーニング ( Cyber​​DefendersやLetsDefendで利用できるものなど) が役立つ場所です。

検索を数回更新し、何か間違ったことをしたのではないかと考えた後、明確で議論の余地のない侵入の兆候に気付きました。被害者のホストでの偵察活動のバーストです。

スクリーンショットに含めるのを忘れていましたが、これらすべてのコマンドの親プロセスは wermgr.exe でした (何???)。

これらのコマンドを見ていると、それらが発生した時間帯に気付きました — すべて数秒以内でした! また、プロセスはすべて通常とは異なる親であるwermgr.exe (Windows エラー報告マネージャー) によって生成されました。おそらく、良い検出の機会ですか?最も混乱した管理者または過剰に構築された [合法] ソフトウェアが、これらの疑わしい偵察コマンドをすべて、そのような短い時間枠内で実行することはなく、wermgr.exe の子として実行されることもありません。ネットワーク接続に目を向けると、wermgr.exe が突然、外部 IP アドレスと非常に頻繁にやり取りするようになっていることに気付きました。

ううう………………

このデータの最初の評価に続いて、次のことを決定しました。

  • マルウェア サンプルには、悪意のある初期アクセス ベクトル (.html、.zip、.img、.lnk、.cmd、および .lc ファイルの不正なギャラリー) が含まれていました。
  • マルウェアはブラウザで HTML ページを開いた後に zip ファイルをダウンロードし、zip ファイルにはマウント可能な .img ファイルが含まれていました。
  • マウントされたドライブには、追加のコマンドの実行につながる悪意のあるショートカットが含まれていました。
  • 挿入された wermgr.exe プロセスは、偵察活動の自動バーストを生成し、疑わしい外部 IP アドレスに接続して、おそらくシステムとネットワークに関する情報を攻撃者に送信しました。
ローグス ギャラリー

攻撃を検出ビルディング ブロックに分解する

ラボで QakBot HTML スマグリング手法の最初の実行を実行し、VM スナップショットに戻ったので、ログをさらに掘り下げて何が起こっているかを確認する時が来ました。

攻撃によって生成されたさまざまな種類のイベントを確認したとき、何が起こっているのかを平易な言葉で理解できるようになりました。

「攻撃者は被害者に、レポート、請求書、またはその他の関心のある文書を含むと称する HTML ファイルを送信します基本的に、フィッシングルアー。被害者がブラウザでファイルを開くと、埋め込まれた JavaScript コードが実行され、パスワードで保護された zip ファイルが被害者のシステムにダウンロードまたはビルドされます。被害者がアーカイブを解凍すると、抽出によってマウント可能なディスク イメージ ファイルが作成されます。ドライブをマウントすると、探しているリソースに移動できると思われるショートカットが表示されます。しかし、ショートカットは実際には、他の悪意のあるファイルを実行するコマンドまたはスクリプト インタープリターを呼び出します。ディスクドライブに隠されているため、最初のアクセス侵害につながります。」

それは散文の長いチャンクですが、私の頭の中では理にかなっています。何かを検出するには、まずそれを理解する必要があります。太字のテキストに注意してください。攻撃チェーンを検出するために使用できるイベントを強調するために、説明を使用しました。このレビューに基づいて、攻撃のログを分析し、次のイベントを分離しようとしました。

  1. HTML 添付ファイルを含むフィッシングメールが被害者に送信されます。
  2. 不審な場所での HTML ファイルの作成。
  3. ブラウザ アプリケーションでスタンドアロンの HTML ファイルを開く。
  4. ブラウザアプリケーションによるzipファイルのダウンロード・作成。
  5. パスワードで保護された zip ファイルを開く/解凍します。
  6. マウント可能なディスク ドライブ ファイル形式 (.iso、.img など) の作成。
  7. ドライブのマウント。
  8. 外部ドライブでのプロセス実行 (そのドライブ上の実行可能ファイル、またはそのドライブ上のファイルにアクセスするシステム実行可能ファイルのいずれか)。

良いニュース

幸いなことに、上記のほぼすべてのイベントを検出する方法があります。これは、利用可能なログをクエリしてフィルター処理し、将来の検出のために意味のあるイベント (構成要素) を抽出する方法について、多くのアイデアがあったことを意味します。

悪い知らせ

悪いニュースは、これらの多くのイベントのいずれも、それ自体が悪意のあるものではないということです。繰り返しになりますが、YOU HAVE BEEN HACKED のログはありません。これらのイベントのそれぞれは、通常のビジネスの過程で発生する可能性があり、完全に安全で無害です。解決策は、これらのイベントを順序付きまたは順序なしの順序で関連付け、ホスト名などの共通属性でグループ化し、これらすべてが 1 時間などの時間枠内で発生したときにアラートをトリガーすることです。問題は、私の分析とテスト (これについては後で詳しく説明します) によると、多くのイベントを連鎖または相関させると検出が脆弱になることです。

壊れやすい vs. 弾力性がある

「脆弱性」とは、攻撃者の手法の微妙な変化、被害者が実行するアクションのバリエーション、ロギングの問題、または制御できないその他の要因に直面して、検出のアイデアが崩壊する程度を表します。脆弱な検出は、柔軟性があり、これらの微妙な変化に耐えることができる「回復力のある」検出とは対照的です。

「もろい=悪い、弾力性がある=良い」と言うほど単純ではありません。脆弱な検出は、狭い「開口部」で、高度にターゲットを絞ったものになる可能性があります。利点は、脆い検出ルールが起動した場合、それが真陽性である可能性が非常に高いことです。回復力のある検出はより広い範囲を持ち、より潜在的な悪意のある活動に一致する可能性があります。ただし、注意して開発しないと、誤検知やイライラする SOC につながる可能性があります。

これを念頭に置いて、上記のイベントのリストに戻りました。

テストする構成要素の決定

状況に応じて、上記のリストの 1 から 3 の項目は、HTML スマグリング検出の適切なコンポーネントではない可能性があることに気付きました。可視性の欠如と大量の無害な動作は、項目 1 を妨げます。このイベントをテストする能力が限られていたため、項目 2 を選択しました。項目 3 は、使用するブラウザーによっては信頼できないことが判明しました。さらに、技術的には HTML スマグリングではありませんが、多くの QakBot アクティビティは、スタンドアロンの HTML ファイルではなく URL を使用して、最初のペイロードを配信します。

項目 5 (パスワードで保護された zip ファイルの抽出) には多くの可能性があり、Florian Roth によって作成され、@SBousseadenの研究に触発されたこのルールを使用して検出できます。ただし、1) そのイベントがラボに記録されていなかったこと、および 2) 一部のドキュメントが特定のオペレーティング システムにのみ適用されることを示しているため、範囲外にしました。

データを調査し、相関関係の可能な検出ビルディング ブロックを列挙し、さらなる分析に基づいてそのリストを選別した後、次のビルディング ブロックが得られました。

  1. Web ブラウザが Zip アーカイブ ファイルを作成 (ダウンロード) します (悪意のある HTML ファイルをブラウザで開くことを表します)。
  2. Zip から抽出された ISO、VHD、LNK、または IMG ファイル (悪意のあるディスク イメージ ファイルの抽出)。
  3. ディスク イメージ マウント (イメージをマウントします。これは Sigma から直接取得したものです)。
  4. ユーザーが開始した疑わしいプロセスが外部ドライブで実行されます (外部ドライブ上のファイルを実行または参照する .lnk ファイルをクリックします)。

シグマ相関

相関関係により、ログ イベントを経時的に追跡できます。上記の 4 つのイベントのそれぞれに対してアラートをトリガーするのではなく、チェーン ルール相関を使用すると、4 つのイベントすべてが同じユーザーによって同じホスト上で順番に発生した場合にのみアラートを出すことができます。これははるかに疑わしいものです。多くの SIEM 製品とそれに対応するクエリ言語は、このタイプの連鎖をサポートしています (ただし、サポートしていないものもあります)。

この機能をサポートするために、シグマは進行中の相関標準を持っています。これにより、共通の形式でカスタム相関ルールを記述し、それをこのロジックをサポートする SIEM 製品に変換できるようになります。ドラフト規格は、次の場所で確認できます。

これはどのように見えるでしょうか?これはドラフト標準であり、変更される可能性がありますが、ブルート フォース チェーン ルールの簡単な例は次のようになります。

action: correlation
type: temporal
rule:
    - many_failed_logins
    - successful_login
group-by:
    - User
timespan: 1h
ordered: true

私のドラフト相関ルールは次のようになります。

title: HTML Smuggling Activity - Chain Rule
id: 0952f2fa-e29b-4eb5-831c-ce21520c56e3
status: experimental
description: Detects HTML smuggling-style compromise (such as HTML > ZIP > ISO/IMG/VHD > CMD/BAT/VBS > DLL). Includes rules to detect zipfile dropped by browser, ISO/IMG/VHD/LNK file extraction, disk image mount, followed by user-initiated process creation on an external drive.
references:
    - https://blog.talosintelligence.com/html-smugglers-turn-to-svg-images/#:~:text=HTML%20smuggling%20is%20a%20technique,directly%20on%20the%20victim's%20device.
    - https://www.malwarebytes.com/blog/news/2021/11/evasive-maneuvers-html-smuggling-explained
    - Original research and analysis performed off of QakBot intelligence gathered at https://github.com/pr0xylife/Qakbot, https://www.malware-traffic-analysis.net/, and https://github.com/executemalware/Malware-IOCs
author: Micah Babinski
date: 2022/12/27
tags:
    - attack.s0650
    - attack.s0483
    - attack.initial_access
    - attack.defense_evasion
    - attack.execution
    - attack.t1564
    - attack.t1566.001
    - attack.t1566
    - attack.t1027
    - attack.t1027.006
    - attack.t1059
    - attack.t1204
    - attack.t1204.002
action: correlation
type: temporal
rule:
    - 1_win_zipfile_drop.yml
    - 2_win_susp_file_extraction.yml
    - 3_win_security_iso_mount.yml
    - 4_win_process_creation_ext_drive.yml
group-by:
    - ComputerName
    - User
timespan: 1h
ordered: true
falsepositives:
    - Unknown
level: high

繰り返しになりますが、Sigma Correlations 仕様は開発中であり、変更される可能性があります。それでも、これは Sigma の機能の非常に便利な拡張になるので、今すぐプレビューしたいと思います。

相関のテスト

この検出の概念が形になり、仮説が私の相関ルールの形で展開されたので、より大きなサンプル サイズで検出をテストする時が来ました。私は Abuse.ch の MalwareBazaar リポジトリを利用しました。これは、タグ付けされたマルウェア サンプルの有用なライブラリを提供します。私は 10 個の QakBot HTML サンプルをダウンロードしました。ほとんどが pr0xylife によって報告されたもので、最初に表示された日付は 2022 年 7 月 11 日から 12 月 22 日までの範囲です。ラボ VM でサンプルを準備し、最初に表示された日付と「ヒューマンハッシュ」に従ってそれぞれに名前を付けました。プロパティ ((“dakota-earth-mockingbird-march”) などの人間が読める単語のランダムで一意のシーケンス:

私の 10 の素敵な HTML スマグリング サンプルはすべてテストする準備ができています

結果を追跡するために、Google スプレッドシートで簡単な表を作成しました。

被害者の VM ホストのクリーンなテスト前のスナップショットを作成し、各テスト後に元に戻して、テストを開始しました。10 個のサンプルのうち 7 個をテストした後、4 つのビルディング ブロックのシーケンスは完璧にカバーされました。しかし、8 番目のサンプルにヒットしたとき、チェーンの 4 番目のルールは実行されませんでした。これは、.lnk ファイルが cmd.exe や wscript.exe ではなく RunDLL32.exe を直接呼び出したためです。これで問題ありませんでした — シグマ ルールの条件を調整し、再テストしたところ、完全に一致しました。私は結果に満足しており、検出のユースケースをコミュニティと共有できることに興奮しています.

ボーナスラウンド!

多くの QakBot フィッシング攻撃では、.html 添付ファイルは使用されませんが、代わりにリンクが埋め込まれた悪意のある .pdf ファイル、または侵害された Web サイトでホストされている zip ファイルを指す古き良きフィッシング リンクが使用されます。私の検出がこれらのインスタンスをキャッチするのに十分柔軟であるかどうかをテストするために、@ExecuteMalware によって管理されている IOC リポジトリからの最近のいくつかの例でそれらをテストし、これらの URL ベースのドライブバイ攻撃も検出によってキャッチされることを発見しました。ここに記載されているファイルには、.wsf (Windows スクリプト ファイル) も含まれていました。これは、私がよく知らないファイル タイプでしたが、それでも検出されました。

最近の QakBot 攻撃で配布された Windows スクリプト ファイル (.wsf)

レジリエンス万歳!

結論

おめでとう!いくつかの密で複雑なトピックに関する長い投稿の終わりに到達しました。ここで参照されているすべての規則を見つけることができます。お読みいただきありがとうございます。QakBot、HTML Smuggling、Sigma、および相互関係に関する私のとりとめのない記事をお楽しみいただけたでしょうか。Sigma Correlations のローンチが本当に楽しみです。これは検出エンジニアリング コミュニティにとって大きなメリットであり、より高度な検出のユース ケースを共有できるようになります。

特にチェーンルールのビルディングブロックの1つが失敗し、調整が必要であることが示されたときは、テストがうまくいったことに本当に満足しています! 結局のところ、自分の仕事がすでに完璧だと思うのに、なぜテストする必要があるのでしょうか? 最後に、この経験は、私がすでに信じ始めていたこと、つまり、理解していないものを検出することはできないということを思い出させてくれました。マルウェアが何をするかを知りたいのであれば、実際に生きているマルウェアを実際に体験する以外に方法はありません。

以前の投稿で私が熱心に取り組んだ Detection Lab プロジェクトのおかげで、この実生活の経験はこれまで以上に多くの人々に届いています。最後に、pr0xylife、Brad (malware_traffic)、executemalware に感謝します。私たちがアクセス、分析、理解するために十分に文書化された QakBot マルウェア サンプルの元のリポジトリを提供してくれたことに感謝します。まさに教育の宝庫です!

どうすれば改善できるかについてのアイデア、コメント、または提案をお気軽にお送りください。私はまだこれに慣れていないので、敬意を表するフィードバックと批評をどんな形でも歓迎します.

いつものように、楽しい分析を!