Введение
В этом обзоре я расскажу о своем опыте работы с PwnDoc — инструментом который может быть полезен в автоматизации оформления отчетной документации по проектам. Многие пентестеры об этом знают и активно используют в своей работе, но, к моему удивлению, на Хабре о нем еще никто не рассказал.
Поделюсь болью от написания отчетов, чуть-чуть раскрою внутреннюю кухню кооператива в части непрерывного улучшения процессов (PDCA) и по шагам расскажу, как развернуть и использовать PwnDoc , чтобы вы могли больше «ломать» и меньше писать документацию.
Матрица Эйзенхауэра и стратегическое развитие
Казалось бы, при чём здесь это? Я посчитал действительно важным начать с описания фундаментальной проблемы человечества.
В сутках 24 часа, примерно треть уходит на сон, вторая треть на работу, а в оставшееся время нужно уместить приём пищи, развлечения, личную жизнь, прогулки, спорт, отдых, обучение и много-много всего другого. В таком насыщенном графике очень важно следовать лучшим практикам тайм-менеджмента. Так вот, матрица Эйзенхауэра как раз про это.
Мы не будем рассматривать матрицу отдельно (в интернете множество статей на эту тему), но обратимся к верхним двум квадрантам: важное срочное и важное несрочное. Они же тактические и стратегические задачи.
Мы в кооперативе RAD COP стремимся к личному благополучию всех участников, поэтому заранее закладываем крепкий фундамент под свою работу и стараемся больше думать в стратегическом ключе. Конечно, иногда кризисы будут случаться, и с ними надо будет справляться , но если вся деятельность состоит из кризисов, а список задач состоит только из срочно-важных, то что-то явно не так с процессом управления (самоуправления), и вероятно проанализировав ситуацию можно её значительно улучшить (тут рекомендуем присмотреться к методу Любищева). Здесь, помимо обнаружения дел-паразитов, часто помогает перестройка процессов, например за счет внедрения новых технологий и автоматизации.
Так, понимая что наше будущее за автоматизацией и искусственным интеллектом, мы закономерно наблюдаем за этим направлением и стараемся внедрять у себя «лучшие практики». Собственно говоря, задаче автоматизации и посвящен мой обзор.
Немного о наболевшем
Писать отчеты не так весело, как находить уязвимости. За несколько лет работы я написал множество отчетов. Какие-то из них были шаблонными, какие-то приходилось создавать с нуля.
Я общаюсь с коллегами по сфере, и действительно, многие специалисты по наступательной безопасности совершенно не любят дотошно и детализировано оформлять результаты своей работы. В некоторых компаниях всю сопутствующую рутину перекладывают на технических писателей, в других обучают пентестеров самостоятельности. Я разделяю эту боль и выражаю поддержку всем тем, у кого пока нет ресурсов на автоматизацию или готового бизнес-процесса по написанию проектной документации.
Я очень быстро выполняю свою работу. Буквально загораюсь на старте проекта и держу динамичный ритм на протяжении всего выделенного времени. У меня несколько вкладок в терминале и браузере, несколько параллельных процессов, между которыми я лавирую. У меня хорошо получается не только ломать, но писать тексты (иногда пишу в телеграм-канал ). Отчеты я тоже пишу хорошо, но это не доставляет мне удовольствия, а работать без удовольствия мне совершенно не хочется :)
В крупных компаниях есть технические писатели. Они пишут готовые отчеты по черновым, которые пишут сами специалисты. Отдельно можно выделить роль нормоконтроля, как у нас в кооперативе. Эта роль помогает выстроить правильную логическую связность секций, поправить формулировки, исключить жаргонизмы. По этому поводу мы даже сделали шуточный трек с помощью ИИ.
Несмотря на неоднозначное отношение к процессу написания отчетов, у меня есть стойкое ощущение, что джуны и интерны должны напрямую участвовать в написании проектной документации. Это очень хорошая практика: учит формулировать мысли, общаться «бизнесовым языком», повышает осведомленность. Кроме того, это кажется более этичным по отношению к техническим писателям (в нашем коопе они скорее являются аналитиками, и не просто пишут документы, а сами участвуют в проектах, проводят интервью, аудируют системы и таким образом получают такой же разнообразный опыт, как и пентестеры).
Мидлам+ и выше, наверное, следует больше «ломать», заниматься исследованиями, менторить джунов, а не тратить время (=деньги) на рутинное написание отчетов, хотя и здесь необходимость вычитать документ за младшими специалистами, проконтролировать качество, суметь понятным языком донести суть рекомендаций до топ-руководства компании – тоже необходимо.
Итак, в терминах ТРИЗ (Теории решения изобретательских задач) я хочу видеть следующий Идеальный Конечный Результат (ИКР) - «Автоматизируем рутину с 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»:
Не забываем нажать зеленую кнопку «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.
Подписывайтесь на наш телеграм-канал, чтобы следить за анонсами.
Подписывайтесь на мой телеграм-канал, чтобы следить за мной.
И пусть квадрат Эйзенхаура поможет вам отличить важное от неважного и найти время на стратегические задачи. До новых встреч!
seepeeyou
Такого вида отчеты бб триажеры пробегают глазами и кидают в бин.
CuriV Автор
Какого вида? В статье речь идет о фундаментальных пентестерских отчетах комплексного хаактера, а не отчеты для бб на один-два вектора