
У другій частині статті ми детально розглянемо методи глибокого аналізу пам’яті, які використовуються для дослідження оперативної пам’яті комп’ютерів і мобільних пристроїв у криміналістичних розслідуваннях. Ви дізнаєтесь, як виявляти приховані загрози, такі як руткіти, ін’єкційні процеси та шкідливе програмне забезпечення, що можуть не залишати слідів на жорсткому диску.
Реконструкція дерева процесів
Ця техніка передбачає відображення батьківсько-начірніх зв’язків між процесами в пам’яті для виявлення аномалій в ієрархії процесів.
Реконструюючи повне дерево процесів, дослідники можуть виявити ненормальні або несподівані зв’язки, наприклад приховані процеси, які маскуються під законні, що може вказувати на наявність шкідливого програмного забезпечення.
Виявлення прихованих і ін’єкційних процесів
Такі інструменти, як psscan
і malfind
є важливими для виявлення прихованих процесів або тих, що впроваджуються в законні. Ці процеси можуть не відображатися в стандартних інструментах перерахування процесів, але їх можна виявити шляхом сканування пам’яті на наявність:
Підозрілі шаблони коду
Змінені структури процесу
Введені корисні навантаження
Такі знахідки часто вказують на зловмисну діяльність.
Дослідження потоків, що працюють у режимі ядра, має вирішальне значення, оскільки вони можуть сигналізувати про наявність руткітів або компрометації на рівні ОС.
Дійте на рівні ядра, щоб приховати діяльність.
Виявляти підозрілі характеристики, як-от приховування від інструментів моніторингу режиму користувача.
Взаємодіяйте безпосередньо з ядром ОС, щоб уникнути виявлення.
Плагін
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, щоб шукати певний файл.
Плагін
malfind
Volatility є потужним інструментом для виявлення потенційного шкідливого програмного забезпечення в дампі пам’яті.
Він сканує введений код або аномальні розділи пам’яті , які зазвичай пов’язані зі зловмисним програмним забезпеченням.
vol.exe -f cridex.vmem --profile=WinXPSP3x86 malfind
Відновлення куща реєстру : видобування та аналіз кущів реєстру з пам’яті для виявлення змін конфігурації або механізмів стійкості зловмисного програмного забезпечення.
Відстеження мережевих з’єднань : ідентифікація живих або історичних мережевих з’єднань для аналізу можливого викрадання даних або зв’язку з командно-контрольними (C2) серверами.
Криміналістика сеансу автентифікації : дослідження маркерів автентифікації, ідентифікаторів сеансу та використання облікових даних користувача, що зберігаються в пам’яті.
Перевірка кешованих облікових даних : аналіз кешованих облікових даних для виявлення можливого збирання облікових даних або неправильного використання.
Ідентифікація руткітів у режимі ядра : виявлення руткітів, які працюють на рівні ядра, шляхом аналізу пам’яті ядра та структур системи.
Виявлення механізму перехоплення : виявлення модифікацій таблиць системних викликів, вбудованих перехоплень або методів викрадення API, які використовуються зловмисним програмним забезпеченням.
Аналіз руткітів на основі пам’яті : аналіз структур пам’яті для виявлення прихованих драйверів, модулів ядра чи інших шкідливих артефактів.
Антикриміналістична ідентифікація : виявлення спроб зловмисного програмного забезпечення уникнути виявлення, наприклад очищення пам’яті або шифрування даних.
Rekall Framework : альтернатива Volatility зі схожими можливостями, зосереджена на аналізі живої пам’яті та оптимізації продуктивності.
FTK Imager : інструмент для створення та аналізу криміналістичних зображень, включаючи дампи пам’яті.
WindowsSCOPE : комерційне рішення, що пропонує можливості візуалізації та детального аналізу пам’яті.
Колекції сценаріїв аналізу пам’яті : Скрипти, розроблені для автоматизації повторюваних завдань під час аналізу пам’яті, оптимізуючи робочий процес судової експертизи.
Реалізуйте методи безперервного захоплення пам’яті, які дозволяють потокову передачу енергозалежної пам’яті в реальному часі
Розробити механізми виявлення та фіксації змін пам’яті, коли вони відбуваються
Використовуйте розбіжності в пам’яті, щоб визначити значні зміни між записами
Використовуйте 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 }
Впровадити методи аналізу пам’яті в розподілених системах
Розробити інструменти для аналізу стану безсерверної функціональної пам’яті
Створюйте методи для кореляції артефактів пам’яті між хмарними службами
Впровадити методи виявлення на основі поведінки
Розробити методи ідентифікації шаблонів мутації коду в пам’яті
Створіть методи для відстеження розвитку зловмисного програмного забезпечення на знімках пам’яті
Розширене виявлення руткітів
Впровадити механізми перевірки цілісності ядра
Розробити методи виявлення передових методів підключення
Створіть інструменти для виявлення складних спроб ескалації привілеїв
# 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) }
Судова експертиза пам’яті є потужним інструментом цифрової криміналістики, який дозволяє отримувати та аналізувати критично важливі дані з оперативної пам’яті комп’ютерів та мобільних пристроїв. На відміну від традиційної криміналістики дисків, що зосереджується на статичних даних, експертиза пам’яті забезпечує доступ до динамічних артефактів, які можуть бути втрачені після вимкнення системи.