Black Hat Go исследует темные стороны Go — популярного языка программирования, который высоко ценится хакерами за его простоту, эффективность и надежность. Эта книга — арсенал практических приемов для специалистов по безопасности и хакеров — поможет вам в тестировании систем, создании и автоматизации инструментов, а также улучшении навыков противодействия угрозам. Все это реализуется с помощью обширных возможностей Go.
Вы начнете с базового обзора синтаксиса языка и стоящей за ним философии, после чего перейдете к изучению примеров, которые пригодятся для разработки инструментов. Вас ждет знакомство с протоколами HTTP, DNS и SMB. Далее вы перейдете к изучению различных тактик и задач, с которыми сталкиваются пентестеры, рассмотрите такие темы, как кража данных, сниффинг сетевых пакетов и разработка эксплойтов. Вы научитесь создавать динамические встраиваемые инструменты, после чего перейдете к изучению криптографии, атаке на Windows и стеганографии.
Готовы расширить арсенал инструментов безопасности? Тогда вперед!
Author(s): Том Стил, Крис Паттен, Дэн Коттманн
Series: Библиотека программиста
Edition: 1
Publisher: Питер
Year: 2022
Language: Russian
Commentary: Publisher's PDF
Pages: 384
City: СПб.
Tags: Programming; Databases; Python; Penetration Testing; MySQL; PostgreSQL; MongoDB; DNS; HTTP; Docker; Cryptography; Microsoft Windows; Go; C; Microsoft SQL Server; Packet Filtering; Highly Rated; Hash Functions; Exploitation; Metasploit; SQL Injection; Lua; Fuzzing; Samba; Brute Force; TCP; Packet Analysis; Routing; Steganography; Packet Capture; Portable Executable Format; Credential Harvesting
Об авторах
О научном редакторе
Предисловие
Благодарности
Введение
Для кого эта книга
Чего в этой книге нет
Почему Go
Чем может не понравиться Go
Краткий обзор
От издательства
Глава 1. Go. Основы
Настройка среды
Скачивание и установка Go
Настройка GOROOT для определения расположения двоичного файла
Настройка GOPATH для определения местоположения рабочего пространства
Выбор интегрированной среды разработки
Использование стандартных команд Go tool
Синтаксис Go
Типы данных
Управляющие конструкции
Многопоточность
Обработка ошибок
Обработка структурированных данных
Резюме
Глава 2. TCP, сканеры и прокси
TCP Handshaking
Обход брандмауэра с помощью переадресации портов
Написание TCP-сканера
Тестирование портов на доступность
Выполнение однопоточного сканирования
Параллельное сканирование
Создание TCP-прокси
Использование io.Reader и io.Writer
Создание эхо-сервера
Создание буферизованного слушателя для улучшения кода
Проксирование TCP-клиента
Воспроизведение функции Netcat для выполнения команд
Резюме
Глава 3. HTTP-клиенты и инструменты удаленного доступа
Основы HTTP с Go
Вызов HTTP API
Создание запроса
Парсинг структурированного ответа
Создание HTTP-клиента для взаимодействия с Shodan
Шаги построения API клиента
Проектирование структуры
Приводим в порядок вызовы API
Запрос информации о подписке Shodan
Создание клиента
Взаимодействие с Metasploit
Настройка рабочей среды
Определение задачи
Извлечение действительного токена
Определение методов запроса и ответа
Создание структуры конфигурации и метода RPC
Выполнение удаленных вызовов
Создание работающей программы
Скрапинг Bing и парсинг метаданных документов
Настройка среды и планирование
Определение пакета метаданных
Отображение данных в структуры
Поиск и получение файлов через Bing
Резюме
Глава 4. HTTP-серверы, маршрутизация и промежуточное ПО
Основы HTTP-серверов
Создание простого сервера
Создание простого маршрутизатора
Создание простого промежуточного ПО
Маршрутизация с помощью пакета gorilla/mux
Создание промежуточного ПО с помощью Negroni
Добавление аутентификации с помощью Negroni
Создание HTML-ответов с помощью шаблонов
Сбор учетных данных
Кейлогинг с помощью WebSocket API
Мультиплексирование C2-соединений
Резюме
Глава 5. Эксплуатация DNS
Написание DNS-клиентов
Извлечение А-записей
Обработка ответов от структуры Msg
Перечисление поддоменов
Написание DNS-серверов
Настройка лаборатории и знакомство с сервером
Создание DNS-сервера и прокси
Резюме
Глава 6. Взаимодействие с SMB и NTLM
Пакет SMB
Что такое SMB
Токены безопасности SMB
Настройка сессии SMB
Смешанное кодирование полей структуры
Метаданные и ссылочные поля
Реализация SMB
Подбор паролей с помощью SMB
Повторное воспроизведение паролей с помощью техники pass-the-hash
Восстановление NTLM-паролей
Вычисление хеша
Восстановления хеша NTLM
Резюме
Глава 7. Взлом баз данных и файловых систем
Настройка баз данных с помощью Docker
Установка и заполнение MongoDB
Установка и заполнение баз данных PostgreSQL и MySQL
Установка и заполнение баз данных Microsoft SQL Server
Подключение к базам данных и запрос информации с помощью Go
Запрос данных из MongoDB
Обращение к базам данных SQL
Создание майнера данных
Реализация майнера данных из MongoDB
Реализация майнера для MySQL
Кража данных из файловых систем
Резюме
Глава 8. Обработка сырых пакетов
Настройка среды
Идентификация устройств с помощью субпакета pcap
Онлайн-перехват и фильтрация результатов
Сниффинг и отображение учетных данных пользователя в открытом виде
Сканирование портов через защиту от SYN-флуда
Проверка TCP-флагов
Создание фильтра BPF
Написание сканера портов
Резюме
Глава 9. Написание и портирование эксплойтов
Создание фаззера
Фаззинг для переполнения буфера
Фаззинг SQL-инъекций
Портирование эксплойтов в Go
Портирование эксплойта из Python
Портирование эксплойта из C
Создание шелл-кода в Go
Преобразование в C
Преобразование в Hex
Преобразование в Num
Преобразование в Raw
Кодировка Base64
Примечание по ассемблеру
Резюме
Глава 10. Плагины и расширяемые инструменты Go
Использование собственной системы плагинов Go
Создание основной программы
Создание плагина для подбора паролей
Запуск сканера
Создание плагинов в Lua
Создание HTTP-функции head()
Создание функции get()
Регистрация функций с помощью VM Lua
Написание функции main()
Создание скрипта плагина
Тестирование плагина Lua
Резюме
Глава 11. Реализация криптографии и криптографические атаки
Обзор базовых принципов криптографии
Криптография в стандартной библиотеке Go
Знакомство с хешированием
Взлом хеша MD5 или SHA-256
Реализация bcrypt
Аутентификация сообщений
Шифрование данных
Шифрование с симметричным ключом
Асимметричная криптография
Брутфорс RC2
Подготовка
Работа производителя
Выполнение работы и расшифровка данных
Написание функции Main
Выполнение программы
Резюме
Глава 12. Взаимодействие с системой Windows и ее анализ
Windows API-функция OpenProcess()
Типы unsafe.Pointer и uintptr
Внедрение в процесс с помощью пакета syscall
Определение Windows DLL и присваивание переменных
Получение токена процесса с помощью OpenProcess Windows API
Управление памятью с помощью VirtualAllocEx Windows API
Запись в память с помощью WriteProcessMemory Windows API
Поиск LoadLibraryA с помощью GetProcessAddress Windows API
Выполнение вредоносной DLL с помощью CreateRemoteThread Windows API
Проверка внедрения с помощью WaitforSingleObject Windows API
Очистка с помощью VirtualFreeEx Windows API
Дополнительные упражнения
Формат файлов Portable Executable
Особенности формата файлов PE
Написание PE-парсера
Дополнительные упражнения
Использование Си с Go
Установка набора инструментов C для Windows
Создание окна сообщений с помощью C и Windows API
Встраивание Go в C
Резюме
Глава 13. Сокрытие данных с помощью стеганографии
Знакомство с форматом PNG
Заголовок
Последовательность блоков
Считывание байтов данных изображения
Считывание заголовка
Считывание последовательности блоков
Запись байтовых данных изображения для внедрения полезной нагрузки
Обнаружение смещения блока
Запись байтов с помощью метода ProcessImage()
Кодирование и декодирование байтов изображения с помощью XOR
Резюме
Дополнительные упражнения
Глава 14. Создание C2-трояна удаленного доступа
Подготовка
Установка Protocol Buffers для определения gRPC API
Определение и создание gRPC API
Создание сервера
Реализация интерфейса протокола
Написание функции main()
Создание клиентского импланта
Создание компонента Admin
Выполнение RAT
Доработка RAT
Зашифруйте коммуникации
Обработка сетевых сбоев
Регистрация имплантов
Добавление базы данных
Поддержка нескольких имплантов
Расширение функциональности имплантов
Цепочка команд операционной системы
Повысьте доверие к импланту и примените нужный комплекс OPSEC
Добавление ASCII-графики
Резюме