Отчет по уязвимостям
Общая информация
Начало - договор об оказании услуги. В нем указываются юридические, технические, временнЫе, ... рамки и ограничения, ответственность сторон. Часть вышеуказанной информации попадает в отчет.
Основа хорошего отчета закладывается перед началом тестирования.
Тестирование бывает White box (Организация предоставляет все данные) и Black box (тестирование вслепую).
Оценка уязвимостей и составление отчета
Перед постановкой задачи устранения уязвимости необходимо:
- Пересчитать критичность уязвимости с учетом "веса" активов и исключений. Добавление исключений должен быть формализован, и включать в себя согласование исключений и регулярный пересмотр. Для пересчета критичности может использоваться фреймворк CVSS.
- Убедиться, что уязвимость присутствует на самом деле.
- Определить владельца актива, который будет ответственным за устранение проблемы.
Примечание: Результаты отчета по уязвимостям содержат чувствительные данные, поэтому отчет должен храниться в защищенном месте и иметь строго ограниченный доступ только для тех лиц, которым он предназначен.
Типы отчетов
- Технический отчет — предназначен для инженеров, которые будут работать над устранением уязвимостей. Это наиболее исчерпывающий отчет, включающий в себя множество технических данных. Не предназначен для технически не подкованных людей.
- Отчет об изменениях — показывает изменения с момента предыдущего скана, например, новые сервисы и уязвимости, которые появились в сети, либо же наоборот, устраненные за наблюдаемый период проблемы.
- Отчет о трендах(тенденциях) — показывает изменения уровня рисков и уязвимостей за период времени. Например, отчет может показать, что в этом месяце было обнаружено на 10% больше критичных уязвимостей чем в прошлом.
- Высокоуровневый отчет — предоставляет результаты сканирования в сжатой форме, без технических подробностей. Предназначен для менеджмента и нетехнического персонала, часто включает в себя графики и диаграммы.
Внутренние требования
Шаг 1. Выбор стандарта оценки уязвимостей. Стандарт CVSS v3 используется для оценки технической серьезности уязвимости. Стандарт OWASP Risk Rating Methodology используется для оценки рисков web приложения для бизнеса. Иногда рекомендуют использовать оба стандарта.
Шаг 2. Используемая среда / правила оформления / способ хранения информации о найденных уязвимостях. Упоминаются Dradis, CherryTree, OneNote. В правилах оформления определяется набор данных для каждой уязвимости (например дата и время проведения, скриншоты, формат описания последовательности действий).
Вариант структуры.
1 Вступительная часть
1.1 Классификатор найденных уязвимостей
2. Общее описание проделанной работы
3. Технический отчет
4. Рекомендации по устранению уязвимостей
Вступительная часть
Факты, известные исполнителю и заказчику до начала работ. К ним относятся: дата проведения пентеста, методика, которая применялась (очень кратко), основные этапы тестирования, перечень систем для тестирования и исключения из объема работ, перечень узлов, а также методики, которые исполнитель обязуется не применять (социальную инженерию или атаки на отказ в обслуживании).
Классификатор уязвимостей
Таблица необходима для понимания критериев определения критичности уязвимостей, а также тот ущерб, который они могут нанести в случае успешной реализации.
В заключении вступительной части необходимо описать уточнения договора, актуализированные на этапе тестирования. Например, просьба обратить особое внимание на какой‑то новый сервис, который появился за неделю до начала тестирования, или, наоборот, в последний момент попросил исключить из исследования веб‑приложение, уязвимости в котором нашли своими силами буквально за день до начала работ и которое собираются капитально доработать прежде, чем вновь показывать пользователям.
Общее описание проделанной работы
Этот раздел должен содержать значимую для руководителей компании‑заказчика информацию о проделанной работе и ее результатах. Главные требования, предъявляемые к нему, — понятность и краткость. Сам отчет может растянуться на десятки, если не сотни страниц. Руководитель не всегда готов читать документацию такого объема, и зачастую в этом нет необходимости. Главное — понять критически важные результаты для принятия дальнейших решений. Наша задача в этом разделе — завладеть вниманием читателя с любым уровнем подготовки, описать общую ситуацию и сообщить о наиболее значимых выводах.
Технический отчет
Предназначен для технических специалистов. В нем мы, как инженеры, объясняем другим техническим специалистам, что мы нашли при тестировании и чем это может грозить.
Вариант - отчет в виде карточек по найденным уязвимостям с разделами:
| Краткое описание найденного. | Просто и доступно описываем, что удалось найти, что привлекло наше внимание. |
| Уровень риска. | Проставляем баллы по той шкале, о которой говорилось ранее. |
| Указание местонахождения в системе. | Указываем IP-адрес, DNS-имя или что‑то, что однозначно идентифицирует систему. |
| Описание инструментария. | Это необязательный пункт, но он может очень помочь инженерам со стороны заказчика, когда они решат воспроизвести твои действия. |
| Ссылка на описание уязвимости. | Чтобы чрезмерно не увеличивать размеры отчета, рекомендуем сделать внешние ссылки на описания уязвимостей из открытых баз знаний. Выбрать можно любую, например cve.mitre.org, cvedetails.com, snyk.io или rapid7.com. |
| Скриншоты и другие подтверждения. | Скриншоты нужно добавлять только при условии, что они наглядно что‑то объясняют. |
| Рекомендации, как исправить уязвимость. | В этом разделе нужно привести рекомендации производителя уязвимого программного обеспечения или свои собственные. В любом случае ответственность за устранение уязвимостей лежит на заказчике и только ему решать, как они будут устранены и будут ли. |
СVSS (Common Vulnerability Scoring System)
Открытый стандарт, позволяющий описывать уязвимости. Пример:
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
CVSS состоит из трех групп метрик, которые описывают уязвимость:
- Базовая группа. Дает представление об основных характеристиках уязвимости, не меняется со временем (например, уязвимость эксплуатируемая только при локальном доступе).
- Временная группа. Описывает характеристики, которые могу меняться со временем (например, наличие рабочего эксплойта).
- Переменные среды. Характеристики уязвимости, которые связаны с окружением пользователя. Используются для уточнения итоговой оценки уязвимости на стороне компании.
Базовая группа
В версии CVSS 3.0 сюда входят следующие метрики:
| Метрика | Описание |
| AV (Attack Vector) |
вектор атаки. Варианты:
|
| AC (Attack Complexity) |
сложность атаки. Варианты:
|
| PR (Privileges Required) |
привилегии для эксплуатации уязвимости. Варианты:
|
| UI (User Interaction) |
необходимость пользовательского взаимодействия. Варианты:
|
| S (Scope) |
граница эксплуатации. Показывает, может ли уязвимость повлиять на безопасность другого компонента системы. Варианты:
Например, уязвимость побега из контейнера, позволяющая выполнить код на хосте будет иметь свойство S:C. |
| C (Confidentiality) |
затрагивает ли уязвимость конфиденциальность информации. Варианты:
|
| I (Integrity) | затрагивает ли уязвимость целостность информации. Варианты:
|
| A (Availability) | затрагивает ли уязвимость доступность информации. Варианты:
|
Временная группа
| Метрика | Описание |
| E (Exploit Code Maturity) |
доступность средств эксплуатации. Варианты:
|
| RL (Remediation Level) |
уровень исправления. Очень важная для приоритезации метрика.
|
| RC (Report Confidence) |
достоверность отчета.
|
Переменные среды
Данные параметры проставляются аналитиком для корректировки оценки уязвимости. Например, если для компании важна доступность какого-либо актива, то специалист может выставить параметр Availability Requirement (AR) в значение High(H).
| Метрика | Описание |
| CR (Confidentiality Requirement) | требования к конфиденциальности. Варианты:
|
| IR (Integrity Requirement) | требования к целостности. Варианты:
|
| AR (Availability Requirement) | требования к доступности. Варианты:
|
Итоговая оценка
После определения метрик по стандарту CVSS рассчитывается итоговая оценка уязвимости, которая считается по шкале от 0 до 10, где 0 — отсутствие уязвимости, а 10 — максимально критичный приоритет. Формула расчета достаточно сложная, проще библиотеками python или калькулятором.
Источники:
Система хранения информации
После пробных не-лабораторных задач пришел к выводу о необходимости хранения информации о процессе. Вот вроде все просто и должно было уже давно быть отработано - но не тут-то было. Оказалось несколько иначе. Редакторов крайне много, и выбор сильно усложняется. А если добавить требования например к API - вылетают почти все)
Начнем с разделения на удобство создания отчета и удобство хранения технической информации. Потом попробую объединить эти аспекты.
Список редакторов после общего поиска
Рекомендация из статьи по документации:
- CherryTree CherryTree
- OneNote OneNote
- Dradis Dradis
Совместная работа
-
Nextcloud: https://nextcloud.com/
-
Collabora: https://www.collaboraoffice.com/
-
OnlyOffice: https://www.onlyoffice.com/
Еще CryptPad https://cryptpad.org/ для безопасности.
Также хранение данных в msf или burp enterprize edition.
Требования
Общие или особенности
| Название | Описание | Приоритет |
| Начальный уровень подготовки | Высокий. Иначе в хакеры не идут. | |
| Многопользовательский режим | Вариант локального хранения файлов + git вполне может сработать. | |
| Одновременное редактирование | Хз. Для блока не встречал необходимость. | |
| Динамическое обновление | ||
| Время запуска и настройки | Серьезная проблема. | |
| Время изучения | Основная проблема. Должно быть минимизировано. | |
| Процент выполнения блока | При большом объеме данных может быть критично. | |
| Дополнительное ПО | На примере msf необходим гибридный подход. Локальное использование должно быть из коробки. | |
| Локальное / браузер | Портирование затратная процедура. Но скорость должна быть высокой. | |
| Визуализация отчета online | Возможно для корпоративных версий. |
Редактор
| Название | Описание | Приоритет |
| Шаблоны | Шаблоны в целом для документа и для блоков. | 0 |
| Модификация символов | Мне хватает жирного шрифта и 3 вариантов размера. | |
| Цвета текста и выделения | ||
| Списки | ||
| Ссылки | ||
| Таблицы | ||
| Рисунки | ||
| Выравнивание текста | 4 варианта |
Интеграции, импорт / экспорт
| Название | Описание | Приоритет |
| Текстовые файлы | Самое логичное - одна строка в блок данных (столбец таблицы). Но только данных. Экспорт оформления в txt бессмысленно. | 0 |
| JSON / XML / ... | Сохранение проекта. | 1 |
| msf | Важно, однако здесь есть вопросы. | 2 |
| Остальные приложения | По возможности. Однако чем больше - тем выше скорость работы. Хотя небольшой скрипт решит вопрос преобразования данных в нужный формат. | 2 |
| API | Крайне желательно. Инструменты разные. | |
| Импорт шаблона из word | Звучит круто, но практически может и не нужно. |
Сначала пришел к выводу, что для локальных данных вполне подойдет cherrytree. Однако после целого дня попыток подключить python скрипты выяснилось - уже нельзя.
Затем пришел к выводу: возможно, хватит и простого редактора, как в VSC, и скриптов для шаблонизации. Хранить данные в текстовом виде, git через консоль, отчет по стандартным файлам из шаблона при помощи скрипта. Интеграция в этом случае простейшая, В качестве развития - что-то типа msfconsole, но для создания отчета. С одной стороны, сохраняется гибкость в хранении данных (всегда можно добавить отсутствующие блоки в данные). Прямой доступ к данным, txt читаются всеми. Интеграция с любым инструментом, было бы желание. Будут проблемы с общим доступом, однако и это можно обойти за счет периодических коммитов. Красивый отчет из известных путей через скрипт - без проблем, поэтому хватит хранения в виде дерева, итоговые данные в текстовом виде, одна строка - один элемент. Остается вопрос стандартизации хранения.
Сравнив ряд редакторов (Kate, Zed, Notepadqq, gedit) пришел к выводу: gedit. Легкий, без проблем в Kali, тестируем!
Gedit
sudo apt install gedit gedit-plugins
Настройка.
В меню Вид нужно включить отображение боковой панели и нижней панели.
В разделе Параметры - Модули устанавливаем "Встроенный терминал". После этого появляется возможность быстрого исполнения скриптов или запуска консоли (план на будущее). Из минусов - терминал открывается в домашней папке, в нем тоже нужно перейти в папку проекта.
Для боковой панели по умолчанию включен режим Документы. Нужно переключиться в режим Обозреватель файлов, при открытии папки проекта открыть любой файл корня проекта и ПКМ - установить корень на активный документ.
Структура информации при пентесте
Общие мысли
- Полноценный анализ со связями - сложная задача.
- Отчет является подмножеством общей получаемой информации. Не все попадает в отчет.
- Автоматизированные средства генерируют тьму ненужной информации, необходимо фильтровать. Нужна точная задача, критерии и входные / выходные форматы данных каждого блока.
- Инструменты разные, требуются фильтры для поиска
- Комбайн все-в-одном с настройками по умолчанию - херня. Найдет только общие вещи, может зависнуть на левой задаче, чем больше все-в-одном - тем больше времени занимает. Обычно очень громкие. Для нормальной работы требуется настройка.
- Открытые инструменты без поддержки исчезают быстро.
DNS
| Задача | Для списка доменов сохранить поддомены. |
| Критерии качества |
Различные ip адреса для поддоменов. |
| Входные данные | Список доменных имен. Формат: в каждой строке отдельное доменное имя. |
| Промежуточные данные | Логи из разных инструментов. |
| Результат | Список для передачи следующим инструментам. Дополнительные параметры - ip адреса, нужен ли в отчете, комментарии |
Структура папок:
| dns/ | Корневая папка для хранения dns. |
| dns/list.txt | Файл списка доменных имен для поиска. |
| dns/subdomains_*.txt | Список поддоменов. |
| dns/template.doc | Шаблон отчета. |
| dns/raw/ | Папка хранения результатов внешних инструментов. Все *.txt файлы считаются результатами. |
Задачи консоли:
| dns create | Создать структуру директории и файлы |
| dns delete | Удалить раздел |
| Сформировать из сырых файлов непересекающийся список | |
| Скопировать поддомены в список доменов для поиска доменов следующего уровня | |
| dns report | Сформировать раздел отчета на основании шаблона |
IP