Rekoobe は中国の APT31 攻撃グループが使用しているものと知られているバックドア型マルウェアである。AhnLab Security Emergency response Center (ASEC)では数年前から韓国国内のクライアントから Rekoobe マルウェアが頻繁に収集されているため、簡単な解析情報を共有する。また、様々な Rekoobe の変種を分類し、韓国国内の企業を対象とする攻撃に使用された Rekoobe マルウェアを共に整理していく。
1. 概要
Rekoobe は、Linux 環境を対象とするバックドア型マルウェアである。2015年に初めて確認され、[1](英語外部サイト)2018年にはアップデートされたバージョンが攻撃に使用された事例が存在する。[2](英語外部サイト)ELF フォーマットの Rekoobe はアーキテクチャが x86、x64、さらに SPARC であることから、主に Linux サーバーを攻撃対象としているものと推定される。
Github に公開されているオープンソースの Tiny SHell のソースコードをベースに製作されたものと知られている Rekoobe は、Tiny という名前の通り基本的な機能をサポートしている。[3](英語外部サイト)プロセス名の変更のような補助的な機能を除けば、C&C サーバーのコマンドを受け取ってダウンロード、アップロード、コマンドを実行する3つの機能がすべてである。オープンソースをベースにしているため、類似するタイプまで対象とする場合、分類は困難になるが、ここでは一般的に知られている Rekoobe のタイプを解析する。
攻撃者が Linux システムに Rekoobe をインストールする方法、そして攻撃の対象に関する情報は多くないが、Rekoobe は中国の攻撃グループである APT31 が使用するマルウェアとして知られている。[4](英語外部サイト)
一般的に Linux サーバーを対象とするマルウェアは、不適切に管理されているサーバーや最新バージョンにアップデートしていないために脆弱となっているサーバーを対象とする。参考に、Rekoobe の攻撃者が多数の Linux サーバーを対象にスキャニングおよびブルートフォースアタックを通じて攻撃を行った事例は確認されていない。
これにより、脆弱なアカウント情報を使用しているシステムよりも、主に最新のアップデートを適用していない、または不適切な設定によりサービス中の Linux サーバーが攻撃対象であるものと推定される。もちろん、有名な WordPress プラグインを攻撃した攻撃者が感染システムを操作するために Rekoobe をインストールするサプライチェーン攻撃の事例も確認されている。[5](英語外部サイト)
2. Rekoobe の解析
ここでは、韓国国内で収集された Rekoobe マルウェアのうち1つを対象に解析を行う。
- MD5 : 8921942fb40a4d417700cfe37cce1ce7
- C&C サーバー : resolv.ctmailer[.]net:80 (103.140.186.32)
- ダウンロードアドレス : hxxp://103.140.186[.]32/mails
Rekoobe は実行時にプロセス名を正常なプロセスと同じ「/bin/bash」に変更することにより、ユーザーの認知を困難にしている。これは strcpy() 関数を利用してプログラムの実行時に渡される引数を変更する方式によって実現されている。参考に、これは Tiny SHell では存在しない部分である。

Tiny SHell とは異なるもう一つの要素は、C&C サーバーのアドレスやパスワードを受け取るコマンドラインオプションが存在しないという点である。このオプションが存在しないために、C&C サーバーのアドレスは以下のようにハードコーディングされたアドレスが使用される。
引数 | 機能 |
---|---|
P | C&C アドレスまたはバインドポート番号 |
S | パスワード変更 |
C | C&C サーバーアドレス |
default | Help メッセージ |

Tiny SHell または Rekoobe は HMAC SHA1 アルゴリズムを用いて AES-128 キーを生成し、当該キーを利用して C&C サーバーとの通信データを暗号化する。以下は C&C サーバーとの通信プロセスを簡単に整理した内容である。
A. C&C -> クライアント:HMAC SHA1 の生成
まず C&C サーバーから 0x28 サイズのデータを受け取る。これは、2つの 0x14 バイトに分割され HMAC SHA1 コンテキストの初期化時に IV で使用される。参考に、初期化のプロセスでは渡された各 0x14 バイトの IV 以外にもハードコーディングされているパスワード文字列「0p;/9ol.」も同時に使用される。

生成された HMAC SHA1 の値は AES-128 キーであり、それぞれ C&C サーバーにデータを転送する際に暗号化と C&C サーバーから受け取ったデータを復号化するのに使用される。
B. C&C -> REKOOBE:整合性の取れたデータ
次に、C&C サーバーから 0x10 バイトの整合性を検証するためのデータを受け取る。Rekoobe は渡されたデータを上記で設定した AES-128 キーでデコードし、さらに Xor のプロセスを経ることにより、渡されたデータのサイズを取得できる。その後渡されるデータは整合性の検証に使用されるが、0x10 バイトであり、以下と同じ値を持っていなければならない。参考に、この値は Tiny SHell のソースコードで指定した値と同じである。

C. REKOOBE -> C&C:整合性の取れたデータ
整合性検証のプロセスが完了すると、今度は反対に C&C サーバーへ 0x10 バイトの同じ整合性の取れたデータを転送する。データを転送する際も、上記で生成した HMAC SHA1 の値で生成した AES128 キーを利用して暗号化したあとで転送する。

D. C&C -> REKOOBE:C&C コマンド
E. C&C -> REKOOBE:コマンドごとの追加データ
ここまでのプロセスが完了すると、C&C サーバーから1バイトのコマンドを受け取る。1バイトの値に応じてファイルのアップロード、ファイルのダウンロード、リバースシェルの3つのコマンドを実行することができる。
コマンド番号 | コマンドの種類 |
---|---|
1 | ファイルのアップロード |
2 | ファイルのダウンロード |
3 | リバースシェル |

コマンドも3つしか存在しないが、それぞれのコマンド自体も単純な形式である。例えば、ファイルのダウンロードコマンド、すなわち 0x02 を渡された場合、次に受け取るパケットはダウンロードしたファイルを書き込むパスであり、そのパスにファイルを生成してファイルの実際のデータを書き込むという振る舞いがそのすべてである。リバースシェルコマンドも以下のように標準入出力を C&C サーバーへのソケットとしてリダイレクトし、/bin/sh を実行するシンプルなものである。

3. Rekoobe の分類
ここまでは一つのサンプルを対象に解析を行ってきたが、Rekoobe は最近でも多数のサンプルが確認されている。ここでは、最近収集された Rekoobe サンプルの共通点と違い、そして特徴について説明していく。HMAC SHA1 をベースとした AES128 暗号化アルゴリズムが C&C サーバーとの通信に使用される点や、ファイルのダウンロード/アップロード、リバースシェルの機能をサポートする等、基本的な形は同じである。
代表的な違いとしては、C&C サーバーとの通信方式があげられる。上記で取り上げた Rekoobe はハードコーディングされた C&C サーバーに先に接続する形式だが、バインドシェル形式でポートをオープンし、C&C サーバーの接続を待機する形式も存在する。これは、Tiny SHell ではどちらもサポートしているためである。

Rekoobe は、ビルダーが別に存在するものと推定される。上記ではランダムな形式のパスワード文字列が使用されていたが、デフォルトの文字列と見られる「replace with your password」を使用するマルウェアがよく見られることが、その理由の一つである。すなわち、各マルウェアは攻撃者が攻撃を行うたびにパスワードを指定してビルダーとして生成したものと推定される。毎回異なる文字列が使用されるパスワードとは異なり、整合性の検証に使用されるデータは、反対に大半のソースコードと同じ「58 90 AE 86 F1 B9 1C F6 29 83 95 71 1D DE 58 0D」が使用されているという点が特徴である。
4. 韓国国内を対象とする攻撃に使用された Rekoobe マルウェア
以下は、韓国国内のシステムを対象とする攻撃に使用された Rekoobe マルウェアである。すべて x64 アーキテクチャであることから、Linux サーバーを攻撃対象としたものと推定され、すべて Reverse Shell の形式をとっている。mails と service は相対的に同じような時期に収集されており、攻撃者が指定したパスワードがほぼ同じであることから、同じ攻撃者が使用したものと推定される。
名前 | アーキテクチャ | C&C 通信の形式 | C&Cアドレス | プロセス名の変更 | パスワード |
---|---|---|---|---|---|
java | x64 | Reverse | 139.162.116[.]218:18120 | “/bin/bash” | “uiuizhihuowienjkn8891231.,@#$@FSAF” |
rmicd(123) | x64 | Reverse | 172.105.200[.]233:3661 | “[kondemand/23]” | “replaceadsfCSDFwithxdfyoasdfXX.password” |
mails | x64 | Reverse | resolv.ctmailer[.]net:80 | “/bin/bash” | “0p;/9ol.” |
service | x64 | Reverse | www[.]jxedunavi[.]com:443 | “/bin/bash” | “0p;/0p;/” |
5. 結論
Rekoobe は C&C サーバーからコマンドを受け取り、不正なファイルのダウンロード、システム内部ファイルの窃取、リバースシェルのような機能を実行できるバックドア型マルウェアである。簡単な形態であるが、ネットワークパケットの検知を回避するために暗号化を使用して攻撃者のコマンドを受け取り、様々な不正な振る舞いを実行することできる。
オープンソースをベースとする Rekoobe は、既知の中国の攻撃グループである APT31 以外にも、異なる多数の攻撃者によって使用されることもある。最近でも Linux サーバーを対象とする攻撃に使用されており、特に韓国国内のシステムを狙った攻撃事例も持続的に確認されている。
このようなセキュリティ脅威を防止するためには、脆弱な環境設定や認証情報をチェックし、関連するシステムを常に最新バージョンにアップデートして攻撃から保護しなければならない。また、V3 を最新バージョンにアップデートしてマルウェアへの感染を事前に遮断できるように注意を払わなければならない。
ファイル検知
– Backdoor/Linux.Rekoob.52072 (2020.04.07.08)
– Trojan/Linux.Rekoobe.XE141 (2020.08.01.00)
IOC
MD5
– 7851833a0cc3482993aac2692ff41635
– 03a87253a8fac6d91d19ea3b47e2ca6c
– 5f2e72ff741c4544f66fec16101aeaf0
– 8921942fb40a4d417700cfe37cce1ce7
C&C
– 139.162.116[.]218:18120
– 172.105.200[.]233:3661
– resolv.ctmailer[.]net:80
– www[.]jxedunavi[.]com:443
関連 IOC および詳細な解析情報は、AhnLab の次世代脅威インテリジェンスプラットフォーム「AhnLab TIP」サブスクリプションサービスを通して確認できる。
Categories:マルウェアの情報
[…] Reptile のリバースシェルはオープンソースの Linux バックドアマルウェアである TinySHell をベースにしている。TinySHell をベースに制作されたバックドアマルウェアには Rekoobe があり、主に中国の攻撃グループが使用しているものとして知られている。[7] Avast のレポートによれば Syslogk ルートキットも Magic Packet をトリガーとして動作する Port Knocking 方式をサポートしている。そして、バックドアとしてカスタマイズされた TinySHell、すなわち Rekoobe を使用した。これらの共通点から考えると、Syslogk 攻撃者が Reptile の構造を借用したものと推定される。 […]