XorDdos の台頭: Linux デバイスを標的とするステルス型 DDoS マルウェアの詳細

news

2022 年 9 月 12 日更新:このブログの初期アクセスペイロード分析のセクションに新しい情報が追加されました。これには、2022 年 6 月に確認された XorDdos サンプルの調査中に見つかったルートキット コンポーネントの詳細が含まれます。

過去 6 か月間で、XorDdos と呼ばれる Linux トロイの木馬の活動が 254% 増加したことを確認しました。 2014 年に研究グループ MalwareMustDie によって最初に発見された XorDdos は、Linux エンドポイントとサーバーでのサービス拒否関連の活動と、通信に XOR ベースの暗号化を使用していることにちなんで名付けられました。

XorDdos は、クラウド インフラストラクチャやモノのインターネット (IoT) デバイスに一般的に展開されている Linux ベースのオペレーティング システムを標的とするマルウェアが増加している傾向を示しています。 XorDdos は、IoT やその他のインターネットに接続されたデバイスを侵害することで、分散型サービス妨害 (DDoS) 攻撃の実行に使用できるボットネットを蓄積します。ボットネットを使用して DDoS 攻撃を実行すると、 Microsoft が 2021 年 8 月に軽減した 2.4 Tbps の DDoS 攻撃のように、重大な混乱を引き起こす可能性があります。マルウェアの展開やターゲット システムへの侵入など、さらなる悪意のある活動を隠します。

ボットネットを使用して他のデバイスを侵害することもできます。XorDdos は、セキュア シェル (SSH) ブルート フォース攻撃を使用してターゲット デバイスのリモート コントロールを取得することで知られています。 SSH は、IT インフラストラクチャで最も一般的なプロトコルの 1 つであり、リモート システム管理の目的で安全でないネットワーク上で暗号化された通信を可能にするため、攻撃者にとって魅力的なベクトルになっています。 XorDdos が有効な SSH クレデンシャルを識別すると、root 権限を使用してスクリプトを実行し、XorDdos をダウンロードしてターゲット デバイスにインストールします。

XorDdos は、回避と永続化のメカニズムを使用して、その操作を堅牢でステルスに保つことができます。その回避機能には、マルウェアのアクティビティの難読化、ルールベースの検出メカニズムとハッシュベースの悪意のあるファイル ルックアップの回避、プロセス ツリーベースの分析を破るためのアンチ フォレンジック技術の使用が含まれます。最近のキャンペーンでは、XorDdos が機密ファイルを null バイトで上書きすることにより、悪意のあるアクティビティを分析から隠していることがわかりました。また、さまざまな Linux ディストリビューションをサポートするためのさまざまな永続化メカニズムも含まれています。

XorDdos マルウェアの典型的な攻撃フローを示す図。攻撃者はボットと通信して、ターゲット デバイスに SSH ブルート フォース攻撃を行い、XorDdos をダウンロードします。次にマルウェアは、攻撃者の C2 サーバーに接続してデータを送信し、コマンドを受信する前に、回避と永続化のためのいくつかの手法を実行します。
図 1. XorDdos マルウェアの典型的な攻撃ベクトル

XorDdos は、マルウェアが他の危険な脅威を配信するために使用される、さまざまなプラットフォームで観察された別の傾向をさらに示している可能性があります。最初に XorDdos に感染したデバイスが、後に XMRig コイン マイナーをさらに展開する Tsunami バックドアなどの追加のマルウェアに感染したことがわかりました。 XorDdos が Tsunami のような二次ペイロードを直接インストールして配布することは確認されていませんが、このトロイの木馬が後続の活動のベクトルとして利用されている可能性があります。

Microsoft Defender for Endpointは、攻撃チェーン全体と、エンドポイントでの潜在的な後続のアクティビティを通じて、トロイの木馬の多段階のモジュール型攻撃を検出して修復することにより、XorDdos から保護します。このブログ投稿では、XorDdos の詳細な分析について詳しく説明し、防御側がその手法を理解し、このステルス マルウェアからネットワークを保護するのに役立てます。

このブログ投稿では、次のトピックについて説明します。

初期アクセス

XorDdos は、主に SSH ブルート フォース経由で拡散します。悪意のあるシェル スクリプトを使用して、ターゲットの Linux デバイスで一致するものが見つかるまで、何千ものサーバーでさまざまなルート資格情報の組み合わせを試します。その結果、マルウェアの感染に成功したデバイスで多くのサインイン試行の失敗が確認されています。

XorDdos に感染したデバイスによるサインイン試行の失敗数の増加を表す折れ線グラフ。
図 2. XorDdos の影響を受けたデバイスでのサインイン試行の失敗

私たちの分析により、初期アクセスのための XorDdos の 2 つの方法が特定されました。最初の方法では、悪意のある ELF ファイルを一時ファイル ストレージ/dev/shmにコピーして実行します。 /dev/shmに書き込まれたファイルはシステムの再起動時に削除されるため、フォレンジック分析中に感染源が隠蔽されます。

2 番目の方法では、コマンド ラインから次のアクティビティを実行する bash スクリプトを実行します。

  1. 書き込み可能なディレクトリを見つけるために、次のフォルダーを繰り返します。
    • /ビン
    • /ホーム
    • /ルート
    • / tmp
    • /ユーザー
    • /など
  2. 書き込み可能なディレクトリが見つかった場合、作業ディレクトリを検出された書き込み可能なディレクトリに変更します。
  3. curlコマンドを使用して、リモート ロケーションhxxp://Ipv4PII_777789ffaa5b68638cdaea8ecfa10b24b326ed7d/1[.]txtから ELF ファイル ペイロードをダウンロードし、ファイルをygljglkjgfg0 として保存します。
  4. ファイルモードを「実行可能」に変更します。
  5. ELF ファイルのペイロードを実行します。
  6. Wget バイナリを移動して名前を変更し、Wget バイナリの悪意のある使用によって引き起こされるルールベースの検出を回避します。この場合、Wget バイナリの名前をgoodに変更し、ファイルを次の場所に移動します。
    • mv /usr/bin/wget /usr/bin/good
    • mv /bin/wget /bin/good
  7. ELF ファイル ペイロードのダウンロードを 2 度目に試みます。今度は、適切なファイルのみを使用し、Wget バイナリは使用しません。
  8. ELF ファイルを実行した後、次の機密ファイルの内容を改行文字で上書きすることにより、過去の活動を隠すアンチフォレンジック手法を使用します。
機密ファイル 説明
/root/.bash_history 以前に実行されたコマンドが含まれています
/var/log/wtmp ユーザーのログイン関連レコードが含まれています
/var/log/btmp 失敗したログイン試行の記録が含まれています
/var/log/lastlog ユーザーの最近のログイン情報が含まれています
/var/log/セキュア 認証失敗、sudo ログイン、認可権限のログなど、セキュリティに関連する情報が含まれます。
/var/log/boot.log システム起動プロセスを介してログに記録されたシステム起動およびメッセージに関連する情報が含まれます
/var/log/cron cron ジョブの起動、成功および失敗のエラー ログに関連する情報が含まれます
/var/log/dmesg カーネル リング バッファ メッセージ、ハードウェア デバイス、ドライバなどに関連する情報が含まれています。
/var/log/firewalld ファイアウォール アクティビティに関連するログが含まれます
/var/ログ/メールログ システムで実行されているメールサーバーに関連する情報が含まれています
/var/ログ/メッセージ 一般的なシステム アクティビティ メッセージが含まれています
/var/ログ/スプーラー usenet からのメッセージが含まれています
/var/log/syslog 一般的なシステム アクティビティ メッセージが含まれています
/var/log/yum.log yum ユーティリティを介して実行されたインストール削除更新アクティビティに関連するパッケージ ログが含まれます
初期アクセスに使用されるリモート bash スクリプト コマンドのスクリーンショット
図 3. 初期アクセスに使用されるリモート bash スクリプト コマンド

どちらの初期アクセス方法が使用されても、結果は同じです。XorDdos マルウェアである悪意のある ELF ファイルが実行されます。次のセクションでは、XorDdos ペイロードについて詳しく説明します。

最近の調査で確認された他の XorDdos 亜種は、この bash スクリプト インストール方法を使用して、ルートキットをリモートでダウンロードまたは構築します。このインストール方法は、ターゲット デバイスのカーネル ビルドを、攻撃者のコマンド アンド コントロール (C2) サーバーで利用可能なルートキットと一致させることによって差別化されます。

XorDdos 亜種の攻撃チェーン。Linux OS バージョンに一致するルートキットが C2 サーバーに存在するかどうかをマルウェアがチェックし、影響を受けるデバイスにダウンロードしてインストールします。
図 4. XorDdos 亜種の攻撃フロー

ターゲット デバイスを列挙した後、スクリプトは攻撃者の C2 サーバーと通信し、ターゲット デバイスのカーネル ビルドと一致するルートキットがサーバー上に存在するかどうかを確認します。ターゲット デバイスと一致する既存のルートキットが見つかった場合、スクリプトはルートキットをダウンロードします。次の手順では、XorDdos マルウェアとルートキットの照合とダウンロードを開始します。

  1. bash スクリプトは、次の一連のコマンドを使用してターゲット デバイスのカーネル関連情報を取得し、それを攻撃者のサーバーに送信します。
    • 読み込まれた Linux カーネル モジュールのリストを取得するためのtail付きのlsmod
    • Modinfoは、カーネル モジュールがカーネル空間にロードするために使用するカーネル バージョン番号や CPU タイプなどの情報を含む文字列であるvermagic番号を抽出します。 vermagic番号は、リストされているカーネル モジュールから収集されます。
  2. vermagic文字列は、エンコードされた形式で攻撃者のサーバーに送信されます。
ルートキットの vermagic 文字列が表示されるコマンド セクションのスクリーンショット。
図 5. ルートキットに「vermagic」文字列を含む「Modinfo」コマンド セクションのスクリーンショット
  1. カーネル ビルドに固有のルートキット バイナリがサーバー上に存在する場合、XorDdos ELF と共に圧縮された.tarファイルとしてダウンロードされます。
  2. .tarファイルは、 vermagic文字列の MD5 ハッシュをエンコードして取得した文字列にちなんで名付けられた新しいディレクトリでさらに圧縮解除され、ターゲット デバイスの場所/tmpの下に作成されます。 .tarファイルが解凍されると、XorDdos ELF マルウェアは XorDdos ルートキットをインストールします。

ターゲット デバイスのカーネル ビルドが攻撃者のサーバー上のどのルートキットとも一致しない場合、bash スクリプトは次の手順を開始して、ルートキットをリモートでビルドおよびコンパイルします。

  1. bash スクリプトは、アーカイブされた Linux カーネル ヘッダーを/tmpディレクトリに準備します。 Linux カーネル ヘッダーは、C 言語の公開カーネル API とデータ構造を定義して、サード パーティのカーネル モジュールをコンパイルできるようにします。
  2. bash スクリプトは、ELF バイナリ アップローダを/tmpにダウンロードして起動します。このバイナリは、HTTP POSTリクエストを使用して、アーカイブされたカーネル ヘッダーを攻撃者のサーバーにアップロードします。
  3. ELF バイナリは、 /tmpからアップローダ コンポーネントを削除して、XorDdos のフットプリントを最小限に抑えます。
  4. アップロードされたアーカイブされたカーネル ヘッダーは、ルートキット コンポーネントを構築およびコンパイルするために C2 サーバーで使用されます。したがって、新しく構築されたルートキット コンポーネントは C2 サーバーからダウンロードできるようになり、将来の他の感染にも利用できるようになります。
  5. 次に、bash スクリプトは、XorDdos ELF マルウェアをダウンロードしてインストールする一連の手順を開始します。これにより、ルートキットがターゲット デバイスにインストールされます。

XorDdos ペイロード分析

この調査のために分析した XorDdos ペイロードは、削除されていない 32 ビットの ELF ファイルです。つまり、マルウェアの各アクティビティの専用コードを詳述するデバッグ シンボルが含まれていました。デバッグ シンボルを含めると、これらのシンボルを破棄するストリップされたバイナリと比較して、ストリップされていないバイナリのデバッグとリバース エンジニアリングが容易になります。この場合、ストリップされていないバイナリには、ELF ファイルの.strtabセクションの一部として、シンボル テーブル エントリに関連付けられた次のソース コード ファイル名が含まれます。

  • crtstuff.c
  • autorun.c
  • crc32.c
  • 暗号化.c
  • execpacket.c
  • buildnet.c
  • hide.c
  • http.c
  • kill.c
  • main.c
  • proc.c
  • socket.c
  • tcp.c
  • スレッド.c
  • findip.c
  • dns.c

上記のソース コード ファイル名のリストは、バイナリが C/C++ でプログラムされており、そのコードがモジュラーであることを示しています。

検出回避機能

XorDdos には、以下に詳述するように、検出を回避するための特定の機能を備えたモジュールが含まれています。

デーモンプロセス

デーモン プロセスは、ユーザーの制御下ではなくバックグラウンドで実行され、制御端末から切り離され、システムがシャットダウンされたときにのみ終了するプロセスです。一部の Linux マルウェア ファミリと同様に、XorDdos トロイの木馬は、以下に詳述するデーモン プロセスを使用して、プロセス ツリーベースの分析を破ります。

  1. マルウェアは、サブルーチンデーモン (__nochdir、__noclose)を呼び出して、自分自身をバックグラウンド デーモン プロセスとして設定し内部でfork()およびsetsid( ) を呼び出します。 fork() API は、呼び出しプロセスと同じプロセス グループ ID を持つ新しい子プロセスを作成します。
  2. fork() API の呼び出しが成功した後、親は「 EXIT_SUCCESS (0)」を返すことで停止します。目的は、子プロセスがグループ プロセス リーダーではないことを確認することです。これは、 setsid() API 呼び出しが成功するための前提条件です。次に、 setsid()を呼び出して、制御端末から自分自身を切り離します。
  3. デーモン サブルーチンには、最初のパラメーター__nochdirが “0” に等しい値で呼び出された場合、ディレクトリをルート ディレクトリ (” / “) に変更する機能もあります。デーモン プロセスがディレクトリをルート パーティション (「 / 」) に変更する理由の 1 つは、マウントされたファイル システムからプロセスを実行すると、プロセスが停止しない限りアンマウントできないためです。
  4. 2 番目のパラメーター__nocloseを「0」として渡し、標準入力、標準出力、および標準エラーを/dev/nullにリダイレクトします。これは、 /dev/nullのファイル記述子でdup2を呼び出すことによって行われます。
  5. マルウェアは複数のシグナル API を呼び出して、制御端末からの可能性のあるシグナルを無視し、現在のプロセスを標準ストリームから切り離し、端末セッションが切断されたときに HangUp シグナル (SIGHUP) を送信します。この回避的なシグナル抑制を実行すると、標準ライブラリが標準出力または標準エラーに書き込もうとしたり、標準入力から読み込もうとしたりして、マルウェアの子プロセスを停止させようとする影響を防ぐことができます。 API signal()は、シグナル signum の処理をハンドラに設定します。これは、 SIG_IGNSIG_DFL 、またはプログラマ定義のシグナル ハンドラのアドレスです。この場合、2 番目のパラメーターは「SIG_IGN=1」に設定されます。これは、signum に対応するシグナルを無視します。
端末関連の操作に関連付けられたシグナルがどのように無視されるかのスクリーンショット。
図 6. 端末関連の操作に関連するシグナルを無視する

XOR ベースの暗号化

その名前が示すように、XorDdos は XOR ベースの暗号化を使用してデータを難読化します。 dec_conf関数を呼び出して、XOR キー「BB2FA36AAA9541F0」を使用してエンコードされた文字列をデコードします。以下の表は、マルウェアのさまざまなモジュールでアクティビティを実行するために使用される、難読化されたデータのデコードされた値を示しています。

暗号化された文字列 デコード値
m7A4nQ_/nA /usr/bin/
m [(n3 /置き場/
m6_6n3 /tmp/
m4S4nAC/n&ZVx1aA/TB /var/run/gcc.pid
m.[$n__#4%Cx1aB]0 /lib/libudev.so
m.[$n3 /lib/
m4S4nAC/nA /var/run/
!#Ff3VE.-7x17V[_ 猫resolv.conf
<暗号化された_リモート_URL> hxxp://aa.hostasa[.]org/config.rar

プロセス名のなりすまし

プロセスが起動されると、引数は null で終わる文字列としてメイン関数に提供されます。最初の引数は常にプロセス イメージ パスです。プロセス名を偽装するために、XorDdos は実行中にすべての引数バッファーをゼロにし、イメージ パスを含む最初の引数バッファーをcat resolv.confなどの偽のコマンド ラインで上書きします。

引数ベクトルに関連付けられたメモリを変更することにより、プロセス名のスプーフィングがどのように達成されるかを示す図。
図 7. 引数ベクトルに関連付けられたメモリを変更することによって達成されたプロセス名のスプーフィング。
「cat resolv.conf」のエントリを含む「ps -aef」の出力のスクリーンショット。
図 8.「ps -aef」の出力に「cat resolv.conf」のエントリが含まれる

カーネルルートキット

一部の XorDdos サンプルはカーネル ルートキットをインストールしますが、他のサンプルはルートキットを XorDdos バイナリに埋め込みます。 XorDdos バイナリが実行されると、埋め込まれたルートキット コンポーネントがディスクにドロップされます。

ルートキットは、カーネル データ構造を変更することで悪意のあるコードの存在を隠すカーネル モジュールです。 XorDdos カーネル ルートキットには、通常、次の機能があります。

  • root アクセスを提供する
  • カーネルモジュールを隠す
  • マルウェアのプロセスを隠す
  • マルウェアのネットワーク接続とポートを隠す

ルートキットで見つかったデバッグ シンボルに基づくと、XorDdos のルートキット コードは、 SuterusuRootyなどのオープンソース プロジェクトに触発された可能性があります。

XorDdos は、ルートキットを呼び出して自分自身を隠そうとします。ユーザー モード マルウェアは関数getself () を呼び出します。この関数は readlink( )を呼び出して、ディスク上のマルウェア ファイル イメージの場所をフェッチします。

自己複製に使用する XorDdos のコードのスクリーンショット。
図 9. XorDdos が自己複製に使用するコード。

このステップの後、マルウェアはイメージ ファイルの内容を読み取ってメモリ バッファにロードしようとし、プロセスにunhide()リクエストを送信して、ディスク上のイメージを削除します。この手法により、XorDdos は検出を回避したり、悪意のあるフットプリントを最小限に抑えたりすることができます。

XorDdos ルートキットは、ロードされたモジュールのカーネル内リストを解析して、自身と保護対象のマルウェアをリストから削除します。このアプローチにより、 Ismodなどのツールがカーネルで読み込まれたモジュールを一覧表示できなくなります。

ロードされたモジュールをリストし、それ自体と XorDdos マルウェアをリストから削除するルートキットの機能のコード スクリーンショット。
図 10. __this_moduleは、 list_delが非表示にしようとしている現在のモジュールを参照します。

次の表に、ルートキットに含まれるシンボルとそれに対応する機能を示します。

関数名 説明
Give_root 新しい資格情報のセットを設定し、その UID、GID を「0」に割り当てることにより、root 権限を提供します
module_hide ルートキット カーネル モジュールを非表示にします
module_show ルートキット カーネル モジュールを表示します
get_udp_seq_show /proc/net/udpをフックして UDP4 接続を隠します/proc/net/udp6をフックして UDP6 接続を隠します
get_tcp_seq_show /proc/net/tcpをフックして TCP4 接続を隠します/proc/net/tcp6をフックして TCP6 接続を隠します
hide_udp4_port 提供されたポートを非表示の UDP4 ポートのリストに追加します
unhide_udp4_port 非表示の UDP4 ポートのリストから提供されたポートを削除します
hide_udp6_port 提供されたポートを非表示の UDP6 ポートのリストに追加します
unhide_udp6_port 非表示の UDP6 ポートのリストから提供されたポートを削除します
hide_tcp4_port 提供されたポートを非表示の TCP4 ポートのリストに追加します
unhide_tcp4_port 非表示の TCP4 ポートのリストから提供されたポートを削除します
hide_tcp6_port 提供されたポートを非表示の TCP6 ポートのリストに追加します
unhide_tcp6_port 非表示の TCP6 ポートのリストから提供されたポートを削除します
unhide_allz すべての隠しポートのリストを繰り返し、すべてのエントリを削除します
firewall_acceptip 提供された IP アドレスをaccept_ipsリストに追加します
unfirewall_acceptip 指定されたエントリをaccept_ipsリストから削除します
firewall_dropip 指定された IP アドレスをdrop_ipsリストに追加します
unfirewall_dropip 指定された IP アドレスをdrop_ipsリストから削除します
hide_proc 指定されたエントリをhidden_procsリストに追加します
unhide_proc 提供されたエントリをhidden_procsリストから削除します

プロセスとポートの隠蔽

マルウェアは、カーネル ルートキット コンポーネントを使用してプロセスとポートを隠そうとします。プロセスを非表示にすると、マルウェアはルールベースの検出を回避できます。

/procファイルシステムには、実行中のすべてのプロセスに関する情報が含まれています。ユーザー モード プロセスは、システムで実行中の各プロセスのサブディレクトリを含む/procディレクトリを読み取ることで、プロセス固有の情報を取得できます。

  • /proc/7728 – プロセス ID (PID) 7728 関連の情報が含まれています
  • /proc/698 – PID 698 関連の情報が含まれています

strace -e open psコマンドを実行すると、 /proc/$pidでの open 呼び出しのトレースがチェックされ、 psコマンドの一部として実行中のプロセスに関する情報が取得されます。

> strace -e オープン ps
open(“/proc/3922/status”, O_RDONLY) = 6
open(“/proc/4324/stat”, O_RDONLY) = 6
open(“/proc/4324/status”, O_RDONLY) = 6
open(“/proc/5559/stat”, O_RDONLY) = 6
open(“/proc/5559/status”, O_RDONLY) = 6
open(“/proc/5960/stat”, O_RDONLY) = 6
open(“/proc/5960/status”, O_RDONLY) = 6
open(“/proc/5978/stat”, O_RDONLY) = 6
open(“/proc/5978/status”, O_RDONLY) = 6

マルウェアが$pid固有のディレクトリを隠すと、ユーザー モードからの対応するプロセスの取得を隠すことができます。

この場合、マルウェアには、適切なアクションを実行するための追加情報を含む入出力制御 (IOCTL) 呼び出しを送信することで、ルートキット コンポーネント/proc/rs_devと通信するための準備が整っています。 IOCTL は、ユーザー モード サービスとカーネル デバイス ドライバーの間で通信するための 1 つの方法です。マルウェアは、番号「0x9748712」を使用して、システム内の他の IOCTL 呼び出しからその IOCTL 呼び出しを一意に識別します。

この数値とともに、整数配列も渡します。配列の最初のエントリはコマンドに対応し、2 番目のエントリは$pidなどの操作対象の値を格納します。

指示 使用法
0 ルートキット ドライバーが存在するかどうかを確認する
1、2 <PID> を非表示または再表示する
3 <ポート> を隠す

ネットワーク接続を隠す

また、ルートキットはカーネル フックを利用して、 sys_call_table内の元のシステム コール ハンドラを独自のハンドラに置き換えることで、さまざまなカーネル システム コールの通常の呼び出しを妨害します。フック機能により、XorDdos の悪意のあるアクティビティに関連するイベントが除外され、検出が回避されます。

/proc/netインターフェースは、現在アクティブな TCP 接続に関する情報を提供し、カーネル API tcp4_seq_show() および tcp6_seq_show() によって実装されます。

netstat などのユーティリティは、 /proc/net/tcpおよび/proc/net/udpという名前のファイルから TCP/UDP 接続情報を取得します。これらのファイルには、1 行に 1 つのエントリが含まれており、それぞれが送信元ポートと宛先ポート、送信元 IP アドレスと宛先 IP アドレス、およびアクティブな接続に関するその他の関連情報を示しています。

ルートキットは、デフォルトのread()システム コールをフック関数に置き換え、ファイルの読み取りエントリをフィルタリングし、非表示にする予定のポートをスキップして、C2 通信をさらに難読化します。

次の表に、ルートキットが使用するカーネル API とそのフック名を示します。

カーネル API ルートキットによるフック機能 機能説明
tcp4_seq_show() n_tcp4_seq_show() /proc/net/tcp 、TCPv4 接続を隠す
tcp6_seq_show() n_tcp6_seq_show() /proc/net/tcp6 、TCPv6 接続を隠す
udp4_seq_show() n_udp4_seq_show() /proc/net/udp 、UDPv4 接続を非表示にする
Udp6_seq_show() n_udp6_seq_show() /proc/net/udp6 、UDPv4接続を隠す

持続メカニズム

XorDdos は、さまざまな永続化メカニズムを使用して、システムの起動時に自動的に起動するさまざまな Linux ディストリビューションをサポートします。詳細については、以下で説明します。

初期化スクリプト

マルウェアは、場所/etc/init.dinitスクリプトをドロップします。 Initスクリプトは、システムの起動時に任意のプログラムを実行するために使用される起動スクリプトです。 Linux Standard Base (LSB) スタイルのヘッダー セクションに従って、デフォルトのランレベル、説明、および依存関係を含めます。

場所 /etc/init.d/HFLgGwYfSC.elf にドロップされた init スクリプトの内容のスクリーンショット。
図 11. /etc/init.d/HFLgGwYfSC.elfにドロップされた init スクリプトの内容

クロンスクリプト

マルウェアは、 / etc/cron.hourly/gcc.shという場所にcronスクリプトを作成します。このcronスクリプトは、次の内容のパラメーターを渡します。

gcc.sh スクリプトの内容のスクリーンショット。
図 12. gcc.shスクリプトの内容

次に、 /etc/crontabファイルを作成して、3 分ごとに/etc/cron.hourly/gcc.shを実行します。

/etc/crontab ファイルから /etc/cron.hourly/gcc.sh エントリを削除し、新しいエントリを追加するシステム コマンドを示すスクリーンショット。 "system("sed -i '//etc/cron.hourly/gcc.sh/d' /etc/crontab && echo '*/3 * * * * root /etc と表示されます/cron.hourly/gcc.sh' >> /etc/crontab");
図 13. /etc/crontabファイルから/etc/cron.hourly/gcc.shエントリを削除し、新しいエントリを追加するシステム コマンド
読み取りコマンドのスクリーンショット:*/3 * * * * root /etc/cron.hourly/gcc.sh"
図 14. ファイル/etc/crontabの内容

System V ランレベル

ランレベルinitのモードであり、Unix System V-Style オペレーティング システムで動作するシステム サービスを指定するシステムです。ランレベルには、通常は 0 から 6 までの番号が付けられた値が含まれており、それぞれが異なるシステム構成を指定し、プロセスの異なる組み合わせへのアクセスを許可します。一部のシステム管理者は、必要に応じてシステムのデフォルトランレベルを設定したり、ランレベルを使用して、ネットワークが動作しているかどうかなど、動作しているサブシステムを特定したりします。 /etc/rc<run_level>ディレクトリには、元のファイルを指すソフト リンクであるシンボリック リンク ( symlinks ) が含まれています。これらのシンボリック リンクは、指定されたランレベルで実行する必要があるスクリプトを指します。

マルウェアは、場所/etc/init.d/<base_file_name>にドロップされたinitスクリプトのシンボリック リンクを作成し、/ etc/rc<run_level>.d/S90<base_file_name>および/etcランレベル1 ~ 5 に関連付けられたディレクトリを作成します。 /rc.d/rc<run_level>.d/S90<base_file_name>.

/etc/init.d/<base_file_name> を使用した rc.d ディレクトリのシンボリック リンク スクリプトのインストールを示すスクリーンショット。
図 15. /etc/init.d/<base_file_name>を使用したrc.dディレクトリのシンボリック リンク スクリプトのインストール

自動開始サービス

マルウェアはコマンドを実行して、起動時に XorDdos を自動的に実行するスタートアップ サービスをインストールします。マルウェアのLinuxExec_Argv2サブルーチンは、提供された引数を使用してシステム API を実行します。

コマンドchkconfig –add <service_name>およびupdate-rc.dは、起動時にデーモン プロセスを開始するサービスを追加します。

スタートアップ サービスをインストールする chkconfig および update-rc.d コマンドを表示するスクリーンショット
図 16. chkconfigおよびupdate-rc.dコマンドによるスタートアップ サービスのインストール

引数ベースのコードフロー

XorDdos には、プログラムに提供される引数の数に対応する特定のコード パスがあります。この柔軟性により、操作がより堅牢でステルスになります。マルウェアは、最初は引数なしで実行され、その後、PID や偽のコマンドなどのさまざまな引数を使用して別のインスタンスを実行し、クリーンアップ、スプーフィング、永続化などの機能を実行します。

引数ベースの制御を処理する前に、最初のパラメーターを/proc/self/exeとしてreadlink API を呼び出し、完全なプロセス パスをフェッチします。フル パスは、後で自動開始サービス エントリを作成し、ファイルの内容を読み取るために使用されます。

このセクションでは、提供されるさまざまな引数の一部として実行される主なタスクについて説明します。

1: 引数が指定されていない標準コード パス

このコード パスは、マルウェアの標準的なワークフローを示しています。これは、システムの起動場所で作成されたエントリの一部として XorDdos が実行される典型的なワークフローでもあります。

マルウェアは、最初に/usr/bin//bin/ 、または/tmp/の場所から実行されているかどうかを確認します。これらの場所から実行されていない場合は、それらの場所にある 10 文字の文字列名と/lib/および/var/run/を使用して自身を作成およびコピーします。

また、 /lib/libudev.soという場所に自身のコピーを作成します。ハッシュベースの悪意のあるファイル ルックアップを回避するために、次の手順を実行します。この手順では、ファイル ハッシュを変更してすべてのファイルを一意にします。

  • 書き込み専用にファイルを開きます
  • lseek (fd, 0, SEEK_END)を呼び出して、ファイルの最後の位置を指す
  • ランダムな 10 文字の文字列を作成します
  • ヌル バイトを追加して、ファイルの末尾に文字列を書き込みます。

ファイルを変更した後、バイナリを実行し、二重のfork()を実行して、そのファイルをディスクから削除します。

元のマルウェア バイナリが 2 回変更されたことを示す「wiegnexuk」と「yybrdajydg」という 2 つのランダムな文字列を含むマルウェア ファイルの末尾を示すスクリーンショット
図 17. マルウェア ファイルの末尾には、「wieegnexuk」と「yybrdajydg」という 2 つのランダムな文字列が含まれており、元のマルウェア バイナリが 2 回変更されたことを示しています。

2: コード パスのクリーンアップ

このコード パスでは、マルウェアは PID として提供される別の引数を使用して実行されます。次に例を示します。

  • /usr/bin/jwvwvxoupv 4849

上記の例を使用すると、マルウェアは 64 バイト サイズのメモリ セグメントを IPC キー「0xDA718716」と共有して、引数として提供された別のマルウェア プロセスをチェックします。見つからない場合は、引数なしで独自のバイナリを実行し、 fork() API を 2 回呼び出して、孫プロセスに親プロセスがないことを確認します。その結果、孫プロセスがinitプロセスによって採用され、プロセス ツリーから孫プロセスが切り離され、アンチ フォレンジック手法として機能します。

さらに、提供された$pidで次のタスクを実行します。

  • 指定された$pidに対応するプロセス ファイル名を取得します
  • 指定された$pidのファイルを削除します
  • インストールされているinitサービスを削除します。
    • /etc/init.d/<file_name> を削除します
    • ランレベル1 ~ 5 の場合、 /etc/rc<runlevel>.d/S90<file_name>をリンク解除して削除します
    • コマンドchkconfig –del <file_name>を実行します
    • コマンドupdate-rc.d <file_name> remove を実行します
  • 引数として渡されたプロセスを終了します。

3: プロセス名スプーフィング コード パス

マルウェアは、追加の 2 つの引数 (偽のコマンド ラインとその PID) を使用して、ドロップされた新しいバイナリを生成します。次に例を示します。

  • /usr/bin/jwvwvxoupv “cat resolv.conf” 4849
  • /usr/bin/jwvwvxoupv gnome ターミナル 4849
  • /usr/bin/jwvwvxoupv トップ 4849
  • /usr/bin/jwvwvxoupv pwd 4849
  • /usr/bin/kagbjahdic ID 4849

偽のコマンドには次のものがあります。

  • 猫resolv.conf
  • netstat -an
  • バッシュ
  • 私は誰
  • ID
  • CD/etc
  • ifconfig eth0
  • ifconfig
  • エコー「検索」
  • 稼働時間
  • GNOME ターミナル
  • netstat-antop
  • grep「A」
  • ls-la
  • pwd
  • ルート-n
  • ps-ef
  • ls
  • 睡眠 1

このコード パスでは、マルウェアはプロセス名のスプーフィングを使用して、実行時に偽のコマンド ラインを変更することでプロセス ツリーから隠れます。次に、コマンド「1」でHidePidPortを呼び出してプロセスを非表示にし、現在のプロセスに関連するディスク上のファイルの内容を読み取ります。

次に、5 秒間のループに入り、次のチェックを実行します。

  • /proc/$pid/exereadlink API を呼び出して、3 番目の引数の一部として提供された$pidに固有のファイル名を取得します。
  • readlink呼び出しが失敗した場合は、ディスク上のファイルが存在しないことを示している可能性があります。この場合、次のようになります。
    • $pidのすべてのサービス関連エントリを削除しようとしますが、失敗します。これは、正常な readlink API 呼び出しによってバッファーが満たされるはずのときに、ゼロ化されたバッファーがサービス名として渡されることを可能にするコードの欠陥によるものと思われます。
    • 標準のコード パス シナリオと同様のディレクトリを作成します。
    • ファイル/lib/libudev.sostat API を呼び出します。 stat API がゼロ以外の値を返す場合、以前に取得した現在のプロセスのイメージ ファイルの内容を、次の場所にランダムな名前でコピーしようとします。
      • /usr/bin/
      • /置き場/
      • /tmp/
    • /lib/libudev.sostat API 呼び出しが成功した場合、 /lib/libudev.soファイルを上記と同じ 3 つのディレクトリにコピーします。
    • 書き込まれたファイルまたはコピーされたファイルのハッシュを変更し、パラメーターを渡さずに実行します。
  • readlink呼び出しが成功し、コピーされたバイト数が返された場合、1 秒間スリープし、残りの 5 秒間ループします。
  • 現在のプロセスと、3 番目の引数の一部として提供された$pidを再表示します。
  • 現在のプロセスのディスク上のファイルを削除します。

4: 引数が指定されていない既知の場所のコード パス

このコード パスは標準のコード パスに似ていますが、主な違いはマルウェアが次のいずれかの場所から実行されることです。

  • /usr/bin/
  • /置き場/
  • /tmp/

これらの場所のいずれかから実行されると、マルウェアは次の関数を呼び出してさまざまなタスクを実行します。

  1. インストールSYS – この関数は、ランダムな名前を使用して/usr/binフォルダーの下にルートキットを抽出し、カーネルにロードすることで、ルートキットをセットアップします。
XorDdos ルートキットが /usr/bin フォルダーに抽出するランダムな名前のファイルのスクリーンショット。
図 18. /usr/binにドロップされたランダムな文字列名のファイル

XOR ベースの暗号化セクションで説明したように、エンコードされた文字列m7A4nQ_/nAは、マルチバイト キー 0x BB2FA36AAA9541F0でデコードされると、フォルダー パス/usr/binに変換されます。 /usr/binフォルダー パスは、ルートキットがドロップされる場所です。

ドロップされたルートキットは、 insmodコマンドを使用して Linux カーネル モジュールにさらに挿入されます。これに続いて、ドロップされたルートキットがディスクから削除されます。

関数を呼び出して XorDdos ルートキットを Linux カーネルにドロップする insmod コマンドのスクリーンショット。
図 19. 強調表示された insmod コマンドが関数を呼び出してルートキットを Linux カーネル モジュールにドロップする XorDdos バイナリ コードのスクリーンショット。

XorDdos は/proc/rs_devキャラクター デバイスを使用してルートキットと通信します。これは、 CheckLKM()関数を呼び出して、ルートキットがインストール要件を満たしているかどうかを確認します。たとえば、カーネル ヘッダーが正確に一致し、ルートキットのインストールをブロックする可能性のあるテクノロジが存在しないかどうか (セキュア ブートや強制的な署名付きローダブル カーネル モジュール (LKM) の読み込みなど) です。

XorDdos バイナリが /proc/rs_dev デバイス ハンドルを使用してルートキットにアクセスするコードのスクリーンショット。
図 20. デバイス ハンドル/proc/rs_devを使用して、XorDdos マルウェアがルートキットにアクセスできるようになる。

XorDdos は/proc/rs_devを開こうとします。 Linux カーネル モジュール インターフェイスが起動している場合、XorDdos は一意の識別子 0x9748712 と引数「0」を含む IOCTL 要求を送信して、XorDdos バイナリとそのルートキット間の双方向通信を開始します。

  1. AddService – システムの起動時にマルウェアが実行されるように、前述の永続的な自動起動エントリを作成します。
  2. HidePidPort – マルウェアのポートとプロセスを隠します。
  3. CheckLKM – ルートキット デバイスがアクティブかどうかをチェックし、ルートキットがインストール要件 (カーネル ヘッダーが正確に一致すること、セキュア ブートがないこと、ルートキットのインストールをブロックする可能性のあるその他のテクノロジなど) を満たしているかどうかを確認します。番号「0x9748712」とコマンド「0」を使用した同様の IOCTL 呼び出しを使用して、ルートキットがアクティブかどうかを検出します。ルートキットがアクティブな場合、所有者の値「0xAD1473B8」とグループの値「0xAD1473B8」を使用して、関数lchown(<filename>, 0xAD1473B8, 0xAD1473B8)でドロップされたファイルの所有権を変更します。
  4. 復号化_リモート文字列 – 同じ XOR キー「BB2FA36AAA9541F0」を使用してリモート URL をデコードし、 config.rarおよびその他のディレクトリをデコードします。 URL をデコードした後、それらをリモート リストに追加します。このリストは、コマンド アンド コントロール (C2) サーバーからのコマンドの通信とフェッチに後で使用されます。
    • www[.]enoan2107[.]com:3306
    • www[.]gzcfr5axf6[.]com:3306

悪意のあるアクティビティ スレッド

永続的なエントリを作成し、その活動の証拠を削除し、 config.rarをデコードした後、マルウェアは巡回冗長検査 (CRC) テーブルを初期化し、続いてsem_init API を使用して名前のないセマフォを初期化します。このセマフォはpshared値を「0」設定して初期化され、結果のセマフォがすべてのスレッド間で共有されます。セマフォは、 kill_cfgデータなどの共有オブジェクトにアクセスするスレッド間の並行性を維持するために使用されます。

その後、マルウェアは 3 つのスレッドを初期化して、プロセスの停止、TCP 接続の作成、 kill_cfgデータの取得などの悪意のあるアクティビティを実行します。

セマフォと悪意のあるスレッドの初期化を示すスクリーンショット
図 21. セマフォと悪意のあるスレッドの初期化

kill_process

kill_processスレッドは、次のタスクを実行します。

  • 暗号化された文字列をデコードします
  • /var/run/gcc.pidのファイル統計をフェッチするか、存在しない場合はファイルを作成します
  • /lib/libudev.soのファイル統計を取得するか、存在しない場合はディレクトリ/libを作成し、/lib/ libudev.soの場所に自身のコピーを作成します
  • 現在のプロセスに関連付けられているディスク上のファイル情報を取得します。失敗した場合、ループを終了し、現在のプロセスを停止します
  • kill_cfgからコンテンツを読み取り、次のような構成ファイル内の一致する指定されたキーに基づいて、プロセスの停止やファイルの削除などの対応するアクションを実行します。
    • md5=
    • ファイル名=
    • rmfile=
    • denyip=

tcp_thread

tcp_threadは、 decrypt_remotestr()を使用して以前にデコードされた C2 サーバーとの接続をトリガーします。次のタスクを実行します。

  • ファイル/var/run/gcc.pidの内容を読み取り、C2 サーバーとの接続中にデバイスを識別する一意の 32 バイトのマジック ストリングを取得します。ファイルが存在しない場合は、ファイルを作成し、ランダムな 32 バイト文字列で更新します。
  • マジック ストリング、OS リリース バージョン、マルウェア バージョン、ルートキットの存在、メモリ統計、CPU 情報、LAN 速度などのデバイスの詳細を含む CRC ヘッダーを計算します。
  • データを暗号化し、C2 サーバーに送信します。
  • C2 サーバーから次のコマンドのいずれかを受信するまで待機し、 exec_packetサブルーチンを使用してコマンドを処理します。
指示 仕事
2 止まる
3 DDoS 攻撃を開始するためのスレッド プールを作成する
6 ダウンロードファイル
7 ファイルを更新する
8 システム情報を C2 サーバーに送信する
9 プロセスを停止するための構成ファイルを取得する
システム情報を収集するためのコードを表示するスクリーンショット。
図 22. システム情報の収集

daemon_get_killed_process

daemon_get_killed_processスレッドは、以前にデコードされたリモート URL (hxxp://aa[.]hostasa[.]org/config[.]rar) からkill_cfgデータをダウンロードし、前述と同じ XOR キーを使用して復号化します。その後、30 分間スリープします。

リモート URL から kill_cfg データをフェッチしてデコードする daemon_get_killed_process スレッド関数のコードを表示するスクリーンショット。
図 23. リモート URL からkill_cfgデータをフェッチしてデコードするdaemon_get_killed_processスレッド関数

DDoS 攻撃のスレッド プール

マルウェアは、 sysconf(_SC_NPROCESSORS_CONF)を呼び出して、デバイス内のプロセッサの数を取得します。次に、デバイスで見つかったプロセッサの数の 2 倍のスレッドを作成します。

各スレッドを呼び出すと、スレッド ルーチンthreadworkが内部的に呼び出されます。グローバル変数「 g_stop 」と C2 サーバーから受信したコマンドを使用して、スレッドワークは細工されたパケットを 65,535 回送信し、DDoS 攻撃を実行します。

指示 関数 仕事
0x4 fix_syn SYN フラッド攻撃
0x5 fix_dns DNS 攻撃
0xA fix_ack ACK フラッド攻撃

Linux プラットフォームの脅威に対する防御

XorDdos のモジュール性により、攻撃者は、さまざまな Linux システム アーキテクチャに感染できる汎用性の高いトロイの木馬を手に入れることができます。その SSH ブルート フォース攻撃は、多数の潜在的なターゲットに対してルート アクセス権を取得するための、比較的単純ですが効果的な手法です。

XorDdos は、機密データの窃盗、ルートキット デバイスのインストール、さまざまな回避および持続メカニズムの使用、DDoS 攻撃の実行に長けており、敵対者がターゲット システムに潜在的に重大な混乱を引き起こすことを可能にします。さらに、XorDdos は、他の危険な脅威を持ち込んだり、後続の活動のベクトルを提供したりするために使用される可能性があります。

Linux デバイスを標的とする XorDdos やその他の脅威は、Linux オペレーティング システムの多数のディストリビューションにまたがる包括的な機能と完全な可視性を備えたセキュリティ ソリューションの重要性を強調しています。 Microsoft Defender for Endpointは、 次世代のマルウェア対策エンドポイントの検出と応答 (EDR)機能を使用して、これらの新たな脅威をキャッチするための可視性と保護を提供します。 Microsoft Defender for Endpoint は、クライアントとクラウドのヒューリスティック、機械学習モデル、メモリ スキャン、動作監視など、統合された脅威データからの脅威インテリジェンスを活用して、XorDdos とその多段階のモジュール型攻撃を検出して修復できます。これには、初期アクセスのための悪意のあるシェル スクリプトの使用、誰でも書き込み可能な場所からのバイナリのドロップ アンド 実行、およびエンドポイントでの潜在的な後続アクティビティの検出と保護が含まれます。

防御側は、次の緩和策を適用して、この脅威の影響を軽減できます。

  • Microsoft Edge (Linux およびさまざまなプラットフォームで利用可能)、またはMicrosoft Defender SmartScreenをサポートするその他の Web ブラウザーの使用を奨励します。これは、フィッシング サイト、詐欺サイト、エクスプロイトを含み、マルウェアをホストするサイトなど、悪意のある Web サイトを識別してブロックします。
  • デバイス検出を使用して、ネットワーク上の管理されていない Linux デバイスを見つけ、Microsoft Defender for Endpoint にオンボードします。
  • Microsoft Defender ウイルス対策またはウイルス対策製品の同等のクラウド配信保護を有効にして、新しい未知の亜種の大部分をブロックできるクラウドベースの機械学習保護を使用します。
  • Microsoft 以外のウイルス対策が脅威を検出しない場合や、Microsoft Defender ウイルス対策がパッシブ モードで実行されている場合でも、Microsoft Defender for Endpoint が悪意のあるアーティファクトをブロックできるように、ブロック モードで EDR を実行します。
  • ネットワーク保護を有効にして、アプリケーションやユーザーがインターネット上の悪意のあるドメインやその他の悪意のあるコンテンツにアクセスするのを防ぎます。
  • 完全に自動化されたモードで調査と修復を有効にして、Microsoft Defender for Endpoint がアラートに対して即座にアクションを実行して違反を解決し、アラートの量を大幅に削減できるようにします。

すべてのプラットフォームにわたる脅威の数と巧妙さが増し続けているため、セキュリティ ソリューションは、使用しているオペレーティング システムに関係なく、幅広いデバイスに対して高度な保護を提供できる必要があります。組織はデバイス全体のさまざまなエントリ ポイントからの脅威に直面し続けるため、Microsoft はすべての主要なプラットフォームを保護し、組織がネットワークとシステムを保護するために必要な広範な機能を提供するために多額の投資を続けています。

検出の詳細

Microsoft Defender for Endpoint は、XorDdos のインストーラー スクリプトとルートキット バイナリを次のマルウェアとして検出し、ブロックします。

  • DoS:Linux/Xorddos.A
  • DoS:Linux/Xorddos!rfn
  • トロイの木馬:Linux/Xorddos
  • トロイの木馬:Linux/Xorddos.AA
  • トロイの木馬:Linux/Xorddos!rfn
  • 動作:Linux/Xorddos.A
  • バックドア:Linux/XorDDoSRootkit.A
  • Trojan:SH/XorDDoSinstaller.A

デバイスで XorDdos が検出されると、Microsoft 365 Defender はアラートを生成し、プロセス ツリー、ファイル情報、ユーザー情報、防止の詳細を含む完全な攻撃チェーンを示します。

環境で XorDdos マルウェアが検出されたときの Microsoft 365 Defender アラートのスクリーンショット。
図 24. XorDdos マルウェアの検出に関する Microsoft 365 Defender アラート

タイムライン ビューには、XorDdos に関連するすべての検出および防止イベントが表示され、MITRE ATT&CK の手法と戦術、修復ステータス、イベント エンティティ グラフなどの詳細が提供されます。

悪意のある .elf ファイルが実行された場所と、ドロップされたバイナリのその後の修復を示す Microsoft 365 Defender タイムラインのスクリーンショット。
図 25. Microsoft 365 Defender のタイムラインで、 HFLgGwYfSC.elfが誰でも書き込み可能なディレクトリから実行されたことと、ドロップされたバイナリの修復が表示されます

次のタイトルのイベントは、XorDdos に関連する脅威活動を示しています。

  • libudev.so の内容を libudev.so.6 にまとめました。
  • bash プロセスは、ifconfig を呼び出してシステム情報検出を実行しました
  • HFLgGwYfSC.elf によってドロップされた後に gcc.sh が実行された
  • crond によってシェル コマンドが実行されました
  • SUID/SGID プロセス unix_chkpwd が実行されました
crond によって実行された疑わしいシェル コマンドが悪意のある .elf からドロップされたアラートを示す Microsoft 365 Defender タイムラインのスクリーンショット。
図 26. HFLgGwYfSC.elfから削除された後、 crondによって実行された疑わしいシェル コマンドに関するイベントを含む Microsoft 365 Defender タイムライン

ハンティング クエリ

XorDdos アクティビティに関連する悪意のあるアクティビティを見つけるには、Microsoft 365 Defender または Microsoft Defender セキュリティ センターで次の高度な検索クエリを実行します。

サインインの失敗

DeviceLogonEvents
| |どこで InitiatingProcessFileName == "sshd"
    および ActionType == "LogonFailed"
| | count() by dayOfYear = datetime_part("dayOfYear", Timestamp) を要約します。
| | dayOfYear で並べ替え 
| |折れ線グラフをレンダリングする

XorDdos 固有のドロップされたファイルの作成

DeviceFileEvents
| | extends FullPath=strcat(FolderPath, FileName)
| |フルパス ("/etc/cron.hourly/gcc.sh", "/lib/libudev.so.6", "/lib/libudev.so", "/var/run/gcc.pid")

悪意のあるプロセスのコマンドライン

DeviceProcessEvents
| |ここで、ProcessCommandLine には「cat resolv.conf」が含まれています

指標

ファイル情報

ファイル名: HFLgGwYfSC.elf
ファイルサイズ: 611.22KB(625889バイト)
分類: DoS:Linux/Xorddos.A
MD5: 2DC6225A9D104A950FB33A74DA262B93
社1: F05194FB2B3978611B99CFBF5E5F1DD44CD5E04B
Sha256: F2DF54EB827F3C733D481EBB167A5BC77C5AE39A6BDA7F340BB23B24DC9A4432
ファイルの種類: ELF 32 ビット LSB 実行可能ファイル、Intel 80386、バージョン 1 (SYSV)、静的にリンク、GNU/Linux 2.6.9 用、削除されていない
VT での最初の提出: 2022-01-25 05:32:10 UTC

ドロップされたファイル

ドロップされたファイル パス ファイルの種類 SHA-256
/etc/init.d/HFLgGwYfSC.elf シェルスクリプト 6E506F32C6FB7B5D342D1382989AB191C6F21C2D311251D8F623814F468952CF
/etc/cron.hourly/gcc.sh シェルスクリプト CBB72E542E8F19240130FC9381C2351730D437D42926C6E68E056907C8456459
/lib/libudev.so 妖精 F2DF54EB827F3C733D481EBB167A5BC77C5AE39A6BDA7F340BB23B24DC9A4432
/run/gcc.pid 文章 932FEEF3AB6FCCB3502F900619B1F87E1CB44A7ADAB48F2C927ECDD67FF6830A
/usr/bin/djtctpzfdq 妖精 53F062A93CF19AEAA2F8481B32118A31B658A126624ABB8A7D82237884F0A394
/usr/bin/dmpyuitfoq 妖精 798577202477C0C233D4AF51C4D8FB2F574DDB3C9D1D90325D359A84CB1BD51C
/usr/bin/fdinprytpq 妖精 2B4500987D50A24BA5C118F506F2507362D6B5C63C80B1984B4AE86641779FF3
/usr/bin/jwvwvxoupv 妖精 359C41DA1CBAE573D2C99F7DA9EEB03DF135F018F6C660B4E44FBD2B4DDECD39
/usr/bin/kagbjahdic 妖精 E6C7EEE304DFC29B19012EF6D31848C0B5BB07362691E4E9633C8581F1C2D65B
/usr/bin/kkldnszwvq 妖精 EF0A4C12D98DC0AD4DB86AADD641389C7219F57F15642ED35B4443DAF3FF8C1E
/usr/bin/kndmhuqmah 妖精 B5FBA27A8E457C1AB6573C378171F057D151DC615D6A8D339195716FA9AC277A
/usr/bin/qkxqoelrfa 妖精 D71EA3B98286D39A711B626F687F0D3FC852C3E3A05DE3F51450FB8F7BD2B0D7
/usr/bin/sykhrxsazz 妖精 9D6F115F31EE71089CC85B18852974E349C68FAD3276145DAFD0076951F32489
/usr/bin/tcnszvmpqn 妖精 360A6258DD66A3BA595A93896D9B55D22406D02E5C02100E5A18382C54E7D5CD
/usr/bin/zalkpggsgh 妖精 DC2B1CEE161EBE90BE68561755D99E66F454AD80B27CEBE3D4773518AC45CBB7
/usr/bin/zvcarxfquk 妖精 175667933088FBEBCB62C8450993422CCC876495299173C646779A9E67501FF4
/tmp/bin/3200 ELF (ルートキット) C8F761D3EF7CD16EBE41042A0DAF901C2FDFFCE96C8E9E1FA0D422C6E31332EA
インストーラー スクリプト バッシュスクリプト 8be8c950d8701ef1149c547ea3f949ea78394787ad1e19fc0eaa7bd7aeb863c2
/usr/bin/djtctpzfdq 妖精 53f062a93cf19aeaa2f8481b32118a31b658a126624abb8a7d82237884f0a394
/usr/bin/jwvwvxoupv 妖精 359c41da1cbae573d2c99f7da9eeb03df135f018f6c660b4e44fbd2b4ddecd39
/usr/bin/kkldnszwvq 妖精 ef0a4c12d98dc0ad4db86aadd641389c7219f57f15642ed35b4443daf3ff8c1e
/usr/bin/zvcarxfqul ELF (ルートキット) 483451dcda78a381cc73474711bf3fcae97bd088f67b5a7e92639df52ef5ef25
/usr/bin/zvzvmpqnv ELF (ルートキット) c8f761d3ef7cd16ebe41042a0daf901c2fdffce96c8e9e1fa0d422c6e31332ea

ダウンロード URL

  • www[.]enoan2107[.]com:3306
  • www[.]gzcfr5axf6[.]com:3306
  • hxxp://aa[.]hostasa[.]org/config.rar

Ratnesh PandeyYevgeny KulakovJonathan Bar Or
サウラブ・スワループ
Microsoft 365 Defender 研究チーム

参照: https://www.microsoft.com/en-us/security/blog/2022/05/19/rise-in-xorddos-a-deeper-look-at-the-stealthy-ddos-malware-targeting- Linux デバイス/

Comments

タイトルとURLをコピーしました