SOC Prime Bias: クリティカル

09 4月 2026 18:14

新しいホワイトペーパー:BPFDoorのバリアントは目立たないように隠れる

Author Photo
SOC Prime Team linkedin icon フォローする
新しいホワイトペーパー:BPFDoorのバリアントは目立たないように隠れる
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Rapid7 Labsは、新しいBPFDoorの7つの亜種が、通信環境でステルス性のあるバックドアアクセスを維持するために、カーネルレベルのBerkeley Packet Filtersを悪用していることを特定しました。新しいファミリーのhttpShellとicmpShellは、マジックパケット形式と隠されたIPフィールドを備えたステートレスICMPおよびHTTPトンネリングを使用して、最小限の観測可能なフットプリントでコマンド&コントロールを確立します。このレポートでは、プロセスマスカレーディング、ファイルディスクリプタのクリーンアップ、タイムスタンプ変更、および暗号化されたICMP通信を使用して、インプラントがほぼ見えなくしようとする方法を説明しています。

調査

研究者たちは約300のサンプルを分析し、新しいBPFバイトコードの特性、新しいマジックバイトのマーキング、そしてhpasmlitedやcmathreshdのような亜種ごとのプロセス名を抽出しました。Dockerでのラボ検証により、ICMP駆動のPTYトンネリング、RC4で暗号化されたペイロード交換、そして-1フラグがパケットの送信元アドレスにトラフィックを返すルーティング動作が再現されました。チームはまた、ステージングとコントロールトラフィックをブレンドするために使用されるNTP over SSLサービスを装ったドメインを含む、サポートインフラを明らかにしました。

緩和策

カーネル付近の悪用を暴露するテレメトリを優先: AF_PACKETソケットの作成を監視し、BPFフィルタの添付を検出し、これらの亜種に関連するプロトコル異常を狩り出し、ICMPシーケンス1234および無効なICMPコード1を含む。実行可能パスのない不審なデーモン、スプーフされたサービス名、または正当なシステムプロセスと整合しないランタイム特性にアラートを出してください。Rapid7は、rapid7_bpfdoor_check.shトリアージスクリプトを実行し、新たに文書化されたマジックバイト署名でYARA/Suricata検出を更新することを推奨します。

対応

インジケータが見つかった場合は、システムを隔離し、疑わしいインプラントプロセスを停止し、関連するドメインやIP範囲をブロックしてください。BPF状態およびランタイムの証拠を保存するためにメモリおよびディスクのアーティファクトをキャプチャし、それからrapid7_bpfdoor_check.shを使用してアクティブなBPFフィルタおよび関連するゼロバイトのミューテックスアーティファクトを特定します。最後に、公表された署名で検出を更新し、同じパケットマーカー、プロセス名、およびフィルタ添付動作の再出現を引き続き監視してください。

graph TB classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f4c2c2 tech_socket_filters[“<b>技術</b> – T1205.002 トラフィックシグナリング: ソケットフィルタ<br/><b>説明</b>: AF_PACKETソケットとBPFフィルタでトラフィック監視”] class tech_socket_filters technique tech_masq_task_service[“<b>技術</b> – T1036.004 サービス偽装<br/><b>説明</b>: 正規サービス名を偽装”] class tech_masq_task_service technique tech_overwrite_args[“<b>技術</b> – T1036.011 プロセス引数の上書き<br/><b>説明</b>: 引数文字列を改ざん”] class tech_overwrite_args technique tech_rename_utils[“<b>技術</b> – T1036.003 ユーティリティ偽装<br/><b>説明</b>: ツール名を変更”] class tech_rename_utils technique tech_obfuscate_strings[“<b>技術</b> – T1027 難読化<br/><b>説明</b>: スタックベース難読化”] class tech_obfuscate_strings technique tech_clear_history[“<b>技術</b> – T1070.003 コマンド履歴削除”] class tech_clear_history technique tech_wipe_timestamps[“<b>技術</b> – T1070.004 ファイル削除”] class tech_wipe_timestamps technique tech_unix_shell[“<b>技術</b> – T1059.004 Unixシェル<br/><b>説明</b>: インタラクティブシェル生成”] class tech_unix_shell technique tech_break_process[“<b>技術</b> – T1036.009 プロセスツリー破壊”] class tech_break_process technique tech_http_c2[“<b>技術</b> – T1071.001 HTTP通信”] class tech_http_c2 technique tech_icmp_tunnel[“<b>技術</b> – T1572 ICMPトンネリング”] class tech_icmp_tunnel technique tech_rc4_encryption[“<b>技術</b> – T1573.001 RC4暗号化”] class tech_rc4_encryption technique tech_data_obfuscation[“<b>技術</b> – T1001 データ難読化”] class tech_data_obfuscation technique tech_port_knocking[“<b>技術</b> – T1205.001 ポートノッキング”] class tech_port_knocking technique tech_proxy[“<b>技術</b> – T1090 プロキシ”] class tech_proxy technique tech_create_process[“<b>技術</b> – T1543 システムプロセス作成”] class tech_create_process technique tech_socket_filters –>|有効化| tech_masq_task_service tech_masq_task_service –>|支援| tech_overwrite_args tech_overwrite_args –>|支援| tech_rename_utils tech_rename_utils –>|強化| tech_obfuscate_strings tech_obfuscate_strings –>|隠蔽| tech_clear_history tech_clear_history –>|完了| tech_wipe_timestamps tech_wipe_timestamps –>|準備| tech_unix_shell tech_unix_shell –>|破壊| tech_break_process tech_break_process –>|チャネル| tech_http_c2 tech_break_process –>|チャネル| tech_icmp_tunnel tech_icmp_tunnel –>|使用| tech_rc4_encryption tech_rc4_encryption –>|追加| tech_data_obfuscation tech_port_knocking –>|起動| tech_socket_filters tech_socket_filters –>|使用| tech_proxy tech_proxy –>|転送| tech_http_c2 tech_proxy –>|転送| tech_icmp_tunnel tech_create_process –>|永続化| tech_masq_task_service

攻撃フロー

シミュレーション実行

前提条件: テレメトリとベースラインのプレフライトチェックがパスしている必要があります。

攻撃の説明 & コマンド

  1. 悪意のあるBashスクリプトを作成 ほとんど監視されていないパスに /var/run/user/0.
  2. スクリプトを実行可能にする そして ファイルを削除 し、それを開いたままにして 削除されたiノードにより、プロセスが引き続き実行されている場合、カーネルがコマンドラインの一部としてログを記録します。 ぶら下がりファイルディスクリプタを実行
  3. することにより、削除されたiノードからプロセスを実行し、Sigmaルールが探している正確なテレメトリを生成します。プロセスが実行され、ログに記録されるまで
  4. 検証する 監査ログ内のプロセスコマンドラインが 選択3.
  5. 回避 除外対象のマスカレード文字列(hpasmlited, cmathreshd)を避けると、ルールが発火します。

リグレッションテストスクリプト

#!/usr/bin/env bash
# -------------------------------------------------
# BPFDoorスタイルの削除済みinodeからの実行テスト
# -------------------------------------------------
# 1. 悪意のある(悪用されない)ペイロードを準備
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. ファイルディスクリプタを開く(ファイルを開いたままにする)
exec 3<"$PAYLOAD"
# 3. ファイルシステムからファイルを削除する – FD 3を介してiノードが開いたまま
rm -f "$PAYLOAD"
# 4. ぶらさがったファイルディスクリプタでスクリプトを実行。
#    /proc/self/fd/3シンボリックリンクは、現在削除されたiノードを指します。
bash /proc/self/fd/3 &
# 5. プロセスが開始され、ログに記録されるまで少し待ちます。
sleep 5
# 6. クリーンアップ: ファイルディスクリプタを閉じる
exec 3<&-
echo "シミュレーション完了 – SIEMでアラートを確認してください。"

クリーンアップコマンド

#!/usr/bin/env bash
# -------------------------------------------------
# BPFDoorシミュレーション後のクリーンアップ
# -------------------------------------------------
# スクリプトによって開始された眠っているプロセスをすべて殺す
pkill -f "sleep 60"
# ターゲットディレクトリ内に残りのファイルがないことを確認する
rm -f /var/run/user/0/malicious.sh
echo "クリーンアップ完了。"

レポート終了