• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Определение масштаба пентеста

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

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

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

1522436358809.png

Определение масштаба…

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


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


Существует множество факторов, которые необходимо учитывать во время оценки масштабов тестирования приложения:

  • Критичность приложения. Безопасность, необходимая для личного блога, существенно отличается от безопасности для интернет-банковского приложения;
  • Где должно проходить тестирование (в офисе заказчика или нет). Чаще всего выполнение работы вне офиса клиента сказывается положительно на вашей продуктивности, т.к. вы можете получить помощь от членов своей команды, и вам будет легче спланировать вашу работу;
  • Примерное количество IP адресов, систем включенных в тестирование, страниц и параметров для веб-сайтов…. Иными словами, абсолютно все, что поможет вам примерно понять объем самого тестирования;
  • WAF/IDS, которые могут замедлить ваше тестирование;
  • Если тестирование проходит в условиях производственной среды, то вам следует быть более осторожным и избегать автоматизированных инструментов.
  • Количество обновлений должно быть отправлено на совещание и клиенту. Потеря часа каждый день существенно замедлит ваше тестирование. Тратя час на совещание, каждый день на протяжении недели приравнивается к потере целого дня тестирования (если вы учитываете время на подготовку к совещанию, поход на совещание, отправка обновлений, изменение направления действий…..) .

Еще одна вещь, которую необходимо учитывать – будет ли тестирование проводиться против сторонней инфраструктуры (Amazon EC2, Hosting companies). Это может добавить некоторые новые требования, которые могут забрать у вас больше времени.

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

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

  • Вы потратите время, ожидая ответа;
  • Вы (или ваша компания) будете выглядеть неорганизованно.

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


Совещание по вопросу определения масштаба тестирования

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

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

  • Что делает это приложение?
  • Есть ли уже назначенная дата, когда необходимо провести тестирование? Должно ли оно происходить в какое-то конкретное время (или спустя какое-то конкретное время?)?
  • Зачем они хотят провести тестирование? Безусловно, это звучит довольно глупо, но это может помочь вам максимально точно подобрать метод, который вы будете использовать для выполнения поставленных задач.
  • С кем вам связываться, если у вас возникнут вопросы?
  • Что с их точки зрения представляет самый большой риск для системы, которую вы будете тестировать.

Большинство клиентов считают, что все пентестеры представляют собой сборище деревенщин с клавиатурой. Однако, если вы (ваша компания) будете выглядеть организованным и структурированным, это поможет вам заручиться доверием клиента: «Это именно тот человек, кому следует доверить данную работу» - должно непрерывно звучать в их умах.

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

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

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

Пример

Давайте рассмотрим небольшой пример, который даст вам понимание того, как вы можете/вам следует определять масштаб необходимого тестирования…

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

Объем работы для выполнения подобного тестирования рассчитан на одного человека и займет от 2х до 3х дней, включая составление отчета и гарантию качества. Данный тип пентеста не может быть разделен между двумя людьми (однако, не смотря на это, всегда хорошо попросить кому-либо просмотреть вашу работу, для того, чтобы убедиться, что вы не упустили очевидных деталей).

Вы можете ускорить этот тип тестирования (и уменьшить количество необходимых дней) если у вас автоматизирована процедура обнаружения веб-приложений и определения общих фреймворков. Таким образом, 2 или 3 дня будет вполне достаточно.

Как начать работу новичку ?

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

  • Количества дней и общей стоимости;
  • Хватило ли вам времени или его было слишком много?
  • Почему вам потребовалось больше/меньше времени?

После того как вы попрактикуетесь в данной сфере несколько месяцев, попросите провести «неофициальное» определение масштабов тестирования. После того как клиент согласится, выполните оценку масштаба самостоятельно (цена/количество дней), в то время как старший тестировщик будет проводить реальную оценку. После этого сравните ваши цифры и объясните, каким образом вы пришли именно к такому решению. Затем узнайте у старшего, как именно он/она пришел(ла) к своим цифрам.

Делитесь информацией и обучайте клиента

Иногда, вам также придется «обучать клиента». Не смотря на утверждения «клиент всегда прав», некоторые из них не всегда полностью осознают угрозы (или же они заказали первый в их жизни пентест). [Если вы достаточно хорошо знаете клиента,] всегда лучше представить различные точки зрения на само тестирование.



Например, ваши клиенты хотят “Red Team” тестирование за один месяц. А вы знаете, что у них не все системы пропатченные, нет сегрегации сети и интернет-приложения написаны на PHP 2009 года. В данной ситуации будет лучше предложить другой подход к тестированию. Например, пентестирование займет 5 дней, внутренний аудит критических систем и SOE - 5/10 дней и далее исходить уже из этого.

Вывод

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

Источник:
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!