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

破格の値段で取引されるマルウェア: 安価で驚くほど効果的なバックドアを提供するロシア系 RATの詳細解析

原文のブログはこちらからご覧頂けます。

2022年5月27日更新:未知のAPTグループは、ウクライナ紛争が始まって以来、少なくとも4つの別々のスピアフィッシングキャンペーンでロシア政府機関を標的にしています。参照: Security Affairs.

ロシア系クライムウェアを扱う秘密地下フォーラムでは、DCRat がちょっとしたダークホースと化しているようです。大手ロシア系脅威グループが豊富な資金を背景に作成した、大学、病院、中小企業などを狙うカスタムマルウェアとは異なり、この RAT (リモートアクセス型トロイの木馬)は単独の脅威アクターの手によるものと考えられ、安価にバックドアを作成できる驚くほど効果的な自家製ツールです。それどころか、DCRat の販売価格は、ロシアの地下フォーラムで販売される類似ツールの標準価格の数分の一です。

ロシア系の商用バックドアである DCRat (別名: DarkCrystal RAT)が始めてリリースされたのは 2018 年ですが、1 年後には再設計と再ローンチが行われています。特筆すべき点として、このマルウェアは「boldenis44」、「crystalcoder」、「Кодер (コーダー)」の偽名を用いる単独の人物によって開発・管理されているようです。

主にロシアの地下フォーラムで販売されており、弊社が遭遇した中で最も低価格な商用 RAT の 1 つです。最も安いプランとしては 500 ルーブル (5 ポンド/6 米ドル未満)で 2 か月のサブスクリプションを購入可能です。また、時々行われる特別プロモーション期間はさらに安価になります。スクリプトキディだけでなくプロの脅威アクターにも人気があるのも不思議ではありません。

この価格帯は興味深い特徴と言えます。価格から、開発者の主な目的が利益ではないように思えるためです。可能性としては、多数の犯罪者から少額の金銭を集めようとして、広く網を張っているだけかもしれません。あるいは、他に資金源が存在する可能性や、生活の糧ではなく熱意に駆られたプロジェクトである可能性も考えられます。 
 

Dark Crystal の解剖

DCRat はモジュラーアーキテクチャと専用のプラグインフレームワークを採用しており、オプションの柔軟性が非常に高いため、幅広い不正ユーザーの役に立つツールです。たとえば、監視、偵察、情報窃盗、DDos 攻撃のほか、さまざまな言語による動的コード実行を行えます。

DCRat 製品そのものは 3 つのコンポーネントから構成されます。

  • 情報窃盗ツール/クライアント実行ファイル
  • コマンドアンドコントロール(C2)エンドポイント/インターフェースとして機能する単一の PHP ページ
  • 管理者ツール

管理者ツールは JPHP プログラミング言語で書かれたスタンドアロンの実行ファイルです。JPHP は Java 仮想マシン上で動作する、難解な実装のるPHPです。マルウェア開発者が使用する難解なプログラミング言語についての過去のホワイトペーパーで解説したように、JPHP は解読の妨害にある程度貢献できる可能性があります。

プログラミング言語としての JPHP の主なターゲットは、クロスプラットフォームのデスクトップゲームを作成する初級レベルの開発者です。扱いやすく、コードの移植性が高い点がこの用途に適しています。マルウェアの開発者がこの言語を選択した理由としては、おそらく、認知度がそれほど高くないことや、他の主流言語を扱うプログラミングスキルが無かったことが考えられます。

JPHP のドキュメントによると、この実装は「PHP ソースを Java 仮想マシン(JVM)で実行可能な JVM バイトコードにコンパイルする」ものです。JPHP プロジェクトでは専用のロシア語の統合開発環境(IDE)である「DevelNext」も提供しています。この IDE は DCRat 管理者ツールのほか、一部の旧バージョン DCRat クライアントの開発に使用されました。

公開された GitHub プロフィールから取得できる位置情報によると、JPHP の開発の貢献した中心チームのメンバーは圧倒的多数が独立国家共同体(CIS:12 の旧ソビエト諸国から構成される政府間組織)を拠点としています。DCRat の開発者が JPHP を使用した理由は、想定される信頼性によるものかもしれません。あるいは単純に、開発チームと同じロシア語に精通しているため、JPHP フレームワークの問題や拡張に関するサポートを簡単に得られると考えた可能性もあります。
 

DCRat ビルドの解析

被害者のマシンに配信される DCRat クライアントのバイナリは .NET で書かれています。旧バージョンでは管理者ツールと同じ JPHP が使用されていました。変更の目的はクライアントコンポーネントの合理化と最適化だと考えられます。というのも、JPHP は JVM 上で動作するため比較的低速です。また、.NET に変更すると JPHP ライブラリが不要になるため、配布するマルウェアを小型化できます。

DCRat はプラグインフレームワークを搭載したモジュラーアーキテクチャで構築されています。関係者は独自のクライアントプラグインを開発可能です。また、サブスクリプション登録者は開発されたプラグインをダウンロードして利用できます。(既存のプラグインのリストは、記事の後半の「プラグイン」セクションをご覧ください)

DCRat は現在も開発が続いていると考えられ、バグ修正と機能追加を目的とした、管理者ツールとバックドア/クライアントのアップデートが定期的に行われています。公式にリリースされているプラグインも同様です。

ここ数か月で、Prometheus TDS (トラフィック配信システム)を介してCobalt Strike ビーコンを使用し、DCRat クライアントを展開する事例が頻繁に確認されています。Prometheus はサブスクリプションベースのマルウェアサービスであり、2021 年に発生した米国政府機関への攻撃など、注目を浴びた数多くの攻撃で使用されています。

2020 年 5 月にMandiantが DCRat クライアントの詳細な解析結果を公開すると、数日後には、DCRat の配布元が新しいドメインに移されました。サイバー犯罪者は明らかにメディアやセキュリティコミュニティの目を気にするようになっており、望まない注目に対する急速な変更が当たり前になっています。

特筆すべき点として、DcRAT という名称の別のオープンソース RAT が「qwqdanchun」というユーザーの GitHub リポジトリに存在します。ただし、おそらく全く無関係なプロジェクトでしょう。DCRat とのコードの類似性は高くありません。とはいえ、脅威に影響を与えたか、あるいは影響を受けている可能性があります。
 

DCRat 製品

現在、DCRat のバンドル、プラグイン、プラグイン開発フレームワーク、追加ツールは「crystalfiles[.]ru」でホスティングされています。移動前は「dcrat[.]ru」でした。crystalfiles の Web サイトの特徴は、図 1 に示すシンプルなインターフェースです。RAT のダウンロードポイントとしての機能しかなく、潜在顧客や既存顧客向けの情報やリソースは提供されていません。

図 1:crystalfiles[.]ru の DCRat コンポーネントのダウンロードリンク
 
DCRat のマーケティング活動とセールス活動は、人気のロシア系ハッキングフォーラムである「lolz[.]guru」ですべて行われています(図 2)。また、いくつかの購入前の問合せもこのフォーラムで処理されています。フォーラムでは、DCRat のサポート関連の話題が広く公開されていますが、DCRat 製品のメインスレッドは登録ユーザーのみが利用可能です。
 
図 2:lolz[.]guru フォーラム(DCRat 関連スレッド)
 

アクセスが制限された他のフォーラムや、ダークウェブで DCRat が販売されている可能性もあります。DCRat のアーカイブは別の URL に置かれており、URL の共有には Discord のインスタントメッセージが利用されます。どのバージョンでも配布時の最も一般的なファイル名は、「1ac770ea1c2b508fb3f74de6e65bc9c4.zip」のようです。

DCRat に関するニュースとアップデートはすべて専用の Telegram チャネルを通じて配信されます(図 3 と図 4)。執筆時点で、チャネルの登録者数は約 3,000 名です。

図 3:ニュースとアップデートを配信する、DCRat の Telegram ページ
 

アカウント「DarkCrystalRAT Telegram」の他にも、Telegram ボットが 2 つ存在します。注文を処理する「DCRatSeller_bot」と、テクニカルサポートを提供する「CrystalSupport_bot」です。

DCRat ライセンスの最新価格は以下の通りです(限定値引きは含まず)。 

  • 500 ルーブル / 5 米ドル: 2 か月のライセンス
  • 2,200 ルーブル / 21 米ドル: 年間ライセンス
  • 4,200 ルーブル / 40 米ドル: 永久ライセンス

 

図 4:値引きと特別価格を宣伝する DCRat の Telegram アカウント
 

開発者

DCRat の開発者は lolz[.]guru フォーラムで「Кодер ("コーダー")」の名で投稿していますが(図 5)、Telegram のハンドル名は「@boldenis」、GitHub のユーザー名は「boldenis44」です(図 6 の DCRat のソースコードに含まれるリソースリンクに基づく)。ある時点までは lolz[.]guru でも後者の名前を使用していたことは間違いありません。一部のユーザーが現在もこの名前で呼んでいるためです。また、電子メールアドレスを「crystalcoder[at]exploit[.]im」で公開しています。図 5 のプロフィール画面の誕生日と住所はまず間違いなくフェイクです。

lolz[.]guru フォーラムのプロフィールからは、開発者がロシア人で、単独で開発を行っていることが示唆されます。

図 5:地下フォーラムに掲載された DCRat 開発者の略歴
 
図 6:DCRat 開発者と同じアカウント名の GitHub ページ
 
「Boldenis44」は、ゲームハッキングフォーラム「blast[.]hk」、ロシアの Minecraft サーバー「gamai[.]ru」、ロシアの闇市場「DarkNet[.]ug」にもアカウントを所有しています(図 7)。
 
図 7:DCRat 開発者「boldenis44」の検索結果
 
また、ロシアの SNS 「VKontakte (vk[.]com)」にも「Darkcrystal Rat (dcrat_1994)」というプロフィールが存在しますが、「boldenis44 / コーダー」と同一人物かは不明です(図 8)。
 
図 8:VKontakte 上の Darkcrystal Rat のプロフィールページ
 

ロシア語の紹介文を大まかに翻訳すると、「私はデータを盗む。ロシア、英国、次の仕事は ?」となります。その意図は 100% 明らかではありませんが、ロシア、英国、およびおそらく他の国からデータを盗むと豪語していると考えられます。

プロフィール写真の出典は、2014 年のドイツの犯罪映画「ピエロがお前を嘲笑う」です。なお、この写真は最近変更されており、Web サイトのキャッシュには比較的一般的なハッカーの画像が残されています(図 9)。また、ロシア語の文章を翻訳すると、「SS を闇に追いやる」という少々謎めいたメッセージが現れます。

図 9:Google Cache に記録された Darkcrystal Rat の過去のプロフィール
 
また、悪名高い「njRAT」の開発者を名乗る別のマルウェア開発者も、最近プロフィールを同じ映画の画像に変更しています(図 10)。
 
図 10:njRAT の開発者の Facebook ページ。Darkcrystal Rat とプロフィール画像が同一
 

ただし、これはおそらく偶然です。njRAT のプロフィールは、ロシア語話者ではなくアラビア語話者が作成しています。

また、VKontakte サイトには、URL 「crystalfiles[.]ru」について言及した別のプロフィールが存在します(図 11)。プロフィール名は Rodion Balkanov (Родион Балканов)です(https[:]//vk[.]com/bagyuvix)。しかし、このアカウントは削除されており、現存しません。

図 11:DCRat の配布 URL に触れた VKontakte のページ (Google 画面)
 

時系列

Telegram チャネルの作成と「dcrat[.]ru」ドメインの登録が行われ、DCRat の大規模なマーケティングキャンペーンが実施されたのは 2019 年 9 月ですが、プロジェクトはその数か月前に始まったと考えられます。その後すぐに、専用フォーマットのプラグインに対応するため、大規模な再設計が行われました。

次のメジャーリリースは、2020 年 5 月(バージョン 3.0)と 2021 年 3 月(バージョン 4.0)です。以下のように、メジャーリリースの間には一定の周期でアップデートとバグ修正が行われており、この期間、開発者が非常に熱心に作業を行っていたことが示唆されます。

  • 2018 年 7 月 31 日: lolz[.]guru フォーラムに Кодер(コーダー)のプロフィールが作成される
  • 2019 年 9 月 1 日: Telegram チャネル「DarkCrystalRat」が作成される
  • 2019 年 9 月 2 日: dcrat[.]ru が登録される(図 12)
図 12:dcrat[.]ru ドメインの whois 情報
 
  • 2019 年 9 月 4 日: 専用プラグインフォーマット「DCLIB」の導入
  • 2019 年 11 月 19 日: 管理者ツールの再設計
  • 2020 年 5 月 12 日: Mandiant が DCRat クライアントの解析結果を公開
  • 2020 年 5 月 27 日: crystalfiles[.]ru が登録され、新規ドメインに配布元を変更
図 13:crystalfiles ドメインの whois 情報
 
  • 2020 年 5 月 30 日: バージョン 3.0 のリリース
  • 2020 年 10 月: 外部開発者によるプラグイン設計を可能にする専用プラットフォーム「DCRat Studio」をリリース
  • 2021 年 3 月 18 日: バージョン 4.0 のリリース
  • 2021 年 12 月 31 日: 大晦日セールで全種類のライセンスが限定 50% オフ
  • 2022 年 3 月 6 日: ルーブルの価値下落により、価格をルーブルからドルに変更。交換レートは 1 米ドル = 100 ルーブル
  • 2022 年 3 月 28 日: 2 か月ライセンス、年間ライセンス、永久ライセンスをそれぞれ 5 ドル、19 ドル、39 ドルに限定割引

新規プラグインとマイナーアップデートはほぼ毎日公開されています。 

RAT 管理者ツール

JPHP 言語を用いた RAT 管理者ツールの開発には、ニッチなロシア系 IDE である「DevelNext」が使用されています。DevelNext は PHP プログラムを JVM 上で実行可能な Java バイトコードにコンパイルします。 

GitHub ページによると、この IDE はまだベータ段階であり、現時点ではロシア語のみに対応しています。JPHP で書かれたマルウェアのサンプルは過去にほとんど例がありません。なぜなら、生成される実行ファイルのサイズが大きく、動作も遅いためです。 

この IDE を使用したマルウェアの例としては、2020 年前半に発見された初歩的なバックドア「IceRAT」が挙げられます。このマルウェアはロシア語話者を狙ったもので、暗号通貨マイナーを被害者のエンドポイントにインストールします。さらにさかのぼると、暗号通貨ウォレット「Jaxx」を標的としたキャンペーンに関連した、OSX 向けに書かれたサンプルが 2018 年に発見されています。

アーカイブの内容

管理者ツールは以下の構造の ZIP アーカイブとして提供されます。

ファイル名

説明

DCRat.exe

管理者用ランチャー(Launch4j ラッパーを用いて作成)

dcrat_updservice.exe

管理者用アップデートツール

updatelauncher.bat

dcrat_updservice.exe を実行するスクリプト

Notify.wav

通知音(2.5 秒)の音楽ファイル

data/

支援ユーティリティを保管

design/

DeleteAll_legacy.json ファイルを保管

lib/

ビルダーの全 Java モジュールを保管

plugins/

ダウンロードしたプラグインを保管。初期状態ではテストプラグインのみが含まれる。

profiles/

ユーザーが保存したプロファイルの保管に使用する空ディレクトリ


lib ディレクトリは、メインビルダーモジュールに加えて、ビルダーが依存しているいくつかの合法的な JPHP モジュールのホームディレクトリです。
 

SHA256 ハッシュ

説明

9967ea3c3d1aee8db5a723f714fba38d2fc26d8553435ab0e1d4e123cd211830 

JSON モジュール

6014d44d8f7da00f03db051b3dcea9a03ec3837977118c69a4512ef558a6df2a

Main builder モジュール

cf4068ebb5ecd47adec92afba943aea4eb2fee40871330d064b69770cccb9e23 

GUI モジュール

5b37e8ff2850a4cbb02f9f02391e9f07285b4e0667f7e4b2d4515b78e699735a 

JPHP core モジュール

4aef566bbf3f0b56769a0c45275ebbf7894e9ddb54430c9db2874124b7cea288 

zend モジュール

d637e3326f87a173abd5f51ac98906a3237b9e511d07d31d6aafcf43f33dac17 

jfoenix モジュール

c25d7a7b8f0715729bccb817e345f0fdd668dd4799c8dab1a4db3d6a37e7e3e4 

javafx モジュール

2d43eb5ea9e133d2ee2405cc14f5ee08951b8361302fdd93494a3a997b508d32 

Google gson モジュール

15f36830124fc7389e312cf228b952024a8ce8601bf5c4df806bc395d47db669 

PHP モジュール

9c287472408857301594f8f7bda108457f6fdae6e25c87ec88dbf3012e5a98b6 

JPHP PHP runtime モジュール

434e57fffc7df0b725c1d95cabafdcdb83858ccb3e5e728a74d3cf33a0ca9c79 

XML モジュール

0f26584763ef1c5ec07d1f310f0b6504bc17732f04e37f4eb101338803be0dc4 

JPHP SDK モジュール

4bec0794a0d69debe2f955bf495ea7c0858ad84cb0d2d549cacb82e70c060cba 

javafx モジュール

03ead999502aefbf1380bd2e9c4a407acb7a92a7b2fe61f6995aba3fca85efd4 

objectweb asm モジュール


ビルダーのエントリーポイントは <main_module>.jar/.system/application.conf and points to dct/forms/MainForm.phbで指定されています。
 

 # MAIN CONFIGURATION
 app.name = DCRat2.0
 app.uuid = fabb4b64-bb3a-4418-a495-a0e669188d81
 app.version = 1

 # APP
 app.namespace = dct
 app.mainForm = MainForm
 app.showMainForm = 1
 app.fx.splash.autoHide = 0


dataディレクトリの中身は、クライアント実行ファイルを生成する専用のコンパイラ、専用の EXE 難読化ツール、市販の .NET 保護ツール「.NET Reactor」、圧縮ツール「WinRAR」と「UPX」です。
 

SHA256

ファイル名

説明

d0680ac62e94f953df031533acd0acb718ad8494f938d84198c655507709e5df

7zxa.dll

正規の 7zip DLL

914cca033fc8ca52830a21b5dca55263cee1e74ab5571702906ee9c25aedafd7

DCRAC.exe

DCRat EXEの難読化ツール

812cd4b5e80bc4e83a2e01a6f3fb24346ecf57dcaf8ff6fc3e55a2a6b953da23 

DCRCC.exe, DarkCrystalRATCSharpCompiler.exe

DCRat コンパイラ

b11ad1adfa96eacf5f18cf87785884947a6d35a1baebf4f20f16402b04d5109f 

Default.SFX

WinRARのパーツ

a0b6bb521e52a99abf5ac1017302da014d37296619078d42d9edf5d86d137f63 

NCC2.dll

.NET Reactorのパーツ

38274608d5a4b53ec22f8099f798ba46ce0ed41db65a33dfb3853f0dbf849f6f 

NCC3.dll

.NET Reactorのパーツ

c41cd461470ff3c936e225cea37e5190cb06e3cd70a3d76ca8e5d3aceead5493

NCCheck.dll

.NET Reactorのパーツ

770d7b5e40ed9b0aff5d0e3fc2ccf9ba10d4925d3441f38b71a35bd26e6e8d98 

Rar.exe

WinRARのパーツ(署名済)

35a21f1aebf8ea0ab9be1814131fec1fa079d91b701e505054b69eccbdfd0732 

RarExt.dll

WinRARのパーツ(署名済)

db28575f61b1adc88a28ae51ce3b00226e4974ca60894896e414ea408c6ff9fe 

RarExt64.dll

WinRARのパーツ(署名済)

ca08ed8423afda4b41757a1f3adf4f855732dc0628fe2ea5d8a96b13f56b9f84 

WinCon.SFX

WinRARのパーツ(署名済)

2293fe261d5c6f5f2a33004b11f068037677b7aa5a6f792031e31555f31f0d69 

Zip.SFX

WinRARのパーツ

83445595d38a8e33513b33dfc201983af4746e5327c9bed470a6282d91d539b6 

dnlib.dll

DNLib: .NET アセンブリの読み込み/書き込みライブラリ

e817802f166662a7df0b144571354d74b10e34d120f91ae9d84ca3ba925241c6 

dotNET_Reactor.Console.exe

.NET Reactorのパーツ

 

78684aea83b1a5c402a87ba0ce2e7ad5b0338462cc804e97369203ce53d29834 

dotNET_Reactor.exe

.NET Reactorのパーツ

 

5981e508e89c65c445fca892e91b8ec39b1d8563804d0999d963d640aa592444 

enc.vbe

VBS スクリプトのエンコード用スクリプト

d634cde09d1aa1320a1d4c589d35d306f8350129faf225b2bca394128c2c4442 

upx.exe

UPX 3.96 (Windows 32 ビット版)

1317d70682bd11e5d320af850d6ecbb5a70c200d626ec7bf69c47566894db515 

wRar.exe

WinRAR のパーツ(署名済)


PHB ファイル形式

JPHP の JAR アーカイブは、Java クラスファイルではなく、主に PHB ファイルから構成されます。

PHB は、JPHP だけで使用されるカスタムファイル形式です。単純なアーカイブであり、圧縮と暗号化が行われていない Java クラスファイルと PHB ヘッダーが格納されています。また、各 Java クラスファイルの前にはクラスファイルヘッダーが存在し、モジュール名、メソッド名、PHP ファイルパス、クラスファイル長などの情報が記載されます。

以下の Python スクリプトを用いてクラスファイルを抽出し、JAD や jd-gui などのツールでデコンパイルすることが可能です。

import os
import sys
import struct

in_file = sys.argv[1]
out_dir = os.path.splitext(in_file)[0] + "_extracted"
in_size = os.path.getsize(in_file)

os.mkdir(out_dir)

with open(in_file, 'rb') as f:
  buf = f.read()
  magic = b'\xCA\xFE\xBA\xBE'
  offsets = [i for i in range(len(buf)) if buf.startswith(magic, i)]
  count = 0
  for of in offsets:
    file_name = os.path.splitext(in_file)[0] + "_" + str(count) + ".class"
    f.seek(of - 4)
    class_len = struct.unpack('>i', f.read(4))[0]
    file_data = f.read(class_len)
    with open(os.path.join(out_dir, file_name), "wb") as f2:
      f2.write(file_data)
    count += 1


PHB ファイルの構造(例):

1C 9A 4A 92         PHB signature
01 33 53 D3
00 00 00 00
00 00 00 33              
00 33                     len of the following string
44 3A 5C 49         string "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 00 2D
00 2D                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81"
[...]
00 01
FF FF FF FF
FF FF FF FF
00 07                    len
55 6E 6B 6E         "Unknown"
[...]
00 00 00 00
00 00 03 4F         number of class files
00 00 00 36         start of class file header #1
00 36                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81_closure0"
[...]
00 00 00 00
00 00 00 00
FF FF FF FF
00 00
FF FF FF FF
FF FF FF FF
00 01
00 00 00 00
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65              
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65              
01 00 00 00
39 00 00 00
18
00 33                     len
44 3A 5C 49         "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 0A 98          len of class file #1
CA FE BA BE         start of class file #1
[...]
00 00 00 36         start of class file header #2
00 36                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81_closure1"
[...]
00 00 00 00
00 00 00 00
FF FF FF FF
00 00 FF FF
FF FF FF FF
FF FF 00 01
00 00 00 00
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65
01 00 00 00
40 00 00 00
18
00 33                     len
44 3A 5C 49         "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 0A 9B         len of class file #2
CA FE BA BE        start of class file #2
[...]
 


ライセンス

DCRat の管理者ツール(図 14)は、一連のオンラインライセンスチェック機能を用いて不正利用を阻止します。チェックに成功すると、管理者インターフェースを利用できるようになります。
 

図 14:不正利用を阻止する、管理者ツールのライセンスチェック
 

チェックはハードコードされたドメイン「dcrat[.]ru」への HTTPS クエリから構成されます。

通信相手の検証

最初の検証では、ランダムな 64 文字の値をハッシュ化し、Base64 でエンコードして送信します。有効と判定されるには、C2 サーバーからの返信に、同様の方法でハッシュ化とエンコードが行われた同じ値が含まれなければなりません。このやり取りによって通信相手の基本的な検証を行い、管理者ツールが正しい DCRat ライセンスサーバーと通信していることを確認します。

サブスクリプション登録者の検証

2 番目の HTTPS リクエストでは、管理者ツールが稼働しているコンピューターを認証します(図 15)。まず、少数のホストプロパティを収集し、固有のフィンガープリントを生成します。そして、フィンガープリントを「dcrat[.]ru」に送信し、(おそらく)有効なサブスクリプション登録情報と照合します。

図 15:dcrat[.]ru ドメインへのライセンス検証用 HTTPS クエリ
 

キルスイッチ

管理者ツールは最後に一風変わった HTTPS チェックを行います。通信先は GitHub 上の「boldenis44」のパーソナルスペースでホストされた公開リソースです。図 16 に示す通り、クエリ機能とレスポンス機能にはグローバルな「キルスイッチ」が仕込まれています。DCRat 開発者の判断でキルスイッチをオフにすると、サブスクリプションライセンスの有効期間に関わらず、DCRat 管理者ツールの全機能が使用できなくなります(所詮は「永久ライセンス」もこの程度です)。
 

図 16:GitHub でホストされたマスターキルスイッチ(今のところ有効)
 

このキルスイッチ機能は 2021 年中旬から 2022 年初頭にビルドされた複数の管理者ツールで確認されています。

管理者機能

サブスクリプション登録者は、管理者ツールを使用して以下のアクションを行えます。

  •  アクティブな C2 サーバーへのログイン
  •  登録されたインストール済みクライアントにタスクを指示
  •  ローダーやクライアントのビルドを生成
  •  インストール統計情報の確認とクエリ
  •  DCRat 開発者にバグレポートを提出 

バックエンド PHP をホスティングするアクティブな C2 サーバーへのログインが必要です(図 17)。

図 17:ライセンスチェック後、ホスティングされた C2 で認証を実施
 

ログインパラメータは次の難解な構文によります。

  • http://<server>/@<reversed_base64_PHP_pagename_minus_php_suffix>
  • パスワード

フェイクニュース?

理由は定かではありませんが、DCRat の開発者はランダムに生成された数値を「Servers working (稼働中のサーバー)」と「Users online (オンラインユーザー)」として表示する機能を実装しています。この数値は、管理者ツールの背景に統計情報として表示されます。おそらく、実態より人気のあるツールに見せかけようとしているか、単に正確なカウンターの実装方法を知らないため、当面は偽のカウンターをプレースホルダとして組み込んでいるのでしょう。

管理者機能

認証後、管理者ツールは C2 へのポーリングを開始し、接続済みホストと感染済みホストの詳細を取得します。

各機能はタブでグループ化されています(図 18)。

図 18:管理者ツールの主要機能タブ
 

Users 

このタブには感染ホストで動作する、アクティブな/登録済みのインストール済み DCRat クライアントの一覧が表示されます。リストは C2 への定期的なポーリングによって更新されます。

Builder

脅威アクターはこのタブから DCRat クライアント実行ファイルの設定(および生成)を行えます。解析したバージョンの管理者ツールの場合、dcrat[.]ru ドメインからクライアントの「コア」が Base64 文字列でダウンロードされ、「DCRCC.exe」の入力として使用されました。

図 19:クライアントランタイム設定用の管理者ツールの設定ページ
 

設定に使用可能なパラメータを以下に示します。 

  • Network: 
    • プライマリ C2 ホストとセカンダリ C2 ホストのリストを指定(トランスポートプロトコルは HTTP/S のみ) 

  • Protect:(図 19)
    • オプションで、生成したクライアントバイナリを .NET Reacter を用いて難読化
    • 実行時に使用するミューテックス名。デフォルトでは、「DCR_MUTEX」の後に 20 文字のランダムな英数字列
    • DCR_MUTEX-<20_ALPHANUM_RAND>
    • レジストリエントリを使用して Windows タスクマネージャを無効化(「IoC」を参照)
    • PE ファイルの(偽の)作成日時を指定
    • 起動を遅らせる秒数

  • Plugins: 
    • DCRat プラグインの設定と有効化

  • Installation: 
    • DCRat クライアントの実行時にモジュールを展開するパス
    • 使用する永続化メカニズム
    • 最初に使用するスタートコマンドスクリプト
    • DCRat ビルドの実行中、ホストに表示するタグ値(キャンペーン ID)  
    • 自動機能:起動後に自動で開始する機能
      • 情報窃盗 
      • キーロガー 
      • アンインストール(自動削除)
    • 管理者強制:起動時に管理者権限の強制を試みる 
    • ビルドキャッシュストレージ

  • Build:
    • オプションでビルドを UPX 圧縮  
    • 使用するファイル拡張子
    • PE ファイルのアイコン


Loader 

DCRat のローダーバイナリの設定とビルドを行うタブです。スタック可能な幅広い「アクション」に対応しており、組み合わせることでランタイムの動作を指定します。

  • ファイルのダウンロード
  • ファイルの実行
  • HTTP リクエスト
  • CMD スクリプト
  • 待機
  • メッセージボックス


Tools 

ファイルアップロードと、Netscape から JSON への Cookie 変換ツールを提供します。


Settings 

Builder の設定を変更します。  

  • GUI の背景画像の変更
  • 接続済み(感染済み)ホスト/インストール先へ自動的にポーリング
  • 通知の表示


Statistics 

DCRat クライアントのインストール先に定義されたレポートをクエリ(国、Windows のバージョンなど) 


USER-ID 

現時点ではこのタブの機能を確認できませんでした。おそらく、感染ホストに対する直接のリモートコントロール/ターミナルクライアントです。


Bug Report 

DCRat の管理者にバグレポートを提出します。  


Tasks

1 つ以上の DCRat クライアントで実行するタスクを設定します。タスクはテキストファイルを使用して保存(エクスポート)と読み込み(インポート)が可能です。Base64 形式の反転文字列として保存されます。  


Global Functions 

登録済みのすべての DCRat クライアントで実行するタスクを設定します。  


DCRat クライアント

このセクションでは、DCRat クライアント(情報窃盗マルウェア)と DCRat ローダーの機能を考察します。両者のランタイムの動作は、DCRat 管理者ツールを用いて設定されます。
 

クライアントローダー

管理者ツールには、DCRat の「ローダー」実行ファイルを生成する機能があります。解析したバージョンは DLL 形式でのローダーの生成には対応していませんが、今後のバージョンで対応する可能性があります。

実行時のローダーの動作は、事前に定義された 1 つ以上の「アクション」で指定します(図 20)。おそらく典型的な構成は「ファイルのダウンロード」、「待機」、「ファイルの実行」の組み合わせで、密かにファイルをダウンロードし、検出を避けるため十分な時間待機してからファイルを実行します。

図 20:管理者ツールで設定された、DCRat ローダーのランタイムタスク
 

ローダーのソースコードは管理者ツールに Base64 文字列で組み込まれており、デコードすると C# のソースコードになります。実行ファイルのコードは、ユーザーが指定したアクションに応じて選択されます。実行ファイルの生成を担うのは、バンドルの「DCRCC.exe」です。

オプションで、生成した実行ファイルを .Net Reactor を用いて保護できます。

“-control_flow_obfuscation 1 -flow_level 9 -resourceencryption 1 -stringencryption 1 -suppressildasm 0 -all_params 1 -obfuscate_public_types 1 -exception_handling 0”


永続性

DCRat の永続性は、Windows の「自動実行」機能を利用したごく一般的なものです。

  1. レジストリ 「HKLM\Software\Microsoft\Windows\CurrentVersion\Run」を使用
  2. レジストリ「HKCU\Software\Microsoft\Windows\CurrentVersion\Run」を使用
  3. レジストリ「HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon」を使用(REG_SZ: “Shell”)
  4. スケジュール済みタスク /ONLOGON  
  5. スケジュール済みタスク /sc minute RandomMinMax(5,15)  

クライアント実行ファイルはシステムドライブのルート(例: C:\)に自身をコピーします。ファイル名は実行中のプロセスからランダムに選択されます(svchost.exe を除く)。


設定

DCRat の設定は、Base64 エンコード文字列のリソースとしてクライアントバイナリに組み込まれています。データ形式は JSON で、C2 URL、タグ、ミューテックス名、少数の実行オプションのほか、利用するプラグイン用にプラグイン固有の設定オプションも記録されます。

名称

説明

H1

string

プライマリ C2 URL

H2

string

セカンダリ C2 URL

TAG

string

ビルド時に指定されたタグ(被害者 ID やキャンペーン ID など)

MUTEX

string

ミューテックス名。デフォルトは「DCR_MUTEX-」 + ランダムな英数字だが、任意の文字列を指定することも可能

DBG

bool

デバッグモードの ON/OFF

BCS

int

ビルドキャッシュストレージのサイズ

AUR

int

正確な用途は不明。ファイル名変更/永続化活動のコントロール。

AS

bool

自動情報窃盗の ON/OFF

AK

bool

自動キーロガーの ON/OFF

AD

bool

自動アンインストールの ON/OFF

PLUGINCONFIGS

object

プラグイン固有の設定オプション


Prometheus TDS を通じて配布されたサンプルで確認された設定の例を以下に示します。
 
{
"H1": "http[:]//co44089.tmweb[.]ru /9rsk8lug9peq4f23cjhyo3fz2q7j81vhnvil6c6tjdc7adzbia1ki04d9p65b5wfe4ronb0rtm/4vsyc5bajheyp1gt5i63igklh15828uwuwsek0x0p9frsqy1l2boc3l936aratwc7jddw2djzm40u83r6f/ybxoa2zsmu9ovinlf57463869tj",
"H2": "http[:]//co44089.tmweb[.]ru /9rsk8lug9peq4f23cjhyo3fz2q7j81vhnvil6c6tjdc7adzbia1ki04d9p65b5wfe4ronb0rtm/4vsyc5bajheyp1gt5i63igklh15828uwuwsek0x0p9frsqy1l2boc3l936aratwc7jddw2djzm40u83r6f/ybxoa2zsmu9ovinlf57463869tj",
"TAG": "GFN",
"MUTEX": "DCR_MUTEX-bQ2or3bMKAwvUmZaLKHY",
"DBG": false,
"BCS": 0,
"AUR": 1,
"AS": true,
"AK": true,
"AD": false,
"PLUGINCONFIGS": {
"MessageOnStartConfig": {
"caption": "GFN hacker",
"text": "Wait 10 minutes",
"icon": "Information",
"buttons": "OK",
"uniq": "chpf05oqbupjilp1ccxqb65xf"
},
"XMRigMinerCFG": {
"SavePuth": "C:/WindowsDefender/RunShell.exe",
"Gate": "xmr.pool.minergate.com:45700",
"UserName": "Fuzzii2739@gmail.com",
"Password": "x",
"DopArguments": "--donate-level=1 --pause-on-battery",
"CPUPriority": "0",
"cpumaxthreadshintn": "25",
"mode": "light"
}
}
}


ホストのフィンガープリント

初回登録時に DCRat クライアントはホストのさまざまな情報を C2 に報告します。情報の取得には、WMI、.NET が提供するインストルメンテーションクラス、Windows レジストリクエリを組み合わせて利用します。

  • ホストコンピューター名
  • ホストユーザー名  
  • Windows の製品名/バージョン 
  • タグ値(組み込まれたキャンペーン ID など) 
  • 管理者かどうか 
  • ビデオカード名  
  • CPU の製品名/ベンダー
  • ローカルドライブ、ネットワークドライブ、リムーバブルドライブのラベル
  • マイクの有無
  • 搭載された Web カメラ 
  • アクティブウィンドウのテキスト 
  • 国、市、緯度/経度(geoip)
  • インストール済みのアンチウイルス製品 
  • インストール済みのファイアウォール製品 
  • BIOS のメーカー  
  • マザーボードのメーカー  
  • CPU ベンダー
  • 物理メモリ 
  • ネットワークインターフェース(IP、WiFi/イーサネット) 
  • インストールされた .NET のバージョン
図 21:ホストのフィンガープリント収集の一例である、DCRat の情報窃盗機能による Web カメラデバイス識別用 WMI クエリ
 
HTTPS トランザクションに使用するユーザーエージェントはいずれも、組み込みの要素数 12 の配列からランダムに選択した値が使用されます。
 

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53",

"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 OPR/81.0.4196.60",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"


情報窃盗機能

DCRat の情報窃盗機能は、管理者ツールの「Builder」タブで事前に設定されます。情報窃盗「タスク」によって、保管された情報を盗む際に実行する操作の順序を指定します。 

DCRat は以下のソースから情報を盗むことが可能です(図 22 の対象を含む)。

  • ブラウザーの Cookie
  • ブラウザーに保存されたパスワード 
  • ブラウザーに保存されたフォームデータ 
  • ブラウザーの履歴  
  • 保存されたクレジットカード情報(Windows DPAPI と Chrome SQLite Database から取得)
  • Telegram 
  • Steam アカウント
  • Discord トークン 
  • FileZilla の資格情報
  • スクリーンショット  
  • キーロガー
  • クリップボードの内容
  • システム情報
図 22:DCRat クライアントが盗む情報カテゴリ
 

情報窃盗コンポーネントには専用プラグインを実行する機能があり、各ターゲットでマルウェア開発者が探す情報に応じて拡張を行えます。
 

サービス拒否(DoS)

DCRat の情報窃盗機能には、特定のホストとエンドポイントの組み合わせに対してさまざまな DoS 攻撃(HTTP(S)、POST、UDP、TCP)を行うための基本的なマルチスレデッドコードが含まれます。
 

遅延戦術

多くのマルウェアファミリーと同様、DCRat は Windows コマンドラインツールを利用して実行を遅延させる機能を有します。DCRat クライアントの実行に関与しているのが、タイムサービス設定用の Windows コマンドラインツール(w32tm)の呼び出しです。図 23 のように適切なコマンドライン引数を設定すると、遅延メカニズムとして動作します。DCRat の場合、10 秒間遅延するように引数が渡されます。エンドポイント XDR で w32tm インスタンスの同時発生が検出された場合、やや弱い証拠ではあるものの、DCRat クライアントの実行を示している可能性があります。

図 23:自己終了時に使用される遅延コマンド
 

プラグイン

外部開発者は専用 IDE 「DCRat Studio」を使用してプラグインを設計できます。また、crystalfiles[.]ru (図 24)から公式プラグインをダウンロード可能です。データ引き出し/認証情報窃取、システム操作、暗号通貨マイニングといった機能のプラグインが提供されています。

図 24:サブスクリプション登録者がダウンロード可能なプラグイン
 

サブスクリプション登録者は、サポート対象の外部プラグインリストを利用することで、クラウドソース開発のメリットを活かし、多様な情報ストアを標的としたプラグインエコシステムを強化できます。各プラグインの正確な内部動作は不明ですが、名称からプラグインの機能が示唆されます。

  • AutoKeylogger (廃止)
  • AntiVM (AntiAnalysis とマージ済み)
  • MiscInfoGrabber 
  • WebBrowserPassView
  • RunOnce
  • DesktopGrabber
  • StartupPlus
  • AntiKiller
  • AntiSNG
  • BlockInput
  • MessageOnStart 
  • ClipboardLogger
  • RegEditor
  • FileSearcher
  • FileGrabber 
  • TitleKiller(廃止)
  • ProcessKiller
  • CryptoStealer
  • TelegramNotifier 
  • AntiAnalysis
  • Clipper
  • CountryBlackList
  • VPNGrabber 
  • ForceAdmin
  • SystemRestorePointsCleaner
  • UserPingCounter
  • ActiveWindowNotifier
  • FakeSteamWindows
  • Discord notifications(外部プラグイン)
  • IgnorTags(外部プラグイン)
  • Kryptex Miner (外部プラグイン)
  • XMRig(外部プラグイン)


まとめ

特に規模が大きく派手な活動を行う脅威グループが注目を浴びるかもしれませんが、セキュリティ担当者に徹夜を強いるのは、こうしたグループだけとは限りません。国家機密や膨大な金銭を保護していなくても、時には、高度な技術と豊富な資金を持つ脅威グループが放つ恐ろしい最新の脅威に悩まされます。しかし、時間を持て余した犯罪者が同等の脅威をもたらすことは珍しくありません。

マルウェアの世界でも、「安かろう悪かろう」が普通です。価格が安ければ、機能が劣ったり、サポートが貧弱だったりすると考えるのが賢明でしょう。ですが、DCRat は謎めいたやり方でこの法則を破っているようです。 

DCRat のコードは毎日のように改良・保守されています。1 人でこのマルウェアを開発・維持しているとしたら、プロジェクトにフルタイムで取り組んでいると考えられます。

確実なのは、適切な価格構成をまだ知らない新参のマルウェア開発者であることを示すプログラミング上の判断が、この脅威に含まれる点です。プログラミング言語に JPHP を選択し、機能しない奇妙な感染者数カウンターを実装している点は、明らかに新参者であることを示しています。おそらく、悪名を馳せたい開発者が、できるだけ迅速に名を上げようと、持てる知識をすべて注ぎ込んで開発したマルウェアだと考えられます。

開発者の経験不足が目につくため、マルウェアの訴求力が損なわれているかもしれませんが、これをチャンスと捉える者もいるでしょう。開発者は顧客を満足させようと多くの時間と労力を注ぎ込んでいるため、より経験豊富な脅威アクターから経験不足をセールスポイントと見なされる可能性があります。

Indicators of Compromise (IOCs)

DCRat Stealer; Delay Command; Process/.BAT invocation:
“w32tm /stripchart /computer:localhost /period:5 /dataonly /samples:2”

DCRat Stealer; Self Preservation; Windows Registry changes:
    HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
    REG_DWORD: “DisableTaskMgr”:1

DCRat Stealer; Persistence; Windows Registry:
    HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    REG_SZ: “Shell”: “explorer.exe, %STEALER_EXE_PATH%”
HKCU|HKLM\Software\Microsoft\Windows\CurrentVersion\Run: <STEALER_EXE_PATH>

DCRat Stealer; Persistence; Windows Scheduled Tasks:
schtasks.exe /create /tn <STEALER_EXE_NO_EXTENSION> /sc ONLOGON /tr <STEALER_EXE_PATH> /rl HIGHEST /f
schtasks.exe /create /tn <STEALER_EXE_NO_EXTENSION> /sc minute /mo <RND_MIN5_MAX15> /tr <STEALER_EXE_PATH> /f

DCRat Stealer; Host Fingerprint; WMI Queries:
SELECT * FROM AntivirusProduct: displayName
SELECT * FROM FirewallProduct: displayName
SELECT * FROM Win32_BIOS: Manufacturer
SELECT * FROM Win32_BaseBoard: Manufacturer, SerialNumber
SELECT * FROM Win32_Processor: Name
SELECT * FROM Win32_ComputerSystem: TotalPhysicalMemory
SELECT * FROM Win32_VideoController: Name, AdapterRAM
SELECT * FROM Win32_PnPEntity WHERE (PNPClass = ‘Image’ OR PNPClass = ‘Camera’)

DCRat Stealer; Host Fingerprint; Windows Registry:
READ: HLKM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release
READ: HKLM\SYSTEM\ControlSet001\Control\Class\ {4d36e968-e325-11ce-bfc1-08002be10318}\<SUBKEY_1..SUBKEY_N>\{AdapterString,DriverDesc,qwMemorySize}

DCRat Stealer; Runtime; Mutex (Default format, if not overridden):
    DCR_MUTEX-<20_ALPHANUM_ULCASE_RAND>

DCRat Builder/Admin Tool; C2 Network Traffic:
    DNS + HTTPS: dcrat[.]ru, crystalfiles[.]ru

 

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

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

・サイバーセキュリティチームによるコンサルティング: https://www.blackberry.com/ja/jp/services/blackberry-cybersecurity-consulting/overview

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

・FaceBook(日本語): https://www.facebook.com/watch/BlackBerryJPsec/

・Twitter(日本語): https://twitter.com/BlackBerryJPsec

・ LinkedIn: https://www.linkedin.com/company/blackberry/

・Youtube(日本語): https://www.youtube.com/channel/UCT2VHYwfUVC4V0AnkVZ2QIg/videos

The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

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