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

в 10:15, , рубрики: информационная безопасность, методология, хакинг
Важность личной методологии тестирования на проникновение информационных систем - 1

Авторы:
B0rn2beR00T – Специалист по тестированию на проникновение
N3M351DA – Тимлид Red Team

Приветствую!

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

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

В общем, вот наше с коллегой небольшое рассуждение на предмет важности методологии при проведении пентеста. Приятного чтения!

Важность методологии проведения пентеста

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

Специалист по информационной безопасности Евгений Грязнов в статье "Пентест по-своему" журнала "Xakер" утверждал следующее:

Опыт­ный пен­тестер быс­тро находит уяз­вимость, пишет скрипт для ее экс­плу­ата­ции, и вот уже завет­ный флаг у нас в руках! Одна­ко в реаль­нос­ти этот про­цесс со все­ми удач­ными и неудач­ными попыт­ками может занять от нес­коль­ких часов до нес­коль­ких десят­ков дней. Об этом не при­нято писать в рай­тапах, ведь сам поиск далеко не такой кра­соч­ный. Как же в реаль­нос­ти находят­ся те самые «пра­виль­ные мес­та» и как узнать, на что сто­ит обратить вни­мание? Для это­го у боль­шинс­тва серь­езных пен­тесте­ров есть собс­твен­ная методи­ка или спи­сок чек‑лис­тов.

На самом деле именно после данного увлекательного чтива я и решился сам порассуждать на эту тему.

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

Как правило у пентеста есть следующие этапы:

  • сбор информации о цели;

  • поиск уязвимостей;

  • повышение привилегий в атакуемой системе;

  • пос­тэкс­плу­ата­ция;

  • очистка следов;

  • формирование отчёта и рекомендаций

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

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

Этапы проведения пентеста

Сбор информации о цели

Самый важный этап при старте тестирования на проникновение. При сборе информации стоит как можно больше собрать данных для более стабильного прохождения остальных этапов.

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

Для более удобного анализа используемых модулей и библиотек я бы посоветовал плагин Wappalyzer.

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

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

На этом этапе стоит посидеть подольше и изучить всё в плоть до кода бека (если такая возможность есть и это не чёрная коробка) и взаимодействия сайта. Это займёт много сил и времени, но потом это точно окупится.

Из основных инструментов для разведки того же веба я бы рекомендовал Ffuf, Dirsearch, Whatweb, BurpSuite, OWASPZAP, Nmap. Этим инструменты точно должны фигурировать в вашей методологии.

Поиск уязвимостей

На разведанные данные теперь бы поискать версионные уязвимости или же CVE. По сути, эта та же разведка, но теперь вы подбираете инструментарий или крипты для достижения своей цели Я бы порекомендовал искать уязвимости на ресурсах: HackerOne, Github, ExploitDB, Google.

Из консольных инструментов рекомендую searchsploit (копия ExploitDB).

Повышение привилегий в атакуемой системе

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

Проверьте какие языки программирования установлены на машину, есть ли SUID, забытые пароли, инструменты для пробрасывания шелла и т.д.

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

Пос­тэкс­плу­ата­ция

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

Очистка следов

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

Формирование отчёта и рекомендаций

Завершающим этапом будет написание хорошего отчёта для заказчика или вашего непосредственного начальника. Есть куча материалов в сети, которые подскажут как правильно и аргументированно написать отчёт о тестировании на проникновение, если в организации нет шаблона. На том же "Хакере" есть куча всего. По типу: https://xakep.ru/2023/05/17/ideal-pentest/

Я бы порекомендовал читать отчёты в открытом доступе (однако их поиски бывают тем ещё занятием) или райтапы опытных кибербезопасников.

Разговаривая со своей хорошей знакомой и коллегой по цеху N3M351DA, я услышал следующую точку зрения по данному вопросу:

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

- Во-первых – опытному пентестеру с первого взгляда понятно, какие проверки неприменимы и их стоит пропустить в том или ином кейсе.

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

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

Приведу пример: в работе я два раза сталкивалась с CMS X и всегда проводила все проверки подряд. Но вот на третий раз я уже точно начну с той проверки, которая была наиболее успешной в предыдущих двух случаях, а остальные проигнорирую или оставлю на потом (вы же помните, что время на пентест ограничено?).

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

Что уж говорить о том, что некоторые компании, возвращаются к нам за тестированием на проникновение и, например, за год, тестируемый объект практически не меняется – в таком случае будет релевантным решением опереться на данные предыдущего отчета, чтобы оптимизировать эффективность работы:

  • перепроверить старые уязвимости и попытаться их проксплуатировать и модифицировать;

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

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

Приведу пример своей логики работы: у меня запущен Burp, он краулит по сайту и говорит мне о потенциальных отраженных XSS, а параллельно я замечаю, что пользователям назначается предсказуемый ID и возможен IDOR. Что будет критичнее? Например, отраженным XSSс помощью социальной инженерии злоумышленник может украсть аккаунт и данные пользователя. А IDORпозволит получить доступ к данным сразу всех пользователей без взаимодействия с ними. По оценкам CVSSкритичность у бага, ведущего к нарушению конфиденциальности пользователей без потредности прямого взаимодействия с ними будет выше. И что же это значит? Это значит, что XSS(в нашем гипотететическом пентесте) мы будем смотреть во вторую очередь.

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

Пример: мы тестируем онлайн-магазин – мы знаем, что украв учетку мы можем получить доступ к данным пользователя (конфиденциальность), а вот если угнать админку менеджера мы получим то же самое, но уже сможем менять адреса доставки, цены и удалять пользователей (конфиденциальность+целостность). Не стоит пренебрегать и пользовательской логикой – попытаться купить товар за 0 рублей, попытаться оформить заказ с одного айди, а оплатить данными с другого и тому подобное. Подобные проверки будут действительно полезны для бизнеса!

Надеюсь, мои примеры помогут вам вырасти, расширить свой кругозор подходов проведения тестирования на проникновение!

Известные алгоритмы тестирования на проникновение

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

Наиболее популярны следующие наработки:

  • ISSAF — Information systems security assessment framework;

  • PTES — Penetration Testing Execution Standard;

  • OSSTMM — The Open Source Security Testing Methodology Manual.

  • Руководство по тестированию OWASP

  • Руководство по тестированию на проникновение PCI

  • NIST 800-115

Фреймворк ISSAF примечателен тем, что по сути является 1000-страничной инструкцией. Каждый этап атаки в этой методологии сопровождается конкретными командами. Следуя по этой методологии шаг за шагом, в принципе, можно провести полноценный пентест. Впрочем, даже последняя редакция ISSAF стремительно устаревает, но как пример сгодится.

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

OSSTMM — документ, довольно сложный для чтения и восприятия. Но он содержит большое количество актуальной и очень подробной информации по безопасности. Это также самое известное руководство по безопасности на планете с примерно полумиллионом загрузок ежемесячно. Причина такой популярности в следующем: эти инструкции примерно на десятилетие опережают все остальные документы в индустрии безопасности. Фреймворк OSSTMM представляется наиболее актуальным на сегодняшний день. Впрочем, помимо методологий PTES, ISSAF и OSSTMM существует еще пара известных подходов: MITRE ATT&CK и Kill Chain.

Они описывают те же процессы, но ориентированы на Blue Team. То есть сделаны с оглядкой на потребности тех, кто предотвращает и расследует инциденты. Эти методологии поэтапно разбирают то, как атакующие продвигаются внутри сети. Пентестерам также стоит их знать. На Red Team-проектах необходимо тесно взаимодействовать с Синей Командой. Мы синхронизируем свои действия на каждом из этапов по времени, и нам надо хорошо понимать друг друга.

Информация в базе знаний Mitre Att&ck представлена в виде матриц. Каждая матрица представляет собой таблицу, в которой заголовки столбцов соответствуют тактикам киберпреступников, то есть основным этапам кибератаки или подготовки к ней, а содержимое ячеек — методикам реализации этих тактик, или техникам. Так, если сбор данных согласно Mitre Att&ck — это тактика атаки, то способы сбора, например автоматический сбор или сбор данных со съемных носителей, — это техники.

Матрицы Mitre Att&ck объединены в три группы:

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

  • Mobile — тактики и техники, которые злоумышленники используют в ходе атаки на мобильные устройства под управлением iOS и Android.

  • ATT&CK for ICS — тактики и техники, которые используются в атаках на промышленные системы управления.

Заключение

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

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

Путь становления пентестера - постоянное развитие. Помни об этом. Успехов!

Автор: Alexander_Cooper

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js