ASEC 分析チームは、脆弱なデータベースサーバー(MS-SQL、MySQL サーバー)をターゲットに拡散するマルウェアを継続的にモニタリングしている。ここでは、Gh0stCringe[1]という RAT マルウェアを取り上げる。
Gh0stCringe は CirenegRAT とも呼ばれるマルウェアであり、Gh0st RAT のコードをベースとする変種の一つである。2018年12月頃に初めて確認され、SMB の脆弱性(ZombieBoy の SMB 脆弱性ツールを使用)を通じて拡散したことで知られている。[2] 以降、直接的な関連性が確認されたものではないが、2020年6月頃に発刊された KingMiner という CoinMiner の解析レポート[3]において取り上げられている。
最近になって確認されている Gh0stCringe RAT は、脆弱なデータベースサーバーをターゲットに拡散している。当社 ASD のログをベースに Gh0stCringe 関連のログを確認すると、以下のように sqlservr.exe プロセス、すなわち MS-SQL サーバーの他にも Windows 環境用の MySQL サーバープロセスにより生成されたログを確認できる。

MS-SQL サーバーだけでなく MySQL サーバーも攻撃対象となっている事からして、大半の DB サーバーをターゲットに配布されるマルウェアがそうであるように、Gh0stCringe も脆弱なアカウント情報を持っている、すなわち不適切に管理されている DB サーバーを対象とするものと推定される。
一般的に脆弱なアカウント情報を持つデータベースサーバーは、様々な攻撃者およびマルウェアからの攻撃対象となるため、様々なマルウェアの感染ログが確認される。実際に上記の KingMiner マルウェアも代表的な攻撃経路が脆弱なアカウント情報を持つ SQL サーバーに対する攻撃であり、Gh0stCringe がインストールされているシステムの感染ログを確認しても、KingMiner 以外にも Vollgar CoinMiner マルウェア[4]のように、総当たり攻撃により配布される別のマルウェアの感染履歴が同時に確認される。
Gh0stCringe は公開されている Gh0st RAT のソースコードをベースに作られている。以下は公開されている Gh0st RAT の CFileManager::OpenFile() 関数と Gh0stCringe の関数を比較した結果であり、ソースコードのうち一定部分がそのまま使用されていることが分かる。参考に、Gh0st RAT のソースコードをベースにして多数のコードがオリジナルと類似している一般的な変種とは異なり、Gh0stCringe には別の名前が付けられているように、ユニークなコードの割合が高い。

Gh0stCringe RAT はその名の通り RAT マルウェアであり、C&C サーバーに接続したあと攻撃者からコマンドを受け取り、様々な不正な振る舞いを実行できる。ほかの RAT マルウェアのように Gh0stCringe も攻撃者が様々な設定を指定できるが、ここでは解析対象のサンプルを基準に説明する。
以下は C&C コマンドとは別に、実行時に行うことができる様々な機能についての設定データである。7通りの設定が存在し、設定されたデータに基づいてそれぞれ異なる振る舞いを実行する。

- 自己複製 [On/Off]:有効化されている場合、モードに応じて自身を特定パスにコピーする。
- 実行モード [Mode]:0、1、2の値を設定することができ、実行モードについては以下で扱う。
- ファイルのサイズ変更 [Size]:Mode #2 では自身を「%ProgramFiles%\Cccogae.exe」パスにコピーするが、値が設定されている場合、指定したサイズの分、ファイルの末尾にダミーデータを追加する。
- 解析妨害手法 [On/Off]:explorer.exe プロセスと、自身の親プロセスの PID を取得した後、0の値を持つ場合は終了する。
- キーロガー [On/Off]:有効化されている場合、キーロガースレッドが動作する。
- Rundll32 プロセス終了 [On/Off]:有効化されている場合は「taskkill /f /im rundll32.exe」コマンドを実行し、実行中の rundll32 プロセスを終了させる。
- 自己複製ファイル属性 [Attr]:自己複製したファイルの属性を読み取り専用、隠し、システム属性に (FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM) 設定する。
キーロガー機能は C&C サーバーのコマンドを受け取り動作することもできるが、設定データによって有効化される場合もある。Gh0stCringe は Windows Hooking 方式、すなわち SetWindowsHookEx() API を利用する Gh0st RAT マルウェアとは異なり、Windows Polling 方式のキーロガー手法、すなわち GetAsyncKeyState() API を利用する。

ロギングされたユーザーのキー入力は「%SystemDirectory%\Default.key」パスに保存し、Gh0st RAT と同じく1バイトの XOR エンコードを行って保存する。このマルウェアでは 0x62 がキーに使用されていた。

Gh0stCringe は4つのモードをサポートしている。3つのモードは上記で取り上げた設定データの値として0、1、2を持つことができる。これ以外にも、Windows 10 バージョンでは専用モードで実行される。各モードは最終的に C&C サーバーとの通信およびコマンドを実行するところまでは同じだが、以下のように持続性の維持に関連する機能的な違いが存在する。
- Mode #0 : 「Rsuyke mkgcgkuc」サービスが存在しない場合は当該サービスを生成するが、正常な方法で登録しない。更に自己複製設定が有効化されている場合は自身を %ProgramFiles% パスにランダムな名前でコピーする。生成したサービスも正常な方法で登録された形式ではなく、追加で Run Key 登録のような手法を使用しないために持続性は維持されない。
- Mode #1 : Mode #0 と同様に正常ではない形式の「Rsuyke mkgcgkuc」サービスを生成する。HKLM Run Key に登録することで持続性の維持が可能である。
- Mode #2 : 自身を「%ProgramFiles%\Cccogae.exe」パスにコピーしたあと「Rsuyke mkgcgkuc」サービスに登録する。その後サービスを実行すると、サービスは「Win7」を引数として渡して Gh0stCringe を実行する。正常にサービスが登録されることで、持続性の維持が可能である。更に、自己複製設定が有効化されている場合「%SystemDirectory%[Random].bak」パスに自身をコピーする。
- Mode Windows 10 : HKCU Run Key に登録することで持続性の維持が可能である。

初期ルーティンを経過すると C&C サーバーに接続し、定期的に通信を行い攻撃者からのコマンドを待機する。このようなコマンド実行ルーティンとは別に、最初の接続時には以下のように感染システムの情報を収集して C&C サーバーに伝達する。
Offset | Size | Description |
---|---|---|
+0x0000 | 0x01 | 0xC8 |
+0x0001 | 0x07 | “Default” |
+0x0024 | 0x04 | 感染システムの IP アドレス |
+0x0028 | 0x04 | 感染システムのホスト名 |
+0x005C | 0x9C | Windowsバージョン |
+0x00F8 | 0x04 | CPU 個数 (MB) |
+0x010C | 0x04 | CPU 動作周波数 (GHz) |
+0x0114 | 0x04 | ネットワーク性能 |
+0x0118 | 0x04 | Web カメラ個数 |
+0x011C | 0x04 | Wow64 の有無 |
+0x0120 | 0x04 | メモリ容量 (MB) |
+0x0124 | 0x04 | ローカルディスク容量 (MB) |
+0x0128 | 0x04 | マルウェアインストール日 |
+0x0159 | N/A | インストールされているセキュリティ製品リスト |
+0x01BE | N/A | 特定データ領域 (使用されない) |
+0x0204 | 0x04 | ネットワークインターフェイス速度 (Mbps) |
+0x0208 | 0x04 | “V9.0” |
+0x0228 | 0x04 | 直近3分以内のキー入力有無 |
収集するこれらの情報の中で最も目につく特徴は、インストールされたセキュリティ製品のリストを取得する点である。現在実行中のプロセスの名前をチェックした後、以下のようなリストで比較して一致する場合、情報を記録して C&C サーバーに伝達する。

オリジナルの Gh0st RAT はその名の通り C&C サーバーとの通信に「Gh0st」というシグネチャ文字列を使用する。以下は、オリジナルの Gh0st RAT で PacketFlag により「Gh0st」の文字列を指定するルーティンである。

以下は、暗号化前の Gh0stCringe のパケット構造である。上で整理した感染システムの情報は 0x22C サイズであり、前半に 0xF サイズのさらなるデータが加えられた。この中で「xy」文字列、すなわち最初の3バイトの 0x787920 が Gh0stCringe のシグネチャ文字列である。

暗号化前のパケット構造を整理すると、以下の通りである。
Offset | Size | Data | Description |
---|---|---|---|
+0x00 | 0x03 | “xy “ | シグネチャ文字列 |
+0x03 | 0x04 | 0x0000023B | パケット全体のサイズ |
+0x07 | 0x04 | 0x0000022C | 伝達するデータのサイズ |
+0x0B | 0x04 | 0x00000001 | ハードコーディングされたデータ |
+0x0F | 可変 | 可変 | 感染システムから収集したデータ |
このようにして作成されたデータは最終的に自主的なエンコード方式を経て暗号化される。以下は、パケットの暗号化ルーティン、およびこれらのプロセスを通じて作成され C&C サーバーに伝達されるパケットである。


次は、C&C サーバーから渡され実行される複数のコマンドについて取り上げる。Gh0stCringe のコマンドの中にはオリジナルの Gh0st RAT に存在するものもあるが、ユニークなコマンドも多数存在する。
コマンドの実行
– ダウンローダー:C&C サーバーから追加のペイロードをダウンロードして実行する。具体的な引数を伝達することができる。
– 特定 URL の接続:インターネットエクスプローラーを利用して特定のサイトに接続。ユーザーが認知できないようにウィンドウを非表示にするオプションも存在する。
– MBR の破壊
情報窃取
– キーロガー:設定データの有無に関係なく C&C サーバーのコマンドによってもキーロガーを実行することができる。
– クリップボードの窃取:現在クリップボードに保存されているデータを窃取する。
– Tencent 関連ファイル情報の収集:「%APPDATA%\Tencent\Users\」のパスに存在するファイルのリストを収集するが、一般的に QQ メッセンジャー関連のユーザーデータが含まれているものと推定される。
自主制御
– アップデート:マルウェアのアップデート
– アンインストール:登録したサービスを削除してバッチファイルを利用し、自己削除を行う。他にもキーロガーデータの Default.key ファイルも削除する。
– サービス制御:マルウェアのサービス、すなわち「Rsuyke mkgcgkuc」に対して「Host」または「ConnectGroup」項目を変更する。
– イベントのクリーンアップ
– Run Key 登録:「C:\Program Files\Common Files\scvh0st.exe」パスに Run Key を登録。
システム制御
– システムの終了
– NIC 再起動
追加モジュール制御
C&C サーバーから追加モジュールをメモリ上にダウンロードし、ロードした後で以下のような指定のエクスポート関数を呼び出す。1つ目のモジュールはエクスポート関数と推定した場合、プロキシ関連モジュールと見られ、2番目のモジュールは追加機能が含まれた Plugin モジュールと推定される。
– Module #1:Export 関数 OpenProxy()、CloseProxy()
– Module #2:Export 関数 PluginMe()
その他
– 特定プロセスの実行有無のチェック
– 特定のウィンドウの存在有無のチェック
– 特定レジストリへの書き込み:「HKLM\SYSTEM\Clore / Clore」
– メッセージポップアップ
データベースサーバー(MS-SQL、 MySQL サーバー)をターゲットとする攻撃の代表例としては、不適切にアカウント情報を管理しているシステムに対する総当たり攻撃(Brute Forcing)と辞書攻撃(Dictionary Attack)がある。一般的にこれらの方法が攻撃の大半を占めているように見えるが、これ以外にも脆弱性に対するパッチが適用されていないシステムへの脆弱性攻撃が発生する可能性がある。
参考に、MS-SQL サーバーの場合は一般用に構築された形式以外にも ERP および業務用ソリューションによりインストールされた MS-SQL サーバーも攻撃対象となっている。そのため、管理者はアカウントのパスワードを推測が困難な形式で設定し、定期的にパスワードを変更することで、総当たり攻撃や辞書攻撃からデータベースサーバーを保護しなければならず、セキュリティパッチを最新にして脆弱性攻撃を防止しなければならない。また、外部に開放されていてアクセスが可能なデータベースサーバーに関してはファイアウォールのようなセキュリティ製品を利用し、外部の攻撃者からのアクセスを統制しなければならない。
AhnLab 製品では、これらのマルウェアを以下の通り検知している。
[ファイル検知]
– Backdoor/Win.Gh0stRAT.C4976413 (2022.02.19.00)
– Backdoor/Win.Gh0stRAT.C4976420 (2022.02.19.00)
[IOC]
MD5
– bd8611002e01d4f9911e85624d431eb0
– 9adc9644a1956dee23c63221951dd192
– 782cbc8660ff9e94e584adfcbc4cb961
C&C
– tuwu.meibu[.]net:2220
– 172.86.127[.]224:8000
[参考資料]
[1] https://twitter.com/James_inthe_box/status/1125004664041197568
[2] https://www.binarydefense.com/gh0stcringeformerly-cirenegrat/
[3] https://www.sophos.com/en-us/medialibrary/pdfs/technical-papers/sophos-labs-kingminer-botnet-report.pdf
[4] https://www.guardicore.com/blog/vollgar-ms-sql-servers-under-attack/
関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。
Categories:マルウェアの情報
[…] Gh0st RAT は中国の C. Rufus Security Team が開発した遠隔操作マルウェアである。ソースコードが公開されているため、マルウェアの開発者たちがこれを参考にして様々な変種を開発しており、最近までも攻撃に使用され続けている。ソースコードが公開されているといっても、Gh0st RAT は主に中国を拠点とする攻撃者たちが使用することが特徴である。過去のブログでもデータベースサーバー(MS-SQL、MySQL サーバー)を対象に Gh0st RAT の変種である Gh0stCringe RAT が配布された事例を公開したことがある。[1] […]