Cisco Japan Blog
Share

JhoneRAT:中東諸国をターゲットとしたクラウドベースの python RAT


2020年1月30日


 

エグゼクティブサマリー

このブログでは、Cisco Talos が特定して「JhoneRAT」と名付けた新しい RAT(リモートアクセスのトロイの木馬)の詳細情報を公開します。この新しい RAT は、悪意のある Microsoft Office ドキュメントによって被害者のマシンにドロップされます。Python RAT が仕込まれたドロッパーは、まず被害者のマシンに関する情報を収集します。その後、複数のクラウドサービス(Google ドライブ、Twitter、ImgBB、Google フォーム)を利用して別のペイロードをダウンロードし、偵察フェーズ中に収集した情報をアップロードします。この特殊な RAT は、アラビア語圏の特定の国を標的にするために、感染したシステムのキーボードレイアウトをチェックします。サンプルを分析した結果から、JhoneRAT は、サウジアラビア、イラク、エジプト、リビア、アルジェリア、モロッコ、チュニジア、オマーン、イエメン、シリア、UAE、クウェート、バーレーン、レバノンを対象としていることがわかっています。

新しい点:このキャンペーンの RAT は独自に開発されたもので、クラウドプロバイダーでホストされている複数のレイヤで機能します。Python で開発されていますが、このタイプのマルウェアでよくあるケースとは異なり、公開されているソースコードは利用されていません。攻撃者は、感染したマシンのキーボードレイアウトに基づいて特定の国をターゲットに選ぶよう、労力を費やして万全を期しています。

仕組み:すべては、インターネット上でホストされている、既知の脆弱性を利用した悪意のあるドキュメントをダウンロードすることから始まります。今回のキャンペーンは、評価の高いクラウドプロバイダー(Google)を利用して、URL がブラックリストに登録されるのを回避しようとします。このマルウェアは、いくつかのレイヤに分かれています。各レイヤはクラウドプロバイダーに新しいペイロードをダウンロードして、Python で開発された最終的な RAT を取得した後、Twitter や ImgBB などの別プロバイダーを利用します。

特徴:この RAT は、自分のネットワークトラフィックをその他のトラフィックに紛れ込ませる、非常に焦点を絞った攻撃がいかに効果的であるかを示すよい例です。今回のキャンペーンでは、ネットワークによる検出だけに頼ることは最適なアプローチではありません。オペレーティングシステムの振る舞いに基づいて検出する必要があります。攻撃者は、検出を回避するために有名なクラウドプロバイダーの評判を悪用します。さらに、ソフトウェアを最新の状態に保つことをお勧めします。このキャンペーンでは、2017 年に発見されてパッチが適用された、Microsoft 製品の脆弱性が利用されていました。

OPSEC とターゲットとなった国

この攻撃者が、攻撃者自身のインフラストラクチャを利用せず、クラウドサービスと 4 つの異なるサービスを活用することにしたのは、opsec の観点から巧妙です。ターゲットにされた側が、クラウドプロバイダーのインフラストラクチャに対する正当なトラフィックと悪意のあるトラフィックを区別することは困難です。さらに、クラウドプロバイダーのインフラストラクチャは HTTPS を利用し、フローは暗号化されているため、防御側が中間で傍受することもできません。クラウドプロバイダーだけを使用した攻撃は今回が初めてではありません。

 

User-agent #1

 

User-agent #2

 

User-agent #3

クラウドサービスを使用している場合でも、この JhoneRAT の作成者はさらに細工し、リクエストごとに異なる user-agent 文字列を使用しています。ダウンローダにおいてさえも、別の user-agent 文字列を使用していました。

Talos では、ROKRAT に関するいくつかの記事をすでに公開しています(こちらこちらこちらこちら)。それらの ROKRAT では、今回とは関係のない別の攻撃者である Group123 が、プロバイダーは異なるものの同じ方法を利用していました。

キーボードのレイアウトに基づいてターゲットを選別する処理が実装されています。

 

キーボードレイアウトのチェック

 

マルウェアは、キーボードが以下のレイアウトの場合にのみ実行されます(それぞれの国は、Microsoft 社の Web サイトpopup_iconに基づいています)。

  • ‘0401’ -> サウジアラビア
  • ‘0801’ -> イラク
  • ‘0c01’ -> エジプト
  • ‘1001’ -> リビア
  • ‘1401’ -> アルジェリア
  • ‘1801’ -> モロッコ
  • ‘1c01’ -> チュニジア
  • ‘2001’ -> オマーン
  • ‘2401’ -> イエメン
  • ‘2801’ -> シリア
  • ‘3801’ -> UAE
  • ‘3401’ -> クウェート
  • ‘3c01’ -> バーレーン
  • ‘3001’ -> レバノン

 

悪意のあるドキュメント

デコイドキュメント

Talos では、CVE-2017-0199popup_icon の脆弱性をエクスプロイトした、悪意のある Microsoft Office ドキュメントを 3 つ特定しました。最も古いものは、以下に示す「Urgent.docx」という名前のドキュメントで、2019 年 11 月に検出されています。

 

 

最初のデコイドキュメント

ドキュメントは、英語とアラビア語で、編集を有効にするように求めています。

1 月初旬に発見された 2 番目のドキュメントは「fb.docx」という名前で、「Facebook」から漏洩された疑いのあるものと称して、ユーザ名とパスワードが記載されています。

 

2 番目のデコイドキュメント

1 月中旬に発見されたより新しいドキュメントは、アラブ首長国連邦の組織からのもののように装っています。内容がぼかされ、はっきり表示するには編集を有効にする必要があるとされています。

 

 

 

3 つ目のデコイドキュメント

3 つ目では、CVE-2017-0199 がエクスプロイトされています。

CVE-2017-0199

3 つ目のドキュメントは、この脆弱性を利用して、Google ドライブ上にある 3 つの異なるテンプレートをダウンロードして実行します。

 

 

 

Google ドライブ上の悪意のあるテンプレート

感染ワークフロー

ステージ 1:Google ドライブ上の悪意のあるテンプレート

Google ドライブにあるテンプレートにはマクロが仕込まれていて、そのマクロには、被害者の環境で使用可能なディスクのシリアル番号に基づいて仮想マシンを検出する手法が含まれています。VM ではシリアル番号がない場合があり、その場合マクロは実行されません。ターゲットのシステムでシリアル番号を取得するために、WMIC コマンドが実行されます。

 

マクロによる WMI チェック

 

シリアル番号が存在する場合は、コードの残りの部分が実行されます。目的は、新しい Google ドライブのリンクからイメージをダウンロードすることです。

 

 

イメージのダウンロード

興味深いことに、ダウンロードしたイメージのファイル名は、dictionary: Array (“cartoon,” “img,” “photo”) に基づいてランダムに生成されます。したがってファイル名は、cartoon.jpg、img.jpg、photo.jpg のいずれかになります。また、イメージには通常、漫画が描かれています。

ステージ 2:Google ドライブ上のイメージファイル

 

base64 データとイメージは、「****」という文字列で区切られています。

 

 

イメージとペイロードの分離

デコードされたバイナリファイル名も、dictionary: Array (“proc”, “chrome”, “winrar”) に基づいてランダムに生成されます。つまり、proc.exe、chrome.exe、winrar.exe のいずれかになります。

 

ステージ 3:AutoIt ファイル

 

base64 データをデコードすると、AutoIT のバイナリになります。このバイナリは、Google ドライブに新しいファイルをダウンロードします。

 

AutoIT ダウンローダ

このファイル名も、dictionary $ARRAY[5]=[“prc”,”winrar”,”chrome”,”sync”,”COM surr”] に基づいてランダムに生成されます。

ステージ 4:クラウドプロバイダーを利用した Python RAT

最終的なペイロードは、Python で書かれたリモートアクセスツール(RAT)です。Talos は、この RAT を「JhoneRAT」と名付けました。Python コードは pyinstaller を使用して実行可能ファイルにラップされます。pyinstaller では、変数と関数の名前にのみ最小限の難読化が適用されます。

 

RAT の起動

RAT は、3 つのスレッドを開始することで起動されます。最初のスレッドは、システムのキーボードレイアウトが、ターゲットにしているものと一致しているかどうかを確認します(アラビア語圏の国のみが対象)。2 つ目のスレッドは永続化させるためのもので、最後に開始されるスレッドは、RAT のメインサイクルです。前に説明したように、この RAT は、キーボードのレイアウトを確認することで特定の国をターゲットにします。実際には、キーボードチェックは、RAT 実行時に実施される最初のチェックの 1 つです。永続化は、「ChromeUpdater」という名前のエントリを「Software\\Microsoft\\Windows\\CurrentVersion\\Run」に追加することで実現されます。

コマンドアンドコントロール通信

この RAT は、3 つの異なるクラウドサービスを利用して、すべてのコマンドアンドコントロール(C2)アクティビティを実行します。BeautifulSoup HTML パーサーを使用して新しいツイートを識別し、10 秒ごとにハンドル名 @jhone87438316(Twitter によって現在は停止)からのツイートに含まれている新しいコマンドをチェックします。これらのコマンドは、各ターゲットで生成された UID に基づいて、特定の被害者に対して実行されます(ディスクのシリアル番号および、ホスト名、ウイルス対策ソフト、OS などのコンテキスト情報を使用)。すべての被害者に対して実行される場合もあります。

 

コマンドの取得

 

 

コマンドの解析

ただし、データの抽出は、他のクラウドプロバイダーを利用して行われます。スクリーンショットは、ImgBB の Web サイトから取得されています。

 

 

残りのコマンドは、Google フォームにデータを投稿することでフィードバックを送信するものです。

 

 

最後に、この RAT は、base64 でエンコードされたファイルを Google ドライブにダウンロードできます。

 

 

機能面では、次の 3 つのコマンドがあります。

  • スクリーンショットを取得し、ImgBB にアップロードする。
  • 画像が含まれている偽装されたバイナリを Google ドライブからダウンロードして実行する。
  • コマンドを実行し、結果を Google フォームに送信する。

VM 対策、デコンパイラ対策、ヘッダーの削除

攻撃者は、仮想マシン(サンドボックス)での実行を回避するために、いくつかの策略を用意しています。最初の策略は、ディスクのシリアル番号のチェックです。この手法は、マクロと JhoneRAT でも使用されていました。デフォルトでは、ほとんどの仮想マシンのディスクにシリアル番号がありません。

2 つめの策略は、Python コードが分析されないようにするためのものです。この策略は、FireEye の Flare-On 6: Challenge 7popup_icon のものと同じです。この策略によって、Python のバイトコードからヘッダーが削除されます。コードはヘッダーがなくても完全に実行できますが、uncompyle6 などのツールではヘッダーが必要で、ヘッダーがないと以下のようになります。

$ uncompyle6 final2

ImportError: Unknown magic number 227 in final2

また、uncompyle6 で生成されたコードはバージョンによって異なり、その影響は重大です。

uncompyle6 バージョン 3.3.5 で生成されたコードは以下のとおりです。

 

 

uncompyle6 バージョン 3.6.2 でも同じコードが生成されます。

 

 

Talos での分析結果と、実行されたマルウェアの振る舞いから考えると、正しい解析結果は、uncompyle6 の古い方のバージョンを利用した最初のものです。

この特定の条件に関しては、キーボードレイアウトでフィルタ処理をしてターゲットを特定するのに使用されているため、最初のものが重要です。

まとめ

このキャンペーンは、攻撃者が、中東およびアラビア語圏の特定の国に関心を持っていることを示しています。また、クラウドプロバイダーのみを利用することで opsec を意識していることがわかります。悪意のあるドキュメント、ドロッパー、および RAT 自体は、クラウドプロバイダーを利用するように開発されています。さらに攻撃者は、悪意のあるアクティビティが分析されないように、VM 対策(およびサンドボックス対策)と分析回避の策略を実装しています。たとえば、VM(サンドボックス)では、ターゲットの国のキーボードレイアウトと一致し、ディスクのシリアル番号が設定されていなければなりません。このキャンペーンは 2019 年 11 月に開始され、現在も継続中です。現時点では、API キーが取り消され、Twitter アカウントは停止されていますが、攻撃者は新しいアカウントを簡単に作成し、悪意のあるファイルを更新することで、攻撃を継続することができます。このキャンペーンは、ネットワークベースの検出が重要だとしても、システムの振る舞いを分析することで補完する必要があることを示しています。

IOC(侵入の痕跡)

Docx:

273aa20c4857d98cfa51ae52a1c21bf871c0f9cd0bf55d5e58caba5d1829846f
29886dbbe81ead9e9999281e62ecf95d07acb24b9b0906b28beb65a84e894091
d5f10a0b5c103100a3e74aa9014032c47aa8973b564b3ab03ae817744e74d079

テンプレート:

6cc0c11c754e1e82bca8572785c27a364a18b0822c07ad9aa2dc26b3817b8aa4

イメージ:

7e1121fca3ac7c2a447b61cda997f3a8202a36bf9bb08cca3402df95debafa69

PE Autoit:

b4a43b108989d1dde87e58f1fd6f81252ef6ae19d2a5e8cd76440135e0fd6366

PE Python:

4228a5719a75be2d6658758fc063bd07c1774b44c10b00b958434421616f1548

URL:

hxxps://drive[.]google[.]com/uc?export=download&id=1vED0wN0arm9yu7C7XrbCdspLjpoPKfrQ

hxxps://drive[.]google[.]com/uc?export=download&id=1LVdv4bjcQegPdKrc5WLb4W7ad6Zt80zl

hxxps://drive[.]google[.]com/uc?export=download&id=1OlQssMvjb7gI175qDx8SqTgRJIEp5Ypd

hxxps://drive[.]google[.]com/uc?export=download&id=1d-toE89QnN5ZhuNZIc2iF4-cbKWtk0FD

hxxps://drive[.]google[.]com/uc?export=download&id=1kbHVkvPIjX49qJ62TBz6drW2YPiiaX2a

hxxps://twitter[.]com/jhone87438316

 

カバレッジ

お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。

Cisco クラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。

電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。

次世代ファイアウォール(NGFW)次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。

シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

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

 

本稿は 2020年1月16日に Talos Grouppopup_icon のブログに投稿された「JhoneRAT: Cloud based python RAT targeting Middle Eastern countriespopup_icon」の抄訳です。

Tags:
コメントを書く