ナビゲーションをスキップする
BlackBerry ブログ

PYSA で多用される ChaChi:新しい GoLang RAT

本ブログ記事は、2021年6月23日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。

 

エグゼクティブサマリー

BlackBerry Threat Research and Intelligence SPEAR® Team は、Windows® システムを標的とする、以前は名前が付いていなかった Golang RAT (リモートアクセス型トロイの木馬) を追跡してきました。私たちは、この RAT に ChaChi という名前を付けました。このトロイの木馬は、PYSA (別名 Mespinoza) ランサムウェアのオペレーターが世界中の被害者を攻撃するツールセットの一部として使用しており、ごく最近では教育機関がその標的となっています。

Go (別名 Golang)で作成された悪意のあるソフトウェアの拡大するリストに、新たな項目として ChaChi が加わりました。Go は比較的新しいプログラミング言語です。これは新しい現象であるため、解析プロセスに使用する主要ツールの多くは対応に追われている状況です。そのため、Go 言語の解析はより困難なものになります。

少なくとも 2020 年の前半には ChaChi の感染が報告されていました。この当時は、サイバーセキュリティ業界から大きく注目されることはありませんでした。ChaChi の既知の亜種が最初に使用されたのは、フランスの地方自治体のネットワークに対する攻撃 でした。この攻撃のときに、CERT France が 発行した文書 に侵入の痕跡(IoC)としてこの亜種が記載されました。

ChaChi の最初の亜種は、PYSA のオペレーターが武器化している、新しいツールであることは明らかでした。というのも、確認された亜種の大部分で使用されていた、難読化、ポート転送、DNS トンネリングの機能を欠いていたからです。現在のツールの形に ChaChi が急速に進化するために、一定の時間を要したことをこれらの攻撃は示しています。

その後、BlackBerry のアナリストは、PYSA ランサムウェアのオペレーターがキャンペーンで導入した、より最近の改良された ChaChi のバージョンを確認しました。このキャンペーンでは、米国内の教育機関に標的が移行し、FBI の報告にあるようにその活動は最近増加しています。

BlackBerry は多くの調査を実施し、被害者の環境のホストで ChaChi も確認された PYSA ランサムウェアに関わるインシデントに対処してきました。

以下に、PYSA キャンペーンの要点を示します。

  • 予防の回避: アンチウイルスと他の重要なサービスのアンインストール/停止/無効化を実行する PowerShell スクリプト
  • 資格情報へのアクセス: Mimikatz (comsvcs.dll)を必要とせずに LSASS から資格情報をダンプ
  • 検知: Advanced Port Scanner を使用した内部ネットワークの列挙
  • 永続性: サービスとして ChaChi をインストール
  • 水平移動: RDP および PsExec
  • 流出: ChaChi トンネルを使用した可能性(未確認)
  • コマンドアンドコントロール(C2): ChaChi RAT
 

 

概要

ChaChi という名前は、RAT における 2 つの重要なコンポーネントである Chashell と Chisel に由来します。この 2 つのツールは、マルウェアのオペレーターが意図したアクションを実行するために使用されます。これにより、この機能を遂行するために専用のツールを作成しなくても済みます。

PYSA の最初のバージョンは、2018 年の後半以降に広まるようになりました。この脅威の名前は、暗号化したファイルの名前変更に初期の亜種が使用していた拡張子(.PYSA)と、その被害者に警告したランサムノート “Protect Your System Amigo (システムを保護しなさい、アミーゴ)” に由来します。

この脅威は Mespinoza と呼ばれることもあります。この名前は、残されたランサムノートで使用されたメールアドレスから付けられました。この記事の執筆時点では、PYSA/Mespinoza ランサムウェアキャンペーンの背後にいる脅威アクターは公式には特定されていません。

PYSA キャンペーンは、比較的新しいタイプのマルウェアの最新事例です。PYSA キャンペーンでは、エクスプロイトと脆弱性を検索することによって新しい被害者のマシンを見つける、自動化された伝播に依存するのではなく、「大物狩り」のスタイルに従います。これは、特定の標的に対する、人間主導の管理された攻撃です。

これは、初期の有名なランサムウェアキャンペーンである NotPetyaWannaCryとは異なる、活動における顕著な変化です。これらのランサムウェアでは、企業ネットワークとセキュリティの設定ミスに関する高度な知識を活用して水平移動を達成し、被害者の環境にアクセスします。新しいタイプの攻撃では、データの流出、資格情報の盗難、ChaChi などの専用マルウェアと他のコモディティマルウェアのキャンペーンでの併用が頻繁に見られます。

 

PYSA 攻撃における標的の変化

ChaChi の最初の亜種は、2020 年 3 月に発生した、フランスの地方自治体のネットワークに対する攻撃で使用されました。それ以降、PYSA とそれに伴う ChaChi は、さまざまな業界にわたる攻撃で確認されてきました。こうした業界には医療機関や民間企業が含まれますが、最も顕著なのは、今年の前半に FBI が報告した、最近の教育機関に対する攻撃の急増です。最近の攻撃では、米国の 12 の州とイギリスで PYSA ランサムウェアが確認されており、高等教育機関と小中高の学校(K-12)を標的にしたデータ漏洩が起きています。

標的となったこれらの垂直市場は攻撃者の関心の的となっており、驚異的な勢いで侵害は続いています。その理由の 1 つとして、医療機関や教育機関はサイバー攻撃を受けやすいことが挙げられます。というのも、これらの機関はセキュリティインフラストラクチャを確立している可能性が低いからです。セキュリティを優先的に扱うリソースが不足している可能性もあります。

さらに、医療機関と教育機関が大量の機密データをホストしていることも、標的としての価値を高めています。学校や病院の環境では、レガシーシステムの使用、正確さに欠けるメールフィルタリング、データのバックアップの欠如、システムへのパッチの不適用などが常態化しています。そのため、エクスプロイトやランサムウェア攻撃に対してネットワークが無防備な状態に置かれています。

攻撃者が教育機関にターゲットを絞るのは、これらの機関がとりわけ脆弱だからです。これは特に懸念すべき状況です。高等教育の環境は、情報共有の文化をきわめて重視する、縮小された都市のように機能する傾向があります。学校は大量のビジネスデータをホストするだけではなく、キャンパスに住む学生からのトラフィックもホストします。

多くの場合、学生はセキュリティ意識を高めるトレーニングをほとんど受けていないため、疑わしい電子メールの被害に遭うことや、問題のある Web サイトに気づかないこともあります。あるいは、接続中の個人用デバイスに悪意のあるプログラムをダウンロードするおそれもあります。こうした要素も一因となって、これらの業界は、脅威アクターにとって容易かつ金銭的価値の高いものになっています。PYSA アクターによる教育機関への攻撃の急増もこれで説明がつきます。

 

進化

以下に示すいくつかの要因を考慮することで、ChaChi が遂げた進化のおおよそのタイムラインを示すことができます。

  • 感染が報告された ChaChi 亜種における最初に記録された確認例
  • ChaChi のサンプルから抽出された C2 ドメインが最初に確認された日付
  • ChaChi 亜種の特定の機能における最初の出現

こうした各データポイントの相関関係に基づいて、ChaChi のコード開発のタイムラインを概算することができます。

図 1 - ChaChi が遂げた進化のおおよそのタイムライン

私たちの推定では、ChaChi が最初に開発されたのは 2019 年の半ば以降です。実際の開発時期は、2020 年の初めである可能性が高いと思われます。

2020 年の第 1 四半期の攻撃で最初に確認された後、3 月後半または 4 月前半に ChaChi のコードは難読化と永続性を組み込むために変更されました。その直後に、DNS トンネリングとポート転送/プロキシ機能を追加した ChaChi 亜種が出現するようになりました。それ以来、特筆すべき変化はほとんどありません。

 

難読化

Golang マルウェアは何年も前から存在していますが、このマルウェアの難読化は今でも比較的まれです。Ekans ランサムウェアは、2019 年 12 月に Go の新しい難読化手法を 利用した ように思われますが、この時点ではこの手法に明確な名前は付いていませんでした。

2020 年末、調査担当者は Go で作成された ELF バックドアである "BlackRota" を発見したことを 報告 しました。調査担当者は、BlackRota が「これまでに発見した中で最も難読化された Go 言語による ELF 形式のマルウェア」であると宣言しました。

Ekans、BlackRota、その後の ChaChi で使用されている難読化は "gobfuscate" でした。この Golang 難読化ツールは GitHubで公開されています。BlackBerry のアナリストは、Ekans のリリース直後、BlackRota を発見する数か月前に gobfuscate を積極的に使用している ChaChi のサンプルを確認しました。

gobfuscate は、難読化された多くの情報の復元をきわめて困難にしようと試みます。これらの情報は、通常なら調査担当者が容易に利用できるものです。このツールは、ランタイムシンボルテーブルとタイプの情報(パッケージ名や関数名など)を難読化します。これは、ランダムに生成された名前でこれらの名前を置き換えることで行います。さらに、文字列を関数に置き換えることで文字列を難読化します。

図 2 - gobfuscate で難読化された関数名

図 3 - gobfuscate で難読化され、関数に置き換えられた文字列

この難読化は、文字列、パッケージパス、フィールド名といった Go ソースコードの関連情報が漏れないように配慮して設計されました。その後、解析やリバースエンジニアリングの取り組みを妨害する手段として、マルウェアの作成者が採用しています。

予防を回避するツールとして gobfuscate が認識されて以来、いくつかの試みが大きな成功を収めています。Binary NinjaCutterのプラグインを使用して、文字列の難読化を自動的に解除する方法を解説したブログ記事も作成されています。とはいえ、この記事の執筆時点では、このようなプラグインやスクリプトは IDA には存在しません。

BlackBerry のアナリストは、内部ツールの IDAPython スクリプトを開発しました。gobfuscate で難読化された文字列の難読化解除に対処し、その後に行われる、gobfuscate で難読化されたバイナリの解析に要する時間を短縮することが目的です。IDA にロードされた ChaChi バイナリに対して、この難読化を解除するスクリプトを実行すると、すべての文字列デコード関数の検索、エンコードされたバイトの抽出、必要な XOR 演算が実行され、元の文字列が復元されます。その後、これらの文字列は、すべてのデコード関数内での名前変更に使用されます。その際、エンコードされた文字列が検知され、必要に応じて逆アセンブリコードビューにコメントが追加されます。

図 4 - gobfuscate で難読化された文字列関数の難読化解除

gobfuscate を使用した文字列の難読化を克服しても、ランダムに命名されたパッケージなどの問題がまだ残っていました。表面的には、名前の難読化は解析に対する効果的な抑止手段であるように思われます。しかし、さらに詳しく調査すると、解決が特に難しいというわけではありませんでした。

パッケージ名の変更は、統一された一貫性のある方法で行われます。たとえば、同じパッケージや関数のコンポーネントは同じランダム名を共有するといった具合です。この知識と、関数メソッドの名前は難読化の影響をほとんど受けないという事実を結びつけます。その結果、特定のパッケージの使用法さえ突き止めれば、シンプルな IDAPython ヘルパースクリプトを使用して、同じランダム名を共有しているすべてのエントリの名前も変更できることが分かります。

図 5 - gobfuscate で難読化された関数名

図 6 – gobfuscate で難読化された関数名の難読化解除

文字列の難読化を克服したので、ChaChi の機能と意図を分析する作業に再び取り組みます。

 

永続性

最初の実行後すぐに、ChaChi はサービス名とサービスの説明をデコードします。

図 7 - サービスの名前と説明のデコード

デコードされたサービス名を使用して、ChaChi はインストールされているすべてのサービスを列挙し、同じ名前のサービスがすでに存在するかどうかを確認します。この例では、"JavaJDBC" という名前が付けられています。指定された名前を持つサービスが見つかると、ChaChi は、ハードコードされたサービス名の文字列リストの中から別の名前をランダムに選択します。ただし、このリストは gobfuscate で難読化されています。

図 8 - サービス名が存在しているかどうかを確認

図 9 - 代替サービス名のデコード

サービスのインストールに使用する適切な名前が決定すると、ChaChi は、そのサービスの作成操作を実行する十分な管理者特権があるかどうかを確認します。

図 10 - 管理者特権で実行されているかどうかを確認

管理者特権で実行されていない場合、ChaChi はその永続性コードをバイパスし、コマンドアンドコントロール(C2)通信の初期化を開始します。このバックドアが管理者特権で実行されている場合は、それ自体を新しいサービスとしてインストールします。このサービスは、手動でサービスを開始する前に自動的に開始されるように設定されます。

図 11 - サービスとしてインストールしてサービスを開始

 

C2 通信

ChaChi は、DNS と HTTP の 2 つのプロトコルを C2 通信に使用します。C2 通信における第一の優先方法は、TXT クエリを使用した DNS トンネリングです。

TXT すなわち「テキスト」レコードの本来の目的は、ドメイン管理者が任意のテキストをドメインと関連付けられるようにすることでした。たとえば、ドメイン所有権やネットワーク、サーバーなどの情報です。脅威アクターは不正なニーズのためにこれを巧みに利用し、TXT クエリでデータをエンコードしました。その形態が DNS トンネリングです。

DNS トンネリングにより、マルウェアの作成者は、ほとんどのファイアウォールをバイパス可能な隠れチャネルで通信することができます。DNS トラフィックは広く使用されており、ほとんどまたはまったく監視されずに無条件で信頼される傾向があります。さらに、DNS 要求は内部の DNS リゾルバでプロキシ化することもできます。これにより、感染したエンドポイントの追跡はさらに困難になります。

図 12 - ChaChi によって生成された DNS トラフィック

何らかの理由で DNS 通信に失敗した場合でも、ChaChi にはフェールオーバーのメカニズムが組み込まれています。そのため、エンコードされた POST 要求の形で HTTP を使用して C2 サーバーと通信できます。一般に、HTTP POST 要求は、リソースを作成または更新するサーバーにデータを送信するために使用されます。ChaChi は、この要求を C2 通信のために使用します。C2 通信の確立を試みる前に、ChaChi は埋め込まれている C2 サーバーのドメインと IP アドレスを最初にデコードする必要があります。

 

C2 の IP とドメインのデコード

ChaChi には、DNS トンネリングにおける C2 ドメインのリストと、HTTP C2 フェールオーバーにおける IP アドレスのリストが事前設定されています。これらのドメインは、gobfuscate で難読化されたバイナリの他のすべての文字列と同様にエンコードされており、これには XOR デコードプロセスを実行する専用の関数が使用されています。

図 13 - gobfuscate で難読化された関数からデコードされる C2 ドメイン

使用されるドメインは、"time.Now" の事前の呼び出しで返された値によってシードされる、"rand" パッケージの "Intn" を利用してランダムに選択されます。

図 14 - C2 ドメイン選択のランダム化

C2 IP アドレスのデコードは少し複雑になりますが、それほど大きくは変わりません。C2 ドメインと同様に、C2 IP アドレスの必然的な選択も "time.Now"、"rand.Seed"、"rand.Shuffle" の呼び出しによってランダム化されます。C2 IP のデコード関数は、いくつかの引数を必要とします。すなわち、エンコードされた C2 IP 配列へのポインタ、エンコードされた IP アドレスの数を示す整数値、それぞれの IP アドレスの各オクテットのデコードで使用される 16 進数です。C2 IP アドレスのデコード処理は次のように行われます。

  • 初期オフセットの単語(2 バイト)を事前のシャッフルで決定した C2 IP 配列に読み込みます。
  • 取得した値から 16 進数(確認されたすべての事例で 0xA)を減算します。
  • 基準となる 10 の等価値に結果を変換します(これにより、IP の単一オクテットが作成されます)。
  • エンコードされた IP ごとに 4 回繰り返します。
  • デコードされたオクテットを "." で結合します(そうすることで、格納されている C2 IP アドレスは完全にデコードされます)。

これらの手順は、すべての IP アドレスがデコードされるまで繰り返されます。

デコード操作のための等価な Python コードを以下の図で見ることができます。または、エンコードされた 1 つの IP アドレスに対する CyberChef のレシピ操作の例を ここで 見ることができます。

図 15 - C2 デコードの Python コード

C2 アドレスがデコードされたので、ChaChi は C2 インフラストラクチャへの接続を開始できます。

 

変更された Chashell

完全にカスタマイズされた方法で DNS トンネリングを実装する代わりに、マルウェアの開発者は既成のソリューション(または、少なくともソリューションのコンポーネント)を利用することを選びました。マルウェアの開発者は、DNS 経由でリバースシェルを提供す Chashell と呼ばれるパッケージを使用しました。

Chashell の役割は、対称暗号化を使用して XSalsa20 + Poly1305 の形式でデータを暗号化する前に、シェルまたは端末からデータを取り出して プロトコルバッファ にシリアル化することです。その後、この暗号化データは 16 進でエンコードされ、TXT クエリにパックされます。TXT クエリへの応答にも同じプロトコルバッファのシリアル化、暗号化、16 進でのエンコードが適用されます。

図 16 - Chashell DNS トンネリングのクエリと応答

デフォルトの Chashell クライアントは、ビルド時にターゲットドメインと対称暗号化鍵を必要とし、いずれもハードコードされます。この 2 つは、Chashell サーバーへの暗号化された DNS トンネルを確立するために使用されます。接続が確立すると、ターゲットの OS に応じて "cmd.exe" または "/bin/sh" からの標準の入力/出力/エラーが DNS トンネルにリダイレクトされ、その結果、リバースシェルが作成されます。

図 17 - 標準の Chashell クライアントコード

ChaChi のオペレーターは DNS トンネリングのトランスポートメカニズムを Chashell から取り入れましたが、Chashell はもはや単純なリバースシェルとしては機能していません。それどころか、ChaChi のオペレーターはいくつか変更を加えることを選びました。その例として、リバースシェルを生成するデフォルト操作の除去や、DNS ストリームを通過する一部のデータに対するエンコード層の追加などが挙げられます。

事実上、Chashell は ChaChi という機械の歯車にすぎなくなっています。その結果、隠れた C2 通信が実現することになります。前述のとおり、DNS トンネルを通過するデータのすべてに追加のエンコードが施されるわけではありません。データは特定のプロトバッファフィールドのために確保されており、Chashell によって 5 つのフィールドが使用されています。

図 18 - Chashell プロトコルバッファのメッセージ

  • ClientGUID: このフィールドは、特定のクライアントからのメッセージを一意に識別する ID です。これにより、メッセージはサーバーで正しく処理されます。ClientGUID フィールドは、すべてのメッセージに存在します。
  • ChunkStart: このメッセージは、同じ「チャンク」に属するメッセージを識別するために使用されます。
  • ChunkData: トンネルを通過するコアデータを転送するメッセージです。標準の Chashell の場合、標準ストリームの出力がこのフィールドに格納されます。これらのメッセージに含まれるデータは、"ChunkStart" メッセージが提供する情報に基づいて再構成する必要があります。
  • PollQuery: これらのメッセージは、クライアントからサーバーに送られて、送信を待機中のコマンド/データの有無を照会するハートビートメッセージのようなものです。
  • Infopacket:これらのメッセージは、アクティブな Chashell セッションの識別を容易にする手段として、クライアントのホスト名をサーバーに転送するために使用されます。このメッセージの特定の "packet" フィールドの "ChunkData" メッセージにのみ、標準の Chashell クライアントのソースコードには存在しない、追加のカスタムエンコードが適用されます。

図 19 - ChunkData メッセージの構造

"ChunkData" メッセージのエンコードは、プロトコルバッファへのデータのシリアル化の直前に行われます。このエンコードは 2 段階の処理で行われます。第 1 段階の処理では、データの Base64 エンコードを伴います。その後、このデータは別の関数に渡されて、ハードコードされた文字列を使用した XOR エンコードが実行されます。

図 20 - シリアル化に先立つ Base64 エンコードと XOR エンコード

データのエンコード、シリアル化、暗号化がどのように行われるのか理解したので、ChaChi トラフィックを復号可能にする難読化解除により、XOR 鍵と対称暗号化鍵を共に復元することができます。復号プロセスについては、追って詳しく説明します。確認および解析されたすべてのサンプルでは、"d*ck" (* は i に置き換えられる)の XOR 鍵が使用され、"37c3cb07b37d43721b3a8171959d2dff11ff904b048a334012239be9c7b87f63" の暗号化鍵が使用されていました。これにより、ChaChi バイナリが確認されたすべての攻撃の背後にいるのは、単独の脅威アクターまたは脅威グループであることがほぼ明確になりました。

 

代替/フェールオーバー C2

すでに述べたとおり、ChaChi は、Chashell DNSストリームを使用した DNS 経由の C2 通信をまず確立しようとします。この最初の試みに失敗すると、HTTP へのフェールオーバーが行われます。

図 21 - C2 通信のフェールオーバー

ChaChi のオペレーターにとって、このフェールオーバーは最適な方法ではありません。DNS トンネリングで利用できた暗号化は提供されず、隠れた通信にはほど遠いからです。

この HTTP C2 通信は、すでにデコードされている、ランダムに選択された C2 IP の 1 つに対する POST 要求を使用して実行されます。HTTP POST の内容は Base64 および XOR のエンコードを使用してエンコードされ、ある程度のデータ保護を提供します。これは、"ChunkData" メッセージにシリアル化される前にデータがエンコードされた DNS トンネリングの場合と同様です。

C2 のチェックインに失敗すると、デコードされた他の C2 IP を順番に試して接続を試みます。接続が確立されると、ChaChi は POST 要求をエンコードして C2 に送信し、その応答を処理します。

図 22 - HTTP POST 要求と応答処理

 

C2 トラフィックの復号

DNS トンネリングの場合と比べると、C2 通信での HTTP の使用はより単純で、必要とされる手順も少ないので、このセクションでは DNS トラフィックの復号に主に焦点を当てます。

HTTP と DNS の いずれの C2 トラフィックも復号できます。XOR 鍵と暗号化鍵を入手すれば、プレーンテキストのデータを受け取って暗号化形式に変換したプロセスの逆をたどることができるからです。エンコードと暗号化のプロセスの各フェーズは可逆的です。

図 23 - TXT クエリを生成するエンコードと暗号化のプロセス

復号するには、次の手順を実行します。

  • パケットキャプチャまたは DNS ログから DNS TXT クエリを取得する。
  • ドメイン名と区切り記号 "." を取り除く。
  • 16 進数から元のバイトに文字列をデコードする。
  • デコードした内容を、復元した暗号化鍵とともに XSalsa20+Poly1305 復号プロセスで実行する。
  • "ChunkData" メッセージの packet フィールドにアクセスするために、復号したデータを非シリアル化する(他のメッセージタイプはこの時点で完全に復号)。
  • 復元した XOR 鍵を使用して、各 "ChunkData" メッセージの packet フィールドに XOR デコードを適用する。
  • XOR 演算の結果に Base64 デコードを適用する。

上記のプロセスを実行すると、復号および非シリアル化されたプロトコルバッファと、エンコードされて "ChunkData" パケットにパックされていた元のデータが得られます。Chashell のプロトコルバッファのメッセージ構造に関する私たちの知識を考慮すれば、必要なのは "ChunkStart" メッセージを求めてプロトバッファメッセージを検索することだけです。これらのメッセージは、元のデータを構成するチャンクの数の他、そのデータを含む正確な "ChunkData" メッセージについても知らせてくれます。

図 24 - ChunkStart メッセージの構造

この作業に成功すると(そして書式設定を適用すると)、ChaChi サーバーとクライアントの間でやりとりされる C2 トラフィックを復号できます。ChaChi のオペレーターが標準の Chashell ビルドを利用していた場合は、復号されたトラフィックの内容が以下のように表示されます。その内容から、リバースシェルが確立されていることは明らかです。

図 25 - 標準の Chashell から復号されて再作成されたトラフィック

 

C2 のチェックインとコマンド

C2 サーバーに送信される最初のチェックインデータは、次の形式をとります。

図 26 - C2 のチェックイン構造

"ID" はハードコードされた文字列値であり、サンプルによって異なりますが、通常は 1、2、または 9 で始まり、その後に 3 桁が続きます(例:"1018")。最後の 3 桁は gobfuscate で難読化された文字列からデコードされ、最初の桁はチェックインの直前にチェックイン文字列の先頭に追加されます。

MD5 ハッシュは、ランダムに生成された整数値をハッシュ化した結果です。この整数値は ChaChi を実行するたびに変わります。

コンピューター名とユーザー名は、関連する環境変数に格納されている値を取得する、2 つの PowerShell コマンドを実行すると得られます。

図 27 - PowerShell を使用したコンピューター名とユーザー名の取得

ID のみを含む 2 番目のチェックインが行われます。今回は、1 ではなく 2 が先頭に追加され、最初のチェックインと同じ MD5 が使用されます。2 番目のチェックインでは、コンピューター名やユーザー名は使用されません。どちらのチェックインでも、文字列のエンコードと暗号化は前述の方法で行われますが、個々のチェックインに対するそれぞれの応答によって次に何が起こるか決まります。

次の図は、2 つの C2 チェックインとサーバーからの応答を示しています。

図 28 - 復号された C2 チェックインと応答

スクリーンショットの上側には、最初のチェックインの文字列が表示されています。この最初のチェックインに対するサーバーからの応答は、チェックインで渡された、生成された MD5 ハッシュを含む文字列です。ただし、この文字列には "-zig" が追加されています。

この応答の最初の文字(この例では"9")は、XOR 鍵の最初の文字で XOR されています。この文字は、C2 のエンコードプロセスでも使用されています(上記のトラフィックが生成されたサンプルの "d")。この XOR 演算の結果は、2 番目の C2 チェックインに対する応答として返された最初の(この事例に限定)文字でさらに XOR されます(文字 "m")。この 2 つの XOR 演算の結果は数値 "0" です。

結果として得られたこの整数値は(必ずしも 0 とは限りません)、関数に渡される長い文字列のコマンド ID コンポーネントです。この関数は、ChaChi が取るように指示される次のアクションを決定します。コマンド選択関数で予想される引数は、下記の画像のような形をとります。予想される引数の数は、ChaChi に提供される コマンド ID によって異なりますが、コマンド ID に続く引数は 2 個を超えないはずです。それぞれの要素は 3 個のスラッシュ(///)で区切られます。

図 29 - コマンドの選択と引数の構造

使用可能なコマンド ID オプションとホストでの対応するアクションが以下の表に記載されています。無効なコマンド ID は処理されません。

コマンド ID

アクション

1

Base64 でエンコードされた引数をデコードし、ホスト上でコマンドとして実行

2

指定されたクライアントの「アドレス:ポート」に接続することで、リバース SOCKS5 プロキシサーバーを開始

3

指定されたクライアントの「アドレス:ポート」に接続することで、リバース SOCKS5 プロキシサーバーを開始

4

C2 セッションを再開

7

Chisel クライアントを開始

9

バックドアをアンインストール - サービスとバイナリを削除

表 1 - 操作への ChaChi コマンド ID のマッピング

 

コマンドの実行

ChaChi のオペレーターが感染したホストでコマンドやプログラムを実行する場合、予想されるコマンド構造は下記の例のようになります。実行されるコマンド(引数とスイッチを含む)は、1 つの Base64 文字列にエンコードされます。ChaChi は、コマンドライン配列への文字列のデコードと解析を処理し、発生したすべてのスペースでこのデコードされた文字列を分割します。

図 30 - ChaChi のコマンド実行構造

攻撃者が "whoami" のような単純なコマンドを実行する場合、ChaChi が受け取るコマンドは以下のような文字列になります。"whoami" は Base64 のエンコード形式です。

図 31 - "whoami" コマンドの形式

ChaChi はこの文字列を解析し、コマンドであることを確認して Base64 からデコードし、コマンドライン文字列を再構成します。

図 32 - コマンド引数の Base64 デコード - "whoami".

(この例の場合のように)プログラム名自体にパス区切り記号が含まれていない場合は、基本的な Go 関数の "os.exec.Command" が完全なパス名を解決します(可能な場合)。そうでない場合は、コマンドを実行する前にパスとして名前がそのまま使用されます。

図 33 - コマンドの実行

 

リバース SOCKS5 プロキシ

SOCKS プロキシは、レッドチームや脅威アクターがよく使用するツールです。実際には異なるマシンから送られてきているトラフィックが 1 つのマシンから発信されているように見せかけることで、このツールはある程度の匿名性を提供するからです。SOCKS プロキシ、特にリバース SOCKS プロキシは、他の方法ではアクセスできないプライベートネットワークへの永続的なアクセスを、インターネット上のマシンから行う手段を攻撃者に提供することもできます。

SOCKS プロキシの機能を ChaChi に追加することを決めた ChaChi の開発者は、ここでも無駄な労力を費やすことは避けることにしました。今回、開発者は rsocks と思われるものからさらに多くのコードを取り入れました。

"rsocks" は、リバース SOCKS5 クライアント/サーバーです。ただし、サーバー側コードのみが ChaChi に組み込まれています。デフォルトの rsocks ビルドでは、プロキシを通過するトラフィックの暗号化形式は利用できません。そのため、ChaChi の作成者は、作成するコードのバージョンにこの機能を追加することにしました。作成者は、これを行うために "net.Dial" の標準呼び出しをよりセキュアな "crypto[.]tls[.]DialWithDialer" の呼び出しに交換しました。この呼び出しは、プロキシされたトラフィックを TLS で暗号化します。

図 34 - "net.Dial" を使用した元の rsocks のソースコード

図 35 - TLS 暗号化が追加された変更済みの "rsocks"

ChaChi のオペレーターが感染したホストでプロキシサーバーを開始する場合、予想されるコマンド構造は以下に示す画像の例のようになります。リバース SOCKS5 プロキシの場合、2 または 3 のコマンド ID を受け入れます。というのも、この 2 つはまったく同じ効果を生むからです。

図 36 - リバース SOCKS5 プロキシのコマンド構造

クライアントアドレスは、IP またはドメインの形態をとることができます。下記の画像の例では、同じマシン(127.0.0.1)とポート 8080 をリッスンしているクライアントへの接続を試みています。これは、“rsocks -connect 127.0.0.1:8080” を実行することに相当します。ChaChi のオペレーターの場合は、パブリック C2 IP またはドメインの 1 つで “127.0.0.1” を置き換えることもできます。

図 37 - リバース SOCKS5 プロキシのコマンド例

Base64 エンコードは、リバース SOCKS プロキシの必要条件ではありません。ChaChi はクライアントのアドレスとポートを単に解析し、それをコロンで結合して、その新しい文字列をリバース SOCKS5 プロキシの設定コードに渡します。このコードがプロキシセッションを設定します。

図 38 - リバース SOCKS の Go ルーチンに渡される解析済みの "client:port" 文字列

SOCKS5 プロキシセッションが確立すると、ChaChi のオペレーターは、侵害された内部ネットワークをスキャンするために nmap などのツールをプロキシ経由で実行できるようになります。これはリバースプロキシであるため、サーバーコンポーネントがクライアントへの接続を開始します。ChaChi のオペレーターにとって、これは明らかに優れた選択肢です。というのも、オペレーターは、いわば敵陣の背後から操作することになるからです。

ここで特筆すべきは、rsocks による文字列 "Starting server" が ChaChi に存在しないことです。代わりに、Golang ベースの他の SOCKS プロキシコード(rsockstunrclient コンポーネントなど)で見られる "Starting client" に置き換えられています。これは、開発プロセス中の実験の名残である可能性があります。go-socks5 を使用している ChaChi の最初のバージョンが BlackBerry のアナリストによって確認されたからです。go-socks5 は、Golang ベースのもう 1 つの SOCKS5 サーバーです。ChaChi の開発者が必要なものとそうでないものを取捨選択していることがうかがえます。

図 39 - デフォルトの "Starting server" 文字列

図 40 - 変更済みの "Starting client" 文字列

 

新しい C2 セッション

コマンド ID 4 は新しい C2 セッションをトリガーします。他の引数は予期されていません。他の引数が提供されても解析は行われません。このオプションは、セッションタイムアウトが発生した場合に役立ちます。または、セッションが応答しなくなった場合に、攻撃者が新たなセッションを確立するときに役立ちます。DNS 経由と HTTP 経由のどちらで接続するかという選択も行われますが、外部のアクションによってではなく、それまでの試みでどちらの接続プロトコルが成功したかによって自動的に決まります。

図 41 - コマンド ID 4 がトリガーする、DNS または HTTP 経由の新しい C2 接続

 

Chisel クライアント

Chisel はポート転送を簡素化するアプリケーションであり、攻撃者が SSH のクライアントまたはサーバーにアクセスできないシナリオで役立ちます。SSH が利用可能な場合は、一般に SSH がポート転送に最適なツールとなります。ただし、ほとんどの Windows OS で SSH はインストールされていません。または、デフォルトで無効になっています。

ポート転送には、ChaChi の作成者に役立つことが分かるメリットが他にもあり、作成者がこのバックドアに Chisel クライアントを組み込むことを決めた一因にもなっています。

GitHub の README には次のように記載されています。「Chisel は高速の TCP/UDP トンネルであり、HTTP 経由で転送され、SSH によって保護されます … Chisel は安全なエンドポイントをネットワークに提供するときにも使用できますが、主に役立つのはファイアウォールをパススルーするときです」。

Chisel クライアントは、コマンド ID 7 を使用してアクティブになります。Chisel クライアントは、Chisel サーバーおよびポートの IP またはドメイン名を受信することになっています。後述するように、この情報は Chisel サーバー(攻撃者の詰め所)で無防備な状態に置かれており、ローカル SOCKS ポート(1080)に転送されます。

図 42 - Chisel のコマンド構造の例

ChaChi は Chisel サーバーのアドレスを解析し、先頭に "http://" を追加し、最後に ":443" を追加します。

図 43 - Chisel サーバーのアドレス構成

指定されたポートには他の 2 つのデコードされた文字列が連結され、“R:0.0.0.0:<port>:socks" の形式をとる文字列が形成されます。

図 44 - Chisel のポート転送文字列の構成

構成されたコンポーネントは、新しい Chisel クライアントを生成する関数に渡されます。スタンドアロンの Chisel バイナリで実行された場合、この Chisel クライアントは次のようになります。

図 45 - 相当する Chisel コマンド

evildomain[.]xyz にある、ポート 443 をリッスンしている Chisel サーバーへのリバースポート転送接続は、事実上、これで確立されます。サーバーポート 1337 に対して行われた接続は、侵害されたホスト上のローカル SOCKS ポート 1080 にすべて転送されるようになります。

アドレス "0.0.0.0" はサーバー側のローカルアドレスとして指定されているため、ローカルホストだけでなく、サーバー上のどのインターフェイスからもポート 1337 へのアクセスが許可されます。したがって、攻撃者はインターネット上のどこからでも、侵害されたネットワークに evildomain[.]xyz:1337 を介して直接接続し、自身のトラフィックをポート 1080 に出現させることができます。

攻撃者が望めば、Chisel トンネル経由で rsocks サーバーに接続させることもできます。ここで興味深いのは、ChaChi のオペレーターは、この Chisel コマンド文字列で使用される一部の文字列をハードコードしていることです。すなわち、"HTTP" とポート "443" の使用です。これにより、HTTP トラフィックは非標準ポート(すなわち 443)のネットワークを通ることになり、観察の鋭いネットワークアナリストの注意を引く可能性があります。

 

バックドアのアンインストール

コマンド ID 4 と同様に、コマンド ID 9 では引数をさらに指定することは予期されていません。ChaChi のオペレーターがコマンド ID 9 を実行すると、感染したホストマシンから ChaChi 自体をアンインストールするプロセスが開始されます。このプロセスは 2 段階で行われます。第 1 段階では、以前にインストールされたサービスが Windows のユーティリティ "sc" を使用して削除されます。

図 46 - "sc" を使用してサービスを削除し、一時パスを取得

上の図が示すように、サービスを削除した直後に、ChaChi は PowerShell を使用して %TEMP% ディレクトリへのパスを取得します。この操作は、ChaChi がバッチファイル "del.bat" を作成して一時ディレクトリに書き込むために行われます。このバッチは、ChaChi バイナリをディスク上の格納場所から削除するタスクを実行します。

図 47 - ChaChi バイナリの削除に使用される "del.bat" の内容

ChaChi のオペレーターにとって、このコマンドは特別な用途を担います。というのも、侵害した環境内でオペレーターが目的を達成すれば、その証拠を隠したいと考えるからです。

 

ネットワークインフラストラクチャ

ネットワークの侵入の痕跡(IOC)を抽出して解析すると、TTP として利用できる情報が得られます。この情報は、過去の標的を(潜在的には現在の標的も)示唆します。ChaChi バイナリから抽出されたドメインに対する最初の確認日のタイムラインを示すことで、2019 年の後半から、PYSA のオペレーターが最も活動的だった 2021 年の第 1 四半期までの期間を観察することができます。

この期間を通じて計 19 のドメインが新規に作成され、ChaChi の C2 としての役割を果たしました。私たちが得たデータから判断すると、ChaChi のドメインは実際の攻撃が発生する数か月前に作成されたものと思われます。同じ ChaChi バイナリ(したがってドメイン)が複数の攻撃で使用されたこともありました。

図 48 - 最初の確認日によるドメインのタイムライン

これらのドメインを少し詳しく調べれば、PYSA のオペレーターが TTP として何を使用していたのか知ることができます。オペレーターがもっぱら好んで使用していたドメイン名の登録機関は Namecheapでした。

ドメイン

登録機関

starhouse[.]xyz

Namecheap Inc.

dowax[.]xyz

Namecheap Inc.

ntservicepack[.]com

OVH Hosting

reportservicefuture[.]website

Namecheap Inc.

spm[.]best

Namecheap Inc.

blitz[.]best

Namecheap Inc.

accounting-consult[.]xyz

Namecheap Inc.

statistics-update[.]xyz

Namecheap Inc.

sbvjhs[.]club

Namecheap Inc.

sbvjhs[.]xyz

Namecheap Inc.

wiki-text[.]xyz

Namecheap Inc.

visual-translator[.]xyz

Namecheap Inc.

firefox-search[.]xyz

Namecheap Inc.

serchtext[.]xyz

Namecheap Inc.

englishdict[.]xyz

Namecheap Inc.

englishdialoge[.]xyz

Namecheap Inc.

english-breakfast[.]xyz

Namecheap Inc.

pump-online[.]xyz

Namecheap Inc.

cvar99[.]xyz

Namecheap Inc.

productoccup[.]tech

Namecheap Inc.

transnet[.]wiki

Namecheap Inc.

表 2 - 登録機関へのドメインのマッピング

ChaChi バイナリから IP アドレスを取り出して、それぞれの ASN と地域にマッピングします。これにより、IP アドレス全体の半分以上がルーマニアかドイツのアカウントを拠点としていることが分かります。IP アドレスの約 60% は、この 2 つの ASN から提供されています。

IP アドレス

ASN

地域

23.83.133[.]136

AS19148 - LEASEWEB-USA

U.S.

172.96.189[.]167

AS20068 - HAWKHOST

CA

172.96.189[.]22

AS20068 - HAWKHOST

CA

172.96.189[.]246

AS20068 - HAWKHOST

CA

198.252.100[.]37

AS20068 - HAWKHOST

CA

185.185.27[.]3

AS201206 - LINEVAST

DE

160.20.147[.]184

AS30823 - COMBAHTON

DE

45.147.228[.]49

AS30823 - COMBAHTON

DE

45.147.229[.]29

AS30823 - COMBAHTON

DE

45.147.230[.]162

AS30823 - COMBAHTON

DE

45.147.230[.]212

AS30823 - COMBAHTON

DE

185.186.245[.]85

AS40824 - WZCOM-US

U.S.

185.183.96[.]147

AS60117 - HS

NL

194.5.249[.]137

AS64398 - NXTHOST

RO

194.5.249[.]138

AS64398 - NXTHOST

RO

194.5.249[.]139

AS64398 - NXTHOST

RO

194.5.249[.]18

AS64398 - NXTHOST

RO

194.5.249[.]180

AS64398 - NXTHOST

RO

194.5.250[.]151

AS64398 - NXTHOST

RO

194.5.250[.]162

AS64398 - NXTHOST

RO

194.5.250[.]216

AS64398 - NXTHOST

RO

193.239.84[.]205

AS9009

GB

193.239.85[.]55

AS9009

RO

37.120.140[.]184

AS9009

RO

37.120.140[.]247

AS9009

RO

37.120.145[.]208

AS9009

DK

86.106.20[.]144

AS9009

NL

89.38.225[.]208

AS9009

SG

89.41.26[.]173

AS9009

U.S.

194.187.249[.]102

AS9009

FR

194.187.249[.]138

AS9009

FR

37.221.113[.]66

AS9009

GB

表 3 - ASN および地域への IP のマッピング

BlackBerry の調査担当者は、C2 サーバーの追跡と監視を継続しています。これは、フィンガープリントと検知のさまざまな手法を使用して、発見されたすべての C2 インフラストラクチャを社内の脅威インテリジェンスシステムに保管することで行われます。

上記の IP アドレスの 1 つは、2020 年の 12 月前半に当社のインテリジェンスプラットフォームの 1 つが偶然捉えたものであり、それがアクティブだった期間は 24 時間にすぎませんでした。この IP(45.147.230[.]212)は、ドイツの AS30823 Combahton によってホストされています。この IP によって PowerShell Empire に対する当社のセンサーの 1 つがトリガーされ、そのアーティファクトが PYSA ランサムウェアの インシデント 後にシステムで確認されています。

図 49 - 公開サーバー上の PowerShell Empire に対するアラート

さらに、抽出した IP アドレスのドメイン解決を確認すれば、興味深い結果と情報が得られます。C2 サーバーとして使用されていたドメインとともに IP アドレス 194.187.249[.]102 が ChaChi のサンプルから抽出されました。このドメインは sbvjhs[.]xyz でした。当然ながら、そのドメインのネームサーバー "ns1" と "ns2" も同じ IP アドレスに解決されています。しかし、興味深いことに、他のドメインもこの同じ IP に解決されています。それは login.bancocchile[.]com です。

図 50 - 偽の Banco Chile ドメインに解決される ChaChi の IP

Banco Chile の正規ドメインは ".cl" 最上位ドメイン(TLD)でホストされており、"Banco" と "Chile" の単語間にある余分な "c" はありません。このドメインは、次の 2 つの目的のいずれかを意図したものと思われます。

  • Banco Chile (チリ銀行)の従業員または顧客を標的とするフィッシングドメイン
  • ChaChi のコピーをステージングおよび配布して、疑いを持たないユーザーに悪意のあるリンクをクリックさせるために使用するドメイン

選択肢のどちらか一方、さらには両方であることが考えられます。これらのドメインが数か月にわたって同時にアクティブだったことを考慮した結果、最後の確認日はごく最近の 2021 年 6 月 1 日となりました。偶然にも、2 つのネームサーバーのドメインと偽の Banco Chile ドメインは、チリの別の銀行(Banco Estado)で報告されたセキュリティ侵害の発生前、発生中、発生後にもすべてアクティブでした。このセキュリティ侵害は 2020 年 9 月に報告され、REvil ランサムウェア に起因するものでした。

 

まとめ

ChaChi は、比較的新しいプログラミング言語である Go (別名 Golang)を使用して開発されたカスタム RAT です。Go を使用して ChaChi を開発することで、PYSA ランサムウェアのオペレーターは、この言語に精通していないアナリストとツールによる検知と予防の取り組みを阻止できます。ChaChi の最も古いバージョンは成熟したマルウェアの機能をいくつか欠いていましたが、その急速な進化と、政府機関、医療機関、教育機関に対する最近の展開は、このマルウェアの開発と改良が活発に行われていることを示唆しています。

サイバー攻撃を受けやすいことで有名な業界を標的とする、悪意のあるアクターの管理下に置かれたとき、ChaChi は強力なツールとなります。ChaChi は有能な脅威であることを自ら実証しています。さらに、PYSA ランサムウェアのオペレーターによる ChaChi の使用が懸念を呼び起こしています。REvilAvaddonDarkSide によって行われたキャンペーンなど、注目を集める一連の攻撃でランサムウェアが驚くべき成功を収めている昨今にあってはなおさらです。サイバーセキュリティの重大な事件が 1 年のうちに次から次へと起きる状況下で、こうした脅威を無視する組織は、そのリスクを自ら負うことになります。

 

付録

YARA ルール

以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の脅威調査チームが作成しました。

rule Mal_Backdoor_ChaChi_RAT
{
            meta:
                        description = "ChaChi RAT used in PYSA Ransomware Campaigns"
                        author = "BlackBerry Threat Research & Intelligence"            

            strings:
                        // "Go build ID:"
                        $go = { 47 6F 20 62 75 69 6C 64 20 49 44 3A }
                        // dnsStream
                        $dnsStream = { 64 6E 73 53 74 72 65 61 6D }
                        // SOCKS5
                        $socks5 = { 53 4F 43 4B 53 35 }
                        // chisel
                        $chisel = { 63 68 69 73 65 6C }                                   

            condition:
                        // MZ signature at offset 0
                        uint16(0) == 0x5A4D and
                        // PE signature at offset stored in MZ header at 0x3C
                        uint32(uint32(0x3C)) == 0x00004550 and
                        // ChaChi Strings
                        all of them
}

 

侵入の痕跡(IOC)

BlackBerry では、サイバーセキュリティに対して、予防ファースト の AI 主導アプローチを採用しています。予防を第一とすることで、キルチェーンの悪用段階の前にマルウェアを無力化できます。

BlackBerry ソリューションは、この段階でマルウェアを阻止することで、組織の回復力向上に役立ちます。また、インフラストラクチャの複雑さが削減され、セキュリティ管理が合理化されて、業務、スタッフ、エンドポイントが確実に保護されます。

インジケータ

タイプ

説明

12b927235ab1a5eb87222ef34e88d4aababe23804ae12dc0807ca6b256c7281c

SHA256

ChaChi

8a9205709c6a1e5923c66b63addc1f833461df2c7e26d9176993f14de2a39d5b

SHA256

ChaChi

37c3cb07b37d43721b3a8171959d2dff11ff904b048a334012239be9c7b87f63

SHA256

ChaChi

0bcbc1faec0c44d157d5c8170be4764f290d34078516da5dcd8b5039ef54f5ca

SHA256

ChaChi

6eb0455b0ab3073c88fcba0cad92f73cc53459f94008e57100dc741c23cf41a3

SHA256

ChaChi

89b9ba56ebe73362ef83e7197f85f6480c1e85384ad0bc2a76505ba97a681010

SHA256

ChaChi

701791cd5ed3e3b137dd121a0458977099bb194a4580f364802914483c72b3ce

SHA256

ChaChi

c9bed25ab291953872c90126ce5283ce1ad5269ff8c1bca74a42468db7417045

SHA256

ChaChi

e47a632bfd08e72d15517170b06c2de140f5f237b2f370e12fbb3ad4ff75f649

SHA256

ChaChi

0fd13ece461511fbc129f6584d45fea920200116f41d6097e4dffeb965b19ef4

SHA256

ChaChi

3a6ddc4022f6abe7bdb95a3ba491aaf7f9713bcb6db1fbaa299f7c68ab04d4f4

SHA256

ChaChi

5d8459c2170c296288e2c0dd9a77f5d973b22213af8fa0d276a8794ffe8dc159

SHA256

ChaChi

6d1fde9a5963a672f5e4b35cc7b8eaa8520d830eb30c67fadf8ab82aeb28b81a

SHA256

ChaChi

8b5cdbd315da292bbbeb9ff4e933c98f0e3de37b5b813e87a6b9796e10fbe9e8

SHA256

ChaChi

2697bbe0e96c801ff615a97c2258ac27eec015077df5222d52f3fbbcdca901f5

SHA256

ChaChi

85c8ccf45cdb84e99cce74c376ce73fdf08fdd6d0a7809702e317c18a016b388

SHA256

ChaChi

7b5027bd231d8c62f70141fa4f50098d056009b46fa2fac16183d1321be04768

SHA256

ChaChi

9986b6881fc1df8f119a6ed693a7858c606aed291b0b2f2b3d9ed866337bdbde

SHA256

ChaChi

a30e605fa404e3fcbfc50cb94482618add30f8d4dbd9b38ed595764760eb2e80

SHA256

ChaChi

aa2faf0f41cc1710caf736f9c966bf82528a97631e94c7a5d23eadcbe0a2b586

SHA256

ChaChi

af97b35d9e30db252034129b7b3e4e6584d1268d00cde9654024ce460526f61e

SHA256

ChaChi

045510eb6c86fc2d966aded8722f4c0e73690b5078771944ec1a842e50af4410

SHA256

ChaChi

b0629dcb1b95b7d7d65e1dad7549057c11b06600c319db494548c88ec690551e

SHA256

ChaChi

ccfa2c14159a535ff1e5a42c5dcfb2a759a1f4b6a410028fd8b4640b4f7983c1

SHA256

ChaChi

d591f43fc34163c9adbcc98f51bb2771223cc78081e98839ca419e6efd711820

SHA256

ChaChi

ef31b968c71b0e21d9b0674e3200f5a6eb1ebf6700756d4515da7800c2ee6a0f

SHA256

ChaChi

f5cb94aa3e1a4a8b6d107d12081e0770e95f08a96f0fc4d5214e8226d71e7eb7

SHA256

ChaChi

f8a5065eb53b1e3ac81748176f43dce1f9e06ea8db1ecfa38c146e8ea89fcc0b

SHA256

ChaChi

44af9d898f417506b5a1f9387f3ce27b9dfa572aae799295ca95eb0c54403cff

SHA256

バックドアバイナリの削除に使用される Bat ファイル

PowerShell $env:ComputerName

コマンドライン

コンピューター名の取得に使用される PowerShell

PowerShell $env:Username

コマンドライン

ユーザー名の取得に使用される PowerShell

PowerShell $env:tmp

コマンドライン

%TEMP% パスの取得に使用される PowerShell

JavaJDBC

サービス名

インストールサービス名

Azure Agent Controller

サービス名

インストールサービス名

Azure Safe controller

サービス名

インストールサービス名

AzureAgentController

サービス名

インストールサービス名

CorpNativeHostDebugger

サービス名

インストールサービス名

Corp Native Host Debugger

サービス名

インストールサービス名

Defender Security Agents

サービス名

インストールサービス名

DefenderSecurityAgent

サービス名

インストールサービス名

Get Service Controller

サービス名

インストールサービス名

GetServiceController

サービス名

インストールサービス名

Service agent security control

サービス名

インストールサービス名

Windows service controller

サービス名

インストールサービス名

MicrosoftSecurityManager

サービス名

インストールサービス名

Microsoft Security Manager

サービス名

インストールサービス名

WindowsSoftwareManagerDebugger

サービス名

インストールサービス名

MicrosoftTeamConnectDebugger

サービス名

インストールサービス名

MicrosoftTriangleConnectDebugger

サービス名

インストールサービス名

Microsoft Triangle Connect Debugger

サービス名

インストールサービス名

WindowsProtectionSystem

サービス名

インストールサービス名

Windows Protection System

サービス名

インストールサービス名

WindowsHealthSubSystem

サービス名

インストールサービス名

MsStudioAgentUpdateService

サービス名

インストールサービス名

VisualIdeIndexer

サービス名

インストールサービス名

Visual studio indexer

サービス名

インストールサービス名

Visual Ide Indexer

サービス名

インストールサービス名

del.bat

ファイル名

バックドアバイナリの削除に使用される Bat ファイル

Englishdialoge[.]xyz

ドメイン

ChaChi C2

starhouse[.]xyz

ドメイン

ChaChi C2

accounting-consult[.]xyz

ドメイン

ChaChi C2

blitzz[.]best

ドメイン

ChaChi C2

ccenter[.]tech

ドメイン

ChaChi C2

cvar99[.]xyz

ドメイン

ChaChi C2

dowax[.]xyz

ドメイン

ChaChi C2

englishdict[.]xyz

ドメイン

ChaChi C2

english-breakfast[.]xyz

ドメイン

ChaChi C2

firefox-search[.]xyz

ドメイン

ChaChi C2

ntservicepack[.]com

ドメイン

ChaChi C2

productoccup[.]tech

ドメイン

ChaChi C2

pump-online[.]xyz

ドメイン

ChaChi C2

reportservicefuture[.]website

ドメイン

ChaChi C2

sbvjhs[.]club

ドメイン

ChaChi C2

sbvjhs[.]xyz

ドメイン

ChaChi C2

serchtext[.]xyz

ドメイン

ChaChi C2

spm[.]best

ドメイン

ChaChi C2

statistics-update[.]xyz

ドメイン

ChaChi C2

transnet[.]wiki

ドメイン

ChaChi C2

visual-translator[.]xyz

ドメイン

ChaChi C2

wiki-text[.]xyz

ドメイン

ChaChi C2

160.20.147[.]184

IP

ChaChi C2 IP

172.96.189[.]167

IP

ChaChi C2 IP

193.239.84[.]205

IP

ChaChi C2 IP

89.41.26[.]173

IP

ChaChi C2 IP

172.96.189[.]22

IP

ChaChi C2 IP

172.96.189[.]246

IP

ChaChi C2 IP

185.183.96[.]147

IP

ChaChi C2 IP

185.185.27[.]3

IP

ChaChi C2 IP

185.186.245[.]85

IP

ChaChi C2 IP

193.239.85[.]55

IP

ChaChi C2 IP

194.187.249[.]102

IP

ChaChi C2 IP

194.187.249[.]138

IP

ChaChi C2 IP

194.5.249[.]137

IP

ChaChi C2 IP

194.5.249[.]138

IP

ChaChi C2 IP

194.5.249[.]139

IP

ChaChi C2 IP

194.5.249[.]18

IP

ChaChi C2 IP

194.5.249.[]180

IP

ChaChi C2 IP

194.5.250[.]151

IP

ChaChi C2 IP

194.5.250[.]162

IP

ChaChi C2 IP

194.5.250[.]216

IP

ChaChi C2 IP

198.252.100[.]37

IP

ChaChi C2 IP

23.83.133[.]136

IP

ChaChi C2 IP

37.120.140[.]184

IP

ChaChi C2 IP

37.120.140[.]247

IP

ChaChi C2 IP

37.120.145[.]208

IP

ChaChi C2 IP

37.221.113[.]66

IP

ChaChi C2 IP

45.147.228[.]49

IP

ChaChi C2 IP

45.147.229[.]29

IP

ChaChi C2 IP

45.147.230[.]162

IP

ChaChi C2 IP

45.147.230[.]212

IP

ChaChi C2 IP

86.106.20[.]144

IP

ChaChi C2 IP

89.38.225[.]208

IP

ChaChi C2 IP

 

MITRE ATT&CK

戦術

ID

名前

説明

実行

T1059/001

コマンドとスクリプトインタープリター:PowerShell

ChaChi - システムを列挙してコマンドを実行 - C2 コマンド

T1059/003

コマンドとスクリプトインタープリター:Windows コマンドシェル

リバースシェルとサービスの削除

T1569/002

システムサービス:サービス実行

インストール後の ChaChi の実行に使用

 

永続性

T1543/003

システムプロセスの作成または変更:Windows サービス

サービスとしての ChaChi のインストール

 

予防の回避

T1027

難読化されたファイルまたは情報

ChaChi - gobfuscate で難読化された関数と文字列

 

発見

T1057

プロセスの発見

ChaChi - プロセスの列挙

T1082

システム情報の発見

ChaChi - コンピューター名とユーザー名

 

C2

T1572

プロトコルトンネリング

ChaChi - DNS トンネリングによる C2 通信

T1071/001

アプリケーション層プロトコル:Web プロトコル

ChaChi – HTTP による C2 通信

T1090/002

プロキシ:外部プロキシ

ChaChi – SOCKS5 プロキシ

 

T1001

データの難読化

ChaChi – カスタム C2 エンコード

 

T1008

フォールバックチャネル

ChaChi – DNS プライマリ、HTTP フォールバック

 

T1573/001

暗号化されたチャネル:対称暗号化

ChaChi – XSalsa20+Poly1305 による C2 の暗号化

 

流出

T1041

C2 チャネル経由の流出

ChaChi

 

リソース開発

T1587/001

機能の開発:マルウェア

ChaChi バックドア

T1583/001

インフラストラクチャの獲得:ドメイン

ChaChi ドメイン登録

 

 

BlackBerry によるサポート

もしChaChi GoLang RAT のような脅威にさらされているなら、BlackBerry にお任せください。現在BlackBerry製品を利用していなくても問題ありません。

BlackBerry の インシデント対応チーム は、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。

弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。 https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

 

・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows

・BlackBerry Japan:https://www.blackberry.com/ja/jp

The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

BlackBerry の Research and Intelligence Team は、新たに生じている脅威と持続的な脅威を検証し、セキュリティ担当者とその所属企業のために、インテリジェンス解析を提供しています。