Kali Linux. Тестирование на проникновение и безопасность [Шива Парасрам] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Kali Linux 2018: Assuring
Security by Penetration Testing
Fourth Edition
8QOHDVKWKHIXOOSRWHQWLDORI.DOL/LQX[
QRZZLWKXSGDWHGWRROV

Shiva V. N Parasram
Alex Samm
Damian Boodoo
Gerard Johansen
Lee Allen
Tedi Heriyanto
Shakeel Ali

BIRMINGHAM - MUMBAI

Kali
Linux

ТЕСТИРОВАНИЕ НА ПРОНИКНОВЕНИЕ И БЕЗОПАСНОСТЬ
Шива Парасрам · Алекс Замм · Теди Хериянто · Шакил Али
Дамиан Буду · Джерард Йохансен · Ли Аллен

2020

ББК 32.973.2-018.2
УДК 004.451
П18

Парасрам Шива, Замм Алекс, Хериянто Теди, Али Шакил,
Буду Дамиан, Йохансен Джерард, Аллен Ли
П18 Kali Linux. Тестирование на проникновение и безопасность. — СПб.: Питер,
2020. — 448 с.: ил. — (Серия «Для профессионалов»).
ISBN 978-5-4461-1252-4
4-е издание Kali Linux 2018: Assuring Security by Penetration Testing предназначено для этических
хакеров, пентестеров и специалистов по IT-безопасности. От читателя требуются базовые знания
операционных систем Windows и Linux. Знания из области информационной безопасности будут
плюсом и помогут вам лучше понять изложенный в книге материал.

16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)
ББК 32.973.2-018.2
УДК 004.451

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

ISBN 978-1789341768 англ.
© Packt Publishing 2018.
First published in the English language under the title «Kali Linux 2018 —
(9781789341768)»
ISBN 978-5-4461-1252-4
© Перевод на русский язык ООО Издательство «Питер», 2020
©И
 здание на русском языке, оформление ООО Издательство
«Питер», 2020
© Серия «Для профессионалов», 2020

Краткое содержание
Составители............................................................................................................................................ 16
Введение................................................................................................................................................... 19
Глава 1. Установка и настройка Kali Linux................................................................................. 23
Глава 2. Создание испытательной лаборатории........................................................................ 64
Глава 3. Методология тестирования на проникновение........................................................ 92
Глава 4. Получение отпечатка и сбор информации...............................................................112
Глава 5. Методы сканирования и уклонения...........................................................................149
Глава 6. Сканирование уязвимостей...........................................................................................195
Глава 7. Социальная инженерия...................................................................................................224
Глава 8. Целевая эксплуатация.....................................................................................................243
Глава 9. Повышение привилегий и поддержание доступа..................................................268
Глава 10. Тестирование веб-приложений..................................................................................293
Глава 11. Тестирование беспроводных сетей на проникновение......................................336
Глава 12. Мобильное тестирование на проникновение с Kali NetHunter......................381
Глава 13. PCI DSS: сканирование и тестирование на проникновение............................411
Глава 14. Инструменты для создания отчетов о тестировании .
на проникновение ............................................................................................................................. 426
Ответы на вопросы.............................................................................................................................443

Оглавление
Составители............................................................................................................................................ 16
Авторы................................................................................................................................................ 16
Рецензенты....................................................................................................................................... 18
Введение................................................................................................................................................... 19
Для кого предназначена книга................................................................................................... 19
Структура издания......................................................................................................................... 19
Как получить максимальную пользу от этой книги........................................................... 21
Условные обозначения................................................................................................................. 21
От издательства............................................................................................................................... 22
Глава 1. Установка и настройка Kali Linux................................................................................. 23
Технические условия.................................................................................................................... 23
Категории инструментов Kali Linux........................................................................................ 23
Загрузка Kali Linux........................................................................................................................ 26
Начинаем работать с Kali Linux................................................................................................ 29
Запуск Kali Linux с Live DVD............................................................................................. 29
Установка на жесткий диск.................................................................................................. 30
Установка Kali на USB.......................................................................................................... 43
Настройка виртуальной машины............................................................................................. 45
Гостевые дополнения VirtualBox....................................................................................... 45
Настройка сети......................................................................................................................... 47
Обновление Kali Linux................................................................................................................. 51
Настройка Kali Linux AMI в облаке Amazon AWS............................................................. 52

Оглавление  7

Резюме................................................................................................................................................ 62
Вопросы............................................................................................................................................. 63
Дополнительные материалы...................................................................................................... 63
Глава 2. Создание испытательной лаборатории........................................................................ 64
Технические требования.............................................................................................................. 64
Физическая или виртуальная?.................................................................................................. 65
Настройка Windows на виртуальной машине...................................................................... 65
Установка уязвимых серверов................................................................................................... 71
Настройка Metasploitable 2 на виртуальной машине.................................................. 71
Настройка Metasploitable 3 на виртуальной машине.................................................. 73
Предварительная настройка Metasploitable 3................................................................ 77
Установка и настройка BadStore на виртуальной машине....................................... 78
Установка дополнительных инструментов в Kali Linux.................................................. 84
Сетевые сервисы в Kali Linux.................................................................................................... 85
HTTP............................................................................................................................................ 85
MySQL......................................................................................................................................... 86
SSH................................................................................................................................................ 87
Дополнительные лаборатории и ресурсы.............................................................................. 88
Резюме................................................................................................................................................ 90
Вопросы............................................................................................................................................. 91
Дополнительные материалы...................................................................................................... 91
Глава 3. Методология тестирования на проникновение........................................................ 92
Технические условия.................................................................................................................... 92
Методология тестирования на проникновение................................................................... 92
Руководство по тестированию OWASP.......................................................................... 93
PCI-руководство по тестированию на проникновение.............................................. 94
Стандартное проведение тестов на проникновение.................................................... 95
NIST 800-115............................................................................................................................. 95
Руководство по методологии тестирования безопасности с открытым
исходным кодом....................................................................................................................... 96
Фреймворк: общее тестирование на проникновение......................................................... 96
Разведка....................................................................................................................................... 97
Сканирование и перечисление............................................................................................ 98
Получение доступа................................................................................................................104

8  Оглавление

Повышение привилегий......................................................................................................109
Поддержание доступа...........................................................................................................109
Заметание следов...................................................................................................................110
Составление отчета...............................................................................................................110
Резюме..............................................................................................................................................111
Глава 4. Получение отпечатка и сбор информации...............................................................112
Разведка по открытым источникам.......................................................................................113
Использование общих ресурсов..............................................................................................113
Запрос сведений о регистрации домена...............................................................................114
Анализ записей DNS...................................................................................................................115
Получение имени хоста.......................................................................................................116
dig: техники разведывания DNS.......................................................................................117
DMitry: магический инструмент для сбора информации.......................................118
Maltego: графическое отображение собранной информации................................120
Получение сведений о сетевой маршрутизации................................................................127
tcptraceroute.............................................................................................................................127
tctrace.........................................................................................................................................128
Используем поисковик...............................................................................................................129
Взлом базы данных Google (GHDB).....................................................................................131
Metagoofil........................................................................................................................................133
Автоматизированные инструменты для снятия отпечатков .
и сбора информации....................................................................................................................137
Devploit......................................................................................................................................137
RedHawk v2..............................................................................................................................140
Использование Shodan для поиска подключенных к Интернету устройств.....142
Blue-Thunder-IP-локатор....................................................................................................144
Резюме..............................................................................................................................................147
Вопросы...........................................................................................................................................148
Дополнительные материалы....................................................................................................148
Глава 5. Методы сканирования и уклонения...........................................................................149
Технические условия..................................................................................................................149
Начинаем с обнаружения цели................................................................................................149

Оглавление  9

Идентификация целевой машины.........................................................................................150
ping..............................................................................................................................................150
fping.............................................................................................................................................153
hping3.........................................................................................................................................155
Получение отпечатков ОС........................................................................................................158
Введение в сканирование портов............................................................................................161
Изучаем протокол TCP/IP.......................................................................................................161
Тонкости форматов сообщений TCP и UDP.....................................................................163
Сетевой сканер..............................................................................................................................166
Что такое Nmap.......................................................................................................................167
Спецификация цели.............................................................................................................169
Параметры сканирования TCP.........................................................................................171
Сканирование UDP..............................................................................................................173
Спецификация порта Nmap................................................................................................173
Параметры вывода Nmap....................................................................................................175
Параметры синхронизации................................................................................................177
Полезные параметры Nmap................................................................................................178
Nmap для сканирования Ipv6.............................................................................................181
Сценарный движок Nmap...................................................................................................182
Параметры Nmap для обхода идентификаторов брандмауэра...............................186
Сканирование с Netdiscover.....................................................................................................187
Автоматическое сканирование с помощью Striker...........................................................188
Анонимность с помощью Nipe.................................................................................................191
Резюме..............................................................................................................................................193
Вопросы...........................................................................................................................................193
Дополнительные материалы....................................................................................................194
Глава 6. Сканирование уязвимостей...........................................................................................195
Технические требования............................................................................................................196
Типы уязвимостей........................................................................................................................196
Локальные уязвимости........................................................................................................196
Удаленная уязвимость.........................................................................................................197
Систематизация уязвимостей..................................................................................................197

10  Оглавление

Автоматическое сканирование уязвимостей......................................................................198
Nessus 7......................................................................................................................................198
OpenVAS...................................................................................................................................206
Сканирование уязвимостей Linux с помощью Lynis.................................................212
Сканирование и перечисление уязвимостей с помощью SPARTA......................217
Резюме..............................................................................................................................................222
Вопросы...........................................................................................................................................223
Дополнительные материалы....................................................................................................223
Глава 7. Социальная инженерия...................................................................................................224
Технические условия..................................................................................................................225
Моделирование психологии человека..................................................................................225
Процесс атаки................................................................................................................................225
Методы атаки.................................................................................................................................226
Подражание.............................................................................................................................227
Взаимный обмен.....................................................................................................................227
Влияние авторитета..............................................................................................................228
Использование жадности....................................................................................................228
Налаживание социальных взаимоотношений.............................................................229
Сила любопытства.................................................................................................................229
Инструменты социальной инженерии..................................................................................229
Анонимная USB-атака.........................................................................................................231
Сбор учетных данных...........................................................................................................235
Вредоносный Java-апплет...................................................................................................238
Резюме..............................................................................................................................................242
Глава 8. Целевая эксплуатация.....................................................................................................243
Исследование уязвимости.........................................................................................................243
Хранилища уязвимостей и эксплойтов................................................................................245
Расширенный инструментарий эксплуатации..................................................................246
MSFConsole....................................................................................................................................247
MSFCLI...........................................................................................................................................249
Ninja 101 drills................................................................................................................................251
Сценарий 1...............................................................................................................................251

Оглавление  11

Сценарий 2...............................................................................................................................252
Сценарий 3...............................................................................................................................255
Написание модулей эксплойта................................................................................................263
Резюме..............................................................................................................................................267
Глава 9. Повышение привилегий и поддержание доступа..................................................268
Технические требования............................................................................................................268
Повышение привилегий.............................................................................................................268
Локальная эксплуатация...........................................................................................................269
Инструменты подбора пароля.................................................................................................273
Инструменты для автономной атаки..............................................................................274
Инструменты онлайн-атаки...............................................................................................281
Поддержание доступа.................................................................................................................287
Бэкдор для входа в операционную систему.................................................................287
Резюме..............................................................................................................................................292
Глава 10. Тестирование веб-приложений..................................................................................293
Технические требования............................................................................................................293
Веб-анализ......................................................................................................................................294
nikto............................................................................................................................................294
OWASP ZAP...........................................................................................................................296
Burp Suite..................................................................................................................................299
Прокси-сервер Paros.............................................................................................................309
W3AF.........................................................................................................................................311
WebScarab.................................................................................................................................314
Межсайтовые сценарии.............................................................................................................316
Тестирование XSS.................................................................................................................316
SQL-инъекция...............................................................................................................................320
Инструкция для SQL-инъекции.......................................................................................321
Автоматическая SQL-инъекция.......................................................................................323
Выполнение команд, обход каталогов и включение файлов........................................326
Обход каталогов и включение файлов...........................................................................327
Выполнение команд..............................................................................................................330
Резюме..............................................................................................................................................334
Дополнительные материалы....................................................................................................335

12  Оглавление

Глава 11. Тестирование беспроводных сетей на проникновение......................................336
Технические требования............................................................................................................337
Беспроводная сеть........................................................................................................................337
Обзор стандарта IEEE 802.11............................................................................................337
Протокол безопасности беспроводных локальных сетей........................................338
Защищенный доступ Wi-Fi (WPA)................................................................................339
Разведка в беспроводной сети..................................................................................................340
Антенны.....................................................................................................................................341
Iwlist...........................................................................................................................................341
Kismet.........................................................................................................................................342
WAIDPS....................................................................................................................................344
Инструменты тестирования беспроводной сети...............................................................346
Aircrack-ng................................................................................................................................347
PixieWPS..................................................................................................................................359
Wifite..........................................................................................................................................359
Fern Wifi Cracker....................................................................................................................361
Атака «злой двойник»..........................................................................................................364
После взлома..................................................................................................................................368
MAC-спуфинг.........................................................................................................................369
Устойчивость...........................................................................................................................370
Анализ беспроводного трафика...............................................................................................372
Анализ WLAN-трафика.......................................................................................................372
Пассивный анализ.................................................................................................................376
Резюме..............................................................................................................................................380
Глава 12. Мобильное тестирование на проникновение с Kali NetHunter......................381
Технические требования............................................................................................................381
Kali NetHunter...............................................................................................................................381
Развертывание...............................................................................................................................382
Развертывание сети...............................................................................................................382
Развертывание беспроводной сети..................................................................................382
Развертывание узла...............................................................................................................383
Установка Kali NetHunter.........................................................................................................383
Значки NetHunter........................................................................................................................384

Оглавление  13

Инструменты NetHunter...........................................................................................................386
Nmap...........................................................................................................................................386
Metasploit..................................................................................................................................388
Преобразователь MAC.........................................................................................................391
Сторонние приложения Android.............................................................................................392
Приложение NetHunter Terminal.....................................................................................392
DriveDroid................................................................................................................................393
USB-клавиатура.....................................................................................................................393
Shodan........................................................................................................................................394
Router Keygen..........................................................................................................................394
cSploit.........................................................................................................................................395
Беспроводные атаки....................................................................................................................396
Беспроводное сканирование..............................................................................................397
WPA/WPA2-взлом...............................................................................................................398
WPS-взлом...............................................................................................................................399
Атака «злой двойник»..........................................................................................................401
HID-атаки.......................................................................................................................................406
Резюме..............................................................................................................................................409
Вопросы...........................................................................................................................................410
Дополнительные материалы....................................................................................................410
Глава 13. PCI DSS: сканирование и тестирование на проникновение............................411
PCI DSS v3.2.1, требование 11.3..............................................................................................412
Определение области испытания на проникновение PCI DSS...................................413
Сбор требований клиентов.................................................................................................415
Создание формы требования заказчика........................................................................415
Подготовка плана испытаний............................................................................................416
Контрольный список плана тестирования....................................................................418
Границы профилирования теста......................................................................................419
Определение бизнес-целей.................................................................................................420
Управление проектами и планирование........................................................................421
Инструменты для выполнения теста на проникновение в платежные системы.....422
Резюме..............................................................................................................................................424
Вопросы...........................................................................................................................................424
Дополнительные материалы....................................................................................................424

14  Оглавление

Глава 14. Инструменты для создания отчетов о тестировании .
на проникновение ............................................................................................................................. 426
Технические условия..................................................................................................................427
Документация и проверка результатов................................................................................427
Типы отчетов..................................................................................................................................428
Исполнительный доклад.....................................................................................................429
Отчет для руководства.........................................................................................................429
Технический отчет.................................................................................................................430
Отчет о тестировании проникновения в сеть.....................................................................431
Подготовка презентации.....................................................................................................432
Процедуры после тестирования.......................................................................................433
Использование структуры Dradis для составления отчетности .
по тестированию на проникновение......................................................................................434
Инструменты отчетности по тестированию на проникновение..................................439
Faraday IDE..............................................................................................................................439
MagicTree..................................................................................................................................440
Резюме..............................................................................................................................................441
Вопросы...........................................................................................................................................441
Дополнительные материалы....................................................................................................442
Ответы на вопросы.............................................................................................................................443
Глава 1..............................................................................................................................................443
Глава 2..............................................................................................................................................443
Глава 4..............................................................................................................................................443
Глава 5..............................................................................................................................................444
Глава 6..............................................................................................................................................444
Глава 12............................................................................................................................................445
Глава 13............................................................................................................................................445
Глава 14............................................................................................................................................445

Маме, папе, Бринди и любви всей моей жизни,
Сави. Я люблю вас, ребята.
Шива Парасрам (Shiva V. N Parasram)
Для всех студентов по информационной
безопасности. Наслаждайтесь путешествием.
Теди Хериянто (Tedi Heriyanto)
Я хотел бы посвятить эту книгу моей любящей
семье; моим блестящим учителям; лучшему другу
Нгуену Тхи Ли (Лили) (Nguyen Thi Ly (Lily));
всем моим друзьям и коллегам.
Шакил Али (Shakeel Ali)

Составители
Авторы
Шива Парасрам (Shiva V. N Parasram). Директор института компьютерной криминалистики и безопасности (www.CFSI.co), преподаватель по кибербезопасности, пентестер, следователь-криминалист со стажем работы 14 лет. Имеет степень магистра
в области сетевой безопасности, CCISO, CEH, CHFI и CCNA. Как сертифицированный преподаватель Совета ЕС (CEI) обучил несколько сотен человек этичному
(белому) взлому (антихакингу) и криминалистике. Был выбран преподавателем
по курсу кибербезопасности для сотрудников Fujitsu Trinidad. Автор книги Digital
Forensics with Kali Linux, опубликованной издательством Packt.
Благодарю Рахула, Нитхин и издательство Packt за еще одну предоставленную мне возможность. Я приветствую первого автора и моих
соавторов; для меня большая честь быть частью этой команды. «Если
тебе нужно быть кем-то, будь храбрецом» — Индра Парасрам (Indra
J. Parasram). «Всегда будь терпелив, сынок» — Харри Парасрам (Harry
G. Parasram). Сави Сунита Сьюзан Будхан (Savi Sunita Susan Budhan),
любовь всей моей жизни, мой мир и мой самый большой поклонник,
спасибо за то, что ты есть.

Алекс Замм (Alex Samm) специалист в области IT и компьютерной безопасности с опытом работы 11 лет. Сейчас трудится в ESP Global Services. Он системный
и сетевой администратор, программист, инженер поддержки инфраструктуры
VMware. Кроме того, Алекс является консультантом по безопасности для многих
крупнейших мировых авиаперевозчиков и фармацевтических компаний, таких как
Roche Diabetes, Norvatis, Ingredion и Shire Pharmaceuticals. Имеет степень бакалавра в области компьютерных наук, а также CEH, ACE, AME и NSE; в настоящее
время ведет курсы по тестированию на проникновение с Kali Linux — Offensive

Авторы  17

Security Certified Professional (OSCP). Читает лекции в институте компьютерной
криминалистики и безопасности.
Дамиан Буду (Damian Boodoo) — тестировщик систем защиты и исследователь безопасности. Стремится сделать сети более защищенными. Имея более чем
десятилетний опыт работы в сфере IT, является соучредителем DKIT Solutions,
предоставляющей услуги безопасности и творческого решения проблем, которые
обычно упускаются из виду. Когда Дамиан не занимается угрозами нулевого дня
и не ищет дыры в защите, он возится с железом, пытаясь его усовершенствовать,
либо размышляет: «Может, заняться киберспортом (поиграть в компьютерную
игру)?»
Джерард Йохансен (Gerard Johansen) — профессионал в области информационной безопасности с более чем десятилетним опытом в тестировании на проникновение, управлении уязвимостями, моделировании оценки угроз и реагировании
на инциденты. Начав свою карьеру в качестве исследователя киберпреступности,
работал консультантом и аналитиком в сфере безопасности. Консультировал
клиентов и компании, начиная от организаций здравоохранения и заканчивая финансовыми учреждениями. Выпускник Норвичского университета, имеет степень
магистра в области информационного обеспечения, а также CISSP. В настоящее
время работает в международной IT-фирме, специализация которой — реагирование на инциденты и разведка угроз безопасности.
Ли Аллен (Lee Allen) — заместитель директора Университета штата Огайо.
Его специализация — информационная безопасность, тестирование на проникновение, исследования безопасности, автоматизация задач, управление рисками,
анализ данных и разработка 3D-приложений.
Теди Хериянто (Tedi Heriyanto) в настоящее время работает аналитиком по
информационной безопасности в компании Fortune 500. Имеет опыт проектирования защищенных сетевых архитектур, развертывания общеорганизационных
систем безопасности и управления ими, разработки политик и процедур информационной безопасности, проведения различных тестов на проникновение в сеть,
веб- и мобильные приложения, а также обучения информационной безопасности. В свободное время углубляет свои знания и навыки в профессиональных
областях.
Я хотел бы поблагодарить свою семью, поддержавшую меня, когда
я писал эту книгу. Спасибо команде издательства Packt, оказавшей мне
поддержку, необходимую для успешного написания книги. Наконец,
большое спасибо моим соавторам: Шиве, Алексу, Дамиану, Ли, Шакилу
и Джерарду, чьи профессиональные знания, мотивация, идеи, проблемы,
вопросы и предложения сделали написание этой книги увлекательным
занятием.

Шакил Али (Shakeel Ali) — старший консультант по кибербезопасности в компании Fortune 500. Обладает богатым опытом в сфере безопасности, аудита,

18  Составители

моделирования атак, содействия SOC/CSIRC, реагирования на инциденты и в экспертно-криминалистических проектах. Как независимый исследователь, он пишет
различные статьи, чтобы дать представление об угрозах, а также обеспечивает постоянную поддержку безопасности для разных предприятий по всему миру.
Я хотел бы поблагодарить всех моих друзей, соавторов, рецензентов
и коллег, которые участвовали в этом проекте и искренне поддерживали его. Особая благодарность всем членам команды Packt Publishing,
которые, стремясь сделать проект успешным, давали бесценные комментарии, вносили предложения и оказывали поддержку.

Рецензенты
Шивананд Персад (Shivanand Persad) имеет степень магистра в сфере управления
предприятием (Австралийский институт бизнеса) и степень бакалавра наук в области электротехники и вычислительной техники (Вест-Индский университет).
Компетентен в таких специализациях, как системы управления и приборостроения,
беспроводные и проводные системы связи, стратегическое управление и реинжиниринг бизнес-процессов. Обладает более чем десятилетним опытом работы в различных технических дисциплинах и продолжительным стажем работы с одним из
крупнейших интернет-провайдеров в Карибском бассейне. В свободное время от
чтения всего, что попадется ему на глаза, любит стрелять из лука, ездить на велосипеде и что-нибудь мастерить.
Листра К. Майнго (Lystra K. Maingot) — квалифицированный этичный хакер
и исследователь в области цифровой криминалистики. В университете Anglia
Ruskin (Великобритания) обучался работе в сети и получил степень магистра
в области сетевой безопасности. Намерен развивать свое увлечение кибербезопасностью и надеется сделать киберсреду более защищенной.

Введение
Это четвертое издание книги «Kali Linux. Тестирование на проникновение и безопасность», в нем описывается обновленная операционная система Kali Linux 2018
и множество обновленных и совершенно новых инструментов, используемых профессиональными испытателями на проникновение и специалистами по безопасности. За время своего существования Kali Linux зарекомендовала себя как надежный
инструмент в арсенале специалистов по безопасности и пентестеров (испытателей
на проникновение). Эта книга позволяет читателю на практике в собственноручно
построенной безопасной среде получить глубокие знания в области тестирования
на проникновение.

Для кого предназначена книга
Эта книга предназначена для пентестеров, этических хакеров и профессионалов
в области IT-безопасности, имеющих базовые знания об операционных системах
Unix/Linux. Мы предполагаем, что читатель ознакомлен с концепцией информационной безопасности.

Структура издания
Глава 1 «Установка и настройка Kali Linux». В этой главе вы познакомитесь с Kali
Linux 2018. Особое внимание уделяется различным методам использования системы. Глава написана так, что даже неопытный пользователь сможет запустить Kali
Linux с Live DVD; установить и настроить систему на жестком диске, SD-карте,
подключенном к USB-порту флеш-накопителе; установить Kali Linux на виртуальной машине. Кроме того, используя AWS, вы можете установить Kali Linux
в облаке.
Глава 2 «Создание испытательной лаборатории». В этой главе рассказывается, как создать безопасную виртуальную среду, в которой можно на законных

20  Введение

основаниях выполнять разработанные для каждой главы практические примеры.
В главе также приведены подробные инструкции по настройке таких виртуальных
машин, как Metasploitable 2 и Metasploitable 3, которые будут использоваться как
целевые машины в экспериментах на проникновение (пентестах).
Глава 3 «Методология тестирования на проникновение». Здесь представлены
различные методологии тестирования с целью планирования и определения масштабов пентестов. Вы также найдете описание практических шагов и технологий,
предназначенных для испытаний на проникновение.
Глава 4 «Получение отпечатка и сбор информации». На первом этапе тестирования на проникновение применяется несколько распространенных инструментов,
используемых для разведки, включая взлом базы данных Google. В этом издании
вы найдете новую информацию о таких инструментах для автоматического сбора
информации, как Devploit, RedHawk и Shodan.
Глава 5 «Методы сканирования и уклонения». В этой главе рассказывается, как
с помощью мощнейшего инструмента Nmap обнаружить целевые объекты, узлы
и сервисы. С помощью Netdiscover и Striker выполняется автоматизированное
сканирование и сбор информации. Кроме того, в этой главе рассматривается такой инструмент, как Nipe, предоставляющий пользователям конфиденциальность
и анонимность.
Глава 6 «Сканирование уязвимостей». Здесь на практических примерах показано, как найти уязвимости в целевой машине. Приводятся пошаговые инструкции
по использованию таких мощных автоматизированных инструментов для оценки
уязвимостей, как Nessus 7 и OpenVAS. Вы найдете новую информацию о Linuxинструменте Lynis, предназначенном для сканирования и проверки уязвимостей,
и инструменте SPARTA, назначение которого — оценка и перечисление уязвимостей. Работа всех инструментов проводится в испытательной лаборатории, и гарантируется, что оценки реального типа точно моделируются.
Глава 7 «Социальная инженерия». Обсуждаются основные принципы и методы,
применяемые профессиональными социальными инженерами для манипуляции
людьми, чтобы те разглашали информацию или совершали иные действия.
Глава 8 «Целевая эксплуатация». В этой главе вы будете применять методы
и инструменты для эксплуатации компьютерных систем (эксплойты). Эксплойты
используют уязвимости и недостатки в системах, что дает возможность пользователю получить доступ к системе.
Глава 9 «Повышение привилегий и поддержание доступа». Здесь вы узнаете,
как повысить уровень доступа и взломать другие учетные записи в системе.
Взломанные учетные записи будут использоваться для сохранения доступа к системе и получения дальнейшего доступа к сети.
Глава 10 «Тестирование веб-приложений». В этой главе мы рассмотрим несколько основных инструментов, предназначенных для тестирования веб-приложений,
а также облачные приложения, так как они основаны на тех же протоколах и используют многие из тех же платформ.
Глава 11 «Тестирование беспроводных сетей на проникновение». В главе рассматривается настройка инструментов, предназначенных для захвата данных, не-

Условные обозначения  21

обходимых для взлома беспроводных сетей и получения к ним доступа, включая
настройку поддельных точек доступа.
Глава 12 «Мобильное тестирование на проникновение с Kali NetHunter». В этой
главе представлен практический подход к тестированию на проникновение с помощью мобильных устройств. Подробно описывается установка и настройка необходимых приложений, а также демонстрируется процесс сканирования и оценки
уязвимостей, атак типа «человек посередине» и беспроводных атак, которые могут
выполняться мобильными приложениями.
Глава 13 «PCI DSS: сканирование и тестирование на проникновение». Здесь вводится стандарт, описываются шесть задач и 12 требований, приводится обзорный
тест на проникновение. Акцент делается на PCI DSS версий 11.3.1 и 11.3.2.
Глава 14 «Инструменты для создания отчетов о тестировании на проникновение». Обсуждаются различные типы отчетов и процедуры, которые проводятся
по окончании тестирования, а также демонстрируется использование платформы
Dradis для организации и полного документирования теста на проникновение.

Как получить максимальную пользу
от этой книги
В книге мы рассмотрим множество тем, для объяснения которых авторы приложили максимальные усилия. Но есть некоторые фундаментальные темы, касающиеся
как сетей, так и вопросов безопасности, которые, возможно, вы пожелаете изучить
самостоятельно, чтобы лучше понять материал:
‰‰семь уровней модели OSI;
‰‰набор протоколов TCP/IP;
‰‰трехэтапное рукопожатие TCP;
‰‰протоколы и номера портов;
‰‰основы беспроводной связи (802.11 a, b, g, n, ac), WEP и WPA2;
‰‰основные команды Linux (including ls, cd и clear).

Условные обозначения
В этой книге используется ряд условных обозначений.
Моноширинным шрифтом в тексте выделяются кодовые слова, имена таблиц базы
данных, имена папок, имена файлов, расширения файлов, пути, пользовательский
ввод и сообщения Twitter. Например: «монтируем скачанный WebStorm-10*.dmg
образ диска как еще один диск в системе».
Любые команды, вводимые в командную строку, или сообщения командной
строки записываются следующим образом:
Nmap 172.16.54.144 -sV

22  Введение

Курсивом в тексте выделяются новые термины или слова, на которые нужно
обратить особое внимание.
Отображаемые на экране слова и фиктивные URL-адреса выделяются рубленым
шрифтом, например: «выберите System info (Системная информация) на панели
Administration (Администрирование)».
Таким образом отображаются предупреждения или важные заметки.

Так выглядят советы и рекомендации.

От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию
о наших книгах.

1

Установка и настройка
Kali Linux

Данная глава откроет перед вами удивительный мир Kali Linux 2018.2. Это специа­
лизированный дистрибутив Linux, предназначенный для тестирования на проникновение. В главе будут рассмотрены следующие темы.
‰‰Краткая история Kali.
‰‰Несколько распространенных сфер применения Kali.
‰‰Загрузка и установка Kali.
‰‰Настройка и обновление Kali.

Технические условия
Для этой главы и всей книги вам понадобится ноутбук или настольный компьютер
с объемом оперативной памяти не менее 6 Гбайт и 100 Гбайт свободного места на
жестком диске — оно потребуется для установки Kali Linux и тестовых лабораторных сред, в качестве которых будут использованы виртуальные машины. При установке Kali Linux на флеш-накопитель или карту SD/micro-SD минимальное пространство для хранения должно составлять 8 Гбайт (рекомендуется 16 Гбайт или
более).
Кроме того, нужно будет загрузить следующее программное обеспечение:
‰‰VirtualBox (https://www.virtualbox.org/wiki/Downloads);
‰‰Vmware Player (https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/
vmware_workstation_player/14_0);

‰‰Kali Linux (https://www.kali.org/downloads/).

Категории инструментов Kali Linux
На момент написания книги последней версией Kali Linux была 2018.2. Онавключает:
‰‰улучшенную поддержку графических процессоров AMD;
‰‰исправления в архитектуре x86 и x64 для устранения уязвимостей Spectre

и Meltdown;

24  Глава 1



Установка и настройка Kali Linux

‰‰облегченный доступ к Metasploit с Metasploit-framework-4.16.34-0Kali2;
‰‰обновленные инструменты Bloodhound v1.51, Reaver 1.6.4, PixieWPS 1.42,

BurpSuite 1.7.32, Hashcat 4.0, Wpscan, Openvas, Xplico, Responder и Dradis.
Kali Linux содержит инструменты, назначение которых — тестирование на проникновение. Их можно разделить на следующие категории.
‰‰Information gathering (Инструменты для сбора информации). Эта категория вклю-

чает несколько инструментов для сбора информации о DNS, IDS/IPS, сетевом
сканировании, операционных системах, маршрутизации, SSL, SMB, VPN, а также прослушивания IP, SNMP, адресов электронной почты и VPN.

‰‰Vulnerability assessment (Оценка уязвимостей). В данной категории вы можете найти

инструменты для общего сканирования уязвимостей. Здесь также содержатся инструменты для анализа сети Cisco и поиска уязвимостей в серверах баз данных.
В этой категории также представлены несколько инструментов fuzzing.

‰‰Web applications (Веб-приложения). Эта категория включает такие инструменты,

связанные с веб-приложениями, как сканеры системы управления контентом,
базы данных уязвимостей, прокси-службы, сканеры поисковых роботов и сканеры веб-уязвимостей.

‰‰Database assessment (Оценка баз данных). Инструменты этой категории про-

веряют безопасность различных баз данных. Существует ряд инструментов,
разработанных специально для тестирования баз данных SQL.

‰‰Password attacks (Атаки на пароли). В этой категории вы найдете несколько ин-

струментов, которые можно использовать в режиме онлайн или офлайн для
выполнения атак паролей.

‰‰Wireless attacks (Беспроводные атаки). В настоящее время все более актуальным

становится вопрос безопасности беспроводной связи. Эта категория включает
в себя инструменты для атаки Bluetooth, RFID/NFC и беспроводных устройств.

‰‰Exploitation tools (Эксплуатационные инструменты). В этой категории содержатся

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

‰‰Sniffing and spoofing (Анализ и подмена). Инструменты этой категории приме-

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

‰‰Post exploitation (После эксплуатации). Инструменты этой категории помогут вам

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

Категории инструментов Kali Linux  25

привилегий на компьютере. Здесь вы найдете инструменты для скрытого управления операционной системой компьютера (backdoor, что в переводе значит
«черный ход») и веб-приложениями, а также инструменты для туннелирования.
‰‰Forensics (Судебная экспертиза). В этой категории содержатся инструменты для

сбора цифровых криминалистических данных, восстановления данных, реагирования на инциденты и вырезания файлов.

‰‰Reporting tools (Инструменты отчетности). Здесь вы найдете инструменты, по-

зволяющие задокументировать процесс и результаты тестирования на проникновение.

‰‰Social engineering tools (Инструменты социальной инженерии). В данной катего-

рии содержится очень мощный инструмент Maltego и набор инструментов социальной инженерии (SET). Они могут быть очень полезны на этапах разведки,
тестирования на проникновение и эксплуатации.

‰‰System services (Системные сервисы). Данная категория инструментов включает

несколько сервисов, которые могут быть полезны во время выполнения задачи
тестирования на проникновение, например Apache, MySQL, SSH и Metasploit.

Для упрощения процедуры тестирования на проникновение в Kali Linux
предусмотрена категория под названием Top 10 Security Tools (Топ-10 инструментов
безопасности). Как следует из названия, это десять наиболее часто использу­
емых инструментов безопасности. В эту категорию входят такие инструменты,
как aircrackng, burp-suite, hydra, john, maltego, metasploit, nmap, sqlmap, wireshark
и zaproxy.
В Kali Linux вы также найдете несколько инструментов, которые можно использовать для следующих целей.
‰‰Reverse engineering (Инженерный анализ). В этой категории содержатся средства

для отладки программ или разборки исполняемого файла.

‰‰Stress testing (Стресс-тест). Эти инструменты предназначены для стресс-теста

проводной и беспроводной сети, веб-среды и VOIP (IP-телефония).

‰‰Hardware hacking (Взлом оборудования). Инструменты этой категории использу-

ются при работе с приложениями Android и Arduino.

‰‰Forensics (Судебная экспертиза). Представленные здесь инструменты могут

быть использованы для различных цифровых криминалистических задач.
Они позволяют создавать образы дисков, проводить анализ образов памяти
и вырезать файлы. Одним из лучших криминалистических инструментов
Kali Linux является Volatility. Он управляется из командной строки и имеет
ряд функций для анализа изображений, находящихся в памяти. В Kali Linux
есть и несколько графических инструментов, таких как Autopsy и Guymager,
а также исправленный xplico.

В этой книге мы рассмотрим только инструменты тестирования на проникновение.

26  Глава 1



Установка и настройка Kali Linux

Загрузка Kali Linux
Перед установкой и использованием Kali Linux нужно загрузить ее образ. Вы можете получить его с сайта Kali Linux (http://www.kali.org/downloads/).
На странице Downloads (Загрузки) можно выбрать официальный образ Kali Linux
на основе следующих элементов (рис. 1.1).

Рис 1.1. Архитектура машины: i386, x64 и armhf

Образы для VMware, VirtualBox и Hyper-V также можно загрузить со страницы
загрузок Offensive Security, расположенной по адресу https://www.offensive-security.com/
kali-linux-vm-vmware-virtualbox-image-download/, как показано на рис. 1.2.

Загрузка Kali Linux  27

Рис. 1.2. Эти файлы образов доступны как по прямым ссылкам, так и в виде архивированных
файлов, загружаемых с помощью торрента

Пользователь может загрузить ARM Kali Linux с сайта по адресу https://
www.offensive-security.com/kali-linux-arm-images/. Здесь можно загрузить образы для

таких устройств, как Chromebook, Raspberry Pi и т. д., щелкнув на стрелке справа
от названий устройств.
Kali NetHunter v3.o можно загрузить с сайта Offensive Security: https://www.offensivesecurity.com/kali-linux-nethunter-download/ (рис. 1.3).
Подробнее о выборе, установке и использовании соответствующей версии
NetHunter будет рассказано в последующих главах.

Рис. 1.3. Страница загрузки Kali Nethunter для Linux

Чтобы записать образ на DVD или установить Kali Linux на свой компьютер, загрузите версию образа ISO. Если же вы хотите установить и использовать Kali Linux в виртуальной среде на виртуальной машине, такой, например,

28  Глава 1



Установка и настройка Kali Linux

как VirtualBox, VMWare или Hyper-V, возьмите файлы образов для виртуальных
машин. С их помощью установка и настройка виртуальной среды пойдет быстрее.
Эти образы доступны по адресу https://www.offensive-security.com/kali-linux-vm-vmwarevirtualbox-image-download/.
После успешной загрузки файла необходимо сравнить хеш-значение SHA загруженного образа со значением хеша sha256sum, который указан на странице
загрузки. Значение SHA-256 проверяется, чтобы избежать установки поврежденного или поддельного образа.
В операционной системе UNIX/Linux/BSD для проверки хеш-значения
SHA-256 загруженного файла образа используется команда sha256sum. Учтите,
что из-за большого размера файла образа Kali Linux эта операция может занять
некоторое время. Чтобы сгенерировать хеш-значения для образа, например, kalilinux-2018.2-amd64.iso, используйте следующую команду:
sha256sum kali-linux-2018.2-amd64.iso

Пользователям Windows для проверки хеш-значения можно воспользоваться
утилитой под названием MD5 & SHA checksum Utility. Этот инструмент вычисляет MD5, SHA-1, SHA-256, а также хеши файлов SHA-512 и позволяет сравнивать
и проверять хеши.
Утилиту MD5 & SHA Checksum можно загрузить по адресу https://download.cnet.com/
MD5-SHA-Checksum-Utility/3000-2092_4-10911445.html. После загрузки и запуска нажмите
кнопку Browse (Обзор) и укажите путь к загруженному файлу. Мы будем использовать файл kali-linux-2018.2-amd64.iso, как показано на рис. 1.4.

Рис. 1.4. Утилита MD5 & SHA Checksum запущена

В поле ввода Hash (Хеш) для проверки был вставлен скопированный со страницы загрузки Kali Linux хеш файла kali-linux-2018.2-amd64.iso.
Для сравнения и проверки хеша SHA-256 нажмите кнопку Verify (Проверить)
(рис. 1.5).

Начинаем работать с Kali Linux  29

Рис. 1.5. Совпадение хешей SHA-256

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

Начинаем работать с Kali Linux
Чтобы начать работать с Kali Linux, операционную систему нужно установить на
жесткий диск компьютера или запустить с загрузочного диска. Для этого вы можете
воспользоваться Kali Linux одним из следующих способов:
‰‰запустить Kali Linux непосредственно с загрузочного диска Live DVD;
‰‰установить на жесткий диск компьютера;
‰‰установить на USB (портативная Kali Linux).

Далее мы расскажем о каждом способе установки и запуска.

Запуск Kali Linux с Live DVD
Если вы не желаете устанавливать Kali Linux на жесткий диск компьютера, запишите файл образа ISO на DVD. После того как ISO-образ операционной системы
будет записан на диск, его можно использовать для запуска вашего компьютера.
Для загрузки компьютера с DVD нужно убедиться, что в BIOS выбрана следующая
очередность загрузки: сначала компьютер ищет загрузочный сектор на DVD, а только после этого (если DVD не вставлен или на нем отсутствует загрузочный сектор)
обращается к загрузочному сектору жесткого диска. Преимущество Kali Linux
Live DVD перед остальными способами загрузки в том, что запускать компьютер

30  Глава 1



Установка и настройка Kali Linux

с Live DVD очень просто. Кроме того, не потребуется выделять на жестком диске
место под установку этой операционной системы.
Однако в таком способе запуска компьютера есть и недостатки. Например, вы
не сможете сохранить изменения конфигурации, и после перезагрузки все настройки будут утеряны. Кроме того, скорость загрузки компьютера с Live DVD уступает
скорости загрузки компьютера с жесткого диска. Это объясняется тем, что скорость
чтения DVD медленнее, чем скорость чтения жесткого диска.
Запуск операционной системы с Live DVD рекомендуется применять только
для тестирования Kali Linux. Если же вы желаете работать с этой операционной
системой более интенсивно, рекомендуем вам установить Kali Linux на жесткий
диск компьютера.

Установка на жесткий диск
Установить Kali Linux на жесткий диск можно двумя способами:
‰‰установить непосредственно на жесткий диск вашего компьютера (обычная

установка);
‰‰установить на виртуальную машину.

Вы можете воспользоваться любым подходящим для вас способом. Мы же работали с Kali Linux, установленной на виртуальную машину.

Обычная установка
Для обычной установки Kali Linux на компьютер вам потребуется чистый жесткий
диск или чистый раздел на жестком диске размером не менее 100 Гбайт. Учтите:
если на этом диске хранились какие-то данные, то они будут уничтожены в процессе установки, так как установщик отформатирует весь диск. Мы рекомендуем при
обычной установке использовать весь жесткий диск. Если Kali Linux устанавливается в качестве дополнительной операционной системы, вы можете установить ее
в логический раздел жесткого диска. Для этого ваш жесткий диск следует разбить
на основной раздел, в котором находится основная операционная система, например Windows, и логический раздел для Kali Linux. Если на вашем компьютере
будут установлены две операционные системы, то при каждом запуске машины
вам с помощью загрузчика нужно будет выбирать, какую операционную систему
загружать для текущей сессии. Учтите: деля жесткий диск на основной и логический разделы, вы можете повредить основную операционную систему и все данные,
которые хранились на вашем компьютере. Будьте осторожны!
Официальная документация по установке Kali Linux на жесткий диск
с ранее установленной операционной системой Windows находится по
адресу http://docs.kali.org/installation/dual-boot-kali-with-windows.

Начинаем работать с Kali Linux  31

Есть несколько программ, которые вы можете задействовать для разбивки
жесткого диска на разделы. Для этого вы можете воспользоваться следующими
Linux-загрузочными компакт-дисками:
‰‰SystemRescueCD (http://www.sysresccd.org/);
‰‰GParted Live (http://gparted.sourceforge.net/livecd.php);
‰‰Kali Linux (http://www.kali.org).

Для разбивки на разделы с помощью Linux Live CD загрузите компьютер
с этого компакт-диска. Далее вы можете приступать к делению жесткого диска.
Но сначала выполните резервное копирование данных!
Когда жесткий диск будет разделен (или если вы решили использовать для установки все пространство жесткого диска), можно приступать к установке операционной системы. Загрузите машину с созданного вами ранее загрузочного диска (Kali
Linux Live DVD) и в появившемся загрузочном меню выберите один из вариантов:
Install (Установка) или Grafical install (Графическая установка) (рис. 1.6).

Рис. 1.6. Загрузочное меню Kali Linux — выбран вариант Grafical install (Графическая установка)

После выбора варианта Install (Установка) или Grafical install (Графическая установка) на экране появится первое окно установки операционной системы. В процессе установки вам потребуется настроить следующие параметры.
1. Set Language (Выбор языка). Выберите язык из списка. Автоматически выбирается английский язык.

32  Глава 1



Установка и настройка Kali Linux

2. Selection Location (Выбор места расположения). Выберите страну из раскрыва­
ющегося списка.
3. Configure the Keyboard (Конфигурация клавиатуры). Выберите желаемую раскладку клавиатуры.
4. Host Name for the system (Имя хоста для системы). Имя хоста необходимо для
опознавания вашего компьютера в локальной сети. По умолчанию выбирается
Kali. Это имя вы можете оставить без изменений.
5. Set the Domain (Настройка домена). Домен используется, если компьютер подключен к доменной сети. Поле ввода имени домена можно не заполнять.
6. Set Password (Настройка пароля). Это пароль учетной записи администратора.
Пароль должен быть сложным и хорошо запоминаемым. Его следует держать
в секрете и не забывать.
7. Configure the clock (Настройка системного времени). Выберите ваш часовой
пояс.
8. Partition Disk (Раздел диска). Программа установки поможет вам разбить диск
на разделы. Для использования всего пространства жесткого диска выберите
вариант Use entire disk option (Использовать весь диск). Если же на компьютере
установлена еще одна операционная система, для установки Kali Linux следует создать отдельный раздел. Далее выберите этот раздел из списка разделов
вручную. Раздел будет создан установщиком в ходе дальнейшей установки
операционной системы.
Далее программа установки спросит вас о разметке раздела. По умолчанию будет использован весь раздел. Обратите внимание: все файлы было бы неплохо
хранить в отдельном, домашнем каталоге, поэтому для него желательно создать отдельный раздел /home. В этом случае при переустановке операционной
системы ваши файлы не будут удалены. Выбор размера раздела /home зависит
только от ваших потребностей. Чтобы в этом разделе смогли поместиться все
ваши файлы, выберите значение не менее 50 Гбайт. Для обычных задач или
при дефиците места на жестком диске можете ограничить размер домашнего
каталога 10–20 Гбайт.
Начинающим пользователям мы рекомендуем выбрать вариант Use entire disk
option (Использовать весь диск). Затем выберите диск, на который вы хотите
установить Kali Linux. Выберите пункт All files (Все файлы) в одном разделе.
После того как разделы будут выбраны, программа установки покажет список
настроенных разделов (рис. 1.7).
Убедитесь, что переключатель Write the changes to disks? (Записать изменения на
диск?) установлен в положение Yes (Да), и нажмите кнопку Continue (Продолжить). Разметка будет завершена, а изменения — записаны на диск.
9. Network Mirror (Сетевое зеркало). Начинающим пользователям рекомендуется
выбрать No (Нет).

Начинаем работать с Kali Linux  33

Рис. 1.7. Обзор разделов

Далее программа начнет установку операционной системы Kali Linux на жесткий диск. Эта процедура займет некоторое время, в зависимости от характеристик
вашего компьютера. На тестовой машине процесс установки занял 20 минут.
После того как операционная система будет установлена на жесткий диск компьютера, программа установки попросит вас настроить диспетчер пакетов. Затем
установщик предложит по умолчанию установить загрузчик GRUB в главную
загрузочную запись (MBR). Если на вашем компьютере Kali Linux устанавливается как единственная операционная система, выберите значения, предлагаемые
по умолчанию. Обратите внимание: если на вашей машине установлена еще одна
операционная система, загрузчик GRUB устанавливать в главную загрузочную
запись (MBR) нельзя! Иначе установленная ранее операционная система перестанет загружаться.
По окончании установки вы увидите на экране сообщение о том, что установка
Kali Linux завершена (рис. 1.8).
Для первого запуска Kali Linux перезагрузите компьютер, нажав кнопку Continue
(Завершить). После перезапуска вы увидите экран входа в Kali Linux. Для входа
в систему используйте данные, введенные при установке. По умолчанию имя пользователя и пароль — root (рис. 1.9, 1.10).

34  Глава 1



Установка и настройка Kali Linux

Рис. 1.8. Сообщение об окончании установки

Рис. 1.9. По умолчанию имя пользователя — root

Рис. 1.10. По умолчанию пароль — root

Начинаем работать с Kali Linux  35

Установка Kali на виртуальную машину
Kali Linux можно установить и на виртуальную машину как гостевую операционную
систему. Преимущества установки ОС на виртуальную машину в том, что вам не нужно готовить отдельный раздел на жестком диске вашего компьютера. Виртуальная
машина устанавливается в основной операционной системе как обычная программа.
А Kali Linux устанавливается в качестве гостевой системы уже на эту виртуальную
машину. При этом основная ОС не подвергается никакой опасности.
Мы воспользуемся виртуальной машиной VirtualBox (http://www.virtual­
box.org). VirtualBox — это программа виртуализации с открытым исходным кодом. Программа может работать с такими операционными
системами, как Windows, Linux, OS X и Solaris.

К сожалению, установка операционной системы на виртуальную машину
не лишена недостатков. И главный из них — низкая (по сравнению с обычной
установкой на жесткий диск компьютера) скорость работы. Это объясняется тем,
что все ресурсы компьютера делятся между основной и гостевой операционными
системами.
Существует два варианта установки операционной системы на виртуальную
машину. Первый вариант — установка Kali Linux с ISO-образа, записанного на
DVD или сохраненного на жестком диске компьютера. Установка с ISO-образа
займет больше времени по сравнению с установкой образа VMware. Но вы сможете
самостоятельно выбрать необходимые параметры установки.

Установка Kali на виртуальную машину с ISO-образа
Для установки Kali Linux на виртуальную машину с ISO-образа выполните следующие действия.
1. Создайте новую виртуальную машину, нажав на панели инструментов кнопку
New (Создать) (рис. 1.11).
2. Далее следует ввести имя создаваемой виртуальной машины, а также выбрать
тип и версию операционной системы. Мы предлагаем назвать создаваемую
виртуальную машину Kali Linux, выбрать из раскрывающегося списка Type (Тип)
вариант Linux, а из списка Version (Версия) — версию Debian. Обратите внимание:
вам предлагается на выбор две версии — Debian (64-bit) и Debian (32-bit). Выбор версии зависит от двух факторов от типа операционной системы (32- или 64-битная)
и от скачанной вами версии ISO-образа. Если система 64-битная, а скачанный
ISO-образ — 32-битный, выбирается версия Debian (32-bit). Если у вас 32-битная
система, потребуется 32-битный ISO-образ и версия Debian (32-bit). Версия Debian
(64-bit) выбирается, если система и скачанная версия ISO-образа — 64-битные.
Тип системы можно посмотреть в диалоговом окне System (Система). После определения типа и версии системы нажмите кнопку Next (Далее).

36  Глава 1



Установка и настройка Kali Linux

Рис. 1.11. Создание новой виртуальной машины

3. Следующим шагом мы определяем объем оперативной памяти, выделяемой для
виртуальной машины. Чем больше вы сможете выделить виртуальной машине
оперативной памяти, тем лучше будет работать гостевая операционная система.
Как видно из рис. 1.12, мы смогли выделить создаваемой виртуальной машине
память объемом 2048 Мбайт. Выделите столько оперативной памяти, сколько
позволяет ваш компьютер, и нажмите кнопку Next (Далее). Обратите внимание:
мы не можем выделить виртуальной машине весь имеющийся на компьютере
объем оперативной памяти, так как она нужна и для работы основной операционной системы.
4. В открывшемся окне Hard disk (Жесткий диск) установите переключатель в положение Create a virtual hard disk now (Создать новый виртуальный жесткий диск)
(рис. 1.13) и продолжите установку. В следующем окне Specified type (Укажите
тип) оставьте предлагаемый по умолчанию тип создаваемого диска — VDI
(VirtualBox Disk Images) и перейдите к окну File location and size (Укажите формат
хранения), в котором установите переключатель в положение Dynamic virtual hard
disk (Динамический виртуальный жесткий диск) и нажмите кнопку Next (Далее).
Откроется окно File location and size (Укажите имя и размер файла) (рис. 1.14).

Начинаем работать с Kali Linux  37

Рис. 1.12. Выделение оперативной памяти виртуальной машине

Рис. 1.13. Создание виртуального жесткого диска

38  Глава 1



Установка и настройка Kali Linux

Рис. 1.14. Выбираем размер виртуального жесткого диска

5. В поле ввода Name (Имя) оставьте предлагаемое по умолчанию имя Kali Linux.
С помощью горизонтального ползунка выберите желаемый размер жесткого
диска, но не менее 32 Гбайт. Если же вы хотите установить дополнительное
программное обеспечение, выделите по возможности больше пространства.
6. После того как размер диска будет определен, еще раз проверьте выбранные
параметры и нажмите кнопку Create (Создать).
7. Новая виртуальная машина создана. Ее имя вы увидите в левой части окна
VirtualBox (рис. 1.15). Теперь можно приступать к установке операционной
системы Kali Linux.
8. Дважды щелкните кнопкой мыши на названии вновь созданной виртуальной
машины. Машина запустится, и вы увидите диалоговое окно Select start-up disk
(Выберите загрузочный диск) (рис. 1.16).
9. Щелкните кнопкой мыши на изображении папки справа от списка. Откройте
в появившемся диалоговом окне папку, в которой сохранен ISO-образ Kali
Linux 2018.2, щелкните на этом файле и нажмите кнопку ОК. После того как
образ будет выбран, закройте диалоговое окно Select start-up disk (Выберите загрузочный диск), нажав кнопку Start (Начать).
10. Дальнейшая установка ничем не отличается от обычной установки Kali Linux на
жесткий диск компьютера. Поэтому следуйте указаниям, приведенным выше.

Начинаем работать с Kali Linux  39

Рис. 1.15. Виртуальная машина создана

Рис. 1.16. Диалоговое окно Select start-up disk (Выберите загрузочный диск)

40  Глава 1



Установка и настройка Kali Linux

Установка Kali на виртуальную машину
с образа виртуальной машины Kali Linux
Второй вариант установки Kali Linux на виртуальную машину — использование
предоставляемого Kali Linux образа VMware. Этот образ легко устанавливается на виртуальной машине. Загрузить образ операционной системы вы можете
со страницы https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-imagedownload/.
Обратите внимание: список доступных образов Kali для виртуальных платформ
распределен по двум вкладкам. На вкладке Kali Linux VMware Images — в формате
сохранения 7zip (рис. 1.17) и Kali Linux VirtualBox Images — в формате сохранения Ova
(Open Virtual Appliance) (рис. 1.18).

Рис. 1.17. Список доступных образов Kali для платформы VMware
в формате 7zip

Рис. 1.18. Список доступных образов Kali для платформы VirtualBox
в формате Ova

После того как образ Kali Linux будет загружен, необходимо сравнить хеш
SHA256 загруженного файла со значением хеша, указанным на странице загрузки.
Если значения совпали, разархивируйте полученный образ в ту папку, в которой
вы этот образ решили сохранить. Если у вас основная операционная система

Начинаем работать с Kali Linux  41

Windows, воспользуйтесь для извлечения архива любым из установленных на вашей машине архиваторов, умеющих работать с ZIP-архивами. Например, WinRAR,
WinZIP, 7-ZIP. В операционных системах Linux для разархивирования можно
использовать архиваторы .gz или 7-ZIP. После успешного разархивирования вы
найдете в целевой папке 13 файлов.
1. Чтобы создать с помощью образа новую виртуальную машину, на панели инструментов виртуальной машины Oracle VirtualBox Manager нажмите кнопку
New (Создать).
2. Создаваемую виртуальную машину мы назовем Kali Linux from VM, тип операционной системы определим как Linux, версию — Debian.
3. Выделим оперативную память объемом 2048 Мбайт.
4. Далее в окне Hard disk (Жесткий диск) установите переключатель в положение
Use an existing virtual hard drive file (Использовать существующий виртуальный
жесткий диск). Нажмите кнопку , расположенную справа от поля ввода
с именем открываемого образа и в появившемся окне Select the virtual hard disk file
(Выберите файл виртуального жесткого диска) укажите путь к ранее разархивированному образу Kali Linux. Мы в качестве образа жесткого диска выбрали файл
kali-linux-2018-4-vm-amd64. После выбора файла образа нажмите кнопку Create
(Создать) (рис. 1.19).

Рис. 1.19. Файл образа выбран

42  Глава 1



Установка и настройка Kali Linux

По умолчанию будет определена следующая конфигурация.
‰‰Размер жесткого диска: 30 Гбайт.
‰‰Тип сети: NAT.
‰‰Имя пользователя: root.
‰‰Пароль: root.
При тестировании на проникновение старайтесь не использовать тип
сети NAT. Лучше выбрать подключение типа «сетевой мост». При настройке машины измените предлагаемые по умолчанию логин и пароль.

Если при установке образа не возникнет никаких ошибок, в левой части окна
Orakle VM VirtualBox Manager появится панель новой виртуальной машины.
Для запуска виртуальной машины нажмите кнопку Run (Запустить) на панели
инструментов окна менеджера VirtualBox.
Если появится сообщение об ошибках, загрузите пакет расширения VirtualBox
(http://www.virtualbox.org/wiki/Downloads). После нажатия кнопки ОК откроется следующее диалоговое окно (рис. 1.20).

Рис. 1.20. VirtualBox — Вопрос

Продолжите установку. Для этого нажмите кнопку Install (Установить), а затем — ОК.

Сохранение или перенос виртуальной машины
Есть два преимущества при установке Kali Linux на виртуальную машину.
Виртуальную машину очень просто поставить на паузу. Режим паузы позволит
остановить работу машины без потери данных. Например, если вам необходимо
завершить работу основной системы, а виртуальная машина продолжает обработку данных, режим паузы выполняемое действие приостановит и при следующем
запуске позволит продолжить работу с того места, на котором вы остановились.

Начинаем работать с Kali Linux  43

Для приостановки работы виртуальной машины нажмите кнопку Pause (Пауза),
расположенную в левом верхнем углу окна.
Еще одной особенностью виртуальной машины является возможность перемещения ее с одного компьютера на другой. Это очень удобная функция. Например,
виртуальная машина работала на ноутбуке, но вам потребовалось переместить ее
на более новый и более мощный компьютер. При этом вся конфигурация и настройки будут сохранены и вам не придется снова устанавливать и настраивать
операционную систему.
Для экспорта виртуальной машины завершите работу гостевой системы.
Далее выберите в верхней части окна менеджера виртуальных машин команду
меню FileExport Appliance (ФайлЭкспорт конфигураций). Вам будет предложено
экспортировать виртуальную машину Kali Linux. Выберите папку, в которую будут
экспортированы настройки программы. Когда все настройки будут выполнены,
нажмите кнопку Export (Экспорт). Виртуальная машина будет экспортирована
в выбранную ранее папку. Этот процесс займет некоторое время, в зависимости от
размера виртуальной машины.
После того как экспорт будет завершен, для переноса виртуальной машины
на другой компьютер вы можете использовать любое запоминающее устройство.
Имейте в виду: при выборе Oracle VirtualBox вам для создания виртуальной машины
на новом компьютере необходимо установить ту же версию Oracle VirtualBox, которая была на прежней машине. Далее импортируйте виртуальную машину. Для этого
выберите созданный ранее файл конфигурации и следуйте инструкциям.

Установка Kali на USB
Третий вариант — установка Kali Linux на USB (флешку). Такой метод называется Portable Kali Linux. Согласно официальной документации, у разработчиков это
самый любимый и самый быстрый способ загрузки и установки Kali. По сравнению
с вариантом установки ОС на жесткий диск, с помощью флешки и записанной на
ней портативной Kali вы можете запустить Kali Linux на любом компьютере, поддерживающем загрузку с USB.
Процедура установки операционной системы на USB также применительна к картам памяти (SSD, SDHC, SDXC и др.).

Есть несколько инструментов, позволяющих создать портативную Kali Linux.
Один из таких инструментов — Rufus (http://rufus.akeo.ie/). Он запускается только
на компьютере под управлением операционной системы Windows.
Для создания загрузочного диска из ISO-образа можно использовать и другие
инструменты:
‰‰Win32DiskImager (https://launchpad.net/win32-image-writer);
‰‰Universal USB Installer (http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/);
‰‰LinuxLive USB Creator (http://www.linuxliveusb.com).

44  Глава 1



Установка и настройка Kali Linux

Перед созданием портативной Kali Linux вам нужно учесть несколько моментов.
‰‰Kali Linux ISO image. С помощью специального инструмента вы, конечно, можете

сразу загрузить образ портативной Kali Linux. Но, по нашему мнению, гораздо
лучше сначала загрузить ISO-образ, а затем настроить Rufus на работу с этим
ISO-файлом.
‰‰USB flash disk. Вам понадобится чистый USB-накопитель объемом, достаточным
для работы операционной системы. Мы предлагаем использовать USB размером
не менее 16 Гбайт.
После того как Rufus будет загружен, для его запуска дважды щелкните кнопкой
мыши на файле rufus.exe. После запуска программы вы увидите окно Rufus.
В операционной системе UNIX образ создается с помощью команды dd. Далее
приведен пример создания образа:
dd if=kali-linux-2.0-i386.iso of=/dev/sdb bs=512k

Здесь /dev/sdb — это USB.

Для создания загрузочного USB Kali выполните следующие действия.
1. В качестве целевого устройства выберите USB. В нашем примере в операционной системе Windows это диск E.
2. Выберите из раскрывающегося списка Partition scheme and target system type (Схема раздела и тип целевой системы) параметр MBR partition scheme for BIOS or UEFI
computers (Схема разделов MBR для компьютеров BIOS или UEFI).
3. Установите флажок Create a bootable disk using (Создать загрузочный диск с помощью), выберите значение ISO image (Образ ISO) и нажмите кнопку с изображением диска (рис. 1.21).
4. Для создания загрузочного образа нажмите кнопку Start (Начать).
После того как процесс будет завершен, сохраните все документы. Если вы
хотите сразу попробовать загрузить Kali Linux с USB, перезагрузите компьютер.
Возможно, для загрузки с USB вам потребуется перенастроить базовую систему
ввода-вывода (BIOS). Если все будет сделано правильно, система Kali Linux будет
загружена с USB.
С помощью Rufus можно установить Kali Linux на SD-карту. Для достижения наилучшего результата следует использовать SD-карту класса 10.
Если вы хотите воспользоваться расширенными возможностями сохранения на USB, выполните действия, описанные в разделе документации
Adding Persistence to Your Kali Live USB (Повышение надежности Kali
Live USB) по адресу https://docs.kali.org/downloading/kali-linux-live-usbpersistence.

Настройка виртуальной машины  45

Рис. 1.21. Окно программы Rufus

Настройка виртуальной машины
После того как виртуальная машина Kali Linux будет установлена, следует выполнить несколько настроек. Они обеспечат большую функциональность и удобство
использования.

Гостевые дополнения VirtualBox
После установки виртуальной машины Kali Linux рекомендуется установить гостевое дополнение VirtualBox, которое предоставит вам следующие возможности.
‰‰Работа с виртуальной машиной в полноэкранном режиме.
‰‰Быстрая работа мыши в виртуальной машине.
‰‰Копирование текста между основной и гостевой операционными системами.
‰‰Совместное использование общей папки основной и гостевой машинами.

46  Глава 1



Установка и настройка Kali Linux

Для установки гостевых дополнений выполните следующие действия.
1. Выберите в меню VirtualBox команду DevicesInstall Guest Additions (Устрой­
стваУстановка гостевых дополнений). Файл с гостевыми дополнениями будет
смонтирован как диск.
2. В окне VirtualBox появится сообщение (рис. 1.22). Нажмите кнопку Cancel (Отмена), чтобы закрыть окно.

Рис. 1.22. Сообщение в окне VirtualBox

3. Откройте терминал и перейдите в папку /media/cdrom0, где cdrom0 — это и есть
диск с гостевыми дополнениями VirtualBox (VirtualBox guest additions CD-ROM)
(рис. 1.23).

Рис. 1.23. Изменяем точку монтирования диска

4. Для запуска установщика гостевых дополнений VirtualBox выполните следующую команду (рис. 1.24):
sh ./VBoxLinuxAdditions.run

Сборка и установка всех необходимых модулей займет несколько минут.
1. Вернитесь в домашний каталог.
2. Извлеките образ компакт-диска VBoxAdditions. Для этого щелкните правой
кнопкой мыши на значке этого диска и выберите в появившемся меню команду
Eject (Извлечь). Значок компакт-диска исчезнет с Рабочего стола.
3. Перезагрузите виртуальную машину. Для этого введите в командную строку
терминала команду reboot.
4. После перезагрузки можете перевести виртуальную машину в полноэкранный режим. Для этого выберите в строке меню виртуальной машины команду
ViewSwitch to fullscreen (ВидПолноэкранный режим).

Настройка виртуальной машины  47

Рис. 1.24. Запуск установщика гостевых дополнений VirtualBox

Настройка сети
В следующем подразделе мы обсудим, как настроить Kali Linux для подключения
к проводной и беспроводной сети.

Настройка проводного соединения
В ISO-образе виртуальной машины Kali Linux для VMware по умолчанию выбран
тип сетевого соединения NAT (Network Address Translation). При использовании
этого варианта виртуальная машина Kali Linux будет подключена к внешнему
миру через основную операционную систему. Но внешний мир, в том числе основная операционная система, к виртуальной машине Kali Linux подключиться
не сможет.
Для тестирования на проникновение лучше выбрать тип подключения с названием «сетевой мост». Для изменения типа сетевого подключения выполните
следующие действия.
1. Завершите работу виртуальной машины Kali Linux.
2. В левой части окна менеджера щелкните на ярлыке виртуальной машины
Kali Linux. На панели инструментов менеджера виртуальных машин нажмите
кнопку Setting (Настроить). В левой части окна менеджера виртуальных машин
появится список типов настроек выбранной виртуальной машины. Щелкните на
строке Network (Сеть). В правой части окна менеджера виртуальных машин появятся элементы управления настройками сети. Перейдите на вкладку Adapter 1

48  Глава 1



Установка и настройка Kali Linux

(Адаптер 1). Выберите в раскрывающемся списке Attached to (Тип подключения)
строку Bridged Adapter (Сетевой мост). Выберите в списке Name (Имя) сетевой
интерфейс, с помощью которого вы подключаетесь к сети (рис. 1.25).

Рис. 1.25. Выбор типа сетевого адаптера

Для использования сетевого соединения типа «Сетевой мост» основная операционная система должна подключиться к сетевому устройству (маршрутизатору
или коммутатору), умеющему выдавать IP-адрес с помощью DHCP-сервера.
Как вы знаете, IP-адрес DHCP — это динамический IP-адрес или арендованный
IP-адрес. Через некоторое время (а это время определяется DHCP-сервером)
виртуальной машине Kali Linux потребуется снова арендовать IP-адрес. Вновь
полученный IP-адрес может совпадать с предыдущим, а может и не совпадать.
Если вы хотите сделать IP-адрес постоянным, сохраните текущий IP-адрес
в файле /etc/network/interfaces.
Ниже показаны настройки, записанные в файле interfaces по умолчанию:
‰‰auto lo;
‰‰iface lo inet loopback.

По умолчанию все сетевые карты настроены на получение динамического
IP-адреса. Чтобы привязать к сетевой карте постоянный (статический) IP-адрес,
отредактируйте файл следующим образом:
‰‰auto eth0;
‰‰iface eth0 inet static;
‰‰address 10.0.2.15;
‰‰netmask 255.255.255.0;
‰‰network 10.0.2.0;
‰‰broadcast 10.0.2.255;
‰‰gateway 10.0.2.2.

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

Настройка виртуальной машины  49

Настройка беспроводного соединения
Виртуальная машина Kali Linux может подключиться к сети с помощью беспроводной сетевой карты основного компьютера. Вы также можете использовать
внешнюю беспроводную USB-карту.
Для примера мы возьмем беспроводную карту USB Ralink с внешней антенной
(далее, в разделе, посвященном тестированию на проникновение беспроводной
сети, мы подробно обсудим, как выбрать антенну для беспроводной сети).
1. Для активации вашей беспроводной сетевой USB-карты подключите адаптер
к порту USB. Далее выберите в окне виртуальной машины Kali Linux команду
меню DevicesUSBUSB Setting (УстройстваUSBНастройка USB) и выберите в открывшемся списке название подключенной к USB-порту сетевой карты
(рис. 1.26).

Рис. 1.26. Список с подключенными USB-устройствами

2. После того как Kali распознает подключенную к USB-порту сетевую карту,
для просмотра информации о подключенном устройстве следует запустить

50  Глава 1



Установка и настройка Kali Linux

программу dmesg. Чтобы определить, правильно ли подключено беспроводное
устройство, откройте терминал и выполните следующую команду:
ifconfig

Если беспроводное подключение настроено правильно, вы должны увидеть
списки настроек WLAN0 или WLAN1.
3. Выходные данные должны включать список настроек для WLAN. Это беспроводное сетевое подключение.
4. В правом верхнем углу панели задач Рабочего стола Kali находится значок Network
Connectioms (Сетевые подключения). Чтобы отобразить все доступные беспроводные сетевые подключения, щелкните на нем кнопкой мыши.
5. Вы увидите список беспроводных сетей, доступных для вашего устройства
(рис. 1.27).

Рис. 1.27. Список доступных беспроводных сетей

Обновление Kali Linux  51

6. Для подключения дважды щелкните на имени требуемой беспроводной сети.
Если беспроводная сеть просит авторизации, вам будет предложено ввести
пароль. Подключение состоится только при введении правильного пароля.

Обновление Kali Linux
Kali Linux состоит из ядра и нескольких сотен пакетов с прикладным программным
обеспечением, отвечающим, за разные функции операционной системы. Для обновления этих функций следует обновить программное обеспечение. Рекомендуется
обновлять ядро и программное обеспечение только из репозитория Kali Linux.
Первое, что нужно сделать после установки и настройки операционной системы, — обновить Kali Linux. Поскольку Kali Linux основана на Debian, используйте
для обновления команду apt-get.
Команда apt-get обратится к файлу /etc/apt/sources.list , чтобы подключиться к серверу с обновлениями. Но прежде вам следует убедиться, что
в файле sources.list содержатся ссылки на правильные источники пакетов
для обновления.
Обновите файл sources.list. Для этого откройте терминал и введите следу­
ющую команду:
leafpad /etc/apt/sources.list

Скопируйте репозиторий с официального сайта, находящегося по адресу https://
docs.kali.org/general-use/kali-linux-sources-list-repositories, вставьте его в leafpad и сохраните:

deb http://http.kali.org/kali kali-rolling main contrib non-free
# For source package access, uncomment the following line
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free

Перед обновлением следует синхронизировать индексные файлы пакета из
репозитория, указанного в списке источников файла /etc/apt/sources.list. Синхронизация выполняется с помощью команды:
apt-get update

Обратите внимание: перед обновлением операционной системы и программного
обеспечения Kali Linux всегда необходимо запускать команду apt-get update.
После того как индексы пакетов будут синхронизированы, можно приступать
к обновлению.
Для обновления вы можете использовать две команды.
‰‰apt-get ubgrade. С помощью этой команды все пакеты обновятся до последней

версии. Если при обновлении какого-либо пакета возникнут затруднения, он
не будет обновлен.
‰‰apt-get dist-ubgrade . Эта команда обновит весь дистрибутив Kali Linux.

Например, с ее помощью Kali Linux версии 1.0.2 обновится до версии 2.0.

52  Глава 1



Установка и настройка Kali Linux

Команда обновит все установленные пакеты, а также обработает все конфликты,
возникшие в процессе обновления. Однако от вас может потребоваться выполнение некоторых действий.
После того как будет выбран параметр команды обновления, программа apt-get
выведет список всех пакетов, которые будут установлены, обновлены или удалены,
и станет ожидать вашего подтверждения выполняемых действий.
Если подтверждение будет получено, начнется процесс обновления. Внимание:
процесс обновления может быть продолжительным и обычно зависит от скорости
интернет-подключения.

Настройка Kali Linux AMI в облаке Amazon AWS
Kali Linux также может быть настроена в облаке как Amazon Machine Image (AMI)
на платформе облачного вычислительного сервиса Amazon Web Services. Стоимость использования сервиса составляет $0,046 в час. Но если сервис используется как базовая служба пользователя и не превышает установленных ограничений, с ним можно работать бесплатно. Для регистрации и настройки потребуется
ваша кредитная карта. Обратите внимание: если вы превысите установленные ограничения, перед снятием денег
с кредитной карты вы получите уведомление.
Перед тем как начать настройку
Kali Linux в облаке, посетите Amazon
Marketplace и ознакомьтесь с подробной
информацией об AMI (https://aws.ama­
zon.com/marketplace/pp/B01M26MMTT). Обратите внимание на список ограничений для бесплатного использования.
Для установки и настройки Kali
Linux в облаке вам придется выполнить следующие действия.
1. Сначала создайте учетную запись
на портале AWS Amazon. Для этого
зайдите на страницу, расположенную по адресу https://aws.amazon.com/,
и щелкните кнопкой мыши на ссылке Create a new account (Создать новую учетную запись). Обязательно
запомните используемые учетные
данные, а также созданное вами
имя AWA (рис. 1.28).

Рис. 1.28. Создание учетной записи

Настройка Kali Linux AMI в облаке Amazon AWS  53

2. Нажмите кнопку Continue (Продолжить) и заполните дополнительные поля ввода. При вводе данных вашей кредитной карты вам будет предложено позвонить
в Amazon и ввести код для проверки и обеспечения безопасности. После того
как все данные будут введены, а проверка безопасности пройдена, на экране
появится консоль AWS.
3. Вы должны получить по электронной почте сообщение о том, что вашаучетная
запись успешно создана. После этого вы сможете войти в консоль AWS и завершить настройку. В группе элементов управления Build a solution (Построить
решение) щелкните кнопкой мыши на ссылке Launch a virtual machine (Запустить
виртуальную машину) (рис. 1.29).

Рис. 1.29. Запуск виртуальной машины в облаке

4. В консоли AWS вы увидите панель EC2 Dashboard с элементами управления
(рис. 1.30). Разверните группу элементов управления NETWORK & SECURITY (Сеть
и безопасность) и щелкните на строке Key Pairs (Пары ключей).
5. Далее щелкните кнопкой мыши на ссылке Create Key Pair (Создать пару ключей).

54  Глава 1



Установка и настройка Kali Linux

Рис. 1.30. Консоль AWS

6. При появлении запроса введите имя пары ключей. Поскольку эта пара ключей
предназначена для аутентификации и проверки, выбирайте легко запоминаемые
имя и расположение (рис. 1.31).

Рис. 1.31. Диалоговое окно Create Key Pair (Создание пары ключей)

7. Выберите и сохраните пару ключей. Обратите внимание на расширение файла
пары ключей: .pem. Это как цифровой отпечаток пальца в шестнадцатеричном
формате (рис. 1.32).

Настройка Kali Linux AMI в облаке Amazon AWS  55

Рис. 1.32. Сохранение файла пары ключей

8. После сохранения пары ключей вернитесь в консоль AWS, щелкните кнопкой мыши на меню Resource Groups (Ресурсные группы) и выберите в верхней
части консоли строку Launch a Virtual Machine (Запустить виртуальную машину). В меню, расположенном в левой части консоли, щелкните на ярлыке AWS
Marketplace и введите в строке поиска Kali Linux (рис. 1.33).

Рис. 1.33. Строка поиска на вкладке AWS Marketplace

56  Глава 1



Установка и настройка Kali Linux

9. Сейчас на торговой площадке AMI вы сможете найти только один экземпляр
Kali Linux. Обратите внимание, что это бесплатная операционная система (Free
tier eligible) и распространяется под логотипом Kali. Нажмите кнопку Select (Выбрать), чтобы использовать этот AMI (рис. 1.34).

Рис. 1.34. Выбор логотипа Kali

Вы можете выбрать доступные для AMI сборки, отличающиеся, скажем, параметрами использования памяти и процессора. Здесь вы сможете найти, например, сборку T2 Nano с самым низким почасовым тарифом $0,006 в час. Когда
завершите просмотр типов сборок (Instance Types), прокрутите страницу вниз
и нажмите кнопку Continue (Продолжить) (рис. 1.35).

Рис. 1.35. Список доступных сборок

Настройка Kali Linux AMI в облаке Amazon AWS  57

10. Выберите бесплатную сборку t2.micro, так как она предназначена для общего
использования (рис. 1.36).

Рис. 1.36. Выберите t2.micro

11. Нажмите кнопку Review and Launch (Обзор и запуск). Убедитесь, что выбран тип
сборки t2.micro, и нажмите кнопку Launch (Запустить) (рис. 1.37).

Рис. 1.37. Запуск t2.micro

12. Теперь вам будет предложено использовать ранее сохраненную пару ключей.
Выберите в первом раскрывающемся списке строку Choose and existing key pair
(Выберите существующую пару ключей). В меню Select a key pair (Выберите
пару ключей) перейдите в каталог, в котором эта пара ключей сохранена.

58  Глава 1



Установка и настройка Kali Linux

Чтобы принять условия, установите соответствующий флажок и нажмите
кнопку Launch Instances (Запустить экземпляр).
13. На экране появится уведомление о состоянии запуска Kali Linux AMI (рис. 1.38).
Вы можете самостоятельно создавать оповещения, когда при превышении уровня бесплатного пользования AWS счета выставлялись бы автоматически.

Рис. 1.38. Состояние запуска

14. Прокрутите страницу вниз и щелкните на строке View Usage Instructions (Просмотр
инструкций по использованию) (рис. 1.39).

Рис. 1.39. Инструкция по использованию Kali Linux

15. Вернитесь на страницу состояния запуска (Launch Status) и выберите ссылку
Open Your Software on AWS Marketplace (Открыть программное обеспечение на AWS
Marketplace). На вкладке Software Subscriptions and AMI (Подписки на программное
обеспечение и AMI) щелкните кнопкой мыши на ссылке View Instances (Просмотр
сборок).
16. На экране появится всплывающее окно, в котором будут представлены сведения
об экземпляре, включая идентификатор, сведения об операционной системе и ее
состоянии. Щелкните кнопкой мыши на строке Manage in AWS Console (Управ-

Настройка Kali Linux AMI в облаке Amazon AWS  59

ление в консоли AWS). Эта строка находится в правом нижнем углу всплыва­
ющего окна (рис. 1.40).

Рис. 1.40. Всплывающее окно

17. В верхней части открывшейся страницы нажмите кнопку Connect (Подключиться) (рис. 1.41).

Рис. 1.41. Кнопка Connect (Подключиться) в верхней части страницы

18. Далее будут предложены доступные варианты подключения к нашему экземпляру операционной системы и инструкции о том, как с помощью SSH-клиента,
например, PuTTY выполнить подключение. Обратите внимание: в приведенном
примере имя пары ключей — Kali_AWS.pem. При подключении через SSH-клиент
обязательно используйте ранее выбранное вами имя пары ключей (рис. 1.42).
19. Далее для подключения к вашему облачному экземпляру Kali Linux потребуется автономный клиент Secure Shell (SSH). В качестве отдельного клиента мы
используем PuTTY. Для аутентификации с нашим облачным экземпляром с использованием ранее загруженной пары ключей нам также потребуется Puttygen.
И PuTTY, и Puttygen поставляются в 32-и 64-разрядной версиях и могут быть
загружены по следующей ссылке: https://www.chiark.greenend.org.uk/~sgtatham/putty/
latest.html?.
Обязательно скачайте оба файла: putty.exe и puttygen.exe. Это исполняемые
файлы, предназначенные для операционной системы Windows. Поскольку при
написании этой книги использовался компьютер с 64-битной архитектурой, мы
загрузили файл с 64-разрядной версией.

60  Глава 1



Установка и настройка Kali Linux

Рис. 1.42. Подключение к интерфейсу

20. После загрузки файлов putty.exe и puttygen.exe сначала запустите файл
puttygen.exe и нажмите кнопку Load private key (Загрузить персональный ключ),
после чего перейдите к загруженному ранее файлу пары ключей. Возможно, вам
для всех файлов потребуется изменить тип файла с PFF на более старый PEM,
так как файл ключей сохранен именно в этом формате. Далее вам будет предложено сохранить ваш персональный ключ, чтобы преобразовать его в формат
PuTTY.
21. Когда ключ будет найден, нажмите кнопку Save private key (Сохранить персональный ключ) (рис. 1.43).
Теперь можно запустить и настроить Putty.exe с необходимыми настройками
для подключения к нашему экземпляру Kali, расположенному в облаке AWS.
22. В группе элементов Category (Категория), расположенной в левой части окна
PuTTY, введите адрес публичного DNS. Его вы найдете на панели инструментов категории экземпляров (рис. 1.44).
23. Введите публичный DNS-адрес в поле ввода имени хоста PuTTY (рис. 1.45).

Настройка Kali Linux AMI в облаке Amazon AWS  61

Рис. 1.43. Сохранение приватного ключа

Рис. 1.44. Публичный DNS-адрес

Рис. 1.45. DNS-адрес введен

62  Глава 1



Установка и настройка Kali Linux

24. В левой части окна PuTTY в группе элементов управления Category (Категория)
прокрутите ползунок вниз, пока не увидите категорию SSH. Щелкните на плюсике левее названия категории и в открывшемся списке подкатегорий выберите
Auth (Полномочия) (рис. 1.46). В правой части окна PuTTY нажмите кнопку
Browse (Обзор) и в появившемся окне выберите приватный ключ формата .ppk.
Мы указали имя пользователя Ec2-user.

Рис. 1.46. Путь к приватному ключу выбран

25. Нажмите кнопку Open (Открыть) и войдите в свой экземпляр Kali в облаке.
После подключения не забудьте обновить Kali Linux.

Резюме
После ознакомления с последней версией Kali Linux мы увидели, что в операционной системе предусмотрен большой набор инструментов для обеспечения
безопасности. Это инструменты цифровой судебной экспертизы, оценки беспроводной безопасности, инструменты обратной инженерии, хакерские инструменты
и инструменты для тестирования на проникновение. Мы также рассмотрели все
способы установки и использования этой операционной системы. Вы можете запустить Kali Linux с Live DVD, USB или SD-карты, установить ее в качестве виртуальной машины или использовать в качестве основной операционной системы.
Кроме того, можно использовать облачную Kali Linux.

Дополнительные материалы  63

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

Вопросы
1. Как называется мобильная версия Kali Linux?
2. Какая Windows-программа используется для проверки целостности загруженного файла образа Kali Linux?
3. Какая команда Linux предназначена для проверки целостности загруженного
файла образа Kali Linux?
4. Какой инструмент можно использовать для установки дистрибутивов Linux,
в частности Kali Linux, на флешку, карту SD/micro-SD?
5. Какие есть Live-режимы установки и использования Kali Linux?
6. Какая команда предназначена для обновления Kali Linux?
7. Какую бесплатную сборку общего назначения можно использовать при установке Kali Linux в облаке?

Дополнительные материалы
‰‰Дополнительную информацию об установке Kali Linux можно найти здесь:
https://docs.kali.org/category/installation.

‰‰Дополнительную информацию об установке Kali Linux на жесткий диск со-

вместно с Windows и выборе операционной системы при загрузке компьютера
можно найти здесь: https://docs.kali.org/installation/dual-boot-kali-with-windows.

2

Создание испытательной
лаборатории

В этой главе мы расскажем, как создать и настроить лабораторию для наших тестов
на проникновение. Многие тесты сначала необходимо выполнять в ограниченной
лабораторной среде, прежде чем делать это в производственной среде. Помните,
перед проведением любого этапа испытаний на проникновение в реальной среде вы
должны получить письменное разрешение и в процессе соблюдать все местные законы. Было бы неплохо перед тестированием во избежание всевозможных проблем
все детали проведения испытаний обсудить с адвокатом. Некоторые страховые
компании также предлагают тестерам на проникновение на случай непредвиденных повреждений застраховать все риски.
Чтобы вы могли избежать юридических проблем и ненужных расходов, мы
настоятельно рекомендуем создать лабораторную среду для экспериментального
тестирования на проникновение. Это можно сделать как на жестком диске обычного компьютера, так и на виртуальной машине. Используя данную лабораторию,
вы сможете увидеть результаты тестов, проанализировать их влияние на оборудование, программное обеспечение и быстродействие, так как многие из этих
тестов способны нарушить нормальную работу оборудования, что затронет работу
организаций.
В этой главе мы подробно рассмотрим следующие темы.
‰‰Настройка среды Windows на виртуальной машине.
‰‰Установка уязвимых серверов.
‰‰Установка дополнительных инструментов в Kali Linux.
‰‰Сетевые службы в Kali Linux.
‰‰Дополнительные лаборатории и ресурсы.

Технические требования
‰‰Минимальные аппаратные требования: 6 Гбайт оперативной памяти, четырехъ-

ядерный процессор 2,4 ГГц, 500 Гбайт свободного места на жестком диске.
‰‰VirtualBox: https://www.virtualbox.org/wiki/Downloads.
‰‰Metasploitable 2: https://sourceforge.net/projects/metasploitable/files/Metasploitable2/.

Настройка Windows на виртуальной машине  65
‰‰Упаковщик: https://www.packer.io/downloads.html.
‰‰Vagrant: https://www.vagrantup.com/downloads.html.
‰‰Metasploitable 3: https://github.com/rapid7/metasploitable3.
‰‰Набор уязвимых веб-серверов: https://d396qusza40orc.cloudfront.net/softwaresec/
virtual_machine/BadStore_212.iso.

Физическая или виртуальная?
Решение о том, какую лабораторию создавать: физическую, виртуальную или их
комбинацию, зависит от вашего бюджета и доступных ресурсов. Тестирование на
проникновение в зависимости от используемых инструментов может быть довольно дорогим. Особенно если вы выбираете коммерческие инструменты. Но, учитывая множество доступных в Kali Linux программ с открытым исходным кодом,
без коммерческих инструментов можно обойтись. Кроме того, такие инструменты
доступны на GitHub и GitLab.
Для профессионального испытания на проникновение мы имеем две физические машины. Одна — ноутбук, используемый в лаборатории, оснащен жестким
диском объемом 1 Тбайт, 16 Гбайт оперативной памяти DDR4, процессором i7
и видеокартой NVIDIA GeForce GTX 1050. На нем установлены три виртуальные
машины и основная ОС (Kali Linux 2018.2). Вторая машина — это старая рабочая
станция Tower с дисками 2 Тбайт, 24 Гбайт оперативной памяти DDR3 и процессором Intel Xeon 3500 со встроенной видеокартой. На ней установлено несколько
виртуальных машин, в том числе используемые в моей виртуальной лабораторной
среде.
При создании лабораторной среды необходимо для каждой операционной
системы, включая основную ОС и все виртуальные машины, соблюсти хотя бы
минимальные рекомендуемые требования. Для комфортной работы без ошибок,
связанных с недостатком оперативной памяти, было бы правильно иметь запас
оперативной памяти больше рекомендуемого. Учитывая, что большинство операционных систем, созданных на базе Linux, требуют всего 2 Гбайт оперативной
памяти, выполнить это требование не так уж и тяжело. Но опять же все зависит от
вашего бюджета и доступных ресурсов.

Настройка Windows на виртуальной машине
Поскольку Microsoft Windows 10 — это последняя операционная система от компании Microsoft, мы решили установить ее в своей лаборатории по тестированию на
проникновение. Эта операционная система сейчас устанавливается на большинстве
новых персональных компьютеров и ноутбуков. Чтобы не повредить свою основную ОС, для проведения тестов Windows 10 лучше установить на виртуальную

66  Глава 2



Создание испытательной лаборатории

машину. Мы рекомендуем установить тестовую операционную систему на виртуальную машину и читателям, у которых в качестве основной ОС установлена более
старая версия Windows, MAC или Linux. Конечно, количество компьютеров под
управлением Windows 7 постоянно уменьшается. Это объясняется тем, что поддержка данной операционной системы закончилась и эти системы становятся более
уязвимыми для злоумышленников. Хотя есть пользователи, хранящие верность
Windows 7 и установившие запрет на обновление.
Для этой установки мы используем ознакомительную копию Windows 10
Enterprise Edition, доступную для прямой загрузки с сайта Microsoft. Вы можете
скачать ознакомительную копию Windows 10 Enterprise со страницы, расположенной по адресу https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise.
Учтите, что ознакомительный срок с этой версией операционной системы равен
90 дням. Далее вы должны или приобрести лицензию, или отказаться от дальнейшего использования системы.
На странице загрузки вы найдете две доступные версии: ISO-образ и версию
с долгосрочным обслуживанием (LSTB). Выберите образ ISO — Enterprise и нажмите кнопку Continue (Продолжить). Заполните необходимые поля ввода и снова
нажмите кнопку Continue (Продолжить). Пожалуйста, запомните введенные вами
данные, так как потребуется с помощью телефонного звонка или СМС пройти
проверку подлинности.
Выберите разрядность загружаемой операционной системы (32 или 64 бита),
язык и нажмите кнопку Download (Загрузить).
Теперь можно приступить к созданию виртуальной машины Windows 10.
Нет никакой разницы, какой виртуальной машиной воспользуетесь вы: VirtualBox
или VMware. Мы работали с VirtualBox.
Запустите установленную ранее виртуальную машину и нажмите кнопку New
(Создать). Эта кнопка находится в левом верхнем углу окна менеджера виртуальных машин. Присвойте виртуальной машине имя и выберите необходимую версию
(32 или 64 бита). Выбор версии зависит от разрядности вашего компьютера и от
загруженной версии ISO-образа. Для продолжения нажмите кнопку Next (Далее).
Выделите виртуальной машине объем доступной оперативной памяти. Для Win­
dows 10 рекомендуется выделять не менее 2 Гбайт. Учитывая, что на нашей машине установлено 24 Гбайт оперативной памяти, мы для виртуальной машины
Windows 10 выделили чуть больше 6 Гбайт (рис. 2.1).
Создайте новый виртуальный жесткий диск. Для этого в окне Hard Disk (Жесткий
диск) установите переключатель в положение Create virtual hard disk new (Создать
новый виртуальный жесткий диск) и нажмите кнопку Create (Создать).
В следующем окне Specified Type (Укажите тип) оставьте предлагаемый по умолчанию тип создаваемого диска — VDI (VirtualBox Disk Images) и нажмите кнопку Next
(Далее). На экране появится окно File location on size (Укажите формат хранения).
Установите переключатель в положение Dynamic virtual hard disk (Динамический виртуальный жесткий диск). Выбрав этот параметр, вы сэкономите место на жестком

Настройка Windows на виртуальной машине  67

диске. Выбирая размер динамического виртуального жесткого диска, вы указываете
его максимальный размер, который не может быть превышен. На деле же будет
использована только необходимая для работы операционной системы часть выделенного пространства. Нажмите кнопку Next (Далее). Появится окно Name and
file size (Укажите имя и размер файла).

Рис. 2.1. Выделение памяти для виртуальной машины Windows 10

При выборе размера виртуального диска следует учесть, сколько займут сама
операционная система и установленные приложения. Нам, например, нужно будет
установить Metasploitable. Поэтому для виртуальной машины Windows 10 мы выделили 64 Гбайт. Нажмите кнопку Create (Создать) (рис. 2.2).
Теперь нам нужно указать, где находится ISO-образ устанавливаемой операционной системы. В левой части менеджера виртуальных машин щелкните на
названии только что созданной ВМ и нажмите кнопку Start (Начать). Эта кнопка
находится на панели инструментов менеджера виртуальных машин. Машина запустится, и вы увидите диалоговое окно Select start-up disk (Выберите загрузочный
диск). Выберите образ загрузочного диска. Для этого нажмите кнопку в виде папки,
расположенную справа от поля ввода пути к устанавливаемому ISO-образу, и выберите в появившемся окне ранее загруженный ISO-образ ознакомительной копии
Windows 10. Для продолжения установки нажмите кнопку Start (Продолжить)
(рис. 2.3).

68  Глава 2



Создание испытательной лаборатории

Рис. 2.2. Виртуальная машина подготовлена к установке операционной системы

Рис. 2.3. Окно Выберите загрузочный диск

На экране появится заставка программы установки операционной системы
Windows 10. Введите необходимую информацию и для продолжения нажмите
кнопку Next (Далее).

Настройка Windows на виртуальной машине  69

Чтобы начать процесс установки, нажмите кнопку Install (Установить).
Примите условия лицензии Microsoft и для продолжения нажмите кнопку Next
(Далее). Выберите выборочную установку, нажмите кнопку Create (Создать), после
чего отформатируйте жесткий диск виртуальной машины (рис. 2.4).

Рис. 2.4. Выберите функцию форматирования виртуального жесткого диска

После форматирования убедитесь, что выбран раздел с указанным ранее размером, и для продолжения нажмите кнопку Next (Далее) (рис. 2.5).
Процесс установки операционной системы займет некоторое время, а вы
пока ознакомьтесь со списком других книг по тестированию на проникновение: https://www.packtpub.com/tech/Penetration-Testing.

После того как установка завершится (рис. 2.6), позвольте ОС автоматически
перезагрузиться.
После перезагрузки вам сначала будет предложено выбрать язык и раскладку
клавиатуры. Далее, перед тем как предложить установить параметры конфиденциальности, система попросит ввести ваш адрес электронной почты. Для настройки
безопасного входа нажмите кнопку Set up PIN (Настроить PIN-код). По телефону
или путем СМС может потребоваться подтвердить свою личность. После завершения проверки вы сможете установить PIN-код. Обязательно запомните его (это как
минимум шесть цифр), так как он потребуется для входа в систему.

70  Глава 2



Создание испытательной лаборатории

Рис. 2.5. Выбор раздела для установки

Рис. 2.6. Стадии установки операционной системы Windows 10

Установка уязвимых серверов  71

После того как установка будет завершена, следует настроить сеть и установить
приложения. Подробная информация о вашей ознакомительной копии находится
в правом нижнем углу Рабочего стола операционной системы Windows 10 (рис. 2.7).

Рис. 2.7. Информация об ознакомительной
копии установленной операционной системы

Для быстрого восстановления рабочего состояния виртуальной машины
сохраните ее текущее состояние.

Установка уязвимых серверов
В этом разделе в качестве целевой машины мы установим уязвимую виртуальную
машину. Она будет использована в нескольких главах книги при рассмотрении конкретных тем. Чтобы вы не нарушали закон, мы решили создать уязвимый сервер на
компьютере, а не использовать доступные в Интернете уязвимые серверы. Следует
еще раз обратить ваше внимание, что вы никогда не должны без письменного разрешения проникать в другие серверы. Еще одной целью установки виртуальной
машины является улучшение ваших навыков контроля. С помощью этих навыков
вы легко сможете понять, что происходит в целевой машине, и исправить выявленные проблемы так, чтобы атаки стали неэффективными.
В некоторых странах даже сканирование портов чужой машины считается
преступным деянием. Кроме того, мы легко можем восстановить операционную
систему, установленную на виртуальной машине.
В следующих разделах в качестве уязвимых серверов мы установим виртуальные машины Metasploitable 2 и Metasploitable 3. Metasploitable 2 — это виртуальная
машина ранней версии. Она, в отличие от Metasploitable 3, проще в установке и настройке. Metasploitable 3 — более новая версия, в которой учтены все обновления
уязвимостей. Но процедура установки Metasploitable 3 немного отличается от установки предыдущей версии виртуальной машины, и у новичков могут возникнуть
некоторые затруднения, поэтому мы расскажем вам, как установить и настроить
обе виртуальные машины, и рекомендуем при наличии свободных ресурсов опробовать каждую из них.

Настройка Metasploitable 2 на виртуальной машине
Metasploitable 2 — это уязвимая виртуальная машина, которую мы собираемся использовать. Ее создал знаменитый Х. Д. Мур (H. D. Moore) из Rapid7.
Кроме Metasploitable 2, существуют и другие уязвимые системы, которые
можно использовать для обучения тестированию на проникновение.
Ознакомьтесь с этими системами по адресу https://www.vulnhub.com.

72  Глава 2



Создание испытательной лаборатории

В Metasploitable 2 предусмотрено множество уязвимостей как на уровне операционной системы, так и на уровне сети и веб-приложений.
Информацию об уязвимостях, содержащихся в Metasploitable 2, можно
найти на сайте Rapid7 по адресу https://community.rapid7.com/docs/
DOC-1875.

Для установки Metasploitable 2 на виртуальную машину VirtualBox выполните
следующие действия.
1. Загрузите файл Metasploitable 2 со страницы по адресу http://sourceforge.net/
projects/metasploitable/files/Metasploitable2/.
2. Распакуйте ZIP-файл Metasploitable 2. Когда архив будет распакован, вы увидите пять файлов:
yy Metasploitable.nvram;
yy Metasploitable.vmdk;
yy Metasploitable.vmsd;
yy Metasploitable.vmx;
yy Metasploitable.vmxf.
3. Создайте в VirtualBox новую виртуальную машину. Назовите ее Metasploitable2,
в раскрывающемся списке Type (Тип) выберите операционную систему Linux,
а в списке Version (Версия) — Ubuntu.
4. Выделите память объемом 1024 Мбайт.
5. В настройках виртуального жесткого диска установите переключатель в положение Use existing hard disk (Использовать существующий жесткий диск).
Выберите ранее извлеченные файлы Metasploitable.
6. Чтобы этот сервер был доступен только из основной операционной системы
и с виртуальной машины Kali Linux, измените настройки сети, определив тип
подключения как Host-only adapter (Внутренняя связь). Обратите внимание:
чтобы Kali Linux была видна только для основной ОС и установленных в ней
виртуальных машин, также выберите в сетевых настройках Kali Linux тип подключения Host-only adapter (Внутренняя связь).
7. Запустите виртуальную машину Metasploitable2. Когда процесс загрузки виртуальной машины завершится, войдите в консоль Metasploitable2, используя
следующие учетные данные:
yy имя пользователя: msfadmin;
yy пароль: msfadmin.
Так выглядит консоль Metasploitable 2 после входа в систему (рис. 2.8).

Установка уязвимых серверов  73

Рис. 2.8. Консоль Metasploitable 2 после входа в систему

Настройка Metasploitable 3 на виртуальной машине
Metasploitable 3, выпущенная Rapid7 в 2016 году, — версия с самыми последними обновлениями. По сравнению с предшествующей версией она имеет больше
уязвимостей. Однако версии загружаемой виртуальной машины Metasploitable 3
не существует. Кроме того, Metasploitable 3 нуждается в установке и настройке
нескольких дополнительных компонентов. При этом необходимо, чтобы пользователь самостоятельно создал виртуальную машину.
В этом примере виртуальная машина Metasploitable 3 будет установлена на
компьютере под управлением Windows 10. Но сначала потребуется загрузить
следующие компоненты:
‰‰виртуальную машину VirtualBox или VMware. Мы получили сообщения,

что при использовании VirtualBox с версией 5.2 могут возникнуть проблемы.
Хорошие результаты получаются, если работать с VirtualBox версии 5.1.14;
‰‰Packer;
‰‰Vagrant.

Установка Packer
Packer от Hashicorp позволяет легко создавать автоматизированные образы, такие
как Metasploitable 3. Чтобы загрузить версию Packer, соответствующую вашей операционной системе, посетите страницу загрузки: https://www.packer.io/. Разрядность

74  Глава 2



Создание испытательной лаборатории

вашей операционной системы можно посмотреть в диалоговом окне System (Система) (рис. 2.9).

Рис. 2.9. Проверка разрядности вашей операционной системы

По окончании загрузки извлеките файлы из архива. После извлечения вы увидите исполняемый файл packer.exe.
Создайте в любом удобном для вас месте папку под именем packer. Мы эту
папку создали как корневую на диске С (рис. 2.10).

Рис. 2.10. Папка Packer создана

Теперь для запуска этого приложения из командной строки необходимо добавить к созданной папке путь. Для этого выполните следующие действия.
1. Перейдите в Control PanelSystem (Панель управленияСистема) и щелкните на
строке Advanced system setting (Дополнительные параметры системы) (рис. 2.11).
2. В окне System Properties (Свойства системы) щелкните кнопкой мыши на вкладке Advanced (Дополнительно). Далее на открытой вкладке нажмите кнопку
Environment Variables (Переменные среды) (рис. 2.12).
Под пользовательскими переменными вы должны увидеть запись пути для admin.

Установка уязвимых серверов  75

Рис. 2.11. Панель управления

Рис. 2.12. Вкладка Advanced (Дополнительно)
окна System Properties (Свойства системы)

76  Глава 2



Создание испытательной лаборатории

3. В поле System variables (Системные переменные) укажите путь к переменной Path:
C:\Program Files (x86)\Common Files\Oracle|Java\javapath (рис. 2.13).

Рис. 2.13. Редактирование пути системной переменной

4. Для продолжения нажмите кнопку Edit (Редактировать). Нажмите в появившемся окне расположенную в правом верхнем углу кнопку New (Создать), выберите
из списка C:\packer и нажмите кнопку ОК.
Чтобы проверить, правильно ли был отредактирован путь, запустите командную
строку и введите packer. Если все было сделано правильно, в окне терминала вы
увидите все доступные команды и аргументы (рис. 2.14).

Рис. 2.14. Приложение packer запущено

Установка уязвимых серверов  77

Установка Vagrant
Vagrant, как и Hashicorp, — приложение с открытым исходным кодом, которое
используется для упрощения рабочих процессов и конфигураций в виртуальных
средах. Для загрузки подходящей вашей ОС Windows версии программы посетите
страницу https://www.vagrantup.com/downloads.html.
После установки соответствующего загрузчика (в данном случае Windows)
установите Vagrant.
Мы предполагаем, что VirtualBox у вас уже установлен. Загрузите исходные
файлы Metasploitable 3 (рис. 2.15) из репозитория GitHub, который расположен
по адресу https://github.com/rapid7/metasploitable3.

Рис. 2.15. Загрузка исходных файлов Metasploitable 3

Распакуйте загруженный архив в удобную для вас папку. Запустите PowerShell
в Windows 10 и, перебирая каталоги, выберите папку с распакованными исходными файлами Metasploitable 3. Далее введите команду /build_win2008. Начнется
сборка вашего сервера Metasploit 3. Учтите, что она может занять некоторое время.
Хоть для начинающих это сложно, но все же попробуйте.

Предварительная настройка Metasploitable 3
Если со сборкой сервера Metasploit 3 возникли сложности, загрузите предварительно собранную версию, которую можно найти на странице GitHub: https://github.com/
brimstone/metasploitable3/releases.
Эта версия Metasploitable 3 была создана компанией Brimstone и доступна для
скачивания. Размер.ova-файла (Metasploitable3-0.1.4.ova) всего 211 Мбайт.
После загрузки его можно открыть в VirtualBox. Для этого в виртуальной машине

78  Глава 2



Создание испытательной лаборатории

его нужно выбрать и импортировать. По возможности увеличьте предустановленный в 1 Гбайт объем ОЗУ.
Хотя процесс установки и занимает некоторое время, установщик все выполнит
автоматически. И в конце вы получите полную версию Metasploitable 3 с Windows
Server 2008 (рис. 2.16).

Рис. 2.16. Metasploitable 3 установлена

Установка и настройка BadStore на виртуальной машине
Badstore ISO, по сравнению новыми технологиями, устарел. Однако, в отличие от
Metasploitable 3, он невероятно прост в установке и использовании.
Поскольку этот ISO-образ содержит хорошо известные эксплойты, а его размер
не превышает 15 Мбайт, начинающие пользователи или читатели с ограниченными
ресурсами могут задействовать приложение BadStore для начала проведения тестов
на проникновение.
На момент написания этой книги в официальном магазине образ ISO BadStore
больше не доступен. Но есть несколько надежных ссылок, по которым его еще

Установка уязвимых серверов  79

можно скачать. Эти ссылки доступны в статье GitHub по адресу https://github.com/
jivoi/junk/blob/master/coursera_software-security/w3/project-2/info.
Кроме того, ISO-образ BadStore можно скачать здесь: https://d396qusza40orc.cloud­
front.net/softwaresec/virtual_machine/BadStore_212.iso. Загрузите также руководство для
BadStore ISO, так как там содержится важная информация о подключении IP
и уязвимостях в ОС.
После того как файл загрузится, запустите VirtualBox и выберите команду меню
FileNew (ФайлСоздать). Введите данные, как показано на рис. 2.17. Для продолжения нажмите кнопку Next (Далее).

Рис. 2.17. Создание виртуальной машины для BadStore

Для работы BadStore требуется очень мало оперативной памяти. Вы можете
использовать объем, предлагаемый по умолчанию. Мы же выделили 640 Мбайт.
Чтобы продолжить, нажмите кнопку Next (Далее) (рис. 2.18).
Для завершения установки выполните следующие действия.
‰‰Установите переключатель в положение Create a virtual hard disk now (Создать

виртуальный жесткий диск), а затем нажмите кнопку Create (Создать).

‰‰Выберите VirtualBox Disk Image (VDI) в качестве типа файла жесткого диска и на-

жмите кнопку Next (Далее).
‰‰Установите переключатель в положение Dynamic virtual hard disk (Динамический
виртуальный жесткий диск) и нажмите кнопку Next (Далее).
‰‰Поскольку BadStore не требует большого объема жесткого диска, оставьте предлагаемый по умолчанию размер 4 Гбайт.

80  Глава 2



Создание испытательной лаборатории

Рис. 2.18. Выделение оперативной памяти для BadStore

Перед запуском виртуальной машины BadStore следует изменить некоторые
настройки. В менеджере виртуальных машин щелкните на названии вновь установленной машины и нажмите кнопку Setting (Параметры). Откройте вкладку
Network (Сеть), выберите тип подключения Bridged Adapter (Сетевой мост) и нажмите
кнопку ОК.

Рис. 2.19. Выбор типа сетевого адаптера для виртуальной машины BadStore

Установка уязвимых серверов  81

В менеджере виртуальных машин щелкните на названии машины BadStore
и нажмите кнопку Start (Начать) (рис. 2.20).

Рис. 2.20. Запуск виртуальной машины BadStore

После запуска виртуальной машины и появления диалогового окна с просьбой
выбрать загрузочный диск нажмите кнопку с изображением папки
и выберите
ранее загруженный файл BadStore.iso. Для запуска виртуальной машины нажмите
кнопку Start (Начать).
После того как BadStore будет загружена, для запуска консоли нажмите клавишу Enter (рис. 2.21).
После нажатия клавиши Enter для просмотра конфигураций интерфейса введите
команду ifconfig и снова нажмите Enter.
Конфигурация интерфейса показана на рис. 2.22. Здесь активен интерфейс eth0
с IP-адресом 192.168.3.136. На вашей машине значение IP-адреса должно быть
другим. Запомните IP-адрес, который увидите в консоли вашей машины. К виртуальной машине BadStore будете подключаться через браузер именно по этому
IP-адресу.
Откройте любой браузер и введите в адресной строке IP-адрес виртуальной
машины BadStore: cgi-bin/badstore.cgi.
В консоли на нашей машине IP-адрес интерфейса eth0 был 192.168.3.180, поэтому мы для доступа к виртуальной машине BadStore ввели в адресную строку
браузера следующий URL-адрес: http://192.168.3.136/cgi-bin/badstore.cgi.

82  Глава 2



Создание испытательной лаборатории

Рис. 2.21. Запуск консоли BadStore

Рис. 2.22. Конфигурация интерфейса eth0

Установка уязвимых серверов  83

После того как вы введете URL с IP-адресом вашей виртуальной машины
BadStore, нажмите клавишу Enter. В окне браузера вы увидите интерфейс BadStore
(рис. 2.23).

Рис. 2.23. Интерфейс виртуальной машины BadStore

Как уже упоминалось, BadStore устарела. Это видно даже по дизайну интерфейса. Однако для начинающих BadStore очень полезна, так как содержит много
распространенных уязвимостей, которые можно легко обнаружить и устранить
с помощью инструментов Kali Linux. Подробнее об этом вы прочитаете в следующих главах.
Есть еще одна очень простая в настройке и использовании операционная система, которую можно установить на виртуальную машину, — это
очень уязвимая операционная система, сохраненная в ISO-образ Linux
(DVL). Его можно загрузить по адресу https://sourceforge.net/projects/
virtualhacking/files/os/dvl/DVL_1.5_Infectious_Disease.iso/download.

84  Глава 2



Создание испытательной лаборатории

Установка дополнительных
инструментов в Kali Linux
До или во время теста на проникновение может потребоваться включить инструменты, которые при обычной установке в Kali Linux недоступны. Есть большое
количество специалистов по тестированию на проникновение, которые постоянно создают новые инструменты. Эти инструменты становятся доступными, и вы
их тоже можете использовать. Только потребуется установка этих приложений
в операционной системе Kali Linux. Поэтому перед началом тестирования на проникновение следует убедиться, что ваши инструменты обновлены.
При включении дополнительных инструментов тестирования на проникновение
сначала рекомендуется заглянуть в репозиторий Kali Linux. Если нужный пакет
в репозитории доступен, его можно установить с помощью команд, о которых мы
расскажем далее. Если же инструмент в репозитории отсутствует, его можно загрузить или с сайта создателя, или с сайта совместного использования программного
обеспечения и агрегирования: https://github.com.
Однако есть ряд инструментов, отсутствующих в репозитории, но которые
легко можно добавить в инструментарий Kali Linux. В большинстве случаев такие пакеты добавлять не рекомендуется, так как они могут негативно повлиять
на работу операционной системы. Кроме того, многие такие пакеты зависят от
другого программного обеспечения и могут вызывать проблемы со стабильностью
системы.
В операционной системе Kali Linux предусмотрено несколько инструментов
для управления пакетами: dpkg, apt и aptitude. Первые два в Kali Linux установлены
по умолчанию.
О командах apt и dpkg вы можете узнать больше, перейдя по следующим
ссылкам: https://help.ubuntu.com/community/AptGet/Howto/ и http://
www.debian.org/doc/manuals/debian-reference/ch02.en.html.

В этом разделе мы кратко рассмотрим команду apt , установив пакет с программным обеспечением.
Для поиска в репозитории названия нужного пакета используйте следующую
команду:
apt-cache search

Эта команда отобразит весь пакет программного обеспечения с именем имя_
пакета.

Если вы хотите получить более подробную информацию о найденном пакете,
введите следующую команду:
apt-cache show

Сетевые сервисы в Kali Linux  85

Чтобы установить новый пакет или обновить уже существующий, введите
команду apt-get:
apt-get install

Если пакет в репозитории недоступен, его можно найти и загрузить с сайта разработчика этого программного обеспечения или через www.github.com. Программное
обеспечение необходимо загружать только из надежных источников. Если требуется формат пакета Debian (пакет будет иметь расширение файла .deb), следует
использовать команду dpkg. Многие пакеты сжаты с помощью таких программ, как
7-Zip. О том, что пакет сжат, говорит расширение .zip или .tar.

Сетевые сервисы в Kali Linux
В Kali Linux доступно несколько сетевых сервисов. В этом разделе мы расскажем
о трех: HTTP, MySQL и SSH. Остальные находятся в Kali LinuxSystem Services.

HTTP
При тестировании на проникновение нам, например, для обслуживания вредоносных сценариев веб-приложений потребуется веб-сервер. В Kali Linux по умолчанию уже установлен веб-сервер Apache. Нам осталось его только запустить.
Далее перечислены шаги, необходимые для запуска в Kali Linux HTTP-сервера.
1. Для запуска сервиса Apache HTTP откройте терминал с командной строкой
и введите следующую команду:
service apache2 start

2. Запустите браузер, введите в адресную строку браузера IP-адрес 127.0.0.1
и нажмите клавишу Enter. Если сервис Apache HTTP запущен, в верхней части
открытой страницы вы увидите сообщение It works! (рис. 2.24).
Для остановки Apache HTTP выполните следующие действия.
1. Откройте терминал с командной строкой и введите следующую команду:
service apache2 stop

Помните, что после загрузки операционной системы нужно повторить
ввод команды service apache2 start. Но процесс запуска сервисов мы
можем автоматизировать. Чтобы после загрузки Kali Linux сервис Apache
HTTP запустился автоматически, используйте команду update-rc.d apache2
defaults.

2. Добавьте команду для автоматического запуска сервиса apache2 после каждой
загрузки операционной системы.

86  Глава 2



Создание испытательной лаборатории

Рис. 2.24. Сервис Apache HTTP запущен

MySQL
Второй сервис, о котором мы поговорим, — MySQL. Это реляционная система баз
данных. MySQL чаще всего используется совместно с языком программирования
PHP и веб-сервером Apache для создания динамических веб-приложений. Этот
сервис можно применять и для сбора результатов тестирования, например для
хранения информации об уязвимости и результата сопоставления сети.
Чтобы в Kali Linux запустить сервис MySQL, выполните следующие действия.
‰‰1.

Введите в окне терминала такую команду:

service mysql start

2. Чтобы проверить, запущен ли ваш MySQL, используйте клиент MySQL для
подключения к серверу. При запуске клиента мы считаем, что для входа на
сервер MySQL были указаны имя пользователя и пароль root:
mysql -u root

В ответ система выдаст следующее сообщение:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.

Сетевые сервисы в Kali Linux  87
Your MySQL connection id is 39
Server version: 5.5.44-1 (Debian)
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or
itsaffiliates. Other names may be trademarks of their respective owners.
Type ''help;'' or ''h'' for help. Type ''c'' to clear the current input
statement.
mysql>

3. После этого приглашения MySQL можно предоставить любые команды SQL.
Чтобы выйти из MySQL, введите команду quit.
По умолчанию исходя из соображений безопасности в Kali Linux доступ
к сервису MySQL можно получить только с локального компьютера. Чтобы эту конфигурацию изменить, отредактируйте в файле конфигурации
MySQL раздел bind-address, который находится в каталоге /etc/mysql/
my.cnf. Мы не рекомендуем изменять данную конфигурацию, если вы
не хотите, чтобы ваш MySQL был доступен для других.

Для остановки сервиса MySQL выполните следующие действия.
1. Введите в окно терминала команду:
service mysql stop

2. Для автоматического запуска MySQL после загрузки Kali Linux введите такую
команду:
update-rc.d mysql defaults

Эта команда заставит сервис MySQL запуститься после загрузки.

SSH
Следующий сервис, который мы рассмотрим, — Secure Shell (SSH). SSH может использоваться для безопасного входа на удаленную машину. Кроме того, существует
несколько других применений SSH, например таких, как безопасная передача
файла между машинами, выполнение команд на удаленной машине и пересылка
сеанса X11.
Для управления в Kali Linux сервисом SSH выполните следующие действия.
1. Чтобы запустить SSHD, введите в терминале такую команду:
service ssh start

2. Для тестирования SSH можно войти на сервер Kali Linux с другого сервера с помощью SSH-клиента. Если вы используете операционную систему Windows,

88  Глава 2



Создание испытательной лаборатории

задействуйте, например, SSH-клиент Putty (http://www.chiark.greenend.org.uk/
~sgtatham/putty/).
3. Для остановки SSHD введите такую команду:
service ssh stop

4. Чтобы после загрузки Kali Linux запустить SSH автоматически, введите следующую команду:
update-rc.d ssh defaults

Эта команда заставит SSH запуститься после загрузки.

Дополнительные лаборатории
и ресурсы
Несмотря на то что основное внимание мы уделили Windows 10, Metasploitable 2
и Metasploitable 3, существует еще несколько проектов для изучения уязвимостей
и тренировки ваших навыков. Опытные эксперты по безопасности и тестеры на
проникновение помнят маленький и очень уязвимый веб-сервер под названием
BadStore. Его размер не превышает 15 Мбайт (да, мегабайт), и он содержит несколько уязвимостей от межсайтовых сценариев до внедрения SQL. Хотя для
прямой загрузки с официального сайта он больше не доступен, в Интернете его
все еще можно найти.
На основную направленность этого сайта указывает имя его домена: https://
www.vulnhub.com/ — центр для проектов уязвимостей.
Несколько уязвимых виртуальных машин вы найдете на странице загрузки.
Это такие машины, как Linux, Kioptrix и т. д., которые можно использовать для
перехвата флагов (CTF) и сценариев.
Существует несколько сайтов, предназначенных для тех, кто заинтересован
в оттачивании своих практических навыков или обучении в замкнутой среде.
‰‰Wargames. Бесплатные варгеймы, расположенные по адресу http://overthewire.org/

wargames/, имеют как базовые уровни, так и уровни повышенной сложности

(рис. 2.25).

‰‰Hack This Site. Адрес этого сайта: https://Hackthissite.org. Здесь также собрано много

уязвимостей (нижняя левая сторона). Сайт предлагает миссии как для начинающих тестеров, так и для программистов. Эти уязвимости бесплатны, но для
входа на сайт требуется регистрация (рис. 2.26).

‰‰Hellbound Hackers. Как и Hack This Site, сайт Hellbound Hackers (https://www.hell­

boundhackers.org/) предлагает многочисленные уязвимости, в том числе и для

задач тестирования на проникновение. Для доступа к ресурсам, собранным на
этом сайте, также требуется регистрация (рис. 2.27).

Дополнительные лаборатории и ресурсы   89

Рис. 2.25. Wargames

Рис. 2.26. Сайт Hackthissite.org

90  Глава 2



Создание испытательной лаборатории

Рис. 2.27. Сайт Hellbound Hackers

Резюме
В этой главе мы рассмотрели создание лабораторной среды для тестирования на
проникновение. В главе говорилось, что лабораторная установка будет зависеть
исключительно от доступных ресурсов, таких как ЦП, ОЗУ и место на жестком
диске. Для получения опыта работы в контролируемой среде, позволяющей легально выполнять тестирование, вы можете поэкспериментировать с такими операционными системами, как Windows, Linux, Mac, Android и даже ARM (доступна
на https://www.vulnhub.com/).
При работе с сервером Metasploitable мы настоятельно рекомендуем не только
новичкам, но и профессионалам, время у которых ограничено, использовать вместо
сложного в установке и настройке Metasploitable 3 сервер Metasploitable 2.
Пользователи с ограниченными ресурсами могут работать стакими уязвимыми
серверами, как BadStore и DVL. Эти серверы имеют маленькие размеры и сохранены в формате ISO, поэтому очень легко устанавливаются.

Дополнительные материалы  91

В лаборатории мы рекомендуем установить хотя бы одну операционную систему Windows и одну систему Linux. В следующих главах мы рассмотрим различные
методы, позволяющие выполнять тесты на проникновение.

Вопросы
1. Какие платформы виртуализации мы можем использовать для создания виртуальных машин?
2. Для чего предназначен файл с расширением .vmdk?
3. Какие логин и пароль используются по умолчанию для входа в Metasploitable 2?
4. Какое дополнительное программное обеспечение потребуется для сборки сервера Metasploitable 3 с нуля?
5. Какая команда используется в Kali Linux для установки нового или обновления
существующего пакета?
6. Какая команда применяется для запуска сервиса MySQL?
7. Какая команда используется для запуска сервиса SSH?

Дополнительные материалы
‰‰Установка Metasploitable 2: https://metasploit.help.rapid7.com/docs/metasploitable-2.
‰‰Сборка Metasploitable 3: https://github.com/rapid7/metasploitable3.

3

Методология тестирования
на проникновение

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

Технические условия
В этой главе для работы вам понадобятся установленная ранее операционная система Kali Linux и приложение Nmap.

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

веряемую систему и имеет полный доступ ко всем ее компонентам. Испытатели
работают с клиентом и имеют доступ к закрытой информации, серверам, запу-

Методология тестирования на проникновение  93

щенному программному обеспечению, сетевым схемам, а иногда даже к учетным
данным. Этот тип испытаний обычно проводится для проверки новых приложений перед их вводом в эксплуатацию, а также для регулярной проверки
системы в рамках ее жизненного цикла — Systems Development Life Cycle (SDLC).
Такие мероприятия позволяют выявить и устранить уязвимости раньше, чем
они могут попасть в систему и навредить ей.
‰‰Методы «черного ящика». Эта группа тестов применима, когда испытателю
ничего не известно об испытуемой системе. Этот тип тестирования в наибольшей степени похож на настоящие атаки злоумышленника. Испытатель должен
получить всю информацию, творчески применяя имеющиеся у него в распоряжении методы и инструменты, но не выходя за рамки заключенного с клиентом соглашения. Но и этот метод имеет свои недостатки: хотя он и имитирует
реальную атаку на систему или приложения, испытатель, используя только
его, может пропустить некоторые уязвимости. Это очень дорогой тест, так как
занимает большое количество времени. Выполняя его, испытатель изучит все
возможные направления атаки и только после этого сообщит о результатах.
Кроме того, чтобы не повредить проверяемую систему и не вызвать сбой, испытатель должен быть очень осторожным.
‰‰Методы «серого ящика». Тест учитывает все преимущества и недостатки
первых двух тестов. В этом случае испытателю доступна только ограниченная
информация, позволяющая провести внешнюю атаку на систему. Испытания
обычно выполняются в ограниченном объеме, когда испытатель немного знает
о системе.
Для обеспечения наилучших результатов тестирования, независимо от применяемых тестов на проникновение, испытатель должен соблюдать методологию
проведения испытаний. Далее мы более подробно обсудим некоторые наиболее
популярные стандартные методы проведения испытаний.
‰‰Руководство по тестированию OWASP.
‰‰Руководство по тестированию на проникновение PCI.
‰‰Стандарт выполнения тестирования на проникновение.
‰‰NIST 800-115.
‰‰Руководство по методологии тестирования безопасности с открытым исходным

кодом (OSSTMM).

Руководство по тестированию OWASP
Open Web Application Security Project (OWASP) — этот проект объединил разработчиков программных средств с открытым исходным кодом. Люди, входящие в данное сообщество, создают программы для защиты веб-приложений и веб-сервисов.
Все приложения создаются с учетом опыта борьбы с программами, наносящими
вред веб-сервисам и веб-приложениям. OWASP — это отправная точка для системных архитекторов, разработчиков, поставщиков, потребителей и специалистов по

94  Глава 3



Методология тестирования на проникновение

безопасности, то есть всех специалистов, которые принимают участие в проектировании, разработке, развертывании и проверке на безопасность всех веб-сервисов
и веб-приложений. Другими словами, OWASP стремится помочь создавать более
безопасные веб-приложения и веб-сервисы. Главным преимуществом руководства
по тестированию OWASP является то, что по представленным результатам тестов
можно получить всестороннее описание всех угроз. Руководство по тестированию
OWASP определяет все опасности, которые могут повлиять на работу как системы,
так и приложений, и оценивает вероятность их появления. С помощью описанных
в OWASP угроз можно определить общую оценку выявленных проведенным тестированием рисков и выработать соответствующие рекомендации по устранению
недостатков.
Руководство по тестированию OWASP в первую очередь сосредотачивает внимание на следующих вопросах.
‰‰Методы и инструменты тестирования веб-приложений.
‰‰Сбор информации.
‰‰Проверка подлинности.
‰‰Тестирование бизнес-логики.
‰‰Данные испытаний.
‰‰Тестирование атак типа «отказ в обслуживании».
‰‰Проверка управления сессиями.
‰‰Тестирование веб-сервисов.
‰‰Тест AJAX.
‰‰Определение степени рисков.
‰‰Вероятность угроз.

PCI-руководство по тестированию на проникновение
Здесь собраны нормативы для компаний, соответствующих требованиям PCI
(Payment Card Industry — индустрия платежных карт). Причем в руководстве
вы найдете нормативы не только по стандарту PCI v3.2. Оно создано Советом
безопасности по стандартам PCI, в котором определены методы тестирования на
проникновение в рамках программ управления уязвимостями.
Стандарт PCI Data Security Standard (PCI DSS) версии 3.2 был выпущен в апреле 2016 года Советом по стандартам безопасности индустрии платежных карт
(PCI SSC). После обновления стандарта требования были уточнены, появились
дополнительные указания и семь новых требований.
Для устранения проблем, связанных с нарушениями секретности личных данных владельцев карт, а также для защиты от существующих эксплойтов в стандарт
PCI DSS V. 3.2 были включены различные изменения, большинство из которых относятся к поставщикам услуг. В эти изменения были добавлены новые требования
к тестированию на проникновение, согласно которым тестирование с сегментацией
для поставщиков услуг выполнялось по крайней мере каждые шесть месяцев или

Методология тестирования на проникновение  95

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

Стандартное проведение тестов на проникновение
Стандарт выполнения тестирования на проникновение состоит из семи основных
разделов. Они охватывают все требования, условия и методы проведения испытаний на проникновение: от разведки и до попыток проведения пентестов; этапы
сбора информации и моделирования угроз, когда, чтобы добиться лучших результатов проверки, испытатели работают инкогнито; этапы исследования уязвимостей, эксплуатации и пост-эксплуатации, когда практические знания испытателей
в области безопасности соединяются с данными, полученными в ходе проведения
тестов на проникновение; и как заключительный этап — отчетность, в которой вся
информация предоставляется в виде, понятном клиенту.
Сегодня действует первая версия, в которой все стандартные элементы испытаны в реальных условиях и утверждены. Вторая версия находится в стадии разработки. В ней все требования будут детализированы, уточнены и усовершенствованы.
Поскольку план каждого теста на проникновение разрабатывается индивидуально,
в нем могут быть применены разные тесты: от тестирования веб-приложений до
проведения испытаний, предусмотренных для тестирования методом «черного
ящика». С помощью этого плана сразу можно определить ожидаемый уровень
сложности конкретного исследования и применить его в необходимых, по мнению
организации, объемах и областях. Предварительные результаты исследования
можно увидеть в разделе, отвечающем за сбор разведданных.
Ниже в качестве основы для выполнения тестов на проникновение приведены
основные разделы рассматриваемого нами стандарта.
‰‰Предварительное соглашение на взаимодействие.
‰‰Сбор разведданных.
‰‰Моделирование угроз.
‰‰Анализ уязвимостей.
‰‰Эксплуатация.
‰‰Пост-эксплуатация.
‰‰Составление отчета.

NIST 800-115
Специальное издание Национального института стандартов и технологий (National
Institute of Standards and Technology Special Publication, NIST SP 800-115) является
техническим руководством по тестированию и оценке информационной безопасности. Публикация подготовлена Лабораторией информационных технологий
(Information Technology Laboratory, ITL) в NIST.

96  Глава 3



Методология тестирования на проникновение

В руководстве оценка безопасности трактуется как процесс определения того,
насколько эффективно оцениваемая организация отвечает конкретным требованиям безопасности. При просмотре руководства вы увидите, что в нем содержится
большое количество информации для тестирования. Хотя документ редко обновляется, он не устарел и может послужить в качестве справочника для построения
методологии тестирования.
В этом справочнике предлагаются практические рекомендации по разработке,
внедрению и ведению технической информации, тестам безопасности и процессам
и процедурам экспертизы, охватывая ключевой элемент или техническое тестирование на безопасность и экспертизу. Данные рекомендации можно использовать
для нескольких практических задач. Например, поиск уязвимостей в системе или
сети и проверка соответствия политике или другим требованиям.
Стандарт NIST 800-115 предоставляет большой план для испытаний на проникновение. Он позволяет убедиться, что программа тестирования на проникновение
соответствует рекомендациям.

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

Фреймворк: общее тестирование
на проникновение
Несмотря на то что стандарты различаются по количеству условий, тестирование
на проникновение можно разбить на следующие этапы.
1.
2.
3.
4.
5.

Разведка.
Сканирование и перечисление.
Получение доступа.
Повышение привилегий.
Поддержание доступа.

Фреймворк: общее тестирование на проникновение  97

6. Заметание следов.
7. Составление отчета.
Рассмотрим каждый этап более подробно.

Разведка
Это первый и очень важный этап в тесте на проникновение. На него может уйти
немало времени. Многие испытатели делят данный этап на две части: активную
и пассивную разведку. Я же предпочитаю эти два этапа объединить, так как полученные результаты скажут сами за себя.
Разведка (рекогносцировка) — это систематический подход, когда вы стараетесь
обнаружить расположение и собрать максимально возможное количество информации о целевой системе или машине. Это еще называется сбором следов.
Для проведения данного процесса могут быть использованы следующие методы
(в действительности список методов может быть значительно шире).
‰‰Социальная инженерия (это увлекательный метод).
‰‰Исследование в Интернете (с помощью поисковых машин Google, Bing,

LinkedIn и т. д.).
‰‰Путешествие по мусорным бакам (можно испачкать руки).
‰‰Холодные звонки.
Вы можете выбрать любой из перечисленных методов для получения информации о целевой системе или машине. Но что же мы все-таки должны на данном
этапе узнать?
Нам, конечно, может быть полезным каждый бит информации. Но у нас должна быть приоритетная цель. При этом учтите, что собранные данные, которые на
текущем этапе могут показаться ненужными, позже могут пригодиться.
Сначала для нас будет очень важна следующая информация.
‰‰Имена контактов в организации.
‰‰Где располагается организация (если такие данные есть).
‰‰Адреса электронной почты (эти данные можно использовать позже для фишин-

га, то есть сбора конфиденциальных данных).
‰‰Номера телефонов важных персон, работающих в этой компании (пригодятся

для фишинга).
‰‰Операционные системы, используемые в компании, например Windows или
Linux.
‰‰Объявления о работе.
‰‰Резюме сотрудников (прошлое и настоящее).
На первый взгляд все эти данные кажутся полезными (разве что смущают
объявления о работе). Но представим, что вы встречаетесь с системным администратором. Зная основные требования, вы можете получить большое количество

98  Глава 3



Методология тестирования на проникновение

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

Сканирование и перечисление
Без сомнения, почти каждый специалист по безопасности хочет сразу заняться
эксплуатацией. Но без понимания основ, эксплойтов и, самое главное, среды,
в которой они находятся, этот шаг не принесет никакой пользы и даже может
спровоцировать ошибки или, что еще хуже, разрушение среды.
Сканирование и перечисление позволяют испытателю на проникновение понять
среду целевой системы. Результат, полученный в ходе этих проверок, предоставит красной команде отправную точку для использования уязвимостей в разных
системах.
Термин red team (красная команда) взят из военной среды и определяет
«дружественную» атакующую команду. В противовес ей существует команда защитников — blue team (голубая команда). При работе красной
команды снимаются все ограничения и производится реальная атака на
инфраструктуру: от атак на внешний периметр до попыток физического
доступа, «жестких» социотехнических тестов (тест с использованием
методов социальной инженерии).

Сканирование — это поиск всех доступных сетевых служб (TCP и UDP), работающих на целевых узлах. Оно может помочь красной команде обнаружить,
может ли быть на целевой машине открыт SSH/Telnet. В этом случае, используя
систему грубой силы, можно попытаться войти через него. Тогда мы можем обнаружить файловые ресурсы для загрузки данных с уязвимых сайтов или принтеров,
на которых могут храниться имена пользователей и пароли. Перечисление — это
обнаружение служб в сети, что позволит нам лучше понять информацию, полученную от сетевых служб.

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

Фреймворк: общее тестирование на проникновение  99

попытка проверить, можно ли обнаруженные уязвимости использовать в целевой
среде. Рассмотрим все типы сканирования.

ARP-сканирование
С помощью широковещательного запроса мы можем получить преимущество
в добыче информации об IP-адресе. Каждый широковещательный кадр ARP запрашивает, у кого какой IP-адрес. При этом запрашиваемый IP-адрес при каждом
запросе увеличивается на единицу. После того как хост получит этот IP-адрес, он
даст ответ, сопоставив запрошенный IP-адресом соответствующий ему MAC-адрес.
ARP-сканирование является быстрым и эффективным методом и обычно не вызывает никаких аварийных сигналов. Только есть проблема: ARP — протокол второго
уровня и поэтому не может перейти границы сети. То есть, если красная команда
находится в сети, например, по адресу 192.100.0.0/24, а ваша цель (цели) — в сети
10.16.X.0/24, вы не сможете отправлять ARP-запросы для 10.16.X.0/24.

Сетевой картограф (Nmap)
Nmap является главной ищейкой в сканировании портов и перечислении. Мы не сможем в данной книге описать все параметры и модули Nmap. Вместо этого мы рассмотрим сканы, которые чаще всего используют при тестировании.
Но сначала расскажем, в каком состоянии может быть порт.
‰‰Открыт. Приложение на целевом компьютере прослушивает соединения/

пакеты на этом порту.
‰‰Закрыт. Порт в данное время не прослушивает ни одно из приложений, но

может быть открыт в любое время.
‰‰Фильтр. Брандмауэр, фильтр или другое сетевое препятствие блокирует порт
таким образом, что Nmap не может определить, открыт он или закрыт.
В Nmap нам доступны следующие параметры:
‰‰O — обнаружение ОС;
‰‰p — сканирование порта;
‰‰p- — сканирование всех портов (от 1 до 65 535);
‰‰p 80,443 — сканирование портов 80 и 443;
‰‰p 22-1024 — сканирование портов от 22 до 1024;
‰‰top-ports X — здесь в качестве X указывается число наиболее используемых

портов, которые мы будем сканировать. Чтобы ускорить сканирование, мы
обычно указываем значение 100;

‰‰sV — обнаружение служб;
‰‰Tx — определение скорости сканирования;
‰‰T1 — очень медленное сканирование портов;
‰‰T5 — очень быстрое сканирование портов (с большим шумом);

100  Глава 3



Методология тестирования на проникновение

‰‰sS — скрытное сканирование;
‰‰sU — сканирование UDP;
‰‰А — определения версии ОС, сканирование с использованием сценариев и трас-

сировка.

Сканирование портов/TCP-сканирование в Nmap. Эта служба запускается
путем активации соединения (SYN) на каждом порте целевого хоста. Если порт
открыт, хост ответит (SYN, ACK). Соединение закрывается (RST), если команда отправлена инициатором (рис. 3.1).

Рис. 3.1. Операция сканирования TCP SYN

Полуоткрытое/скрытое сканирование в Nmap. Этот параметр запускается путем
отправки соединения (SYN) на каждый порт целевого хоста. Если порт открыт, хост
на запрос ответит (SYN, ACK). Если порт закрыт, хост ответит сбросом соединения
(RST). Если ответ не получен, можно предположить, что порт фильтруется. Разница
между TCP- и скрытым сканированием заключается в том, что инициатор соединения не возвращает пакет подтверждения (ACK). Эффективность такого сканирования
в том, что регистрируется только полностью установленное соединение.
Обнаружение OS в Nmap. Данный параметр использует различные методы для
определения типа и версии операционной системы. Это очень полезно для обнаружения уязвимостей. Поиск версии ОС покажет в операционной системе известные
уязвимости и эксплойты. Для этого введите следующую команду:
nmap 172.16.54.144 -O

Обнаружение служб в Nmap. Как и при обнаружении ОС, этот параметр пытается определить службу и версию, как показано на рис. 3.2:
nmap 172.16.54.144 –sV

Фреймворк: общее тестирование на проникновение  101

Рис. 3.2. Обнаружение служб

Nmap ping sweeps (Пинг-разведка Nmag). Этот параметр обрабатывает каждый IP-адрес в заданном диапазоне. Если узел подключен и настроен для ответа
на запросы ping, он выдаст ICMP-ответ (рис. 3.3).

Рис. 3.3. Сканирование узла

102  Глава 3



Методология тестирования на проникновение

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

Совместное использование SBM
Server Message Block (SMB) обозначает блок сообщений сервера. Этот протокол
обмена файлами был изобретен IBM в середине 1980-х годов и существует до сих
пор. Назначение данного протокола — дать возможность компьютерам читать
и записывать файлы на удаленный хост по локальной сети (LAN). Каталоги на
удаленных узлах SMB называются акциями.
Этот метод передачи данных имеет несколько преимуществ, которые мы и обсудим.
Передача зоны DNS. Протокол DNS — мой любимый протокол, потому что
это просто кладезь информации. Данный протокол определяет связь имени хоста
с IP-адресами всех хостов в сети. Если злоумышленнику известна схема сети, с помощью этого протокола он может быстро обнаружить все узлы в сети. С помощью
DNS также можно создавать службы, работающие в сети, например почтовые
серверы.
DNSRecon. Содержит инструменты разведки и перечисления. В этом примере
мы запросим перенос зоны из домена domain.foo. DNS-сервер, работающий в домене
domain.foo, вернет все записи, относящиеся к этому домену и ко всем связанным
с ним поддоменам. Благодаря этой операции мы получим имена серверов, соответствующие им имена хостов и IP-адреса для домена. Будут возвращены все имеющиеся записи DNS: TXT-записи (4), PTR-записи (1), MX-записи для почтового
сервера (10), записи протоколов IPv6 (2) и IPv4 (12). Эти записи действительно
предоставляют пикантную информацию о сети. Одна запись показывает IP-адрес
офиса DC, во второй записи вы увидите IP-адрес брандмауэра, в третьей — VPN
и IP-адрес, и еще одна запись показывает IP-адрес почтового сервера и логин портала (рис. 3.4).
dnsrecon -d zonetranfer.zone -a

Здесь –d — домен; -a — выполнить перенос зоны.

SNMP-устройства
Простой протокол сетевого управления (Simple Network Management Protocol),
сокращенно SNMP, используется для регистрации сетевых устройств и приложений и управления ими. SNMP можно применять для удаленной настройки
устройств и приложений, но, если оставить его незащищенным, он также мо-

Фреймворк: общее тестирование на проникновение  103

жет быть использован для извлечения информации об указанных приложениях
и устройствах. Эта информация пригодится для лучшего понимания сети:
snmpwalk 192.16.1.1 -c PUBLIC

-с — это строка аутентификации устройства.

Рис. 3.4. Передача зоны DNS с помощью команды dnsrecon -d zonetranfer.zone -a

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

104  Глава 3



Методология тестирования на проникновение

tcpdump. Это утилита, которая запускается из командной строки и предназначена для прослушивания определенных типов трафика и передаваемых данных.
Рассмотрим ее параметры:
‰‰-i eth0 — выбор интерфейса для прослушивания;
‰‰port 80 — выбор порта для прослушивания;
‰‰host 172.16.1.1 — только сбор трафика, идущего от хоста/к нему;
‰‰src — данные приходят от хоста;
‰‰dst — данные идут к хосту;
‰‰-w output.pcap — захват трафика и сохранение его в файле на диске.

Wireshark. Утилита с графическим интерфейсом, используемая для прослушивания трафика на проводе (рис. 3.5):
‰‰ip.addr/ip.dst/ip.src == 172.16.1.1;
‰‰tcp.port/tcp.dstport/tcp.srcport == 80;
‰‰udp.port/udp.dstport/udp.srcport == 53.

Рис. 3.5. Графическая утилита Wireshark

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

Фреймворк: общее тестирование на проникновение  105

Получение доступа может также включать использование эксплойтов/учетных
данных в удаленной службе для входа в систему и последующего выполнения полезных для исследователя нагрузок.
В этом вам могут помочь инструменты Metasploit и PowerShell Empire, поскольку оба создают полезные нагрузки, также известные как этапы. После запуска
полезной нагрузки на целевом объекте процесс выполняется в памяти. Применение
такого стиля позволяет оставлять очень мало улик. Другой вариант — передача
бинарного файла в удаленную систему и его выполнение из командной строки,
что также может быть эффективным. Данный подход быстрее, и его успешное выполнение не зависит от загрузки через Интернет.

Эксплойт
Иногда тестировщик находит сервисы, которые можно будет использовать.
Эксплойт может послужить средством первоначального доступа. Вам лишь
необходимо убедиться, что это средство надежно на 100 %. Но следует учесть,
что неоднократный запуск эксплойта может привести к сбою в работе системы.
Эту опцию нужно использовать очень осторожно и только в том случае, если вы
ее протестировали и знаете, что с ней делать.
Эксплойтом может быть SSH! По крайней мере я никогда не видел, чтобы
за пределами telnet использовалась другая служба.

Эксплойт для Linux
Эксплойты Linux обычно нацелены не на саму операционную систему, а на работающие в ней службы. Ниже приведен список распространенных эксплойтов для
Linux:
‰‰CVE-2018-1111;
‰‰Red Hat Linux DHCP Client Found Vulnerable to Command Injection Attacks;
‰‰CVE-2017-7494.

Эксплойт для Windows
Эксплойты Windows обычно нацелены на прослушивание служб операционной
системы. Вот список, предназначенный для службы SMB, которая работает на
порте 445 Windows:
‰‰Eternalblue — MS17-010;
‰‰MS08-67;
‰‰MS03-026.

Ниже приведены некоторые инструменты, часто используемые испытателями
на проникновение.

106  Глава 3



Методология тестирования на проникновение

PsExec — инструмент из набора Sysinternals. Он используется для удаленного
управления и популярен среди испытателей на проникновение, системных администраторов и хакеров.
Бинарный файл PsExec обычно копируется в общую папку $admin на компьютере, а затем использует удаленное управление для создания службы на удаленном компьютере. Имейте в виду, что PsExec на удаленной машине требует прав
администратора.
1. Скачайте Sysinternals.
2. Запустите командную строку PowerShell.
3. С помощью команды cd создайте каталог Sysinternals.
4. Введите .\PSexec \\ -u -p
.
На рис. 3.6 показан полученный ответ.

Рис. 3.6. Ответ на введенную команду

Impacket — коллекция уроков Python для работы с сетевыми протоколами.
Первоначальная настройка выполняется следующим образом:
1. Откройте терминал.
2. Введите cd /tmp.
3. Введите git clone https://github.com/CoreSecurity/impacket.git.
4. Введите pip install.
Для включения PSexec, WMI и SMBexec в Impacket используйте следующие
команды.
‰‰PSexec:
psexec.py :@ powershell

Ответ на команду показан на рис. 3.7.
‰‰WMI:
wmiexec.py :@ powershell

Фреймворк: общее тестирование на проникновение  107

Рис. 3.7. Ответ на команду psexec.py

На рис. 3.8 показан ответ на введенную команду.

Рис. 3.8. Ответ на команду wmiexec.py

‰‰SMBexec:
smbexec.py :@

Ответ на команду показан на рис. 3.9.

Рис. 3.9. Ответ на команду smbexec.py

108  Глава 3



Методология тестирования на проникновение

‰‰PS-Remoting. Чтобы запустить PS-Remoting на целевом компьютере, выпол-

ните следующие действия:
1) откройте на целевом компьютере от имени администратора PowerShell;
2) введите следующее: powershell -NoProfile -ExecutionPolicy Bypass -Command
"iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.co /ansible/ansible/devel/examples/scripts/ConfigureRemotingForAn sible.ps1'))";

3) включите PSRemoting;
4) введите winrm set winrm/config/client/auth '@{Basic="true"}';
5) введите winrm set winrm/config/service/auth '@{Basic="true"}';
6) введите winrm set winrm/config/service '@{AllowUnencrypted="true"}'.
Чтобы включить на целевой машине PS-Remoting, выполните следующие
действия:
1) откройте PowerShell;
2) введите $options=New-PSSessionOption -SkipCACheck -SkipCNCheck;
3) введите $cred = Get-Credential . Вам будет предложено ввести учетные
данные;
4) введите Enter-PSSession -ComputerName -UseSSL -SessionOption
$options -Credential $cred.
На рис. 3.10 вы увидите подробный ответ на введенную команду.

Рис. 3.10. Реакция на команду Enter-PSSession

Фреймворк: общее тестирование на проникновение  109

Подобным образом мы также можем включить WMI на удаленном целевом
компьютере WMI для доступа к удаленной цели. Для этого запустите от имени
администратора PowerShell и выполните следующую команду:
netsh firewall set service RemoteAdmin enable

Чтобы использовать WMI для доступа к удаленному целевому объекту, введите
следующую команду:
wmic /node: /user: process call create "cmd.exe /c
"

На экране появится ответ на нее в виде следующих данных (рис. 3.11).

Рис. 3.11. Ответ на команду wmic/node

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

Поддержание доступа
После установки опорной точки (то есть получения удаленного доступа) при выходе пользователя из системы или перезагрузке компьютера ее можно быстро удалить. Точка опоры — это место постоянного доступа и входа. Установить ее можно
несколькими способами. Наилучшей стратегией поддержания постоянного доступа
является одновременное использование нескольких методов. Например, добавьте
запасной вход (dropbox) в сеть, к которому позже можно будет получить доступ при
наличии беспроводного подключения. Более хитрый способ поддержания доступа
состоит в настройке запланированной задачи на взломанной машине, когда запуск
происходит при перезагрузке, после чего задача периодически выполняется, например один раз в день (рис. 3.12).

110  Глава 3



Методология тестирования на проникновение

Рис. 3.12. Возможные точки доступа

Заметание следов
Еще раз отметим, что все ваши действия, несмотря ни на что, должны быть санкционированы клиентом. Но это не означает, что по окончании проверочного цикла, включающего в себя сканирование и эксплуатацию, испытатель идет домой.
Необходимо составить отчет и представить результаты в понятной для заказчика
форме. Но прежде чем приступить к составлению отчета, нам нужно очистить эксплойты и удалить инструменты, оставленные в рабочей среде. Это может означать
удаление исполняемых файлов и редактирование журналов. Я говорю «редактирование», потому что любой системный администратор обязательно должен просматривать журналы. Иначе он может пропустить атаку. Поскольку операционные
системы Windows и Linux имеют встроенные мощные средства ведения и документирования журналов событий, происходящих в операционной системе, о них
мы рассказывать не будем. Я предлагаю вам отслеживать вносимые изменения
и творчески редактировать журналы, когда вам нужно что-то скрыть. Используйте
имена системных служб или имена пользователей, которые подходят для учетных
записей. Например, не присваивайте учетной записи имя EliteHAK3R.

Составление отчета
Теперь мы подходим к финальной и, возможно, самой скучной части нашего теста.
Однако, если вы следовали предыдущим этапам, отчетность не должна быть сложной и утомительной. Я пытаюсь делать заметки для отчета по мере прохождения
теста и записываю промежуточные результаты или на бумаге, или с помощью
встроенного в Kali инструмента Dradis, который вызывается командой dradis
start . Имейте в виду, что это веб-сервис, поэтому любой человек на Земле,

Резюме  111

зайдя по адресу https://IP of kali machine:3004, сможет получить к нему доступ.
При первом же запуске Dradis вам будет предложено установить пароль.
Dradis позволяет импортировать файлы из Nmap, NESSUS, NEXPOSE и некоторых других текстовых редакторов. Это дает возможность делать заметки не только
вам, но и вашим коллегам при командной работе. С помощью Dradis вы можете
легко обмениваться информацией с товарищами по команде и фиксировать самые
свежие результаты сканирования.

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

4

Получение отпечатка
и сбор информации

В этой главе мы обсудим этап сбора информации о тестировании на проникновение. Мы опишем определение цели и необходимость сбора информации, а также
рассмотрим несколько инструментов, присутствующих в Kali Linux, которые можно использовать для сбора информации. Мы надеемся, что после прочтения этой
главы вы лучше поймете фазу сбора информации и сможете во время тестирования
на проникновение собрать необходимые сведения.
Как уже упоминалось в главе 3, сбор информации является вторым этапом
процесса тестирования на проникновение. На этом этапе мы стараемся собрать
как можно больше информации о цели, например имена хостов системы доменных
имен (DNS), IP-адреса, конфигурацию системы и используемые технологии, имя
пользователя или организации. Это документы, коды приложений, информация
о сбросе пароля, контактная информация и т. д. Во время сбора любая полученная
информация считается важной.
Сбор информации, в зависимости от используемого метода, можно разделить
на два типа: активный и пассивный. Активный метод предусматривает сбор информации с помощью прослушивания трафика целевой сети. При пассивном методе
мы пользуемся услугами третьей стороны, например поисковой системы Google.
Но об этом поговорим позже.
Помните, что ни один из методов не имеет преимущества. У каждого
есть свои достоинства и недостатки. При пассивном сканировании вы
собираете меньше информации, но все ваши действия будут незаметными. Используя активный метод сбора, вы получите больше информации, но ваши действия могут быть отслежены и перехвачены. Во время
составления проекта теста на проникновение, чтобы собрать больше
данных, этот этап может быть выполнен несколько раз. Вы также можете
обсудить с вашим клиентом, какой метод он предпочтет.

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

о целевом домене.

Использование общих ресурсов  113
‰‰Информация о регистрации домена.
‰‰Анализ DNS.
‰‰Информация о маршруте.
‰‰Использование поисковой системы.

Разведка по открытым источникам
Одним из ключевых терминов, связанных со сбором информации, является разведка по открытым источникам — Open Source Intelligence (OSINT). Военные
и разведывательные организации делят свои разведывательные источники на
различные типы. Настоящий шпионаж, предполагающий взаимодействие агентов, часто называют агентурной деятельностью — Human Intelligence (HUMINT).
Захват радиосигнала с целью взлома шифра называется радиоразведкой — Signals
Intelligence (SIGINT). Но испытатель на проникновение вряд ли воспользуется
одним из перечисленных методов OSINT. OSINT — это информация, полученная
из источников, не защищенных средствами контроля безопасности. Эти средства
контроля должны препятствовать утечке информации. Нередко это сведения из
публичных записей или информация, которой целевые организации обмениваются
при своей повседневной деятельности.
Для поиска и получения этой, безусловно, полезной информации испытателю
на проникновение потребуются специальные знания и инструменты. Продолжительность этапа сбора в значительной степени зависит от уже полученных данных.
Кроме того, показывая пути утечки информации, мы можем понять, какие действия
следует предпринять для повышения безопасности. В этой главе мы разберем,
сколько информации может получить человек, знающий, что и где искать.

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

Описание

http://www.archive.org

Здесь хранятся архивы сайтов

http://www.domaintools.com/ Содержит сведения о доменных именах
http://www.alexa.com/

На этом ресурсе содержится база данных о сайтах

Продолжение 

114  Глава 4



Получение отпечатка и сбор информации

(Продолжение)
URL-адрес ресурса

Описание

http://serversniff.net/

Это бесплатный «швейцарский армейский нож» для сетей,
проверки серверов и маршрутизации

http://centralops.net/

Здесь вы найдете бесплатные сетевые утилиты, такие как domain,
email, browser, ping, traceroute и Whois

http://www.robtex.com

На данном ресурсе вы можете найти информацию о домене и сети

http://www.pipl.com/

Здесь вы можете попробовать найти в Интернете людей по их
имени и фамилии, городу, штату и стране

http://wink.com/

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

http://www.isearch.com/ Бесплатная поисковая система, позволяющая найти людей
по имени, номеру телефона и адресу электронной почты
http://www.tineye.com

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

http://www.sec.gov/.
edgar.shtml

Данный сайт может быть использован для поиска информации
о публичных компаниях в комиссии по ценным бумагам и биржам

Чтобы использовать эти ресурсы, требуется только подключение к Интернету
и браузер, который есть в каждой операционной системе. Поэтому мы и предлагаем
вам, прежде чем воспользоваться инструментами, встроенными в Kali Linux, поработать с этими публичными ресурсами.
Чтобы защитить домен от злоупотреблений, мы изменили доменное имя,
которое было использовано в наших примерах. Мы будем указывать
несколько доменных имен, таких как example.com от IANA и адрес бесплатного хакерского сайта https://www.hackthissite.org/.

Запрос сведений о регистрации домена
После того как вы узнаете целевое доменное имя, вам нужно запросить базу данных Whois и найти информацию об этом домене. База данных Whois предоставит
информацию о DNS-сервере и контактную информацию домена. Whois — это протокол для поиска регистраций в Интернете, баз данных зарегистрированных доменных имен, IP-адресов и автономных систем. Данный протокол указан в RFC 3912
(https://www.ietf.org/rfc/rfc3912.txt).
По умолчанию Kali Linux уже поставляется с Whois-клиентом. Чтобы получить
Whois-информацию о домене, просто введите следующую команду:
# whois example.com

Анализ записей DNS  115

Ниже приводится ответ Whois на введенную команду:
Domain Name: EXAMPLE.COM
Registrar: RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY
Sponsoring Registrar IANA ID: 376
Whois Server: whois.iana.org
Referral URL: http://res-dom.iana.org
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
Updated Date: 14-aug-2015
Creation Date: 14-aug-1995
Expiration Date: 13-aug-2016
>>> Last update of whois database: Wed, 03 Feb 2016 01:29:37 GMT HEADERHEADER SSH-2.0-OpenSSH_5.8p1_hpn13v10 FreeBSD-20110102
23/tcp
filtered
24/tcp
filtered
25/tcp
filtered
26/tcp
filtered
...
79/tcp
filtered
80/tcp
open
Portscan Finished: Scanned 150 ports, 69 ports were in state closed
All scans completed, exiting

С помощью предыдущей команды мы обнаружили, что целевой хост использует
программное обеспечение для фильтрации пакетов. Открыт только порт 22, к которому можно подключиться через SSH, и порт 80, обычно предназначенный для вебсервера. Данная информация представляет интерес, так как указан тип установки
SSH. Можно продолжить исследование уязвимостей, установив OpenSSH.

Maltego: графическое отображение
собранной информации
Maltego — приложение с открытым кодом, которое предназначено для разведки
и криминалистики. Оно позволяет добывать, собирать и систематизировать информацию. Maltego собирает информацию из открытых источников. После того как
информация будет собрана, Maltegoпоможет определить ключевые связи между

Анализ записей DNS  121

данными и отобразить их в графическом виде. Такое отображение информации
облегчит ее восприятие.
Maltego позволяет получить следующую информацию об инфраструктуре
Интернета:
‰‰имя домена;
‰‰имя DNS;
‰‰Whois-информацию;
‰‰сетевые блоки;
‰‰IP-адрес.

Maltego также можно использовать для сбора такой информации о людях, как:
‰‰компании и организации, адреса электронной почты, связанные с конкретным

человеком;
‰‰сайты, социальные сети, связанные с данной персоной;
‰‰социальные сети, связанные с человеком;
‰‰номера телефонов;
‰‰информация в социальных сетях.

По умолчанию Kali Linux поставляется с Maltego 3.6.1. Ниже перечислены
ограничения доступной версии:
‰‰нельзя использовать в коммерческих целях;
‰‰максимум 12 результатов на преобразование;
‰‰обязательная регистрация на сайте;
‰‰действие ключа API ограничено несколькими днями;
‰‰работает на более медленном сервере, доступном всем пользователям со-

общества;
‰‰общение между клиентом и сервером не шифруется;
‰‰не обновляется до следующей версии;
‰‰отсутствует поддержка конечных пользователей;
‰‰нет обновлений преобразований на серверной стороне.

В Maltego доступно более 70 преобразований. Слово «преобразование» (transform)
относится к фазе сбора информации Maltego. Одно преобразование означает, что
Maltego выполнит только один этап сбора информации.
Чтобы получить доступ к Maltego из меню Kali Linux, выберите из основного меню пункты ApplicationInformation GatheringMaltego (ПриложенияСбор
информацииMaltego). Maltego можно запустить, введя в командную строку
терминала команду:
# maltego

122  Глава 4



Получение отпечатка и сбор информации

После запуска программы вы увидите экран приветствия Maltego. Через несколько секунд появится следующий мастер запуска, который поможет вам настроить клиент Maltego. Для продолжения настройки нажмите кнопку Next (Далее).
Появится следующее окно, в котором необходимо создать учетную запись и получить данные для входа.
После входа в систему введите свои личные данные (имя и адрес электронной
почты). Затем необходимо выбрать источник преобразования (рис. 4.1).

Рис. 4.1. Выбор источника преобразования

Клиентское приложение Maltego для получения преобразований подключается
к серверам Maltego. Если Maltego успешно инициализируется, на экране появится
следующее диалоговое окно (рис. 4.2).
Если вы увидели на экране компьютера это диалоговое окно, значит, инициализация клиентского приложения Maltego прошла успешно. Теперь вы можете
приступать к его использованию.
Прежде чем использовать клиент Maltego, ознакомимся с его интерфейсом
(рис. 4.3).
В верхней части интерфейса находятся вкладки групп команд. Чтобы выбрать
нужную вкладку, достаточно щелкнуть на ее ярлыке. Вкладка Investigate (Исследо-

Анализ записей DNS  123

Рис. 4.2. Диалоговое окно мастера установки Maltego

Рис. 4.3. Интерфейс клиентского приложения Maltego

вать) содержит команды, позволяющие выбрать тип объекта исследования. Maltego
делит объекты на шесть групп.
‰‰Устройства: телефон или камера.
‰‰Инфраструктуры: DNS-имя домена, IP-адрес IPv4, MX-запись, NS-запись, блок

сети, URL-адрес и сайт.

124  Глава 4



Получение отпечатка и сбор информации

‰‰Расположение.
‰‰Тест на проникновение.
‰‰Личные данные: псевдоним, документ, адрес электронной почты, фотография

человека и фраза.
‰‰Социальные сети, такие как Facebook, Twitter, причастность к Facebook или

Twitter.
Правее вы увидите ярлык вкладки View (Вид). Используя ее команды, вы сможете выбрать режим отображения.
‰‰Main View (Общий вид).
‰‰Bubble View (Вид «Пузырьки»).
‰‰Entity List (Список объектов).

Смена режима отображения используется для извлечения информации, которую тяжело заметить на больших графиках, где аналитик с помощью ручного
контроля данных не может увидеть четких связей. Main View (Общий вид) — режим,
в котором вы работаете большую часть времени. При выборе вида Bubble View (Вид
«Пузырьки») все узлы будут отображаться в виде пузырьков. Если выбрать вид
Entity List (Список объектов), все узлы будут отображены в виде списка.
Далее находится вкладка, где можно выбрать различные алгоритмы компоновки. Maltego поддерживает четыре алгоритма компоновки.
‰‰Block layout (Макет блока) — выбран по умолчанию и используется во время

интеллектуального анализа данных.

‰‰Hierarchical layout (Иерархическая компоновка) — показывает формирование де-

рева узлов сети от корня до конечных ветвей. С помощью этого режима можно
понять структуру ветвей и увидеть родительские/дочерние связи.

‰‰Centrality layout (Центральное расположение) — показывает центральный узел,

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

‰‰Organic layout (Органическая компоновка) — органическая компоновка так ото-

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

После краткого ознакомления с интерфейсом клиента Maltego приступим
к практическим действиям.
Предположим, у вас появилась необходимость собрать информацию о домене.
Для эксперимента мы воспользуемся доменом example.com. Описание эксперимента
вы найдете в следующих разделах.
1. Создайте новый график (Ctrl+T) и перейдите на вкладку Palette (Палитра).
2. Выберите Infrastructure (Инфраструктура) и щелкните кнопкой мыши на Domain
(Домен).

Анализ записей DNS  125

3. Перетащите домен в главное окно. Если вы все сделаете правильно, то в главном
окне увидите домен с именем paterva.com.
4. Дважды щелкните на имени и дайте ему имя целевого домена, например
example.com (рис. 4.4).

Рис. 4.4. Указание имени целевого домена

5. Если вы щелкнете правой кнопкой мыши на имени домена, то увидите список
всех преобразований, которые можно с ним выполнить:
yy получить DNS домена;
yy получить сведения о владельце домена;
yy получить адреса электронной почты из домена;
yy получить файлы и документы из домена;
yy выполнить другие преобразования, такие как To Person (К человеку), To Phone
numbers (К телефонномму номеру) и To Website (К сайту).
6. Выберем DomainToDNSNameSchema из преобразований domain (для этого выполните Run TransformOther TransformsDomainToDNSNameSchema (Выполнить
преобразованиеДругие преобразованияDomainToDNSNameSchema)).
Результат показан на рис. 4.5.

126  Глава 4



Получение отпечатка и сбор информации

Рис. 4.5. Результат преобразований

После преобразования DNS из домена мы получили информацию об адресе
сайта (www.example.com), связанного с доменом example.com.
В целевом домене можно выполнить и другие преобразования.
Если вы хотите изменить домен, сначала необходимо сохранить текущий график. Для этого сделайте следующее.
1. Щелкните на значке Maltego и выберите команду Save (Сохранить).
2. График будет сохранен в формате Maltego graph (.mtgx). Чтобы изменить домен,
просто дважды щелкните на нем и измените его имя.
Далее мы опишем несколько инструментов, которые можно использовать для
получения информации о маршрутизации.

Получение сведений о сетевой маршрутизации  127

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

tcptraceroute
Инструмент tcptraceroute в дистрибутивах Linux является дополнением к команде
traceroute. Стандартная команда traceroute отправляет целевой машине или
UDP, или эхо-пакет ICMP (Internet Control Message Protocol — протокол межсетевых управляющих сообщений) со временем жизни (Time to Live, TTL), равным
единице. Значение TTL увеличивается на единицу для каждого хоста до тех пор,
пока пакет не достигнет целевой машины. Основное различие между командой
traceroute и инструментом tcptraceroute в том, что последний для целевой машины
использует пакет TCP SYN.
Главное преимущество использования tcptraceroute состоит в том, что мы
можем на пути от машины тестировщика к целевой машине встретить бранд­
мауэр. Брандмауэры часто настраиваются для фильтрации трафика ICMP и UDP,
связанного с командой traceroute . В этом случае информация о трассировке
будет искажена. Использование инструмента tcptraceroute позволяет установить
TCP-соединение на определенном порте, через который брандмауэр позволит вам
пройти, тем самым показав на пути сетевой маршрутизации брандмауэр.
Инструмент tcptraceroute использует трехстороннее установление связи TCP,
чтобы определить, есть ли доступ через межсетевой экран. Если порт открыт, вы
получите пакет SYN/ACK. Если порт закрыт, вы получите пакет RST.
Для запуска tcptraceroute в командной строке следует ввести такую команду:
# tcptraceroute

С этой командой связано несколько функций.
Самая простая функция — выполнение команды в домене. Чтобы продемонстрировать ее, добавьте к команде traceroute домен example.com:
# traceroute www.example.com

Отредактированный ответ выглядит следующим образом:
traceroute to www.example.com (192.168.10.100), 30 hops max, 40 byte packets
1 192.168.1.1 (192.168.1.1) 8.382 ms 12.681 ms 24.169 ms
2 1.static.192.168.xx.xx.isp (192.168.2.1) 47.276 ms 61.215 ms 61.057 ms
3 * * *

128  Глава 4



Получение отпечатка и сбор информации

4 74.subnet192.168.xx.xx.isp (192.168.4.1) 68.794 ms 76.895 ms 94.154 ms
5 isp2 (192.168.5.1) 122.919 ms 124.968 ms 132.380 ms
...
15 * * *
...
30 * * *

Как вы можете видеть, в ответе есть несколько строк, информация в которых
закрыта звездочками ***. Если мы посмотрим на выходные данные, то увидим, что
по запросу 15 нет никакой информации. Это признак того, что между машиной
испытателя и целевой машиной (в нашем случае это домен example.com) находится
устройство, фильтрующее запросы.
Теперь с помощью команды tcptraceroute попробуем обойти эту фильтрацию.
Зная, что домен example.com находится на веб-сервере, мы воспользуемся командой, чтобы пройти через TCP-порт 80, который является портом HTTP. Введите
в команд­ную строку следующее:
# tcptraceroute www.example.com

На выходе вы получите:
Selected device eth0, address 192.168.1.107, port 41884 for outgoing packets
Tracing the path to www.example.com (192.168.10.100) on TCP port 80 (www),
30 hops max
1 192.168.1.1 55.332 ms 6.087 ms 3.256 ms
2 1.static.192.168.xx.xx.isp (192.168.2.1) 66.497 ms 50.436 ms 85.326 ms
3 * * *
4 74.subnet192.168.xx.xx.isp (192.168.4.1) 56.252 ms 28.041 ms 34.607 ms
5 isp2 (192.168.5.1) 51.160 ms 54.382 ms 150.168 ms
6 192.168.6.1 106.216 ms 105.319 ms 130.462 ms
7 192.168.7.1 140.752 ms 254.555 ms 106.610 ms
...
14 192.168.14.1 453.829 ms 404.907 ms 420.745 ms
15 192.168.15.1 615.886 ms 474.649 ms 432.609 ms
16 192.168.16.1 [open] 521.673 ms 474.778 ms 820.607 ms

Как можете видеть из выходных данных tcptraceroute, запрос достиг целевой
системы.

tctrace
Это еще один инструмент, использующий рукопожатие (квитирование) TCP.
Как и tcptraceroute, tctrace отправляет пакет SYN на определенный хост, и, если
ответом на запрос мы получаем SYN/ACK, значит, порт открыт. Пакет RST показывает, что данный порт закрыт.
Для запуска tctrace используется следующая команда:
# tctrace -i -d

где -i — интерфейс целевой машины, а -d — доменное имя
цели.

Используем поисковик  129

Для примера мы выполним tcptrace, используя домен www.example.com как
целевой хост:
# tctrace -i eth0 -d www.example.com

На выходе мы получим следующие данные:
1(1) [172.16.43.1]
2(1) [172.16.44.1]
3(all) Timeout
4(3) [172.16.46.1]
5(1) [172.16.47.1]
6(1) [172.16.48.1]
7(1) []
...
14(1) [172.16.56.1]
15(1) [172.16.57.1]
16(1) [198.148.81.137] (reached; open)

Используем поисковик
Kali Linux содержит много инструментов, позволяющих получить подробную
информацию об исследуемом объекте. С помощью инструмента автоматического
сбора данных мы можем собрать много информации из общедоступных источников и проанализировать ее. Эти инструменты действуют как поисковые системы
и для получения информации о домене могут просматривать различные ресурсы,
например Google, сайты социальных сетей или электронную почту. Одним из преимуществ использования этих инструментов является то, что они не ищут непосредственно сайты, а задействуют для получения OSINT (Open Source Intelligence)
другие поисковые системы. Применение этих инструментов позволит пентестеру
ограничить следы проникновения в целевую систему.
Одни из этих инструментов уже встроены в операционную систему Kali Linux,
другие требуют дополнительной установки. В следующих разделах мы расскажем
о нескольких инструментах, которые помогут вам собрать большое количество
информации.
SimplyEmail. Этот инструмент не только собирает адреса электронной почты, но
и выискивает в домене текстовые документы Word и электронные таблицы Excel.
Кроме того, существует большое количество различных сайтов и поисковых систем,
которые можно использовать. Это такие ресурсы, как Reddit, Pastebin и Canary Bin.
Немаловажно, что отчеты создаются в удобном формате HTML.
theharvester — это тоже удобный инструмент для агрегирования адресов
электронной почты и другой информации, которая может просочиться
с целевого компьютера.

SimplyEmail — сценарий, написанный на Python и состоящий из нескольких
модулей. Он легко устанавливается на компьютер.

130  Глава 4



Получение отпечатка и сбор информации

Чтобы установить SimplyEmail, выполните следующие шаги.
1. Зайдите на сайт GitHub по адресу https://github.com/killswitch-GUI/SimplyEmail.
2. Введите следующий код:
curl -s
https://raw.githubusercontent.com/killswitch-GUI/SimplyEmail/master/setup/
oneline-setup.sh | bash

3. После запуска сценария он будет готов к работе.
Чтобы открыть меню Help (Справка), введите следующую команду:
#./SimplyEmail.py -h

В ответ вы получите следующее:
Current Version: v1.0 | Website: CyberSyndicates.com
============================================================
Twitter: @real_slacker007 | Twitter: @Killswitch_gui
============================================================
[-s] [-v]

Сбор электронной почты является важным этапом многих операций, которые
выполняет испытатель на проникновение или «Красная команда». Но нам потребовался хоть и простой, но эффективный способ получить результат, сходный
с результатами работы Recon-Ng и theharvester (для запуска введите -h).
Дополнительный Описание
аргумент

-all

Для получения сообщений электронной почты используются
не API-методы

-e company.com

Задайте адрес электронной почты пользователя, например ale@email.com

-l

Список загруженных модулей

-t

html/flickr/google. Тест отдельного модуля (для листинга)

-s

Этот аргумент позволяет при анализе электронной почты выбрать
режим No-Scope

-v

Укажите этот аргумент для подробного вывода модулей

Чтобы начать поиск, введите следующую команду:
#./SimplyEmail -all -e example.com

Начнется выполнение сценария. Учтите, если никакой информации нет, в ответе будут ошибки. Это не означает, что вы сделали ошибку. Просто нужная информация отсутствует. Во время работы инструмента на экране вы увидите следующее:
[*]
[*]
[*]
[*]

Starting:
Starting:
Starting:
Starting:

PasteBin Search for Emails
Google PDF Search for Emails
Exalead DOCX Search for Emails
Exalead XLSX Search for Emails

Взлом базы данных Google (GHDB)  131
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]

Starting: HTML Scrape of Taget Website
Starting: Exalead Search for Emails
Starting: Searching PGP
Starting: OnionStagram Search For Instagram Users
HTML Scrape of Taget Website has completed with no Email(s)
Starting: RedditPost Search for Emails
OnionStagram Search For Instagram Users: Gathered 23 Email(s)!
Starting: Ask Search for Emails

Когда поиск завершится, вы получите запрос на проверку адресов электронной
почты. Эта операция может занять некоторое время. Но в целевой атаке с использованием инструментов социальной инженерии или при получении конфиденциальных данных определенных лиц (фишинге) время, потраченное на проверку
адресов электронной почты, будет затрачено не зря. Для запуска проверки адресов
электронной почты достаточно нажать клавишу Y. Нажав клавишу N, вы откажетесь от проверки.
[*] Email reconnaissance has been completed:
Email verification will allow you to use common methods
to attempt to enumerate if the email is valid.
This grabs the MX records, sorts and attempts to check
if the SMTP server sends a code other than 250 for known bad addresses
[>] Would you like to verify email(s)?:

По окончании проверки наступит следующий этап — создания отчета:
[*] Email reconnaissance has been completed:
File Location: /root/Desktop/SimplyEmail
Unique Emails Found: 246
Raw Email File: Email_List.txt
HTML Email File: Email_List.html
Domain Performed: example.com
[>] Would you like to launch the HTML report?:

Отчет — это HTML-файл, в котором указано, какие типы поиска были применены и какие данные были обнаружены. Если вы хорошо разбираетесь в HTML,
вы даже можете поставить на этом отчете свой логотип и включить его в окончательный отчет об исследовании на проникновение.

Взлом базы данных Google (GHDB)
База данных Google Hacking (GHDB) находится по адресу https://www.exploit-db.com/
google-hacking-database/. Она позволяет пользователям применять индивидуальные
расширенные запросы, которые могут выявить исключительную информацию.
Такая информация в обычном списке результатов поиска на https://www.google.com/
не отображается.
GHDB начинал создавать Джонни Лонг (Johnny Long), основатель сообщества
Hackers for Charity («Хакеры за благотворительность»). Сейчас GHDB поддерживается Offensive Security, создателями Kali Linux. В GHDB используются запросы

132  Глава 4



Получение отпечатка и сбор информации

Google Dork или Google Dork Queries (GDQ) — набор запросов для выявления
грубейших дыр в безопасности. При формировании запроса можно также указывать операторы типа allintext, site, +, -, * и др. При правильном формировании
запроса Googledorks иногда может выдать интересную и даже конфиденциальную
информацию, такую как сообщения об ошибках, список уязвимых серверов и сайтов, конфиденциальные файлы и страницы входа. Конечно, большая часть этой
информации через обычный поиск Google чаще всего недоступна. Поэтому Google
можно использовать в качестве инструмента сбора информации и взлома базы
данных.
GHDB достаточно прост в применении. Конечно, и здесь есть поле ввода поискового запроса, но, в отличие от обычного поисковика Google, на этом ресурсе
пользователь, вместо того чтобы вводить фразы и запросы Google Dork, может
искать ответ в различных категориях. Ниже заголовка страницы находятся ссылки, в которых перечислены многие категории с поисковыми запросами, а также
ссылки на запросы, ведущие к поиску Google. С помощью этих категорий нужную
информацию легко найдет даже начинающий пользователь.
В качестве примера мы, чтобы выбрать уязвимые серверы из списка категорий,
просто ввели apache в поле поиска и нажали кнопку Search (Поиск) (рис. 4.6).

Рис. 4.6. Категории отсортированы по слову apache

Metagoofil  133

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

Рис. 4.7. Результаты поискового запроса

В этических и юридических целях вы должны использовать GHDB только для
сбора информации.

Metagoofil
Metagoofil — это инструмент, который использует поисковую систему Google для
получения метаданных из документов, доступных в целевом домене. В настоящее
время поддерживаются следующие типы документов:
‰‰документы Word (.docx, .doc);
‰‰электронные таблицы (.xlsx, .xls, .ods);

134  Глава 4



Получение отпечатка и сбор информации

‰‰файлы презентации (.pptx, .ppt, .odp);
‰‰файлы PDF (.pdf).

Metagoofil выполняет следующие действия.
‰‰Поиск в целевом домене с помощью Google всех указанных выше типов файлов.
‰‰Загрузку всех найденных документов и их сохранение на локальном диске.
‰‰Извлечение метаданных из загруженных документов.
‰‰Сохранение результата в HTML-файл.

Мы можем обнаружить следующие метаданные.
‰‰Имя пользователя.
‰‰Версию программного обеспечения.
‰‰Имена серверов или компьютеров.

Данную информацию можно использовать позже, на этапе тестирования на
проникновение. Metagoofil не входит в стандартный дистрибутив Kali Linux 2.0.
Чтобы установить Metagoofil, выполните следующую команду:
# apt-get install metagoofil

Когда приложение установится, для запуска введите такую команду:
# metagoofil

После запуска приложения на экране появятся простые инструкции по использованию и пример. Мы для демонстрации его работы соберем все документы
DOC и PDF (-t, .doc, .pdf) из целевого домена (-d hackthissite.org) и сохраним
их в каталоге с именем test (-o test). Мы ограничиваем поиск каждого типа файлов 20 файлами (-l 20), а загрузим только пять файлов (-n 5). Созданный отчет
сохраним под именем test.html (-f test.html).
Введите следующую команду:
# metagoofil -d example.com -l 20 -t doc,pdf -n 5 -f test.html -o test

Отредактированный результат ее выполнения выглядит следующим образом:
[-] Starting online search...
[-] Searching for doc files, with a limit of 20
Searching 100 results...
Results: 5 files found
Starting to download 5 of them:
---------------------------------------[1/5] /webhp?hl=en [x] Error downloading /webhp?hl=en
[2/5] /intl/en/ads [x] Error downloading /intl/en/ads
[3/5] /services [x] Error downloading /services
[4/5] /intl/en/policies/privacy/
[5/5] /intl/en/policies/terms/
[-] Searching for pdf files, with a limit of 20
Searching 100 results...

Metagoofil  135
Results: 25 files found
Starting to download 5 of them:
---------------------------------------[1/5] /webhp?hl=en [x] Error downloading /webhp?hl=en
[2/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine3.pdf
[3/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine12_print.pdf
[4/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine12.pdf
[5/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine4.pdf
processing
[+] List of users found:
-------------------------emadison
[+] List of software found:
----------------------------Adobe PDF Library 7.0
Adobe InDesign CS2 (4.0)
Acrobat Distiller 8.0.0 (Windows)
PScript5.dll Version 5.2.2
[+] List of paths and servers found:
--------------------------------------[+] List of e-mails found:
---------------------------whooka@gmail.com
htsdevs@gmail.com
never@guess
narc@narc.net
kfiralfia@hotmail.com
user@localhost
user@remotehost.
user@remotehost.com
security@lists.
recipient@provider.com
subscribe@lists.hackbloc.org
staff@hackbloc.org
johndoe@yahoo.com
staff@hackbloc.org
johndoe@yahoo.com
subscribe@lists.hackbloc.org
htsdevs@gmail.com
hackbloc@gmail.com
webmaster@www.ndcp.edu.phpass
webmaster@www.ndcp.edu.phwebmaster@www.ndcp.edu.ph
[webmaster@ndcp
[root@ndcp
D[root@ndcp
window...[root@ndcp
.[root@ndcp
goods[root@ndcp
liberation_asusual@yapjames_
e@yahoo.com.au

136  Глава 4



Получение отпечатка и сбор информации

Из этого кода видно, что из собранных документов мы получаем большое количество информации, например имена пользователей и сведения о пути. Мы можем
задействовать полученные имена пользователей для поиска шаблонов в именах
и для запуска атаки с применением пароля и грубой силы. Но имейте в виду, что
при взломе учетной записи и пароля с помощью грубой силы может появиться
риск блокировки учетных записей пользователей. Сведения о пути можно задействовать для определения типа и версии операционной системы, установленной
на целевом компьютере. Мы получили всю эту информацию, не заходя на сайт
целевого домена.
Metagoofil также способен генерировать информацию в формате HTML-отчета
(рис. 4.8).

Рис. 4.8. Отчет в формате HTML

Автоматизированные инструменты для снятия отпечатков и сбора информации  137

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

Автоматизированные инструменты для снятия
отпечатков и сбора информации
В этом разделе мы рассмотрим полностью автоматизированные инструменты,
в частности два таких, в состав которых входят несколько функций, позволя­
ющих выполнять задачи, которые ранее выполнялись разными инструментами.
Они находятся в свободном доступе, и найти их можно на сайте https://github.com/.
Эти инструменты работают как в Kali Linux 2018.2, так, возможно, и в более ранних
версиях.

Devploit
Devploit 3.6, который разработал Joker25000, заявлен как инструмент сбора информации и доступен по адресу https://github.com/joker25000/Devploit.
Перед использованием вам следует клонировать Devsploit на вашу машину
Kali Linux. Только когда будут представлены все опции, вы сможете запустить
инструменты выбора. Клонирование выполняется лишь один раз. Далее просто
переходите в каталог Deploy.
Откройте новый терминал и, используя команду cd, перейдите в каталог, например Desktop. Чтобы просмотреть список с содержимым каталога и убедиться,
что вы находитесь там, где нужно, выполните команду ls.
Для клонирования Devploit на компьютер используйте команду git clone
(рис. 4.9):
git clone https://github.com/joker25000/Devploit.git

Рис. 4.9. Команда git clone введена

При копировании URL-адреса с веб-страницы GitHub проследите, чтобы
в конце адреса было обязательно указано расширение .git.

138  Глава 4



Получение отпечатка и сбор информации

Чтобы запустить клонирование (рис. 4.10), нажмите клавишу Enter.

Рис. 4.10. Клонирование успешно выполнено

После завершения клонирования перейдите в каталог Deploy. Его мы создали на

Рабочем столе. Для перехода в нужный каталог введите команду cd Devploit, а затем

для просмотра содержимого каталога воспользуйтесь командой ls. Среди других
файлов вы должны увидеть Devploit.py и README.me.
С помощью команды chmod +x запустите установку, а затем для старта Devploit
введите ./install.
Убедитесь, что предыдущие команды выполняются из каталога Devploit.

После установки Devploit откройте новый терминал и введите команду Devploit,
как показано на рис. 4.11.

Рис. 4.11. Запуск Devploit

В Devploit существует 18 вариантов автоматического сбора информации
(рис. 4.12).

Автоматизированные инструменты для снятия отпечатков и сбора информации  139

Рис. 4.12. Варианты автоматического сбора информации

Чтобы выполнить поиск DNS, введите 1, а затем имя домена, например www.go­

ogle.com (рис. 4.13).

Рис. 4.13. Поиск DNS

Чтобы узнать основную географическую информацию о домене или IP, выберите вариант 3 и нажмите Enter, а затем введите IP или доменное имя (рис. 4.14).
Обязательно ознакомьтесь с остальными доступными опциями.

Рис. 4.14. Получение основной географической информации

140  Глава 4



Получение отпечатка и сбор информации

RedHawk v2
RedHawk версии 2 — еще один инструмент сбора информации с мощными функциями типа «все в одном». Он применяется для разведки и сбора данных.
Откройте новое окно терминала и перейдите на Рабочий стол (или в каталог по
вашему выбору). Клонируйте RedHawk v2, введя команду https://github.com/
th3justhacker/RED_HAWK (рис. 4.15).

Рис. 4.15. Клонирование RedHawk v2

Как только все объекты будут распакованы, с помощью команды cd RED_HAWK
перейдите в каталог RED_HAWK. Используйте команду ls, чтобы проверить, что файл
rhawk.php действительно существует (рис. 4.16).

Рис. 4.16. Содержимое каталога RED_HAWK

Для запуска RedHawk выберите тип php rhawk.php и нажмите клавишу Enter.
Если все было сделано правильно, на экране вы увидите следующую картинку
(рис. 4.17).

Рис. 4.17. Запуск RedHawk

Автоматизированные инструменты для снятия отпечатков и сбора информации  141

Введите адрес интересующего вас сайта и выберите HTTP или HTTPS. Затем выберите один из доступных вариантов. Например, для поиска Whois введите 1 (рис. 4.18).

Рис. 4.18. Поиск Whois

Whois-информация для поиска по адресу https://www.google.com/ отображается
следующим образом (рис. 4.19).

Рис. 4.19. Найденная Whois информация для адреса https://www.google.com/

142  Глава 4



Получение отпечатка и сбор информации

Результаты опции 3 для https://www.google.com/ по захвату баннеров будут следующими (рис. 4.20).

Рис. 4.20. Результаты опции 3

Поиск MX (опция 13) для Google.com дает следующий результат (рис. 4.21).

Рис. 4.21. Результаты отработки опции 13

Пользователю доступно несколько опций, включая A — сканирование всего.

Использование Shodan для поиска подключенных
к Интернету устройств
Поисковая система Shodan находится по адресу shodan.io. Это не какой-то слабенький поисковик. Shodan с помощью основных и дополнительных строк запросов
может обнаруживать подключенные к Интернету уязвимые системы. Веб-сайт

Автоматизированные инструменты для снятия отпечатков и сбора информации  143

был разработан Джоном Мэзерли (John Matherly) и существует около десяти лет.
В настоящее время он стал бесценным инструментом для снятия отпечатков через
Интернет. Мы живем в эпоху Интернета вещей (Internet of Things, IoT), и сегодня
все больше и больше устройств имеют выход в Сеть. Однако многие из них не защищены должным образом, поэтому становятся уязвимы для хакерских атак и не
только.
Shodan сканирует общие порты и выполняет захват баннеров в рамках получения отпечатка, а затем отображает устройства, доступные через Интернет, включая
маршрутизаторы и сетевые устройства, веб-камеры и средства наблюдения, дорожные камеры, серверы и системы SCADA и многие другие интересные устройства.
Чтобы получить список открытых портов и сервисов, установленных на устройстве, достаточно в списке результатов щелкнуть кнопкой мыши на отдельном
результате. Кроме того, Shodan позволяет создавать отчеты.
Для обеспечения конфиденциальности и по юридическим причинам
я решил не использовать скриншоты результатов работы Shodan.

Перед применением Shodan посетите сайт www.shodan.io (рис. 4.22).

Рис. 4.22. Страница сайта www.shodan.io

144  Глава 4



Получение отпечатка и сбор информации

Обратите внимание, что этот сервис вы можете использовать бесплатно.
Но, если вы не зарегистрируетесь, то будете ограничены одной страницей с результатами. Регистрация бесплатная, она предоставляет доступ к первым двум
страницам с ответами на запрос. Чтобы получить доступ ко всем результатам,
следует оформить платную подписку.
Поисковые запросы в Shodan. Ниже приведены поисковые запросы, применяемые в Shodan.
‰‰Ключевые слова — наподобие webcams (веб-камеры), CCTV, Cisco, Fortinet, traffic

signal (сигнал светофора), refrigerator (холодильник) и др.
‰‰Номера портов — можно указать в соответствии со службами. Например, 3389

(remote desktop) (удаленный Рабочий стол).
‰‰Версии ОС — вместе с кодами стран можно указать операционные системы

и версии.
‰‰Вместе с ключевыми словами и номерами портов также могут быть указаны

названия стран.
‰‰Можно использовать фразы и комбинированные ключевые слова, включая

популярные поисковые фразы, такие как «пароли по умолчанию», «неудачный
вход в систему» и др.
Обратите внимание: в верхней части сайта Shodan правее поля ввода поискового
запроса находится кнопка Explore (Исследовать). При ее нажатии можно увидеть
список ссылок на различные категории и популярные запросы. Одними из рекомендуемых категорий являются Industrial Control Systems (Промышленные системы
управления) и Databases (Базы данных), а на вершине популярности находятся
такие запросы, как «веб-камеры», «камеры», Netcam и «пароль по умолчанию».
Щелчок кнопкой мыши на категории Webcams (Веб-камеры) или ввод выражения SQ-WEBCAM даст несколько результатов по веб-камерам, которые расположены
в разных странах. Общий поисковый запрос Webcamxp также позволит найти камеры, доступные в Интернете. Многие из этих камер управляются дистанционно:
можно делать панораму, изменять угол наклона и масштаб.
Убедитесь, что законодательство страны позволяет вам использовать Shodan.
Уточните, есть ли юридические ограничения на получение доступа к некоторым
устройствам.

Blue-Thunder-IP-локатор
Откройте новый терминал и перейдите в каталог по вашему выбору. Мы для этого
примера использовали Рабочий стол.
Создайте клон Blue-Thunder-IP-Locator из GitHub. Для этого используйте коман­
ду git clone https://github.com/th3sha10wbr04rs/Blue-Thunder-IP-Locator-.git
(рис. 4.23).

Автоматизированные инструменты для снятия отпечатков и сбора информации  145

Рис 4.23. Клонирование Blue-Thunder-IP-Locator

После успешного клонирования измените каталоги на Blue-Thunder-IP-Locator.
Как указано на странице https://github.com/CreativeBen/Blue-Thunder-IP-Locator-, для
установки и обновления библиотек perl следует ввести команду apt-get install
liblocal-lib-perl.
Если при выполнении предыдущей команды возникла ошибка, введите Dpkg
--configure -a и повторите предыдущую команду (рис. 4.24).

Рис. 4.24. Установка библиотек perl

Вам на протяжении всего процесса будут предлагаться различные варианты
установки. При появлении таких запросов нажимайте Y.
Далее введите команду apt-get install libjson-perl и обновите систему.
Для этого введите apt-get upgrade libjson-perl.
Кроме того, нужно будет убедиться, что Blue-Thunder имеет соответствующие
полномочия. Для этого введите команду chmod +x blue_thunder.pl (рис. 4.25).

Рис. 4.25. Настройка Blue-Thunder

Blue-Thunder-IP-Locator требует определенных Perl-зависимостей. Их можно
автоматически устанавливать при запуске приложения. Так, библиотека Rubymechanize предназначена для автоматизации взаимодействия с сайтами.
Перед запуском Blur-Thunder необходимо выполнить перечисленные ниже
команды. Все эти команды выполняются из корневого каталога.

146  Глава 4



Получение отпечатка и сбор информации

Введите apt-get install libhttp-daemon-ssl perl (рис. 4.26).

Рис. 4.26. Установка libhttp-daemon-ssl perl

Возможно, пакет libhttp-daemon-ssl с помощью команды apt-get install
libhttp-daemon-ssl perl не будет найден. Не переживайте, это в порядке вещей.
В этом случае выполните следующую команду (рис. 4.27).
Apt-cache search WWW::Mechanize

Рис. 4.27. Поиск пакета libhttp-daemon-ssl perl

Выполните команду apt-get install libwww-mechanize-perl (рис. 4.28).

Рис. 4.28. Установка libwww-mechanize-perl

Теперь, когда все зависимости установлены и/или обновлены, мы можем запустить Blue-Thunder-IP-Locator.
Перейдите в терминале в каталог Blue-Thunder-IP-Locator, введите команду
perl blue_thunder.pl и нажмите клавишу Enter (рис. 4.29).

Рис. 4.29. Запуск perl blue_thunder.pl

Чтобы получить подробные сведения о геолокации, введите команду perl
iplocation.pl, имя хоста, IP или домена (все команды нужно вводить, находясь
в каталоге Blue-Thunder-IP-Locator).
Например, чтобы найти информацию о геолокации Google.com, введите следу­
ющий код: perl bluethunder pl www.google.com (рис. 4.30).
Обратите внимание, что в выводе вы найдете название страны, где находится
целевой интернет-провайдер, название города и региона, широту и долготу, вре-

Резюме  147

менную зону и другие данные. Если ввести предоставленные в отчете координаты
(широту и долготу) в поле ввода поискового запроса в «Картах Google», можно на
карте увидеть расположение интересующего вас объекта.

Рис. 4.30. Сведения о геолокации сайта www.google.com

Резюме
В этой главе мы рассмотрели очень важный этап, выполняемый при испытании
на проникновение, — этап сбора информации. Обычно это первый шаг при тестировании на проникновение. На этом этапе следует постараться собрать как можно
больше информации о целевой организации. После того как мы познакомимся
с полученной на этом этапе информацией, нам будет легче, когда мы начнем
атаковать цель. Великий китайский стратег Сунь-цзы очень лаконично изложил
общие задачи OSINT и сбора информации: «Познай себя, познай своего врага, и ты
выиграешь сотню битв без потерь».
Это высказывание полностью описывает цели и задачи тестирования на проникновение.
В главе мы разобрали несколько инструментов, включенных в Kali Linux, которые можно применять для сбора информации. Мы начали с нескольких общедоступных сайтов, которые можно использовать для сбора информации о целевой
организации. Далее было рассказано, как применять инструменты для сбора информации о регистрации домена. Затем мы рассмотрели инструменты, которые можно
использовать для получения информации DNS. Позже мы изучили инструменты
для сбора информации о маршрутизации. В заключительной части главы были
описаны автоматизированные инструменты, в том числе очень мощная поисковая
система для хакеров Shodan.

148  Глава 4



Получение отпечатка и сбор информации

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

Вопросы
1. Что означает аббревиатура OSINT?
2. Какие инструменты можно использовать для запроса информации о регистрации домена?
3. Что представляет собой запись A?
4. Какой инструмент использует поисковая система Google для сбора метаданных
документов в целевом домене?
5. Какие два автоматизированных инструмента сбора информации мы изучили?
6. Какой инструмент можно применять для поиска информации об устройствах,
подключенных к Интернету?

Дополнительные материалы
‰‰Ресурсы OSINT: http://osintframework.com/.
‰‰Документация и руководство пользователя Maltego: https://www.paterva.com/web7/
docs.php.

‰‰Google Cheat Sheet: http://www.googleguide.com/print/adv_op_ref.pdf.
‰‰Shodan для испытателей на проникновение: https://www.defcon.org/images/defcon-18/
dc-18-presentations/Schearer/DEFCON-18-Schearer-SHODAN.pdf.

5

Методы сканирования
и уклонения

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

вых машин (получение отпечатков операционной системы).
‰‰Автоматическое сканирование с помощью Striker.
‰‰Сокрытие с помощью Nipe.

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

Технические условия
Ваша система должна соответствовать следующим техническим условиям.
‰‰Минимальные требования к оборудованию: 6 Гбайт оперативной памяти, четы-

рехъядерный процессор 2,4 ГГц и жесткий диск 500 Гбайт.
‰‰Kali Linux 2018.
‰‰Виртуальная машина для тестирования, например Metasploitable или Bad Store

(см. главу 2).

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

мы не можем проводить на ней тест на проникновение и перейдем к следующей
машине.

150  Глава 5



Методы сканирования и уклонения

‰‰Определить операционную систему, установленную на целевой машине.
‰‰Использовать собранную таким образом информацию в процессе сопоставления

уязвимостей.
Для процесса обнаружения целей мы можем использовать инструменты, предоставляемые Kali Linux. Некоторые из них доступны в меню Information Gathering (Сбор
информации). Другие приложения придется запускать из командной строки.
В этой главе мы опишем лишь несколько важных инструментов из каждой
категории. Инструменты выбраны в зависимости от их функциональности, популярности и поставленных перед исследователем целей.
В этой главе в качестве целевой системы мы используем установленную
ранее Metasploitable 2. Каждую из предложенных команд вы можете
опробовать в этой операционной системе.

Идентификация целевой машины
Инструменты этой категории используются для определения целевых машин, к которым испытатель на проникновение может получить доступ. Прежде чем начать
процесс идентификации, мы должны знать условия и соглашения, предъявляемые
нашим клиентом.
Если в соглашении требуется скрыть все действия по тестированию на проникновение, мы все опыты должны проводить скрытно. Методы скрытности могут
также применяться для тестирования функциональности системы обнаружения
вторжений (IDS) или системы предотвращения вторжений (IPS). Если такие
требования не обговаривались, проведение испытания на проникновение скрывать
не следует.

ping
ping — самый известный и часто применяемый инструмент, который используется
для проверки доступности конкретного хоста. Он работает следующим образом:
сначала целевой машине или сети отправляется пакет эхо-запроса протокола ICMP
(Internet Control Message Protocol — протокол межсетевых управляющих сообщений). Если целевая машина доступна и брандмауэр не блокирует пакет эхо-запроса
ICMP, он вышлет пакет эхо-ответа ICMP.
Запрос проверки связи ICMP и эхо-ответ ICMP — это два сообщения
ICMP управления. Чтобы узнать о других управляющих сообщениях
ICMP, обратитесь по адресу https://en.wikipedia.org/wiki/Internet_Control_
Message_Protocol#Control_messages.

В меню Kali Linux команды ping нет. Чтобы выполнить ее, откройте терминал
и введите ping с нужными параметрами.

Идентификация целевой машины  151

Чтобы выполнить тестирование целевого устройства, введите команду ping
и IP-адрес целевого устройства (рис. 5.1).

Рис. 5.1. Команда ping выполняется

По умолчанию этот тест будет идти непрерывно. Чтобы его остановить, нажмите
сочетание клавиш Ctrl+C.
Инструмент ping имеет несколько параметров. Ниже показаны наиболее популярные.
‰‰-c (счет) — число отправленных эхо-запросов.
‰‰-I (IP-адрес интерфейса) — это IP-адрес целевой машины. Аргументом может

быть числовой IP-адрес (например, 192.168.56.102) или имя устройства (например, eth0). Данный параметр можно применять для проверки связи с локальным адресом IPv6.
‰‰-s (размер пакета) — указывает количество отправляемых байтов данных.
По умолчанию размер пакета составляет 56 байт, что в сочетании с 8 байтами
данных заголовка ICMP преобразуется в 64 байта данных ICMP.
Посмотрим, как эти параметры применяются на практике. Предположим, испытание на проникновение вы начинаете с внутреннего теста. Клиент предоставил
вам список IP-адресов целевых серверов и доступ к локальной сети по кабелю.
Первое, что вам следует сделать перед запуском основного теста на проникновение, — проверить, доступны ли с вашей машины целевые серверы. Для этого вам
вполне подойдет команда ping.

152  Глава 5



Методы сканирования и уклонения

Допустим, IP-адрес целевого сервера — 172.16.43.156, в то время как IP-адрес
вашего компьютера — 172.16.43.150. Для проверки доступности целевого сервера
введите следующую команду:
ping -c 1 172.16.43.156

Вместо IP-адреса целевой машины ping также принимает имена хостов.

На рис. 5.2 показан результат, который мы получим после выполнения этой
команды.

Рис. 5.2. Результат выполнения команды ping

Мы видим, что пакет эхо-запроса ICMP был передан назначению (IP-адрес =
= 172.16.43.156). В ответ компьютеру (IP-адрес = 172.16.43.150) был возвращен
эхо-ответ. На передачу пакета, прием целевым компьютером и обратный ответ
было потрачено 0,869 миллисекунды. Потери пакетов нет.
Посмотрим, какие сетевые пакеты передаются и принимаются нашей машиной.
Для захвата пакетов мы используем анализатор сетевого протокола Wireshark
(рис. 5.3).

Рис. 5.3. Анализируем захваченные пакеты

На рис. 5.3 видно, что наш компьютер (172.16.43.150) отправил целевому компьютеру (172.16.43.156) один пакет эхо-запроса ICMP. Целевой компьютер на этот
эхо-запрос передал нашей машине пакет с эхо-ответом. Более подробно Wireshark
мы рассмотрим в главе 9.
Если на целевом компьютере используется IP-адрес протокола IPv6, например
fe80::20c:29ff:fe:18:f:08, то для проверки его доступности мы можем воспользоваться инструментом ping6. Вам для работы с локальным адресом следует добавить
в команду параметр -I:
# ping6 -c 1 fe80::20c:29ff:fe18:f08 -I eth0
PING fe80::20c:29ff:fe18:f08(fe80::20c:29ff:fe18:f08) from
fe80::20c:29ff:feb3:137 eth0: 56 data bytes
64 bytes from fe80::20c:29ff:fe18:f08: icmp_seq=1 ttl=64 time=7.98 ms
--- fe80::20c:29ff:fe18:f08 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 7.988/7.988/7.988/0.000 ms

Идентификация целевой машины  153

На рис. 5.4 показаны пакеты, отправленные для выполнения запроса ping6.
Здесь видно, что ping6 использует для запроса и ответа протокол ICMPv6.

Рис. 5.4. Выполнение запроса ping6

Дляблокировки ping-запроса нужно настроить брандмауэр так, чтобы он отвечал на эхо-запросы только с определенного хоста, а эхо-запросы с остальных
хостов игнорировал.

fping
Разница между ping и fping заключается в том, что инструмент fping может отправлять ping нескольким хостам одновременно. В командной строке можно указать
несколько целевых компьютеров или использовать файл, содержащий хосты для
проверки связи.
В fping по умолчанию ping отслеживает ответ от целевого компьютера. Если целевой компьютер отправляет ответ, он будет отмечен и удален из списка назначения. Если целевой компьютер не отвечает в течение определенного срока, он будет
помечен как недоступный. По умолчанию fping попытается отправить три пакета
эхо-запроса ICMP для каждой цели.
Для доступа к fping используется следующая команда:
# fping -h

В ответ мы получим инструкцию по использованию этой команды и доступные
параметры.
Следующие сценарии дадут вам представление, как можно использовать fping.
Если нам нужно одновременно опросить несколько целевых машин с IP-адресами
72.16.43.156, 172.16.43.150 и 172.16.43.155, мы можем ввести следующую команду:
fping 172.16.43.156 172.16.43.150 172.16.43.155

Ниже показан результат ее выполнения:
# fping 172.16.43.156 172.16.43.150 172.16.43.155
172.16.43.156 is alive
172.16.43.150 is alive
ICMP Host Unreachable from 172.16.43.150 for ICMP
172.16.43.155
ICMP Host Unreachable from 172.16.43.150 for ICMP
172.16.43.155
ICMP Host Unreachable from 172.16.43.150 for ICMP
172.16.43.155
ICMP Host Unreachable from 172.16.43.150 for ICMP
172.16.43.155
172.16.43.155 is unreachable

Echo sent to
Echo sent to
Echo sent to
Echo sent to

154  Глава 5



Методы сканирования и уклонения

Мы также можем генерировать список хостов автоматически, без определения
один за другим IP-адресов и идентификации работающих и отвечающих на запросы компьютеров. Предположим, мы хотим найти включенные и отвечающие на
запросы хосты в сети 172.16.43.0/24. Для этого следует использовать параметр -g
и задать сеть для проверки, как в команде:
# fping -g 172.16.43.0/24

Если мы хотим изменить количество попыток проверки связи, нужно использовать параметр -r (ограничение повторных попыток), как показано далее. По умолчанию инструмент выполняет три попытки отправки пакетов.
fping -r 1 -g 172.16.43.149 172.16.43.160

На что мы получим такой ответ:
# fping -r 1 -g 172.16.43.149 172.16.43.160
172.16.43.150 is alive
172.16.43.156 is alive
172.16.43.149 is unreachable
172.16.43.151 is unreachable
172.16.43.152 is unreachable
172.16.43.153 is unreachable
172.16.43.154 is unreachable
172.16.43.155 is unreachable
172.16.43.157 is unreachable
172.16.43.158 is unreachable
172.16.43.159 is unreachable
172.16.43.160 is unreachable

Чтобы собрать полную статистику, добавьте параметр -s:
fping -s www.yahoo.com www.google.com www.msn.com

На эту команду мы получим следующий ответ:
#fping -s www.yahoo.com www.google.com www.msn.com
www.yahoo.com is alive
www.google.com is alive
www.msn.com is alive
3 targets
3 alive
0 unreachable
0 unknown addresses
0 timeouts (waiting for response)
3 ICMP Echos sent
3 ICMP Echo Replies received
0 other ICMP received
28.8 ms (min round trip time)
30.5 ms (avg round trip time)
33.6 ms (max round trip time)
0.080 sec (elapsed real time)

Идентификация целевой машины  155

hping3
Средство hping3 представляет собой генератор и анализатор сетевых пакетов командной строки. Благодаря возможности генерировать пользовательские сетевые
пакеты hping3 можно задействовать для протокола TCP/IP при выполнении таких
тестов, как сканирование портов, проверка правил брандмауэра и тестирование
производительности сети.
Как утверждает разработчик, есть еще несколько вариантов использования
hping3:
‰‰тестирование правил брандмауэра;
‰‰тестирование IDS;
‰‰использование известных уязвимостей в стеке TCP/IP.

Чтобы получить доступ к hping3, перейдите в консоль и введите команду hping3.
Вы можете задавать команды hping3 несколькими способами: введя в командную
строку, через интерактивную оболочку или с помощью сценария.
Без заданных в командной строке параметров hping3 отправляет нулевой TCPпакет на порт под номером 0. Для выбора другого протокола укажите в командной
строке следующие параметры.
Короткий параметр

Длинный параметр Значение

-0

--raw-ip

Отправляет необработанные IP-пакеты

-1

--icmp

Отправляет пакеты ICMP

-2

--udp

Передает пакеты UDP

-8

--scan

Выбирает режим сканирования

-9

--listen

Включает режим прослушивания

При использовании протокола TCP мы можем применять TCP-пакеты без каких-либо дополнительных флагов (это предусмотрено по умолчанию) или выбрать
один из следующих вариантов.
Параметр

Имя флага

-S

sun

-A

ack

-R

rst

-F

fin

-P

psh

-U

urg

-X

xmas: flags fin, urg, psh set

-Y

ymas

156  Глава 5



Методы сканирования и уклонения

Рассмотрим возможные случаи использования hping3.
Отправьте один пакет эхо-запроса ICMP на машину с IP-адресом 192.168.56.101.
Для этого укажите следующие параметры: -1 (чтобы выбрать протокол ICMP)
и -c1 (для установки набора пакетов в один пакет):
hping3 -1 172.16.43.156 -c 1

В ответ мы получим следующее:
# hping3 -1 172.16.43.156 -c 1
HPING 172.16.43.156 (eth0 172.16.43.156): icmp mode set, 28 headers + 0 data
bytes
len=46 ip=172.16.43.156 ttl=64 id=63534 icmp_seq=0 rtt=2.5 ms
--- 172.16.43.156 hping statistic --1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 2.5/2.5/2.5 ms

Из полученных выходных данных мы можем определить, что целевая машина
подключена к сети, работает и отвечает на эхо-запрос ICMP.
Чтобы проверить, правильны ли наши выводы, мы с помощью tcpdump захватили трафик. Захваченные пакеты показаны на рис. 5.5.

Рис. 5.5. Пакеты, захваченные с помощью tcpdump

Мы видим, что цель ответила пакетом эхо-ответа ICMP.
Мы можем вводить параметры не только в командную строку. Инструмент
hping3 способен работать и в интерактивном режиме. Запустите терминал и введите в командную строку hping3. Появится приглашение, в котором можно вводить
Tcl-команды.
Чтобы получить больше информации по командам Tcl, обратитесь к следующим ресурсам: http://www.invece.org/tclwise/ и http://wiki.tcl.tk/.

Ниже приведен соответствующий сценарий Tcl:
hping3> hping send {ip(daddr=172.16.43.156)+icmp(type=8,code=0)}

Если терминал не запущен, откройте окно терминала и для получения ответа
от целевого сервера введите следующую команду:
hping recv eth0

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

Идентификация целевой машины  157

Рис. 5.6. Ответ на отправленный запрос

Можно также использовать hping3 для проверки правил брандмауэра. Предположим, у вас есть следующие правила брандмауэра.
‰‰Принимать любые TCP-пакеты, направленные на порт 22 (SSH).
‰‰Принимать любые TCP-пакеты, относящиеся к установлению соединения.
‰‰Отбросить любые другие пакеты.

Чтобы проверить эти правила, для передачи пакета эхо-запроса ICMP введите
в hping3 следующую команду:
hping3 -1 172.16.43.156 -c 1

В ответ вы получите такой код:
# hping3 -1 172.16.43.156 -c 1
HPING 172.16.43.156 (eth0 172.16.43.156): icmp mode set, 28 headers + 0 data bytes
--- 172.16.43.156 hping statistic --1 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

Мы видим, что целевая машина не ответила на наш ping-запрос.
Отправьте TCP-пакет на порт 22 с флагом SYN. В ответ вы получите результат,
показанный на рис. 5.7.

Рис. 5.7. Ответ на запрос, отправленный на порт 22 с флагом SYN

На рис. 5.7 видно, что брандмауэр целевой машины позволяет пакету SYN достигать порта 22. Давайте проверим, разрешено ли UDP-пакету достигать порта 22
(рис. 5.8).

Рис. 5.8. Проверяем, разрешено ли UDP-пакету достигать порта 22

158  Глава 5



Методы сканирования и уклонения

На рис. 5.8 видно, что брандмауэр целевой машины не позволяет UDP-пакету
достичь порта 22.
Возможности hping3 не ограничиваются вышеописанными операциями. В этой
главе мы рассмотрели только несколько возможностей применения этого инструмента. Если вы хотите узнать больше, обратитесь к документации hping3, расположенной по адресу http://wiki.hping.org.

Получение отпечатков ОС
После того как мы установили, что целевая машина нам отвечает, мы можем узнать,
какая операционная система на ней используется. Этот метод широко известен как
снятие отпечатков пальцев (fingerprinting) операционной системы. Существует два
метода снятия отпечатков пальцев: активный и пассивный.
При выполнении активного метода приложение отправляет целевой машине
сетевые пакеты, а затем анализирует полученный ответ и определяет, какая операционная система установлена. Преимущество такого метода заключается в том, что
процесс проходит быстро. Но есть и недостатки: например, целевая машина может
заметить попытку получить информацию о своей операционной системе.
Чтобы избежать обнаружения, следует воспользоваться пассивным методом
снятия отпечатков ОС. Этот метод был впервые разработан Михалом Залевски
(Michal Zalewsky), когда он создавал инструмент под названием p0f. Основным
преимуществом метода является то, что при работе этого инструмента уменьшается
взаимодействие между целевой и испытательной машиной и скрытность снятия
отпечатков значительно увеличивается. Наиболее существенный недостаток пассивного метода в том, что на процесс снятия отпечатков затрачивается гораздо
больше времени.
В этом разделе мы рассмотрим несколько инструментов, которые можно использовать для снятия отпечатков ОС.
p0f. Инструмент p0f предназначен для пассивного снятия отпечатков операционной системы. Его можно применять для идентификации ОС на следующих
компьютерах.
‰‰Машины, которые подключаются к вашей испытательной машине (режим SYN,

выбранный по умолчанию).
‰‰Машины, к которым подключаетесь вы (режим SYN + ACK).
‰‰Машины, к которым не удается подключиться (режим RST+).
‰‰Машины, связь с которыми вы можете контролировать.

Инструмент p0f анализирует TCP-пакеты, отправленные в ходе сетевого обмена. Далее собирается статистика специальных пакетов, которые по умолчанию
не стандартизированы ни одной корпорацией. Например, ядро Linux использует
64-байтовую ping-датаграмму, а Windows — 32-байтовую ping-датаграмму или

Получение отпечатков ОС  159

значение времени жизни пакета (TTL). Для Windows значение TTL равно 128, а для
Linux зависит от дистрибутива. Эту информацию p0f применяет для определения
операционной системы удаленного компьютера.
При использовании входящего в состав Kali Linux инструмента p0f мы
не смогли снять отпечатки операционной системы на удаленной машине. Мы выяснили, что в инструменте p0f не обновлена база данных
отпечатков. К сожалению, нам не удалось найти последнюю версию
базы данных отпечатков. Поэтому мы задействовали p0f версии 3.06b.
Для использования этой версии скачайте файл TARBALL (http://lcamtuf.co­
redump.cx/p0f3/releases/p0f-3.06b.tgz) и скомпилируйте код, запустив
сценарий build.sh. По умолчанию файл базы данных отпечатков (p0f.fp)
располагается в текущем каталоге.
Если вы хотите изменить путь хранения файла и поместить его, например, в каталог /etc/p0f/p0f.fp, отредактируйте файл config.h и перекомпилируйте p0f. Если путь хранения не изменить, то для определения
расположения файла базы данных отпечатков потребуется использовать
параметр -f.

Чтобы получить доступ к p0f, откройте консоль и введите команду p0f -h .
Она выведет на экран инструкцию по использованию приложения и описание
всех параметров. Воспользуемся инструментом p0f для идентификации операционной системы, установленной на удаленной машине, к которой мы подключимся.
Для этого нужно ввести в консоли следующую команду:
p0f -f /etc/p0f/p0f.fp -o p0f.log

Команда будет читать базу данных из файла и сохранит сведения в файле p0f.log.
Затем вы увидите следующую информацию:
--[+]
[+]
[+]
[+]
[+]
[+]

p0f 3.07b by Michal Zalewski --Closed 1 file descriptor.
Loaded 320 signatures from '/usr/share/p0f/p0f.fp'.
Intercepting traffic on default interface 'eth0'.
Default packet filtering configured [+VLAN].
Log file 'p0f.log' opened for writing.
Entered main event loop.

Теперь необходимо выполнить сетевые операции по созданию TCP-подключения,
например просмотр удаленного компьютера или подключение целевого удаленного компьютера к нашему компьютеру. Для примера мы установили подключение
к сайту HTTP, расположенному на компьютере 2.
При успешном снятии отпечатков с помощью p0f информацию об операционной системе целевой машины вы увидите в консоли. Кроме того,
она сохранится в файле журнала (p0f.log).

160  Глава 5



Методы сканирования и уклонения

Это сокращенный вариант того, что будет отображено в консоли:
.-[ 172.16.43.150/41522 -> 172.16.43.156/80 (syn+ack) ]|
| server
= 172.16.43.156/80
| os
= Linux 2.6.xе
| dist
= 0
| params
= none
| raw_sig = 4:64+0:0:1460:mss*4,5:mss,sok,ts,nop,ws:df:0

На рис. 5.9 показан файл журнала с полученной информацией.

Рис. 5.9. Информация, записанная в журнал

Основываясь на предыдущем результате, мы узнали, что целью является операционная система Linux 2.6.

Изучаем протокол TCP/IP  161

На рис. 5.10 приводятся данные, полученные с целевого компьютера.

Рис. 5.10. Информация об ОС, полученная с целевого компьютера

Сравнивая данные, мы поймем, что p0f правильно получил информацию об
ОС целевого компьютера. Удаленная машина работает под управлением Linux
версии 2.6.
Завершите работу p0f, нажав сочетание клавиш Ctrl+C.

Введение в сканирование портов
Самый простой метод сканирования портов тот, что используется на целевых
компьютерах для определения состояния портов протоколов TCP и UDP. Открытый порт означает, что в целевом компьютере существует сетевая служба, которая
прослушивает порт, и она доступна. Закрытый порт показывает, что службы, прослушивающей данный порт, нет.
После того как состояние порта будет определено, злоумышленник проверит
версию используемого сетевой службой программного обеспечения и обнаружит
уязвимости этой версии. Предположим, что сервер A имеет программное обеспечение веб-сервера версии 1.0. Несколько дней назад был выпущен бюллетень по
безопасности. Информация об уязвимости в веб-серверах версии 1.0 была опубликована. Если злоумышленник узнает, какая версия веб-сервера используется,
информация об уязвимости может быть задействована для атаки на этот сервер.
Это простой пример того, что может сделать злоумышленник после получения
информации о доступных на компьютере службах.
Прежде чем мы углубимся в мир сканирования портов, немного обсудим теорию
протоколов TCP/IP.

Изучаем протокол TCP/IP
В состав протоколов TCP/IP включены десятки различных протоколов. Наиболее
важные из них — TCP и IP. Протокол IP обеспечивает адресацию, маршрутизацию
датаграмм и другие функции для подключения одной машины к другой. Протокол
TCP отвечает за управление соединениями и обеспечивает надежную передачу
данных между процессами на двух машинах. Протокол IP в модели Open Systems
Interconnection (OSI) расположен на сетевом уровне 3, тогда как TCP — на транспортном уровне (уровень 4) OSI.

162  Глава 5



Методы сканирования и уклонения

Кроме TCP, вторым ключевым протоколом на транспортном уровне является
UDP. Конечно, вы можете спросить, в чем разница между этими двумя протоколами. Если коротко, TCP имеет следующие характеристики.
‰‰Это протокол, ориентированный на подключение. Прежде чем TCP присту-

пит к передаче данных, клиент и сервер устанавливают между собой TCPсоединение, используя механизм трехстороннего подтверждения связи.
yy Клиент инициирует соединение, отправляя на сервер пакет, содержащий
флаг SYN (synchronize). Обратите внимание: в поле порядкового номера
сегмента SYN находится начальный порядковый номер (Initial Sequence Number, ISN). Этот номер выбирается случайным образом.
yy Сервер отвечает собственным сегментом SYN, содержащимся в ISN. Сервер
подтверждает SYN клиента, отправляя флаг ACK (подтверждение), хранящий
значение клиентского ISN + 1.
yy Клиент подтверждает полученное от сервера сообщение, отправив флаг
ACK, содержащий серверный ISN + 1. После этого клиент и сервер могут
обмениваться данными.
yy Чтобы прервать соединение, TCP должен выполнить такие шаги:
1) клиент отправляет пакет, содержащий набор флагов FIN (finish);
2) сервер передает пакет ACK (подтверждение), чтобы сообщить клиенту,
что сервер получил пакет FIN;
3) после того как сервер приложений подготовился к закрытию, он отправляет пакет FIN;
4) затем клиент для подтверждения получения пакета FIN сервера отправляет пакет ACK. Обычно каждая сторона (клиент или сервер) может
завершить связь, отправив пакет FIN.
‰‰Это надежный протокол. TCP использует порядковый номер и подтверждение для идентификации пакетных данных. Получатель отправляет подтве­
рждение после получения пакета. Если пакет потерян или подтверждения от
получателя пакета нет, TCP еще раз автоматически ретранслирует этот пакет.
Если пакеты поступают не по порядку, TCP изменит порядок пакетов перед
отправкой приложению.
‰‰Приложения, которым необходимо передавать файлы или важные данные, используют протокол TCP. Это такие приложения, как, например, протокол HTTP
и протокол FTP.
Протокол UDP имеет противоположные протоколу TCP характеристики.
‰‰UDP не устанавливает соединение. Иначе говоря, для отправки данных клиенту

и серверу в начале передачи не нужно устанавливать UDP-соединение.
‰‰Протокол предпримет все имеющиеся у него способы, чтобы отправить пакет

в пункт назначения. Если же пакет потеряется, UDP не будет отправлять его
повторно.

Тонкости форматов сообщений TCP и UDP  163

Протокол UDP используют приложения, для которых потеря некоторых пакетов не является критической. Это такие приложения, как потоковое видео и другие
мультимедийные приложения. Другими известными приложениями, задейству­
ющими UDP, являются система доменных имен (DNS), протокол DHCP и протокол
SNMP (Simple Network Management Protocol).
Для взаимодействия приложений применяются порты. При адресации указываются номера портов, через которые и происходит передача данных. Программный
процесс прослушивает определенный порт на сервере, а клиентская машина посылает данные на порт сервера, где он должен быть обработан. Номера портов имеют
16-разрядный адрес, и число может варьироваться от 0 до 65 535. Чтобы избежать
хаотичного использования портов, предусмотрены следующие универсальные соглашения о диапазонах их номеров.
‰‰Известные номера портов (от 0 до 1023): номера портов этого диапазона заре-

зервированы и обычно используются серверными процессами, выполняемыми
системным администратором или привилегированным пользователем. Например, серверные приложения занимают следующие номера портов: SSH (порт 22),
HTTP (порт 80), HTTPS (порт 443).
‰‰Зарегистрированные номера портов (от 1024 до 49 151): чтобы зарегистрировать

один из этих номеров портов для своего клиент-серверного приложения, пользователям следует отправить запрос в Internet Assigned Number Authority (IANA).
‰‰Частные, или динамические, номера портов (49 152–65 535): любой пользова-

тель может задействовать в этом диапазоне номера портов, не регистрируя их
в IANA.
Теперь, когда мы кратко обсудили различия между TCP- и UDP-протоколами,
опишем форматы сообщений TCP и UDP.

Тонкости форматов сообщений TCP и UDP
Сообщение TCP называется сегментом. Сегмент TCP состоит из заголовка и области данных. Заголовок TCP часто имеет размер 20 байт (без параметров). Его можно описать с помощью схемы, показанной на рис. 5.11.
Ниже приводится краткое описание каждого поля.
‰‰Source Port (Порт источника) и Destination Port (Порт назначения) имеют длину

по 16 бит. Порт источника — это порт на машине, передающей пакет. Порт назначения — порт на целевой машине, принимающей данный пакет.

‰‰Sequence Number (Порядковый номер) (32 бита) при нормальной передаче хранит

порядковый номер первого байта данных.

‰‰Acknowledgment Number (Номер подтверждения) (32 бита) содержит порядковый

номер отправителя, увеличенный на единицу.

‰‰H. Len. (4 бита) — размер TCP-заголовка в 32-разрядных словах.

164  Глава 5



Методы сканирования и уклонения

Рис. 5.11. Описание заголовка протокола TCP

‰‰Rsvd. — зарезервирован для использования. Это четырехбитное поле с нулевым

значением.

‰‰Control Bits или Control flags (Биты управления) — содержит восемь однобитных

флагов. В первоначальной спецификации (RFC 793) (можно загрузить по адресу http://www.ietf.org/rfc/rfc793.txt) TCP имеет шесть флагов.

‰‰SYN — флаг синхронизации порядковых номеров. Используется во время уста-

новки сеанса.
‰‰ACK — указывает, что поле подтверждения в заголовке TCP является значимым.

Если в пакете содержится этот флаг, то он является подтверждением ранее
полученного пакета.
‰‰RST — сбрасывает соединение.
‰‰FIN — указывает, что у стороны больше нет данных для отправки, и использу-

ется для корректного сброса соединения.
‰‰PSH — указывает, что эти данные буферизованы и должны быть переданы при-

ложению без ожидания дополнительных данных.
‰‰URG — указывает, что это важное поле срочного указателя в заголовке TCP.

Срочный указатель относится к важным номерам последовательности данных.
Позже в RFC 3168 были добавлены еще два расширенных флага. Его можно
загрузить по адресу http://www.ietf.org/rfc/rfc3168.txt.
yy CWR (Congestion Window Reduced — уменьшенное окно перегрузки) — данный
флаг сообщает получателю данных, что очередь ожидающих отправки пакетов
уменьшена из-за перегрузки сети.
yy ECN-Echo (Explicit Connection Notification-Echo — явное уведомление об эхоподключении) — означает, что сетевое подключение перегружено.
‰‰Window Size (Размер окна) (16 бит) указывает количество байтов, которые при-

нимающая сторона готова принять.

Тонкости форматов сообщений TCP и UDP  165
‰‰Checksum (Контрольная сумма) (16 бит) используется для проверки на ошибки

заголовка TCP и данных.

Флаги могут быть установлены независимо друг от друга.
Чтобы получить дополнительные сведения о TCP, обратитесь к RFC 793
и RFC 3168.

При сканировании портов с помощью отправленного на целевую машину пакета
SYN злоумышленник может столкнуться со следующими проблемами.
‰‰Целевая машина отвечает пакетом SYN + ACK. Если порт открыт, мы получим

этот пакет. Такое поведение определено в спецификации TCP (RFC 793) и обозначает, что если порт открыт, то пакет SYN должен отправляться с пакетом
ACK (SYN + ACK), не рассматривая полезную нагрузку самого пакета SYN.
‰‰Если порт закрыт, целевая машина отправляет обратно пакет с набором битов

RST и ACK.
‰‰Если порт недоступен и, скорее всего, заблокирован межсетевым экраном, це-

левая машина передает сообщение ICMP.
‰‰Если от целевой машины ответ не поступает, то, скорее всего, сетевая служба

не прослушивает выбранный порт или брандмауэр блокирует наш пакет SYN
в автоматическом режиме.
Для испытателя на проникновение представляет интерес ситуация, когда порт открыт. Это значит, что на нем есть доступный сервис, который можно тестировать.
Для более эффективной атаки необходимо понять нюансы поведения TCP-портов.
Ниже мы расскажем о различных вариантах поведения UDP-портов, которые
будут обнаружены при сканировании. Но сначала следует рассмотреть заголовок
UDP (рис. 5.12).

Рис. 5.12. Описание заголовка протокола UDP

Ниже приводится краткое описание каждого поля в заголовке UDP.
Как и заголовок TCP, заголовок UDP имеет исходный порт и порт назначения,
каждый из которых имеет длину 16 бит. Исходный порт — это порт на отправляющей машине, которая передает пакет, в то время как порт назначения — порт на
целевой машине, которая получает пакет.

166  Глава 5



Методы сканирования и уклонения

‰‰UDP Length (Длина UDP) — длина заголовка UDP.
‰‰UDP Checksum (Контрольная сумма UDP) (16 бит) используется для проверки

на ошибки заголовка UDP и данных.

Обратите внимание, что в заголовке UDP нет полей «Порядковый номер», «Номер подтверждения» и «Управляющие биты».

Во время сканирования UDP-портов на целевой машине злоумышленник может
столкнуться со следующими ситуациями.
‰‰Целевая машина отвечает пакетом UDP. Если мы этот пакет получим, значит,

данный порт открыт.
‰‰Целевой компьютер отправляет относительно тестируемого порта сообщение
ICMP. Это значит, что порт закрыт. Однако если отправленное сообщение
не является недоступным сообщением ICMP, это означает, что порт фильтруется брандмауэром.
‰‰Если целевая машина в ответ не посылает никаких пакетов, это может указывать
на одну из следующих ситуаций.
‰‰Порт закрыт.
‰‰Входящий UDP-пакет заблокирован.
‰‰Ответ заблокирован.
Сканирование UDP-портов менее надежно по сравнению со сканированием
TCP-портов, так как UDP-порт может быть открыт, но служба, прослушивающая
этот порт, ищет конкретные полезные данные UDP и не отправляет никаких ответов.
Теперь, когда мы кратко рассмотрели теорию сканирования портов, применим
ее на практике. В следующих разделах мы разберем несколько инструментов, которые можно использовать для выполнения сетевого сканирования.

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

Сетевой сканер  167

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

Что такое Nmap
Nmap — это многофункциональный сканер портов, популярный в сообществе по
IT-безопасности. Приложение написано и поддерживается Федором (Fyodor).
Nmap — очень гибкий и качественный инструмент, который должен быть у каждого
тестера на проникновение.
Nmap выполняет различные функции.
‰‰Обнаружение хостов. Nmap можно использовать для поиска работающих хо-

стов в целевых системах. По умолчанию Nmap для обнаружения хоста отправляет эхо-запрос ICMP, пакет TCP SYN на порт 443, пакет TCP ACK на порт 80
и запрос метки времени ICMP.
‰‰Обнаружение службы/версии. После обнаружения портов Nmap может дополнительно проверить протокол службы, имя и номер версии приложения,
используемого на целевом компьютере.
‰‰Обнаружение операционной системы. Nmap отправляет ряд пакетов на удаленный хост и проверяет ответы. Затем он сравнивает эти ответы со своей базой
данных отпечатков операционной системы и, если есть совпадение, выводит
подробную информацию. Если Nmap не может определить операционную систему, он предоставляет URL-адрес, на который можно отправить отпечаток
для обновления базы данных отпечатков ОС. Конечно, если вы знаете операционную систему, используемую в целевой системе, вам следует сразу отправить
отпечаток.
‰‰Трассировка сети. Это действие выполняется для определения порта и протокола, которые, вероятнее всего, достигнут целевой системы. Трассировка Nmap
начинается с высокого значения TTL и уменьшается до тех пор, пока значение
TTL не достигнет нуля.
‰‰Nmap Scripting Engine. С помощью этой функции Nmap может быть расширен.
Если вы хотите добавить в сканер не включенную по умолчанию проверку,
напишите ее с помощью обработчика сценариев Nmap. В настоящее время проводятся проверки на наличие уязвимостей в сетевых службах и перечисление
ресурсов в целевой системе.
Всегда рекомендуется проверять наличие новых версий. Если новая версия
Nmap для Kali Linux найдена, для обновления выполните следующие команды:
apt-get update
apt-get install nmap

168  Глава 5



Методы сканирования и уклонения

Запустить Nmap можно двумя способами. Первый — открыть меню Applications
(Приложения), зайти в подменю Information Gathering (Сбор информации) и щелк­
нуть на названии нужного приложения. Второй способ — запустить терминал
и ввести в консоль команду:
nmap

Будет запущен сканер Nmap, и вы увидите описание этого приложения. Возможно, для новичка описание покажется сложным.
К счастью, для сканирования удаленной машины требуется только один параметр. Это IP-адрес целевой машины или, если DNS правильно настроен, имя
целевого хоста. Данная операция выполняется с помощью следующей команды:
nmap 172.16.43.156

Ниже приведен однозначный результат сканирования:
Nmap scan report for 172.16.43.156
Host is up (0.00025s latency).
Not shown: 977 closed ports
PORT
STATE SERVICE
21/tcp
open
ftp
22/tcp
open
ssh
23/tcp
open
telnet
25/tcp
open
smtp
53/tcp
open
domain
80/tcp
open
http
111/tcp open
rpcbind
139/tcp open
netbios-ssn
445/tcp open
microsoft-ds
512/tcp open
exec
513/tcp open
login
514/tcp open
shell
1099/tcp open
rmiregistry
1524/tcp open
ingreslock
2049/tcp open
nfs
2121/tcp open
ccproxy-ftp
3306/tcp open
mysql
5432/tcp open
postgresql
5900/tcp open
vnc
6000/tcp open
X11
6667/tcp open
irc
8009/tcp open
ajp13
8180/tcp open
unknown
MAC Address: 00:0C;29:18:0F:08 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 1.7 seconds

Из этого вывода мы видим, что целевая машина очень уязвима для атаки, так
как у нее много открытых портов.

Сетевой сканер  169

Прежде чем мы продолжим использовать Nmap, посмотрим на состояния
портов, которые могут быть идентифицированы сканером. Существует шесть состояний портов.
‰‰Open (Открыт) — означает, что существует приложение, принимающее TCP-

подключение, UDP-датаграмму или ассоциацию SCTP.

‰‰Closed (Закрыт) — хотя порт и доступен, его не слушает ни одно приложение.
‰‰Filtered (Фильтр) — Nmap не может определить, открыт порт или нет, потому что

существует устройство фильтрации пакетов, блокирующее запросы.

‰‰Unfiltered (Нефильтрованный) — означает, что порт доступен, но Nmap не может

определить, открыт он или закрыт.

‰‰Open|Filtered (Открыт|Отфильтрован) — Nmap не может определить, открыт

порт или отфильтрован. Так происходит, когда сканирование открытых портов
не дает ответа. Может быть достигнуто путем установки межсетевого экрана
для сбрасывания пакетов.

‰‰Closed|Filtered (Закрыт|Отфильтрован) — Nmap не может определить, закрыт порт

или отфильтрован.

Далее мы опишем несколько вариантов, которые обычно используются во время
тестирования на проникновение, и рассмотрим их применение на практике.

Спецификация цели
Все команды Nmap мы будем выполнять в командной строке. Мы также рассмотрим параметры и аргументы спецификации целевого хоста. Вместо имени хоста
рекомендуем использовать его IP-адрес. В таком случае Nmap не нужно получать
разрешение DNS, что ускоряет процесс сканирования портов.
В текущей версии Nmap поддерживает следующие спецификации IPv4-адресов.
‰‰Поддерживается один узел, например 172.16.43.156.
‰‰С помощью нотации CIDR поддерживается вся сеть смежных узлов, например

172.16.43.0/24. Эта спецификация будет включать 256 IP-адресов в диапазоне
от 172.16.43.0 до 172.16.43.255.
‰‰Поддерживается адресация октетного диапазона, например 172.16.2–4,6.1.

Эта адресация будет включать четыре IP-адреса: 172.16.2.1, 172.16.3.1, 172.16.4.1
и 172.16.6.1.
‰‰Поддерживается множество спецификаций хоста, например 172.16.43.1,

172.168.3–5,9.1.
Для IPv6-адреса Nmap поддерживает только полный формат IPv6 и имя хоста,
например fe80::a8bb:ccff:fedd:eeff%eth0.

170  Глава 5



Методы сканирования и уклонения

Кроме целевой спецификации, полученной из командной строки, Nmap с помощью
параметра -iL принимает целевое определение из текстового
файла. Эта функция полезна, если у вас уже есть IP-адреса из другой программы.
Убедитесь, что записи в этом файле соответствуют целевому формату, поддерживаемому сканером Nmap. Записи должны быть разделены пробелами, табуляцией или символами перехода на новую строку.
Следующий код демонстрирует пример такого файла:
172.16.1.1-254
172.16.2.1-254

Теперь просканируем сеть 172.16.430/24. Наша задача — увидеть пакеты, отправленные Nmap. Для мониторинга отправленных пакетов можно использовать
утилиту захвата пакетов, например tcpdump.
Запустите консоль и введите следующую команду:
tcpdump -nnX tcp and host 172.16.43.150

IP-адрес 172.16.43.150 принадлежит нашей машине, на которой запускается
Nmap. Необходимо настроить его в соответствии с конфигурацией.
На этом же компьютере запустите еще одну консоль и введите следующую
команду:
nmap 172.16.43.0/24

В консоли tcpdump вы увидите следующее:
22:42:12.107532 IP 172.16.43.150.49270 >172.16.43.156.23: Flags [S],
seq 239440322, win 1024, options [mss 1460], length 0
0x0000: 4500 002c eb7f 0000 3006 ad2e c0a8 3866 E..,....0.....8f
0x0010: c0a8 3867 c076 0017 0e45 91c2 0000 0000 ..8g.v...E......
0x0020: 6002 0400 4173 0000 0204 05b4
`...As......

Из информации о пакете мы видим, что атакующая машина отправила пакет
с флагом SYN с порта 49 270 на порт 23 целевой машины, предназначенный для
Telnet. Если Nmap запускается привилегированным пользователем, например root
в Kali Linux, то флаг SYN устанавливается по умолчанию.
На рис. 5.13 показан пакет, отправленный атакующей машиной на другие машины и порты в целевой сети.
Если удаленный компьютер ответит, вывод будет следующим:
22:36:19.939881 IP 172.16.43.150.1720 >172.16.43.156.47823: Flags [R.], seq 0,
ack 1053563675, win 0, length 0
0x0000: 4500 0028 0000 4000 4006 48b2 c0a8 3867 E..(..@.@.H...8g
0x0010: c0a8 3866 06b8 bacf 0000 0000 3ecc 1b1b ..8f........>...
0x0020: 5014 0000 a243 0000 0000 0000 0000
P....C........

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

Сетевой сканер  171

Рис. 5.13. Анализ пакета

Если же порт открыт, вы увидите следующий сетевой трафик:
22:42:12.108741 IP 172.16.43.156.23 >172.16.43.150.49270:Flags [S.], seq
1611132106, ack 239440323, win 5840,options [mss 1460], length 0
0x0000: 4500 002c 0000 4000 4006 48ae c0a8 3867
E..,..@.@.H...8g
0x0010: c0a8 3866 0017 c076 6007 ecca 0e45 91c3
..8f...v`....E..
0x0020: 6012 16d0 e1bf 0000 0204 05b4 0000

Здесь показано, что пакет в предыдущем коде подтверждает порядковый номер, показанный в ответе выше. То есть этот пакет имеет номер подтверждения
239 440 323, в то время как предыдущий пакет имел порядковый номер 239 440 322.

Параметры сканирования TCP
Для использования большинства параметров сканирования TCP Nmap требует
привилегированного пользователя. Это может быть учетная запись корневого
уровня в Unix или учетная запись администратора в Windows. Учетная запись применяется для отправки и получения необработанных пакетов. По умолчанию Nmap
будет выполнять проверку TCP SYN, но если у сканера нет привилегированного
пользователя, он будет использовать проверку TCP connect. В Nmap предусмотрены следующие виды сканирования.
‰‰TCP-сканирование подключения (-sT) — параметр завершает трехстороннее

подтверждение связи с каждым целевым портом. Если соединение установлено успешно, порт считается открытым. Трехстороннее рукопожатие — это
медленный тип сканирования, поэтому, скорее всего, он будет внесен в журнал

172  Глава 5



Методы сканирования и уклонения

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

порта, этот тип развертки медленный и, скорее всего, будет внесен в журнал
целевой машины. Если Nmap запускается пользователем без каких-либо привилегий, данный параметр сканирования выбирается по умолчанию.
‰‰SYN-сканирование (-sS) — также известен как полуоткрытый или скрытый

SYN. С помощью этого параметра Nmap отправляет SYN-пакет, а затем ожидает
ответа. Ответ SYN/ACK означает, что порт прослушивается службой, а в случае
ответа RST/ACK становится ясно, что порт не прослушивается. Если ответа нет
или сообщение об ошибке ICMP недоступно, порт считается фильтрованным.
Это быстрый тип сканирования. И еще одна деталь: так как трехстороннее
рукопожатие не завершается, оно незаметно. Если Nmap запускается с правами привилегированного пользователя, данный параметр устанавливается по
умолчанию.
‰‰TCP NULL-сканирование (-sN), FIN-сканирование (-sF), XMAS-скани­

рование (-sX) — NULL-сканирование не устанавливает все биты управления.
Сканирование FIN устанавливает только флаг FIN, а XMAS-сканирование
устанавливает флаги FIN, PSH и URG. Если в ответ получен пакет RST, то
порт считается закрытым, а отсутствие ответа означает, что порт открыт/отфильтрован.
‰‰TCP-сканирование Маймона (-sM) — такое сканирование протокола было

предложено Уриэлем Маймоном (Uriel Maimon). Оно отправит пакет с установленным флагом FIN/ACK. BSD-подобные системы при открытом порте этот
пакет отбросят, а если порт закрыт, будет дан ответ RST.
‰‰TCP ACK-сканирование (-sA) — этот тип сканирования используется для

определения состояния брандмауэра и фильтрации портов. Сетевой пакет
данного типа отправляет только бит ACK. Если в ответ получим RST, значит,
цель не фильтруется.
‰‰TCP Window-сканирование (-sW) — этот тип сканирования проверяет поля
TCP Window ответа первого пакета. Открытый порт выдаст положительное зна-

чение окна TCP. Закрытый порт покажет нулевое значение окна TCP.

‰‰TCP Idle-сканирование (-sI) — при использовании данного метода пакеты

не отправляются целевой машине. Будет проведено сканирование указанного
вами зомби-хоста. IDS сообщит, что атаку проводит зомби.
Кроме того, с помощью параметра scanflags Nmap позволяет вам создать собственное TCP-сканирование. Аргумент для этого параметра может быть числовым,
например 9 для PSH и FIN, или описываться символьными именами. Для описания
набора параметров следует после scanflags в любом порядке ввести комбинацию
URG, ACK, PSH, RST, SYN, FIN, ECE, CWR, ALL или NONE. Например, параметр --scanflags
URGACKPSH установит флаги URG, ACK и PSH.

Сетевой сканер  173

Сканирование UDP
В то время когда для сканирования TCP предусмотрено много типов, для сканирования UDP — только один (-sU). Несмотря на то что проверка UDP менее надежна,
чем проверка TCP, испытателю на проникновение не следует игнорировать ее, потому что на портах UDP также могут находиться интересные службы.
При сканировании портов UDP наибольшую проблему представляет скорость
сканирования. Ядро Linux ограничивает отправку сообщения о недоступности порта ICMP одним сообщением в секунду, поэтому сканирование UDP 65 536 портов
продолжится более 18 часов.
Для ускорения сканирования можно использовать следующие методы.
‰‰Параллельное выполнение сканирования UDP.
‰‰Сканирование сначала самых популярных портов.
‰‰Сканирование за брандмауэром.
‰‰Установку параметра --host-timeout, чтобы пропустить медленные хосты.

Эти методы позволяют сократить время, необходимое для сканирования UDPпортов.
Рассмотрим сценарий, в котором мы хотим найти, какие UDP-порты открыты
на целевой машине. Для ускорения процесса сканирования мы будем проверять
только порты 53 (DNS) и 161 (SNMP). Для этого используется следующая
команда:
nmap -sU 172.16.43.156 -p 53,161

Ниже приведен результат ее выполнения:
Nmap scan report for 172.16.43.156
Host is up (0.0016s latency).
PORT
STATE SERVICE
53/udp open
domain
161/udp closed snmp

Спецификация порта Nmap
В конфигурации по умолчанию Nmap для каждого протокола случайным образом
будет сканировать только 1000 наиболее распространенных портов. Файл nmapservices содержит оценку популярности для выбора «топовых» портов.
Чтобы изменить эту конфигурацию, Nmap предоставляет несколько параметров.
‰‰-p диапазон_портов — сканируются только определенные порты. Для сканирования портов с 1 по 1024 введите команду -p 1-1024. Для сканирования портов
с 1 по 65 535 используется команда -p-.
‰‰-F (fast) — применяется для сканирования только 100 общих портов.

174  Глава 5



Методы сканирования и уклонения

‰‰-r (don’t randomize port) — задает последовательное сканирование портов (от

первого до последнего).
‰‰--top-ports — будет сканировать только N портов с самым большим значением, которое будет найдено в файле nmap-service.

Для поиска портов 22 и 25 с помощью метода проверки TCP NULL следует использовать такую команду:
nmap -sN -p 22,25 172.16.43.156

Результат сканирования отобразится в таком виде:
Nmap scan report for 172.16.43.156
Host is up (0.00089s latency).
PORT
STATE
SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
MAC Address: 00:0C:29:18:0F:08 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 1.52 seconds

Ниже приведены фрагменты дампа пакета:
23:23:38.581818 IP 172.16.43.150.61870 >172.16.43.156.22: Flags [], win 1024,
length 0
0x0000: 4500 0028 06e4 0000 2f06 92ce c0a8 3866 E..(..../.....8f
0x0010: c0a8 3867 f1ae 0016 dd9e bf90 0000 0000 ..8g............
0x0020: 5000 0400 2ad2 0000
P...*...
23:23:38.581866 IP 172.16.43.150.61870 >172.16.43.156.25: Flags [], win 1024,
length 0
0x0000: 4500 0028 1117 0000 3106 869b c0a8 3866 E..(....1.....8f
0x0010: c0a8 3867 f1ae 0019 dd9e bf90 0000 0000 ..8g............
0x0020: 5000 0400 2acf 0000
P...*...
23:23:39.683483 IP 172.16.43.150.61871 >172.16.43.156.25: Flags [], win 1024,
length 0
0x0000: 4500 0028 afaf 0000 2706 f202 c0a8 3866 E..(....'.....8f
0x0010: c0a8 3867 f1af 0019 dd9f bf91 0000 0000 ..8g............
0x0020: 5000 0400 2acc 0000
P...*...
23:23:39.683731 IP 172.16.43.150.61871 >172.16.43.156.22: Flags [], win 1024,
length 0
0x0000: 4500 0028 5488 0000 3506 3f2a c0a8 3866 E..(T...5.?*..8f
0x0010: c0a8 3867 f1af 0016 dd9f bf91 0000 0000 ..8g............
0x0020: 5000 0400 2acf 0000
P...*...

Из пакетов, показанных в предыдущем коде, мы видим следующее.
‰‰В первом и втором пакетах атакующая машина проверяет, открыт ли порт 22

на целевой машине. Через некоторое время на целевой машине проверяется
порт 25.

Сетевой сканер  175
‰‰В третьем и четвертом пакетах атакующая машина проверяет, открыт ли порт 25

на целевой машине. Через некоторое время на целевой машине проверяется
порт 22.
‰‰Далее атакующая машина в течение некоторого времени ожидает ответ от це-

левой машины. Если ответа нет, Nmap делает вывод, что эти два порта открыты
или отфильтрованы.

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

отправляется на стандартный вывод.
‰‰Нормальный выход (-oN ). Подобен интерактивному выходу, но не содержит

сведений о времени выполнения и предупреждений.

‰‰Вывод в XML (-oX). Позволяет сохранить отчет в формате HTML, проанализи-

ровать в графическом интерфейсе пользователя Nmap или импортировать в базу
данных. Рекомендуем вам использовать именно его.

‰‰Формат вывода (-oG). Хоть этот формат устарел, он довольно популярен. Вывод
Grepable состоит из комментариев (строк, начинающихся со знака фунта (#))

и целевых строк. Целевая строка содержит комбинацию из шести помеченных
полей, разделенных символами табуляции, за которыми следует двоеточие.
Это такие поля, как Host, Ports, Protocols, Ignored, OS, Seq, Index, IP ID Seq и Status.
Такой формат выходных данных следует использовать, если они будут обрабатываться с помощью команд UNIX наподобие grep и awk.
Для сохранения результатов Nmap сразу в трех форматах (normal, XML
и grepable) вы можете использовать параметр -oA.

Чтобы сохранить результат сканирования в формате HTML (myscan.XML), выполните следующую команду:
nmap 172.16.43.156 -oX myscan.xml

Ниже приведен фрагмент XML-файла:




176  Глава 5



Методы сканирования и уклонения