Введение

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

Поделюсь болью от написания отчетов, чуть-чуть раскрою внутреннюю кухню кооператива в части непрерывного улучшения процессов (PDCA) и по шагам расскажу, как развернуть и использовать PwnDoc , чтобы вы могли больше «ломать» и меньше писать документацию.

Матрица Эйзенхауэра и стратегическое развитие

Казалось бы, при чём здесь это? Я посчитал действительно важным начать с описания фундаментальной проблемы человечества.

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

Матрица Эйзенхауэра
Матрица Эйзенхауэра

Мы не будем рассматривать матрицу отдельно (в интернете множество статей на эту тему), но обратимся к верхним двум квадрантам: важное срочное и важное несрочное. Они же тактические и стратегические задачи. 

Мы в кооперативе RAD COP стремимся к личному благополучию всех участников, поэтому заранее закладываем крепкий фундамент под свою работу и стараемся больше думать в стратегическом ключе. Конечно, иногда кризисы будут случаться, и с ними надо будет справляться , но если вся деятельность состоит из кризисов, а список задач состоит только из срочно-важных, то что-то явно не так с процессом управления (самоуправления), и вероятно проанализировав ситуацию можно её значительно улучшить (тут рекомендуем присмотреться к методу Любищева). Здесь, помимо обнаружения дел-паразитов, часто помогает перестройка процессов, например за счет внедрения новых технологий и автоматизации.

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

Немного о наболевшем

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

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

I know that feel BRO
I know that feel BRO

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

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

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

Мидлам+ и выше, наверное, следует больше «ломать», заниматься исследованиями, менторить джунов, а не тратить время (=деньги) на рутинное написание отчетов, хотя и здесь необходимость вычитать документ за младшими специалистами, проконтролировать качество, суметь понятным языком донести суть рекомендаций до топ-руководства компании – тоже необходимо.

Итак, в терминах ТРИЗ (Теории решения изобретательских задач) я хочу видеть следующий Идеальный Конечный Результат (ИКР) - «Автоматизируем рутину с 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

Первичная регистрация в интерфейсе
Первичная регистрация в интерфейсе

Первичная настройка

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

Настройка типов аудита
Настройка типов аудита

Создаем язык - RU.

Язык создан
Язык создан

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

Интерфейс выбора базового шаблона (пока ничего нет)
Интерфейс выбора базового шаблона (пока ничего нет)

Берем базовый шаблон по ссылке. В PwnDoc-ng ребята добавили больше деталей и красивостей чем в легаси версии, рекомендую.

Переходим в меню «Data → Templates» чтобы добавить скачанный шаблон в систему.

Интерфейс загрузки шаблонов
Интерфейс загрузки шаблонов

Закидываем базовый шаблон и жмем «Create».

Создаем базовый шаблон
Создаем базовый шаблон

Теперь в меню «Audit Types» можем выбрать свежезагруженный базовый шаблон. Назовем наш тип «Default Audit». Это может быть что угодно: внешка, внутрянка, социалка, вайфай или комплаенс по ГОСТу или ОУД4.

Создание типа аудита
Создание типа аудита

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

Меню создания новых отчетов
Меню создания новых отчетов

Добавляем первые уязвимости

Итак, у нас уже загружен базовый шаблон отчета. Настало время описать несколько уязвимостей, чтобы наконец использовать их в финальном отчете. Переходим в секцию «Vulnerabilities» и нажимаем «New Vulnerability». Категорий у нас пока нет, так что выбираем «No Category»:

Меню создания новых уязвимостей в базе
Меню создания новых уязвимостей в базе

Описываем поле с наименованием уязвимости (title), даем описание, CVSS-рейтинг и как закрывать уязвимость (Remediation). Нажимаем «Create» чтобы занести в базу нашу первую уязвимость.

Так будет выглядит первая созданная уязвимость
Так будет выглядит первая созданная уязвимость

Почти все готово. Возвращаемся в секцию «Audits» и создаем новый отчет. Указываем произвольное название и ранее созданные язык и «audit type».

Создаем новый отчет
Создаем новый отчет

I На главном экране управления отчетов можно задать компанию и контактное лицо Заказчика (добавляется отдельно в секции «Data»), временные рамки проведения работ, а также скоуп тестирования.  Для добавления уязвимостей нажимаем на значок плюс рядом с «Findings».

Интерфейс взаимодействия с отчетом о пентесте
Интерфейс взаимодействия с отчетом о пентесте

Выбираем ранее созданную уязвимость из появившегося меню. Можно нажать несколько раз для пущего эффекта:

Добавление уязвимостей в отчет
Добавление уязвимостей в отчет

Автоматически вставилось описание уязвимости и рекомендации по устранению:

Ура, автоматизация
Ура, автоматизация

По своему усмотрению укажем уязвимые хосты в секции «Details»:

Тут могла быть шутка про "смотря какой Fabric"
Тут могла быть шутка про "смотря какой Fabric"

Не забываем нажать зеленую кнопку «Save» для сохранения изменений. Все готово для тестового прогона. Выгружаем шаблон путем нажатия на кнопку загрузки:

Кликаем на кнопку загрузки
Кликаем на кнопку загрузки

Смотрим на результат

После того, как документ был скачан из WEB-интерфейса PwnDoc, откроем его в текстовом редакторе и посмотрим, что получилось. В начале отчета фигурирует организационная информация. В пункте 4.4 указывается общий перечень уязвимостей проекта.

Текст из шаблонной уязвимости подставился в документ
Текст из шаблонной уязвимости подставился в документ

Еще нас интересует пункт 5 отчета. В нем отображается подробное описание добавленных нами уязвимостей:

Детальное описание наблонной уязвимости
Детальное описание наблонной уязвимости

Как видите, автоматически проставился заголовок третьего уровня, наименование, уязвимый хост, описание и рекомендации по устранению. В следующий пункт (5.3.2) поместилась вторая уязвимость. Шикарно!

Делаем шаблоны отчета под себя

Как отмечено в официальной документации, PwnDoc использует под капотом довольно мощный и гибкий docx-шаблонизатор. Функционал достаточно хорошо описан, но мне не хватило примеров логического ветвления. Так или иначе, вполне хватает информации, чтобы сделать шаблон своей мечты.

У нас в кооперативе уже сформировался шаблон отчета. Он нам нравится по многим параметрам, удобен клиентам и может быть легко дополнен дополнительными разделами в зависимости от специфики проекта (PCI DSS, РС БР ИББС-2.6-2014, другиенормативы) поэтому я реализовал его в логике конструкций PWNdoc. В качестве первого шага по направлению к формированию собственного шаблона рекомендую посмотреть на исходники базового шаблона (упоминался ранее). Примерно в таком ключе выглядит «сырой» формат отчетов, видны шаблонизаторы:

Таблица с контактами в "сыром" виде
Таблица с контактами в "сыром" виде

Можно реализовать любую логику. Шаблонизатор поддерживает логические условия и имеет широкий набор атрибутов. Вот, например, разделение уязвимостей по уровню критичности:

Описание логического условия с разделением на уровень критичности
Описание логического условия с разделением на уровень критичности

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

Нормоконтроль тоже в деле!

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

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

Заключение и дальнейшая работа

Я инвестировал время между проектами в действительно важный и стратегический обзор. Следующими этапами будут:

  • ввод PwnDoc в тестовую эксплуатацию для наших проектов;

  • наращивание базы знаний уязвимостей;

  • обучение коллег по использованию этого инструмента;

  • итеративное улучшение шаблона отчетов по пентестам.

Кажется, что PwnDoc способен решить большинство наших задач на текущий момент. Однако мне известно, что одна отечественная ИБ компания ушла с PwnDoc на другое, коммерческое решение, а другие используют что-то свое. Возможно, что через некоторое время выйдет еще одна статья, посвященная критике PwnDoc (надеюсь, не выйдет).

Кстати, у нас в планах сделать открытый репозиторий шаблонов уязвимостей для PwnDoc. Таким образом security-сообщество сможет иметь доступ к структурированным и описанным уязвимостям, а также предлагать свои шаблоны. К слову, мы уже выложили в открытый доступ википедию по ГОСТ 57580.
 
Подписывайтесь на наш телеграм-канал, чтобы следить за анонсами.

Подписывайтесь на мой телеграм-канал, чтобы следить за мной.

И пусть квадрат Эйзенхаура поможет вам отличить важное от неважного и найти время на стратегические задачи. До новых встреч!

Комментарии (3)


  1. seepeeyou
    09.07.2024 19:26

    Такого вида отчеты бб триажеры пробегают глазами и кидают в бин.


    1. CuriV Автор
      09.07.2024 19:26

      Какого вида? В статье речь идет о фундаментальных пентестерских отчетах комплексного хаактера, а не отчеты для бб на один-два вектора


  1. srzybnev
    09.07.2024 19:26
    +1

    спасибо за статью!