Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
О научном редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Зачем нужна эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Установка Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
О чем пойдет речь в книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Часть I. Основы сетевых технологий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Часть II. Криптография . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Часть III. Социальная инженерия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Часть IV. Эксплуатация уязвимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
Часть V. Захват контроля над сетью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
Глава 1. Подготовка к работе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Виртуальная лаборатория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Настройка VirtualBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Настройка pfSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
Настройка внутренней сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
Конфигурирование параметров pfSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
Настройка Metasploitable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
Настройка Kali Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
Настройка Ubuntu Linux Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Ваш первый взлом: эксплуатация бэкдора в Metasploitable . . . . . . . . . . . . . . . . . .39
Получение IP-адреса сервера Metasploitable . . . . . . . . . . . . . . . . . . . . . . . .40
Использование бэкдора для получения доступа . . . . . . . . . . . . . . . . . . . . . . .41
Часть I. Основы сетевых технологий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Глава 2. Перехват трафика с помощью ARP-спуфинга . . . . . . . . . . . . . . . . . . . . . . . . .44
Передача данных в интернете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
MAC-адреса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
IP-адреса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
ARP-таблицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
Атака методом ARP-спуфинга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
Выполнение ARP-спуфинга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Обнаружение признаков ARP-спуфинга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Проверка ARP-таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
Написание ARP-спуфера на языке Python . . . . . . . . . . . . . . . . . . . . . . .55
MAC-флудинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Глава 3. Анализ перехваченного трафика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Пакеты и стек интернет-протоколов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Пятиуровневый стек интернет-протоколов . . . . . . . . . . . . . . . . . . . . . .60
Просмотр пакетов с помощью Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Анализ пакетов, собранных межсетевым экраном . . . . . . . . . . . . . . . . . . . . . . .69
Перехват трафика на порте 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
pfSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
Анализ пакетов в Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72
Глава 4. Создание TCP-оболочек и ботнетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
Сокеты и взаимодействие процессов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
TCP-рукопожатия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Обратная TCP-оболочка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
Получение доступа к компьютеру жертвы . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
Сканирование открытых портов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
Эксплуатация уязвимого сервиса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
Написание клиента обратной оболочки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
Написание TCP-сервера, прослушивающего клиентские соединения . . . . . . .83
Загрузка обратной оболочки на сервер Metasploitable . . . . . . . . . . . . . . .84
Ботнеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87
Мультиклиентный бот-сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88
SYN-сканирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
Выявление признаков XMas-сканирования . . . . . . . . . . . . . . . . . . . . . . . .90
Часть II. Криптография . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91
Глава 5. Криптография и программы-вымогатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
Шифрование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
Одноразовый блокнот . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
Генераторы псевдослучайных последовательностей . . . . . . . . . . . . . . .97
Ненадежные режимы работы алгоритмов блочного шифрования . . . . . .98
Надежные режимы работы алгоритмов блочного шифрования . . . . . . . .99
Шифрование и расшифровка файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101
Шифрование электронной почты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Криптографическая система с открытым ключом . . . . . . . . . . . . . . . . .103
Теория Ривеста — Шамира — Адлемана . . . . . . . . . . . . . . . . . . . . . . . . .103
Математические основы алгоритма RSA . . . . . . . . . . . . . . . . . . . . . . . .104
Шифрование файла с помощью алгоритма RSA . . . . . . . . . . . . . . . . . . . . . . . . . .106
Оптимальное асимметричное шифрование с дополнением . . . . . . . . . .108
Написание программы-вымогателя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Сервер для программы-вымогателя . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Расширение возможностей программы-вымогателя . . . . . . . . . . . . . . .113
Нерасшифрованные послания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Глава 6. Протокол TLS и алгоритм Диффи — Хеллмана . . . . . . . . . . . . . . . . . . . . . . .116
Протокол защиты транспортного уровня . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Проверка подлинности сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Центры сертификации и подписи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
Центры сертификации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Использование алгоритма Диффи — Хеллмана для вычисления общего ключа .122
Этап 1. Генерация общих параметров . . . . . . . . . . . . . . . . . . . . . . . . . .123
Этап 2. Создание открытого и закрытого ключей . . . . . . . . . . . . . .124
Почему хакер не может вычислить закрытый ключ . . . . . . . . . . . . . . .125
Этап 3. Обмен открытыми ключами и nonce-числами . . . . . . . . . . . .126
Этап 4. Вычисление общего секретного ключа . . . . . . . . . . . . . . . . .127
Этап 5. Формирование ключа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
Атака на протокол Диффи — Хеллмана . . . . . . . . . . . . . . . . . . . . . . . . . .129
Протокол Диффи — Хеллмана на эллиптических кривых . . . . . . . . . . . . . . . .129
Математика эллиптических кривых . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
Алгоритм удвоения и сложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Почему хакер не может использовать Gxy и axy для вычисления закрытого ключа A .132
Написание TLS-сокетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Защищенный клиентский сокет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Защищенный серверный сокет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Атака типа SSL stripping и обход HSTS . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Упражнение: добавление шифрования на сервер для программы-вымогателя .137
Часть III. Социальная инженерия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Глава 7. Фишинг и дипфейки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
Изощренная атака с применением социальной инженерии . . . . . . . . . . . . . .141
Подделка электронных писем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Поиск данных почтового сервера в DNS . . . . . . . . . . . . . . . . . . . . . . .142
Обмен данными по протоколу SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Написание спуфера электронной почты . . . . . . . . . . . . . . . . . . . . . . . .145
SMTPS-спуфинг электронной почты . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
Подделка сайтов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
Создание дипфейков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
Получение доступа к Google Colab . . . . . . . . . . . . . . . . . . . . . . . . . . .152
Импорт моделей машинного обучения . . . . . . . . . . . . . . . . . . . . . . . . . .153
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Клонирование голоса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Масштабный фишинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156
Аудит SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
Глава 8. Сбор информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Анализ связей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159
Maltego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Утекшие базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Угон SIM-карты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
Google Dorking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
Сканирование всей сети интернет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Masscan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168
Shodan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172
Ограничения, связанные с IPv6 и NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174
Интернет-протокол версии 6 (IPv6) . . . . . . . . . . . . . . . . . . . . . . . . . . .174
Технология NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Базы данных уязвимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176
Сканеры уязвимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Сканирование с помощью nmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
Discover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
Создание OSINT-инструмента . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Часть IV. Эксплуатация уязвимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
Глава 9. Поиск уязвимостей нулевого дня . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
Эксплуатация уязвимости Heartbleed в OpenSSL . . . . . . . . . . . . . . . . . . . . . .188
Создание эксплойта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189
Начало программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190
Написание сообщения Client Hello . . . . . . . . . . . . . . . . . . . . . . . . . . . .191
Чтение ответа сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Создание вредоносного Heartbeat-запроса . . . . . . . . . . . . . . . . . . . . .195
Чтение утекших из памяти данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Написание функции эксплойта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Собираем все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197
Фаззинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197
Упрощенный пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
Написание фаззера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
American Fuzzy Lop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
Символьное выполнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
Символьное выполнение тестовой программы . . . . . . . . . . . . . . . . . . .205
Пределы возможностей символьного выполнения . . . . . . . . . . . . . . . . .206
Динамическое символьное выполнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
Использование DSE для взлома пароля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Создание исполняемого двоичного файла . . . . . . . . . . . . . . . . . . . . . .210
Установка и запуск Angr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Программа Angr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Захват флага с помощью Angr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Фаззинг веб-протоколов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Фаззинг программ с открытым исходным кодом . . . . . . . . . . . . . . . . .215
Реализуйте собственный механизм конколического выполнения . . .216
Глава 10. Создание троянов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Воссоздание программы Drovorub с помощью Metasploit . . . . . . . . . . . . . .218
Создание сервера злоумышленника . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Создание клиента жертвы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Загрузка импланта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221
Использование агента злоумышленника . . . . . . . . . . . . . . . . . . . . . . . .222
Зачем использовать модуль ядра . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222
Сокрытие импланта в легитимном файле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
Создание трояна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
Размещение трояна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Скачивание зараженного файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
Управление имплантом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Обход антивируса с помощью кодировщиков . . . . . . . . . . . . . . . . . . . . . . . . . . .231
Кодировщик Base64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
Написание модуля Metasploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234
Кодировщик Shikata Ga Nai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Создание трояна для ОС Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Сокрытие трояна в Minesweeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Сокрытие трояна в документе Word (или другом безобидном файле) .238
Создание трояна для ОС Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
Разбор APK-файла для изучения импланта . . . . . . . . . . . . . . . . . . . . . .240
Сборка и подписывание APK-файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
Тестирование трояна для ОС Android . . . . . . . . . . . . . . . . . . . . . . . . .244
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Evil-Droid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248
Создание импланта на языке Python . . . . . . . . . . . . . . . . . . . . . . . . . .250
Обфускация импланта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Создание исполняемого файла для конкретной платформы . . . . . . .252
Глава 11. Создание и установка руткитов в ОС Linux . . . . . . . . . . . . . . . . . . . . .253
Написание модуля ядра Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .254
Резервное копирование виртуальной машины Kali Linux . . . . . . . .254
Написание кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Компиляция и запуск модуля ядра . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Изменение системных вызовов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
Принцип работы системных вызовов . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Перехват системных вызовов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Перехват системного вызова Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Сокрытие файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Структура linux_dirent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Написание кода перехвата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Использование инструмента Armitage для эксплуатации хоста и установки руткита .269
Сканирование сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271
Эксплуатация хоста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
Установка руткита . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Кейлоггер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Скрывающийся модуль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277
Глава 12. Кража и взлом паролей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278
SQL-инъекция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278
Кража паролей из базы данных сайта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Перечисление доступных на веб-сервере файлов . . . . . . . . . . . . . . . . . . . . . .281
Проведение SQL-инъекции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282
Создание инструмента для выполнения SQL-инъекции . . . . . . . . . . . . . . . . . .283
HTTP-запросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
Написание программы для внедрения кода . . . . . . . . . . . . . . . . . . . . .286
Использование SQLMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
Хеширование паролей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .290
Анатомия хеш-функции MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291
Взлом хешей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294
Подсаливание хешей с помощью nonce-числа . . . . . . . . . . . . . . . . . . .295
Создание инструмента для взлома соленых хешей . . . . . . . . . . . . . . . . . . . . .296
Популярные инструменты для взлома хешей и полного перебора . . . . . . . .297
John the Ripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Hashcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297
Hydra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
NoSQL-инъекция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
Перебор учетных данных методом грубой силы . . . . . . . . . . . . . . . . . .301
Burp Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302
Глава 13. Эксплуатация уязвимостей межсайтового скриптинга . . . . . . . . . . . . .304
Межсайтовый скриптинг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
Как код JavaScript может быть вредоносным . . . . . . . . . . . . . . . . . .306
Хранимые XSS-атаки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
Отраженные XSS-атаки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Обнаружение уязвимостей с помощью OWASP Zed Attack Proxy . . . . . . . . .312
Использование полезных нагрузок инструмента BeEF . . . . . . . . . . . . . . . . . .315
Внедрение скрипта BeEF Hook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
Реализация атаки с помощью методов социальной инженерии . . . .316
Переходим от браузера к компьютеру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Эксплуатация старой версии браузера Chrome . . . . . . . . . . . . . . . . .319
Установка руткитов путем эксплуатации уязвимостей сайтов . . . .320
Упражнение: поиск ошибок в программе Bug Bounty . . . . . . . . . . . . . . . . . . .323
Часть V. Захват контроля над сетью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .325
Глава 14. Проброс трафика и повышение привилегий . . . . . . . . . . . . . . . . . . . . . . . .326
Проброс трафика с помощью устройства с двойной привязкой . . . . . . . . . .327
Настройка устройства с двойной привязкой . . . . . . . . . . . . . . . . . . . .327
Подключение машины к частной сети . . . . . . . . . . . . . . . . . . . . . . . . . .330
Проброс трафика с помощью Metasploit . . . . . . . . . . . . . . . . . . . . . . . .331
Создание атакующего прокси-сервера . . . . . . . . . . . . . . . . . . . . . . . . .335
Извлечение хешей паролей из памяти машины Linux . . . . . . . . . . . . . . . . . . .336
Где система Linux хранит имена пользователей и пароли . . . . . .336
Уязвимость Dirty COW и атака на повышение привилегий . . . . . . .339
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
Настройка NAT на устройстве с двойной привязкой . . . . . . . . . . . .342
Материалы по теме повышения привилегий в ОС Windows . . . . . . . . .343
Глава 15. Перемещение по корпоративной сети Windows . . . . . . . . . . . . . . . . . . . . .344
Создание виртуальной лаборатории Windows . . . . . . . . . . . . . . . . . . . . . . . . .345
Извлечение хешей паролей с помощью Mimikatz . . . . . . . . . . . . . . . . . . . . . .345
Передача хеша по протоколу NT LAN Manager . . . . . . . . . . . . . . . . . . . . . . . . .348
Исследование корпоративной сети Windows . . . . . . . . . . . . . . . . . . . . . . . . . .350
Атака на сервис DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351
Атака на сервисы Active Directory и LDAP . . . . . . . . . . . . . . . . . . . . . . . . . .353
Создание клиента для генерации LDAP-запросов . . . . . . . . . . . . . . . .355
Использование инструментов SharpHound и Bloodhound для LDAP-перечисления .358
Атака на протокол Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
Атака типа Pass-the-Ticket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
Атаки типа Golden Ticket и DC Sync . . . . . . . . . . . . . . . . . . . . . . . . .363
Упражнение: Kerberoasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364
Глава 16. Дальнейшие шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
Создание укрепленной хакерской среды . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
Сохранение анонимности с помощью Tor и Tails . . . . . . . . . . . . . . .366
Настройка виртуального выделенного сервера . . . . . . . . . . . . . . . . .368
Настройка SSH-ключей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .369
Установка хакерских инструментов . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
Укрепление сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
Аудит укрепленного сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .374
Дополнительные темы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375
Программно-определяемые радиосистемы . . . . . . . . . . . . . . . . . . . . . . . .375
Атака на инфраструктуру сотовой связи . . . . . . . . . . . . . . . . . . . . . .376
Воздушный зазор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Обратная разработка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377
Физические инструменты для взлома систем . . . . . . . . . . . . . . . . . . . .377
Криминалистика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Взлом промышленных систем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Квантовые вычисления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Вступайте в сообщество . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Практическое руководство по взлому компьютерных систем с нуля, от перехвата трафика до создания троянов. Книга «Этичный хакинг» освещает современные проблемы кибербезопасности и помогает освоить навыки, необходимые любому этичному хакеру. Сделайте первый шаг в карьере пентестера, ознакомившись с методами взлома, которые используют эксперты.