Аналіз оперативної пам’яті: Комплексний технічний посібник (Частина 2)

5 березня 2025 3 хвилин Автор: Cyber Witcher

У другій частині статті ми детально розглянемо методи глибокого аналізу пам’яті, які використовуються для дослідження оперативної пам’яті комп’ютерів і мобільних пристроїв у криміналістичних розслідуваннях. Ви дізнаєтесь, як виявляти приховані загрози, такі як руткіти, ін’єкційні процеси та шкідливе програмне забезпечення, що можуть не залишати слідів на жорсткому диску.

Передові методи криміналістики пам’яті

A. Аналіз процесів і потоків

Реконструкція дерева процесів

Ця техніка передбачає відображення батьківсько-начірніх зв’язків між процесами в пам’яті для виявлення аномалій в ієрархії процесів.

Реконструюючи повне дерево процесів, дослідники можуть виявити ненормальні або несподівані зв’язки, наприклад приховані процеси, які маскуються під законні, що може вказувати на наявність шкідливого програмного забезпечення.

Виявлення прихованих і ін’єкційних процесів

Такі інструменти, як psscanі malfindє важливими для виявлення прихованих процесів або тих, що впроваджуються в законні. Ці процеси можуть не відображатися в стандартних інструментах перерахування процесів, але їх можна виявити шляхом сканування пам’яті на наявність:

  • Підозрілі шаблони коду

  • Змінені структури процесу

  • Введені корисні навантаження

  • Такі знахідки часто вказують на зловмисну ​​діяльність.

Аналіз потоків у режимі ядра

Дослідження потоків, що працюють у режимі ядра, має вирішальне значення, оскільки вони можуть сигналізувати про наявність руткітів або компрометації на рівні ОС.

  • Дійте на рівні ядра, щоб приховати діяльність.

  • Виявляти підозрілі характеристики, як-от приховування від інструментів моніторингу режиму користувача.

  • Взаємодіяйте безпосередньо з ядром ОС, щоб уникнути виявлення.

B. Розслідування хронології

  • Плагін timelinerу Volatility використовується для створення шкали часу подій на основі часових позначок, отриманих із різних артефактів у зображенні пам’яті.

  • Ця хронологія є безцінною для розуміння послідовності дій у системі, зокрема під час реагування на інцидент або судово-медичні дослідження.

1. Нормальне використання:

vol.exe -f cridex.vmem --profile=WinXPSP3x86 timeliner

2. Конвеєрний вихід у текстовий файл:

vol.exe -f cridex.vmem --profile=WinXPSP3x86 timeliner > timeline.txt

Дослідження: перехоплення буфера обміну

  • Плагін wndscanу Volatility використовується для пошуку віконних об’єктів у пам’яті.

  • Ця функція особливо корисна для визначення як видимих , так і прихованих вікон , створених процесами, які можуть включати діяльність, пов’язана зі шкідливим програмним забезпеченням та підозрілу поведінку.

1. Нормальне використання

vol.exe -f cridex.vmem --profile=WinXPSP3x86 wndscan

2. Конвеєрний вихід у текстовий файл:

vol.exe -f cridex.vmem --profile=WinXPSP3x86 wndscan > wnd.txt

Перевірка файлів:

  • Плагін filescanу Volatility використовується для ідентифікації файлових об’єктів у пам’яті, які, можливо, не були зіставлені на диск.

  • Це особливо корисно для виявлення прихованих або ін’єктованих файлів , які можуть бути використані шкідливим програмним забезпеченням.

vol.exe -f cridex.vmem --profile=WinXPSP3x86 filescan

Примітка: щодо вашого часу. ми можемо використовувати | findstr у вікнах або | grep у Linux, щоб шукати певний файл.

Перевірка на шкідливе програмне забезпечення

  • Плагін malfindVolatility є потужним інструментом для виявлення потенційного шкідливого програмного забезпечення в дампі пам’яті.

  • Він сканує введений код або аномальні розділи пам’яті , які зазвичай пов’язані зі зловмисним програмним забезпеченням.

vol.exe -f cridex.vmem --profile=WinXPSP3x86 malfind

C. Реконструкція артефакту пам’яті

  • Відновлення куща реєстру : видобування та аналіз кущів реєстру з пам’яті для виявлення змін конфігурації або механізмів стійкості зловмисного програмного забезпечення.

  • Відстеження мережевих з’єднань : ідентифікація живих або історичних мережевих з’єднань для аналізу можливого викрадання даних або зв’язку з командно-контрольними (C2) серверами.

  • Криміналістика сеансу автентифікації : дослідження маркерів автентифікації, ідентифікаторів сеансу та використання облікових даних користувача, що зберігаються в пам’яті.

  • Перевірка кешованих облікових даних : аналіз кешованих облікових даних для виявлення можливого збирання облікових даних або неправильного використання.

Спеціалізовані домени криміналістики пам’яті

A. Виявлення руткітів і невидимого шкідливого ПЗ

  • Ідентифікація руткітів у режимі ядра : виявлення руткітів, які працюють на рівні ядра, шляхом аналізу пам’яті ядра та структур системи.

  • Виявлення механізму перехоплення : виявлення модифікацій таблиць системних викликів, вбудованих перехоплень або методів викрадення API, які використовуються зловмисним програмним забезпеченням.

  • Аналіз руткітів на основі пам’яті : аналіз структур пам’яті для виявлення прихованих драйверів, модулів ядра чи інших шкідливих артефактів.

  • Антикриміналістична ідентифікація : виявлення спроб зловмисного програмного забезпечення уникнути виявлення, наприклад очищення пам’яті або шифрування даних.

B. Інструменти та екосистема

Додаткові засоби криміналістики пам’яті

  • Rekall Framework : альтернатива Volatility зі схожими можливостями, зосереджена на аналізі живої пам’яті та оптимізації продуктивності.

  • FTK Imager : інструмент для створення та аналізу криміналістичних зображень, включаючи дампи пам’яті.

  • WindowsSCOPE : комерційне рішення, що пропонує можливості візуалізації та детального аналізу пам’яті.

  • Колекції сценаріїв аналізу пам’яті : Скрипти, розроблені для автоматизації повторюваних завдань під час аналізу пам’яті, оптимізуючи робочий процес судової експертизи.

Розширений збір пам’яті Cellebrite

Розширений збір пам’яті FTK Imager

Захоплення пам’яті

Отримання доказів

Особливості аналізу

Артефакти пам’яті

Параметри експорту

Покращене отримання енергонезалежної пам’яті

Потокова передача пам’яті в реальному часі

  • Реалізуйте методи безперервного захоплення пам’яті, які дозволяють потокову передачу енергозалежної пам’яті в реальному часі

  • Розробити механізми виявлення та фіксації змін пам’яті, коли вони відбуваються

  • Використовуйте розбіжності в пам’яті, щоб визначити значні зміни між записами

Збір даних за допомогою апаратного забезпечення

  • Використовуйте Intel Processor Trace (PT) для детального відстеження виконання

  • Впровадити методи отримання прямого доступу до пам’яті (DMA).

  • Використовуйте сучасні функції процесора, як-от безпечне шифрування пам’яті AMD (SME) для надійного отримання даних

Сучасні засоби накопичення пам’яті

LiME (Linux Memory Extractor)

# Install LiME on Linux
git clone https://github.com/504ensicsLabs/LiME
cd LiME/src
make

# Capture memory
sudo insmod lime-<version>.ko "path=/tmp/memory.lime format=lime"

WinPMEM (Windows)

# Capture full memory dump
winpmem_mini_x64_rc2.exe memory.raw

# Capture with compression
winpmem_mini_x64_rc2.exe -c memory.raw

Передові методи аналізу

Інтеграція машинного навчання

  • Розгортайте моделі навчання під наглядом для виявлення аномальної поведінки процесів

  • Реалізуйте алгоритми кластеризації для ідентифікації груп пов’язаних шкідливих дій

  • Використовуйте глибоке навчання для розпізнавання шаблонів у структурах пам’яті

Реалізація TensorFlow:

import tensorflow as tf

class MemoryAnomalyDetector:
    def __init__(self):
        self.model = tf.keras.Sequential([
            tf.keras.layers.Dense(128, activation='relu'),
            tf.keras.layers.Dropout(0.2),
            tf.keras.layers.Dense(64, activation='relu'),
            tf.keras.layers.Dense(1, activation='sigmoid')
        ])

    def train(self, memory_features, labels):
        self.model.compile(optimizer='adam',
                          loss='binary_crossentropy',
                          metrics=['accuracy'])

        return self.model.fit(memory_features, labels,
                            epochs=10,
                            validation_split=0.2)

Аналіз контейнерів і хмарної пам’яті

Криміналістика контейнерної пам’яті

  • Розробити спеціалізовані інструменти для аналізу оперативної пам’яті контейнера

  • Впровадити методи кореляції пам’яті контейнера з пам’яттю хост-системи

  • Створіть методи для аналізу спроб виходу з контейнера

Аналіз пам’яті Docker:

# Capture Docker container memory
docker-forensics -c container_id -o output_dir

# Analysis script
python3 analyze_container_memory.py output_dir/container_memory.raw
# Container memory analysis implementation
class DockerMemoryAnalyzer:
    def __init__(self, memory_dump):
        self.memory_dump = memory_dump

    def analyze_container_escape(self):
        # Check for privileged operations
        privileged_ops = self._scan_privileged_operations()

        # Check for mounted sensitive paths
        mount_violations = self._check_mount_violations()

        # Check for capability abuse
        capability_abuse = self._detect_capability_abuse()

        return {
            'privileged_ops': privileged_ops,
            'mount_violations': mount_violations,
            'capability_abuse': capability_abuse
        }

Аналіз хмарної пам’яті

  • Впровадити методи аналізу пам’яті в розподілених системах

  • Розробити інструменти для аналізу стану безсерверної функціональної пам’яті

  • Створюйте методи для кореляції артефактів пам’яті між хмарними службами

Розширене виявлення шкідливих програм

Виявлення поліморфних шкідливих програм

  • Впровадити методи виявлення на основі поведінки

  • Розробити методи ідентифікації шаблонів мутації коду в пам’яті

  • Створіть методи для відстеження розвитку зловмисного програмного забезпечення на знімках пам’яті

Розширене виявлення руткітів

  • Впровадити механізми перевірки цілісності ядра

  • Розробити методи виявлення передових методів підключення

  • Створіть інструменти для виявлення складних спроб ескалації привілеїв

Volatility 3 із спеціальними плагінами

# Custom plugin for encrypted process detection
import yara
from volatility3.framework import interfaces

class EncryptedProcessDetector(interfaces.plugins.PluginInterface):
    _required_framework_version = (2, 0, 0)

    def run(self):
        # Load YARA rules for encryption detection
        rules = yara.compile(source='''
            rule EncryptionIndicators {
                strings:
                    $aes = {67 74 71 6E 28 73 76 71}
                    $rsa = {82 65 78 61 2D 70 75 62}
                condition:
                    any of them
            }
        ''')

        # Scan process memory
        for proc in self.context.processes:
            matches = rules.match(data=proc.get_process_memory())
            if matches:
                yield (0, (proc.UniqueProcessId, 
                          proc.ImageFileName.cast("string"), 
                          "Encryption Detected"))

Автоматизація криміналістики пам’яті

Автоматизований конвеєр аналізу

  • Впровадити автоматизовані системи сортування для дампів пам’яті

  • Розробити інтелектуальні механізми фільтрації відповідних артефактів

  • Створення автоматизованих систем звітності

Постійний моніторинг

  • Впровадити системи моніторингу пам’яті в реальному часі

  • Розробити автоматичні механізми сповіщення про підозрілу діяльність пам’яті

  • Створення систем для безперервного базового порівняння

class MemoryForensicsPipeline:
    def __init__(self):
        self.volatility = VolatilityInterface()
        self.yara_scanner = YaraScanner()
        self.ml_detector = MemoryAnomalyDetector()

    def analyze_memory_dump(self, dump_path):
        # Stage 1: Initial triage
        profile = self.volatility.identify_profile(dump_path)
        processes = self.volatility.get_processes(dump_path, profile)

        # Stage 2: Deep analysis
        suspicious_processes = []
        for process in processes:
            score = self._analyze_process(process)
            if score > THRESHOLD:
                suspicious_processes.append(process)

        # Stage 3: Advanced detection
        malware_detection = self.yara_scanner.scan(dump_path)
        anomaly_detection = self.ml_detector.analyze(dump_path)

        # Stage 4: Report generation
        return self._generate_report(
            suspicious_processes,
            malware_detection,
            anomaly_detection
        )

    def _analyze_process(self, process):
        return {
            'pid': process.pid,
            'name': process.name,
            'memory_regions': self._analyze_memory_regions(process),
            'network_connections': self._analyze_network(process),
            'handles': self._analyze_handles(process),
            'threads': self._analyze_threads(process)
        }

Висновок

Судова експертиза пам’яті є потужним інструментом цифрової криміналістики, який дозволяє отримувати та аналізувати критично важливі дані з оперативної пам’яті комп’ютерів та мобільних пристроїв. На відміну від традиційної криміналістики дисків, що зосереджується на статичних даних, експертиза пам’яті забезпечує доступ до динамічних артефактів, які можуть бути втрачені після вимкнення системи.

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.