#29 Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности. Автоматизация Nessus.
Здравствуйте, дорогие друзья.
Nessus — популярный и мощный сканер уязвимостей, использующий базу данных известных уязвимостей, чтобы оценить, отсутствуют ли в данной системе в сети какие-либо исправления или уязвима ли она для известных эксплойтов. В этом разделе я покажу, как пишутся классы для взаимодействия с API Nessus
для автоматизации, настройки и запуска сканирования уязвимостей.
Nessus изначально разрабатывался как сканер уязвимостей с открытым исходным кодом, но в 2005 году он стал закрытым после того, как его приобрела компания Tenable Network Security. На момент написания этой статьи компания Tenable предлагает семидневную пробную версию Nessus Professional и ограниченную версию Nessus Home. Самая большая разница между ними заключается в том, что Nessus Home позволяет сканировать только 16 IP-адресов одновременно, но Home должно быть достаточно, чтобы вы могли запустить примеры из этого раздела, и ознакомиться с программой. Nessus особенно популярен среди профессионалов, которые помогают сканировать сети других компаний и управлять ими. Следуйте инструкциям на сайте Tenable https://www.tenable.com/products/nessus-home/, чтобы установить и настроить Nessus Home.
Многим организациям требуется регулярное сканирование уязвимостей и исправлений для управления и выявления рисков в сети, а также в целях обеспечения соответствия. Мы будем использовать Nessus для достижения этих целей путем создания классов, которые помогут нам выполнять сканирование уязвимостей без аутентификации на хостах в сети.
REST и Nessus API
Появление веб-приложений и API привело к появлению архитектуры API, называемой REST API. REST (передача репрезентативного состояния) — это способ доступа и взаимодействия с ресурсами (такими как учетные записи пользователей или сканирование уязвимостей) на сервере, обычно через HTTP, с использованием различных методов HTTP (GET, POST, DELETE и PUT). Методы HTTP описывают наше намерение сделать HTTP-запрос (например, хотим ли мы создать ресурс или изменить ресурс?), что-то вроде операций CRUD (создание, чтение, обновление, удаление) в базах данных.
Например, взгляните на следующий простой HTTP-запрос GET, который похож на операцию чтения базы данных (например, SELECT * FROM users WHERE id = 1):
В этом примере мы запрашиваем информацию для пользователя с идентификатором 1. Чтобы получить информацию для идентификатора другого пользователя, Вы можете заменить 1 [1] в конце URI на идентификатор этого пользователя.
Чтобы обновить информацию для первого пользователя, HTTP-запрос может выглядеть следующим образом:
1 2 3 4 5 |
POST /users/1 HTTP/1.0 Host: 192.168.0.11 Content-Type: application/json Content-Length: 24 {"name": "Brandon Perry"} |
В нашем гипотетическом RESTful API предыдущий запрос POST обновит имя первого пользователя на Брэндон Перри. Обычно запросы POST используются для обновления ресурса на веб-сервере.
Чтобы полностью удалить учетную запись, используйте DELETE, например:
1 2 |
DELETE /users/1 HTTP/1.0 Host: 192.168.0.11 |
API Nessus будет вести себя аналогичным образом. При использовании API мы будем отправлять JSON на сервер и получать его с сервера, как в этих примерах. Классы, которые мы напишем в этом разделе, предназначены для управления способами взаимодействия с REST API.
После установки Nessus вы сможете найти документацию по REST API Nessus по адресу https://:8834/api. Мы рассмотрим лишь некоторые из основных вызовов API, используемых для управления Nessus при выполнении сканирования уязвимостей.
На этом все. Всем хорошего дня!