原文のブログはこちらからご覧頂けます。
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 のダウンロードポイントとしての機能しかなく、潜在顧客や既存顧客向けの情報やリソースは提供されていません。


アクセスが制限された他のフォーラムや、ダークウェブで DCRat が販売されている可能性もあります。DCRat のアーカイブは別の URL に置かれており、URL の共有には Discord のインスタントメッセージが利用されます。どのバージョンでも配布時の最も一般的なファイル名は、「1ac770ea1c2b508fb3f74de6e65bc9c4.zip」のようです。
DCRat に関するニュースとアップデートはすべて専用の Telegram チャネルを通じて配信されます(図 3 と図 4)。執筆時点で、チャネルの登録者数は約 3,000 名です。

アカウント「DarkCrystalRAT Telegram」の他にも、Telegram ボットが 2 つ存在します。注文を処理する「DCRatSeller_bot」と、テクニカルサポートを提供する「CrystalSupport_bot」です。
DCRat ライセンスの最新価格は以下の通りです(限定値引きは含まず)。
- 500 ルーブル / 5 米ドル: 2 か月のライセンス
- 2,200 ルーブル / 21 米ドル: 年間ライセンス
- 4,200 ルーブル / 40 米ドル: 永久ライセンス

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





ロシア語の紹介文を大まかに翻訳すると、「私はデータを盗む。ロシア、英国、次の仕事は ?」となります。その意図は 100% 明らかではありませんが、ロシア、英国、およびおそらく他の国からデータを盗むと豪語していると考えられます。
プロフィール写真の出典は、2014 年のドイツの犯罪映画「ピエロがお前を嘲笑う」です。なお、この写真は最近変更されており、Web サイトのキャッシュには比較的一般的なハッカーの画像が残されています(図 9)。また、ロシア語の文章を翻訳すると、「SS を闇に追いやる」という少々謎めいたメッセージが現れます。


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

時系列
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)

- 2019 年 9 月 4 日: 専用プラグインフォーマット「DCLIB」の導入
- 2019 年 11 月 19 日: 管理者ツールの再設計
- 2020 年 5 月 12 日: Mandiant が DCRat クライアントの解析結果を公開
- 2020 年 5 月 27 日: crystalfiles[.]ru が登録され、新規ドメインに配布元を変更

- 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 |
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 in_file = sys.argv[1] os.mkdir(out_dir) with open(in_file, 'rb') as f: |
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)は、一連のオンラインライセンスチェック機能を用いて不正利用を阻止します。チェックに成功すると、管理者インターフェースを利用できるようになります。

チェックはハードコードされたドメイン「dcrat[.]ru」への HTTPS クエリから構成されます。
通信相手の検証
最初の検証では、ランダムな 64 文字の値をハッシュ化し、Base64 でエンコードして送信します。有効と判定されるには、C2 サーバーからの返信に、同様の方法でハッシュ化とエンコードが行われた同じ値が含まれなければなりません。このやり取りによって通信相手の基本的な検証を行い、管理者ツールが正しい DCRat ライセンスサーバーと通信していることを確認します。
サブスクリプション登録者の検証
2 番目の HTTPS リクエストでは、管理者ツールが稼働しているコンピューターを認証します(図 15)。まず、少数のホストプロパティを収集し、固有のフィンガープリントを生成します。そして、フィンガープリントを「dcrat[.]ru」に送信し、(おそらく)有効なサブスクリプション登録情報と照合します。

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



このキルスイッチ機能は 2021 年中旬から 2022 年初頭にビルドされた複数の管理者ツールで確認されています。
管理者機能
サブスクリプション登録者は、管理者ツールを使用して以下のアクションを行えます。
- アクティブな C2 サーバーへのログイン
- 登録されたインストール済みクライアントにタスクを指示
- ローダーやクライアントのビルドを生成
- インストール統計情報の確認とクエリ
- DCRat 開発者にバグレポートを提出
バックエンド PHP をホスティングするアクティブな C2 サーバーへのログインが必要です(図 17)。

ログインパラメータは次の難解な構文によります。
- http://<server>/@<reversed_base64_PHP_pagename_minus_php_suffix>
- パスワード
フェイクニュース?
理由は定かではありませんが、DCRat の開発者はランダムに生成された数値を「Servers working (稼働中のサーバー)」と「Users online (オンラインユーザー)」として表示する機能を実装しています。この数値は、管理者ツールの背景に統計情報として表示されます。おそらく、実態より人気のあるツールに見せかけようとしているか、単に正確なカウンターの実装方法を知らないため、当面は偽のカウンターをプレースホルダとして組み込んでいるのでしょう。
管理者機能
認証後、管理者ツールは C2 へのポーリングを開始し、接続済みホストと感染済みホストの詳細を取得します。
各機能はタブでグループ化されています(図 18)。

Users
このタブには感染ホストで動作する、アクティブな/登録済みのインストール済み DCRat クライアントの一覧が表示されます。リストは C2 への定期的なポーリングによって更新されます。
Builder
脅威アクターはこのタブから DCRat クライアント実行ファイルの設定(および生成)を行えます。解析したバージョンの管理者ツールの場合、dcrat[.]ru ドメインからクライアントの「コア」が Base64 文字列でダウンロードされ、「DCRCC.exe」の入力として使用されました。

設定に使用可能なパラメータを以下に示します。
- Network:
- プライマリ C2 ホストとセカンダリ C2 ホストのリストを指定(トランスポートプロトコルは HTTP/S のみ)
- プライマリ C2 ホストとセカンダリ C2 ホストのリストを指定(トランスポートプロトコルは HTTP/S のみ)
- Protect:(図 19)
- オプションで、生成したクライアントバイナリを .NET Reacter を用いて難読化
- 実行時に使用するミューテックス名。デフォルトでは、「DCR_MUTEX」の後に 20 文字のランダムな英数字列
- DCR_MUTEX-<20_ALPHANUM_RAND>
- レジストリエントリを使用して Windows タスクマネージャを無効化(「IoC」を参照)
- PE ファイルの(偽の)作成日時を指定
- 起動を遅らせる秒数
- オプションで、生成したクライアントバイナリを .NET Reacter を用いて難読化
- Plugins:
- DCRat プラグインの設定と有効化
- DCRat プラグインの設定と有効化
- Installation:
- DCRat クライアントの実行時にモジュールを展開するパス
- 使用する永続化メカニズム
- 最初に使用するスタートコマンドスクリプト
- DCRat ビルドの実行中、ホストに表示するタグ値(キャンペーン ID)
- 自動機能:起動後に自動で開始する機能
- 情報窃盗
- キーロガー
- アンインストール(自動削除)
- 情報窃盗
- 管理者強制:起動時に管理者権限の強制を試みる
- ビルドキャッシュストレージ
- DCRat クライアントの実行時にモジュールを展開するパス
- Build:
- オプションでビルドを UPX 圧縮
- 使用するファイル拡張子
- PE ファイルのアイコン
- オプションでビルドを UPX 圧縮
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)。おそらく典型的な構成は「ファイルのダウンロード」、「待機」、「ファイルの実行」の組み合わせで、密かにファイルをダウンロードし、検出を避けるため十分な時間待機してからファイルを実行します。

ローダーのソースコードは管理者ツールに 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 の「自動実行」機能を利用したごく一般的なものです。
- レジストリ 「HKLM\Software\Microsoft\Windows\CurrentVersion\Run」を使用
- レジストリ「HKCU\Software\Microsoft\Windows\CurrentVersion\Run」を使用
- レジストリ「HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon」を使用(REG_SZ: “Shell”)
- スケジュール済みタスク /ONLOGON
- スケジュール済みタスク /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 のバージョン

"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 の資格情報
- スクリーンショット
- キーロガー
- クリップボードの内容
- システム情報

情報窃盗コンポーネントには専用プラグインを実行する機能があり、各ターゲットでマルウェア開発者が探す情報に応じて拡張を行えます。
サービス拒否(DoS)
DCRat の情報窃盗機能には、特定のホストとエンドポイントの組み合わせに対してさまざまな DoS 攻撃(HTTP(S)、POST、UDP、TCP)を行うための基本的なマルチスレデッドコードが含まれます。
遅延戦術
多くのマルウェアファミリーと同様、DCRat は Windows コマンドラインツールを利用して実行を遅延させる機能を有します。DCRat クライアントの実行に関与しているのが、タイムサービス設定用の Windows コマンドラインツール(w32tm)の呼び出しです。図 23 のように適切なコマンドライン引数を設定すると、遅延メカニズムとして動作します。DCRat の場合、10 秒間遅延するように引数が渡されます。エンドポイント XDR で w32tm インスタンスの同時発生が検出された場合、やや弱い証拠ではあるものの、DCRat クライアントの実行を示している可能性があります。

プラグイン
外部開発者は専用 IDE 「DCRat Studio」を使用してプラグインを設計できます。また、crystalfiles[.]ru (図 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)
|
・お問い合わせ: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