TOR を利用した APT29 ドメイン

Meek traffic flow news

Mandiant は、少なくとも 2 年間、ロシアの国家攻撃者 APT29 が被害者の環境へのステルス バックドア アクセスのためにドメイン フロンティング技術を使用していることを観察してきました。ドメイン フロンティングについては、これらの技術を詳述した論文が発表されて以来、かなりの議論がなされてきました。ドメイン フロンティングは、人気のある Web サイトに対する正当な要求と見分けがつかないアウトバウンド ネットワーク接続を提供します。

APT29 は、The Onion Router (TOR) と TOR ドメイン フロンティング プラグイン meek を使用して、TLS 経由で Google サービスに接続しているように見える、暗号化された隠しネットワーク トンネルを作成しました。このトンネルは、正規の Web サイトへのトラフィックのように見えながら、ターミナル サービス (TS)、NetBIOS、およびサーバー メッセージ ブロック (SMB) サービスを使用して攻撃者にホスト システムへのリモート アクセスを提供しました。また、攻撃者は一般的な Windows エクスプロイトを利用して、認証なしで特権コマンド シェルにアクセスしました。

APT29 によるこれらの技術の使用について、DerbyCon 6.0 での「No Easy Breach」の講演の一環として最初に説明しました。このバックドアを最初に特定した方法と、バックドアが含まれていた壮大な調査の詳細については、スライドプレゼンテーションを参照してください。

ドメイン フロンティングの概要

Onion Router (TOR)は、インターネットにアクセスするユーザーに匿名性を提供しようとするプロキシ ノードのネットワークです。 TOR は、インターネット上の一連のプロキシ ポイントを介してインターネット トラフィックを転送します。各ノードは、パス内の前後のノードのみを認識します。このプロキシ ネットワークは、広範な暗号化と組み合わされているため、TOR インターネット アクティビティのソースを追跡することが非常に困難になります。 TOR クライアントは、TOR ネットワークを使用して、オープンなインターネットからアクセスできないサービスをホストすることもできます。これらのサービスは、一般的に、機能していない Silk Road などの「ダーク Web」サイトをホストするために使用されます。

通常、ネットワーク アナリストは、シグネチャ分析または TOR インフラストラクチャとの通信の識別を通じて、通常の TOR トラフィックを識別できます。Meekは、公開されている TOR 用の難読化プラグインであり、ドメイン フロンティング手法の実装です。 TOR トラフィックを隠すために、meek は Google やその他のインターネット コンテンツ配信ネットワーク (CDN) がトラフィックをルーティングする方法を利用します。 CDN は、多くの場合、あるサービスに関連付けられた IP アドレスから、同じネットワーク上でホストされている別のサービスに関連付けられたサーバーにトラフィックをルーティングします。これらの CDN のいずれかで meek リフレクション サーバーをホストすることにより、meek は既知のサービスへの正当な HTTPS 接続で TOR トラフィックを隠すことができます。

Meek は、いくつかの段階でトラフィックを難読化します。まず、TOR トラフィックを HTTP にエンコードし、リフレクション サーバーのホスト名を指定します (たとえば、デフォルト サーバー meek-reflect.appspot.com)。次に、その HTTP トラフィックを、リフレクション サーバーと同じ CDN クラウド (この例では Google) でホストされているサーバーへの正当な TLS 接続でラップします。 CDN サーバーが接続を受信すると、TLS トラフィックを復号化し、HTTP ヘッダーで指定されたホスト名を識別して、トラフィックをリフレクション サーバーにリダイレクトします。次に、リフレクション サーバーは、HTTP ストリームから元の TOR トラフィックを再構築し、そのトラフィックを TOR ネットワークに送信します。このトラフィックは、宛先にルーティングされます。このプロセスは、Google が所有する IP アドレス上のgoogle.comに対する通常の HTTPS POST リクエストを含むように見えるアウトバウンド ネットワーク接続を作成し、トラフィックをリフレクション サーバー経由で TOR ネットワークに個別に渡します。 Meek は、Firefox で使用される TLS サービスと暗号スイートを使用して、トラフィックをさらに難読化することもできます。このトラフィックを正当な接続と区別することは非常に困難であり、最初の TLS 接続と TOR トラフィックの両方を暗号化すると、トラフィックの意味のある分析が不可能になります。注: Google はリフレクション サーバー meek-reflect.appspot.com を一時停止しましたが、Google クラウドまたは他のサポートされている CDN 内の他のサーバーは同じ機能を実行できます。

図 1 は、meek を使用した場合のトラフィック フローを示しています。

Meek traffic flow
図 1: Meek トラフィック フロー
バックドアの概要

Mandiant は、APT29 が、TOR クライアントからのトラフィックをローカル ポート 139、445、および 3389 (それぞれ、NetBIOS、SMB、および TS) に転送する TOR 隠しサービスを有効にしていることを発見しました。これにより、攻撃者は、システムの隠し TOR (.onion) アドレスを使用して、ローカル ネットワークの外部からシステムへの完全なリモート アクセスを行うことができました。

攻撃者は、バックドアのインストールおよび実行中に、次のファイルとディレクトリを作成しました。

  • C:Program Files(x86)GooglegoogleService.exe
  • C:Program Files(x86)GoogleGoogleUpdate.exe
  • C:Program Files(x86)Googlecore
  • C:Program Files(x86)Googledata
  • C:Program Files(x86)Googledata
    • C:Program Files(x86)GooglegoogleService.exe
    • C:Program Files(x86)GoogleGoogleUpdate.exe
    • C:Program Files(x86)Googlecore
    • C:Program Files(x86)Googledata
    • C:Program Files(x86)Googledata0
    • C:Program Files(x86)Googledata0hostname
    • C:Program Files(x86)Googledata0private_key
    • C:Program Files(x86)Googledebug.log
    • C:Program Files(x86)Googlelock
    • C:Program Files(x86)Googlecached-certs
    • C:Program Files(x86)Googlecached-microdescs
    • C:Program Files(x86)Googlecached-microdescs.new
    • C:Program Files(x86)Googlecached-microdescs-consensus
    • C:Program Files(x86)Googlestate
    • C:Program Files(x86)Googlestart.ps1
    • C:Program Files(x86)Googleinstall.bat

  • C:Program Files(x86)Googledata
    • C:Program Files(x86)GooglegoogleService.exe
    • C:Program Files(x86)GoogleGoogleUpdate.exe
    • C:Program Files(x86)Googlecore
    • C:Program Files(x86)Googledata
    • C:Program Files(x86)Googledata0
    • C:Program Files(x86)Googledata0hostname
    • C:Program Files(x86)Googledata0private_key
    • C:Program Files(x86)Googledebug.log
    • C:Program Files(x86)Googlelock
    • C:Program Files(x86)Googlecached-certs
    • C:Program Files(x86)Googlecached-microdescs
    • C:Program Files(x86)Googlecached-microdescs.new
    • C:Program Files(x86)Googlecached-microdescs-consensus
    • C:Program Files(x86)Googlestate
    • C:Program Files(x86)Googlestart.ps1
    • C:Program Files(x86)Googleinstall.bat

    ホスト名

  • C:Program Files(x86)Googledata
    • C:Program Files(x86)GooglegoogleService.exe
    • C:Program Files(x86)GoogleGoogleUpdate.exe
    • C:Program Files(x86)Googlecore
    • C:Program Files(x86)Googledata
    • C:Program Files(x86)Googledata0
    • C:Program Files(x86)Googledata0hostname
    • C:Program Files(x86)Googledata0private_key
    • C:Program Files(x86)Googledebug.log
    • C:Program Files(x86)Googlelock
    • C:Program Files(x86)Googlecached-certs
    • C:Program Files(x86)Googlecached-microdescs
    • C:Program Files(x86)Googlecached-microdescs.new
    • C:Program Files(x86)Googlecached-microdescs-consensus
    • C:Program Files(x86)Googlestate
    • C:Program Files(x86)Googlestart.ps1
    • C:Program Files(x86)Googleinstall.bat

    private_key

  • C:Program Files(x86)Googledebug.log
  • C:Program Files(x86)Googlelock
  • C:Program Files(x86)Googlecached-certs
  • C:Program Files(x86)Googlecached-microdescs
  • C:Program Files(x86)Googlecached-microdescs.new
  • C:Program Files(x86)Googlecached-microdescs-consensus
  • C:Program Files(x86)Googlestate
  • C:Program Files(x86)Googlestart.ps1
  • C:Program Files(x86)Googleinstall.bat

ファイルgoogleService.exeは主要な TOR 実行可能ファイルであり、暗号化されたプロキシ接続の確立と維持を担当します。 GoogleUpdate.exeは、TOR 接続を難読化する meek-client プラグインです。これらのファイルは公開されており、次のハッシュが含まれています。

ファイル名 SHA256

googleService.exe fe744a5b2d07de396a8b3fe97155fc64e350b76d88db36c619cd941279987dc5
GoogleUpdate.exe 2f39dee2ee608e39917cc022d9aae39959e967a2dd70d83b81785a98bd9ed36

ファイルC:Program Files (x86)Googlecoreには、TOR サービスgoogleService.exeの構成情報が含まれています。サービスは次のように構成されました。

  • ポート 1、80、および 443 で通信する
  • meek プラグインを使用してトラフィックをhttps://meek-reflect.appspot.comにブリッジし、HTTPS および DNS リクエストを難読化して、 www.google.com宛てに見えるようにします
  • ポート 62304、62305、および 62306 からポート 3389、139、および 445 にそれぞれトラフィックを転送します。

図 2 は、TOR 構成ファイルのコアの内容を示しています。

TOR設定ファイル「C:Program Files(x86)Googlecore」の内容
図 2: TOR 構成ファイル「C:Program Files(x86)Googlecore」の内容

C:Program Files (x86)Googledata

The C:Program Files (x86)Googledata0hostname” file contained a single line with the TOR hostname for the system. This hostname was a pseudorandomly-generated 16 character alpha-numeric name, with the top-level domain (TLD) .onion.

hostname 」ファイルには、システムの TOR ホスト名を含む 1 行が含まれていました。このホスト名は、疑似ランダムに生成された 16 文字の英数字の名前で、最上位ドメイン (TLD) .onionが含まれていました。

C:Program Files(x86)Googledata

The C:Program Files(x86)Googledata0private_key file contained the TOR client RSA private key. Figure 3 displays the redacted contents of a sample private_key file.

private_keyファイルには、TOR クライアントの RSA 秘密鍵が含まれていました。図 3 は、サンプルのprivate_keyファイルの編集された内容を示しています。

サンプルの private_key の編集済みコンテンツ
図 3: サンプルの private_key の編集済みコンテンツ

攻撃者は、スクリプトstart.ps1およびinstall.batを使用して TOR サービスをインストールしました。インストール後、攻撃者はこれらのスクリプトをシステムから削除しました。ディレクトリC:Program Files(x86)Google内の追加ファイルには、TOR の操作からのキャッシュ データとログが含まれていました。

強化されたログによって PowerShell アクティビティの可視性を高めることに関する追加情報は、こちらで入手できます。

インストールと永続性

攻撃者は PowerShell スクリプトC:Program Files(x86)Googlestart.ps1を実行して TOR サービスをインストールし、「Sticky Keys」エクスプロイトを実装しました。このスクリプトは実行後に削除され、復元されませんでした。

「Sticky Keys」バイナリC:WindowsSystem32sethc.exeを Windows コマンド プロセッサcmd.exeに置き換えることで、攻撃者はシステムへの認証なしで特権 Windows コンソール セッションにアクセスしました。 「スティッキー キー」は、ユーザーが一度に複数のキーを押さずに Windows 修飾キーをアクティブにできるアクセシビリティ機能です。 Shift キーを 5 回押すと、「Sticky Keys」がアクティブになり、 sethc.exeが実行されます。これをcmd.exeに置き換えると、システム レベルのコマンド シェルが開きます。攻撃者は、このシェルから、ログオン画面 (事前認証) からでも、システムでのアカウントの追加や変更など、任意の Windows コマンドを実行できます。システムへの RDP トラフィックをトンネリングすることにより、攻撃者は、この単純でよく知られたエクスプロイトを使用して、永続的なアクセスと権限昇格の両方を得ることができます。

インストール スクリプトstart.ps1は、システムの再起動後も永続性を維持するために、 Google Updateという名前の Windows サービスを作成しました。表 1 に、「Google Update」サービスのレジストリの詳細を示します。

TOR Google Update Windows サービスのレジストリの詳細
表 1: TOR Google Update Windows サービスのレジストリの詳細

また、このスクリプトは、ターミナル サーバーのレジストリ値fSingleSessionPerUserを変更して、同じアカウントを使用する複数の同時 Windows セッションを許可し、 fDenyTSConnectionsを変更して、ターミナル サービス接続を許可しました。表 2 は、これらのレジストリ キーの変更された値を示しています。

表 2: start.ps1 によって実行されるレジストリの変更
表 2: start.ps1 によって実行されるレジストリの変更
結論

APT29 は、これらの技術が広く知られるずっと前に、ドメイン フロンティングを採用しました。公開されている実装を採用することで、ネットワーク トラフィックを隠すことができました。研究や開発は最小限に抑え、特定しにくいツールを使用していました。ネットワーク上でこのアクティビティを検出するには、TLS 接続と効果的なネットワーク署名を可視化する必要があります。ただし、機能を急速に開発し、ネットワーク トラフィックの隠蔽に投資する高度な脅威グループに対処する場合は、効果的なエンドポイントの可視性が不可欠です。ラテラル ムーブメントや新しい永続性の作成など、潜在的に興味深いイベントや攻撃者の方法論を監視することで、防御側はこれらのステルスな方法論を特定できます。

参照: https://www.mandiant.com/resources/blog/apt29-domain-frontin

Comments

Copied title and URL