第 65 章: トップ APT バックドア Sunburst の設計アイデアを探る (Solarwinds サプライ チェーン攻撃パート 2)

e37b4ce3c16aa3bb821cd3de87d04df6.png

 Part1 序文 

皆さんこんにちは、私の名前は ABC_123 です先週「史上最も深刻なAPTサプライチェーン攻撃、ソーラーウィンドによる欧米攻撃のフローチャートと分析(前編)」という記事を書きましたが、かなり反響がありました。この APT サプライ チェーン攻撃は非常に複雑であるため、約 5 ~ 6 つの記事を書く必要がありますこの号では引き続き 2 番目の記事を共有し、そこで使用されている Sunburst バックドアの設計思想と、それがトラフィック検出をバイパスする方法について説明します。

ABC_123 は、インターネット上の多数の解析記事を要約し、ほとんどの人が理解できないバイナリ解析コンテンツを除外し、最もわかりやすい言語を使用して、このトップ バックドアの設計思想を誰もが理解し、全員の攻撃と防御にインスピレーションをもたらすよう努めています。この記事を読めば、APT のトップ組織が設計したバックドアがいかに強力であるかを誰もが直感的に体験できると思います。

 Part2 サンバーストバックドアレビュー 

  • サンバーストの設計アイデアとワークフロー チャート

いつものように、まずはABC_123氏が描いたSolarwindsサプライチェーン攻撃におけるSunburstバックドアの設計思想とフローチャートを、多数のSunburstバックドアサンプル解析記事からまとめた画像を公開します。 、プロセス全体を詳しく説明します。

bc6bac935ece0f0aeeb3569aa9b90c9f.png

Sunburst バックドアが Orion ソフトウェアにどのようにコンパイルされるかについては、前の記事で詳しく説明されているため、ここでは説明しませんSunburst は、ホワイトリスト効果が組み込まれており、さまざまな保護手段を完全にバイパスする、合法的な Solarwinds の法的デジタル署名を保持しています。最後に、dll ファイルは Orion ネットワーク管理ソフトウェアの更新パッチにパッケージ化されました。被害者がこのパッチをインストールすると、Sunburst バックドアがトリガーされます。ただし、すぐには実行されません。一連の複雑なプロセスを経ます。被害者のコンピュータ環境で実行されているかどうか、ウイルス対策保護があるかどうか、親プロセスが適切かどうかなど、実際の環境にあるかどうかを判断するための初期化条件。

dc5f3ad9b4c76092f19f3ae69277f14d.png

  • Sunburst バックドアの 3 つの状態

Sunburst バックドアは、Solarwinds の Orion ソフトウェアの XML 構成ファイルから ReportWatcherRetry の値を読み取り、実行を継続するかどうかを決定します。値が 3 でない場合にのみ実行を継続します。

XML 構成ファイルの ReportWatcherRetry 値は、3、4、および 5 の 3 つの値を返します。これらは、それぞれ Truncate、New、および Append の 3 つの永続状態に対応します。デフォルト値は 4 (新規) です。4 (新規) はバックドアが初めて実行されていることを示し、5 (追加) はバックドアが以前にシステム上で実行されていたが、所定の条件 (アクティブなウイルス対策ソフトウェアなど) により終了したことを示し、3 ( Truncate) は、バックドアをすぐに実行する必要があることを意味します。実行を停止します。

0f6c65648101951c7ba23570cb2db10c.png

a2597ae74dbbe5d4c4f0527d97a216e1.png

 Part3 バックドア発動に必要な8つの条件 

注:実行条件の判断フェーズ中に、Sunburst バックドアはOrion ImprovementmentBusinessLayer.DelayMin()メソッドを頻繁に使用して、コードの実行速度を遅らせるために 30 ~ 120 分間ランダムにスリープ/遅延させます。これにより、自動分析によって発見される可能性が低下する可能性があります。そして保護ソフト。

 1   唯一のインスタンスの実行を決定する

C# コードの isAlive メソッドを通じて決定します。

 2 親プロセスを決定する

親プロセス名のハッシュ値を計算することで、実行中のプロセスが SolarWinds.BusinessLayerHost.exe か SolarWinds.BusinessLayerHostx64.exe であるかが判断され、ハッシュ アルゴリズムがカスタマイズされます。この手順は、サンドボックス検出やデバッグ ツールを回避し、セキュリティ担当者による自動サンドボックス検出や分析を回避するためのものです。

 3 実行する前に 10 日間待ってください

バックドアのアクティブ化時間をランダムに設定し、悪意のあるコードを徐々にトリガーするまで 12 ~ 14 日間待ちます。この目的は、世界中の 18,000 人を超える Orion ソフトウェア ユーザーの管理対象サーバーを段階的にオンラインにし、計画の暴露につながるトラフィック監視装置による集中的なオンライン検出と警報を回避することです。多くのユニットは 7 を過ぎるとログをクリアするため、十分な待ち時間によってログ レコードが減少する可能性もあります。

 4   複数のインスタンスが実行されないように名前付きパイプを作成する

バックドアは、583da945-62af-10e8-4902-a8f205c72b2e という名前の名前付きパイプを作成し、複数のサンプルを実行します。

 5 設定ファイルのステータスパラメータを確認する

XML 構成項目 ReportWatcherRetry の値を確認して、Sunburst バックドアの現在の状態を確認します。New または Append 状態の場合は、実行を続行します。

 6 ローカルドメイン名のブラックリストチェック

1.  AD ドメインを取得し、ハッシュと正規表現を使用して、それが swdev.local、swdev.dmz、saas.swi などのブラックリスト内の値であるかどうかを判断します。ここで、swi は「SolarWInds Internal」および swdev に対応します。 「SolarWinds Develop」に相当します。2.   Solarwinds キーワードを含めることはできません。3.ドメイン名は正規表現 (?i)([^az]|^)(test)([^az]|$) と一致してはなりません。簡単に言うと、テスト環境のドメイン名のように見えてはなりません。

795fc294fb31d36f7064ca44df51d6f0.png

 7 アンチソフトウェアのプロセス、サービス、ドライバーが存在するかどうかを検出する

1. プロセスブラックリストチェック

SearchAssemblies メソッドを使用して、プロセス ブラックリストがあるかどうかを確認し、Windbg、Winhex、Autoruns、Wireshark、dnSpy、apimonitor-x64、fiddler、idaq64、ollydbg、procdump64、x64dbg などのプロセスがあるかどうかを確認します。

0377d24b2fead39dbb6baee0b83d259e.png

2.サービスブラックリストチェック

SearchServices メソッドを使用して、Windows Defender、Carbon Black、Crowdstrike Falcon、FireEye - EDR などのブラックリスト サービス名があるかどうかを検出します。ブラックリストに登録されたサービスが見つかった場合、Sunburst はレジストリを変更してそのサービスを無効にします。

3. セキュリティソフトドライバーのブラックリストチェック

SearchConfigurations メソッドを通じて WMI クエリを呼び出し、* From Win32_SystemDriver を選択して、groundling32.sys などのドライバー ブラックリストがあるかどうかを検出します。

b802d20e3779b89a8a3588fe36ae36e0.png

e6041b3c330de5f84e785228b40c7e36.png

 8 ネットワーク接続を確認する

CheckServerConnection メソッドを使用して、api.solarwinds.com ドメイン名を解析し、ネットワーク接続テストを実行します。テストに合格した場合のみさらに実行され、そうでない場合は終了して次の実行を待ちます。

23ee57418ce8f299a547f500d20b0c0f.png


 Part4 バックドア DGA ドメイン名通信段階 

  • DGA ドメイン名の通信段階に関する前提知識

 1 dga ドメイン名通信段階の概要

上記の環境テストに合格すると、Sunburst バックドアは dga ドメイン名を使用した DNS 通信段階に入ります。DGA ドメイン名通信には 2 つの段階があり、第 1 段階では主にコンピュータのドメイン名情報を攻撃者 C2 にフィードバックし、攻撃者はこの情報に基づいてターゲットをフィルタリングできます。第 2 段階では主にセキュリティ保護ソフトウェアのステータス情報をフィードバックします。 、攻撃者がターゲットのウイルス対策ソフトウェア、edr、およびその他の導入状況を理解できるようにします。この情報は暗号化され、DGA ドメイン名の最初のセグメントに隠されており、Sunburst バックドア攻撃者は、Sunburst バックドアによって収集されたコンピュータ ドメイン名情報とセキュリティ保護ソフトウェア情報に基づいて、イントラネットの水平化の対象となる約 100 の貴重なターゲットを選択しました。

 2 一意の識別子 userid

一部の被害者のコンピュータの基本情報は大きすぎるため (たとえば、コンピュータのドメイン名が長すぎる)、コンピュータのドメイン名情報を完全に送信するには複数の DGA ドメイン名要求を送信する必要があります。異なるコンピュータからの dga ドメイン名の要求を区別するために、Sunburst は同じコンピュータからの dga ドメイン名のセグメント化された情報を復号化して結合し、各コンピュータの一意の識別子 userid を計算します。

感染した各コンピュータのuserid は、被害者の MAC アドレス、Windows ドメイン名、および Windows コンピュータの一意の識別子 GUID (つまり、Windows のインストール中にランダムに生成され、HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid に保存されるレジストリ値) で構成されます。一意のユーザー ID は、カスタム暗号化アルゴリズムを通じて 3 つの値から計算されます。

 3 バックドア DGA ドメイン名の生成形式

Sunburst で使用される dga ドメイン名は非常に巧妙に処理されており、一般的な形式は次のとおりです。

*.appsync-api.eu-west-1.avsvmcloud.com (* は DGA のサブドメイン名を表します)

*.appsync-api.us-west-2.avsvmcloud.com (* は DGA のサブドメイン名を表します)

*.appsync-api.us-east-1.avsvmcloud.com (* は DGA のサブドメイン名を表します)

*.appsync-api.us-east-2.avsvmcloud.com (* は DGA のサブドメイン名を表します)

このうち、各 DGA ドメイン名の右側にある 3 つの小さなセグメントはバックドア プログラムのハードコーディングされた文字列から来ており、DGA ドメイン名の最初のセグメントのアスタリスク部分はドメイン名に基づいて動的に生成され、被害者サーバーのその他の情報 以下は、DGA 段階でのドメイン名生成アルゴリズムの例です。

b138bb986e04c17a1b847f43ff82af3b.png

  • バックドアの DGA ドメイン名通信ステージ

 1 フェーズ 1 DGA ドメイン名通信

この段階での Sunburst の主なタスクは、複数の暗号化層を経た後、被害者のコンピュータのドメイン名を DGA ドメイン名に組み込み、それを C2 に戻すことです。一部のコンピュータのドメイン名が長すぎる場合、Sunburst バックドアは情報を分割し、毎回 14 文字を送信し、情報の送信を完了するために複数の DNS リクエストを送信します。攻撃者がこのコンピュータのドメイン名に興味がある場合、DGA ドメイン名通信の第 2 段階に入り、Sunburst バックドアがアクティブ化されて「追加」状態に変わります。

以下の図に示すように、これらは、トラフィックからキャプチャされた、Sunburst の dga ドメイン名通信の最初の段階の dga ドメイン名のトラフィック サンプルです。2 番目の列は、Sunburst によって収集された復号化された被害者のドメイン名です。攻撃者は、復号化されたドメイン名情報を使用して、ターゲットの被害者ユニットが価値があるかどうかを判断しますこれらのドメイン名を解読して分析したところ、Cisco や Intel を含む多くのテクノロジー企業、米国の多くの大学や政府機関がこの攻撃の被害を受けた疑いがあることが判明しました。

1210b11d077db467e3f9af0fa2f2919e.png

 2 フェーズ 2 DGA ドメイン名通信

この段階で、Sunburst バックドアは主に、被害者のコンピュータのウイルス対策保護ステータス情報の C2 サーバーへの送信を完了します。Sunburst バックドア ステータスが追加 (アクティブ化) になると、DGA ドメイン名の第 2 フェーズが開始されます。生成された DGA ドメイン名には、コンピュータの一意の識別子と、組み込みサービス ブラックリストのセキュリティ製品テスト ステータス情報 (セキュリティ製品のテスト ステータス情報が含まれるかどうかを含む) が含まれます。存在するかどうか、まだ実行中かどうか)、閉じられているかどうかなど)、最後の DNS C2 フェーズとの通信が成功したかどうか。

9971e86a24b05346cf314f68f7cf03df.png

 3 トラフィック監視をバイパスするコマンドトリガーとして使用される IP アドレス

通常、DNS にクエリを実行する場合、たとえば google.com にアクセスする場合、ドメイン名は 142.250.*.* に変換され、IP アドレスは A レコードに格納されます。Sunburst バックドアも C2 ドメイン名を解析して IP アドレスを取得します が、Sunburst の目的はこれらの IP アドレスを通信に使用することではなく、C2 ドメインによって解決されたさまざまな IP セグメントの IP アドレスに基づいてさまざまな悪意のある操作をトリガーすることです。これは非常に巧妙で、 非常に隠蔽された指揮制御形式であり、交通監視装置によって検出するのは困難です。

攻撃者は、IP アドレスをランダムに選択してさまざまな動作を引き起こすのではなく、Google、Amazon、Microsoft セグメントの IP アドレスに属するように C2 ドメイン名の解決 IP アドレス範囲を制御し、検出の可能性を減らします。繰り返しますが、マルウェアはこれらの IP アドレスと通信しません。

a5c78858acb2f9f7ab19a2b585227814.png

上の図に示すように、Sunburst 開発者は、AddressFamilyEx 構造で IP アドレスを定義し、DNS 解決によって返されたさまざまな IP アドレスに基づいて、さまざまな悪意のある動作をトリガーしますSunburst バックドアの C# コードを読むと、ドメイン名をさまざまなカテゴリの IP アドレスに解決する C2 に基づいて、Sunburst バックドアが約 5 種類の主要な操作を実行することがわかりました。

1.未送信のドメイン名フラグメント情報を送信し続ける; 2.ターゲット コンピュータのセキュリティ保護製品のステータス情報を送信する; 3.第 2 段階で C2 チャネルを実行する; 4.クリーンアップして終了する; 5.にリセットする初期状態、そして最初の実行と同様です。

最後に、全体像を示します。

ce274233bb63db29c8b32ddef3d2fce5.png

 4 C2 はドメイン名解決 IP を制御し、Sunburst のフローチャートを間接的に制御します

次に、ABC_123 は、実際の戦闘プロセス中に、C2 エンドが DGA ドメイン名のさまざまな IP への解決を制御することによって、Sunburst バックドアの動作を制御する方法のプロセス全体を示すフローチャートを作成しました。通信プロセスは非常に複雑なので、ABC_123 が特別記事を作成してプロセス全体を詳しく説明します

d26fa29a7202a301966b3fd53e3512d5.png

 Part5 HTTP C2通信段階(攻撃指示の取得と実行)

前の 2 つの段階での DGA ドメイン名通信を通じて、攻撃者は貴重なターゲットを選択し、Sunburst バックドアは次の段階である HTTP C2 通信段階に入りました。この段階では、DNS 戻りデータに CNAME レコードが存在し、Sunburt バックドアは HTTP C2 通信にこのドメイン名を使用します

この段階で、Sunburst は、HTTP C2 通信フェーズ要求を処理するために HttpHelper.Initialize メソッドを実行する新しいスレッドを開始し、攻撃者によって送信された命令を受信して​​実行し、命令の実行結果を暗号化して通常の命令と混合します。パケットは攻撃者の C2 サーバーにフィードバックされます。Sunburst バックドアを開発した攻撃者は、トラフィックを監視するために、この段階で非常に巧妙なトラフィック暗号化方式を設計しました。次に、ABC_123 がそれについて詳しく説明します。

まず、HTTP C2 通信フェーズにおける Sunburst バックドアの 3 つの異なる URL アクセス フォームが、次の 3 つの状況に対応して掲載されています。

1. Sunburst は継続的に .xml URL にアクセスし、C2 側からの指示をアクティブに取得します。URL 形式は次のとおりです。

hxxps://3mu76044hgf7shjf.appsync-api.eu-west-1.avsvmcloud.com/swip/upd/Orion.Wireless.xml

2.サンバーストは命令の実行結果を C2 エンドに返します データが 10,000 を超える場合、URL 形式は次のようになります。

hxxps://3mu76044hgf7shjf.appsync-ap.us-east-2.avsvmcloud.com/pki/crl/492-ca.crl

3.サンバーストは命令の実行結果を C2 エンドに返します データが 10,000 以下の場合、URL の形式は次のとおりです。

hxxps://3mu76044hgf7shjf.appsync-api.us-east-1.avsvmcloud.com/fonts/woff/6047-freefont-ExtraBold.woff2

660567441a0ce5c1e11a374ac29f0c92.png

次に、Sunburst バックドアが C2 命令を取得して実行し、実行結果を C2 側に返す 3 つのプロセスについて説明します。

 1  Sunburst は .xml URL にアクセスして指示を受け取ります

攻撃者によって送信された命令を取得するために、Sunburst バックドアは C2 側の .xml で終わる URL にアクセスする http GET リクエストを継続的に開始し、各リクエストの後、setTime で設定された時間スリープします。これらの XML ファイルは、.NET アセンブリに関連する通常の XML ファイルとして偽装され、攻撃者が発行した命令はさまざまなステガノグラフィー手法によってファイル内に隠されますSunburst は、C2 から返された XML ファイルの内容を読み取り、独自の復号化アルゴリズムを使用して、攻撃者が送信した命令を XML ファイルから抽出して実行します。

Sunburst が GET リクエストを開始するために使用する URL パスはランダムであり、特定のアルゴリズムに従ってランダムに構築されます。これは、IOC の検出を防ぐためにも行われます次の URL の場合:

hxxps : //3mu76044hgf7shjf.appsync-api.eu-west-1.avsvmcloud.com/swip/upd/Orion.Wireless.xml

Sunburst バックドアは、主に黄色の部分 /swip/upd/<ランダム コンポーネント>.xml の URL リクエストを変更します。<ランダム コンポーネント> の値選択アルゴリズムは比較的複雑で、各小さなセグメントは異なる比率が設定されてランダムに選択されます。エラー コードの最後の桁はランダムな文字ではなく、0 または 1 の値をとり、前のコマンド要求が成功したかどうかを示すことに注意してください。通常、0 は成功を示し、1 またはその他の値はエラーを示し、最後に .xml 接尾辞が追加されます。

8fb52f06e1431654d3096ec189169968.png

最終的に、Sunburst はアルゴリズムに基づいて次の URL をランダムに構築し、C2 エンドにアクセスし、発行された命令を取得します。

https[:]//infinitysoftwares.com/swip/upd/SolarWinds.CortexPlugin.Nodes-5.2.1.xml

https[:]//infinitysoftwares.com/swip/upd/Orion.Wireless.UI-3.1.0.xml

https[:]//infinitysoftwares.com/swip/upd/Nodes-1.2.0.xml

最初の 16 リクエストでは、毎回異なるランダムに生成された URL パスが使用されますが、それ以降は、以前に使用されたランダムに生成された URL パスが繰り返される場合があります。この段階では、暗号化された以前の userId を含む固定のIf-None-Matchカスタム リクエスト ヘッダーが存在します

以下の図に示すように、これは、Sunbrust が .xml で終わる URL の GET リクエストにアクセスした後に攻撃者の C2 サーバーから返される XML 形式のコンテンツであり、攻撃者が発行した命令が暗号化されて保存されます。

7e83962460a6a15ca7f2680ce5436cdb.png

 2   Sunburst は命令を解析して実行します。

Sunburst バックドアは、XML リターン テキストから攻撃者が発行した命令を復号化して抽出し、ExecuteEngine メソッドを通じて対応する命令を実行します。JobEngineの値を条件として使用し、コマンド ライン パラメータで構成されるコマンドを実行しますこれらの命令から、Sunburst バックドアによって実行される操作は非常に限定されていることがわかります。つまり、攻撃者が結果をさらに拡大したい場合は、他のツールを使用してより複雑な操作を実行する必要があります。これが、攻撃の第 3 段階です。 CobaltStrike バックドア。

fceb7c4eed316fdf62d6c8b96a146c34.png

1.  命令が JobEngine.SetTime として解析される場合、各リクエストの遅延時間を設定します。

2.  Job.CollectSystemDescription を実行すると、コンピュータのドメイン名、管理者 SID、ローカル ホスト名、ユーザー名、オペレーティング システムのバージョン情報、システム パス、ネットワーク アダプターのステータス、登録ユーザーの会社名、登録ユーザー名、システム バージョンなどの情報が収集されます。番号、システムディレクトリなど。

3.   JobEngine.UploadSystemDescription を使用する場合は、HTTP リクエストを作成し、リクエスト結果を C2 サーバーに送信します。

4.   JobEngine.RunTask が実行されると、指定されたファイル パスとパラメータに基づいて新しいプロセスが開始されます。

5.   JobEngine.GetProcessByDescription を使用すると、プロセス リストが取得され、プロセス ID、プロセス名、親プロセス ID、プロセスに対応するユーザー名などのプロセス パラメーターに従ってプロセス情報が取得されます。

6.   JobEngine.GetFileSystemEntries では、パラメータの正規表現に従ってファイルとディレクトリの情報を一覧表示します。

7.   JobEngine.KillTask​​ の場合、Sunburst は指定された PID を持つプロセスを強制終了します。

8.   JobEngine.SetTime で遅延秒数を設定します。2 回目のトリガー時に、最初の設定時間が 300 秒未満の場合は、2 倍の遅延が実行されます。

9.   JobEngine.FileExists を使用する場合、指定されたパスが存在するかどうかを確認します。

10.   JobEngine.DeleteFile の場合、指定されたパスを削除します。

11.   JobEngine.ReadRegistryValue を呼び出すときに、レジストリ キーの値を読み取ります。

12.   JobEngine.SetRegistryValue を呼び出すときに、レジストリ キーの名前、種類、およびパスを設定します。

13.   JobEngine.DeleteRegistryValue 使用時のレジストリキーの削除

14.   JobEngine.GetRegistrySubKeyAndValueNames を呼び出すと、指定されたすべての項目名とデータを取得します

15.   JobEngine.WriteFile の場合、受信した Base64 文字列を復号化してファイルに書き込みます。書き込み後に遅延関数保証がトリガーされ、攻撃者がファイル処理プロセスに非常に注意していることがわかります。

16.   JobEngine.Reboot 時に、ターゲット コンピュータを再起動します。

17.   JobEngine.Exit の場合、現在のスレッドを終了し、次回ロードされて実行されるまで待ちます。

18.  第 3 段階のバックドア プログラムである TEARDROP と RAINDROP も、CobaltStrike バックドアをロードするために使用される指示に従って配信されます。

 3  Sunburst はコマンドの実行結果を C2 に送り返します。

Sunburst バックドアが XML ファイルから攻撃者によって発行された命令を復号化すると、Sunburst バックドアはその命令を実行し、結果を C2 サーバーに返します。データ返信フェーズ中、Sunburst バックドアは GET リクエストを送信せず、返されたデータ結果のサイズに基づいて、POST リクエストまたは PUT リクエストを通じてコマンド実行結果を C2 サーバーに送信することを選択しますSunburst は、セキュリティ担当者を混乱させるためにリクエストを正規の Solarwinds リクエスト リンクまたは静的リソースとして偽装し、Sunburst によって送信された http リクエストを正規のトラフィックとして誤って最初に評価します。

1. 返されたデータが 10,000 バイトを超える場合サンバーストは POST リクエスト経由で送信されます。POST リクエストは、Content-type フィールド、application/octet-stream を設定します。この場合、URL の形式は次のようになります。

hxxps://3mu76044hgf7shjf.appsync-api.us-east-2.avsvmcloud.com/pki/crl/492-ca.crl

リクエスト URI パスの形式は/pki/crl/{0}{1} {2}.crl です。ここで、{0} は 100 ~ 10000 の乱数です。{1} は組み込みの文字列リストです。ランダムに選択されます。スプライシング; {2} は、最後のリクエストのエラー コードを表します。場合によっては、この値は空です。最終的に、.crl サフィックスが URL の末尾に追加されます。

dfa1f3a88738f06087d6c733c5453d9a.png

2. 返されたデータが 10,000 バイト以下の場合Sunburst は、PUT リクエストを通じてコマンドの実行結果を C2 サーバーに送り返します。PUT リクエストによって返されたデータは、Solarwinds によって合法的に使用されている Orion Improvement Plan (OIP) メッセージと同様の JSON ドキュメントに変換されます。json データ内のメッセージが送信されるデータです。http リクエストを送信する場合、リクエストはheader 内容が設定されます-type: application/json

13ca154142bddcb2327849d13fcfff52.png

この段階でアクセスされる URL の形式は次のとおりです。

hxxps://3mu76044hgf7shjf.appsync-api.us-east-1.avsvmcloud.com/fonts/woff/6047-freefont-ExtraBold.woff2

このうち、URL 形式は次の 2 つの状況に分けられます。

1. /fonts/woff/{0}-{1}-{2}-webfont{3}.woff2

{0} は 100 ~ 10,000 の乱数です。{1} は組み込みリスト文字列リストから 1 つをランダムに選択します。{2} は組み込みリスト文字列リストから 1 つをランダムに選択します。{3} はエラー コードを表します。最後に要求された操作。

16100ee930f0e9c90f826cc410e69686.png

2. /fonts/woff/{0}-{1}-{2}{3}.woff2

ここで、{0} は 100 ~ 10,000 の乱数です。{1} は組み込みリスト文字列リストから 1 つをランダムに選択します。{2} は組み込みリスト文字列リストから 1 つをランダムに選択します。{3} はエラー コードを表します。最後のリクエストの。

63555b048f3e0972286c5022df6e4e44.png

Sunburst は、命令の実行結果を次の JSON 形式の POST リクエスト パケットに隠蔽し、C2 サーバーに送り返します。

19f188d8f4bc78f2ec1b8b8589413665.png

 サンバーストがフェーズ 3 武器を 4 個 ドロップ

いよいよサンバーストも第3ステージに突入します。まず、vbs スクリプトとローダー プログラムをダウンロードし、C:\Windows\ ディレクトリに配置して正規のファイルに見せかけます。次に、Sunburst は、イメージ ハイジャック テクノロジを使用して、レジストリを変更することで、dllhost.exe を wscript.exe C:\Windows\[folder]\[trigger].vbs コマンドにバインドしました。dllhost.exe は、Windows でランダムに起動されるプログラムです。の場合、攻撃者は vbs スクリプトをさらに実行するために、dllhost.exe が実行されるのを静かに待ちます。この時点で、Sunburst バックドアはその使命を完了しており、その後の操作は Sunburst とは何の関係もありません

次に、vbs スクリプトは次の操作を実行します。rundll32.exe を実行し、前の手順で作成した悪意のある dll ファイルをロードし、dllhost.exe のイメージ ハイジャック レジストリをクリーンアップし、トレースをクリーンアップして、最後にローダー プログラムを実行して CobaltStrike をロードします。バックドアを攻撃し、イントラネット上で水平方向の操作を開始します。第三段階の詳細な操作については、ABC_123が改めて記事を書いて解説しますので、楽しみにしていてください

2e5df9d4cfa5fea7ab2b2fb1f1f3c7f2.png

 Part6 まとめ 

1.   Sunburst バックドアは攻撃者の要件を満たしている必要があり、セキュリティ保護ソフトウェアは攻撃者が予期した状況下で実行を継続します。そうでない場合は、保護ソフトウェアのステータスを変更する以前の操作が終了するか、再試行されます。 APT攻撃者と通常の犯罪者の重要な違いの1つは。

2.   IOC の検出に抵抗するために、Sunburst バックドアの作成者は、巧妙な DGA ドメイン名生成アルゴリズムとランダム URL パス生成アルゴリズムを設計しました。さらに、2 つの DGA ドメイン名リクエストの間隔は、丸 1 日にも及ぶ場合があります。そして攻撃プロセスは非常に秘密裏に行われます。

3.   HTTP C2 通信段階で、Sunburst が被害者のコンピュータから機密情報を返すと、情報を暗号化して XML アセンブリ ドキュメントまたは JSON ドキュメントに保存し、場合によっては、Solarwinds 特別プロトコルの通信トラフィックを意図的に模倣します。この方法は、トラフィック監査での検出が困難な場合に使用されます。

4.   APT 組織は、C2 ドメイン名を異なる IP アドレス セグメントに解決することで、Sunburst バックドアの動作を間接的に制御しますが、この攻撃動作はトラフィック監査中に検出するのが困難です。

5.  攻撃者は、Sunburst バックドアのさまざまな状態を示す、Orion ソフトウェアの XML 構成ファイルに異なる数字 3、4、および 5 を書き込みます。Sunburst バックドアは、これらの値を読み取り、さまざまな操作を実行します。このプロセスもまた、非常に秘密です。

28b524ad28915e1e54d313b026054ea3.png

パブリック アカウントは、APT イベント分析、レッド チームの攻撃と防御、ブルー チームの分析、ペネトレーション テスト、コード監査などを含むネットワーク セキュリティ テクノロジの共有に重点を置いています。1 週間に 1 つの記事で、99% がオリジナルですので、ご期待ください。

連絡先: 0day123abc#gmail.com(#を@に置き換えてください)

おすすめ

転載: blog.csdn.net/m0_71692682/article/details/131346196