テック技報最新号へ →
セキュリティ

Linux マルウェアの隠れ方別に点検する場所:LD_PRELOAD、memfd、カーネルフック、eBPF

Linux マルウェアの隠蔽手法と防御側が見る痕跡を並べた講演資料(スライド、サンプル、検知コード付き、CC0)が GitHub で公開された。手法ごとに「どこを見れば食い違いが出るか」を整理しておくと、侵害調査の手順になる。

@MalwareBibleJP · 2026-11-03
#linux#malware#rootkit#ebpf#incident-response#forensics

隠れ方と見る場所

手法仕組み点検するところ
ユーザー空間フックLD_PRELOAD や /etc/ld.so.preload で共有ライブラリーを差し込み、readdir などを横取りしてファイルやプロセスを隠す/etc/ld.so.preload の有無と中身、/proc/<pid>/maps に見慣れないライブラリーがないか、プロセスの environ の LD_PRELOAD。静的リンクのツールや直接のシステムコールではこのフックは効かないので、busybox などで見え方を比べる
ファイルレス実行memfd_create でメモリー上の匿名ファイルを作り、fexecve で実行する/proc/<pid>/exe が memfd: や (deleted) を指すプロセス、memfd_create / execveat のシステムコール監視(auditd、eBPF ベースの EDR など)
カーネルルートキットシステムコール表の書き換え、ftrace フック、DKOM(カーネル内のリストからプロセスやモジュールを外す)lsmod と /sys/module の差、ftrace の有効なフック(/sys/kernel/tracing/enabled_functions)、ps と /proc 走査の差
eBPFfentry / fexit で関数に処理を足す、ユーザー空間メモリーを書き換える。BPFDoor は cBPF のソケットフィルターで合図のパケットを待つbpftool prog list / bpftool map list で心当たりのないプログラム、raw ソケットを開いているプロセス(ss -0p など)

予防の設定

  • カーネルの Lockdown モード(lockdown=integrity など)を有効にし、カーネルメモリーの書き換えを難しくする。
  • カーネルモジュールの署名を強制する(module.sig_enforce=1)。
  • 非特権ユーザーの BPF を禁止する(kernel.unprivileged_bpf_disabled=1 または 2)。
  • BPF の読み込みと raw ソケットの作成を監視対象にする。

調べ方のコツ

  • 侵害されたホスト上のツールの出力だけを信じない。通常の表示(ps、ls、netstat)と、メモリーや外部から見た通信の観測結果を突き合わせ、食い違いを手がかりにする。
  • 可能ならメモリーを取得してから、オフラインで解析する。

関連

出典

X の元の投稿を開く