Cisco Japan Blog

Transparent Tribe などの攻撃グループに共通する VBA コード

2 min read



最近 Talos は、南アジアで活動している複数の攻撃者を調査しています。調査対象は、Transparent TribeSideCopy など、各種のリモートアクセス型トロイの木馬(RAT)を展開しているグループです。それと並行して、マルウェア サンプル リポジトリと VirusTotal でハンティングセッションを行い、VBA コードの小さなサンプルを収集しました。その結果、最終ペイロード、被害者に関する考察、サンプルの送信場所に基づいて、特定の IOC を個々の攻撃者に結びつけることができました。たとえば最終ペイロードが CrimsonRAT や ObliqueRAT のサンプルであれば、Transparent Tribe グループの VBA コードだということになります。

次に、Transparent Tribe に関連する悪意のあるドキュメント(過去に見つかったサンプル)を検出する特定のルールを作成したところ、同グループのサンプルが複数見つかりました。興味深いことに、Transparent Tribe のサンプルだとは断定できない小さなサブセットも見つかっています。この異例な状況をもう少し詳しく調べることにしました。VBA コードとペイロードの追加分析を実施しましたが、既知のいずれのグループにも簡単に結びつけるわけにはいきませんでした。

調査していたサンプルの作成元に関する当初の考え

これらのサンプルが最初に発見されたとき、セキュリティ研究者は Sidewinder グループまたは Donot グループのサンプルだと判断しました。Transparent Tribe がインドの標的を重点的に狙っているのに対し、Sidewinder と Donot はパキスタンの標的に狙いを定めていると報告されています。それを踏まえると、潜在的に対立するグループの VBA コードでコードの一部が再利用されているという点は特に興味深いものでした。

Transparent Tribe の過去の VBA コード

Transparent Tribe(APT36)は、南アジアで 5 年以上活動しているグループです。悪意のあるドキュメントで使用されている誘い込みの手口を見ると、インドの政府機関と軍事組織を標的にしていることがうかがえます。Transparent Tribe が関係する攻撃のほとんどでは、主なペイロードとして CrimsonRAT と ObliqueRAT の亜種が使用されてきました。このことから、攻撃の足掛かりを築いてリモートアクセスを永続的に確保することが目的だと分かります。

最初の感染経路は通常、公的機関を装って送信された電子メールです。添付されている誘い込み用のドキュメントは、Word 文書の場合もありますが、特に多いのは Excel スプレッドシートです。この記事では、Excel VBA コードとその進化について重点的に取り上げます。ここで、2019 年 5 月に Transparent Tribe によって使用された初期の VBA コードの例を見てみましょう。

このコードは、ペイロードを保存するフォルダのパス(ハードコードされた宛先パス)を設定します。その後、ユーザー定義フォームのテキストフィールドを使用して、ディスクにドロップするペイロードの内容を取得します。ペイロードは、特定の区切り文字で区切られた 16 進バイト値の ASCII エンコード文字列として保存されます。この文字列は、ZIP 圧縮ファイルとしてディスクに書き込む前に、バイナリバイト配列に変換する必要があります。変換は for-each ループで実行されます。文字列の内容が反復処理され、CByte 変換関数を使用して 2 文字ごとに 1 バイナリバイトに変換されます。

2019 年 5 月の Transparent Tribe の VBA コード

同様のサンプルをさらに検出するための手掛かりとなるコードには、かなり独特な要素が少なくとも 3 つあります。具体的には、固有の宛先フォルダのパス、実行ファイルまたは ZIP 形式のペイロードを含むユーザー定義フォーム、フォームのテキストフィールドの内容を反復処理する for-each ループの 3 つです。この 3 つの要素を使用して類似のサンプルを過去にさかのぼって収集しようとしたところ、他のグループのものと思われるサンプルが見つかりました。

2021 年 4 月以降の Transparent Tribe のサンプル

Donot グループの過去の VBA コード

攻撃者 Donot(別名 APT-C-35)は、南アジアで 5 年以上活動しています。TTP には Transparent Tribe に似た部分もありますが、集中的に攻撃しているのはパキスタンの政府機関や軍事組織です。また、メールも利用していますが、主に悪意のある Android アプリをインストールさせることで知られています。CVE-2017–11882popup_icon のリモートコード エクスプロイトを含むサンプルも Donot グループが展開したとされています。ここでは、カスタムメイドのリモートアクセス型トロイの木馬、キーロギング、データ流出ツールのインストールに使用される悪意のあるスプレッドシートの VBA コードを見ていきます。

Donot の VBA コードのサンプル(2018 年から 2021 年 9 月にかけてのサンプル)がいくつか見つかりました。Donot のコードには類似性があること、さらに Transparent Tribe のコードとも類似性があることはすぐに分かります。Talos の記録は、Donot の VBA コードが Transparent Tribe コードより先に作成されたことを示唆していますが、信頼性は高くありません。

2018 年初めの Donot の VBA コード例

Donot の VBA コードの興味深い点として、多くの場合、偽のエラーメッセージが含まれていることが挙げられます。ペイロードがドロップされて実行される前や実行された後に、このエラーメッセージがユーザーに表示されます。以下は、2021 年 12 月に検出された PowerPoint サンプル(2021 年 9 月のサンプル)の偽メッセージです。

Donot の VBA コードによって表示された PowerPoint の偽メッセージ

2021 年 9 月の Donot の VBA コードサンプル

Operation Hangover VBA コード

Operation Hangover は Donot グループの別名である可能性がありますが、別のグループpopup_iconだとする説もあります。コードに類似性があることから、両者に密接な関連があることは推測できます。ただ、それぞれの活動は時として別個の攻撃として追跡されており、同じグループであるとは断言できません。

2019 年 7 月上旬の Operation Hungover のサンプル

SDuser のコード

Transparent Tribe のサンプルを収集していた 2021 年 6 月、「Exports promotion highlits may 2021.xls」という悪意のある Excel スプレッドシートが見つかりました。このスプレッドシートは、それまで知られていなかった RAT をドロップしようとするものでした。続いて 7 月には、これと密接な関係のあるスプレッドシート「List of Nomination of the Candidates1.xltm」を発見しました。バイナリペイロードに残っていた特定の PDB 文字列に基づいて、これらのサンプルを「SDuser」と呼ぶことにしました。

この時点ですでに、この 2 つのサンプルの VBA コードと Transparent Tribe の VBA コードの間に類似性があることには気付いていました。ただし、SDuser の VBA コードと Donot の VBA コードの類似性も高く、よく知られている次の要素がすべて含まれていました。

  • ペイロードを保存するフォルダのパスの設定
  • VBA フォームを使用し、特定の区切り文字で区切ってペイロードを保存
  • Cbyte を使用して 16 進文字列をバイナリバイト配列に変換
  • 偽の Excel エラーメッセージを表示

2021 年 6 月の SDuser(もしくは Donot)のVBA ドロッパー

2021 年 7 月の SDuser(もしくは Donot)のVBA ドロッパー

興味深いのは、コードに類似性があるだけでなく、完全に対立関係にある対象を標的とする APT グループ間でコードが共有されていたことです。Transparent Tribe がインドの組織を重点的に狙っているのに対し、Donut の主な標的はパキスタンと中国の組織です。

SDuser のバイナリペイロード

この記事の大部分は対立する APT グループの VBA コードの類似性に的を絞っていますが、同時期に発見されたバイナリペイロードについても取り上げる必要があるように思います。SDuser 攻撃の背後にいるグループの目的を知る手掛かりとなるためです。

ペイロードに設定されている PDB パス「C:\Users\SDUSER\source\repos」に基づくと、VirusTotal でサンプルが見つかります。以下の 7 つのプロジェクトで合計約 30 のサンプルが VirusTotal にアップロードされていました。

  • Mal – 2021 年 1 月
  • Test – 2021 年 1 月
  • 12324 – 2021 年 1 月
  • Evading____ – 2021 年 2 月
  • ConsoleApplication4 – 2021 年 3 月
  • Obfuscating shellcode – 2021 年 3 月
  • WindowsSecurity – 2021 年 6 月

ペイロードの機能は非常に似ていました。1 月の最初のサンプルのアップロード以降、同グループは主に次の 3 つの領域で実験をしていました。

  • コマンド & コントロールのプロトコル
  • サンドボックス回避の手口
  • リバースシェルのメカニズム

VirusTotal にアップロードされたサンプルの大部分は WindowsSecurity プロジェクトのもので、過去のプロジェクトで開発された機能の一部が含まれていました。

WindowsSecurity プロジェクトの Main 関数にあるサンドボックス回避チェック

WindowsSecurity のペイロードは、次のサンドボックス回避チェックから始まります。

  • システムに 2 つ以上のプロセッサコアがあること
  • システムに 2GB を超える RAM が搭載されていること
  • 2 つの位置をチェックする間にマウスカーソルが十分な距離を移動していること
  • 感染したシステムで 50 を超えるプロセスが実行されていること

最新のペイロードである ConsoleApplication4 のサンドボックス回避チェック

最新のペイロードである ConsoleApplication4 プロジェクトでは、サンドボックス回避チェックの項目が追加されています。感染したシステムのハードドライブに十分な容量があること、および Virtual Box アーティファクトが存在することをチェックするようになりました。

このペイロードは、システムに追加された USB デバイスの履歴についてのレジストリチェックも行います。USB デバイスが検出されない場合、ペイロードは C2 サーバーに接続せずに終了します。最近開いたファイルに対しても同様のチェックが実行されます。最近開いたファイルが 2 つ以上なければ、マルウェアは実行を継続します。

完全に機能するペイロードの大半は、リバースシェルを起動して、攻撃者が制御する C2 サーバーに接続することを目的としています。攻撃者は Metasploit ペイロードで実験を行っていますが、SDuser の悪意のあるドキュメントによってドロップされるペイロードでは、攻撃者が制御するホストに接続されているソケットへと cmd.exe 標準入出力がリダイレクトされるだけです。

一部のペイロードでは、おそらく攻撃者と通信するために Telegram API も使用されています。

WindowsSecurity の Main 関数で C2 チャネルを設定し、リバースシェルを起動

コンピュータのアルゴリズムとの類似性の検出

人間がコードの類似性を見つけるのは非常に簡単ですが、コンピュータプログラムが行うとなると、それほど単純でも明白でもありません。悪意のあるコード分析と盗作検出の分野では、特に類似している点を見つけられるよう、コードとテキストの類似性の検出機能の改善のためにさまざまな取り組みが行われてきました。

今回の調査用には、Python で実装するのが比較的簡単ないくつかのアルゴリズムを選びました。特に重視したのは、正規化圧縮距離popup_iconJaccard インデックスpopup_icon、ドキュメントのフィンガープリント生成のための Winnowing アルゴリズムpopup_icon、Python 標準の difflib 比較ライブラリpopup_iconです。

デモ用として、すべてのサンプルの中から小さなサブセットを選択し、さまざまな類似性/距離のメトリックを使用して比較してみます。

正規化圧縮距離

正規化圧縮距離(NCD)は、コルモゴロフ複雑性に関連する概念である情報距離から算出されます。2 つのバイナリ文字列間の絶対的な情報距離は、ある文字列を別の文字列に変換するために作成できるプログラムの最小の長さとして表すことができます。

2 つの文字列を比較するためには、距離を正規化して 0 から 1 の間の値で表します。この値が小さいほど、比較する文字列間の類似性が高いということです。

残念ながら、情報距離も正規化情報距離(NID)も、停止性問題による計算不可能性が原因で計算できないことが証明されています。ただ幸いにも、NCD は NID の良好な近似値であることが分かっています。

NCD は、圧縮関数で圧縮された文字列の長さの比率として表すことができます。圧縮関数には、deflate や bzip2 などのよく知られている圧縮アルゴリズムも使用できます。ただ実際のところ、短い文字列の場合は lzma を使用した方が適切な結果が得られます。

NCD は任意のバイナリ文字列に対して正常に機能するほか、解凍された PE 実行ファイルにも正常に適用できます。ただし今回のテストではまず、すべての比較方法について、生成された olevbapopup_icon JSON 出力から VBA コードを抽出することにしました。

圧縮アルゴリズムとしては lzma を使用し、圧縮された連結文字列の長さとスタンドアロンの圧縮文字列の長さの正規化された比率として、Python コードで NCD を表現しました。

Python コードで表現された NCD

Jaccard 距離

Jaccard インデックスはクラスタリングアルゴリズムでよく使用されるメトリックであり、2 つの集合の共通要素の数を示す尺度です。これは、2 つの集合の共通部分を 2 つの集合の和で割った比率として定義されます。

データの 2 つの集合の類似性を示す尺度であり、範囲は 0% から 100% です。パーセンテージが高いほど、2 つの母集団の類似性が高くなります。解釈は簡単ですが、サンプルのサイズが小さい場合は極めて慎重に扱う必要があります。特に非常に小さいサンプルや観測値が欠落しているデータセットの場合、誤った結果が生じる可能性があります。

Jaccard 距離は、Jaccard インデックスの補数です。Talos の調査では、コードを単語に分割し、その単語を比較対象の集合の要素として使用します。自然言語処理のための Python のフレームワークである Nltk には、Jaccard 距離を計算する関数が含まれています。

フィンガープリント生成(Winnowing

Winnowing アルゴリズムは、大学で学生の研究の中のコードの類似性や盗作を検出するためによく使用されますが、一般的なコードの類似性にも使用できます。

このアルゴリズムの利点は、ドキュメント内の各 n-gram に対して生成されたハッシュの単純な比較と比べ、n-gram フィンガープリントの比較件数を大幅に削減できる点です。したがって、大規模な比較が可能になります。

今回はテストで扱うファイル数が少ないため、フィンガープリント生成のウィンドウサイズを制限し、比較用に多数のフィンガープリントを作成できます。さらに、変数名と関数名の単純な置換を簡単に検出できるよう、コードをトークン化するための字句解析ツールを使用しています。

今回のテストでは、Python の copydetect モジュールを使用しました。これを使えば、Winnowing の比較から類似性マトリックスを視覚化し、コード内で検出された類似性を強調表示できます。NCD および Jaccard 類似性アルゴリズムではこうはいきません。

copydetect は、字句解析に Pygments 構文強調モジュールpopup_iconを使用します。このモジュールは 300 以上の言語をサポートしているので便利です。具体的に言うと vb.net と vbscript 用の字句解析ツールを使用しましたが、同様の結果が得られました。

copydetect で検出された sduser1 サンプルと tt2 サンプルの類似性

Python difflib

difflib は Winnowing ほどのパフォーマンスと拡張性はありませんが、少数のコードスニペットを比較するのであれば十分使えます。このモジュールは、1980 年代後半に Ratcliff と Obershelp によって公開された文字列比較アルゴリズムを利用しています。比較された 2 つのドキュメント間で検出された類似性を表示する機能もあります。

類似性アルゴリズムの比較

7 つの VBA コードサンプル(IOC セクション参照)の小さなサブセットに対してすべてのアルゴリズムを実行し、結果を比較して、対立する APT グループのコードの類似性の検出の成功度を評価しました。

サンプルの小さなサブセットでの類似性アルゴリズムの比較

調査結果から、各アルゴリズムの結果は同等であること、また次のサンプル間でコードが再利用されていることが分かりました。

  • sduser1 と tt1 および tt2 のコードは共通部分が多い
  • sduser1 と sduser2 のコードは共通部分が多い
  • donot2 と hang1 のコードは共通部分が多い
  • hang1 と sduser1 のコードは共通部分が少ない

テストでは、複数のアルゴリズムを使用すれば結果の信頼性を向上させることができます。

まとめ

南アジアのさまざまなグループ間で VBA コードの類似性が見られることについては、以前 Tencent 社popup_icon が言及していましたが、ここではその点を詳しく見てきました。人間の目であれば容易に見て取れるコードの再利用について、客観的なコードの類似性検出方法によって確認しています。

ソフトウェア エンジニアリングの強みの 1 つは、コードを共有することによって他のエンジニアが記述したライブラリを基にアプリケーションを構築できることです。他のソフトウェアエンジニアの成功や失敗から学ぶこともできます。同じことは攻撃者にもあてはまります。2 つの攻撃グループが、それぞれの攻撃に同じソースから作成したコードを使用する可能性があります。つまり、別のグループが攻撃を実行しているにもかかわらず、コードに類似性が見られることになります。

戦争では、一方の陣営が敵の TTP を模倣して相手の活動を偽装することで作戦の成功率を高める偽旗工作は珍しくありません。これはサイバー脅威の攻撃者にもよく見られ、Olympic Destroyerpopup_icon 攻撃などの既知の例があり、今後も同じことが起きる可能性があります。

攻撃者の間でコードが共有されることが予想されます。オープンソースツールは機能の有用なソースです。他のグループが成功させた攻撃で使用されている手口を攻撃者が採用した場合、誤った証拠を基に攻撃者を特定してしまうという過ちを犯すことになりかねません。

巧妙な攻撃者が今後もコードを再利用し偽旗工作を行うこと、また分析担当者を欺いて自身による攻撃を他のグループの攻撃に見せかけるために証拠を統合することを予想しておく必要があります。攻撃グループの特定はすでに難しくなっており、今後も簡単には特定できないでしょう。

カバレッジ

今回の脅威は、以下の製品で検出してブロックすることが可能です。

Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからpopup_iconお申し込みください。

Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。

Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。Threat Defense Virtual適応型セキュリティアプライアンスMeraki MX など、

Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。

Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。

Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからpopup_iconお申し込みください。

Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトをテストします。

特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。

Cisco Duopopup_icon は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。

オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。

IOC(侵入の痕跡)

不正ドキュメント

9ce56e1403469fc74c8ff61dde4e83ad72597c66ce07bbae12fa70183687b32d – 2018 年 2 月 Donot サンプル(donot1)
5efde4441e4184c36a0dec9e7da4b87769a574b891862acdb4c3321d18cbca69 – 2021 年 9 月 Donot サンプル(donot2)
386ed7ba502e7bf0e60c546476c1c762cbc951eb2a2ba1f5b505be08d60310ef – 2019 年 5 月 Transparent Tribe サンプル(tt1)
dbb9168502e819619e94d9dc211d5f4967d8083ac5f4f67742b926abb04e6676 – 2021 年 4 月 Transparent Tribe サンプル(tt2)
56349cf3188a36429c207d425dd92d8d57553b1f43648914b44965de2bd63dd6 – 2019 年 7 月 Operation Hangover サンプル(hang1)
a3c020bf50d39a58f5345b671c43d790cba0e2a3f631c5182437976adf970633 – 2021 年 6 月 SDuser サンプル(sduser1)
3bbae53fc00449166fd9255b3f3192deba0b81b41b6e173d454c398a857b5094 – 2021 年 7 月 SDuser サンプル(sduser2)

SDuser ペイロード

6c53faf0ab7d8eb5a17e526e77f113e467bd1ba0c269f05e53248eb9b82c9413
e9d550d9a18dd0efee23eb189ba79917d39e5c33fc1dfac662248868c260f073
f65d3d22383e5cdefadbe74771a4ec7ff67b22f7ecaab227d9632c15c5d420b4
ebc3a27c759ebc4a36737077606e6de3f5183873cefb0c30e38ac2b53e6951ac
af8fb83261033655dd6a8b95c0c9fd525b83bc61edcb34add28c12767f656ccc
29e6de23ec0f2eed52acf685c999979129ce6be2473bdc5f89b1701bc9dff30c
f3754da124351054dff819551b8bea0703df8b4d8459f26b0e98ea8b8f7e1901
591755dbb55cafb4fd69989e7b8eb0a1b60ff788034544ef9e1eb90b8bd20b70
129291acbd1ad72d4a76d93bc0fc39a5f4cd286035e683cdb1bf6e9baa45263c
f4ab529f16fd2e88c1e552fdaacacf59c40cf863dfa6356beadaf310d5ae6544
2e844ab5eca01c6949c7d041cae3ff55331e06bdbb7427f4954088d1457d5032
5d16dd6eb42154dba8c2535712ee87a97010ec50a1ddb44ba4a29dc8dea2e59c
2bbe58d484a2b22974b29f2a7de35ce787105d55f53bf41a2e9d75ac908854ea
fc541b1fb40aeccffdcfeb11bfc54a34e3d7032356e0292c0e6182f7bd37b3cf
8cb4ed2d3f3f466f2417b95856ac0eb268a578e6bfd26c615b2a4adc0094ecd2
085b579176f3321a36788a74ca7a37f1488c76cf58278722e1ee2e8b6e1a4a19
c19fffe9a2ffa0910920fc9bf29195958912338b8dcf8c7af26709dbc88ce5a0
d0843ddc2b27f720511041b0dbdb157a55146ee1d8aed050e725a8c073831978
463d103fd03b50ba05fa1427d29b443cbcf1855e354dd81b723b2141d23cae17
dc1f214e0278be2f1718d74682dbf107ddd2f913564235e8872e9f9c7b82ebf2
d3f9d5027cc907458eacc948ba6869a10d458831943fbbdb2aba576db0b15078
2035e096732d618090f7f9c0690effccde42868f3130538216e145268ba1bc0a
092047714a7a81a7de7840b4461750e3ad4ccfa1c968bcbc69c1cc4f5471f051
7b730d70c2308572d8492b6e0fce6e75d6249b3130e9456c759874f80dbaf6be
d33d03c3eeda85469842dd8e19809007e54171f068137a17f425b43f2b94d407
ea013cd8c17fd6b2a8521e882302e46597278ad4ffe5509ce0546f1e20770eb7
5c1d6948b949ecdb39dffc6fc8b9b8d8b105d62b22c4b004ca3ab03d9de2e336
5f9e18cc22f806551a5f64466b6b51630fbead6a991823f48e865718e5283d25
af5bd7227c2dbaf524c1e74b7a4bf088809a872c11c31c423765efebbc6b26b7
13ff13f72cc2e748af334b000cbb5f1f6e3f8debe7b01c197d1a43a837373e93

ホスト

microsoft-updates.servehttp.com
microsoft-patches.servehttp.com
microsoft-docs.myftp.org

IP アドレス

45.153.240.66 – Sidewinder グループpopup_icon
の 46.30.188.222 と関係がある可能性あり

 

本稿は 2022 年 02 月 09 日に Talos Grouppopup_icon のブログに投稿された「What’s with the shared VBA code between Transparent Tribe and other threat actors?popup_icon」の抄訳です。

 

 

コメントを書く