Содержание статьи
Все рекомендации будут касаться обычного пентеста, а не отчета участников программы bug bounty.
Текст статьи подготовлен специалистом по тестированию на проникновение компании «Газинформсервис». Более 17 лет команда компании «Газинформсервис» решает целый ряд сложных задач заказчиков в области комплексного обеспечения информационной безопасности. Результат пентеста, проведенного специалистами компании, покажет степень защиты информационных активов вашей организации и поможет ее повысить. Подробнее о компании «Газинформсервис» и услуге пентеста можно узнать на сайте.
Работа начинается с заявки
Разработка отчета о пентесте начинается одновременно с самим пентестом. Тестируя системы, проверяя свои гипотезы, мы уже собираем огромное количество информации. Неважно, каким инструментом ты пользуешься — рекомендуемым во всех учебных пособиях CherryTree, OneNote или Dradis, который отлично подходит для совместной работы большой команды, — в любом случае к концу пентеста он должен наполниться большой базой из скриншотов, частей логов, результатами работы различных команд и прочим.
Если не сделать этого еще на этапе проведения теста, тебе просто нечем будет наполнять отчет. Звонить заказчику через неделю после завершения теста и просить запустить один из скриптов, чтобы сделать скриншоты, — вряд ли хорошая идея. Таким образом, основа хорошего отчета закладывается еще в процессе тестирования.
Структура отчета
Отчет можно разделить на два больших блока (не считая вступительной части и приложений). Первая часть — общее описание проделанной работы. Его лучше делать максимально доходчивым и не использовать сложную терминологию, чтобы понять написанное мог человек, не имеющий специальной подготовки. Как правило, эта часть предназначена для руководителя компании‑заказчика, поэтому она должна давать общее представление о проделанной работе.
Вторая часть — это текст для технических специалистов, где приводится вся необходимая информация о найденных уязвимостях, а также о том, как их можно воспроизвести. В идеале должны быть даны рекомендации и о том, как их устранить.
Отчет имеет простую структуру, однако каждая из его частей обязательна и имеет свое предназначение. Ниже приведена рекомендуемая нами схема отчета.
1 Вступительная часть
1.1 Классификатор найденных уязвимостей
2. Общее описание проделанной работы
3. Технический отчет
4. Рекомендации по устранению уязвимостей
Далее мы опишем требования к каждой из частей отчета.
Вступительная часть
Во вступительной части стоит указать факты, которые были известны и тебе, и заказчику еще до начала работ. К ним относятся: дата проведения пентеста, методика, которая применялась (очень кратко, не стоит переписывать весь NIST 800-115 и руководство OWASP), основные этапы тестирования, перечень систем для тестирования и исключения из объема работ, перечень узлов, а также методики, которые ты и твои коллеги обязуетесь не применять, например социальную инженерию или атаки на отказ в обслуживании. Об этом важно упомянуть в этой части.
Классификатор уязвимостей
Таблица необходима, чтобы в дальнейшем было понятно, по каким критериям вы определяли критичность тех или иных уязвимостей, а также тот ущерб, который они могут нанести в случае успешной реализации.
В заключении вступительной части можно описать особенности, о которых на этапе технико‑коммерческого предложения ты не договаривался с заказчиком, однако которые стали актуальными на этапе тестирования. Например, заказчик попросил обратить особое внимание на какой‑то новый сервис, который появился за неделю до начала тестирования, или, наоборот, в последний момент попросил исключить из исследования веб‑приложение, уязвимости в котором нашли своими силами буквально за день до начала работ и которое собираются капитально доработать прежде, чем вновь показывать пользователям.
Общее описание проделанной работы
Этот раздел должен содержать значимую для руководителей компании‑заказчика информацию о проделанной работе и ее результатах. Главные требования, предъявляемые к нему, — понятность и краткость. Сам отчет может растянуться на десятки, если не сотни страниц. Руководитель не всегда готов читать документацию такого объема, и зачастую в этом нет необходимости. Главное — понять критически важные результаты для принятия дальнейших решений. Наша задача в этом разделе — завладеть вниманием читателя с любым уровнем подготовки, описать общую ситуацию и сообщить о наиболее значимых выводах.
Технический отчет
Это самый объемный раздел, и предназначен он в первую очередь для технических специалистов. В нем мы, как инженеры, объясняем другим техническим специалистам, что мы нашли при тестировании и чем это может грозить.
В своей работе мы предпочитаем составлять отчет в виде карточек по найденным уязвимостям. Такая карточка состоит из следующих разделов:
- Краткое описание найденного. Просто и доступно описываем, что удалось найти, что привлекло наше внимание.
- Уровень риска. Проставляем баллы по той шкале, о которой говорилось ранее.
- Указание местонахождения в системе. Указываем IP-адрес, DNS-имя или что‑то, что однозначно идентифицирует систему.
- Описание инструментария. Это необязательный пункт, но он может очень помочь инженерам со стороны заказчика, когда они решат воспроизвести твои действия.
- Ссылка на описание уязвимости. Чтобы чрезмерно не увеличивать размеры отчета, рекомендуем сделать внешние ссылки на описания уязвимостей из открытых баз знаний. Выбрать можно любую, которая подойдет под твои потребности, например cve.mitre.org, cvedetails.com, snyk.io или rapid7.com.
- Скриншоты и другие подтверждения. Скриншоты нужно добавлять только при условии, что они наглядно что‑то объясняют.
- Рекомендации, как исправить уязвимость. В этом разделе нужно привести рекомендации производителя уязвимого программного обеспечения или свои собственные. В любом случае ответственность за устранение уязвимостей лежит на заказчике и только ему решать, как они будут устранены и будут ли.
Пример описанной карточки — на рисунке.
Не забудь включить в технический отчет и определение всех используемых терминов и расшифровку аббревиатур.
Заключение
В написании отчетов нет ничего сложного. Особенно когда перед глазами есть много примеров и понимание того, что в итоге должно получиться. «Страх чистого листа» проходит довольно быстро.
Все реальные сложности должны возникать только в процессе тестирования, поэтому всегда нужно оставаться профессионалом, быть в контакте с заказчиком и знать границы пентеста. А если не уверен — не стесняться задавать вопросы.
Технический отчет, составленный в соответствии со всеми перечисленными рекомендациями, станет руководством, которое поможет сделать инфраструктуру компании безопаснее.