2023年1月11日

悪意のあるJARファイルとPolyglot ファイル: 悪性JARって何なんジャー

2022年を通じてDeep Instinctは、悪意あるJARを持つpolyglotファイルのさまざまな組み合わせを確認しました。最初の手法は少なくとも2018年頃、署名付きMSIファイルを使用してMicrosoftのコード署名検証をバイパスしていました。

2019年、Virus TotalはMSI+JARのpolyglot テクニックについて書きましたが、Microsoftはその時点でこの問題を修正しないことを決定しました。2020年、このテクニックは悪意あるキャンペーンで悪用されたため、MicrosoftCVE-2020-1464を割り当て、この問題を修正しました。

修正されたにもかかわらず、Deep Instinctは2022年にこの手法がまだ使用されており、必ずしもCVEを悪用しない新しいタイプの polyglotが含まれていることを観察しました。むしろ、攻撃者は現在、JARファイル形式を適切に検証しないセキュリティソリューションを混乱させるためにpolyglotテクニックを使用しているのです。

polyglotとは?

polyglotファイルは、少なくとも2つのファイル形式を、それぞれの形式がエラーなく解釈できるように組み合わせることによって構成されます。

任意のファイル形式の組み合わせからpolyglotを作ることができるわけではないため、少し面倒ですが、かなり多くの選択肢の中から選ぶことができます。

JARとは?

JARファイルは基本的にZIPアーカイブです。ZIPファイルについて特別なことは、ZIPファイルはアーカイブの最後に位置するend-of-centralディレクトリレコードの存在によって正しく識別されることです。これは、私たちがファイルの始めに追加したどんな「junk」も無視され、アーカイブはまだ有効であることを意味します。この2つを組み合わせると、有効なMSIと有効なJARの両方を持つファイルができあがります。

他のファイル形式では、ファイルの先頭に特別なマジックヘッダがあり、JARとは異なり、最初から読み込まれる必要がありますが、これらの形式の1つがMSIです。

2022のキャンペーン

2022年、Deep Instinctは、StrRATRatty のサンプルが、polyglotとして、またはjunkを先頭に付加したJARファイルとして配布されていることを確認しました。両方のRATは既知の脅威であり、StrRATについては設定抽出ツールがあり、Rattyについては私たちが独自に設定抽出ツールを作成し、GitHubコミュニティにも共有しています。 https://github.com/deepinstinct/RattyConfigExtractor

これらのファイルが単一の脅威者のものか、複数の脅威者のものかは判断できませんでしたが、多くのサンプルでブルガリアのホスティング会社「BelCloud LTD」の利用が確認されました。

また、RattyとStrRATのサンプルには、同じC2サーバを共有しているものがいくつか見受けられました。

簡単にするために、ファイルに付加されている内容で分類します。

#1 MSI:

サンプル 5e288df18d5f3797079c4962a447509fd4a60e9b76041d0b888bcf32f8197991

Linuxのfileコマンドでファイルを検査すると、このファイルはMSIファイルであると書かれていることがわかります:

図1:LinuxのファイルがサンプルをMSIファイルとして識別している様子
図1:LinuxのファイルがサンプルをMSIファイルとして識別している様子

しかし、このファイルには有効なJARも含まれており、我々のRatty設定抽出ツールは、C2サーバ情報を正常に抽出することができました。

このサンプルは、Sendgridを使用して送信されていることが確認されていますが、これは特別なことではなく、MSI+JARpolyglot を使用したStrRATサンプルの一部もSendgridを使用して送信されています。MSI+JARpolyglot を使用したStrRATサンプルの一部は、cutt.lyやrebrand.lyなどのURL短縮サービスを使って拡散されていることが確認されています。また、サンプルはDiscord上でホストされているケースもありました。

#2 CAB:

CAB ファイルは独自のマジックヘッダを持ち、最初から最後まで解釈されるため、JARファイルとのpolyglot には最適な候補となります。

RattyとStrRATの両サンプルがCAB+JARのpolyglot を使用しているのを確認しました。

特に、Rattyのサンプルであるf620c4f59db31c7f63e8fde3016a33b3bfb3934c17874dcfae52ca01e23f14de StrRAT サンプルである 2f4c6eb0a307657fb46f4a8f6850842d75c1535a0ed807cd3da6b6678102e571 は共にCAB+JAR polyglotを使用し、同じC2サーバーdonutz.ddns[.]netを使用しています

図2:StrRATとRatty(CAB+JAR)が同じC2サーバdonutz.ddns[.]netにリンクしている様子
図2:StrRATとRatty(CAB+JAR)が同じC2サーバdonutz.ddns[.]netにリンクしている様子

#3 HEX Trash / Fake PE:

脅威者が誤って作ったのか、それとも意図的に作ったのかはわかりませんが、これらのJARファイルには、HEX値が付加されています。

図3:HEX値が付加されたサンプル19154b831614211de667c2aedd6a4b5b89d4bfc1e129eb402a6300ad2e156dcf
図3:HEX値が付加されたサンプル19154b831614211de667c2aedd6a4b5b89d4bfc1e129eb402a6300ad2e156dcf

この16進数の値は、実行可能なファイルであり、これらのファイルは、添付された16進数が単なる「junk」テキストであるため、polyglot ではありませんが、Linuxの”file”コマンドは、そのようなファイルのファイルタイプとして「データ」を返します。

こうすれば、攻撃者はLinuxの "file "コマンドを使用してファイルの種類をチェックするセキュリティ・ソリューションを混乱させ、回避することができるのです。

#4 Binary Junk:

図4:バイナリデータを付加したサンプル8d801f58d10ddbc52739fa35aa862286c3fe9606411f0e5f7b8b3fd71f678cad
図4:バイナリデータを付加したサンプル8d801f58d10ddbc52739fa35aa862286c3fe9606411f0e5f7b8b3fd71f678cad

この内容は、ポリグラフを目的としたものではないため、これがミスなのか、それとも意図的に行われたものなのかは不明です。追記された内容は何らかのバイナリの一部であるようですが、追記されたデータは追記されたファイルの先頭が欠落しているようです。

最終的な結果は同じで、ファイルタイプをチェックすることで「データ」として検出される有効なJARファイルです。

この手法は攻撃者にとって有用だと思いますか? (もちろんです!)

RattyとStrRATはよく知られた脅威ですが、これらの付加されたJARファイルのいくつかは、VirusTotalでは非常に低い検知率を示しています。

図5:CAB+JA Rpolyglot の低い検知率
図5:CAB+JA Rpolyglot の低い検知率

VirusTotalの検知率は、特定のベンダーの真の検知能力を示すものではありません、ファイルが動的に実行された場合の挙動が異なる製品もあるからです。

とはいえ、コンテンツが追加されたJARファイルは、既知の脅威であっても、少なくとも実行されるまでは検知されないことがあることは明らかです。

これ以上の悪用を避ける方法はあるのでしょうか? (もちろんあります!)

もし、Linuxの "file "コマンドのような単純なファイルタイプチェックに頼ってJARファイルを識別できなかったとしたら、簡単な解決策は、JAR拡張子を持つすべてのファイルを「スキャン」することだけでしょう。

しかし、これではまだ十分ではありません。JAVAはファイル拡張子を気にせず、どんな拡張子を持つ有効なJARファイルでも喜んで実行します。拡張子".jar "の名前を変更する唯一の欠点は、JARを単にクリックして実行するのではなく、コマンドラインから実行する必要があることです。

私たちは、HTML+JARのpolyglot を作成し、これを実証しています:

図6:拡張子がhtmlのHTML+JARポリグラフがブラウザで適切に表示され、JREで適切に実行される様子
図6:拡張子がhtmlのHTML+JARポリグラフがブラウザで適切に表示され、JREで適切に実行される様子

このファイルは、Rattyマルウェア設定抽出ツールとともに、弊社のGitHubでも公開しています。

まとめ

JARファイルの適切な検出は、静的および動的の両方であるべきです。なぜなら、すべてのファイルをスキャンして、ファイル末尾の中心ディレクトリレコードの存在を確認するのは非効率的だからです。

防衛者は、「java」プロセスと「javaw」プロセスを監視し、そのプロセスが引数として”-jar”を持つ場合、引数として渡されたファイル名は、ファイル拡張子やLinuxの”file”コマンドの出力にかかわらず、JARファイルとして扱われるべきです。また、インシデント対応者やサイバーコミュニティの皆様は、感染時にDeep Instinct社が提供するRattyマルウェア設定パーサーを使用して、迅速にIOCを取得し、改善策を講じることができます。

MITRE ATT&CK:

タクティクステクニック概要オブサーバブル

初回アクセス

T1566.002 Phishing: Spearphishing Link

攻撃者は、ペイロードに誘導するURL短縮サービスを利用します

Rebrand[.]ly/afjlfvp

防衛回避

T1036.001 Masquerading: Invalid Code Signature

攻撃者は、署名されたMSIファイルを追加します

85d8949119dad6215ae0a21261b037af

防衛回避

T1027.001 Obfuscated Files or Information: Binary Padding

攻撃者は、ファイルの先頭にジャンクデータを追加し、"file" コマンドが異なるファイルタイプを返すようにします

cb17f27671c01cd27a6828faaac08239

コマンド コントロール

T1102 Web Service

攻撃者は、Discordのコンテンツデリバリーネットワーク(CDN)を利用してマルウェアを配信しています

https://cdn[.]discordapp[.]com/attachments/938795529683480586/941658014962823208/Package_info[.]jar

 

IOC:

d51d269b62e55d4af8a4bd72dcf3c5115ad27fe5466640041c658c0325194451

534a4b0e17723755dd8cbdcdec309004ef59c3dfacb87fac86da4548780d2f1b

08921a6b0b2903b9c991acb869930c7cab3cbaf11e002be9c88400af48c3fa21

59a02230a78b87c97eebbf7cdba40ea17c7d9411d706fd255c2a6a025584fd9f

a9ac4ae704da346a0f3d2960b084d8f314c0fd60a934116e3c75647c713314b6

47fc7fc1658acfa2f7a0b388bea6b52787f186bf8297ce189a575d547dfbd8e0

a80add76ff8ad0e1c3bdab9459546fd724e1f4034248d1542aec1264c02d3857

f0e57c84ba1958cabf24cfec4a0d50be6b7bc0e45c639d08a53097494373ae9e

e7812ff64dbe51584d3090e008b464510dbb87ac860c68d89e224621755021f9

41ef2dfa736e9a24a1a29a373357ac249dad99f86f1cc0283ddd4765fa14e54a

8d801f58d10dbcd52739fa35aa862286c3fe9606411f0e5f7b8b3fd71f678cad

f79ba296aeab13be409ee3ef435f47a8888f7186a062fa481603ec32f3d6b678

262e6824f0c4c765e73a7041362d7a3a8d63dab1be91ecf5e80623ac6e2f389e

b6a0dcd8c9bc11794837e8f9350e2816ae7a60d148f3e6f436c2645f450feeab

f620c4f59db31c7f63e8fde3016a33b3bfb3934c17874dcfae52ca01e23f14de

54814775c2f266cafe3d4ddc58bc400360aad8cea95e0d3ee74ceceb927cb3b8

2f4c6eb0a307657fb46f4a8f6850842d75c1535a0ed807cd3da6b6678102e571

74c8d5e01e2bb52c6f5cd7863168085ff81bea970b5309ec180c2e1a299096df

f2b36a7df3d0b4d63bbbc529b7a27282e5626300e1353d2596866e4a82165f64

4f00914f63181c0afbfff41a95f5f1364c61d78ffb250ec8ef3102b3d3bd7003

a989289cd6df1b1c38dbda84eb3b286bb8fb7a2af9beb1e55b029dbf861bac83

521a2e7ee2558d83e29bceb68a8c4ea0ecce4bddcb05cc0d3b0365522f126d1f

19154b831614211de667c2aedd6a4b5b89d4bfc1e129eb402a6300ad2e156dcf

e3be7066e6922d7460dea80ca5b7fef8f4abc7b1f056d8f329c03b306e8ca9b0

788f1abb67d6f21cf299e2f67a2b414d169e8ab16cc8a61bf698e5c7f1482999

5e288df18d5f3797079c4962a447509fd4a60e9b76041d0b888bcf32f8197991

0c14d804efe1db9377bfe3d5e06ba37a4817cc4bd0f6404ed7d705219295e815

1056554bca75450d07fcc5df7c1ca4686a2fefbe76cc9fb60343364678ca8744

f2d7e93978c0991e376466810adf18262e4a7fb2864c7a87f22e3fa71adb6519

496251bb063e4ee3769139a34ccfbdd81ba52b004836da7aaabd5e5e67f87478

d00d85589908ba95536822dea356afb5a9148628a7e2207c6e850024c0ba434d

928551a303110983871266af840df71bf7427dcff242688c105f04d4aa87806b

e2d67077cbcab70d47a95b8da25a2a35fe1f1099ed71d8b06f8e78dd741fc2b7

d0703f8f70aff6e3975f3b7c8d037b5a0d3d1b8e4a91b2a6c65227c7932dded5

9e0468a7249fd6bc2b911434b0c7afa2a9d92473e2402a1a3ad357119c579d63

fe72f76f147bce32338a4b0b88c3d59dd3e85406ab1b3b273aab7cb7227fae52

964eceee84de3d0b8b3565100c1e45dab1b4b5ff7c61f03a198a56714c03ca32

d8c04d3a6e6e5058c10a56890a9dcf41ac5e47a22dc1002e89415ee0f37c7f05