|
@@ -0,0 +1,178 @@
|
|
|
+
|
|
|
+## Сканирование сетевого периметра сервиса с помощью OpenSource-инструментов
|
|
|
+
|
|
|
+### Введение
|
|
|
+
|
|
|
+#### В последнее время участились случаи взлома сервисов, хакерских атак сайтов, утечки персональных данных. Не во всех кейсах это результат внешних атак, но ситуация подтверждает: сейчас как никогда важно убедиться в надежности периметра сети вашего сервиса.
|
|
|
+
|
|
|
+#### Периметр любой сети — первый эшелон защиты, отправная точка построения системы защиты информации. Цель этого текста — показать подход, позволяющий провести инвентаризацию доступных «снаружи» и потенциально уязвимых сервисов. Мы оценим их уровень защищенности и выработаем план по повышению безопасности сетевого периметра.
|
|
|
+
|
|
|
+
|
|
|
+#### Анализ текущего состояния сети пройдет по следующим шагам:
|
|
|
+
|
|
|
+#### 1. Соберем информации о белых сетях,
|
|
|
+#### 2. Подготовим хост/стенд для сканирования,
|
|
|
+#### 3. Просканируем белые сети с помощью утилиты nmap,
|
|
|
+#### 4. Соберем информацию о портах, доступных из интернета,
|
|
|
+#### 5. Определим сервисы, доступные на открытых портах,
|
|
|
+#### 6. Просканируем веб-приложения с помощью Nikto,
|
|
|
+#### 7. Интерпретируем результаты.
|
|
|
+#### 8. 3Информация о белых сетях
|
|
|
+
|
|
|
+
|
|
|
+### Соберем информацию о белых сетях
|
|
|
+
|
|
|
+#### Первый шаг в понимании топологии периметра сети — определение физической и логической схем сети. На этом этапе необходимо собрать максимальное количество информации о том, какое сетевое оборудование используется, как оно скоммутировано, какие белые сети используются на пограничном оборудовании.
|
|
|
+
|
|
|
+#### Источниками информации об используемых белых сетях могут выступить:
|
|
|
+
|
|
|
+#### 1. Составленный и поддерживаемый в актуальном состоянии план сетей (или карта сети при наличии).
|
|
|
+#### 2. Физический доступ к оборудованию. Необходимо проверить, как оно скоммутировано с другим сетевым оборудованием и иными хостами (например, серверами).
|
|
|
+#### 3. Конфигурация пограничного оборудования. Здесь необходимо проанализировать настройки интерфейсов (назначенные IP-адреса и маски сетей), таблицу маршрутизации, правила трансляции адресов, запущенные сервисы и ACL оборудования.
|
|
|
+#### 4. DNS-записи. Их список будет особенно полезным на этапе сканирования веб-приложений.
|
|
|
+#### 5. Договор с провайдером. В нем также можно найти информацию об арендованных белых IP-адресах.
|
|
|
+#### 6. Результатом сбора информации должен быть список выделенных вам белых IP-адресов. С помощью анализа конфигурации пограничного оборудования можно сразу определить перечень используемых IP-адресов – в этом случае в качестве целей сканирования следует рассматривать их.
|
|
|
+
|
|
|
+### Подготовка хоста для сканирования
|
|
|
+
|
|
|
+#### Теперь у нас есть список целей для сканирования, самое время подготовить хост, с которого будет осуществляться сканирование.
|
|
|
+
|
|
|
+#### Так как мы будем проверять состояние периметра в роли внешнего злоумышленника, лучший вариант — развернуть виртуальную машину в облаке, снаружи периметра. Высоких требований к серверу нет — под подобные задачи подойдет процентный инстанс, например, из линейки Shared Line Selectel.
|
|
|
+
|
|
|
+### Требуемый состав ПО для сканирования, которое нужно установить на сервер, следующий:
|
|
|
+
|
|
|
+#### 1. [Cетевой сканер Nmap,](https://nmap.org/)
|
|
|
+#### 2. [Cканер веб-приложений Nikto.](https://cirt.net/)
|
|
|
+
|
|
|
+#### Есть несколько вариантов подготовки тестового хоста. Вы можете:
|
|
|
+
|
|
|
+#### 1. использовать готовые сборки ОС для пентеста (например, Kali Linux) с предустановленными инструментами, которые нам нужны. Актуальный образ Kali Linux можно скачать с сайта.
|
|
|
+#### 2. развернуть виртуальную машину с ОС, например, Ubuntu 18.04. Редакция server/desktop значения не имеет, в рамках статьи демонстрация будет проводиться в консоли. Здесь нужно будет предварительно обновить пакеты и установить требуемые нам компоненты через команды:
|
|
|
+
|
|
|
+> #### sudo apt update && sudo apt upgrade && sudo apt install nmap nikto -y
|
|
|
+
|
|
|
+### Сканирование белых сетей с помощью nmap
|
|
|
+
|
|
|
+#### Перед этим необходимо проанализировать возможное влияние сканирования на работающие сервисы.
|
|
|
+
|
|
|
+#### Сканирование не предполагает деструктивного воздействия на боевые системы, но все же его лучше проводить в период наименьшей нагрузки на сервисы, предварительно оповестив системных администраторов.
|
|
|
+
|
|
|
+#### До сканирования следует выполнить следующие действия:
|
|
|
+
|
|
|
+#### 1. Определить дату и время проведения работ.
|
|
|
+#### 2. Уведомить администраторов сервисов о работах.
|
|
|
+#### 3. Внести белый IP-адрес хоста для тестирования в список исключений из проверки в системах IDS/IPS.
|
|
|
+
|
|
|
+### Перечисление списка доступных директорий для веб-ресурса
|
|
|
+
|
|
|
+#### По известному DNS-имени веб-приложения можно также вывести список расположений, доступных из интернета. Это может быть полезным для проверки настроек разграничения доступа к определенным ресурсам.
|
|
|
+
|
|
|
+#### Запустим следующую команду для сканирования веб-приложения, в котором необходимо авторизоваться для доступа к содержимому сайта:
|
|
|
+
|
|
|
+> #### $ sudo nmap --script http-enum servicename.test -v > nmap.txt
|
|
|
+
|
|
|
+#### В результате видны каталоги и файлы сайта, которые доступны без авторизации.
|
|
|
+
|
|
|
+#### Подведем промежуточные итоги, после проведения сканирования удалось получить следующие данные об исследуемых хостах:
|
|
|
+
|
|
|
+#### 1. список открытых портов,
|
|
|
+#### 2. версии используемых ОС,
|
|
|
+#### 3. версии используемого ПО,
|
|
|
+#### 4. существующие уязвимости для используемых ОС и ПО.
|
|
|
+
|
|
|
+### Сканирование веб-приложений с помощью Nikto
|
|
|
+
|
|
|
+#### У нас есть список доступных белых IP-адресов и открытых в интернет портов. Также мы выяснили, какие сервисы доступны «снаружи», какие у них версии операционных систем и программного обеспечения. На данном этапе предлагаем провести сканирование опубликованных веб-приложений с помощью инструмента Nikto.
|
|
|
+
|
|
|
+#### Nikto — сканер уязвимостей веб-серверов с открытым исходным кодом. Он выполняет всесторонние тесты, выявляя следующие уязвимости:
|
|
|
+
|
|
|
+#### 1. неверные настройки сервера и программного обеспечения
|
|
|
+#### 2. файлы и программы по умолчанию
|
|
|
+#### 3. небезопасные файлы и программы
|
|
|
+#### 4. устаревшие серверные компоненты и др.
|
|
|
+
|
|
|
+> #### Nikto не может работать в скрытом режиме. Адрес, с которого будет производиться сканирование, необходимо добавить в исключения IPS, чтобы он не был заблокирован в ходе тестирования.
|
|
|
+
|
|
|
+#### Список целей сканирования можно получить из DNS-записей, которые доступны в личном кабинете DNS-регистратора, или в настройках DNS-сервера (если вы управляете NS-сервером арендованной зоны).
|
|
|
+
|
|
|
+#### Ключи, с которыми возможен запуск сканера, можно найти в man или в описании в репозитории одного из разработчиков продукта. Параметры запуска сканирования индивидуальны и зависят от особенностей архитектуры веб-приложений.
|
|
|
+
|
|
|
+#### Самый простой запуск сканирования с сохранением результата в html-файл выглядит так:
|
|
|
+
|
|
|
+> #### $ sudo nikto -host servicename.test -o result.html -Format htm
|
|
|
+
|
|
|
+| Параметр | Назначение |
|
|
|
+|----------|------------|
|
|
|
+| -host servicename.test| целевой объект сканирования |
|
|
|
+| -ssl | использование ssl |
|
|
|
+| -Tuning 2490ab | расширенное сканирование, а именно: поиск миcконфигов и/или файлов по умолчанию; поиск уязвимостей инъекций (XSS/Script/HTML); поиск уязвимостей SQL-инъекций; возможность загрузки файлов на сервер; отсутствие аутентификации; определение версий ПО |
|
|
|
+| -o result.html | файл для записи результата |
|
|
|
+| -Format htm | формат записи результата (html) |
|
|
|
+| -Display V | расширенный вывод сканирования |
|
|
|
+| -C all | сканировать все cgi-dirs |
|
|
|
+
|
|
|
+#### Команда запуска сканирования будет выглядеть следующим образом:
|
|
|
+
|
|
|
+> #### $ sudo nikto -host servicename.test -ssl -Tuning 2490ab -o result.html -Format htm
|
|
|
+
|
|
|
+#### В результате сканирования получаем html-файл с подробно описанными результатами.
|
|
|
+
|
|
|
+### Меры по повышению уровня защищенности периметра
|
|
|
+
|
|
|
+#### Итак, по результатам сканирований у нас есть следующая информация:
|
|
|
+
|
|
|
+#### 1. список белых IP-адресов/сетей,
|
|
|
+#### 2. список DNS-имен, на которые отвечают веб-приложения,
|
|
|
+#### 3. список открытых портов в интернет,
|
|
|
+#### 4. список протоколов, используемых на открытых портах,
|
|
|
+#### 5. список используемых ОС и ПО, их версии,
|
|
|
+#### 6. список обнаруженных уязвимостей,
|
|
|
+#### 7. список мисконфигов.
|
|
|
+
|
|
|
+#### Для повышения уровня защищенности периметра сети необходимо проанализировать всю собранную информацию и определить план работ. Ниже приводим чек-лист, который можно использовать в качестве опорного плана. Учтите, что в зависимости от особенностей архитектуры периметра, используемых решений, построенных процессов он должен меняться.
|
|
|
+
|
|
|
+
|
|
|
+#### Итак, теперь вы можете провести базовую «инвентаризацию» своего сетевого периметра с помощью доступных инструментов, не требующих серьезных затрат.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#### Что такое периметр любой сети?
|
|
|
+
|
|
|
+#### Что такое Nikto?
|
|
|
+
|
|
|
+#### Первый шаг в понимании топологии периметра сети это?
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#### [Статья](https://habr.com/ru/company/selectel/blog/658175/)
|
|
|
+
|
|
|
+#### [Сетевой сканер nmap](https://nmap.org/)
|
|
|
+
|
|
|
+#### [Сканер веб-приложений Nikto](https://cirt.net/)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|