稼働中のPastebinによるコマンド&コントロールトンネルを介しnjRATが拡散

This conceptual image illustrates the idea of malware, such as the njRAT spreading through active Pastebin command and control tunnel that is discussed in this blog.

This post is also available in: English (英語)

概要

2020年10月以降に収集・観測した内容から、Unit 42のリサーチャーは、マルウェア作成者がリモートアクセス用のトロイの木馬であるnjRAT(別名Bladabindi)を利用し、人気WebサイトPastebin(データの匿名での保存に利用されることで有名)から第2段階のペイロードをダウンロード・配布していることを発見しました。攻撃者はこのサービスを利用して悪意のあるデータを投稿し、マルウェアが短縮URL経由でアクセスできるようにしています。これにより、攻撃者は独自のコマンド&コントロール(C2)インフラストラクチャを利用しなくてもよくなり、オペレーションを露見させずにすむ可能性が高まります。

本稿では、実際に利用されていたさまざまなシナリオとデータの変換を紹介し、ダウンローダコンポーネントとその第2段階のマルウェアとの関係について解説します。

パロアルトネットワークスの次世代ファイアウォールをご利用のお客様は、脅威防御WildFireのセキュリティサブスクリプションによりnjRATから保護されています。Cortex XDRをお使いのお客様も同脅威から保護されています。

稼働中のPastebinによるC2トンネル

Pastebinサービスを使うC2トンネルは、悪意のあるペイロードのホスティング先として攻撃者に活発に利用されています。たとえばキーロガーやバックドア、トロイの木馬などの悪意のあるペイロードがここにホスティングされています。

ホスティングされるデータの形式や形状はさまざまで、なかには従来のbase64エンコーディング、16進数表記やJSONデータ、圧縮BLOB、悪意のあるURLが埋め込まれたプレーンテキストデータなどさまざまなデータエンコーディング、変換方式などがあります。こうしたPastebinの利用は、セキュリティ製品による検出回避を目的としているものと考えられます。

これ以降のセクションでは、実際に利用されていたさまざまなシナリオやデータ変換を紹介し、ダウンローダコンポーネントとその第2段階のマルウェアとの関係について解説します。

base64エンコードされた応答によりドロップされる第2段階のマルウェア

ダウンローダ: 91f4b53cc4fc22c636406f527e3dca3f10aea7cc0d7a9ee955c9631c80d9777f
第2段階: 492ea8436c9a4d69e0a95a13bac51f821e8454113d4e1ccd9c8d903a070e37b2
ソース URL: hxxps://pastebin[.]com/raw/VbSn9AnN

ダウンローダ(91f4b53cc4fc22c636406f527e3dca3f10aea7cc0d7a9ee955c9631c80d9777f)はPastebinのC2のデータをリクエストし、さほど回避に工夫がこらされていないバージョンの保存データを使用します。この保存データは従来のbase64エンコーディングに対応しています。

base64エンコードされたデータ base64デコードされダンプされたバイナリ
これは「base64エンコードされたデータ」と「base64デコードされダンプされたバイナリ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。 これは「base64エンコードされたデータ」と「base64デコードされダンプされたバイナリ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。

図1 base64でエンコードされたデータとそれを実行可能ファイルへ変換したもの

デコードされると、最終ペイロードは32ビットの.NET実行可能ファイルであることが明らかになります。この実行可能ファイルは、GetKeyboardState()、GetAsynckeyState()、MapVirtualKey()など複数のWindows API関数を利用します。これらは一般的にキーロガーやトロイの木馬に利用されているWindows API関数で、このほかにもユーザーデータの漏出機能で使われることがあります。ダウンローダと第2段階の実行可能ファイルは、機能やコードが類似している点にも注意すべきでしょう。

以下の図は、第2段階のサンプルを逆コンパイルしたコードのスクリーンキャプチャです。

キーロガーやトロイの木馬で一般的に使用されるGetKeyboardState()、GetAsynckeyState()、MapVirtualKey()など複数のWindows API関数を含む、第2段階の検体を逆コンパイルしたコードのスクリーンキャプチャ
図2 キーロガー機能に関連するWindows API関数

検出回避のために逆にbase64エンコードされてドロップされる第2段階のマルウェア

ダウンローダ: 67cbb963597abb591b8dc527e851fc8823ff22d367f4b580eb95dfad7e399e66
第2段階: ffb01512e7357ab899c8eabe01a261fe9462b29bc80158a67e75fdc9c2b348f9
ソース URL: hxxps://pastebin[.]com/raw/JMkdgr4h

このバージョンでは、おそらくは自動化されたシステムの検出回避をねらって、base64データが逆になっていました。

逆になったbase64文字列 変換されたbase64データ
これは「逆になったbase64文字列」と「変換されたbase64データ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。 これは「逆になったbase64文字列」と「変換されたbase64データ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。

図3 逆になったbase64文字列と、それをbase64形式に変換した結果

データを適切に変換してデコードした後、最終的な第2段階の32ビット.NET実行可能ファイルは、似たような検体であることがわかりました。この検体にもキーロガーとトロイの木馬の機能が含まれていました。最終ペイロードの取得には3段階のデータ変換が必要でした。

ASCII/base64エンコードされた応答によりドロップされる第2段階のマルウェア

ダウンローダ: 9ba0126bd6d0c4b41f5740d3099e1b99fed45b003b78c500430574d57ad1ad39
第2段階: dfc8bffef19b68cfa2807b2faaf42de3d4903363657f7c0d27435a767652d5b4
ソース URL: hxxps://pastebin[.]com/raw/LKRwaias

このバージョンでは、base64データが16進数表記文字列になっていました。

16進数表記文字列でエンコードされた文字列 16進数表記文字列をデコード後エンコードされたbase64データ
これは「16進数表記文字列でエンコードされた文字列」と「16進数表記文字列をデコード後エンコードされたbase64データ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。 これは「16進数表記文字列でエンコードされた文字列」と「16進数表記文字列をデコード後エンコードされたbase64データ」を表しています。これらは、njRATを監視し、ダウンローダーコンポーネントとその第2段階のマルウェアとの関係を追跡する一環として収集した情報の一部です。

図4 16進数表記でエンコードされた文字列とそれをbase64形式に変換したもの

16進数表記データとbase64データを適切にデコード後にダンプされたプログラムも、やはり前例と同じ悪意のある特性を有する32ビットの.NET実行可能ファイルになりました。

base64エンコード・圧縮されたデータの応答によってドロップされる第2段階のマルウェア

ダウンローダ: 54cf2d7b27faecfe7f44fb67cb608ce5e33a7c00339d13bb35fdb071063d7654
第2段階: 96c7c2a166761b647d7588428fbdd6030bb38e5ef3d407de71da657f76b74cac
ソース URL: hxxp://pastebin[.]com/raw/zHLUaPvW

他のサンプルとは異なり、この32ビットの.NETランチャのサンプルはPastebinから取得した圧縮データを使って機能するようになっています。

他のサンプルとは異なり、この32ビットの.NETランチャのサンプルはPastebinから取得した圧縮データを使って機能するようになっています。
図5 base64圧縮データの解凍と実行

このダウンローダは次のアクションを実行します。

  1. DownloadString()を実行することでbase64でエンコード・圧縮されたデータがダウンロードされます。このときこの関数には、変数str、str2、str3str4を連結して生成した文字列が引数として渡されます。この連結した文字列が目的のURLとなります。
  2. base64・圧縮されたデータはFromBase64String()関数でデコードされてDecompressGZip()関数で解凍されます。この結果がrawAssembly変数内のバイト列に格納される実行可能ファイルです。
  3. 最後に、メモリ内の実行可能ファイルに変数rawAssemblyが渡されてLoad().EntryPoint.Invoke()関数が呼ばれます。これにより、システム内に自身を配置し、悪意のあるペイロードをリリースします。

次の図は、実行前にメモリに存在する解凍された32ビット.NET実行可能データを示しています。

次の図は、実行前にメモリに存在する解凍された32ビット.NET実行可能データを示しています。
図6 メモリ内にある解凍された第2段階のマルウェア

URLリンクの応答によりドロップされる第2段階のマルウェア

ダウンローダ: bd2387161cc077bfca0e0aae5d63820d1791f528feef65de575999454762d617
第2段階: 7754d2a87a7c3941197c97e99bcc4f7d2960f6de04d280071eb190eac46dc7d8
ソース URL: hxxp://pastebin[.]com/raw/ZFchNrpH

この.NETダウンローダは、リモートURLから実行可能ファイルを取得するという従来の方法を使用します。ターゲットアドレスはhxxp://textfiles[.]us/driverupdate0.exeを指します。

VirusTotalでこのマルウェアサンプルは複数のベンダにより悪意のあるものとして識別されていました。

VirusTotalでdriverupdate0.exeのマルウェアサンプルは複数のベンダにより悪意のあるものとして識別されていました。
図7 VirusTotalとVirusTotalでのdriverupdate0.exe実行可能ファイルの検出率

JSONによる応答の構成ファイル

ダウンローダ: 94e648c0166ee2a63270772840f721ba52a73296159e6b72a1428377f6f329ad
ソース URL: hxxps://pastebin[.]com/raw/8DEsZn2y

このバージョンでは、JSON形式のデータが使用されていました。キー名の1つ、「downlodLink」(マルウェアの作成者が意図的にスペルを間違えたもの)は、値がURLになり、追加でコンポーネントをダウンロードできることを示しています。この特定のファイルの目的に関する詳細な情報はわかっていませんが、これは構成ファイルとして使用される可能性があります。

JSON形式のデータを使用するこのファイルの目的はわかっていませんが、構成ファイルとして使用される可能性があります。
図8 JSONベースのマルウェア構成ファイルとおもわれるもの

HTML応答によりドロップされるプロキシスクレーパー

ダウンローダ: 97227c346830b4df87c92fce616bdec2d6dcbc3e6de3f1c88734fe82e2459b88
Proxy Scraper.exe: e3ea8a206b03d0a49a2601fe210c949a3c008c97e5dbf77968c0d08d2b6c1255
MaterialSkin.dll: b9879df15e82c52e9166c71f7b177c57bd4c8289821a65a9d3f5228b3f606b4e
ソース URL: hxxps://pastebin[.]com/rw/770qPDMt

このマルウェアはHTMLページを解析し、さらなる攻撃に備えてリンクを取得します。この特定のサンプルでは、Pastebinのデータを使用してソフトウェアダウンロードリンクを提供しています。

Pastebinのデータは、ProxyScraperソフトウェアを指すソフトウェアダウンロードリンクの提供に使用されています。
図9 Proxy Scraperソフトウェアを指すリンク

ダウンロードリンクはSimple+Scraper.zipという圧縮ファイルを指しています。この圧縮ファイルのなかには、MaterialSkin.dllとProxyScraper.exeの2つのファイルが含まれています。.NET Decompilerソフトウェアを使用してコードを静的に検査したところ、ダウンローダマルウェアがPastebinをリポジトリとして使用し、Proxy Scraperソフトウェア関連の更新へのリンクをホスティングしていることがわかりました。

.NET Decompilerソフトウェアを使用してコードを静的に検査したところ、ダウンローダマルウェアがPastebinをリポジトリとして使用し、Proxy Scraperソフトウェア関連の更新へのリンクをホスティングしていることがわかりました。
図10 .NETコードを使いProxy Scraperソフトウェア関連の更新をチェックする

ダウンローダのバージョン(「v2.0」)はコードレベルで表示されますが、第2段階のマルウェアコードはバージョンを示しません。ただしVirusTotalの情報によれば、この実行可能ファイルは「Lithium proxy scraper v2.6」を含むさまざまな名前で送信されているようです。

結論

Pastebinを使うC2トンネルは今も稼働していて、Pastebinにホスティングされているデータをダウンロードし、悪意のあるペイロードを配布し、同マルウェアや他のマルウェアファミリがペーストベースの公開サービスを利用できるようにするという用途でnjRATに利用されています。私たちの調査によると、マルウェアの作成者は、Pastebinで第2段階のペイロードをホスティングし、セキュリティソリューションを回避する手段としてそうしたデータを暗号化・難読化することに関心を持っています。マルウェアの作成者は、Pastebinなどのサービスを長期にわたって使用する可能性があります。

本稿執筆時点では以下のサンプルは公開されていませんが、それらの振る舞いや通信に対抗するのに必要なすべての情報を網羅しました。

  • ffb01512e7357ab899c8eabe01a261fe9462b29bc80158a67e75fdc9c2b348f9
  • dfc8bffef19b68cfa2807b2faaf42de3d4903363657f7c0d27435a767652d5b4
  • 96c7c2a166761b647d7588428fbdd6030bb38e5ef3d407de71da657f76b74cac

パロアルトネットワークスのお客様は、次の手段でこの攻撃から保護されています。

  1. 脅威防御のシグネチャ21010210052107521077が、悪意のあるコンポーネントをダウンロードしようとしているPastebinのHTTPリクエストを識別します。
  2. WildFireCortex XDRはnjRATとそのドロッパを識別してブロックします。

IoC

サンプル

  • 03c7015046ef4e39a209384f2632812fa561bfacffc8b195542930e91fa6dceb
  • 205341c9ad85f4fc99b1e2d0a6a5ba5c513ad33e7009cdf5d2864a422d063aba
  • 2270b21b756bf5b5b1b5002e844d0abe10179c7178f70cd3f7de02473401443a
  • 54cf2d7b27faecfe7f44fb67cb608ce5e33a7c00339d13bb35fdb071063d7654
  • 54d7ee587332bfb04b5bc00ca1e8b6c245bb70a52f34835f9151b9978920b6d7
  • 678a25710addeefd8d42903ceddd1c82c70b75c37a80cf2661dab7ced6732cd3
  • 67cbb963597abb591b8dc527e851fc8823ff22d367f4b580eb95dfad7e399e66
  • 6817906a5eff7b02846e4e6a492ee57c2596d3f19708d8483bef7126faa7267f
  • 69366be315acc001c4b9b10ffc67dad148e73ca46e5ec23509f9bb3eedcd4c08
  • 94c2196749457b23f82395277a47d4380217dd821d0a6592fc27e1e375a3af70
  • 94e648c0166ee2a63270772840f721ba52a73296159e6b72a1428377f6f329ad
  • 96640d0c05dd83bb10bd7224004056e5527f6fad4429beaf4afa7bad9001efb7
  • 97227c346830b4df87c92fce616bdec2d6dcbc3e6de3f1c88734fe82e2459b88
  • 97b943a45b4716fcea4c73dce4cefe6492a6a51e83503347adcd6c6e02261b84
  • 9ba0126bd6d0c4b41f5740d3099e1b99fed45b003b78c500430574d57ad1ad39
  • bd2387161cc077bfca0e0aae5d63820d1791f528feef65de575999454762d617

第2段階

  • 9982c4d431425569a69a022a7a7185e8c47783a792256f4c5420f9e023dee12a
  • d347080fbc66e680e2187944efbca11ff10dc5bfcc76c815275c4598bb410ef6
  • 30c071a9e0207f0ca98105c40ac60ec50104894f3e4ed0fb1e7b901f56d14ad4
  • 231d52100365c14be32e2e81306b2bb16c169145a8dbcdc8f921c23d7733cef0
  • fd5c731bb53c4e94622e016d83e4c0d605baf8e34c7960f72ff2953c65f0084c
  • b3730931aaa526d0189aa267aa0d134eb89e538d79737f332223d3fc697c4f5a
  • 75b833695a12e16894a1e1650ad7ed51e6f8599ceaf35bbd8e9461d3454ab711
  • 6d0b09fe963499999af2c16e90b6f8c5ac51138509cc7f3edb4b35ff8bef1f12
  • 2af1bb05a5fde5500ea737c08f1b675a306150a26610d2ae3279f8157a3cb4df
  • db8ca46451a6c32e3b7901b50837500768bb913cafb5e12e2111f8b264672219
  • 5ebb875556caefb78d5050e243f0efb9c2c8e759c9b32a426358de0c391e8185
  • bdc33dbdfd92207ad88b6feb3066bb662a6ca5cf02710870cae38320bb3a35bf
  • 08f378fe42aec892e6eb163edc3374b0e2eb677bd01e398addd1b1fca4cd23c4

URL

稼働中:

  • hxxp://pastebin[.]com/raw/JKqwsAs6
  • hxxp://pastebin[.]com/raw/pc9QbQCK
  • hxxp://pastebin[.]com/raw/Rpx7tm9N
  • hxxp://pastebin[.]com/raw/hsGSLP89
  • hxxp://pastebin[.]com/raw/HNkipzLK
  • hxxp://pastebin[.]com/raw/Z3mcNqjz
  • hxxp://pastebin[.]com/raw/h5yBCwpY
  • hxxp://pastebin[.]com/raw/zHLUaPvW
  • hxxp://pastebin[.]com/raw/V6UWZm2n
  • hxxp://pastebin[.]com/raw/rTjmne99
  • hxxp://pastebin[.]com/raw/JMkdgr4h
  • hxxp://pastebin[.]com/raw/yPTNdYRN
  • hxxp://pastebin[.]com/raw/q56JPtdY
  • hxxp://pastebin[.]com/raw/a3U5MMj2
  • hxxp://pastebin[.]com/raw/E4MB4MFj
  • hxxp://pastebin[.]com/raw/770qPDMt
  • hxxp://pastebin[.]com/raw/YtuXz7YX
  • hxxp://pastebin[.]com/raw/LKRwaias
  • hxxp://pastebin[.]com/raw/ZFchNrpH
  • hxxp://pastebin[.]com/raw/8DEsZn2y

停止中

  • hxxp://pastebin[.]com/raw/TWQYHv9Y
  • hxxp://pastebin[.]com/raw/0HpgqDt2
  • hxxp://pastebin[.]com/raw/1t8LPE7R
  • hxxp://pastebin[.]com/raw/3vsJLpWu
  • hxxp://pastebin[.]com/raw/6MFWAdWS
  • hxxp://pastebin[.]com/raw/AqndxJKK
  • hxxp://pastebin[.]com/raw/SdcQ9yPM
  • hxxp://pastebin[.]com/raw/XMKKNkb0
  • hxxp://pastebin[.]com/raw/ZM6QyknC
  • hxxp://pastebin[.]com/raw/pMDgUv62
  • hxxp://pastebin[.]com/raw/yEw5XbvF