Анализ вредоносных программ: изучение концепции, инструментальные средства и методы анализа и исследования вредоносных программ для Windows
معرفی کتاب «Анализ вредоносных программ: изучение концепции, инструментальные средства и методы анализа и исследования вредоносных программ для Windows» نوشتهٔ Монаппа К. А.; перевод с английского Д. А. Беликова، منتشرشده توسط نشر ДМК Пресс در سال 2019. این کتاب در 5 صفحه، فرمت pdf، زبان انگلیسی ارائه شده است.
Анализ вредоносных программ_обложка analiz-cmyk.pdf Соавторы Об авторе О рецензентах Предисловие Для кого эта книга Что рассматривается в этой книге Чтобы получить максимальную отдачу от этой книги Скачать цветные изображения Используемые условные обозначения Введение в анализ вредоносных программ 1.1 Что такое вредоносное ПО? 1.2 Что такое анализ вредоносных программ? 1.3 Почему анализ вредоносных программ? 1.4 Типы анализа вредоносных программ 1.5 Настройка тестовой среды 1.5.1 Требования к среде 1.5.2 Обзор архитектуры тестовой среды 1.5.3 Установка и настройка виртуальной машины Linux 1.5.4 Установка и настройка виртуальной машины Windows 1.6 Источники вредоносных программ Резюме Статический анализ 2.1 Определение типа файла 2.1.1 Определение типа файла с использованием ручного метода 2.1.2 Определение типа файла с использованием инструментальных средств 2.1.3 Определение типа файла с помощью Python 2.2. Сличение информации с помощью цифровых отпечатков 2.2.1 Генерирование криптографической хеш-функции с использованием инструментальных средств 2.2.2 Определение криптографической хеш-функции в Python 2.3 Многократное антивирусное сканирование 2.3.1 Сканирование подозрительного бинарного файла с помощью VirusTotal 2.3.2 Запрос значений хеш-функций с помощью открытого API VirusTotal 2.4 Извлечение строк 2.4.1 Извлечение строк с использованием инструментальных средств 2.4.2 Расшифровка обфусцированных строк с использованием FLOSS 2.5 Определение обфускации файла 2.5.1 Упаковщики и крипторы 2.5.2 Обнаружение обфусцированного файла с помощью Exeinfo PE 2.6 Проверка информации о PE-заголовке 2.6.1 Проверка файловых зависимостей и импорт 2.6.2 Проверка экспорта 2.6.3 Изучение таблицы секций PE-файла 2.6.4 Изучение временной метки компиляции 2.6.5 Изучение ресурсов PE-файлов 2.7 Сравнение и классификация вредоносных программ 2.7.1 Классификация вредоносных программ с использованием нечеткого хеширования 2.7.2 Классификация вредоносных программ с использованием хеша импорта 2.7.3 Классификация вредоносных программ с использованием хеша секций 2.7.4 Классификация вредоносных программ с использованием YARA 2.7.4.1 Установка YARA 2.7.4.2 Основы правил YARA 2.7.4.3 Запуск YARA 2.7.4.4 Применение YARA Резюме Динамический анализ 3.1 Обзор тестовой среды 3.2 Системный и сетевой мониторинг 3.3 Инструменты динамического анализа (мониторинга) 3.3.1 Проверка процесса с помощью Process Hacker 3.3.2 Определение взаимодействия системы с помощью Process Monitor 3.3.3 Регистрация действий системы с использованием Noriben 3.3.4 Захват сетевого трафика с помощью Wireshark 3.3.5 Симуляция служб с INetSim 3.4 Этапы динамического анализа 3.5 Собираем все вместе: анализируем исполняемый файл вредоносного ПО 3.5.1 Статический анализ образца 3.5.2 Динамический анализ образца 3.6 Анализ динамически подключаемой библиотеки (DLL) 3.6.1 Почему злоумышленники используют библиотеки DLL 3.6.2 Анализ DLL с помощью rundll32.exe 3.6.2.1 Как работает rundll32.exe 3.6.2.2 Запуск DLL с использованием rundll32.exe Пример 1 – Анализ DLL без экспорта Пример 2 – Анализ DLL, содержащей экспорт Пример 3 – Анализ DLL, принимающей аргументы экспорта 3.6.3 Анализ DLL с помощью проверки процессов Резюме Язык ассемблера и дизассемблирование для начинающих 4.1 Основы работы с компьютером 4.1.1 Память 4.1.1.1 Как данные хранятся в памяти 4.1.2 Центральный процессор 4.1.2.1 Машинный язык 4.1.3 Основы программы 4.1.3.1 Компиляция программы 4.1.3.2 Программа на диске 4.1.3.3 Программа в памяти 4.1.3.4 Дизассемблирование программы (от машинного кода к коду ассемблера) 4.2 Регистры процессора 4.2.1 Регистры общего назначения 4.2.2 Указатель инструкций (EIP) 4.2.3 Регистр EFLAGS 4.3 Инструкции по передаче данных 4.3.1 Перемещение константы в регистр 4.3.2 Перемещение значений из регистра в регистр 4.3.3 Перемещение значений из памяти в регистры 4.3.4 Перемещение значений из регистров в память 4.3.5 Задача по дизассемблированию 4.3.6 Решение задачи 4.4 Арифметические операции 4.4.1 Задача по дизассемблированию 4.4.2 Решение задачи 4.5 Побитовые операции 4.6 Ветвление и условные операторы 4.6.1 Безусловные переходы 4.6.2 Условные переходы 4.6.3 Оператор if 4.6.4 Оператор If-Else 4.6.5 Оператор If-Elseif-Else 4.6.6 Задача по дизассемблированию 4.6.7 Решение задачи 4.7 Циклы 4.7.1 Задача по дизассемблированию 4.7.2 Решение задачи 4.8 Функции 4.8.1 Стек 4.8.2 Функция вызова 4.8.3 Возвращение из функции 4.8.4 Параметры функции и возвращаемые значения 4.9 Массивы и строки 4.9.1 Задача по дизассемблированию 4.9.2 Решение задачи 4.9.3 Строки 4.9.3.1 Строковые инструкции 4.9.3.2 Перемещение из памяти в память (movsx) 4.9.3.3 Инструкции повтора (rep) 4.9.3.4 Сохранение значения из регистра в память (Stosx) 4.9.3.5. Загрузка из памяти в регистр (lodsx) 4.9.3.6 Сканирование памяти (scasx) 4.9.3.7. Сравнение значений в памяти (Cmpsx) 4.10 Структуры 4.11 Архитектура x64 4.11.1 Анализ 32-битного исполняемого файла на 64-разрядной операционной системе Windows 4.12 Дополнительная литература Резюме Дизассемблирование с использованием IDA 5.1 Инструментальные средства анализа кода 5.2 Статический анализ кода (дизассемблирование) с использованием IDA 5.2.1 Загрузка двоичного файла в IDA 5.2.2 Изучение окон IDA 5.2.2.1 Окно Дизассемблирование 5.2.2.2 Окно Функции 5.2.2.3 Окно Вывод 5.2.2.4 Окно шестнадцатеричного представления 5.2.2.5 Окно Структуры 5.2.2.6 Окно Импорт 5.2.2.7 Окно Экспорт 5.2.2.8 Окно Строки 5.2.2.9 Окно Сегменты 5.2.3 Улучшение дизассемблирования с помощью IDA 5.2.3.1 Переименование переменных и функций 5.2.3.2 Комментирование в IDA 5.2.3.3 База данных IDA 5.2.3.4 Форматирование операндов 5.2.3.5 Навигация по адресам 5.2.3.6 Перекрестные ссылки 5.2.3.7. Вывод списка всех перекрестных ссылок 5.2.3.8. Ближнее представление и графы 5.3 Дизассемблирование Windows API 5.3.1 Понимание Windows API 5.3.1.1 API-функции Юникод и ANSI 5.3.1.2 Расширенные API-функции 5.3.2 Сравнение 32-битного и 64-битного Windows API 5.4 Исправление двоичного кода с использованием IDA 5.4.1 Исправление байтов программы 5.4.2 Исправление инструкций 5.5 Сценарии и плагины IDA 5.5.1 Выполнение сценариев IDA 5.5.2 IDAPython 5.5.2.1 Проверка наличия API CreateFile 5.5.2.2. Перекрестные ссылки кода на CreateFile с использованием IDAPython 5.5.3 Плагины IDA Резюме Отладка вредоносных двоичных файлов 6.1 Общие концепции отладки 6.1.1 Запуск и подключение к процессам 6.1.2 Контроль выполнения процесса 6.1.3 Прерывание программы с помощью точек останова 6.1.4 Трассировка выполнения программы 6.2 Отладка двоичного файла с использованием x64dbg 6.2.1 Запуск нового процесса в x64dbg 6.2.2 Присоединение к существующему процессу с использованием x64dbg 6.2.3 Интерфейс отладчика x64dbg 6.2.4 Контроль за выполнением процесса с использованием x64dbg 6.2.5 Установка точки останова в x64dbg 6.2.6 Отладка 32-битного вредоносного ПО 6.2.7 Отладка 64-битной вредоносной программы 6.2.8 Отладка вредоносной DLL- библиотеки с использованием x64dbg 6.2.8.1 Использование rundll32.exe для отладки библиотеки DLL в x64dbg 6.2.8.2 Отладка DLL в определенном процессе 6.2.9 Трассировка выполнения в x64dbg 6.2.9.1 Трассировка инструкций 2.9.2 Трассировка функций 6.2.10 Исправления в x64dbg 6.3. Отладка двоичного файла с использованием IDA 6.3.1 Запуск нового процесса в IDA 6.3.2 Присоединение к существующему процессу с использованием IDA 6.3.3 Интерфейс отладчика IDA 6.3.4 Контроль выполнения процесса с использованием IDA 6.3.5 Установка точки останова в IDA 6.3.6 Отладка вредоносных исполняемых файлов 6.3.7 Отладка вредоносной библиотеки DLL с помощью IDA 6.3.7.1 Отладка DLL в определенном процессе 6.3.8 Трассировка выполнения с использованием IDA 6.3.9 Написание сценариев отладки с использованием IDAPython 6.3.9.1 Пример – определение файлов, доступных вредоносному ПО 6.4 Отладка приложения .NET Резюме Функциональные возможности вредоносного ПО и его персистентность 7.1 Функциональные возможности вредоносного ПО 7.1.1 Загрузчик 7.1.2 Дроппер 7.1.2.1. Реверс-инжиниринг 64-битного дроппера 7.1.3 Кейлоггер 7.1.3.1 Кейлоггер, использующий GetAsyncKeyState() 7.1.3.2 Кейлоггер, использующий SetWindowsHookEx() 7.1.4 Репликация вредоносных программ через съемные носители 7.1.5. Управление и контроль, осуществляемые вредоносными программами (С2) 7.1.5.1 Управление и контроль с использованием HTTP 7.1.5.2 Осуществление команды и контроля в пользовательском режиме 7.1.6 Выполнение на основе PowerShell 7.1.6.1 Основы команд PowerShell 7.1.6.2 Сценарии PowerShell и политика выполнения 7.1.6.2 Анализ команд/скриптов PowerShell 7.1.6.3 Как злоумышленники используют PowerShell 7.2 Методы персистентности вредоносных программ 7.2.1 Запуск ключа реестра 7.2.2 Запланированные задачи 7.2.3 Папка запуска 7.2.4 Записи реестра Winlogon 7.2.5 Параметры выполнения файла изображения 7.2.6 Специальные возможности 7.2.7 AppInit_DLLs 7.2.8. Захват порядка поиска DLL 7.2.9 Захват COM-объекта 7.2.10 Служба Резюме Внедрение кода и перехват 8.1 Виртуальная память 8.1.1 Компоненты памяти процесса (пространство пользователя) 8.1.2 Содержимое памяти ядра (пространство ядра) 8.2 Пользовательский режим и режим ядра 8.2.1 Поток вызовов Windows API 8.3 Методы внедрения кода 8.3.1 Удаленное внедрение DLL 8.3.2 Внедрение DLL с использованием асинхронного вызова процедур 8.3.3 Внедрение DLL с использованием SetWindowsHookEx() 8.3.4. Внедрение DLL с использованием прокладок 8.3.4.1 Создание прокладки 8.3.4.2 Артефакты прокладки 8.3.4.3 Как злоумышленники используют прокладки 8.3.4.4 Анализ базы данных прокладки 8.3.5 Внедрение удаленного исполняемого файла или шелл-кода 8.3.6 Внедрение пустого процесса (опустошение процесса) 8.4 Методы перехвата 8.4.1 Перехват таблицы адресов импорта 8.4.2 Встраиваемый перехват (Inline Patching) 8.4.3 Исправления в памяти с помощью прокладки 8.5 Дополнительная литература Резюме Методы обфускации вредоносных программ 9.1 Простое кодирование 9.1.1 Шифр Цезаря 9.1.1.1 Как работает Шифр Цезаря 8.1.1.2 Расшифровка шифра Цезаря в Python 9.1.2 Кодирование Base64 9.1.2.1 Перевод данных в Base64 9.1.2.2 Кодирование и декодирование Base64 9.1.2.3 Декодирование пользовательской версии Base64 9.1.2.4 Идентификация Base64 9.1.3 XOR-шифрование 9.1.3.1 Однобайтовый XOR 9.1.3.2 Поиск XOR-ключа с помощью полного перебора 9.1.3.3 Игнорирование XOR-шифрования нулевым байтом 9.1.3.4 Многобайтовое XOR-шифрование 8.1.3.5 Идентификация XOR-шифрования 9.2 Вредоносное шифрование 9.2.1 Идентификация криптографических подписей с помощью Signsrch 9.2.2 Обнаружение криптоконстант с помощью FindCrypt2 9.2.3 Обнаружение криптографических подписей с использованием YARA 9.2.4 Расшифровка в Python 9.3 Пользовательское кодирование/шифрование 9.4 Распаковка вредоносных программ 9.4.1 Ручная распаковка 9.4.1.1 Идентификация исходной точки входа 9.4.1.2. Выгрузка памяти процесса с помощью Scylla 9.4.1.3 Исправление таблицы импорта 9.4.2 Автоматическая распаковка Резюме Охота на вредоносные программы с использованием криминалистического анализа дампов памяти 10.1 Этапы криминалистического анализа дампов памяти 10.2 Создание дампа памяти 10.2.1 Создание дампа памяти с использованием DumpIt 10.3 Обзор Volatility 10.3.1 Установка Volatility 10.3.1.1 Автономный исполняемый файл Volatility 10.3.1.2 Исходный пакет Volatility 10.3.2 Использование Volatility 10.4 Перечисление процессов 10.4.1 Обзор процесса 10.4.1.1 Изучение структуры _EPROCESS 10.4.1.2 Понимание ActiveProcessLinks 10.4.2. Вывод списка процессов с использованием psscan 10.4.2.1 Прямое манипулирование объектами ядра (DKOM) 10.4.2.2 Общие сведения о сканировании тегов пула 10.4.3 Определение связей между процессами 10.4.4. Вывод списка процессов с использованием psxview 10.5 Вывод списка дескрипторов процесса 10.6 Вывод списка DLL 10.6.1 Обнаружение скрытой библиотеки DLL с помощью ldrmodules 10.7 Сброс исполняемого файла и DLL 10.8 Вывод списка сетевых подключений и сокетов 10.9 Проверка реестра 10.10 Проверка служб 10.11 Извлечение истории команд Резюме Обнаружение сложных вредоносных программ с использованием криминалистического анализа дампов памяти 11.1 Обнаружение внедрения кода 11.1.1 Получение информации о дескрипторе виртуальных адресов 11.1.2 Обнаружение внедренного кода с использованием дескриптора виртуальных адресов 11.1.3 Сброс области памяти процесса 11.1.4. Обнаружение внедренного кода с помощью malfind 11.2 Исследование внедрения пустого процесса 11.2.1 Этапы внедрения пустого процесса 11.2.2 Обнаружение внедрения пустого процесса 11.2.3 Варианты внедрения пустого процесса 11.3 Обнаружение перехвата API 11.4 Руткиты в режиме ядра 11.5 Вывод списка модулей ядра 11.5.1 Вывод списка модулей ядра с использованием driverscan 11.6 Обработка ввода/вывода 11.6.1 Роль драйвера устройства 11.6.2 Роль менеджера ввода/вывода 11.6.3 Связь с драйвером устройства 11.6.4 Запросы ввода/вывода для многоуровневых драйверов 11.7 Отображение деревьев устройств 11.8 Обнаружение перехвата пространства ядра 11.8.1 Обнаружение перехвата SSDT 11.8.2 Обнаружение перехвата IDT 11.8.3 Идентификация встроенных перехватов ядра 11.8.4 Обнаружение перехватов функций IRP 11.9 Обратные вызовы из ядра и таймеры Резюме Предметный указатель Understand Malware Analysis And Its Practical Implementation Key Features Explore The Key Concepts Of Malware Analysis And Memory Forensics Using Real-world Examples Learn The Art Of Detecting, Analyzing, And Investigating Malware Threats Understand Adversary Tactics And Techniques Book Description Malware Analysis And Memory Forensics Are Powerful Analysis And Investigation Techniques Used In Reverse Engineering, Digital Forensics, And Incident Response. With Adversaries Becoming Sophisticated And Carrying Out Advanced Malware Attacks On Critical Infrastructures, Data Centers, And Private And Public Organizations, Detecting, Responding To, And Investigating Such Intrusions Is Critical To Information Security Professionals. Malware Analysis And Memory Forensics Have Become Must-have Skills To Fight Advanced Malware, Targeted Attacks, And Security Breaches. This Book Teaches You The Concepts, Techniques, And Tools To Understand The Behavior And Characteristics Of Malware Through Malware Analysis. It Also Teaches You Techniques To Investigate And Hunt Malware Using Memory Forensics. This Book Introduces You To The Basics Of Malware Analysis, And Then Gradually Progresses Into The More Advanced Concepts Of Code Analysis And Memory Forensics. It Uses Real-world Malware Samples, Infected Memory Images, And Visual Diagrams To Help You Gain A Better Understanding Of The Subject And To Equip You With The Skills Required To Analyze, Investigate, And Respond To Malware-related Incidents. What You Will Learn Create A Safe And Isolated Lab Environment For Malware Analysis Extract The Metadata Associated With Malware Determine Malware's Interaction With The System Perform Code Analysis Using Ida Pro And X64dbg Reverse-engineer Various Malware Functionalities Reverse Engineer And Decode Common Encoding/encryption Algorithms Reverse-engineer Malware Code Injection And Hooking Techniques Investigate And Hunt Malware Using Memory Forensics Who This Book Is For This Book Is For Incident Responders, Cyber-security Investigators, System Administrators, Malware Analyst, Forensic Practitioners, Student, Or Curious Security Professionals Interested In Learning Malware Analysis And Memory Forensics. Knowledge Of Programming Languages Such As C And Python Is Helpful But Is Not Mandatory. If You Have Written Few Lines Of Code And Have A Basic Understanding Of Programming Concepts, You'll Be Able To Get Most Out Of This Book.
دانلود کتاب Анализ вредоносных программ: изучение концепции, инструментальные средства и методы анализа и исследования вредоносных программ для Windows