- PVSM.RU - https://www.pvsm.ru -
→ Часть 1. Kali Linux: политика безопасности, защита компьютеров и сетевых служб [1]
→ Часть 2. Kali Linux: фильтрация трафика с помощью netfilter [2]
→ Часть 3. Kali Linux: мониторинг и логирование [3]
→ Часть 4. Kali Linux: упражнения по защите и мониторингу системы [3]
→ Часть 5. Kali Linux: оценка защищённости систем [4]
Продолжаем публикацию перевода 11-й главы книги «Kali Linux Revealed [5]». Сегодня хотим познакомить вас с разделом 11.2, который посвящён видам мероприятий, направленных на оценку защищённости информационных систем.
После того, как ваша ОС готова к работе, пришло время точно определить то, какое именно исследование вы собираетесь провести. В целом, можно выделить четыре вида подобных исследований:
Конкретное задание на исследование системы может включать в себя различные элементы каждого вида. Мы полагаем, что стоит рассказать о них подробнее и раскрыть их связь с Kali Linux и с рабочим окружением.
Прежде чем переходить к описанию конкретных видов мероприятий по оценке защищённости систем, расскажем о том, чем уязвимости отличаются от эксплойтов.
Уязвимость можно определить как дефект информационной системы, воспользовавшись которым можно нарушить её конфиденциальность, целостность или доступность. Существуют различные виды уязвимостей, с которыми можно столкнуться. Вот некоторые из них:
Эксплойт, с другой стороны, это программа, которая, если её применить, может воспользоваться конкретной уязвимостью, хотя и не все уязвимости можно эксплуатировать таким образом. Так как эксплойт должен изменить выполняющийся процесс, принуждая его к выполнению непредусмотренных действий, создание эксплойтов может оказаться сложной задачей. Более того, в современных вычислительных платформах имеется целый ряд технологий противодействия эксплойтам, усложняющих их разработку. Среди таких технологий — предотвращение выполнения данных (Data Execution Prevention [11], DEP) и рандомизация размещения адресного пространства (Address Space Layout Randomization [12], ASLR). Однако, если для некоей уязвимости не удаётся обнаружить общедоступный эксплойт, это ещё не значит, что подобного эксплойта не существует, а также то, что его нельзя создать. Например, многие организации продают специально разработанные эксплойты, которые не попадают в общий доступ. Поэтому все уязвимости следует рассматривать как потенциально подверженные эксплуатации.
Теперь поговорим о различных видах мероприятий по оценке защищённости систем.
Напомним, что уязвимостью считается дефект информационной системы, который может быть каким-то образом использован для нарушения её конфиденциальности, целостности или доступности. При проведении оценки уязвимости систем вашей целью является создание перечня уязвимостей, обнаруженных в целевом окружении. Понятие «целевое окружение» очень важно при оценке защищённости систем. Вы не должны пересекать оговоренные с клиентом границы. Это означает — проводить работы в пределах целевой сети и не отклоняться от целей исследования. Выход за пределы исследуемого окружения, границы которого согласованы с клиентом, может привести к нарушению работы служб клиента, к потере его доверия, или к судебному иску против вас и вашего работодателя.
Исследование уязвимостей систем, благодаря его простоте, часто выполняется на регулярной основе в достаточно зрелых окружениях. Делается это в рамках демонстрации уровня их защищённости или их соответствия неким стандартам безопасности.
В большинстве случаев автоматические инструменты, вроде тех, что можно найти в группах Vulnerability Analysis [13] и Web Applications [14] на сайте Kali Tools, или в соответствующих разделах меню Applications (Приложения) на рабочем столе Kali, используются для обнаружения работающих в целевом окружении компьютеров, для идентификации служб, прослушивающих некие порты и их анализа. Делается это для сбора как можно большего количества информации о системе. В эту информацию входят сведения об аппаратных платформах и ПО серверов, версиях операционных систем и приложений, и другие сведения.
Затем собранную информацию проверяют на известные сигнатуры уязвимостей. Эти сигнатуры состоят из комбинаций фрагментов данных, которые позволяют распознать известные проблемы в области безопасности. Здесь используется как можно больше сведений, так как чем больше их будет — тем точнее окажется идентификация уязвимости. Существует множество показателей, представляющих интерес при анализе уязвимостей систем. Среди них можно отметить следующие:
После сбора информации эти, и многие другие показатели, будут использованы для формирования сигнатур уязвимостей. Вполне ожидаемо то, что чем больше фрагментов данных совпадут с сигнатурой, тем увереннее можно говорить об обнаруженной уязвимости.
Занимаясь сопоставлением собранных данных с сигнатурами, можно получить разные результаты:
Несложно понять, что для обеспечения надёжных результатов сканирования системы чрезвычайно важна точность сигнатур. Чем больше данных удаётся собрать — тем выше качество результатов автоматического сканирования, основанного на сигнатурах. Именно поэтому весьма популярно сканирование с предварительной аутентификацией в системе.
При таком подходе сканирующее ПО использует предоставленные специалисту данные для аутентификации в целевой системе. Это даёт возможности по анализу данных, недоступные в других условиях. Например, при обычном сканировании реально получить лишь информацию о системе, которую можно извлечь из анализа служб, которые доступны извне, и из анализа предоставленного ими функционала. Иногда и такое сканирование позволяет собрать немало данных. Но эти сведения не идут ни в какое сравнение с тем, что можно узнать о системе, войдя в неё и и тщательно проанализировав всё установленное ПО, применённые патчи, исполняющиеся процессы, и так далее. Сбор столь обширных данных о системе полезен для нахождения уязвимостей, которые, в противном случае, могли бы остаться необнаруженными.
Хорошо проведённое исследование уязвимостей даёт отчёт о потенциальных проблемах и показатели, которые можно использовать для анализа изменения ситуации во времени. Это — довольно простое исследование, но даже учитывая это, многие организации регулярно проводят автоматическое сканирование уязвимостей. Делается это обычно в часы минимальной нагрузки на системы, так как сканирование может потребовать немалых сетевых и серверных ресурсов и помешать обычной работе организации.
Как уже было сказано, в ходе сканирования систем на наличие уязвимостей необходимо проверить множество различных фрагментов данных для того, чтобы получить точные результаты. Все эти проверки могут создать нагрузку на целевую систему и на сеть. К сожалению, сложно заранее узнать то, сколько ресурсов будет потреблено, так как это зависит от количества запущенных служб и типов проверок, которые будут связаны с этими службами. Сканирование потребляет системные ресурсы, поэтому, при использовании соответствующих инструментов, важно представлять себе то, какую нагрузку они могут создавать на исследуемые системы и сети.
▍Многопоточное сканирование
Большинство сканеров уязвимостей поддерживают настройку количества потоков, выделяемых на выполнение задачи сканирования. Речь идёт о том, сколько проверок будет выполняться одновременно. Увеличение числа потоков сканирования приводит к росту нагрузки на компьютер исследователя, на сеть, на целевые системы. Заманчиво ускорить сканирование за счёт увеличения числа потоков, но важно помнить о том, что это может привести к существенному росту нагрузки на системы.
Когда проверка завершена, обнаруженные уязвимости обычно связывают со стандартными идентификаторами, такими, как номера CVE [15], EDB-ID [16], или коды классификации уязвимостей, принятые у поставщиков инструментов сканирования. Эта информация, вместе со сведениями об оценке уязвимостей по методике CVSS [17], используется для определения уровня риска. Все эти сведения, с учётом ложноположительных и ложноотрицательных сообщений об уязвимостей, дают общее представление об уязвимостях, которые нужно учитывать, анализируя результаты сканирования.
Так как автоматизированные средства используют для выявления уязвимостей базы данных сигнатур, малейшее отклонение от известной сигнатуры может изменить результат, и, соответственно, обоснованность сообщений об обнаруженных уязвимостях.
Ложноположительные результаты указывают на то, чего нет, а ложноотрицательные, наоборот, скрывают существующие проблемы. Поэтому качество и возможности автоматических сканеров уязвимости напрямую зависят от применяемых ими баз данных сигнатур. Как правило, поставщики подобного ПО предлагают разные версии своих программ. Одни их них — бесплатные, снабжённые урезанными базами данных, предназначены для домашних пользователей. Другие — достаточно дорогие, с полноценными базами, обычно ориентированы на корпоративный сектор.
Ещё одна проблема, которая часто возникает при сканировании на наличие уязвимостей, заключается в пригодности к использованию предложенных рейтингов риска. Эти рейтинги определяют на универсальной основе, принимая во внимание множество различных факторов, таких, как уровень привилегий, тип программного обеспечения, возможность реализации уязвимости до или после аутентификации. Подобные рейтинги нельзя использовать бездумно, так как их ценность зависит от особенностей исследуемой системы. Качественно оценить уровень риска можно только пользуясь теми рейтингами, которые основаны на анализе подробной информации о системе и обнаруженных в ней уязвимостях.
Не существует единого общепринятого соглашения о рейтингах рисков, однако, можно порекомендовать взять за основу оценки рисков в исследуемой среде стандарт NIST SP 800-30 [18]. NIST SP определяет реальный риск обнаруженной уязвимости как комбинацию возможности осуществления угрозы и уровня воздействия на организацию при осуществлении угрозы.
В соответствии с NIST, возможность осуществления угрозы основана на вероятности того, что источник угрозы, потенциальный противник, способен к эксплуатации конкретной уязвимости. При этом возможности осуществления угрозы присваивается один из возможных рейтингов: низкий, средний или высокий.
Уровень воздействия на организацию при осуществлении угрозы определяют, оценивая размер ущерба, который может причинить использование анализируемой уязвимости.
Как только выяснены возможность осуществления угрозы и уровень её воздействия на организацию, можно оценить уровень риска (низкий, средний, или высокий), который выражается в виде функции от двух найденных показателей. Показатель уровня риска позволяет сформировать план действий для тех, кто ответственен за защиту и поддержку анализируемой системы.
Показатель риска обнаруженной уязвимости формирует множество факторов, поэтому рейтинги, полученные из систем автоматического сканирования следует рассматривать лишь как отправную точку в определении реального риска.
По результатам оценки уязвимостей составляют отчёты. Такие отчёты, созданные со знанием дела и профессионально проанализированные, закладывают базу для других исследований, таких, как оценка систем на соответствие стандартам безопасности. Важно извлечь из результатов оценки уязвимостей всё, что можно.
Kali — это отличная платформа для проведения оценки уязвимостей, ОС для этого не нуждается в особой настройке. В разделах меню Applications (Приложения) можно найти множество инструментов для анализа уязвимостей. В частности, речь идёт о разделах Information Gathering (Сбор информации), Vulnerability Analysis (Анализ уязвимостей), и Web Application Analysis (Анализе веб-приложения). Узнать подробности об использовании Kali Linux для анализа уязвимостей можно на сайте Kali Linux Tools [19], на сайте официальной документации Kali Linux [20], и ознакомившись с бесплатным курсом Metasploit Unleashed [21].
Следующий по сложности вид исследований — это оценка систем на соответствие стандартам безопасности. Подобные испытания систем распространены сильнее всего, так как они основаны на проверке требований, предписываемых государственными и индустриальными стандартами, распространяющимися на организации.
Существует множество специализированных стандартов безопасности, однако, чаще всего встречается Payment Card Industry Data Security Standard (PCI DSS [22]). Этот стандарт разработан компаниями, выпускающими платёжные карты. Ему должны соответствовать организации, обрабатывающие карточные платежи. Если говорить о других распространённых стандартах, можно отметить такие, как Defense Information Systems Agency Security Technical Implementation Guides (DISA STIG [23]), Federal Risk and Authorization Management Program (FedRAMP [24]), Federal Information Security Management Act (FISMA [25]), и другие.
Корпоративный клиент может заказать подобное исследование или обратиться за результатами ранее проведённого исследования по разным причинам. В частности, инициатива может исходить от самого клиента, либо он может быть вынужден проводить обязательную проверку. В любом случае, такие исследования называют «оценкой систем на соответствие стандартам безопасности», или «исследованиями на соответствие стандартам безопасности», или «проверками на соответствие стандартам безопасности».
Оценка системы на соответствие стандартам обычно начинается с анализа уязвимостей. В случае с процедурой проведения аудита [26] на соответствие стандарту PCI, оценка уязвимостей, если она проведена соответствующим образом, может удовлетворить нескольким основным требованиям стандарта. Среди них — требование 2: «Не использовать пароли и другие системные параметры, заданные производителем по умолчанию». Анализ системы на соответствие этому требованию можно провести с помощью инструментов из категории меню Password Attack (Взлом паролей). Далее, это требование 11: «Регулярно выполнять тестирование систем и процессов обеспечения безопасности». Соответствующую проверку можно провести с помощью инструментов из категории Database Assessment (Исследование баз данных). Некоторые требования нельзя проверить с помощью обычных инструментов сканирования на уязвимости. Среди них — требование 9: «Ограничить физический доступ к данным держателей карт», и 12: « Разработать и поддерживать политику информационной безопасности для всего персонала организации». Для проверки таких требований нужны дополнительные усилия.
На первый взгляд может показаться не вполне понятным, как использовать Kali Linux для выполнения некоторых проверок. Однако, Kali отлично подходит для решения подобных задач, причём, не только из-за богатого набора стандартных инструментов, но и потому, что она основана на Debian, что открывает возможность установки множества дополнительных приложений. Искать программы, реализующие необходимый функционал, можно в менеджере пакетов, используя ключевые слова, взятые из используемого стандарта информационной безопасности. Подобный поиск, почти наверняка, завершится выдачей нескольких заслуживающих внимания результатов. В настоящее время многие организации используют Kali Linux как платформу именно для оценки систем на соответствие стандартам безопасности.
В последнее время стало сложно подобрать подходящее определение для «традиционного теста на проникновение». Дело в том, что подобные тесты используются в различных сферах деятельности, как результат, все описывают их по-своему. Путаницы добавляет и то, что «тестированием на проникновение» всё чаще стали называть описанную выше оценку систем на соответствие стандартам безопасности, или даже обычную оценку уязвимостей. В подобных случаях исследование не выходит за рамки неких минимальных требований.
В этом разделе мы не будем касаться споров об особенностях различных видов испытаний систем. Здесь мы расскажем об исследованиях, которые не ограничены некими «минимальными требованиями». Это — исследования, которые задуманы так, чтобы после их проведения можно было бы по-настоящему улучшить общую безопасность организации.
В противоположность видам исследований, которые мы обсудили ранее, традиционные тесты на проникновение не часто начинаются с определения области исследования. Вместо этого для них устанавливают определённые цели. Например: «смоделировать последствия компрометации внутреннего пользователя», или: «выяснить, что случилось бы, если бы организация попала под целенаправленную атаку, выполняемую внешним злоумышленником». Ключевой отличительной чертой подобных исследований является то, что в ходе их выполнения не только находят и оценивают уязвимости, но ещё и используют найденные проблемы для раскрытия наихудших вариантов развития событий.
В ходе тестирования на проникновение не полагаются исключительно на инструменты сканирования систем на уязвимости. Работа продолжается путём исследования находок, путём использования эксплойтов или испытаний для исключения ложноположительных результатов, делается всё возможное для того, чтобы обнаружить скрытые уязвимости, или то, что мы называем ложноотрицательными результатами.
Подобное исследование часто включает в себя эксплуатацию обнаруженных уязвимостей, оценку уровня доступа, который предоставляют эксплойты, и использование этого повышенного уровня доступа как отправной точки для дополнительных атак на целевую систему.
Здесь требуется критический анализ целевого окружения, ручной поиск уязвимостей, креативность, способность к нестандартному
Несмотря на сложность и многоплановость традиционного тестирования на проникновение, ход такого исследования можно упорядочить, разбив на несколько шагов. Стоит отметить, что Kali упрощает подбор ПО для каждого из таких шагов. Итак, вот пошаговый план тестирования на проникновение с комментариями об используемых инструментах:
В большинстве случаев тесты на проникновение будут устроены совершенно по-разному, так как каждая организация будет подвергаться разным угрозам и иметь различные ресурсы, которые требуется защищать. Kali Linux даёт универсальную базу для решения подобных задач, именно здесь можно воспользоваться множеством возможностей по настройке Kali. Многие организации, которые выполняют такие исследования, поддерживают настроенные под свои нужды версии Kali LInux для внутреннего использования. Это позволяет им ускорить развёртывание систем перед новым исследованием.
Среди часто встречающихся дополнительных настроек Kali Linux можно отметить следующие:
Большинство мероприятий по оценке защищённости систем отличаются достаточно большими масштабами. Особенностью же исследований приложений является тот факт, что изучению подвергается конкретная программа. Подобные исследования становятся всё более распространёнными из-за сложности жизненно важных приложений, используемых компаниями. Многие из таких приложений созданы собственными силами этих компаний. Если нужно, исследование приложений может сопутствовать другим видам исследований. Среди видов приложений, которые могут быть исследованы на предмет безопасности, можно отметить следующие:
kali-linux-web
, который содержит множество полезных инструментов.
Исследование приложений можно проводить самыми разными способами. Например, для идентификации потенциальных проблем можно воспользоваться автоматическим средством, предназначенным для тестирования конкретного приложения. Подобные автоматические средства, основываясь на особенностях работы приложений, пытаются найти в них неизвестные слабости, вместо того, чтобы полагаться на набор заранее заданных сигнатур. Инструменты для анализа программ должны учитывать особенности их поведения. Вот, например, популярный сканер уязвимости веб-приложений Burp Suite [31]. В ходе исследования приложения он находит поля для ввода данных, после чего выполняет различные атаки методом SQL-инъекций, наблюдая в это время за приложением для того, чтобы выявить атаки, которые оказались успешными.
Существуют и более сложные сценарии исследования приложений. Такие исследования могут быть выполнены в интерактивном режиме. При их проведении используют модели чёрного и белого ящиков.
Конечно, между белым и чёрным есть и оттенки серого. Обычно то, как именно будет осуществляться работа с приложением, определяется целями исследования. Если цель заключается в том, чтобы узнать, что может произойти с приложением, которое окажется предметом целенаправленной внешней атаки, вероятно, лучше всего подойдёт тестирование методом чёрного ящика. Если цель заключается в идентификации и устранении как можно большего количества проблем с безопасностью за сравнительно короткое время, исследование методом белого ящика может оказаться более эффективным.
В других случаях может быть применён гибридный подход, когда исследователь не обладает полным доступом к исходному коду приложения для платформы, на которой оно выполняется, но выданная ему учётная запись подготовлена администратором и даёт доступ к как можно большим возможностям приложения.
Kali — это идеальная платформа для всех подходов к исследованию приложений. После установки стандартного дистрибутива здесь можно найти множество сканеров, рассчитанных на конкретные приложения. Тут есть и инструменты для более продвинутых исследований. Среди них — редакторы исходного кода и скриптовые окружения. В деле исследования приложений вам могут оказаться полезными материалы из разделов Web Application [14] и Reverse Engineering [32] сайта Kali Tools.
В этом материале мы рассказали о различных видах мероприятий по оценке защищённости информационных систем. Здесь же можно найти ссылки на инструменты, полезные при проведении подобных исследований. В следующий раз поговорим о методике формализации исследований и о типах атак.
Уважаемые читатели! Если вы проводили исследования по оценке защищённости систем или заказывали подобные исследования в специализированных организациях — просим поделиться опытом.
Автор: ru_vds
Источник [33]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/265187
Ссылки в тексте:
[1] Kali Linux: политика безопасности, защита компьютеров и сетевых служб: https://habrahabr.ru/company/ruvds/blog/338338/
[2] Kali Linux: фильтрация трафика с помощью netfilter: https://habrahabr.ru/company/ruvds/blog/338480/
[3] Kali Linux: мониторинг и логирование: https://habrahabr.ru/company/ruvds/blog/338668/
[4] Kali Linux: оценка защищённости систем: https://habrahabr.ru/company/ruvds/blog/339312/
[5] Kali Linux Revealed: https://kali.training/introduction/kali-linux-revealed-book/
[6] Image: https://habrahabr.ru/company/ruvds/blog/339636/
[7] включению файлов: https://en.wikipedia.org/wiki/File_inclusion_vulnerability
[8] SQL-инъекции: https://en.wikipedia.org/wiki/SQL_injection
[9] переполнения буфера: https://en.wikipedia.org/wiki/Buffer_overflow
[10] состоянию гонки: https://en.wikipedia.org/wiki/Race_condition
[11] Data Execution Prevention: https://en.wikipedia.org/wiki/Executable_space_protection#Windows
[12] Address Space Layout Randomization: https://en.wikipedia.org/wiki/Address_space_layout_randomization
[13] Vulnerability Analysis: http://tools.kali.org/category/vulnerability-analysis
[14] Web Applications: http://tools.kali.org/category/web-applications
[15] номера CVE: https://cve.mitre.org/
[16] EDB-ID: https://www.exploit-db.com/about/
[17] CVSS: https://www.first.org/cvss
[18] NIST SP 800-30: http://csrc.nist.gov/publications/PubsSPs.html#800-30
[19] Kali Linux Tools: http://tools.kali.org/tools-listing
[20] официальной документации Kali Linux: http://docs.kali.org/
[21] Metasploit Unleashed: https://www.offensive-security.com/metasploit-unleashed/
[22] PCI DSS: https://www.pcisecuritystandards.org/documents/Penetration_Testing_Guidance_March_2015.pdf
[23] DISA STIG: http://iase.disa.mil/stigs/Pages/index.aspx
[24] FedRAMP: https://www.fedramp.gov/about-us/about/
[25] FISMA: http://csrc.nist.gov/groups/SMA/fisma/
[26] проведения аудита: https://www.pcisecuritystandards.org/documents/PCIDSS_QRGv3_2.pdf
[27] мышлению: http://www.braintools.ru
[28] Kali Linux ISO of Doom: https://www.offensive-security.com/kali-linux/kali-rolling-iso-of-doom/
[29] образа системы: http://docs.kali.org/development/live-build-a-custom-kali-iso
[30] особые настройки: https://www.offensive-security.com/kali-linux/kali-linux-recipes/
[31] Burp Suite: https://portswigger.net/burp/
[32] Reverse Engineering: http://tools.kali.org/category/reverse-engineering
[33] Источник: https://habrahabr.ru/post/339636/
Нажмите здесь для печати.