Этичный хакинг. Практическое руководство по взлому - Дэниел Г. Грэм - E-Book

Этичный хакинг. Практическое руководство по взлому E-Book

Дэниел Г. Грэм

0,0

Beschreibung

Практическое руководство по взлому компьютерных систем с нуля, от перехвата трафика до создания троянов. Книга «Этичный хакинг» освещает современные проблемы кибербезопасности и помогает освоить навыки, необходимые любому этичному хакеру. Сделайте первый шаг в карьере пентестера, ознакомившись с методами взлома, которые используют эксперты.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 420

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Дэниел Г. Грэм
Этичный хакинг. Практическое руководство по взлому

Научный редактор Д. Старков

Перевод С. Черников

Литературный редактор Н. Хлебина

Дэниел Г. Грэм

Этичный хакинг. Практическое руководство по взлому. — СПб.: Питер, 2022.

ISBN 978-5-4461-1952-3

© ООО Издательство "Питер", 2022

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Посвящение
Об авторе
О научном редакторе
Благодарности
От издательства
Предисловие
Введение
Зачем нужна эта книга
Установка Python
О чем пойдет речь в книге
1. Подготовка к работе
Виртуальная лаборатория
Настройка VirtualBox
Настройка pfSense
Настройка Metasploitable
Настройка Kali Linux
Настройка Ubuntu Linux Desktop
Ваш первый взлом: эксплуатация бэкдора в Metasploitable
Часть I. Основы сетевых технологий
2. Перехват трафика с помощью ARP-спуфинга
Передача данных в интернете
Атака методом ARP-спуфинга
Выполнение ARP-спуфинга
Обнаружение признаков ARP-спуфинга
Упражнения
3. Анализ перехваченного трафика
Пакеты и стек интернет-протоколов
Просмотр пакетов с помощью Wireshark
Анализ пакетов, собранных межсетевым экраном
Упражнения
4. Создание TCP-оболочек и ботнетов
Сокеты и взаимодействие процессов
Получение доступа к компьютеру жертвы
Написание клиента обратной оболочки
Написание TCP-сервера, прослушивающего клиентские соединения
Загрузка обратной оболочки на сервер Metasploitable
Ботнеты
Упражнения
Часть II. Криптография
5. Криптография и программы-вымогатели
Шифрование
Шифрование и расшифровка файла
Шифрование электронной почты
Шифрование файла с помощью алгоритма RSA
Написание программы-вымогателя
Упражнения
6. Протокол TLS и алгоритм Диффи — Хеллмана
Протокол защиты транспортного уровня
Использование алгоритма Диффи — Хеллмана для вычисления общего ключа
Протокол Диффи — Хеллмана на эллиптических кривых
Написание TLS-сокетов
Атака типа SSL stripping и обход HSTS
Упражнение: добавление шифрования на сервер для программы-вымогателя
Часть III. Социальная инженерия
7. Фишинг и дипфейки
Изощренная атака с применением социальной инженерии
Подделка электронных писем
Подделка сайтов
Создание дипфейков
Упражнения
8. Сбор информации
Анализ связей
Google Dorking
Сканирование всей сети интернет
Ограничения, связанные с IPv6 и NAT
Базы данных уязвимостей
Сканеры уязвимостей
Упражнения
Часть IV. Эксплуатация уязвимостей
9. Поиск уязвимостей нулевого дня
Эксплуатация уязвимости Heartbleed в OpenSSL
Фаззинг
Символьное выполнение
Динамическое символьное выполнение
Использование DSE для взлома пароля
Упражнения
10. Создание троянов
Воссоздание программы Drovorub с помощью Metasploit
Сокрытие импланта в легитимном файле
Обход антивируса с помощью кодировщиков
Создание трояна для ОС Windows
Создание трояна для ОС Android
Упражнения
11. Создание и установка руткитов в ОС Linux
Написание модуля ядра Linux
Изменение системных вызовов
Перехват системного вызова Shutdown
Сокрытие файлов
Использование инструмента Armitage для эксплуатации хоста и установки руткита
Упражнения
12. Кража и взлом паролей
SQL-инъекция
Кража паролей из базы данных сайта
Перечисление доступных на веб-сервере файлов
Создание инструмента для выполнения SQL-инъекции
Использование SQLMap
Хеширование паролей
Создание инструмента для взлома соленых хешей
Популярные инструменты для взлома хешей и полного перебора
Упражнения
13. Эксплуатация уязвимостей межсайтового скриптинга
Межсайтовый скриптинг
Обнаружение уязвимостей с помощью OWASP Zed Attack Proxy
Использование полезных нагрузок инструмента BeEF
Переходим от браузера к компьютеру
Упражнение: поиск ошибок в программе Bug Bounty
Часть V. Захват контроля над сетью
14. Проброс трафика и повышение привилегий
Проброс трафика с помощью устройства с двойной привязкой
Извлечение хешей паролей из памяти машины Linux
Упражнения
15. Перемещение по корпоративной сети Windows
Создание виртуальной лаборатории Windows
Извлечение хешей паролей с помощью mimikatz
Передача хеша по протоколу NT LAN Manager
Исследование корпоративной сети Windows
Атака на сервис DNS
Атака на сервисы Active Directory и LDAP
Атака на протокол Kerberos
Упражнение: Kerberoasting
16. Дальнейшие шаги
Создание укрепленной хакерской среды
Дополнительные темы
Вступайте в сообщество
Рекомендуем прочитать

Посвящение

Посвящаю эту книгу своей любящей жене Ши Грэм, которая поддерживала меня на протяжении всего процесса ее написания. Я хочу, чтобы весь мир знал, как сильно я тебя люблю. Спасибо, что прочитала все черновики. Эта книга не увидела бы свет без твоей поддержки. Надеюсь, наши будущие дети тоже будут делиться своими идеями со всем миром и вырастут достойными христианами.

Я также посвящаю эту книгу своей семье: моему отцу Эрролу Грэму, сыну плотника и первому представителю нашей семьи, окончившему колледж; моей матери Анжелике Грэм — за ее безусловную любовь и поддержку; моей сестре доктору Доминик Вон, которая стала мне лучшим другом; а также моему шурину Адриану Вону, моему тестю Лесу Тинсли и теще Фэй Тинсли.

Дэниел Г. Грэм

Об авторе

Доктор Дэниел Г. Грэм — доцент кафедры информатики в Университете Вирджинии в Шарлоттсвилле. К сфере его исследовательских интересов относятся защищенные встраиваемые системы и сети. До того как начать преподавать в Университете Вирджинии, доктор Грэм был программным менеджером в компании Microsoft. Помимо всего прочего, он пишет статьи для журналов IEEE, посвященные датчикам и сетям.

О научном редакторе

Доктор Эд Новак — доцент кафедры информатики в Колледже Франклина и Маршалла в городе Ланкастер, штат Пенсильвания. В 2016 году он получил докторскую степень в Колледже Вильгельма и Марии. Его исследовательские интересы вращаются вокруг безопасности и конфиденциальности данных в «умных» мобильных устройствах.

Благодарности

Хочу поблагодарить всех, кто помог этой книге увидеть свет, особенно свою жену Ши Грэм, которая проверяла ее ранние версии. Спасибо тебе за любовь и поддержку.

Выражаю также благодарность редакционным и производственным коллективам издательства No Starch Press. Фрэнсис Со, ваши прекрасные комментарии и тщательные правки сделали эту книгу лучше. Спасибо за ваш труд. Джордж Хейл и Боб Рассел, спасибо за то, что перепроверили каждую главу. Кроме того, выражаю благодарность выпускающим редакторам Кэсси Андредис и Катрине Тейлор, а также основателю No Starch Press Биллу Поллоку.

Хочу сказать спасибо техническим специалистам, чьи комментарии и консультации помогли придать этой книге нужную форму. Благодарю Эда Новака, который проделал фантастическую работу, отредактировав технические фрагменты книги. Я очень благодарен моему другу и коллеге Джесси Лаэучли за помощь в разработке виртуальной лаборатории и за предложенные для книги темы и упражнения. Я также очень признателен моим коллегам Дэвиду Ву и Чарльзу Рейссу за комментарии, электронные письма и беседы о криптографии и модулях ядра Linux.

Благодарю Шрикара Читтари и других помогавших мне студентов, Джейкоба Пачеко и Джеффри Геркена, которые вызвались протестировать содержимое глав, а также тех моих студентов, которые помогли выявить ошибки в тексте.

Хочу сказать спасибо Джиму Кохуну за то, что познакомил меня с миром компьютерных наук. Я благодарю куратора моего факультета Тома Хортона и Кевина Скадрона, заведующего кафедрой информатики, за добрые слова поддержки. Также выражаю признательность Хуану Гилберту, главе факультета компьютерных и информационных наук и инженерии Университета Флориды, за написание предисловия к этой книге.

Наконец, хочу сказать спасибо профессору Малати Вирарагхавану за то, что он приобщил меня к нетворкингу. Вашим бывшим студентам и преподавателям Университета Вирджинии вас будет очень не хватать.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Предисловие

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

В 2021 году с помощью программ-вымогателей хакеры вывели из строя крупнейший в США бензопровод. Это привело к росту общественного беспокойства, отмене рейсов и перебоям в снабжении. С последствиями этой атаки так или иначе столкнулось множество людей.

Учитывая столь высокий уровень влияния, нам необходимо не только обучать людей этичному хакингу, но и всячески его поощрять. Книга «Этичный хакинг» представляет собой отличное руководство для программистов, которые хотят познакомиться с основами разработки хакерских инструментов, а также освоить различные техники, используемые профессиональными пентестерами. В процессе изучения этой книги вам предстоит настроить лабораторию и выполнить множество упражнений, которые помогут вам овладеть необходимыми навыками.

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

Хорошо это или плохо, но хакерство уже никуда не денется.

Хуан Гилберт, профессор, стипендиат фонда семьи Бэнксов и глава Инженерного колледжа им. Герберта Вертхайма, Университет Флориды

Введение

За последнее десятилетие количество атак на компании и даже на государства значительно возросло. В 2021 году хакеры похитили более 100 миллионов долларов в криптовалюте, попытались отравить водопровод во Флориде, взломали систему  фармацевтической компании Pfizer, производителя вакцины от COVID-19, атаковали компанию Colonial Pipeline с помощью программ-вымогателей, а также покусились на правительственные учреждения и политических активистов во Франции, Германии, Индии, Нидерландах, Швеции, Объединенных Арабских Эмиратах и на Украине. Поскольку наша производительность по большей части зависит от технологий, атаки на нашу технологическую инфраструктуру могут иметь серьезные социальные и экономические последствия.

Понимания того, как защитить данную инфраструктуру, недостаточно. Нам нужно больше этичных хакеров, способных нам в этом помочь. Этичные хакеры — это люди, которые понимают, как атаковать инфраструктуру, и обнаруживают уязвимости до того, как ими воспользуются злоумышленники. Этичные хакеры практически ежедневно публикуют информацию об уязвимостях в Национальной базе данных уязвимостей. Многие из них также придерживаются политики ответственного раскрытия информации, уведомляя компании, прежде чем обнародовать данные о найденной уязвимости.

Зачем нужна эта книга

Это практическое руководство поможет вам овладеть фундаментальными навыками, необходимыми для того, чтобы стать этичным хакером. Прочитав книгу, вы сможете начать карьеру в области тестирования на проникновение, участвовать в соревнованиях типа «захват флага» и даже претендовать на место в «красной команде» компании.

Каждая глава знакомит вас с одним из видов атак, объясняет основы целевой технологии, а также описывает полезные инструменты и техники для ее использования. Вы познакомитесь с такими инструментами, как Kali Linux, Metasploit, библиотека pyca/cryptography и Maltego. Вы научитесь собирать информацию из открытых источников, сканировать системы и сети на наличие уязвимостей, писать собственные эксплойты и создавать ботнеты.

Вы также научитесь создавать собственные инструменты на языке программирования Python, чтобы понять механизмы, лежащие в основе команд, которые обычно выполняют хакеры. К концу этой книги вы начнете мыслить как этичный хакер — человек, способный тщательно анализировать системы и находить творческие способы получения доступа к ним.

Эта книга предназначена для всех, кто хочет научиться взламывать системы. Для понимания текста не требуется уметь работать с сетями или знать computer science. Хорошо, если у вас есть некоторый опыт программирования, особенно на языке Python. Но даже если вы новичок в программировании, не беспокойтесь, вы все равно найдете это руководство познавательным в плане объяснения сетевых технологий, стратегий взлома и инструментов. Кроме того, рекомендую обратиться к книге Эрика Мэтиза «Изучаем Python»1, чтобы познакомиться с этим языком.

Установка Python

Виртуальные машины, которые используются в книге, поставляются с предустановленным языком программирования Python 3, поэтому вам не придется устанавливать Python самостоятельно для работы над описанными здесь проектами.

Я настоятельно рекомендую заниматься разработкой именно в этой виртуальной среде. Однако если вы используете операционную систему, в которой язык Python 3 не установлен, вам придется установить его самостоятельно. Для этого выберите последнюю версию Python 3 для своей операционной системы на сайте https://www.python.org/downloads/, а затем скачайте и запустите программу установки.

О чем пойдет речь в книге

Сначала я покажу, как создать собственную виртуальную лабораторию, в которой вы будете выполнять описанные в книге атаки. Каждая последующая глава представляет различные типы атак, начиная от подключения к сети Wi-Fi в кафе и заканчивая взломом сети крупной корпорации.

В главе 1 «Подготовка к работе»мы настроим виртуальную лабораторию. Ее среда будет содержать пять виртуальных машин: маршрутизатор под управлением системы pfSense, Kali Linux, включающую инструменты для взлома, сервер, который мы будем взламывать, и две машины с desktop-версиями Ubuntu.

Часть I. Основы сетевых технологий

Эта часть книги посвящена основам сетевых технологий и различным способам реализации сетевых атак. Мы обсудим протокол TCP и архитектуру интернета, а также многочисленные методы использования этих технологий злоумышленниками.

В главе 2 «Перехват трафика с помощью ARP-спуфинга» мы поговорим о передаче данных в интернете и о том, как злоумышленник может использовать ARP-спуфинг для перехвата и чтения незашифрованного трафика пользователя.

Затем с помощью общедоступных инструментов мы осуществим эту атаку в нашей виртуальной лаборатории и извлечем URL сайтов, которые посещает пользователь. В завершение вам будет предложено написать собственный инструмент для выполнения ARP-спуфинга на языке Python.

Глава 3 «Анализ перехваченного трафика» знакомит вас со стеком интернет-протоколов и показывает, как использовать программу Wireshark для перехвата и анализа пакетов, собранных во время выполнения ARP-спуфинга. Я также покажу, как можно перехватывать пакеты, проходящие через межсетевой экран в виртуальной среде.

В главе 4 «Создание TCP-оболочек и ботнетов» мы рассмотрим основы сокетов и взаимодействия процессов. Затем я покажу вам, как написать собственную обратную оболочку, которую можно использовать для удаленного управления компьютером. И хотя получение контроля над одной машиной — это здорово, обычно взломщики стремятся контролировать сразу несколько машин. Я покажу вам, как это можно сделать, написав хакерский инструмент под названием «ботнет». В качестве примера мы рассмотрим архитектуру ботнета Mirai.

Часть II. Криптография

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

В главе 5 «Криптография и программы-вымогатели» рассматриваются методы симметричной и асимметричной криптографии, такие как одноразовые блокноты, генераторы псевдослучайных чисел, блочные шифры и алгоритм RSA. В ходе изучения этой главы вы зашифруете и расшифруете файлы, отправите зашифрованное электронное письмо, а в заключение напишете собственную программу-вымогатель.

Глава 6 «Протокол TLS и алгоритм Диффи — Хеллмана»посвящена безопасной коммуникации. Мы начнем с обсуждения протокола защиты транспортного уровня (TLS), а затем рассмотрим алгоритм обмена ключами Диффи — Хеллмана и его более безопасную альтернативу, протокол Диффи — Хеллмана на эллиптических кривых. В заключение мы расширим возможности программы-вымогателя так, чтобы она могла передавать информацию по зашифрованному каналу.

Часть III. Социальная инженерия

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

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

В главе 8 «Сбор информации» рассматриваются сложные методы сбора разведданных из открытых источников, а также способы применения инструментов Shodan и Masscan для поиска уязвимых машин во всей сети интернет. Мы также поговорим о том, как злоумышленник может использовать такие инструменты, как Nessus и nmap, для выявления уязвимостей в системах.

Часть IV. Эксплуатация уязвимостей

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

Главу 9 «Поиск уязвимостей нулевого дня» мы начнем с рассмотрения уязвимости Heartbleed в OpenSSL и кода, который позволяет ее эксплуатировать. Затем я расскажу о методах обнаружения подобных уязвимостей, которые используют хакеры, после чего вы напишете собственный простой фаззер. В заключение я расскажу о таких техниках, как символьное выполнение и динамическое символьное выполнение.

Глава 10 «Создание троянов». Трояны — это вредоносные программы, которые маскируются под легитимные. Мы изучим их на примере российской вредоносной программы Drovorub («Дроворуб»), после чего я покажу вам, как создать нечто подобное с помощью программы Metasploit Framework. Затем мы обсудим процесс создания троянов для устройств на базе операционных систем Linux, Windows и Android, а также хитроумные способы сокрытия вредоносного ПО.

Глава 11 «Создание и установка руткитов в ОС Linux». Установив вредоносное ПО, злоумышленник стремится не допустить его обнаружения. Один из способов сделать это — установить руткит, который может внести в операционную систему изменения, помогающие скрыть вредоносное ПО. В этой главе мы рассмотрим способ написания руткита для ядра операционной системы Linux.

В главе 12 «Кража и взлом паролей» рассматриваются атака под названием «SQL-инъекция» и применение инструмента SQLmap для внедрения вредоносного кода в веб-приложение и последующего извлечения информации из базы данных. Такие базы данных часто содержат хеши паролей, и я покажу, как их можно взломать с помощью инструментов John the Ripper и Hashcat.

В главе 13 «Эксплуатация уязвимостей межсайтового скриптинга» мы рассмотрим еще один распространенный тип веб-уязвимости под названием «межсайтовый скриптинг» и увидим, как злоумышленник может воспользоваться ею для внедрения вредоносного кода в браузер пользователя. Затем этот вредоносный код хакер может использовать для кражи файлов cookie и даже для компрометации компьютера пользователя.

Часть V. Захват контроля над сетью

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

В главе 14 «Проброс трафика и повышение привилегий» рассматриваются техника проброса трафика (pivoting) и способы, с помощью которых злоумышленник может получить доступ к частной сети через взломанный межсетевой экран или маршрутизатор. В заключение я расскажу о методах повышения привилегий, которые позволяют хакерам получить полномочия пользователя root за счет ошибок в операционной системе.

В главе 15 «Перемещение по корпоративной сети Windows» я расскажу об архитектуре корпоративных сетей и используемых ими протоколах. Мы подробно рассмотрим протоколы NTLM и Kerberos, а также распространенные атаки на них, в том числе Pass-the-Hash и Kerberos Golden Ticket.

В главе 16 «Дальнейшие шаги» я покажу, как установить защищенный виртуальный выделенный сервер, позволяющий проводить аудит систем за пределами виртуальной лаборатории. Вдобавок я расскажу о некоторых аспектах этичного хакинга, которые не были рассмотрены в этой книге, а также о способах взаимодействия с сообществом этичных хакеров.

1Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-прило­жения. — СПб.: Питер, 2019.

1. Подготовка к работе

Путешествие в тысячу миль начинается с одного шага.

Лао-цзы

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

• виртуальная машина pfSense — маршрутизатор/межсетевой экран с открытым исходным кодом для защиты уязвимых виртуальных машин от внешних хакерских атак;

• виртуальная машина Kali Linux — машина, содержащая хакерские инструменты, описанные в этой книге;

• две desktop-версии виртуальной машины Ubuntu Linux — эти машины будут использоваться для демонстрации атак на среду настольного компьютера и ноутбука;

• виртуальная машина Metasploitable — машина, с помощью которой будут продемонстрированы атаки на сервер Linux.

Виртуальная лаборатория

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

Рис. 1.1. Связи между виртуальными машинами

Нам также предстоит настроить две сети: основную внутреннюю, изолированную от интернета с помощью межсетевого экрана pfSense, и частную, изолированную от основной с помощью сервера Metasploitable. Вторую структуру мы будем использовать для изучения атак, в которых хакерам необходимо взломать одну машину, чтобы атаковать другую, как в случае с межсетевыми экранами. Основную сеть мы настроим в этой главе, а частную — в главе 14.

Не беспокойтесь, если вы пока не вполне понимаете все технические нюансы этих конфигураций; вся инфраструктура будет подробно описана далее в книге. Я рекомендую использовать компьютер под управлением ОС Windows, Linux или macOS с не менее чем 30 Гбайт свободного места на жестком диске и 4 Гбайт оперативной памяти. Вам предстоит одновременно запускать несколько виртуальных машин, поэтому понадобится довольно мощный компьютер.

Настройка VirtualBox

Для настройки сетевой среды необходимо установить программу VirtualBox, которая позволяет создавать виртуальные машины. При использовании VirtualBox мы указываем характеристики виртуальной машины (например, количество процессоров, объем жесткого диска и оперативной памяти), и эта программа собирает виртуальный компьютер, на котором можно запускать программы так же, как на ноутбуке или настольном компьютере. VirtualBox можно использовать бесплатно на устройствах под управлением операционных систем Linux, Mac и Windows.

Скачайте VirtualBox с сайта https://www.virtualbox.org/wiki/Downloads/, выбрав установочные файлы, соответствующие операционной системе и архитектуре вашего компьютера. Затем выполните установку. Этот процесс будет зависеть от типа вашего компьютера, но, как правило, в его ходе можно использовать параметры, заданные по умолчанию. После завершения установки и запуска VirtualBox вы увидите экран, изображенный на рис. 1.2.

Рис. 1.2. Главный экран VirtualBox

Настройка pfSense

Теперь мы настроим pfSense, маршрутизатор/межсетевой экран с открытым исходным кодом, который защитит наши виртуальные машины от внешних атак. В процессе настройки важно тщательно следовать приведенной далее инструкции. Сначала скачайте исходные файлы pfSense с сайта https://www.pfsense.org/download/. В раскрывающемся списке Architecture (Архитектура) выберите вариант AMD64 (64-bit), в списке Installer — DVD Image (ISO)Intaller, а в списке Mirror (Зеркало) — ближайший к вам сервер, после чего нажмите кнопку Download (Скачать) (рис. 1.3).

Рис. 1.3. Выберите указанные параметры, чтобы скачать pfSense

Разархивируйте загруженный файл pfSense iso.gz. Если вы используете компьютер под управлением Unix, то можете сделать это, введя в терминале команду gunzip и имя скачанного файла (например, gunzippfSense-имя_файла.iso.gz). Запустите программу VirtualBox и нажмите кнопку New (Создать), расположенную на верхней панели инструментов (рис. 1.4).

Рис. 1.4. Кнопка New (Создать) оформлена в виде звезды

Далее вам будет предложено ввести кое-какую информацию о своей новой машине. Следующие примеры относятся к программе VirtualBox для macOS, но версии для Linux и Windows практически ничем не отличаются. В поле Name (Имя) введите pfSense, в списке Type (Тип) выберите BSD, а в списке Version (Версия) — FreeBSD (64bit). Задав эти три параметра (рис. 1.5), нажмите кнопку Continue (Продолжить).

Виртуальной машине pfSense не требуется много оперативной памяти, поэтому при указании ее объема задайте значение 1024 MB. При настройке параметров виртуального жесткого диска выберите вариант Create a virtual hard disk now (Создать новый виртуальный жесткий диск). В качестве типа файла укажите VDI (VirtualBox Disk Image). Сделайте свой новый виртуальный жесткий диск динамическим и ограничьте его размер 5 Гбайт, которых должно быть более чем достаточно для установки pfSense.

Рис. 1.5. Введите эти параметры при создании виртуальной машины pfSense

Настройка внутренней сети

Межсетевой экран pfSense можно представить в качестве привратника, стоящего между интернетом и вашей внутренней сетью. Он проверяет входящий и исходящий трафик, чтобы убедиться в том, что ваша внутренняя сеть защищена от атак извне. Это позволяет создать безопасное место для добавления уязвимых машин, которые сможете атаковать только вы.

Щелкните правой кнопкой мыши на названии pfSense в списке виртуальных машин и выберите в контекстном меню пункт Settings (Настроить) (рис. 1.6).

Перейдите на вкладку Network (Сеть) и убедитесь в том, что сетевой адаптер на вкладке Adapter 1 (Адаптер 1) включен, в поле Attached to (Тип подключения) выбран вариант Bridged Adapter (Сетевой мост), а содержимое поля Name (Имя) совпадает с именем вашей беспроводной сетевой карты. Включение сетевого моста обеспечивает прямое соединение между виртуальной машиной pfSense и интернетом. Теперь перейдите на вкладку Adapter 2 (Адаптер 2), убедитесь в том, что сетевой адаптер включен, в поле Attached to (Тип подключения) выбран вариант Internal Network (Внутренняя сеть), которую мы назовем Internal LAN (Внутренняя локальная сеть). Эта сеть позволит соединить pfSense с другими виртуальными машинами. После нажатия кнопки OK внутренняя сеть станет доступна для остальных виртуальных машин.

Рис. 1.6. Настройка сетевых адаптеров

Конфигурирование параметров pfSense

Теперь мы можем запустить pfSense и сконфигурировать параметры нашего виртуального маршрутизатора. Некорректная конфигурация этих параметров может препятствовать подключению виртуальных машин к интернету.

Дважды щелкните на пункте pfSense в списке виртуальных машин. На появившемся экране (рис. 1.7) щелкните на значке в виде папки, а затем — на значке Add (Добавить) в левом верхнем углу. Найдите и выберите ISO-образ pfSense, а затем нажмите кнопку Start (Запуск).

Рис. 1.7. Выбор ISO-образа pfSense

Загрузка виртуальной машины pfSense займет некоторое время. По ее завершении вы увидите экран с уведомлением об авторских правах и условиях распространения. Дважды нажмите клавишу Enter, чтобы принять условия и установить pfSense. Как правило, лучше использовать параметры, заданные по умолчанию.

После установки вы увидите диалоговое окно с предложением выполнить перезагрузку. Выберите вариант Reboot (Перезагрузить) и нажмите клавишу Enter. После перезагрузки pfSense вы опять увидите экран с уведомлением об авторских правах, поскольку виртуальная машина pfSense снова загружается с ISO-образа, который мы использовали ранее. Чтобы это исправить, в меню File (Файл) в верхнем левом углу интерфейса pfSense выберите пункт Close (Закрыть). В появившемся диалоговом окне выберите вариант Power off the machine (Выключить машину) и нажмите кнопку OK (рис. 1.8).

Рис. 1.8. Выключение машины pfSense для удаления ISO-образа

После выключения виртуальной машины pfSense щелкните на ее названии в списке виртуальных машин правой кнопкой мыши и в контекстном меню выберите пункт Settings (Настроить). Перейдите на вкладку Storage (Носители) и щелкните правой кнопкой мыши на ранее выбранном ISO-образе. В контекстном меню выберите пункт Remove Attachment (Удалитьприкрепление), как показано на рис. 1.9. Далее вам будет предложено подтвердить удаление оптического привода. Выберите пункт Remove (Удалить), а затем нажмите кнопку OK в правом нижнем углу экрана Settings (Настройки).

Рис. 1.9. Удаление ISO-образа pfSense

После удаления ISO-образа дважды щелкните на названии pfSense в списке виртуальных машин. Загрузка pfSense займет некоторое время. После этого вы увидите экран со следующим содержимым:

Welcome to pfSense (amd64) on pfSense

WAN (wan)       -> em0       -> v4/DHCP4: 192.1689.1.100/24

LAN (lan)       -> em1       -> v4: 192.168.100.1/24

0) Logout (SSH only)                 9) pfTop

1) Assign Interfaces                10) Filter Logs

2) Set interface(s) IP address      11) Restart webConfigurator

3) Reset webConfigurator password   12) PHP shell + pfSense tools

4) Reset to factory defaults        13) Update from console

5) Reboot system                    14) Disable Secure Shell (sshd)

6) Halt system                      15) Restore recent configuration

7) Ping host                        16) Restart PHP-FPM

8) Shell

Настройка Metasploitable

Виртуальная машина Metasploitable представляет собой сервер Linux, намеренно сделанный уязвимым. Это машина, которую мы будем взламывать на протяжении всей книги. Но прежде нам нужно ограничить доступ к ней другим людям. Для этого мы подключим данную машину к внутренней сети, защищенной межсетевым экраном pfSense. Далее описан процесс скачивания и установки этой виртуальной машины.

Скачайте дистрибутив Metasploitable с сайта https://sourceforge.net/projects/metasploitable/. Несмотря на существование более новых версий Metasploitable, мы будем использовать версию 2, поскольку ее проще настроить.

Разархивируйте скачанный ZIP-файл Metasploitable, запустите программу VirtualBox и нажмите кнопку New (Создать). В поле Name (Имя) введите Metasploitable, в списке Type (Тип) выберите вариант Linux, а в списке Version (Версия) — Ubuntu (64bit), после чего нажмите кнопку Continue (Продолжить). При указании объема оперативной памяти задайте рекомендуемое значение. При настройке параметров виртуального жесткого диска выберите вариант Use an existing virtual hard disk file (Использовать существующий виртуальный жесткий диск), щелкните на значке в виде папки и перейдите к разархивированному дистрибутиву Metasploitable. Выберите файл с расширением .vmdk и нажмите кнопку Create (Создать). Чтобы настроить параметры сети для машины Metasploitable, щелкните правой кнопкой мыши на ее названии в списке слева и выберите пункт Settings (Настроить) в контекстном меню. Перейдите на вкладку Network (Сеть). В разделе Adapter 1 (Адаптер 1) установите флажок Enable Network Adapter (Включить сетевой адаптер) и выберите созданную ранее внутреннюю сеть (Internal LAN) в раскрывающемся меню Attached to (Тип подключения), как показано на рис. 1.10.

Рис. 1.10. Настройка внутренней сети машины Metasploitable

Откройте виртуальную машину Metasploitable в программе VirtualBox и дождитесь завершения загрузки терминала. На экране должен отобразиться логотип Metasploitable, показанный на рис. 1.11.

Войдите в систему, используя имя пользователя msfadmin и пароль msfadmin.

Примечание

Исчезновение указателя мыши говорит о ее захвате виртуальной машиной. Чтобы освободить мышь, нажмите правую клавишу Ctrl (в ОС Windows и Linux) или сочетание клавиш Ctrl+Alt (в macOS).

Рис. 1.11. Виртуальная машина Metasploitable после запуска

Настройка Kali Linux

Kali Linux — это дистрибутив Linux, содержащий набор инструментов для тестирования на проникновение. Мы будем использовать виртуальную машину Kali для взлома других машин в нашей виртуальной сети. Скачайте образ Kali Linux для VirtualBox с сайта https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/. Убедитесь, что перечисленные файлы являются образами Kali Linux для VirtualBox, а не для VMWare, и выберите версию образа для VirtualBox, соответствующую версии вашей системы (64- или 32-битную). Добавьте машину Kali в VirtualBox, щелкнув правой кнопкой мыши на скачанном файле OVA и открыв его с помощью VirtualBox. После этого должен появиться экран, содержащий уже сконфигурированные настройки машины. Найдите значок в виде папки в левой части страницы, щелкните на нем и выберите скачанный файл OVA.

Примечание

Перед настройкой параметров сети убедитесь в том, что ваша виртуальная машина выключена.

Чтобы настроить параметры сети для машины Kali, щелкните правой кнопкой мыши на ее названии в списке слева и выберите в меню пункт Settings (Настроить). Перей­дите на вкладку Network (Сеть). В разделе Adapter 1 (Адаптер 1) установите флажок Enable Network Adapter (Включить сетевой адаптер) и выберите в раскрывающемся меню Attached to (Тип подключения) вариант Internal Network (Внутренняя сеть). В поле Name (Имя) оставьте Internal LAN и нажмите кнопку OK.

Откройте виртуальную машину Kali Linux в VirtualBox. Если вы не увидите ничего, кроме черного экрана, то убедитесь в том, что в разделе SettingsGeneralProcessors (НастройкиОбщиеПроцессоры) установлен флажок PAE/NX.

После запуска машины должен появиться экран аутентификации Kali Linux (рис. 1.12).

Рис. 1.12. Экран аутентификации Kali Linux

Войдите в систему, используя имя пользователя kali и пароль kali.

Настройка Ubuntu Linux Desktop

Пришло время настроить виртуальную машину Ubuntu Linux Desktop, с помощью которой будет продемонстрирована хакерская атака на настольный или портативный компьютер жертвы. Далее описан процесс скачивания и настройки Ubuntu. В этой главе мы настроим только ту машину, которая подключена к нашей внутренней сети. Вторую машину Ubuntu, подключенную к частной сети, мы настроим в главе 14.

Скачайте последнюю версию ISO-образа Ubuntu с сайта https://ubuntu.com/download/desktop/. Запустите программу VirtualBox и нажмите кнопку New (Создать), расположенную на верхней панели инструментов (см. рис. 1.4). Вам будет предложено ввести информацию о своей новой машине. В поле Name (Имя) введите Ubuntu, в списке Type (Тип) выберите Linux, а в списке Version (Версия) — Ubuntu (64­bit). Затем нажмите кнопку Continue (Продолжить). Выделите 2048 Мбайт оперативной памяти и 10 Гбайт дискового пространства. (Не забудьте прикрепить ISO-образ.) Для эффективной работы машине Ubuntu требуется чуть больше дискового пространства и ОЗУ, чем маршрутизатору pfSense. Наконец, подключите машину Ubuntu Linux к внутренней сети, как вы это делали в случае с Metasploitable.

Запустите машину Ubuntu, выберите язык и нажмите кнопку Install Ubuntu (Установить Ubuntu). На рис. 1.13 показана первая страница экрана настройки.

Рис. 1.13. Экран установки Ubuntu Linux

Выключите виртуальную машину Ubuntu. Она нам не понадобится вплоть до главы 10.

Ваш первый взлом: эксплуатация бэкдора в Metasploitable

Теперь, когда мы все настроили, протестируем инфраструктуру нашей виртуальной лаборатории, выполнив атаку. Наша цель — получить доступ к машине Metasploitable, используя уязвимость под названием «бэкдор». Это намеренно встроенный в код программы дефект, позволяющий злоумышленнику получить к ней несанкционированный доступ.

В июле 2011 года сообщество специалистов по информационной безопасности обнаружило бэкдор, внедренный злоумышленником в код версии 2.3.4 vsftpd FTP-сервера с открытым исходным кодом для систем UNIX. В этом заключается один из недостатков программного обеспечения с открытым исходным кодом: злонамеренные разработчики могут его скомпрометировать.

Конкретно этот бэкдор позволяет злоумышленнику получить доступ к терминалу на уязвимой машине. Для этого ему достаточно пройти аутентификацию на FTP-сервере, введя имя пользователя, оканчивающееся символами :), и неверный пароль. После активации атаки на порте 6200 запускается так называемая командная оболочка (shell) — программа, которая подключается к машине злоумышленника, позволяя ему выполнять команды терминала на скомпрометированной машине.

Чтобы воспользоваться уязвимостью сервера Metasploitable, мы начнем с получения IP-адреса этой машины.

Прежде чем продолжить, убедитесь в том, что ваша виртуальная машина pfSense включена. Она понадобится для получения доступа к интернету.

Получение IP-адреса сервера Metasploitable

Как правило, первый шаг при попытке взлома — определение машины, к которой необходимо подключиться. Каждая машина имеет уникальный IP-адрес, о котором мы более подробно поговорим в главе 2. В этом подразделе показан процесс получения IP-адреса сервера Metasploitable с помощью инструмента netdiscover.

Откройте терминал на своей машине Kali Linux, щелкнув на значке в верхнем левом разделе меню. Введите команду netdiscover. Если в терминале появится сообщение о том, что команда не может быть найдена, или о том, что для ее выполнения вы должны являться пользователем root, запустите ее с помощью команды sudo:

kali@kali:~$ sudo netdiscover

Инструмент netdiscover сканирует сеть в поисках использующихся в настоящее время IP-адресов, что позволяет обнаружить все машины, подключенные к одной и той же локальной сети. Через пару минут netdiscover должен обнаружить сервер Metasploitable и его IP-адрес и отобразить его на экране наподобие этого:

IP              At MAC Address     Count       Len MAC Vendor / Hostname

---------------------------------------------------------------------------

192.168.100.1   08:00:27:3b:8f:ed      1        60 PCS Systemtechnik GmbH

192.168.100.101 08:00:27:fe:31:e6      1        60 PCS Systemtechnik GmbH

Для простоты используйте только виртуальные машины pfSense, Metasploitable и Kali. Это уменьшит количество машин, подключенных к сети, и упростит чтение результатов работы инструмента netdiscover.

Первый IP-адрес принадлежит маршрутизатору pfSense, а второй — машине Metasploitable. (В вашем случае адреса могут различаться.) Машина с наименьшим адресом обычно является маршрутизатором или, как в данном случае, межсетевым экраном, через который проходит весь входящий и исходящий сетевой трафик. IP-адрес сервера Metasploitable, скорее всего, будет вторым.

Получив IP-адрес сервера, вы можете посетить размещенные на нем веб-страницы. Щелкните на синем логотипе Kali в верхнем левом углу интерфейса машины Kali. Затем откройте браузер Kali Linux и введите обнаруженный IP-адрес, как показано на рис. 1.14.

Рис. 1.14. Машина Metasploitable в браузере Kali Linux

Если вы видите веб-страницу, то это означает, что ваши машины Metasploitable и Kali Linux правильно подключены к внутренней сети.

Использование бэкдора для получения доступа

Теперь мы воспользуемся бэкдором, чтобы получить доступ к машине Metasploitable. Подключитесь к FTP-серверу с помощью Netcat (nc), инструмента командной строки, который поддерживает несколько сетевых функций. В данном случае мы используем его для открытия TCP-сокета для связи с сервером. (Мы обсудим TCP-сокеты в главе 3.)

Откройте терминал на машине Kali и введите следующие команды:

kali@kali:~$ nc <IP-адрес виртуальной машины Metasploitable> 21

user Hacker:)

pass invalid

Значением в конце первой команды является номер порта. FTP-серверы обычно используют порт 21. Подробнее о понятии номера порта мы поговорим в главе 3, а пока вы можете думать о нем как о канале связи, который операционная система назначает той или иной программе. Например, программа A может использовать канал 21, а программа B — канал 6200.

После активации командной оболочки, связанной с бэкдором, откройте новое окно терминала и введите следующую команду для подключения к оболочке, которая должна использовать порт 6200 на машине Metasploitable:

kali@kali:~$ nc -v <IP-адрес виртуальной машины Metasploitable> 6200

После подключения вам покажется, что терминал не отвечает. Но это не так, он просто ожидает от вас ввода команды. Введите команду ls, чтобы отобразить список всех файлов, содержащихся в текущем каталоге.

Теперь у вас должна появиться возможность вводить команды в терминале Kali Linux и запускать их так, будто они были введены в терминале машины Metasploitable. Например, попробуйте перезагрузить машину с помощью оболочки. Для этого введите следующие команды в терминал машины Kali, а затем посмотрите, что произойдет с машиной Metasploitable:

whoami

reboot

Если атака выполнена правильно, то машина Metasploitable перезагрузится. Перезапуск машины может показаться вполне безобидным явлением, однако злоумышленник, обладающий привилегиями пользователя root, может сделать гораздо больше, например удалить все данные с сервера, выполнив команду rm-rf/. Не запускайте эту команду в Metasploitable, если не хотите удалить все содержащиеся на машине данные и повторить процесс настройки.

Как можно устранить эту уязвимость? В более новых версиях vsftpd эта проблема решена, поэтому наилучший способ защитить сервер — обновить vsftpd. Однако машина Metasploitable намеренно сделана уязвимой, поэтому не поддерживает обновления.

Часть I. Основы сетевых технологий