mcpField
A
analyzing-linux-kernel-rootkits

analyzing-linux-kernel-rootkits

github.com/mukul975セキュリティ35.2k444 回インストール8 週間前に更新
リポジトリ

analyzing-linux-kernel-rootkits について

Linuxカーネルルートキットをメモリフォレンジック、クロスビュー分析、ライブスキャンで調べるセキュリティ分析スキルです。インシデント対応担当者やSOCアナリスト、脅威ハンター向けに、Volatility3とルートキットスキャナーを使う手順をまとめています。

主な機能

  1. 01Volatility3によるメモリダンプ分析
  2. 02システムコールフックと隠しモジュールの検査
  3. 03カーネルインターフェース間のクロスビュー分析
  4. 04rkhunterとchkrootkitによるライブスキャン
  5. 05構造化JSONレポートの作成

活用シーン

  1. 01Linuxカーネルルートキットの疑いがある事案の調査
  2. 02隠しモジュールやシステムコールフックの探索
  3. 03/proc、/sys、カーネルの各ビューの整合性確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-linux-kernel-rootkits

インストール後、Claude Code で/analyzing-linux-kernel-rootkitsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

Linux カーネルルートキットの分析

概要

Linux カーネルルートキットはリング 0 で動作し、カーネルのデータ構造を変更して、プロセス、ファイル、ネットワーク接続、カーネルモジュールをユーザー空間のツールから隠します。検出には、メモリフォレンジック(Volatility3 を使って物理メモリダンプを分析する方法)またはクロスビュー分析(/proc、/sys、カーネルのデータ構造を比較して不整合を調べる方法)が必要です。このスキルでは、Volatility3 Linux プラグインを使ってシステムコールテーブルのフック、隠されたカーネルモジュール、変更された関数ポインターを検出する方法と、rkhunter および chkrootkit によるライブシステムスキャンについて説明します。

使用する場面

  • Linux カーネルルートキットの分析が必要なセキュリティインシデントを調査する場合
  • この分野の検出ルールや脅威ハンティングクエリを作成する場合
  • SOC アナリストがこの種の分析に向けた体系的な手順を必要としている場合
  • 関連する攻撃手法に対するセキュリティ監視の網羅性を検証する場合

前提条件

  • Volatility3 がインストールされていること(pip install volatility3)
  • Linux メモリダンプ(LiME、AVML、または /proc/kcore を使って取得)
  • 対象カーネルのバージョンに一致する Volatility3 Linux シンボルテーブル(ISF)
  • ライブシステムスキャン用の rkhunter と chkrootkit
  • 比較用の既知の正常なカーネルイメージ

手順

ステップ 1: メモリダンプの取得

LiME カーネルモジュールまたは AVML を使って、クラウドインスタンスの物理メモリを取得します。

ステップ 2: Volatility3 による分析

linux.check_syscall、linux.lsmod、linux.hidden_modules、linux.check_idt プラグインを実行し、ルートキットの痕跡を検出します。

ステップ 3: クロスビュー分析

/proc/modules、lsmod、/sys/module のモジュールリストを比較し、あるビューでは隠されているものの別のビューには存在するモジュールを特定します。

ステップ 4: ライブシステムスキャン

rkhunter と chkrootkit を実行し、既知のルートキットシグネチャ、不審なファイル、変更されたシステムバイナリを検出します。

期待される出力

検出されたシステムコールフック、隠されたカーネルモジュール、変更された IDT エントリー、不審な /proc の不整合、rkhunter の検出結果を含む JSON レポート。

出力例

$ sudo python3 rootkit_analyzer.py --memory /evidence/linux-mem.lime --profile Ubuntu2204

Linux Kernel Rootkit Analysis Report
=====================================
Memory Image: /evidence/linux-mem.lime
Kernel Version: 5.15.0-91-generic (Ubuntu 22.04 LTS)
Analysis Time: 2024-01-18 09:15:32 UTC

[+] Scanning syscall table for hooks...
    Syscall Table Base: 0xffffffff82200300
    Total syscalls checked: 449

    HOOKED SYSCALLS DETECTED:
    ┌─────────┬──────────────────┬──────────────────────┬──────────────────────┐
    │ NR      │ Syscall          │ Expected Address     │ Current Address      │
    ├─────────┼──────────────────┼──────────────────────┼──────────────────────┤
    │ 0       │ sys_read         │ 0xffffffff8139a0e0   │ 0xffffffffc0a12000   │
    │ 2       │ sys_open         │ 0xffffffff8139b340   │ 0xffffffffc0a12180   │
    │ 78      │ sys_getdents64   │ 0xffffffff813f5210   │ 0xffffffffc0a12300   │
    │ 62      │ sys_kill         │ 0xffffffff8110c4a0   │ 0xffffffffc0a12480   │
    └─────────┴──────────────────┴──────────────────────┴──────────────────────┘
    WARNING: 4 syscall hooks detected - rootkit behavior confirmed

[+] Checking for hidden kernel modules...
    Loaded modules (lsmod):         147
    Modules in kobject list:        149
    HIDDEN MODULES:
      - "netfilter_helper" at 0xffffffffc0a10000 (size: 12288)
      - "kworker_sched"    at 0xffffffffc0a14000 (size: 8192)

[+] Scanning /proc for discrepancies...
    Processes in task_struct list: 234
    Processes visible in /proc:   231
    HIDDEN PROCESSES:
      - PID 31337  cmd: "[kworker/0:3]"   (disguised as kernel thread)
      - PID 31442  cmd: "rsyslogd"         (fake, real rsyslogd is PID 892)
      - PID 31500  cmd: ""                 (unnamed process)

[+] Checking IDT entries...
    IDT entries scanned: 256
    Modified entries: 0 (clean)

[+] Running rkhunter scan...
    Checking for known rootkits:        68 variants checked
    Diamorphine rootkit:                WARNING - signatures match
    System binary checks:
      /usr/bin/ps:     MODIFIED (SHA-256 mismatch)
      /usr/bin/netstat: MODIFIED (SHA-256 mismatch)
      /usr/bin/ls:     MODIFIED (SHA-256 mismatch)
      /usr/sbin/ss:    OK

[+] Network analysis...
    Hidden connections (not in /proc/net/tcp):
      ESTABLISHED  0.0.0.0:0 -> 198.51.100.47:4443 (PID 31337)
      ESTABLISHED  0.0.0.0:0 -> 198.51.100.47:8080 (PID 31442)

Summary:
  Rootkit Type:         Loadable Kernel Module (LKM)
  Probable Family:      Diamorphine variant
  Syscall Hooks:        4 (read, open, getdents64, kill)
  Hidden Modules:       2
  Hidden Processes:     3
  Hidden Connections:   2 (C2: 198.51.100.47)
  Modified Binaries:    3 (/usr/bin/ps, netstat, ls)
  Risk Level:           CRITICAL

コメント