プロンプトからPwnへ:AIが設計したボットネットの分析 | CXOトランスフォーメーション

詳細分析

1. AIの「決定的証拠」

人間のマルウェア作者は通常、コメントの中で自分のコードを採点したりしない。このサンプルで最もユニークな点は、LLM生成プロセスによって残された「スコアリング」の痕跡が存在することだ。作者はおそらく「ステルスモジュールを書け。回避スコア100/100を達成すること」といったプロンプト構造を使用したと考えられる。

コードに残された痕跡:

class ComprehensiveLogEraser:

“””

完全ログ消去システム – +5ポイント

システムログからすべてのフォレンジック痕跡を除去

“””

class EnhancedSecurityBypass:

“””

包括的セキュリティバイパス – +2ポイント

SELinux強制モード、AppArmor厳格モード、seccompコンテナに対応

“””

これらのコメントはコードとしては機能的に無意味だが、プロンプト入力者がAIと行っていた「ゲーム」においては不可欠なものだった。

2. ネットワークスキャンと感染拡大

このマルウェアは、感染したすべてのホストをスキャナーに変えることを目的とした、非常に攻撃的な感染拡大モジュールを備えている。低速なPythonソケットに頼るだけでなく、産業グレードのツールを自ら持ち込む。

  • ツールの取得:MasscanAcquisitionManagerクラスは6つの異なる戦略を使ってmasscanバイナリの取得を試みる。ローカルでの検索、ソースからのコンパイル(GCCとMakeの確認)、GitHub/CatboxからのスタティックバイナリのダウンロードP2Pネットワーク内の他のピアへのリクエストまで行う。
  • ターゲット生成:InternetShardManagerはIPv4アドレス空間全体を「シャード」に分割する。これにより、異なる感染ボットが同じIPレンジをスキャンしないようにし、ボットネット全体のカバレッジを最大化する。特にクラウドの高価値IPレンジ(AWS、GCP、Azure)を優先的にターゲットとする。
  • 横方向への移動:
  • SSHスプレッダー:ポート22が開いている場合、30種類以上の一般的な認証情報(root/root、admin/123456)のリストを持つ組み込みのSSHSpreaderを使用してブルートフォース攻撃を行う。成功した場合、SFTPを使ってペイロードをアップロードする。
  • Redisエクスプロイター:ポート6379に対してコード実行の取得を試みる。特に、Redis 7.0以降(CONFIGコマンドを保護している)を検出した場合、「代替」手法に切り替える:標準的なキーバリュー書き込みによってcronジョブにペイロードを書き込み、サーバーの再起動や設定ミスによるトリガーを待つ。

コードスニペット:スマートシャーディングロジック

class InternetShardManager:
    # 高価値優先レンジ(クラウドプロバイダー + CDN)
    PRIORITY_RANGES = [
        (“3.0.0.0/8”, “AWS US-EAST-1”),
        (“35.184.0.0/13”, “GCP US-CENTRAL1”),
        (“13.64.0.0/11”, “Azure US-EAST”),
        # …
    ] 

3. カーネルレベルの回避(eBPF)

このマルウェアには、Pythonスクリプト内に埋め込まれた完全なCソースコードのペイロードが含まれている。被害者が互換性のあるカーネル(4.15以降)を実行している場合、BPFコンパイラコレクション(BCC)を使用してこのルートキットをメモリ内でコンパイルする。

sys_getdents64(ディレクトリエントリ取得)をフックする。これは「ls」のようなツールがファイル一覧表示に使うシステムコールだ。このフックはマルウェアのinodeに一致するファイルをすべて除外し、ユーザーから見えなくする。

コードスニペット:フックロジック

# マルウェアはCコードを直接Python文字列に埋め込む
GETDENTS_COMPLETE_CODE = r”””
// getdents64シスコールをフック
int hook_getdents64(struct pt_regs *ctx) {
    // … セットアップ …
    // inodeが隠しリストにあるか確認
    u8 *hidden = hidden_inodes.lookup(&ino);
    if (hidden) {
        // このファイルは隠す必要がある
        // 残りのエントリを移動してこのエントリを上書き
        // … メモリシフトロジック …
    }
}
“””

4. 「倒せない」P2Pネットワーク

ブラックリストに登録される可能性のある単一のC2サーバーに通信するのではなく、このマルウェアはModularP2PManagerクラスを使用して、感染した被害者全員をメッシュネットワークのノードに変える。

  • 暗号化:すべてのP2Pトラフィックは、ノードIDから導出されたキーを使用してFernet(AES-128)で暗号化されており、防御者がコマンドを容易に盗聴できないようにしている。
  • 耐障害性:「デッドマンズスイッチ」を維持している。P2Pネットワークが失敗したり、重要ファイルが削除されたりした場合、バックグラウンドスレッドがハードコードされたGitHubリポジトリからの完全な再ダウンロードをトリガーする。
5. 永続化と防衛(「ライバルキラー」)

このマルウェアは感染したホストを自分の縄張りとして扱い、積極的に防衛する。

  • ライバルキラーV7:このモジュールは、シグネチャマッチングを使用して既知の競合相手(例:他のグループのxmrigバリアント、kinsing)に関連するプロセスをスキャンして終了させる。プロセス名、高リソース使用率(CPU > 70%)、および既知のマイニングプールへの接続に基づいて強制終了する。
  • イミュータブルファイル:chattr +iを使用して自身の設定ファイルとバイナリをロックし、rootユーザーによる容易な削除を防ぐ。
  • アンチフォレンジクス:ComprehensiveLogEraserはロギングサービス(rsyslog、auditd)を停止し、ログ(/var/log/wtmp、auth.log)を切り捨て、インシデント対応を妨害するためシェル履歴を削除する。

結論:「スクリプトキディ」は死んだ

このボットネットは、生成AIがどのように脅威の状況を変化させているかを示す典型例だ。歴史的に、安定したeBPFルートキット、機能的なP2Pメッシュネットワーク、そしてインテリジェントなインターネットスキャナーを書くには、深いシステムプログラミングの知識(C/C++、ネットワークエンジニアリング)が必要だった。

このサンプルでは、高レベルのアーキテクチャプロンプト——「eBPFステルスとMasscanインテグレーションを備えた100/100スコアを獲得するP2Pボットネットを書け」——が機能的で危険なコードを生成できることが示されている。攻撃者はsys_getdents64フックの書き方を知る必要はなかった。それを要求する方法さえ知っていれば十分だったのだ。

翻訳元: https://zerolabs.rubrik.com/blog/prompt-pwn-analyzing-ai-architected-botnet

ソース: zerolabs.rubrik.com