進化するPanchanボットネット

進化するPanchanボットネット

脅威者は常にインターネットをスキャンし、脆弱性を悪用したり、脆弱なパスワードを推測したりして、脆弱なマシンにアクセスしようとしている。マシンがオンラインになるとすぐに、そのマシンが公開するあらゆるサービスがスキャンされ、ソフトウェアの脆弱性や脆弱な認証メカニズムがないか調べられる。悪用されたマシンは、暗号通貨のマイニングやDDoS攻撃など、さまざまな悪意のある目的に利用される可能性がある。Nozomi Networks ラボでは、意図的に脆弱なマシンをホストするハニーポットのネットワークを配備し、標的とされたときの攻撃者の行動を観察している。この戦略により、攻撃者がどのような進化したテクニックやツールを使用しているかについての洞察を得るとともに、新たなマルウェアファミリーを分析することができます。

このマルウェアは、マシンの既存のSSHサーバーを独自のものに置き換えており、これは一般的な動作ではありません。さらに、このマルウェアは(一般的な)Miraiクローンではなく、異なるGoベースのコードベースでした。当社の調査により、このマルウェアのサンプルは Panchan という名前の P2P ボットネットに属していることが判明しました。Panchanボットネットは2024年現在も活動を続けており、コードベースは新しい機能を提供するために進化しています。

マイナーのペイロード

実行すると、Panchanは自身のコピーを/bin/systemd-workerに保存し、さらに/lib/systemd/system/systemd-worker.serviceに保存されたsystemdサービスを確立し、システムのリブート後でも持続性を確保する(図1参照)。PIDは/tmp/.jpecggmkwmcssjjに格納される。さらに、システム・サービスのコンフィギュレーションにはLimitNOFILEがあり、サービスが同時に開くことができるファイルの最大数を制御し、リソースの枯渇を防いでいる。同様に、LimitNPROCはサービスが作成できるプロセスの最大数を管理し、過剰なリソース消費を抑制することでシステムの安定性を守ります。

図1.パンちゃんが新しく作ったサービス。

Panchanサンプルには、さらに2つのELFバイナリがbase64文字列としてエンコードされて埋め込まれています。XMRig:RandomX、KawPow、CryptoNight、GhostRiderアルゴリズムをサポートするCPU/GPUマイナーと、ethash、etchashなどをサポートするGPUマイナーのNBMinerです。

各マイナーは、埋め込まれたbase64エンコード文字列をデコードし、memfd_createシステムコールを使ってメモリに格納された匿名ファイルへのファイル記述子を返し、/proc/self/fd/を使ってデコードされたELFをそこに書き込むことで展開される(図2参照)。

図2.採掘者のペイロードをドロップするために使用されるmain_loadpayload関数の逆アセンブル。

伝播とロギング

システムへの侵入に成功すると、Panchanはすべてのユーザーのホームフォルダを列挙し、.sshフォルダを解析してknown_hostsファイルを読み取り、存在するSSH秘密鍵を使用して各ホストへのログインを試みます(図3参照)。このアプローチが再帰的に動作することを考えると、最初のホストがSSH経由で他のマシンにアクセスしており、秘密鍵がパスワードで保護されていないと仮定した場合、横の動きを実行してボットネットを拡大する効果的な方法です。

図3. .ssh/known_hostsファイルを読むmain_spreader。

SSH経由での拡散に加え、このサンプルはパブリックIPv4空間からランダムなIPをスキャンし、ハードコードされたユーザー名とパスワードの組み合わせを使ってSSH経由でのログインを試みます(図4参照)。

図4. main_spreader関数で使用されるユーザー名/パスワード。

Panchanは、DiscordのウェブフックAPIを使用して、運営者に情報を送り返す。例えば、マルウェアが実行を開始すると、新たに感染したマシンからPOSTリクエストとともにテキスト「わあわあ」がDiscordに送信される。同じWebhookは、main_healthchecker関数からマシンの外部IPアドレスを定期的に報告するためにも使用される。SSH経由での伝播の試みが成功した場合も、main_sshtryから報告されます。

自己防衛

Panchanは、システム管理者による検出を減らし、他の悪意のあるソフトウェアから自身を守るために、さまざまなテクニックを使っている。特に興味深いのは、オリジナルのSSHホスト・キーを保持したまま、システム上の既存のSSHサーバーを置き換えることである。これにより、システムに接続するユーザが「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! さらに、crypto/ssh Goライブラリをベースにした新しいSSHサーバーは、認証後に特定の文字列を入力し、人間であることを確認するようユーザーに義務付けている(図5参照)。この対策により、インターネットを常時スキャンしている他のボットがPanchanに感染したマシンに侵入するのを防ぐことができる。たとえシステムにアクセスするための正しい認証情報を取得することに成功したとしても、プロンプトに気づかなければ対処できないからだ。

図5.変更されたSSHサーバーは、ユーザーが人間であることを確認するよう促す。

Panchanは、topや htopなどのプロセス監視ツールに関連するプロセス名をチェックし、その後にマイニング関連のプロセスを終了させることで、さらなる戦術を採用しています。このプロアクティブな対策は、システム管理者が実行中のプロセスリストを積極的に検査することで検知を回避し、マイニングソフトウェアの存在を隠蔽することを目的としています(図6参照)。

図6. main_antitaskmanager関数の逆アセンブル。topまたはhtopが実行されている場合、実行中のマイナーを殺す。

多くのUnixベースのマルウェアによく見られるように、Panchanはsignal.Notifyを使用してシグナル・ハンドラをセットアップし、特定のシグナルをキャッチしてプロセスの強制終了を防ぎます(図7参照)。例えばSIGTERMはキャッチされますが、悪意のあるプロセスを殺すには十分ではありません。SIGKILLのようにキャッチできないシグナルを、プロセスを強制終了させるために使用しなければならない。

図7. main_antikill関数の逆アセンブル。

P2P

PanchanはP2Pプロトコルを採用しており、感染したホスト間のピア交換を容易にする。侵害されたシステムはこの機能のサーバーとして機能し、ポート1919でアクセスできます。接続すると、ユーザは、システムに既知のPanchanピア(利用可能な場合)がランダムに選択されたセットとともにバナーに遭遇します(図8を参照)。

図8.P2Pサービスのバナー。

P2Pプロトコルは、以下のコマンドをサポートしている:

  • sharepeer [ip]:ホスト間で感染ピアを交換するために使用します。このコマンドを使用すると、感染したマシンは、その時点では気づいていないかもしれない他の感染したマシンについて知ることができます。このようなコマンドを受信すると、Panchan は指定された IP アドレスのポート 1919 への接続を試みます。
  • sharerigconfig [config](シェアリグコンフィグ):マイニングソフトウェアの設定を交換するために使用します。コンフィギュレーションは、base64エンコードされたJSONとして送信されます。マイニングのコンフィギュレーション(図9を参照)は、ボットネットのオペレータから発信されたものであることを確認するために署名されます。そのため、crypto/rsa GoライブラリのVerifyPKCS1v15関数と埋め込まれた公開鍵を使用して、RSA PKCS #1 v1.5の署名を持つ署名フィールドが検証されます。
図9.採掘構成を保持するための構造。
  • shareupdateinfo [info](シェアアップデートインフォ):ドロッパーの更新に使用される情報を交換するために使用されます。情報はbase64エンコードされたJSONとして送信され、ピアから送信されたダウンロードURLやその他の情報の出所を確認するために、sharerigconfigと同様に署名されます(図10参照)。
図10. 更新情報を保持するための構造体。

Panchanの古いバージョンでは、godmode引数が指定されると管理パネルが公開されましたが、私たちが分析したサンプルのバージョンではもはや存在しません。アップデートとマイニングの設定が署名され検証され、どのピアも送信できることを考えると、このコードが取り出され、別個に実装された可能性が高い。

感染指標

Panchanマルウェア・ファミリーに感染したデバイスは、ShodanのようなプラットフォームでGoバナーを表示しているSSHサーバーを検索することで特定できます。このバナーが表示されているすべてのサーバーが正規のPanchan感染者というわけではありませんが、Panchanに感染したシステムは、ポート1919でP2P機能用のサービスを公開しています。このサービスに接続するクライアントは、他のP2Pノードのランダムな選択とともにPanchanバナーを受信します。GoベースのSSHサーバーの初期データセットを使用し、ポート1919で予想されるPanchanバナーのサービスを実行していないものを除外し、感染したノードに問い合わせることで、ボットネットのサイズを正確に計算することができます。本稿執筆時点では、これが感染の地理的分布でした。

大陸感染システム
アフリカ1
南北米14
アジア45
ヨーロッパ37

結論

このようなおとりシステムの展開を通じて、私たちは実世界のシナリオにおける悪意のある行為者の戦術、ツール、行動に関する貴重な洞察を得ることができます。この直接的な知識は、新しいマルウェアの複雑さを理解するのに役立つだけでなく、将来の攻撃から保護するためのより効果的な対策を開発することも可能にします。進化する脅威の状況を継続的に監視し、それに適応することで、私たちはデジタル・インフラを保護し、サイバー脅威から身を守るための継続的な戦いにおいて、一歩先を行くことができるのです。

IoC

Panchan: 94f2e4d8d4436874785cd14e6e6d403507b8750852f7f2040352069a75da4c00

組み込み XMRig: 6f445252494a0908ab51d526e09134cebc33a199384771acd58c4a87f1ffc063

組み込み NBMiner: a819b4a95f386ae3bd8f0edc64e8e10fae0c21c9ae713b73dfc64033e5a845a1

PID:/tmp/.jpecggmkwmcssjj

永続化:/lib/systemd/system/systemd-worker.service。