Изображение


ВВЕДЕНИЕ

Анализ памяти компьютера является одним из наиболее эффективных методов расследования кибератак и выявления вредоносного программного обеспечения. В отличие от анализа файловой системы, анализ памяти позволяет получить доступ к активным процессам, сетевым соединениям и данным, которые могут быть скрыты или зашифрованы на диске.

Данный кейс демонстрирует практическое применение Volatility Framework для расследования сложной кибератаки с использованием продвинутого вредоносного ПО типа APT (Advanced Persistent Threat). Атака была направлена на финансовую организацию и включала кражу банковских данных клиентов.

Проблема заключалась в том, что традиционные антивирусные решения не смогли обнаружить вредоносное ПО, которое использовало техники уклонения от обнаружения и работало исключительно в памяти. Требовался анализ дампа памяти для восстановления полной картины атаки и извлечения доказательств.

ИСХОДНАЯ СИТУАЦИЯ

Организация: Банк "NN" (региональный банк)
Тип атаки: APT с использованием банковского трояна
Период атаки: 10-25 декабря 2024
Цель атаки: Кража банковских данных клиентов
Размер ущерба: Оценочно $15.2 млн (украденные средства)

Технические характеристики:
- Операционная система: Windows 10 Enterprise (Build 19045)
- Архитектура: x64
- Объем памяти: 32 ГБ RAM
- Процессор: Intel Core i7-12700K
- Сетевая карта: Intel I225-V

Обнаруженные индикаторы компрометации:
- Подозрительная сетевая активность
- Необычное потребление ресурсов
- Аномальные DNS запросы
- Подозрительные процессы

ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ

1. Volatility 3.2.0 - основной инструмент анализа памяти
2. Rekall - альтернативный фреймворк для анализа памяти
3. YARA - поиск сигнатур вредоносного ПО
4. PEview - анализ PE файлов
5. Process Hacker - анализ процессов
6. Wireshark - анализ сетевого трафика
7. IDA Pro - статический анализ кода

ПОШАГОВОЕ РЕШЕНИЕ

ЭТАП 1: ПОДГОТОВКА И ПЛАНИРОВАНИЕ

Шаг 1.1: Создание дампа памяти
bash
<h2 id="ispolzovanie-winpmem-dlya-sozdaniya-dampa">Использование WinPmem для создания дампа</h2>
winpmem.exe --output memory_dump.raw --format raw

<h2 id="proverka-tselostnosti-dampa">Проверка целостности дампа</h2>
vol.py -f memory_dump.raw windows.info


Шаг 1.2: Определение профиля системы
bash
<h2 id="avtomaticheskoe-opredelenie-profilya">Автоматическое определение профиля</h2>
vol.py -f memory_dump.raw windows.info

<h2 id="rezultat">Результат:</h2>
<h2 id="kernel-base-0xfffff80000000000">Kernel base: 0xfffff80000000000</h2>
<h2 id="kernel-dtb-0x1ad000">Kernel DTB: 0x1ad000</h2>
<h2 id="profile-win10x64-19045">Profile: Win10x64_19045</h2>


ЭТАП 2: АНАЛИЗ ПРОЦЕССОВ

Шаг 2.1: Перечисление всех процессов
bash
<h2 id="spisok-vseh-protsessov">Список всех процессов</h2>
vol.py -f memory_dump.raw windows.pslist

<h2 id="poisk-podozritelnyh-protsessov">Поиск подозрительных процессов</h2>
vol.py -f memory_dump.raw windows.pslist | grep -E "(svchost|explorer|winlogon)"


Шаг 2.2: Анализ дерева процессов
bash
<h2 id="postroenie-dereva-protsessov">Построение дерева процессов</h2>
vol.py -f memory_dump.raw windows.pstree

<h2 id="obnaruzhen-podozritelnyy-protsess">Обнаружен подозрительный процесс:</h2>
<h2 id="pid-2847-svchost-exe-roditel-pid-1">PID 2847: svchost.exe (родитель: PID 1)</h2>
<h2 id="pid-2848-malware-process-exe-roditel-pid-2847">PID 2848: malware_process.exe (родитель: PID 2847)</h2>


ЭТАП 3: АНАЛИЗ СЕТЕВЫХ СОЕДИНЕНИЙ

Шаг 3.1: Перечисление сетевых соединений
bash
<h2 id="aktivnye-setevye-soedineniya">Активные сетевые соединения</h2>
vol.py -f memory_dump.raw windows.netstat

<h2 id="obnaruzheny-podozritelnye-soedineniya">Обнаружены подозрительные соединения:</h2>
<h2 id="pid-2848-tcp-192-168-1-100-443-185-199-108-153-443">PID 2848: TCP 192.168.1.100:443 -&gt; 185.199.108.153:443</h2>
<h2 id="pid-2848-tcp-192-168-1-100-8080-104-21-45-67-80">PID 2848: TCP 192.168.1.100:8080 -&gt; 104.21.45.67:80</h2>


Шаг 3.2: Анализ сетевых сокетов
bash
<h2 id="detalnyy-analiz-soketov">Детальный анализ сокетов</h2>
vol.py -f memory_dump.raw windows.netscan

<h2 id="rezultat-pokazal">Результат показал:</h2>
<h2 id="podklyucheniya-k-podozritelnym-ip-adresam">- Подключения к подозрительным IP адресам</h2>
<h2 id="ispolzovanie-nestandartnyh-portov">- Использование нестандартных портов</h2>
<h2 id="shifrovannyy-trafik-https">- Шифрованный трафик (HTTPS)</h2>


ЭТАП 4: ПОИСК ВРЕДОНОСНОГО ПО

Шаг 4.1: Сканирование с помощью YARA правил
bash
<h2 id="sozdanie-yara-pravil-dlya-bankovskih-troyanov">Создание YARA правил для банковских троянов</h2>
cat > banking_trojan.yar << EOF
rule BankingTrojan {
strings:
$s1 = "banking" ascii
$s2 = "credit_card" ascii
$s3 = "password" ascii
$s4 = "keylog" ascii
condition:
2 of them
}
EOF

<h2 id="skanirovanie-pamyati">Сканирование памяти</h2>
vol.py -f memory_dump.raw windows.yarascan -Y banking_trojan.yar


Шаг 4.2: Поиск инжектированного кода
bash
<h2 id="poisk-dll-inzhektsiy">Поиск DLL инжекций</h2>
vol.py -f memory_dump.raw windows.dlllist -p 2848

<h2 id="obnaruzheny-podozritelnye-dll">Обнаружены подозрительные DLL:</h2>
<h2 id="kernel32-dll-normalno">- kernel32.dll (нормально)</h2>
<h2 id="ntdll-dll-normalno">- ntdll.dll (нормально)</h2>
<h2 id="suspicious-dll-dll-podozritelno">- suspicious_dll.dll (подозрительно)</h2>


ЭТАП 5: ИЗВЛЕЧЕНИЕ АРТЕФАКТОВ

Шаг 5.1: Дамп подозрительного процесса
bash
<h2 id="izvlechenie-protsessa-malware-process-exe">Извлечение процесса malware_process.exe</h2>
vol.py -f memory_dump.raw windows.memmap -p 2848 --dump

<h2 id="rezultat-malware-process-exe-dmp-15-2-mb">Результат: malware_process.exe.dmp (15.2 МБ)</h2>


Шаг 5.2: Извлечение строк из памяти
bash
<h2 id="poisk-strok-v-dampe-protsessa">Поиск строк в дампе процесса</h2>
strings malware_process.exe.dmp | grep -E "(password|credit|bank|card)"

<h2 id="obnaruzheny-stroki">Обнаружены строки:</h2>
<h2 id="password-field">- &quot;password_field&quot;</h2>
<h2 id="credit-card-number">- &quot;credit_card_number&quot;</h2>
<h2 id="bank-account">- &quot;bank_account&quot;</h2>
<h2 id="c2-server-url">- &quot;C2_SERVER_URL&quot;</h2>


ЭТАП 6: АНАЛИЗ РЕЕСТРА

Шаг 6.1: Анализ автозапуска
bash
<h2 id="poisk-zapisey-avtozapuska">Поиск записей автозапуска</h2>
vol.py -f memory_dump.raw windows.registry.printkey -K "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

<h2 id="obnaruzhena-podozritelnaya-zapis">Обнаружена подозрительная запись:</h2>
<h2 id="key-malwareservice">Key: &quot;MalwareService&quot;</h2>
<h2 id="value-c-windows-system32-malware-service-exe">Value: &quot;C:\Windows\System32\malware_service.exe&quot;</h2>


Шаг 6.2: Анализ недавно использованных файлов
bash
<h2 id="analiz-mru-most-recently-used">Анализ MRU (Most Recently Used)</h2>
vol.py -f memory_dump.raw windows.registry.printkey -K "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs"

<h2 id="obnaruzheny-fayly">Обнаружены файлы:</h2>
<h2 id="banking-data-xlsx">- banking_data.xlsx</h2>
<h2 id="client-passwords-txt">- client_passwords.txt</h2>
<h2 id="financial-reports-pdf">- financial_reports.pdf</h2>


ЭТАП 7: АНАЛИЗ ФАЙЛОВОЙ СИСТЕМЫ В ПАМЯТИ

Шаг 7.1: Поиск скрытых файлов
bash
<h2 id="analiz-faylovyh-obektov-v-pamyati">Анализ файловых объектов в памяти</h2>
vol.py -f memory_dump.raw windows.filescan | grep -E "\.(exe|dll|txt)$"

<h2 id="obnaruzheny-fayly">Обнаружены файлы:</h2>
<h2 id="c-temp-malware-payload-exe">- C:\Temp\malware_payload.exe</h2>
<h2 id="c-windows-system32-suspicious-dll-dll">- C:\Windows\System32\suspicious_dll.dll</h2>
<h2 id="c-users-admin-desktop-stolen-data-txt">- C:\Users\Admin\Desktop\stolen_data.txt</h2>


Шаг 7.2: Извлечение файлов из памяти
bash
<h2 id="izvlechenie-podozritelnogo-fayla">Извлечение подозрительного файла</h2>
vol.py -f memory_dump.raw windows.dumpfiles -Q 0xfffffa8001234567 -D extracted_files/

<h2 id="rezultat-malware-payload-exe-izvlechen-uspeshno">Результат: malware_payload.exe извлечен успешно</h2>


ЭТАП 8: АНАЛИЗ КОММУНИКАЦИЙ С C2 СЕРВЕРОМ

Шаг 8.1: Поиск C2 серверов
bash
<h2 id="analiz-setevyh-buferov">Анализ сетевых буферов</h2>
vol.py -f memory_dump.raw windows.netscan | grep -E "(185\.199\.108\.153|104\.21\.45\.67)"

<h2 id="obnaruzheny-soedineniya-s">Обнаружены соединения с:</h2>
<h2 id="185-199-108-153-443-osnovnoy-c2">- 185.199.108.153:443 (основной C2)</h2>
<h2 id="104-21-45-67-80-rezervnyy-c2">- 104.21.45.67:80 (резервный C2)</h2>


Шаг 8.2: Извлечение сетевых данных
bash
<h2 id="analiz-setevyh-buferov-protsessa">Анализ сетевых буферов процесса</h2>
vol.py -f memory_dump.raw windows.memmap -p 2848 | grep -E "0x[0-9a-f]+.*0x[0-9a-f]+.*rw"

<h2 id="izvlechenie-dannyh-iz-setevyh-buferov">Извлечение данных из сетевых буферов</h2>
vol.py -f memory_dump.raw windows.memdump -p 2848 -D network_data/


ЭТАП 9: ВОССТАНОВЛЕНИЕ КРАДЕНЫХ ДАННЫХ

Шаг 9.1: Поиск банковских данных
bash
<h2 id="poisk-kreditnyh-kart-v-pamyati">Поиск кредитных карт в памяти</h2>
vol.py -f memory_dump.raw windows.strings | grep -E "[0-9]{4}[-\s]?[0-9]{4}[-\s]?[0-9]{4}[-\s]?[0-9]{4}"

<h2 id="obnaruzheny-nomera-kart">Обнаружены номера карт:</h2>
<h2 id="4532-1234-5678-9012">- 4532-1234-5678-9012</h2>
<h2 id="5555-4444-3333-2222">- 5555-4444-3333-2222</h2>
<h2 id="3782-822463-10005">- 3782-822463-10005</h2>


Шаг 9.2: Поиск паролей
bash
<h2 id="poisk-paroley-v-pamyati">Поиск паролей в памяти</h2>
vol.py -f memory_dump.raw windows.strings | grep -E "(password|passwd|pwd)" -i

<h2 id="obnaruzheny-paroli">Обнаружены пароли:</h2>
<h2 id="admin-password-bankadmin2024">- admin_password: &quot;BankAdmin2024!&quot;</h2>
<h2 id="user-passwords-clientpass123">- user_passwords: &quot;ClientPass123&quot;</h2>


ЭТАП 10: СОЗДАНИЕ ОТЧЕТА И ДОКАЗАТЕЛЬСТВ

Шаг 10.1: Документирование результатов
bash
<h2 id="sozdanie-otcheta">Создание отчета</h2>
cat > malware_analysis_report.txt << EOF
ОТЧЕТ ОБ АНАЛИЗЕ ВРЕДОНОСНОГО ПО
Дата анализа: 25 декабря 2024
Система: Windows 10 Enterprise x64
Объем памяти: 32 ГБ

ОБНАРУЖЕННОЕ ВРЕДОНОСНОЕ ПО:
- Тип: Банковский троян (APT)
- Процесс: malware_process.exe (PID 2848)
- Размер: 15.2 МБ
- C2 серверы: 185.199.108.153, 104.21.45.67

КРАДЕНЫЕ ДАННЫЕ:
- Кредитные карты: 3 номера
- Пароли: 2 аккаунта
- Банковские данные: 15.2 МБ
- Персональные данные: 2,500 записей

МЕТОДЫ АТАКИ:
- DLL инжекция
- Реестр автозапуска
- Сетевая коммуникация
- Шифрование данных
EOF


РЕЗУЛЬТАТЫ АНАЛИЗА

Количественные показатели:
- Проанализировано: 32 ГБ памяти
- Обнаружено процессов: 156 (1 подозрительный)
- Найдено сетевых соединений: 23 (2 подозрительных)
- Извлечено файлов: 5 (общий объем 18.7 МБ)
- Время анализа: 8 часов
- Доказательная ценность: 100%

Качественные результаты:
- Идентифицирован тип вредоносного ПО
- Установлены методы атаки
- Восстановлены краденые данные
- Определены C2 серверы
- Создана база доказательств для судебного разбирательства

ПРАКТИЧЕСКИЕ РЕКОМЕНДАЦИИ

1. Проактивная защита: Внедрить EDR решения для мониторинга памяти
2. Обучение персонала: Проводить тренинги по выявлению APT атак
3. Сетевая сегментация: Изолировать критически важные системы
4. Мониторинг трафика: Анализировать исходящие соединения
5. Резервное копирование: Регулярно создавать дампы памяти критических систем

ЗАКЛЮЧЕНИЕ

Данный кейс демонстрирует эффективность анализа памяти для расследования сложных кибератак. Использование Volatility Framework позволило не только обнаружить вредоносное ПО, но и восстановить полную картину атаки, включая краденые данные и методы коммуникации с C2 серверами.

Ключевые факторы успеха:
- Правильное создание дампа памяти
- Систематический анализ процессов и сетевых соединений
- Использование YARA правил для поиска вредоносного ПО
- Извлечение и анализ артефактов
- Тщательное документирование процесса

Результаты анализа стали основой для блокировки C2 серверов, восстановления краденых данных и возбуждения уголовного дела против злоумышленников.

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.