Пентест оплачивается по дням. Каждый день, который исполнители ждут учётную запись, гадают, как должна работать функция, или упираются в ваш же межсетевой экран, — это день, не потраченный на поиск уязвимостей. Большую часть такого ожидания можно убрать заранее.
Решить
Какой вопрос? «Безопасно ли выпускать новый платёжный сценарий» и «что может сделать с нами человек из интернета» ведут к разным тестам. Запишите вопрос одним предложением — из него следует объём.
Что входит в объём, а что нет? Перечислите приложения, адреса, среды. Перечислите и исключения: платёжного провайдера, системы материнской компании, старый сервис, который падает от одного взгляда.
Какая среда? Лучший выбор — тестовая среда, соответствующая рабочей: исполнители могут работать тщательно, и ничто реальное не под угрозой. Если есть только рабочая среда, согласуйте часы и запрещённые техники.
Сколько знают исполнители? Тестирование с учётными записями и документацией даёт больше находок в день, чем работа вслепую. Работа вслепую отвечает на один узкий вопрос: чего добьётся посторонний без информации. Решите, за что вы платите.
Подготовить
Учётные записи. По одной на каждую роль и в двух разных тенантах, если в продукте есть тенанты: разграничение доступа между клиентами нельзя проверить на одном клиенте. Создайте их до начала, войдите под каждой и убедитесь, что в них есть реалистичные данные.
Документация. Спецификации API, схема архитектуры, описание ролей и основных процессов. Несовершенные документы лучше, чем никаких.
Доступ. Если тестовая среда находится за VPN или списком разрешённых адресов, организуйте доступ заранее и проверьте его. Решите, остаётся ли включённым WAF. Если проверяется приложение, пропустите исполнителей через него; если проверяется WAF, оставьте его включённым и скажите об этом.
Данные. Наполните тестовую среду данными, которые похожи на настоящие по структуре, но не по содержанию. Реальные персональные данные в тестовой среде — находка ещё до начала теста.
Резервные копии. Убедитесь, что проверяемую среду можно восстановить. Исполнители осторожны; резервные копии нужны на случай, когда осторожности не хватило.
Предупредить
Службу эксплуатации и службу мониторинга — если тест не направлен на их проверку. Сообщите им адреса исполнителей и даты. Иначе первый день закончится тем, что исполнители заблокированы, а у вас открыт инцидент.
Хостинг или облачного провайдера — там, где этого требуют его правила. Крупные облачные провайдеры не требуют уведомления при тестировании собственных ресурсов в рамках опубликованных правил; небольшие хостинговые компании часто требуют.
Поставщиков, чьи системы затрагиваются. Их согласие нужно в письменном виде.
Одно контактное лицо, доступное в часы тестирования и уполномоченное принимать решения: продлить учётную запись, перезапустить сервис, остановить тест.
Подписать
- соглашение о неразглашении — до передачи всего перечисленного выше;
- договор;
- письмо-разрешение и правила проведения работ.
Для чего нужен каждый документ, описано в статье «Что делает пентест законным».
Во время теста
- Не развёртывайте изменения в проверяемой среде, не предупредив исполнителей. Находка, исчезнувшая за ночь, стоит дня разбирательств.
- Не исправляйте находки по ходу — кроме критических. Если исправили, сообщите.
- Отвечайте на вопросы быстро. Исполнитель, который спрашивает, как должна работать функция, обычно что-то нашёл.
- Ждите срочных сообщений сразу. О критической уязвимости сообщают, когда она подтверждена, а не в итоговом отчёте.
После теста
- Резюме читайте с руководством, находки — с инженерами. Они написаны для разных читателей.
- Участвуйте в разборе. Это самый дешёвый час проекта.
- Планируйте исправления по приоритету и сообщайте исполнителям, когда они развёрнуты.
- Используйте повторную проверку. Непроверенное исправление — это предположение.
- Храните отчёт как конфиденциальный документ. Пока исправления не внедрены, это инструкция по атаке на вас. Для заказчиков и аудиторов есть письмо-подтверждение.
Чек-лист
| До начала | Готово |
|---|---|
| Вопрос и объём записаны, исключения указаны | |
| Среда выбрана, окна тестирования согласованы | |
| Учётные записи созданы для каждой роли, в двух тенантах, если они есть в продукте | |
| Документация передана | |
| Сетевой доступ организован и проверен | |
| Тестовые данные на месте, реальных персональных данных нет | |
| Резервные копии проверены | |
| Эксплуатация, мониторинг и провайдеры предупреждены | |
| Контактное лицо названо | |
| NDA, договор, письмо-разрешение и правила проведения работ подписаны |
На странице каждой услуги перечислено, что нужно от вас именно для этого теста.