Agent Skills by ALSEL
Anthropic Claudeセキュリティ⭐ リポ 299品質スコア 84/100

memory-forensics

インシデント対応とマルウェア分析のために、メモリダンプから成果物を取得、分析、抽出するための包括的な技術を提供します。

description の原文を見る

Comprehensive techniques for acquiring, analyzing, and extracting artifacts from memory dumps for incident response and malware analysis.

SKILL.md 本文

メモリフォレンジクス

インシデント対応とマルウェア分析のための、メモリダンプの取得、分析、アーティファクト抽出に関する包括的なテクニックです。

このスキルを使用する場合

  • メモリフォレンジクスのタスクまたはワークフローに取り組んでいる場合
  • メモリフォレンジクスのガイダンス、ベストプラクティス、またはチェックリストが必要な場合

このスキルを使用しない場合

  • タスクがメモリフォレンジクスと無関係である場合
  • このスコープ外の異なるドメインまたはツールが必要な場合

指示

  • 目標、制約、および必要な入力を明確にします。
  • 関連するベストプラクティスを適用し、結果を検証します。
  • 実行可能なステップと検証方法を提供します。
  • 詳細な例が必要な場合は、resources/implementation-playbook.md を開いてください。

メモリ取得

ライブ取得ツール

Windows

# WinPmem (推奨)
winpmem_mini_x64.exe memory.raw

# DumpIt
DumpIt.exe

# Belkasoft RAM Capturer
# GUIベース、ロー形式で出力

# Magnet RAM Capture
# GUIベース、ロー形式で出力

Linux

# LiME (Linux Memory Extractor)
sudo insmod lime.ko "path=/tmp/memory.lime format=lime"

# /dev/mem (限定的、権限が必要)
sudo dd if=/dev/mem of=memory.raw bs=1M

# /proc/kcore (ELF形式)
sudo cp /proc/kcore memory.elf

macOS

# osxpmem
sudo ./osxpmem -o memory.raw

# MacQuisition (商用)

仮想マシンメモリ

# VMware: .vmem ファイルはローメモリ
cp vm.vmem memory.raw

# VirtualBox: デバッグコンソールを使用
vboxmanage debugvm "VMName" dumpvmcore --filename memory.elf

# QEMU
virsh dump <domain> memory.raw --memory-only

# Hyper-V
# チェックポイントはメモリ状態を含む

Volatility 3 フレームワーク

インストールとセットアップ

# Volatility 3 をインストール
pip install volatility3

# シンボルテーブルをインストール (Windows)
# https://downloads.volatilityfoundation.org/volatility3/symbols/ からダウンロード

# 基本的な使用方法
vol -f memory.raw <plugin>

# シンボルパス付き
vol -f memory.raw -s /path/to/symbols windows.pslist

必須プラグイン

プロセス分析

# プロセスを一覧表示
vol -f memory.raw windows.pslist

# プロセスツリー (親子関係)
vol -f memory.raw windows.pstree

# 隠されたプロセスの検出
vol -f memory.raw windows.psscan

# プロセスメモリダンプ
vol -f memory.raw windows.memmap --pid <PID> --dump

# プロセス環境変数
vol -f memory.raw windows.envars --pid <PID>

# コマンドラインの引数
vol -f memory.raw windows.cmdline

ネットワーク分析

# ネットワーク接続
vol -f memory.raw windows.netscan

# ネットワーク接続状態
vol -f memory.raw windows.netstat

DLL とモジュール分析

# プロセスあたりのロード済み DLL
vol -f memory.raw windows.dlllist --pid <PID>

# 隠されたまたはインジェクトされた DLL を検出
vol -f memory.raw windows.ldrmodules

# カーネルモジュール
vol -f memory.raw windows.modules

# モジュールダンプ
vol -f memory.raw windows.moddump --pid <PID>

メモリインジェクション検出

# コードインジェクションを検出
vol -f memory.raw windows.malfind

# VAD (仮想アドレス記述子) 分析
vol -f memory.raw windows.vadinfo --pid <PID>

# 疑わしいメモリ領域をダンプ
vol -f memory.raw windows.vadyarascan --yara-rules rules.yar

レジストリ分析

# レジストリハイブを一覧表示
vol -f memory.raw windows.registry.hivelist

# レジストリキーを出力
vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"

# レジストリハイブをダンプ
vol -f memory.raw windows.registry.hivescan --dump

ファイルシステムアーティファクト

# ファイルオブジェクトをスキャン
vol -f memory.raw windows.filescan

# メモリからファイルをダンプ
vol -f memory.raw windows.dumpfiles --pid <PID>

# MFT 分析
vol -f memory.raw windows.mftscan

Linux 分析

# プロセス一覧
vol -f memory.raw linux.pslist

# プロセスツリー
vol -f memory.raw linux.pstree

# Bash 履歴
vol -f memory.raw linux.bash

# ネットワーク接続
vol -f memory.raw linux.sockstat

# ロード済みカーネルモジュール
vol -f memory.raw linux.lsmod

# マウントポイント
vol -f memory.raw linux.mount

# 環境変数
vol -f memory.raw linux.envars

macOS 分析

# プロセス一覧
vol -f memory.raw mac.pslist

# プロセスツリー
vol -f memory.raw mac.pstree

# ネットワーク接続
vol -f memory.raw mac.netstat

# カーネル拡張機能
vol -f memory.raw mac.lsmod

分析ワークフロー

マルウェア分析ワークフロー

# 1. 初期プロセス調査
vol -f memory.raw windows.pstree > processes.txt
vol -f memory.raw windows.pslist > pslist.txt

# 2. ネットワーク接続
vol -f memory.raw windows.netscan > network.txt

# 3. インジェクションを検出
vol -f memory.raw windows.malfind > malfind.txt

# 4. 疑わしいプロセスを分析
vol -f memory.raw windows.dlllist --pid <PID>
vol -f memory.raw windows.handles --pid <PID>

# 5. 疑わしい実行可能ファイルをダンプ
vol -f memory.raw windows.pslist --pid <PID> --dump

# 6. ダンプから文字列を抽出
strings -a pid.<PID>.exe > strings.txt

# 7. YARA スキャン
vol -f memory.raw windows.yarascan --yara-rules malware.yar

インシデント対応ワークフロー

# 1. イベントのタイムライン
vol -f memory.raw windows.timeliner > timeline.csv

# 2. ユーザーアクティビティ
vol -f memory.raw windows.cmdline
vol -f memory.raw windows.consoles

# 3. 永続化メカニズム
vol -f memory.raw windows.registry.printkey \
    --key "Software\Microsoft\Windows\CurrentVersion\Run"

# 4. サービス
vol -f memory.raw windows.svcscan

# 5. スケジュール設定されたタスク
vol -f memory.raw windows.scheduled_tasks

# 6. 最近使用したファイル
vol -f memory.raw windows.filescan | grep -i "recent"

データ構造

Windows プロセス構造

// EPROCESS (Executive Process)
typedef struct _EPROCESS {
    KPROCESS Pcb;                    // Kernel process block
    EX_PUSH_LOCK ProcessLock;
    LARGE_INTEGER CreateTime;
    LARGE_INTEGER ExitTime;
    // ...
    LIST_ENTRY ActiveProcessLinks;   // Doubly-linked list
    ULONG_PTR UniqueProcessId;       // PID
    // ...
    PEB* Peb;                        // Process Environment Block
    // ...
} EPROCESS;

// PEB (Process Environment Block)
typedef struct _PEB {
    BOOLEAN InheritedAddressSpace;
    BOOLEAN ReadImageFileExecOptions;
    BOOLEAN BeingDebugged;           // Anti-debug check
    // ...
    PVOID ImageBaseAddress;          // Base address of executable
    PPEB_LDR_DATA Ldr;              // Loader data (DLL list)
    PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
    // ...
} PEB;

VAD (仮想アドレス記述子)

typedef struct _MMVAD {
    MMVAD_SHORT Core;
    union {
        ULONG LongFlags;
        MMVAD_FLAGS VadFlags;
    } u;
    // ...
    PVOID FirstPrototypePte;
    PVOID LastContiguousPte;
    // ...
    PFILE_OBJECT FileObject;
} MMVAD;

// メモリ保護フラグ
#define PAGE_EXECUTE           0x10
#define PAGE_EXECUTE_READ      0x20
#define PAGE_EXECUTE_READWRITE 0x40
#define PAGE_EXECUTE_WRITECOPY 0x80

検出パターン

プロセスインジェクションインジケーター

# Malfind インジケーター
# - PAGE_EXECUTE_READWRITE 保護 (疑わしい)
# - 非イメージ VAD 領域内の MZ ヘッダー
# - 割り当て開始時のシェルコードパターン

# 一般的なインジェクション技術
# 1. クラシック DLL インジェクション
#    - VirtualAllocEx + WriteProcessMemory + CreateRemoteThread

# 2. プロセス中空化
#    - CreateProcess (SUSPENDED) + NtUnmapViewOfSection + WriteProcessMemory

# 3. APC インジェクション
#    - 警告可能なスレッドを対象とした QueueUserAPC

# 4. スレッド実行ハイジャック
#    - SuspendThread + SetThreadContext + ResumeThread

ルートキット検出

# プロセスリストを比較
vol -f memory.raw windows.pslist > pslist.txt
vol -f memory.raw windows.psscan > psscan.txt
diff pslist.txt psscan.txt  # 隠されたプロセス

# DKOM (直接カーネルオブジェクト操作) をチェック
vol -f memory.raw windows.callbacks

# フックされた関数を検出
vol -f memory.raw windows.ssdt  # System Service Descriptor Table

# ドライバ分析
vol -f memory.raw windows.driverscan
vol -f memory.raw windows.driverirp

認証情報抽出

# ハッシュをダンプ (最初に hivelist が必要)
vol -f memory.raw windows.hashdump

# LSA シークレット
vol -f memory.raw windows.lsadump

# キャッシュされたドメイン認証情報
vol -f memory.raw windows.cachedump

# Mimikatz スタイルの抽出
# 特定のプラグイン/ツールが必要

YARA インテグレーション

メモリ YARA ルールの作成

rule Suspicious_Injection
{
    meta:
        description = "Detects common injection shellcode"

    strings:
        // Common shellcode patterns
        $mz = { 4D 5A }
        $shellcode1 = { 55 8B EC 83 EC }  // Function prologue
        $api_hash = { 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 }  // Push hash, call

    condition:
        $mz at 0 or any of ($shellcode*)
}

rule Cobalt_Strike_Beacon
{
    meta:
        description = "Detects Cobalt Strike beacon in memory"

    strings:
        $config = { 00 01 00 01 00 02 }
        $sleep = "sleeptime"
        $beacon = "%s (admin)" wide

    condition:
        2 of them
}

メモリのスキャン

# すべてのプロセスメモリをスキャン
vol -f memory.raw windows.yarascan --yara-rules rules.yar

# 特定のプロセスをスキャン
vol -f memory.raw windows.yarascan --yara-rules rules.yar --pid 1234

# カーネルメモリをスキャン
vol -f memory.raw windows.yarascan --yara-rules rules.yar --kernel

文字列分析

文字列の抽出

# 基本的な文字列抽出
strings -a memory.raw > all_strings.txt

# ユニコード文字列
strings -el memory.raw >> all_strings.txt

# プロセスダンプからのターゲット抽出
vol -f memory.raw windows.memmap --pid 1234 --dump
strings -a pid.1234.dmp > process_strings.txt

# パターンマッチング
grep -E "(https?://|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})" all_strings.txt

難読化された文字列用 FLOSS

# FLOSS は難読化された文字列を抽出
floss malware.exe > floss_output.txt

# メモリダンプから
floss pid.1234.dmp

ベストプラクティス

取得のベストプラクティス

  1. フットプリントを最小化: 軽量な取得ツールを使用します
  2. すべてを文書化: キャプチャの時間、ツール、ハッシュを記録します
  3. 整合性を検証: キャプチャの直後にメモリダンプをハッシュします
  4. チェーン・オブ・カストディ: 適切なフォレンジック処理を維持します

分析のベストプラクティス

  1. 広い視点から開始: 深掘りする前に概要を取得します
  2. 相互参照: 同じデータに対して複数のプラグインを使用します
  3. タイムライン関連付け: メモリの結果をディスク/ネットワークと関連付けます
  4. 結果を文書化: 詳細なメモとスクリーンショットを保持します
  5. 結果を検証: 複数の方法で結果を検証します

一般的な落とし穴

  • 古いデータ: メモリは揮発性であり、速やかに分析します
  • 不完全なダンプ: ダンプサイズが予期される RAM と一致することを確認します
  • シンボルの問題: OS バージョンに対応する正しいシンボルファイルを確認します
  • スミア: 取得中にメモリが変更される可能性があります
  • 暗号化: メモリ内の一部データは暗号化されている場合があります

制限事項

  • このスキルは、上記で説明されたスコープに明確に合致するタスクの場合にのみ使用してください。
  • 出力を環境固有の検証、テスト、または専門家のレビューの代替として扱わないでください。
  • 必要な入力、権限、セーフティ境界、または成功基準が不足している場合は、停止して明確化を要求してください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
majiayu000
リポジトリ
majiayu000/claude-skill-registry
ライセンス
MIT
最終更新
2026/5/4

Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: majiayu000 · majiayu000/claude-skill-registry · ライセンス: MIT