Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 637335)
Контекстум
Электро-2024

Анализ вредоносных программ (4000,00 руб.)

0   0
Первый авторМонаппа
ИздательствоМ.: ДМК Пресс
Страниц453
ID794747
АннотацияКнига учит концепциям, инструментам и методам распознавания вредоносных программ Windows и общим элементам анализа вредоносного ПО. Для лучшего восприятия в примерах данной книги используются различные реальные образцы вредоносного ПО, зараженные образы памяти и визуальные диаграммы. Издание предназначено для специалистов-практиков в области кибербезопасности, будет полезно студентам, аспирантам и инженерам соответствующих специальностей. Оно пригодится в работе сотрудникам служб информационной безопасности и инженерам-исследователям в области кибербезопасности.
ISBN978-5-97060-700-8
УДК4.382
ББК32.973-018
Монаппа, К.А. Анализ вредоносных программ / К.А. Монаппа .— Москва : ДМК Пресс, 2019 .— 453 с. — ISBN 978-5-97060-700-8 .— URL: https://rucont.ru/efd/794747 (дата обращения: 01.06.2024)

Предпросмотр (выдержки из произведения)

Анализ_вредоносных_программ.pdf
Стр.5
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Анализ_вредоносных_программ.pdf
УДК 004.382 ББК 32.973-018 М77 М77 Анализ вредоносных программ / пер. с анг. Д. А. Беликова. – М.: ДМК Пресс, 2019. – 452 с.: ил. Монаппа К. А. ISBN 978-5-97060-700-8 Книга учит концепциям, инструментам и методам распознавания вредоносных программ Windows и общим элементам анализа вредоносного ПО. Для лучшего восприятия в примерах данной книги используются различные реальные образцы вредоносного ПО, зараженные образы памяти и визуальные диаграммы. Издание предназначено для специалистов-практиков в области кибербезопасности, будет полезно студентам, аспирантам и инженерам соответствующих специальностей. Оно пригодится в работе сотрудникам служб информационной безопасности и инженерам-исследователям в области кибербезопасности. УДК 004.382 ББК 32.973-018 Copyright © 2018 All rights reserved. This translation published under license with the original publisher Packt Publishing. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78839-250-1 (анг.) ISBN 978-5-97060-700-8 (рус.) Copyright © 2018 Packt Publishing © Оформление, издание, перевод, ДМК Пресс, 2019
Стр.5
Содержание Соавторы ............................................................................................................15 Об авторе ...............................................................................................................15 О рецензентах .......................................................................................................16 Предисловие ....................................................................................................17 Для кого эта книга ................................................................................................18 Что рассматривается в этой книге ......................................................................18 Чтобы получить максимальную отдачу от этой книги ......................................19 Скачать цветные изображения ............................................................................19 Используемые условные обозначения ................................................................19 Глава 1. Введение в анализ вредоносных программ ......................21 1.1 Что такое вредоносное ПО? ............................................................................21 1.2 Что такое анализ вредоносных программ? ...................................................23 1.3 Почему анализ вредоносных программ? ......................................................23 1.4 Типы анализа вредоносных программ .........................................................24 1.5 Настройка тестовой среды .............................................................................25 1.5.1 Требования к среде .................................................................................26 1.5.2 Обзор архитектуры тестовой среды ......................................................26 1.5.3 Установка и настройка виртуальной машины Linux .............................28 1.5.4 Установка и настройка виртуальной машины Windows .......................34 Глава 2. Статический анализ ......................................................................39 2.1 Определение типа файла ................................................................................39 2.1.1 Определение типа файла с использованием ручного метода ..............40 2.1.2 Определение типа файла с использованием инструментальных средств ..............................................................................41 2.1.3 Определение типа файла с помощью Python .......................................41 2.2 Сличение информации с помощью цифровых отпечатков ........................42 2.2.1 Генерирование криптографической хеш-функции с использованием инструментальных средств ..............................................43 2.2.2 Определение криптографической хеш-функции в Python ...................44 2.3 Многократное антивирусное сканирование .................................................44 1.6 Источники вредоносных программ...............................................................37 Резюме ...................................................................................................................38
Стр.6
6  Содержание 2.3.1 Сканирование подозрительного бинарного файла с помощью VirusTotal .......................................................................................44 2.3.2 Запрос значений хеш-функций с помощью открытого API VirusTotal ...45 2.4 Извлечение строк ............................................................................................48 2.4.1 Извлечение строк с использованием инструментальных средств .......48 2.4.2 Расшифровка обфусцированных строк с использованием FLOSS .......50 2.5 Определение обфускации файла ...................................................................51 2.5.1 Упаковщики и крипторы .........................................................................52 2.5.2 Обнаружение обфусцированного файла с помощью Exeinfo PE ..........54 2.6 Проверка информации о PE-заголовке .........................................................55 2.6.1 Проверка файловых зависимостей и импорт ........................................56 2.6.2 Проверка экспорта ...................................................................................59 2.6.3 Изучение таблицы секций PE-файла .....................................................60 2.6.4 Изучение временной метки компиляции .............................................63 2.6.5 Изучение ресурсов PE-файлов ................................................................64 2.7 Сравнение и классификация вредоносных программ .................................66 2.7.1 Классификация вредоносных программ с использованием нечеткого хеширования ....................................................66 2.7.2 Классификация вредоносных программ с использованием хеша импорта ...................................................................68 2.7.3 Классификация вредоносных программ с использованием хеша секций .......................................................................70 2.7.4 Классификация вредоносных программ с использованием YARA .......70 2.7.4.1 Установка YARA .................................................................................71 2.7.4.2 Основы правил YARA ........................................................................71 2.7.4.3 Запуск YARA .......................................................................................72 2.7.4.4 Применение YARA .............................................................................73 Резюме ...................................................................................................................77 Глава 3. Динамический анализ .................................................................78 3.1 Обзор тестовой среды .....................................................................................78 3.2 Системный и сетевой мониторинг ................................................................79 3.3 Инструменты динамического анализа (мониторинга) ................................80 3.3.1 Проверка процесса с помощью Process Hacker ......................................80 3.3.2 Определение взаимодействия системы с помощью Process Monitor ..81 3.3.3 Регистрация действий системы с использованием Noriben .................83 3.3.4 Захват сетевого трафика с помощью Wireshark .....................................84 3.3.5 Симуляция служб с INetSim .....................................................................85 3.4 Этапы динамического анализа .....................................................................87 3.5 Собираем все вместе: анализируем исполняемый файл вредоносного ПО...88 3.5.1 Статический анализ образца ..................................................................88 3.5.2 Динамический анализ образца ...............................................................90 3.6 Анализ динамически подключаемой библиотеки (DLL) .............................93
Стр.7
Содержание  7 3.6.1 Почему злоумышленники используют библиотеки DLL .......................95 3.6.2 Анализ DLL с помощью rundll32.exe .......................................................95 3.6.2.1 Как работает rundll32.exe .................................................................96 3.6.2.2 Запуск DLL с использованием rundll32.exe .....................................96 Пример 1 – Анализ DLL без экспорта .........................................................96 Пример 2 – Анализ DLL, содержащей экспорт ............................................98 Пример 3 – Анализ DLL, принимающей аргументы экспорта ..................99 3.6.3 Анализ DLL с помощью проверки процессов ......................................100 Резюме .................................................................................................................102 Глава 4. Язык ассемблера и дизассемблирование для начинающих ..........................................103 4.1 Основы работы с компьютером ...................................................................104 4.1.1 Память ....................................................................................................105 4.1.1.1 Как данные хранятся в памяти ......................................................105 4.1.2 Центральный процессор .......................................................................106 4.1.2.1 Машинный язык .............................................................................106 4.1.3 Основы программы ...............................................................................106 4.1.3.1 Компиляция программы ................................................................106 4.1.3.2 Программа на диске ........................................................................107 4.1.3.3 Программа в памяти .......................................................................108 4.1.3.4 Дизассемблирование программы (от машинного кода к коду ассемблера) ...................................................111 4.2 Регистры процессора ....................................................................................112 4.2.1 Регистры общего назначения ...............................................................112 4.2.2 Указатель инструкций (EIP) ...................................................................113 4.2.3 Регистр EFLAGS ......................................................................................113 4.3 Инструкции по передаче данных ................................................................113 4.3.1 Перемещение константы в регистр .....................................................113 4.3.2 Перемещение значений из регистра в регистр ...................................114 4.3.3 Перемещение значений из памяти в регистры ...................................114 4.3.4 Перемещение значений из регистров в память .................................116 4.3.5 Задача по дизассемблированию ..........................................................116 4.3.6 Решение задачи .....................................................................................117 4.4 Арифметические операции ..........................................................................119 4.4.1 Задача по дизассемблированию ..........................................................120 4.4.2 Решение задачи .....................................................................................120 4.5 Побитовые операции ....................................................................................121 4.6 Ветвление и условные операторы ...............................................................123 4.6.1 Безусловные переходы ..........................................................................123 4.6.2 Условные переходы ................................................................................123 4.6.3 Оператор if .............................................................................................125 4.6.4 Оператор If-Else ....................................................................................125
Стр.8
8  Содержание 4.6.5 Оператор If-Elseif-Else ..........................................................................126 4.6.6 Задача по дизассемблированию ..........................................................127 4.6.7 Решение задачи ......................................................................................127 4.7 Циклы ............................................................................................................130 4.7.1 Задача по дизассемблированию ...........................................................131 4.7.2 Решение задачи ......................................................................................132 4.8 Функции ........................................................................................................133 4.8.1 Стек .........................................................................................................134 4.8.2 Функция вызова .....................................................................................135 4.8.3 Возвращение из функции......................................................................136 4.8.4 Параметры функции и возвращаемые значения ...............................136 4.9 Массивы и строки .........................................................................................140 4.9.1 Задача по дизассемблированию ..........................................................142 4.9.2 Решение задачи .....................................................................................142 4.9.3 Строки ....................................................................................................146 4.9.3.1 Строковые инструкции ...................................................................146 4.9.3.2 Перемещение из памяти в память (movsx) ...................................147 4.9.3.3 Инструкции повтора (rep) ..............................................................148 4.9.3.4 Сохранение значения из регистра в память (Stosx) .....................148 4.9.3.5 Загрузка из памяти в регистр (lodsx) .............................................149 4.9.3.6 Сканирование памяти (scasx) ........................................................149 4.9.3.7 Сравнение значений в памяти (Cmpsx) ........................................149 4.10 Структуры ....................................................................................................149 4.11 Архитектура x64 ..........................................................................................151 4.11.1 Анализ 32-битного исполняемого файла на 64-разрядной операционной системе Windows ......................................152 4.12 Дополнительная литература ......................................................................153 Резюме .................................................................................................................154 Глава 5. Дизассемблирование с использованием IDA ..................155 5.1 Инструментальные средства анализа кода .................................................155 5.2 Статический анализ кода (дизассемблирование) с использованием IDA .....156 5.2.1 Загрузка двоичного файла в IDA ...........................................................157 5.2.2 Изучение окон IDA ................................................................................158 5.2.2.1 Окно Дизассемблирование .............................................................159 5.2.2.2 Окно Функции .................................................................................161 5.2.2.3 Окно Вывод ......................................................................................161 5.2.2.4 Окно шестнадцатеричного представления...................................161 5.2.2.5 Окно Структуры ..............................................................................161 5.2.2.6 Окно Импорт ...................................................................................161 5.2.2.7 Окно Экспорт ...................................................................................162 5.2.2.8 Окно Строки ....................................................................................162 5.2.2.9 Окно Сегменты ................................................................................162
Стр.9
Содержание  9 5.2.3 Улучшение дизассемблирования с помощью IDA ...............................162 5.2.3.1 Переименование переменных и функций ....................................164 5.2.3.2 Комментирование в IDA .................................................................165 5.2.3.3 База данных IDA .............................................................................166 5.2.3.4 Форматирование операндов ..........................................................168 5.2.3.5 Навигация по адресам ...................................................................168 5.2.3.6 Перекрестные ссылки .....................................................................169 5.2.3.7 Вывод списка всех перекрестных ссылок ......................................171 5.2.3.8 Ближнее представление и графы ...................................................172 5.3 Дизассемблирование Windows API ..............................................................175 5.3.1 Понимание Windows API ......................................................................176 5.3.1.1 API-функции Юникод и ANSI ........................................................179 5.3.1.2 Расширенные API-функции ..........................................................180 5.3.2 Сравнение 32-битного и 64-битного Windows API ............................180 5.4 Исправление двоичного кода с использованием IDA ................................182 5.4.1 Исправление байтов программы .........................................................183 5.4.2 Исправление инструкций .....................................................................185 5.5 Сценарии и плагины IDA ..............................................................................186 5.5.1 Выполнение сценариев IDA ..................................................................186 5.5.2 IDAPython ...............................................................................................187 5.5.2.1 Проверка наличия API CreateFile ...................................................188 5.5.2.2 Перекрестные ссылки кода на CreateFile с использованием IDAPython.....................................................................189 5.5.3 Плагины IDA ...........................................................................................189 Резюме .................................................................................................................190 Глава 6. Отладка вредоносных двоичных файлов .........................191 6.1 Общие концепции отладки ..........................................................................192 6.1.1 Запуск и подключение к процессам .....................................................192 6.1.2 Контроль выполнения процесса ...........................................................192 6.1.3 Прерывание программы с помощью точек останова .........................193 6.1.4 Трассировка выполнения программы ..................................................195 6.2 Отладка двоичного файла с использованием x64dbg ................................195 6.2.1 Запуск нового процесса в x64dbg ..........................................................195 6.2.2 Присоединение к существующему процессу с использованием x64dbg ....196 6.2.3 Интерфейс отладчика x64dbg ................................................................197 6.2.4 Контроль за выполнением процесса с использованием x64dbg .........200 6.2.5 Установка точки останова в x64dbg ......................................................201 6.2.6 Отладка 32-битного вредоносного ПО .................................................201 6.2.7 Отладка 64-битной вредоносной программы .....................................203 6.2.8 Отладка вредоносной DLL-библиотеки с использованием x64dbg ....205 6.2.8.1 Использование rundll32.exe для отладки библиотеки DLL в x64dbg ...........................................................................206
Стр.10
10  Содержание 6.2.8.2 Отладка DLL в определенном процессе ........................................207 6.2.9 Трассировка выполнения в x64dbg .......................................................208 6.2.9.1 Трассировка инструкций ...............................................................209 2.9.2 Трассировка функций ........................................................................210 6.2.10 Исправления в x64dbg ..........................................................................211 6.3 Отладка двоичного файла с использованием IDA ......................................213 6.3.1 Запуск нового процесса в IDA ...............................................................213 6.3.2 Присоединение к существующему процессу с использованием IDA ...214 6.3.3 Интерфейс отладчика IDA .....................................................................215 6.3.4 Контроль выполнения процесса с использованием IDA ....................217 6.3.5 Установка точки останова в IDA ............................................................217 6.3.6 Отладка вредоносных исполняемых файлов .......................................219 6.3.7 Отладка вредоносной библиотеки DLL с помощью IDA .....................220 6.3.7.1 Отладка DLL в определенном процессе .........................................221 6.3.8 Трассировка выполнения с использованием IDA ................................222 6.3.9 Написание сценариев отладки с использованием IDAPython ............225 6.3.9.1 Пример – определение файлов, доступных вредоносному ПО ...228 6.4 Отладка приложения .NET............................................................................229 Резюме .................................................................................................................231 Глава 7. Функциональные возможности вредоносного ПО и его персистентность ..........................................232 7.1 Функциональные возможности вредоносного ПО ....................................232 7.1.1 Загрузчик ................................................................................................232 7.1.2 Дроппер ...................................................................................................233 7.1.2.1 Реверс-инжиниринг 64-битного дроппера ...................................235 7.1.3 Кейлоггер ................................................................................................236 7.1.3.1 Кейлоггер, использующий GetAsyncKeyState() ..............................236 7.1.3.2 Кейлоггер, использующий SetWindowsHookEx() ...........................238 7.1.4 Репликация вредоносных программ через съемные носители ..........238 7.1.5 Управление и контроль, осуществляемые вредоносными программами (С2) ................................................................243 7.1.5.1 Управление и контроль с использованием HTTP ..........................243 7.1.5.2 Осуществление команды и контроля в пользовательском режиме ......................................................................246 7.1.6 Выполнение на основе PowerShell ........................................................249 7.1.6.1 Основы команд PowerShell .............................................................250 7.1.6.2 Сценарии PowerShell и политика выполнения .............................251 7.1.6.2 Анализ команд/скриптов PowerShell .............................................252 7.1.6.3 Как злоумышленники используют PowerShell ..............................253 7.2 Методы персистентности вредоносных программ ....................................255 7.2.1 Запуск ключа реестра .............................................................................255 7.2.2 Запланированные задачи ......................................................................256
Стр.11
Содержание  11 7.2.3 Папка запуска .........................................................................................256 7.2.4 Записи реестра Winlogon .......................................................................257 7.2.5 Параметры выполнения файла изображения ......................................258 7.2.6 Специальные возможности ...................................................................259 7.2.7 AppInit_DLLs ...........................................................................................261 7.2.8 Захват порядка поиска DLL ...................................................................262 7.2.9 Захват COM-объекта ..............................................................................263 7.2.10 Служба ..................................................................................................266 Резюме .................................................................................................................270 Глава 8. Внедрение кода и перехват ....................................................271 8.1 Виртуальная память .....................................................................................271 8.1.1 Компоненты памяти процесса (пространство пользователя) ............274 8.1.2 Содержимое памяти ядра (пространство ядра) ..................................276 8.2 Пользовательский режим и режим ядра .....................................................277 8.2.1 Поток вызовов Windows API ..................................................................278 8.3 Методы внедрения кода ...............................................................................280 8.3.1 Удаленное внедрение DLL .....................................................................282 8.3.2 Внедрение DLL с использованием асинхронного вызова процедур ....284 8.3.3 Внедрение DLL с использованием SetWindowsHookEx() .....................286 8.3.4 Внедрение DLL с использованием прокладок ....................................288 8.3.4.1 Создание прокладки .......................................................................289 8.3.4.2 Артефакты прокладки ...................................................................294 8.3.4.3 Как злоумышленники используют прокладки .............................295 8.3.4.4 Анализ базы данных прокладки ...................................................296 8.3.5 Внедрение удаленного исполняемого файла или шелл-кода .............297 8.3.6 Внедрение пустого процесса (опустошение процесса) .......................298 8.4 Методы перехвата ........................................................................................302 8.4.1 Перехват таблицы адресов импорта .....................................................303 8.4.2 Встраиваемый перехват (Inline Patching).............................................304 8.4.3 Исправления в памяти с помощью прокладки ....................................307 8.5 Дополнительная литература ........................................................................310 Резюме .................................................................................................................311 Глава 9. Методы обфускации вредоносных программ ................312 9.1 Простое кодирование ...................................................................................314 9.1.1 Шифр Цезаря ..........................................................................................314 9.1.1.1 Как работает шифр Цезаря ............................................................314 8.1.1.2 Расшифровка шифра Цезаря в Python ...........................................315 9.1.2 Кодирование Base64 ..............................................................................316 9.1.2.1 Перевод данных в Base64 ...............................................................316 9.1.2.2 Кодирование и декодирование Base64 ..........................................318 9.1.2.3 Декодирование пользовательской версии Base64 ........................319
Стр.12
12  Содержание 9.1.2.4 Идентификация Base64 ..................................................................321 9.1.3 XOR-шифрование ...................................................................................322 9.1.3.1 Однобайтовый XOR .........................................................................323 9.1.3.2 Поиск XOR-ключа с помощью полного перебора ........................326 9.1.3.3 Игнорирование XOR-шифрования нулевым байтом ...................327 9.1.3.4 Многобайтовое XOR-шифрование.................................................329 8.1.3.5 Идентификация XOR-шифрования ...............................................330 9.2 Вредоносное шифрование ...........................................................................331 9.2.1 Идентификация криптографических подписей с помощью Signsrch ...332 9.2.2 Обнаружение криптоконстант с помощью FindCrypt2 .......................335 9.2.3 Обнаружение криптографических подписей с использованием YARA .................................................................................336 9.2.4 Расшифровка в Python ...........................................................................337 9.3 Пользовательское кодирование/шифрование ............................................338 9.4 Распаковка вредоносных программ ............................................................342 9.4.1 Ручная распаковка .................................................................................343 9.4.1.1 Идентификация исходной точки входа .........................................344 9.4.1.2 Выгрузка памяти процесса с помощью Scylla ...............................347 9.4.1.3 Исправление таблицы импорта .....................................................348 9.4.2 Автоматическая распаковка .................................................................350 Резюме .................................................................................................................353 Глава 10. Охота на вредоносные программы с использованием криминалистического анализа дампов памяти ..............................................................................................354 10.1 Этапы криминалистического анализа дампов памяти ............................355 10.2 Создание дампа памяти .............................................................................356 10.2.1 Создание дампа памяти с использованием DumpIt ..........................356 10.3 Обзор Volatility ...........................................................................................359 10.3.1 Установка Volatility ..............................................................................359 10.3.1.1 Автономный исполняемый файл Volatility .................................359 10.3.1.2 Исходный пакет Volatility .............................................................360 10.3.2 Использование Volatility .....................................................................361 10.4 Перечисление процессов ............................................................................362 10.4.1 Обзор процесса ....................................................................................363 10.4.1.1 Изучение структуры _EPROCESS ..................................................364 10.4.1.2 Понимание ActiveProcessLinks .....................................................367 10.4.2. Вывод списка процессов с использованием psscan ..........................369 10.4.2.1 Прямое манипулирование объектами ядра (DKOM) ..................369 10.4.2.2 Общие сведения о сканировании тегов пула ..............................371 10.4.3 Определение связей между процессами ............................................373 10.4.4 Вывод списка процессов с использованием psxview .........................374
Стр.13
Содержание  13 10.5 Вывод списка дескрипторов процесса ......................................................376 10.6 Вывод списка DLL........................................................................................379 10.6.1 Обнаружение скрытой библиотеки DLL с помощью ldrmodules ......382 10.7 Сброс исполняемого файла и DLL ..............................................................383 10.8 Вывод списка сетевых подключений и сокетов ........................................385 10.9 Проверка реестра ........................................................................................386 10.10 Проверка служб .........................................................................................388 10.11 Извлечение истории команд ....................................................................390 Резюме .................................................................................................................393 Глава 11. Обнаружение сложных вредоносных программ с использованием криминалистического анализа дампов памяти .............................................................................394 11.1 Обнаружение внедрения кода ....................................................................394 11.1.1 Получение информации о дескрипторе виртуальных адресов ........396 11.1.2 Обнаружение внедренного кода с использованием дескриптора виртуальных адресов ................................397 11.1.3 Сброс области памяти процесса .........................................................399 11.1.4 Обнаружение внедренного кода с помощью malfind ........................399 11.2 Исследование внедрения пустого процесса .............................................400 11.2.1 Этапы внедрения пустого процесса ...................................................401 11.2.2 Обнаружение внедрения пустого процесса ......................................402 11.2.3 Варианты внедрения пустого процесса .............................................404 11.3 Обнаружение перехвата API .......................................................................407 11.4 Руткиты в режиме ядра ..............................................................................408 11.5 Вывод списка модулей ядра .......................................................................409 11.5.1 Вывод списка модулей ядра с использованием driverscan ...............411 11.6 Обработка ввода/вывода ............................................................................412 11.6.1 Роль драйвера устройства ....................................................................414 11.6.2 Роль менеджера ввода/вывода ............................................................421 11.6.3 Связь с драйвером устройства ............................................................421 11.6.4 Запросы ввода/вывода для многоуровневых драйверов ..................424 11.7 Отображение деревьев устройств ..............................................................427 11.8 Обнаружение перехвата пространства ядра .............................................429 11.8.1 Обнаружение перехвата SSDT .............................................................429 11.8.2 Обнаружение перехвата IDT ...............................................................432 11.8.3 Идентификация встроенных перехватов ядра ..................................433 11.8.4 Обнаружение перехватов функций IRP ..............................................434 11.9 Обратные вызовы из ядра и таймеры .......................................................437 Резюме .................................................................................................................442 Предметный указатель ..............................................................................443
Стр.14

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст