Введение
В этом обзоре я расскажу о своем опыте работы с PwnDoc — инструментом который может быть полезен в автоматизации оформления отчетной документации по проектам. Многие пентестеры об этом знают и активно используют в своей работе, но, к моему удивлению, на Хабре о нем еще никто не рассказал.
Поделюсь болью от написания отчетов, чуть-чуть раскрою внутреннюю кухню кооператива в части непрерывного улучшения процессов (PDCA) и по шагам расскажу, как развернуть и использовать PwnDoc , чтобы вы могли больше «ломать» и меньше писать документацию.
Матрица Эйзенхауэра и стратегическое развитие
Казалось бы, при чём здесь это? Я посчитал действительно важным начать с описания фундаментальной проблемы человечества.
В сутках 24 часа, примерно треть уходит на сон, вторая треть на работу, а в оставшееся время нужно уместить приём пищи, развлечения, личную жизнь, прогулки, спорт, отдых, обучение и много-много всего другого. В таком насыщенном графике очень важно следовать лучшим практикам тайм-менеджмента. Так вот, матрица Эйзенхауэра как раз про это.
![Матрица Эйзенхауэра Матрица Эйзенхауэра](https://habrastorage.org/getpro/habr/upload_files/fe9/a0e/616/fe9a0e616dbf3ac98e6c2b4493ff16a9.png)
Мы не будем рассматривать матрицу отдельно (в интернете множество статей на эту тему), но обратимся к верхним двум квадрантам: важное срочное и важное несрочное. Они же тактические и стратегические задачи.
Мы в кооперативе RAD COP стремимся к личному благополучию всех участников, поэтому заранее закладываем крепкий фундамент под свою работу и стараемся больше думать в стратегическом ключе. Конечно, иногда кризисы будут случаться, и с ними надо будет справляться , но если вся деятельность состоит из кризисов, а список задач состоит только из срочно-важных, то что-то явно не так с процессом управления (самоуправления), и вероятно проанализировав ситуацию можно её значительно улучшить (тут рекомендуем присмотреться к методу Любищева). Здесь, помимо обнаружения дел-паразитов, часто помогает перестройка процессов, например за счет внедрения новых технологий и автоматизации.
Так, понимая что наше будущее за автоматизацией и искусственным интеллектом, мы закономерно наблюдаем за этим направлением и стараемся внедрять у себя «лучшие практики». Собственно говоря, задаче автоматизации и посвящен мой обзор.
Немного о наболевшем
Писать отчеты не так весело, как находить уязвимости. За несколько лет работы я написал множество отчетов. Какие-то из них были шаблонными, какие-то приходилось создавать с нуля.
Я общаюсь с коллегами по сфере, и действительно, многие специалисты по наступательной безопасности совершенно не любят дотошно и детализировано оформлять результаты своей работы. В некоторых компаниях всю сопутствующую рутину перекладывают на технических писателей, в других обучают пентестеров самостоятельности. Я разделяю эту боль и выражаю поддержку всем тем, у кого пока нет ресурсов на автоматизацию или готового бизнес-процесса по написанию проектной документации.
![I know that feel BRO I know that feel BRO](https://habrastorage.org/getpro/habr/upload_files/364/543/32c/36454332c4b5463131c31e4023699565.png)
Я очень быстро выполняю свою работу. Буквально загораюсь на старте проекта и держу динамичный ритм на протяжении всего выделенного времени. У меня несколько вкладок в терминале и браузере, несколько параллельных процессов, между которыми я лавирую. У меня хорошо получается не только ломать, но писать тексты (иногда пишу в телеграм-канал ). Отчеты я тоже пишу хорошо, но это не доставляет мне удовольствия, а работать без удовольствия мне совершенно не хочется :)
В крупных компаниях есть технические писатели. Они пишут готовые отчеты по черновым, которые пишут сами специалисты. Отдельно можно выделить роль нормоконтроля, как у нас в кооперативе. Эта роль помогает выстроить правильную логическую связность секций, поправить формулировки, исключить жаргонизмы. По этому поводу мы даже сделали шуточный трек с помощью ИИ.
Несмотря на неоднозначное отношение к процессу написания отчетов, у меня есть стойкое ощущение, что джуны и интерны должны напрямую участвовать в написании проектной документации. Это очень хорошая практика: учит формулировать мысли, общаться «бизнесовым языком», повышает осведомленность. Кроме того, это кажется более этичным по отношению к техническим писателям (в нашем коопе они скорее являются аналитиками, и не просто пишут документы, а сами участвуют в проектах, проводят интервью, аудируют системы и таким образом получают такой же разнообразный опыт, как и пентестеры).
Мидлам+ и выше, наверное, следует больше «ломать», заниматься исследованиями, менторить джунов, а не тратить время (=деньги) на рутинное написание отчетов, хотя и здесь необходимость вычитать документ за младшими специалистами, проконтролировать качество, суметь понятным языком донести суть рекомендаций до топ-руководства компании – тоже необходимо.
Итак, в терминах ТРИЗ (Теории решения изобретательских задач) я хочу видеть следующий Идеальный Конечный Результат (ИКР) - «Автоматизируем рутину с PwnDoc , больше «ломаем», учимся, творим, отдыхаем и радуемся жизни».
Хочется иметь инструмент, в котором были бы:
Гибкая система шаблонов;
Конечный результат экспортируется в docx;
Режим работы с несколькими пользователями (в реальном времени);
Удобный UI и UX;
Возможность добавлять шаблоны описания уязвимостей в базу данных и выбирать только то, что нужно;
Открытый исходный код;
Хотя бы маломальская поддержка инструмента с реагированием на пул реквесты.
Встречайте, PwnDoc !
Об инструменте PwnDoc я слышал сильно ранее, но откладывал, решая срочно-важные задачи, ровно до того момента, пока я не словил фрустрацию от написания отчета и не выкроил время для стратегических задач. Вдобавок коллега подсказал, что этот инструмент хорош собой и стоит его посмотреть. Действительно, он как раз позволяет реализовать хотелки выше.
Примерно неделю я провел за ресерчем и, кажется, реализовал все то, что нужно мне на текущем этапе для автоматизированного написания отчета. И сейчас мы в круге пентестеров обсуждаем внедрение этого инструмента как базового стандарта для всех наших специалистов.
Спасибо Сергею Зыбневу, автору телеграм-канала Похек, за наводку в сторону проекта PWNdoc-ng, хорошего форка легаси PwnDoc (далее просто PwnDoc).
Ниже по тексту я приведу небольшую инструкцию по работе с этим инструментом и покажу, на что он способен. У PwnDoc есть очень классная документация, дальше я буду ссылаться на неё и свой опыт использования этого инструмента.
Разворачивание
Сперва клонируем репозиторий в любое место и разворачиваем через через docker-compose.
git clone https://github.com/pwndoc-ng/pwndoc-ng.git
cd pwndoc-ng
docker-compose.up –d
Для боевого использования PwnDoc рекомендуется закинуть свой SSL-сертификат и поменять значения jwt-секретов в исходниках). Также очень рекомендую закрыть web-интерфейс за VPN или дополнительную парольную защиту на уровне web-сервера.
Сразу после этого начнут скачиваться базовые образы контейнеров. Сборка может занять продолжительное время (привет npm). На этапе тестов у меня возникла проблема, что виртуалка с одним ядром не может собрать контейнер (имейте это в виду), пришлось применить сноровку и выгрузить готовый образ контейнера с рабочей станции на сервер. WEB-интерфейс будет доступен по адресу https://localhost:8443
![Первичная регистрация в интерфейсе Первичная регистрация в интерфейсе](https://habrastorage.org/getpro/habr/upload_files/a74/933/937/a749339377ef1eef4a05241904ef2b51.png)
Первичная настройка
При самом первом входе после создания административного аккаунта вам будет предложено настроить язык по умолчанию и типы аудитов.
![Настройка типов аудита Настройка типов аудита](https://habrastorage.org/getpro/habr/upload_files/1b5/7d7/441/1b57d744178d5e461544a45eb6f3a56b.png)
Создаем язык - RU.
![Язык создан Язык создан](https://habrastorage.org/getpro/habr/upload_files/281/f7e/80e/281f7e80e7658e3aacefde3d8557ecab.png)
Следующим шагом добавляем тип аудита, но сперва нужно загрузить базовый шаблон, так как выбирать нам пока не из чего.
![Интерфейс выбора базового шаблона (пока ничего нет) Интерфейс выбора базового шаблона (пока ничего нет)](https://habrastorage.org/getpro/habr/upload_files/3c1/aba/a64/3c1abaa649a09a5bd38c145b4cfb6dd6.png)
Берем базовый шаблон по ссылке. В PwnDoc-ng ребята добавили больше деталей и красивостей чем в легаси версии, рекомендую.
Переходим в меню «Data → Templates» чтобы добавить скачанный шаблон в систему.
![Интерфейс загрузки шаблонов Интерфейс загрузки шаблонов](https://habrastorage.org/getpro/habr/upload_files/f72/b53/0a2/f72b530a2cbf4348a18188d27ce78d6f.png)
Закидываем базовый шаблон и жмем «Create».
![Создаем базовый шаблон Создаем базовый шаблон](https://habrastorage.org/getpro/habr/upload_files/e84/3c2/752/e843c27528cc6a9350f943a7ec05a76b.png)
Теперь в меню «Audit Types» можем выбрать свежезагруженный базовый шаблон. Назовем наш тип «Default Audit». Это может быть что угодно: внешка, внутрянка, социалка, вайфай или комплаенс по ГОСТу или ОУД4.
![Создание типа аудита Создание типа аудита](https://habrastorage.org/getpro/habr/upload_files/9ba/0b0/f28/9ba0b0f28daeed3fc06e88d185328b44.png)
Теперь у нас разблокировано меню создания новых отчетов.
![Меню создания новых отчетов Меню создания новых отчетов](https://habrastorage.org/getpro/habr/upload_files/7c2/9f6/738/7c29f6738af9845dbb78577731becb2b.png)
Добавляем первые уязвимости
Итак, у нас уже загружен базовый шаблон отчета. Настало время описать несколько уязвимостей, чтобы наконец использовать их в финальном отчете. Переходим в секцию «Vulnerabilities» и нажимаем «New Vulnerability». Категорий у нас пока нет, так что выбираем «No Category»:
![Меню создания новых уязвимостей в базе Меню создания новых уязвимостей в базе](https://habrastorage.org/getpro/habr/upload_files/5a4/447/cc9/5a4447cc92099244323b656ab8ce2be1.png)
Описываем поле с наименованием уязвимости (title), даем описание, CVSS-рейтинг и как закрывать уязвимость (Remediation). Нажимаем «Create» чтобы занести в базу нашу первую уязвимость.
![Так будет выглядит первая созданная уязвимость Так будет выглядит первая созданная уязвимость](https://habrastorage.org/getpro/habr/upload_files/3bc/6ec/e0c/3bc6ece0c3fe38c0220ecd0967b83b87.png)
Почти все готово. Возвращаемся в секцию «Audits» и создаем новый отчет. Указываем произвольное название и ранее созданные язык и «audit type».
![Создаем новый отчет Создаем новый отчет](https://habrastorage.org/getpro/habr/upload_files/602/979/00b/60297900be1bce059eb62b19438a8203.png)
I На главном экране управления отчетов можно задать компанию и контактное лицо Заказчика (добавляется отдельно в секции «Data»), временные рамки проведения работ, а также скоуп тестирования. Для добавления уязвимостей нажимаем на значок плюс рядом с «Findings».
![Интерфейс взаимодействия с отчетом о пентесте Интерфейс взаимодействия с отчетом о пентесте](https://habrastorage.org/getpro/habr/upload_files/e5d/3cc/77c/e5d3cc77cc934e8e416024ca34547bd9.png)
Выбираем ранее созданную уязвимость из появившегося меню. Можно нажать несколько раз для пущего эффекта:
![Добавление уязвимостей в отчет Добавление уязвимостей в отчет](https://habrastorage.org/getpro/habr/upload_files/e72/b88/ef4/e72b88ef4704965fb129bd1224cdaff8.png)
Автоматически вставилось описание уязвимости и рекомендации по устранению:
![Ура, автоматизация Ура, автоматизация](https://habrastorage.org/getpro/habr/upload_files/f10/0f9/77c/f100f977c339c4f769d654abdd3f800f.png)
По своему усмотрению укажем уязвимые хосты в секции «Details»:
![Тут могла быть шутка про "смотря какой Fabric" Тут могла быть шутка про "смотря какой Fabric"](https://habrastorage.org/getpro/habr/upload_files/5f5/152/577/5f5152577825a137bfe767fe28bcf838.png)
Не забываем нажать зеленую кнопку «Save» для сохранения изменений. Все готово для тестового прогона. Выгружаем шаблон путем нажатия на кнопку загрузки:
![Кликаем на кнопку загрузки Кликаем на кнопку загрузки](https://habrastorage.org/getpro/habr/upload_files/2a1/7a4/ed3/2a17a4ed3e49f10aec378bc35f848d11.png)
Смотрим на результат
После того, как документ был скачан из WEB-интерфейса PwnDoc, откроем его в текстовом редакторе и посмотрим, что получилось. В начале отчета фигурирует организационная информация. В пункте 4.4 указывается общий перечень уязвимостей проекта.
![Текст из шаблонной уязвимости подставился в документ Текст из шаблонной уязвимости подставился в документ](https://habrastorage.org/getpro/habr/upload_files/604/044/f7c/604044f7cf5b5978b34a4ef6ed428ce2.png)
Еще нас интересует пункт 5 отчета. В нем отображается подробное описание добавленных нами уязвимостей:
![Детальное описание наблонной уязвимости Детальное описание наблонной уязвимости](https://habrastorage.org/getpro/habr/upload_files/775/2f3/148/7752f3148201195a55e3156e9ba640ca.png)
Как видите, автоматически проставился заголовок третьего уровня, наименование, уязвимый хост, описание и рекомендации по устранению. В следующий пункт (5.3.2) поместилась вторая уязвимость. Шикарно!
Делаем шаблоны отчета под себя
Как отмечено в официальной документации, PwnDoc использует под капотом довольно мощный и гибкий docx-шаблонизатор. Функционал достаточно хорошо описан, но мне не хватило примеров логического ветвления. Так или иначе, вполне хватает информации, чтобы сделать шаблон своей мечты.
У нас в кооперативе уже сформировался шаблон отчета. Он нам нравится по многим параметрам, удобен клиентам и может быть легко дополнен дополнительными разделами в зависимости от специфики проекта (PCI DSS, РС БР ИББС-2.6-2014, другиенормативы) поэтому я реализовал его в логике конструкций PWNdoc. В качестве первого шага по направлению к формированию собственного шаблона рекомендую посмотреть на исходники базового шаблона (упоминался ранее). Примерно в таком ключе выглядит «сырой» формат отчетов, видны шаблонизаторы:
![Таблица с контактами в "сыром" виде Таблица с контактами в "сыром" виде](https://habrastorage.org/getpro/habr/upload_files/837/a8d/6fd/837a8d6fd33d6063697e730bc4690454.png)
Можно реализовать любую логику. Шаблонизатор поддерживает логические условия и имеет широкий набор атрибутов. Вот, например, разделение уязвимостей по уровню критичности:
![Описание логического условия с разделением на уровень критичности Описание логического условия с разделением на уровень критичности](https://habrastorage.org/getpro/habr/upload_files/da3/1de/f47/da31def476f348acd4c5a357f7f564ad.png)
То же самое можно сделать и с разделением на внешний/внутренний периметр, аудит безопасности беспроводный сетей и социотехническое тестирование методами социальной инженерии – любые логические условия с любыми атрибутами.
Нормоконтроль тоже в деле!
PwnDoc имеет очень классную возможность для ревью готовых отчетов об аудите. В документации к проекту это достаточно подробно описано. Необходимо включить соответствующую настройку и выдать роль на необходимый аккаунт.
Эта функция является незаменимой в наших процессах, так как все готовые отчеты проходят сперва через нормоконтроль перед отправкой Заказчику. На этом этапе происходит вычитка, проверка на логическую связность и оформление. С помощью PwnDoc этот процесс можно сделать более прозрачным, а функционал по настройке минимального числа подтверждений позволит внедрить роль администратора проекта, ответственного за техническую часть и также учитывать его ревью.
Заключение и дальнейшая работа
Я инвестировал время между проектами в действительно важный и стратегический обзор. Следующими этапами будут:
ввод PwnDoc в тестовую эксплуатацию для наших проектов;
наращивание базы знаний уязвимостей;
обучение коллег по использованию этого инструмента;
итеративное улучшение шаблона отчетов по пентестам.
Кажется, что PwnDoc способен решить большинство наших задач на текущий момент. Однако мне известно, что одна отечественная ИБ компания ушла с PwnDoc на другое, коммерческое решение, а другие используют что-то свое. Возможно, что через некоторое время выйдет еще одна статья, посвященная критике PwnDoc (надеюсь, не выйдет).
Кстати, у нас в планах сделать открытый репозиторий шаблонов уязвимостей для PwnDoc. Таким образом security-сообщество сможет иметь доступ к структурированным и описанным уязвимостям, а также предлагать свои шаблоны. К слову, мы уже выложили в открытый доступ википедию по ГОСТ 57580.
Подписывайтесь на наш телеграм-канал, чтобы следить за анонсами.
Подписывайтесь на мой телеграм-канал, чтобы следить за мной.
И пусть квадрат Эйзенхаура поможет вам отличить важное от неважного и найти время на стратегические задачи. До новых встреч!
seepeeyou
Такого вида отчеты бб триажеры пробегают глазами и кидают в бин.
CuriV Автор
Какого вида? В статье речь идет о фундаментальных пентестерских отчетах комплексного хаактера, а не отчеты для бб на один-два вектора