Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Практическое руководство по взлому компьютерных систем с нуля, от перехвата трафика до создания троянов. Книга «Этичный хакинг» освещает современные проблемы кибербезопасности и помогает освоить навыки, необходимые любому этичному хакеру. Сделайте первый шаг в карьере пентестера, ознакомившись с методами взлома, которые используют эксперты.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 420
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Научный редактор Д. Старков
Перевод С. Черников
Литературный редактор Н. Хлебина
Дэниел Г. Грэм
Этичный хакинг. Практическое руководство по взлому. — СПб.: Питер, 2022.
ISBN 978-5-4461-1952-3
© ООО Издательство "Питер", 2022
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Посвящаю эту книгу своей любящей жене Ши Грэм, которая поддерживала меня на протяжении всего процесса ее написания. Я хочу, чтобы весь мир знал, как сильно я тебя люблю. Спасибо, что прочитала все черновики. Эта книга не увидела бы свет без твоей поддержки. Надеюсь, наши будущие дети тоже будут делиться своими идеями со всем миром и вырастут достойными христианами.
Я также посвящаю эту книгу своей семье: моему отцу Эрролу Грэму, сыну плотника и первому представителю нашей семьи, окончившему колледж; моей матери Анжелике Грэм — за ее безусловную любовь и поддержку; моей сестре доктору Доминик Вон, которая стала мне лучшим другом; а также моему шурину Адриану Вону, моему тестю Лесу Тинсли и теще Фэй Тинсли.
Дэниел Г. Грэм
Доктор Дэниел Г. Грэм — доцент кафедры информатики в Университете Вирджинии в Шарлоттсвилле. К сфере его исследовательских интересов относятся защищенные встраиваемые системы и сети. До того как начать преподавать в Университете Вирджинии, доктор Грэм был программным менеджером в компании 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 3, поэтому вам не придется устанавливать Python самостоятельно для работы над описанными здесь проектами.
Я настоятельно рекомендую заниматься разработкой именно в этой виртуальной среде. Однако если вы используете операционную систему, в которой язык Python 3 не установлен, вам придется установить его самостоятельно. Для этого выберите последнюю версию Python 3 для своей операционной системы на сайте https://www.python.org/downloads/, а затем скачайте и запустите программу установки.
Сначала я покажу, как создать собственную виртуальную лабораторию, в которой вы будете выполнять описанные в книге атаки. Каждая последующая глава представляет различные типы атак, начиная от подключения к сети Wi-Fi в кафе и заканчивая взломом сети крупной корпорации.
В главе 1 «Подготовка к работе»мы настроим виртуальную лабораторию. Ее среда будет содержать пять виртуальных машин: маршрутизатор под управлением системы pfSense, Kali Linux, включающую инструменты для взлома, сервер, который мы будем взламывать, и две машины с desktop-версиями Ubuntu.
Эта часть книги посвящена основам сетевых технологий и различным способам реализации сетевых атак. Мы обсудим протокол TCP и архитектуру интернета, а также многочисленные методы использования этих технологий злоумышленниками.
В главе 2 «Перехват трафика с помощью ARP-спуфинга» мы поговорим о передаче данных в интернете и о том, как злоумышленник может использовать ARP-спуфинг для перехвата и чтения незашифрованного трафика пользователя.
Затем с помощью общедоступных инструментов мы осуществим эту атаку в нашей виртуальной лаборатории и извлечем URL сайтов, которые посещает пользователь. В завершение вам будет предложено написать собственный инструмент для выполнения ARP-спуфинга на языке Python.
Глава 3 «Анализ перехваченного трафика» знакомит вас со стеком интернет-протоколов и показывает, как использовать программу Wireshark для перехвата и анализа пакетов, собранных во время выполнения ARP-спуфинга. Я также покажу, как можно перехватывать пакеты, проходящие через межсетевой экран в виртуальной среде.
В главе 4 «Создание TCP-оболочек и ботнетов» мы рассмотрим основы сокетов и взаимодействия процессов. Затем я покажу вам, как написать собственную обратную оболочку, которую можно использовать для удаленного управления компьютером. И хотя получение контроля над одной машиной — это здорово, обычно взломщики стремятся контролировать сразу несколько машин. Я покажу вам, как это можно сделать, написав хакерский инструмент под названием «ботнет». В качестве примера мы рассмотрим архитектуру ботнета Mirai.
В этой части книги мы обсудим основы алгоритмов шифрования, используемых для защиты цифровых каналов связи. Я также расскажу вам о том, как работают некоторые из этих алгоритмов.
В главе 5 «Криптография и программы-вымогатели» рассматриваются методы симметричной и асимметричной криптографии, такие как одноразовые блокноты, генераторы псевдослучайных чисел, блочные шифры и алгоритм RSA. В ходе изучения этой главы вы зашифруете и расшифруете файлы, отправите зашифрованное электронное письмо, а в заключение напишете собственную программу-вымогатель.
Глава 6 «Протокол TLS и алгоритм Диффи — Хеллмана»посвящена безопасной коммуникации. Мы начнем с обсуждения протокола защиты транспортного уровня (TLS), а затем рассмотрим алгоритм обмена ключами Диффи — Хеллмана и его более безопасную альтернативу, протокол Диффи — Хеллмана на эллиптических кривых. В заключение мы расширим возможности программы-вымогателя так, чтобы она могла передавать информацию по зашифрованному каналу.
В этой части я покажу, как злоумышленники используют методы социальной инженерии и разведданные из открытых источников, чтобы обманом заставить жертву предоставить им неправомерный доступ к своей информации. Я покажу, что с помощью подходящей приманки взломать можно кого угодно.
В главе 7 «Фишинг и дипфейки» обсуждаются принципы работы электронной почты и описываются способы отправки поддельных электронных писем. В конце мы обсудим, как создаются дипфейки, и даже сгенерируем собственное видео этого типа.
В главе 8 «Сбор информации» рассматриваются сложные методы сбора разведданных из открытых источников, а также способы применения инструментов Shodan и Masscan для поиска уязвимых машин во всей сети интернет. Мы также поговорим о том, как злоумышленник может использовать такие инструменты, как Nessus и nmap, для выявления уязвимостей в системах.
В этой части мы рассмотрим многочисленные способы, с помощью которых злоумышленник может эксплуатировать обнаруженную им уязвимость. Каждая уязвимость уникальна, но существуют общие принципы их эксплуатации, которые будут продемонстрированы на реальных примерах. Мы также рассмотрим способ использования веб-страниц в качестве вектора атаки.
Главу 9 «Поиск уязвимостей нулевого дня» мы начнем с рассмотрения уязвимости Heartbleed в OpenSSL и кода, который позволяет ее эксплуатировать. Затем я расскажу о методах обнаружения подобных уязвимостей, которые используют хакеры, после чего вы напишете собственный простой фаззер. В заключение я расскажу о таких техниках, как символьное выполнение и динамическое символьное выполнение.
Глава 10 «Создание троянов». Трояны — это вредоносные программы, которые маскируются под легитимные. Мы изучим их на примере российской вредоносной программы Drovorub («Дроворуб»), после чего я покажу вам, как создать нечто подобное с помощью программы Metasploit Framework. Затем мы обсудим процесс создания троянов для устройств на базе операционных систем Linux, Windows и Android, а также хитроумные способы сокрытия вредоносного ПО.
Глава 11 «Создание и установка руткитов в ОС Linux». Установив вредоносное ПО, злоумышленник стремится не допустить его обнаружения. Один из способов сделать это — установить руткит, который может внести в операционную систему изменения, помогающие скрыть вредоносное ПО. В этой главе мы рассмотрим способ написания руткита для ядра операционной системы Linux.
В главе 12 «Кража и взлом паролей» рассматриваются атака под названием «SQL-инъекция» и применение инструмента SQLmap для внедрения вредоносного кода в веб-приложение и последующего извлечения информации из базы данных. Такие базы данных часто содержат хеши паролей, и я покажу, как их можно взломать с помощью инструментов John the Ripper и Hashcat.
В главе 13 «Эксплуатация уязвимостей межсайтового скриптинга» мы рассмотрим еще один распространенный тип веб-уязвимости под названием «межсайтовый скриптинг» и увидим, как злоумышленник может воспользоваться ею для внедрения вредоносного кода в браузер пользователя. Затем этот вредоносный код хакер может использовать для кражи файлов cookie и даже для компрометации компьютера пользователя.
В заключительной части книги я расскажу о том, как злоумышленник, получивший контроль над одной машиной, может управлять любым компьютером в сети. Я также расскажу об архитектуре и протоколах, используемых в корпоративных сетях, и о том, как ими могут воспользоваться хакеры.
В главе 14 «Проброс трафика и повышение привилегий» рассматриваются техника проброса трафика (pivoting) и способы, с помощью которых злоумышленник может получить доступ к частной сети через взломанный межсетевой экран или маршрутизатор. В заключение я расскажу о методах повышения привилегий, которые позволяют хакерам получить полномочия пользователя root за счет ошибок в операционной системе.
В главе 15 «Перемещение по корпоративной сети Windows» я расскажу об архитектуре корпоративных сетей и используемых ими протоколах. Мы подробно рассмотрим протоколы NTLM и Kerberos, а также распространенные атаки на них, в том числе Pass-the-Hash и Kerberos Golden Ticket.
В главе 16 «Дальнейшие шаги» я покажу, как установить защищенный виртуальный выделенный сервер, позволяющий проводить аудит систем за пределами виртуальной лаборатории. Вдобавок я расскажу о некоторых аспектах этичного хакинга, которые не были рассмотрены в этой книге, а также о способах взаимодействия с сообществом этичных хакеров.
1Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-приложения. — СПб.: Питер, 2019.
Путешествие в тысячу миль начинается с одного шага.
Лао-цзы
Итак, вы совершили первый шаг своего хакерского путешествия. В этой главе мы настроим виртуальную лабораторию, среда которой будет состоять из пяти виртуальных машин, таких как:
• виртуальная машина pfSense — маршрутизатор/межсетевой экран с открытым исходным кодом для защиты уязвимых виртуальных машин от внешних хакерских атак;
• виртуальная машина Kali Linux — машина, содержащая хакерские инструменты, описанные в этой книге;
• две desktop-версии виртуальной машины Ubuntu Linux — эти машины будут использоваться для демонстрации атак на среду настольного компьютера и ноутбука;
• виртуальная машина Metasploitable — машина, с помощью которой будут продемонстрированы атаки на сервер Linux.
Взлом компьютеров, которыми вы не владеете, является неэтичным и незаконным, поэтому в данной главе мы создадим виртуальную лабораторию, которая послужит средой для занятий этичным хакингом. Обзор этой лабораторной среды представлен на рис. 1.1.
Рис. 1.1. Связи между виртуальными машинами
Нам также предстоит настроить две сети: основную внутреннюю, изолированную от интернета с помощью межсетевого экрана pfSense, и частную, изолированную от основной с помощью сервера Metasploitable. Вторую структуру мы будем использовать для изучения атак, в которых хакерам необходимо взломать одну машину, чтобы атаковать другую, как в случае с межсетевыми экранами. Основную сеть мы настроим в этой главе, а частную — в главе 14.
Не беспокойтесь, если вы пока не вполне понимаете все технические нюансы этих конфигураций; вся инфраструктура будет подробно описана далее в книге. Я рекомендую использовать компьютер под управлением ОС Windows, Linux или macOS с не менее чем 30 Гбайт свободного места на жестком диске и 4 Гбайт оперативной памяти. Вам предстоит одновременно запускать несколько виртуальных машин, поэтому понадобится довольно мощный компьютер.
Для настройки сетевой среды необходимо установить программу VirtualBox, которая позволяет создавать виртуальные машины. При использовании VirtualBox мы указываем характеристики виртуальной машины (например, количество процессоров, объем жесткого диска и оперативной памяти), и эта программа собирает виртуальный компьютер, на котором можно запускать программы так же, как на ноутбуке или настольном компьютере. VirtualBox можно использовать бесплатно на устройствах под управлением операционных систем Linux, Mac и Windows.
Скачайте VirtualBox с сайта https://www.virtualbox.org/wiki/Downloads/, выбрав установочные файлы, соответствующие операционной системе и архитектуре вашего компьютера. Затем выполните установку. Этот процесс будет зависеть от типа вашего компьютера, но, как правило, в его ходе можно использовать параметры, заданные по умолчанию. После завершения установки и запуска VirtualBox вы увидите экран, изображенный на рис. 1.2.
Рис. 1.2. Главный экран VirtualBox
Теперь мы настроим 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 в списке виртуальных машин. На появившемся экране (рис. 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 представляет собой сервер 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 — это дистрибутив 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. Если вы не увидите ничего, кроме черного экрана, то убедитесь в том, что в разделе SettingsGeneralProcessors (НастройкиОбщиеПроцессоры) установлен флажок PAE/NX.
После запуска машины должен появиться экран аутентификации Kali Linux (рис. 1.12).
Рис. 1.12. Экран аутентификации Kali Linux
Войдите в систему, используя имя пользователя kali и пароль kali.
Пришло время настроить виртуальную машину Ubuntu Linux Desktop, с помощью которой будет продемонстрирована хакерская атака на настольный или портативный компьютер жертвы. Далее описан процесс скачивания и настройки Ubuntu. В этой главе мы настроим только ту машину, которая подключена к нашей внутренней сети. Вторую машину Ubuntu, подключенную к частной сети, мы настроим в главе 14.
Скачайте последнюю версию ISO-образа Ubuntu с сайта https://ubuntu.com/download/desktop/. Запустите программу VirtualBox и нажмите кнопку New (Создать), расположенную на верхней панели инструментов (см. рис. 1.4). Вам будет предложено ввести информацию о своей новой машине. В поле Name (Имя) введите Ubuntu, в списке Type (Тип) выберите Linux, а в списке Version (Версия) — Ubuntu (64bit). Затем нажмите кнопку Continue (Продолжить). Выделите 2048 Мбайт оперативной памяти и 10 Гбайт дискового пространства. (Не забудьте прикрепить ISO-образ.) Для эффективной работы машине Ubuntu требуется чуть больше дискового пространства и ОЗУ, чем маршрутизатору pfSense. Наконец, подключите машину Ubuntu Linux к внутренней сети, как вы это делали в случае с Metasploitable.
Запустите машину Ubuntu, выберите язык и нажмите кнопку Install Ubuntu (Установить Ubuntu). На рис. 1.13 показана первая страница экрана настройки.
Рис. 1.13. Экран установки Ubuntu Linux
Выключите виртуальную машину Ubuntu. Она нам не понадобится вплоть до главы 10.
Теперь, когда мы все настроили, протестируем инфраструктуру нашей виртуальной лаборатории, выполнив атаку. Наша цель — получить доступ к машине Metasploitable, используя уязвимость под названием «бэкдор». Это намеренно встроенный в код программы дефект, позволяющий злоумышленнику получить к ней несанкционированный доступ.
В июле 2011 года сообщество специалистов по информационной безопасности обнаружило бэкдор, внедренный злоумышленником в код версии 2.3.4 vsftpd FTP-сервера с открытым исходным кодом для систем UNIX. В этом заключается один из недостатков программного обеспечения с открытым исходным кодом: злонамеренные разработчики могут его скомпрометировать.
Конкретно этот бэкдор позволяет злоумышленнику получить доступ к терминалу на уязвимой машине. Для этого ему достаточно пройти аутентификацию на FTP-сервере, введя имя пользователя, оканчивающееся символами :), и неверный пароль. После активации атаки на порте 6200 запускается так называемая командная оболочка (shell) — программа, которая подключается к машине злоумышленника, позволяя ему выполнять команды терминала на скомпрометированной машине.
Чтобы воспользоваться уязвимостью сервера Metasploitable, мы начнем с получения IP-адреса этой машины.
Прежде чем продолжить, убедитесь в том, что ваша виртуальная машина pfSense включена. Она понадобится для получения доступа к интернету.
Как правило, первый шаг при попытке взлома — определение машины, к которой необходимо подключиться. Каждая машина имеет уникальный 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 намеренно сделана уязвимой, поэтому не поддерживает обновления.