Gray Hat C#, Nessus, Программирование

#31 Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности. Автоматизация Nessus. Класс NessusManager.

Здравствуйте, дорогие друзья.

В листинге ниже показаны методы, которые нам необходимо реализовать в классе NessusManager, который обернет общие вызовы API и функциональные возможности Nessus в простые в использовании методы, которые мы сможем вызвать позже.

The NessusManager class
The NessusManager class

Класс NessusManager реализует IDisposable [1], чтобы мы могли использовать NessusSession для взаимодействия с API Nessus и автоматического выхода из системы при необходимости. Конструктор NessusManager принимает один аргумент, NessusSession, и присваивает его частной переменной _session [2], к которой может получить доступ любой метод NessusManager.
В Nessus предварительно настроено несколько различных политик сканирования. Мы отсортируем эти политики с помощью GetScanPolicies() и MakeRequest() [3], чтобы получить список политик и их идентификаторы из URI /editor/policy/templates. Первый аргумент CreateScan() — это идентификатор политики сканирования, а второй — диапазон CIDR для сканирования. (В этом аргументе вы также можете ввести строку IP-адресов, разделенную новой строкой.)


Третий и четвертый аргументы могут использоваться для хранения имени и описания сканирования соответственно. Мы будем использовать уникальный Guid (глобальный уникальный идентификатор, длинные строки уникальных букв и цифр) для каждого имени, поскольку наше сканирование предназначено только для целей тестирования, но по мере создания более сложной автоматизации вы можете захотеть принять систему присвоение имен сканам, чтобы их было легче отслеживать. Мы используем аргументы, переданные в CreateScan(), для создания нового объекта Jobject [4], содержащего настройки для создаваемого сканирования. Затем мы передаем этот JObject функции MakeRequest() [5], которая отправит POST-запрос к URI /scans и вернет всю необходимую информацию о конкретном сканировании, показывая, что мы успешно создали (но не запустили!) сканирование. Мы можем использовать идентификатор сканирования, чтобы сообщить о состоянии сканирования.
Создав сканирование с помощью CreateScan(), мы передаем его идентификатор методу StartScan(), который создаст POST-запрос к URI запуска /scans// и вернет ответ JSON, сообщающий нам, есть ли сканирование было запущено. Мы можем использовать GetScan() [6] для мониторинга сканирования.
Чтобы завершить работу NessusManager, мы реализуем Dispose() для выхода из сеанса [7] и затем очищаем его, присваивая переменной _session значение null.

На этом все. Всем хорошего дня!

Цикл статей по Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности.