Тест на проникновение , в просторечии известный как пентест , представляет собой санкционированную имитацию кибератаки на компьютерную систему, проводимую для оценки безопасности системы; [1] ее не следует путать с оценкой уязвимости . [2] Тест проводится для выявления слабых сторон (или уязвимостей ), включая возможность несанкционированного доступа к функциям и данным системы, [3] [4], а также сильных сторон, [5] что позволяет провести полную оценку риска .
Процесс обычно определяет целевые системы и конкретную цель, затем просматривает имеющуюся информацию и предпринимает различные меры для достижения этой цели. Целью теста на проникновение может быть белый ящик (о котором предыстория и системная информация предоставляются тестировщику заранее) или черный ящик (о котором предоставляется только основная информация, кроме названия компании). Тест на проникновение серого ящика представляет собой комбинацию этих двух (где ограниченные знания о цели сообщаются аудитору). [6] Тест на проникновение может помочь выявить уязвимости системы для атаки и оценить, насколько она уязвима. [7] [5]
О проблемах безопасности, которые выявляются в ходе теста на проникновение, следует сообщать владельцу системы. [8] Отчеты о тестах на проникновение могут также оценивать потенциальное воздействие на организацию и предлагать контрмеры для снижения риска. [8]
Национальный центр кибербезопасности Великобритании описывает тестирование на проникновение как: «Метод получения уверенности в безопасности ИТ-системы путем попытки взлома части или всей безопасности этой системы с использованием тех же инструментов и методов, которые может использовать противник». [9]
Цели теста на проникновение различаются в зависимости от типа одобренной деятельности для любого конкретного взаимодействия, при этом основная цель сосредоточена на поиске уязвимостей, которые могут быть использованы злоумышленником, и информировании клиента об этих уязвимостях вместе с рекомендуемыми стратегиями смягчения последствий. [10]
Тесты на проникновение являются компонентом полного аудита безопасности . Например, Стандарт безопасности данных индустрии платежных карт требует проведения тестирования на проникновение по регулярному графику и после изменений в системе. [11] Тесты на проникновение также могут поддерживать оценку рисков, как указано в NIST Risk Management Framework SP 800-53. [12]
Существует несколько стандартных фреймворков и методологий для проведения тестов на проникновение. К ним относятся Open Source Security Testing Methodology Manual (OSSTMM), Penetration Testing Execution Standard (PTES), NIST Special Publication 800-115, Information System Security Assessment Framework (ISSAF) и OWASP Testing Guide. CREST, некоммерческая профессиональная организация для индустрии технической кибербезопасности, предоставляет свой стандарт CREST Defensible Penetration Test, который предоставляет отрасли руководство для коммерчески обоснованной деятельности по обеспечению безопасности при проведении тестов на проникновение. [13]
Методология гипотезы дефекта — это метод системного анализа и прогнозирования проникновения, при котором список предполагаемых дефектов в программной системе составляется путем анализа спецификаций и документации для системы. Затем список предполагаемых дефектов ранжируется по приоритетам на основе предполагаемой вероятности того, что дефект действительно существует, и по простоте его эксплуатации в степени контроля или компрометации. Приоритезированный список используется для руководства фактическим тестированием системы.
Существуют различные типы тестирования на проникновение в зависимости от целей организации, в том числе: сетевое (внешнее и внутреннее), беспроводное, веб-приложений, социальная инженерия и проверка на предмет устранения уязвимостей.
К середине 1960-х годов растущая популярность систем разделения времени , которые делали ресурсы доступными по линиям связи, создала новые проблемы безопасности. Как объясняют ученые Дебора Рассел и Г. Т. Гангеми-старший, «1960-е годы ознаменовали истинное начало эпохи компьютерной безопасности». [14] : 27
Например, в июне 1965 года несколько ведущих экспертов США по компьютерной безопасности провели одну из первых крупных конференций по безопасности систем, организованную государственным подрядчиком System Development Corporation (SDC). Во время конференции кто-то заметил, что один сотрудник SDC смог легко подорвать различные системные защитные меры, добавленные к компьютерной системе разделения времени AN/FSQ-32 SDC . В надежде, что дальнейшее изучение безопасности системы будет полезным, участники запросили «...исследования, которые будут проведены в таких областях, как взлом защиты безопасности в системе разделения времени». Другими словами, участники конференции инициировали один из первых официальных запросов на использование проникновения в компьютер в качестве инструмента для изучения безопасности системы. [15] : 7–8
На весенней конференции Joint Computer Conference 1967 года многие ведущие специалисты по компьютерам снова встретились, чтобы обсудить проблемы безопасности систем. Во время этой конференции эксперты по компьютерной безопасности Уиллис Уэр , Гарольд Петерсен и Рейн Терн, все из RAND Corporation , и Бернард Петерс из Агентства национальной безопасности (АНБ) использовали фразу «проникновение» для описания атаки на компьютерную систему. В своей статье Уэр сослался на военные системы с удаленным доступом и разделением времени, предупредив, что «необходимо предвидеть преднамеренные попытки проникновения в такие компьютерные системы». Его коллеги Петерсен и Терн разделяли те же опасения, отмечая, что системы онлайн-коммуникаций «...уязвимы для угроз конфиденциальности», включая «преднамеренное проникновение». Бернард Петерс из АНБ высказал ту же точку зрения, настаивая на том, что компьютерный ввод и вывод «... могут предоставить большие объемы информации для проникающей программы». Во время конференции компьютерное проникновение было официально определено как серьезная угроза для онлайн-компьютерных систем. [15] : 8
Угроза, которую представляло компьютерное проникновение, была затем изложена в крупном отчете, организованном Министерством обороны США (DoD) в конце 1967 года. По сути, должностные лица DoD обратились к Уиллису Уэйру с просьбой возглавить целевую группу экспертов из АНБ, ЦРУ , DoD, академических кругов и промышленности для официальной оценки безопасности компьютерных систем с разделением времени. Опираясь на множество документов, представленных на Совместной компьютерной конференции весной 1967 года, целевая группа в значительной степени подтвердила угрозу безопасности системы, которую представляло компьютерное проникновение. Первоначально отчет Уэйра был засекречен, но многие ведущие компьютерные эксперты страны быстро определили исследование как окончательный документ по компьютерной безопасности. [15] Джеффри Р. Йост из Института Чарльза Бэббиджа совсем недавно описал отчет Уэйра как «... безусловно, самое важное и тщательное исследование технических и эксплуатационных вопросов, касающихся защищенных вычислительных систем того времени». [16] По сути, отчет Уэйра подтвердил серьезную угрозу, которую представляло компьютерное проникновение для новых онлайновых компьютерных систем с разделением времени.
Чтобы лучше понять слабые места системы, федеральное правительство и его подрядчики вскоре начали организовывать команды взломщиков, известные как команды тигров , для использования компьютерного проникновения для проверки безопасности системы. Дебора Рассел и Г. Т. Гангеми-старший заявили, что в 1970-х годах «... команды тигров впервые появились на компьютерной сцене. Команды тигров были спонсируемыми правительством и промышленностью командами взломщиков, которые пытались сломать защиту компьютерных систем в попытке обнаружить и в конечном итоге залатать дыры в безопасности». [14] : 29
Ведущий ученый по истории компьютерной безопасности Дональд Маккензи также отмечает, что «RAND провела несколько исследований проникновения (экспериментов по обходу средств контроля компьютерной безопасности) ранних систем с разделением времени по поручению правительства». [17] [18] Джеффри Р. Йост из Института Чарльза Бэббиджа в своей собственной работе по истории компьютерной безопасности также признает, что и RAND Corporation, и SDC «участвовали в некоторых из первых так называемых «исследований проникновения», чтобы попытаться проникнуть в системы с разделением времени, чтобы проверить их уязвимость». [16] Практически во всех этих ранних исследованиях команды тигров успешно проникали во все целевые компьютерные системы, поскольку системы с разделением времени страны имели слабую защиту.
Из ранних действий команды тигров усилия в RAND Corporation продемонстрировали полезность проникновения как инструмента оценки безопасности системы. В то время один аналитик RAND отметил, что тесты «...продемонстрировали практичность проникновения в систему как инструмента оценки эффективности и адекватности реализованных мер безопасности данных». Кроме того, ряд аналитиков RAND настаивали на том, что все упражнения по тестированию на проникновение предлагают несколько преимуществ, которые оправдывают его дальнейшее использование. Как они отметили в одной из статей, «Кажется, что у проникающего развивается дьявольское настроение в его поиске слабостей и неполноты операционной системы, которое трудно имитировать». По этим и другим причинам многие аналитики RAND рекомендовали продолжить изучение методов проникновения на предмет их полезности для оценки безопасности системы. [15] : 9
Вероятно, ведущим экспертом по компьютерному проникновению в эти годы становления был Джеймс П. Андерсон, который работал с АНБ, RAND и другими правительственными агентствами по изучению безопасности систем. В начале 1971 года ВВС США заключили контракт с частной компанией Андерсона на изучение безопасности своей системы разделения времени в Пентагоне. В своем исследовании Андерсон выделил ряд основных факторов, связанных с компьютерным проникновением. Андерсон описал общую последовательность атаки по шагам:
Со временем описание Андерсоном общих шагов проникновения в компьютер помогло многим другим экспертам по безопасности, которые полагались на эту технику для оценки безопасности компьютерных систем с разделением времени. [15] : 9
В последующие годы компьютерное проникновение как инструмент оценки безопасности стало более утонченным и сложным. В начале 1980-х годов журналист Уильям Брод кратко подвел итог продолжающимся усилиям команд-тигров по оценке безопасности систем. Как сообщал Брод, спонсируемый Министерством обороны отчет Уиллиса Уэра «...показал, как шпионы могут активно проникать в компьютеры, красть или копировать электронные файлы и подрывать устройства, которые обычно охраняют совершенно секретную информацию. Исследование положило начало более чем десятилетней тихой деятельности элитных групп компьютерных ученых, работающих на правительство, которые пытались взломать конфиденциальные компьютеры. Они преуспели в каждой попытке». [19]
Хотя эти различные исследования могли предполагать, что компьютерная безопасность в США остается серьезной проблемой, ученый Эдвард Хант недавно высказал более широкую точку зрения о широком изучении проникновения в компьютер как инструмента безопасности. Хант предполагает в недавней статье об истории тестирования на проникновение, что оборонное учреждение в конечном итоге «...создало многие инструменты, используемые в современной кибервойне», поскольку оно тщательно определило и исследовало множество способов, которыми компьютерные нарушители могли взломать целевые системы. [15] : 5
Для помощи в тестировании на проникновение доступен широкий спектр инструментов оценки безопасности , включая бесплатное, свободно распространяемое и коммерческое программное обеспечение .
Несколько дистрибутивов операционных систем ориентированы на тестирование на проникновение. [20] Такие дистрибутивы обычно содержат предварительно упакованный и предварительно настроенный набор инструментов. Тестировщику на проникновение не нужно выслеживать каждый отдельный инструмент, что может увеличить риск осложнений, таких как ошибки компиляции, проблемы с зависимостями и ошибки конфигурации. Кроме того, приобретение дополнительных инструментов может быть непрактичным в контексте тестировщика.
Известные примеры ОС для тестирования на проникновение включают в себя:
Проведение тестирования на проникновение облегчают и многие другие специализированные операционные системы, каждая из которых в большей или меньшей степени посвящена определенной области тестирования на проникновение.
Ряд дистрибутивов Linux включают известные уязвимости ОС и приложений и могут быть развернуты в качестве целей для практики. Такие системы помогают новым специалистам по безопасности опробовать новейшие инструменты безопасности в лабораторной среде. Примерами являются Damn Vulnerable Linux (DVL), OWASP Web Testing Environment (WTW) и Metasploitable.
Процесс тестирования на проникновение можно упростить до следующих пяти этапов:
После того, как злоумышленник использовал одну уязвимость, он может получить доступ к другим машинам, поэтому процесс повторяется, т. е. он ищет новые уязвимости и пытается их использовать. Этот процесс называется поворотом.
Легальные операции, которые позволяют тестировщику выполнить нелегальную операцию, включают неэкранированные команды SQL, неизмененные хешированные пароли в проектах, видимых из источника, человеческие отношения и старые хеширующие или криптографические функции. Одного недостатка может быть недостаточно для включения критически серьезного эксплойта. Почти всегда требуется использовать несколько известных недостатков и формировать полезную нагрузку таким образом, чтобы она выглядела как допустимая операция. Metasploit предоставляет библиотеку Ruby для общих задач и поддерживает базу данных известных эксплойтов.
При работе в условиях ограниченного бюджета и времени фаззинг является распространенной техникой, которая обнаруживает уязвимости. Он направлен на получение необработанной ошибки с помощью случайного ввода. Тестировщик использует случайный ввод для доступа к менее часто используемым путям кода. Хорошо известные пути кода обычно не содержат ошибок. Ошибки полезны, поскольку они либо раскрывают больше информации, например сбои HTTP-сервера с полной информацией трассировки, либо могут быть использованы напрямую, например переполнение буфера .
Представьте себе веб-сайт с 100 текстовыми полями ввода. Некоторые из них уязвимы для SQL-инъекций в определенных строках. Отправка случайных строк в эти поля в течение некоторого времени, как можно надеяться, попадет на ошибочный путь кода. Ошибка проявляется как сломанная HTML-страница, наполовину отрисованная из-за ошибки SQL. В этом случае только текстовые поля рассматриваются как входные потоки. Однако программные системы имеют множество возможных входных потоков, таких как данные cookie и сеанса, поток загруженных файлов, каналы RPC или память. Ошибки могут возникать в любом из этих входных потоков. Цель теста — сначала получить необработанную ошибку, а затем понять недостаток на основе неудачного тестового случая. Тестировщики пишут автоматизированный инструмент для проверки своего понимания недостатка, пока он не будет исправлен. После этого может стать очевидным, как упаковать полезную нагрузку, чтобы целевая система инициировала ее выполнение. Если это невыполнимо, можно надеяться, что другая ошибка, произведенная фаззером, принесет больше плодов. Использование фаззера экономит время, не проверяя адекватные пути кода, где эксплойты маловероятны.
Незаконная операция, или полезная нагрузка в терминологии Metasploit, может включать функции для регистрации нажатий клавиш, снятия скриншотов, установки рекламного ПО , кражи учетных данных, создания бэкдоров с использованием шелл-кода или изменения данных. Некоторые компании поддерживают большие базы данных известных эксплойтов и предоставляют продукты, которые автоматически проверяют целевые системы на уязвимости:
Администрация общих служб (GSA) стандартизировала услугу «теста на проникновение» как предварительно проверенную службу поддержки, чтобы быстро устранять потенциальные уязвимости и останавливать злоумышленников до того, как они повлияют на федеральные, государственные и местные органы власти США. Эти услуги обычно называют высокоадаптивными службами кибербезопасности (HACS), и они перечислены на веб-сайте US GSA Advantage. [22]
Эти усилия определили ключевых поставщиков услуг, которые были технически проверены и проверены для предоставления этих передовых услуг проникновения. Эта услуга GSA предназначена для улучшения быстрого заказа и развертывания этих услуг, сокращения дублирования контрактов правительства США, а также для защиты и поддержки инфраструктуры США более своевременным и эффективным образом.
132-45A Penetration Testing [23] — это тестирование безопасности, в котором оценщики услуг имитируют реальные атаки для выявления методов обхода функций безопасности приложения, системы или сети. Услуги HACS Penetration Testing Services обычно стратегически проверяют эффективность профилактических и детективных мер безопасности организации, используемых для защиты активов и данных. В рамках этой услуги сертифицированные этичные хакеры обычно проводят имитацию атаки на систему, системы, приложения или другую цель в среде, ища слабые места безопасности. После тестирования они обычно документируют уязвимости и описывают, какие защиты эффективны, а какие можно преодолеть или использовать.
В Великобритании услуги по тестированию на проникновение стандартизируются профессиональными организациями, работающими в сотрудничестве с Национальным центром кибербезопасности.
Результаты тестов на проникновение различаются в зависимости от используемых стандартов и методологий. Существует пять стандартов тестирования на проникновение: Open Source Security Testing Methodology Manual [24] (OSSTMM), Open Web Application Security Project (OWASP), National Institute of Standards and Technology (NIST00), Information System Security Assessment Framework (ISSAF) и Penetration Testing Methodologies and Standards (PTES).
Тест на проникновение может определить, как система реагирует на атаку, можно ли взломать защиту системы и какую информацию можно получить из системы.
Тестирование на проникновение — это моделирование атаки на систему, сеть, часть оборудования или другой объект с целью доказать, насколько уязвимой будет эта система или «цель» для реальной атаки.
сканирование уязвимостей сети не реже одного раза в квартал и после любого существенного изменения в сети