автордың кітабын онлайн тегін оқу Этичный хакинг. Практическое руководство по взлому
Научный редактор Д. Старков
Перевод С. Черников
Литературный редактор Н. Хлебина
Дэниел Г. Грэм
Этичный хакинг. Практическое руководство по взлому. — СПб.: Питер, 2022.
ISBN 978-5-4461-1952-3
© ООО Издательство "Питер", 2022
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Посвящение
Посвящаю эту книгу своей любящей жене Ши Грэм, которая поддерживала меня на протяжении всего процесса ее написания. Я хочу, чтобы весь мир знал, как сильно я тебя люблю. Спасибо, что прочитала все черновики. Эта книга не увидела бы свет без твоей поддержки. Надеюсь, наши будущие дети тоже будут делиться своими идеями со всем миром и вырастут достойными христианами.
Я также посвящаю эту книгу своей семье: моему отцу Эрролу Грэму, сыну плотника и первому представителю нашей семьи, окончившему колледж; моей матери Анжелике Грэм — за ее безусловную любовь и поддержку; моей сестре доктору Доминик Вон, которая стала мне лучшим другом; а также моему шурину Адриану Вону, моему тестю Лесу Тинсли и теще Фэй Тинсли.
Дэниел Г. Грэм
Об авторе
Доктор Дэниел Г. Грэм — доцент кафедры информатики в Университете Вирджинии в Шарлоттсвилле. К сфере его исследовательских интересов относятся защищенные встраиваемые системы и сети. До того как начать преподавать в Университете Вирджинии, доктор Грэм был программным менеджером в компании Microsoft. Помимо всего прочего, он пишет статьи для журналов IEEE, посвященные датчикам и сетям.
О научном редакторе
Доктор Эд Новак — доцент кафедры информатики в Колледже Франклина и Маршалла в городе Ланкастер, штат Пенсильвания. В 2016 году он получил докторскую степень в Колледже Вильгельма и Марии. Его исследовательские интересы вращаются вокруг безопасности и конфиденциальности данных в «умных» мобильных устройствах.
Благодарности
Хочу поблагодарить всех, кто помог этой книге увидеть свет, особенно свою жену Ши Грэм, которая проверяла ее ранние версии. Спасибо тебе за любовь и поддержку.
Выражаю также благодарность редакционным и производственным коллективам издательства No Starch Press. Фрэнсис Со, ваши прекрасные комментарии и тщательные правки сделали эту книгу лучше. Спасибо за ваш труд. Джордж Хейл и Боб Рассел, спасибо за то, что перепроверили каждую главу. Кроме того, выражаю благодарность выпускающим редакторам Кэсси Андредис и Катрине Тейлор, а также основателю No Starch Press Биллу Поллоку.
Хочу сказать спасибо техническим специалистам, чьи комментарии и консультации помогли придать этой книге нужную форму. Благодарю Эда Новака, который проделал фантастическую работу, отредактировав технические фрагменты книги. Я очень благодарен моему другу и коллеге Джесси Лаэучли за помощь в разработке виртуальной лаборатории и за предложенные для книги темы и упражнения. Я также очень признателен моим коллегам Дэвиду Ву и Чарльзу Рейссу за комментарии, электронные письма и беседы о криптографии и модулях ядра Linux.
Благодарю Шрикара Читтари и других помогавших мне студентов, Джейкоба Пачеко и Джеффри Геркена, которые вызвались протестировать содержимое глав, а также тех моих студентов, которые помогли выявить ошибки в тексте.
Хочу сказать спасибо Джиму Кохуну за то, что познакомил меня с миром компьютерных наук. Я благодарю куратора моего факультета Тома Хортона и Кевина Скадрона, заведующего кафедрой информатики, за добрые слова поддержки. Также выражаю признательность Хуану Гилберту, главе факультета компьютерных и информационных наук и инженерии Университета Флориды, за написание предисловия к этой книге.
Наконец, хочу сказать спасибо профессору Малати Вирарагхавану за то, что он приобщил меня к нетворкингу. Вашим бывшим студентам и преподавателям Университета Вирджинии вас будет очень не хватать.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства 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.
Эта книга предназначена для всех, кто хочет научиться взламывать системы. Для понимания текста не требуется уметь работать с сетями или знать computer science. Хорошо, если у вас есть некоторый опыт программирования, особенно на языке Python. Но даже если вы новичок в программировании, не беспокойтесь, вы все равно найдете это руководство познавательным в плане объяснения сетевых технологий, стратегий взлома и инструментов. Кроме того, рекомендую обратиться к книге Эрика Мэтиза «Изучаем Python»1, чтобы познакомиться с этим языком.
Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-приложения. — СПб.: Питер, 2019.
