Quasar Familyによる攻撃活動
Quasar[1]は、オープンソースのRAT(Remote Administration Tool)であり、機能が豊富かつ簡単に利用できることから、多くの攻撃者に悪用されています。APTグループによる複数の攻撃キャンペーンでも利用されており、APT10と呼ばれる攻撃グループが、日本の組織を狙った標的型攻撃に利用しているケースも確認しています。
また、Quasarはソースコードが公開されているため、多くの派生RAT(以下、Quasar Family)が存在しています。Quasar Familyの中には、日本の組織に対する攻撃で利用されているものも存在し、Quasarと同様に大きな脅威となっています。
今回はQuasarおよびQuasar Familyの詳細について紹介します。
Quasarの概要
Quasarは、端末の管理やサポート業務、従業員の監視などでの利用が想定されており、多くの機能が備わっています。 図1は、GitHub上で紹介されているQuasarの機能と動作環境です。
Quasarはリリースされた当初、現在とは異なるツール名(xRAT)でしたが、2015年8月のリリースからツール名をQuasarに変更し、2020年12月時点での最新バージョンは1.4(2020年6月リリース)です。
なお、1.3以前のバージョンもいまだに攻撃に悪用されているため、本記事では、バージョン1.3と1.4の両方の機能について紹介します。
通信方式
バージョン1.3では、通信方式にはAESとQuickLZを用いた独自プロトコルが使用されています。バージョン1.4では、従来のAESとQuickLZによる暗号化は実施されなくなり、Google社によって開発されているProtocol Bufferを使って、送信するデータのシリアライズが行われています。また、TLS1.2を使って、通信全体の暗号化が行われるように変更されています。 図3は、バージョン1.3と1.4で利用されている通信フォーマットです。
通信フロー
バージョン1.3では、クライアントがサーバーに接続すると、まずは認証に関する通信が行われ、認証が成功した後で、コマンドを含むデータのやり取りが開始されます。1.4では、認証に関する通信部分がTLSのハンドシェイクに置き換わっており、TLSのハンドシェイク後に、コマンドを含むデータのやり取りが開始されます。 図4は、Quasarのクライアントとサーバー間の通信フローです。
設定情報
Quasarは、内部に設定情報を保持しています。設定情報は、AESとBASE64エンコードを組み合わせて暗号化が行われており、実行時に設定情報内のENCRYPTIONKEYの値を使って復号されます。
表1は、Quasarが保持している設定情報の一覧です。
VERSION | INSTALL | LOGDIRECTORY(1.3) |
HOSTS | STARTUP | SERVERSIGNATURE(1.4) |
PORT (xRATのみ) | MUTEX | SERVERCERTIFICATESTR(1.4) |
RECONNECTDELY | STARTUPKEY | SERVERCERTIFICATE(1.4) |
KEY | HIDEFILE | HIDELOGDIRECTORY(1.3) |
AUTHKEY | ENABLEUACESCALATION(xRATのみ) | HIDELOGSUBDIRECTORY(1.3) |
DIRECTORY | ENABLELOGGER | INSTALLPATH(1.4) |
SUBDIRECTORY | ENCRYPTIONKEY | LOGSPATH(1.4) |
INSTALLNAME | TAG(1.3) | UNATTENDEDMODE(1.4) |
コマンド
バージョン1.3では、typeofを使ってコマンドセットが定義されています。 図7は、Quasarで定義されているコマンドの例です。
Quasar Family
表2は、JPCERT/CCで確認しているQuasarから派生したQuasar Familyの一覧です。
名前 |
分類 |
設定情報 |
通信方法 |
悪用状況 |
---|---|---|---|---|
Golden Edition | クローン | 同一 | 同一 | 有 |
XPCTRA | クローン | 独自 | 同一 | 有 |
CinaRAT[2] | クローン | 同一 | 同一 | 有 |
Xtremis 2.0[3] | クローン | 同一 | 同一 | 未確認 |
QuasarStrike[4] | クローン | 同一 | 同一 | 未確認 |
VenomRAT | クローン | 同一 | 同一 | 未確認 |
RSMaster[5] | 一部利用 | 独自 | 同一 | 未確認 |
Void-RAT | 一部利用 | 独自 | 同一 | 有 |
AsyncRAT[6] | 一部利用 | 独自 | 同一 | 有 |
※分類の「クローン」とは、Quasarのソースコードの全体を流用して、一部機能の追加、修正などを行っているものです。また、「一部利用」はソースコードの一部を流用して、全く別のものを作成しているものです。
図8は、XPCTRAと、Quasarの実装されているコマンドを比較した例です。
比較すると、XPCTRAのコマンドの大部分がQuasarと一致していることがわかります。
また、図9はAsyncRATと、QuasarのAESのsalt値を比較した例です。
AsyncRATで使用されているsaltの値がQuasarと完全に一致していることが確認できます。
このように、Quasar Family は、Quasarのソースコードを流用しているため、内部で使用している設定情報、通信方法がオリジナルのQuasarと一致しています。さらに、オリジナルのQuasarから独自の拡張が行われており、設定情報や独自のコマンドなどが新たに追加されているものも存在しています。
Quasarを用いた攻撃キャンペーン
Quasarは多くの攻撃キャンペーンで使用されています。表3は、攻撃グループ毎のQuasarの違いです。
攻撃グループ | Quasarバージョン | 独自実装 | 難読化 |
---|---|---|---|
APT33 | 1.3.0.0 | 無 | ConfuserEx v1.0.0 |
Gorgon Group | - | 無 | |
APT-C-09 | 2.0.0.0 RELEASE3 | 無 | |
DustySky | 1.1.0.0 | 無 | |
APT10 | 2.0.0.0(Custom Version) | 有 | ConfuserEx v1.0.0 |
ほとんどのケースでは、オリジナルのQuasarが用いられており、設定情報についてもデフォルトの値がそのまま使用されています。 図10は、APT33が使用するQuasarの設定情報の例です。
大半の設定箇所では、Quasarを生成するビルダーのデフォルト値が利用されており、STARTUPKEYのみ変更されていることが確認できます。このように、多くの攻撃グループは自身の攻撃であるという証拠を残さないようにするために、デフォルト値から変更しません。
一部の攻撃グループについては、Quasar に改良を加えていることもあります。APT10は、Quasarに独自の実装を加えて攻撃に使用していることを確認しています。以降では、APT10による変更箇所について詳細を紹介します。
設定情報
APT10のQuasar(以下、カスタムQuasar)では、設定情報の中に、以下の設定値が新たに追加されています。
- DOWNLOAD_URL
- PROXY
図11は、カスタムQuasarとQuasarの設定情報を比較した例です。
PROXYには、ProxyサーバーのURLが設定可能になっており、標的組織の内部でProxyサーバーが使用されている場合でも、C2サーバーと正常に通信ができるように拡張が行われています。
また、Quasarでは、設定情報のAES暗号化時にCBCモードを使って暗号化していますが、カスタムQuasarでは、CFBモードを使うように変更が行われています。
コマンドの追加・削除
カスタムQuasarでは、新たにコマンドの追加・削除が行われています。 図13は、カスタムQuasarとQuasarのコマンドを比較した例です。
カスタムQuasarでは、DoPlugin、DoPluginResponseのコマンドが追加されており、また、キーロガーのような一部のコマンドが削除されていることを確認できます。
新たに追加されたDoPluginコマンドでは、追加のプラグインモジュールをロードすることで、機能を拡張できます。また、DoPluginResponseコマンドは、DoPluginコマンドでロードしたプラグインモジュールを削除できます。
カスタムQuasarでは、キーロガーのような一部の機能が削除されていますが、必要な機能はDoPluginコマンドを使って動的に拡張し、Quasar自体にはあまり機能を持たせないことで、ウイルス対策ソフトでの検知回避を狙っているのかもしれません。
エラーログの作成
カスタムQuasarでは、エラーログを作成する機能が追加されています。エラーログを作成するファイルパスは、あらかじめ検体内にハードコードされています。
通信方式
カスタムQuasarでは、C2サーバーとの通信時に使用する暗号化方式が変更されています。オリジナルのQuasarでは、AESとQuickLZを用いて通信の暗号化を行っていますが、カスタムQuasarでは、さらにXORによるエンコード処理が追加されています。 図15は、新たに追加されたXORエンコード処理です。
また、設定情報と同様に、AES暗号化にCBCモードではなく、CFBモードを使うように変更が行われています。それぞれの暗号化方式を比較すると、以下のようになります。
- Quasar : QuickLZ + AES(mode CBC)
- カスタムQuasar : QuickLZ + AES(mode CFB) + XOR
C2サーバーの活動状況
JPCERT/CCでは、これまでに紹介したQuasar Familyの特徴をもとに、C2サーバーの活動状況を調査しました。その結果、2020年11月時点において、C2サーバーが稼働している計76個のIPアドレスを確認しています。 図16は、今回の調査で確認されたQuasar FamilyのC2サーバーの分布です。
複数のC2サーバーがさまざまな国で稼働しており、Quasar およびQuasar Familyは現在でも多くの攻撃活動に悪用されていることがわかります。
おわりに
今回紹介したQuasarに限らず、オープンソースで公開されているRATを悪用した攻撃事例が引き続き観測されています[7]。オープンソースのRATを用いることで、攻撃者の帰属を特定することが困難になる他、攻撃インフラを準備するコストが削減できるなど、攻撃者にとって多くのメリットがあると考えられます。今後も同様の傾向が続く可能性があるため、注意が必要です。
なお、Quasarの分析をサポートするツールを公開していますので、分析をする際はご活用ください(Quasarバージョン1.3のみ対応)。
インシデントレスポンスグループ 喜野 孝太、朝長 秀誠 調査協力 谷 知亮
参考情報
[1] GitHub: Quasar
https://github.com/quasar/Quasar
[2]GitHub: CinaRAT
https://github.com/wearelegal/CinaRAT
[3]GitHub: Xtremis 2.0
https://github.com/pavitra14/Xtremis-V2.0
[4]GitHub: QuasarStrike
https://github.com/Q-Strike/QuasarStrike
[5]GitHub: RSMaster
https://github.com/Netskyes/rsmaster
[6]GitHub: AsyncRAT
https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp
[7]Japan Security Analyst Conference 2020 (オープニングトーク) 2019年のインシデント を振り返る
https://jsac.jpcert.or.jp/archive/2020/pdf/JSAC2020_0_JPCERT_jp.pdf