День 8. Подведение итогов семи дней и сканер Nmap
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!
Писать заметки во время обучения очень полезно. Теперь можно перечитать и выявить непонятные и ключевые темы, чтобы скорректировать обучение.
Чтобы дальше продолжить изучать Metasploit, необходимо разобраться с другими темами. Для начала со сканером nmap. А также с IPID сканированием, где используется зомби-хост.
Далее следует разобраться с работой некоторых протоколов (желательно, не в теории, а попробовать самому написать их упрощенную реализацию). На данный момент встретился со следующими: RDP, SMB, POP3, IMAP, ICMP, FTP, HTTP, SNMP, TCP, UDP, IP.
Познакомиться вкратце с PostgreSQL (используется в Metasploit) и MSSQL. Подробнее узнать о библиотеке ctypes (для Python).
Так же возникал вопрос о том, как антивирусы распознают вирусы и почему не заработал пассивный эксплойт.
Разобраться с синтаксисом Ruby и, для начала, поверхностно познакомиться с ассемблером.
Вот такие проблемы и направления появились после семи дней самостоятельного (вслепую) изучения компьютерной безопасности.
Утилита для исследования сети и сканер портов – nmap
На первый взгляд nmap может показаться простой и малофункциональной утилитой. Но, если вывести help, можно увидеть, как много возможностей она скрывает. Далее переходим на официальный сайт, а именно на страницу с документацией (https://nmap.org/man/ru/index.html).
Nmap обычно используют для проверки безопасности, но так же она может пригодиться системным администраторам для, например, контролирования структуры сети. Теперь попробуем самое популярное сканирование:
$ nmap -A -T4 192.168.56.102-105
Так как у меня небольшая изолированная локальная сеть, то сканирую хосты 192.168.56.102, 192.168.56.103, 192.168.56.104, 192.168.56.105
(фактически, два работают из них).
В этом типичном сканировании используются два ключа: -А
– для определения версии ОС и -Т4
для более быстрого выполнения. Была выведена достаточно подробная информация. Но не стоит забывать, сканирования осуществлялось внутри локальной сети (а не извне, как это обычно случается). К тому же, сеть никак не фильтруется. Все брандмауэры отключены. Далее переведенный help:
ОПРЕДЕЛЕНИЕ ЦЕЛИ СКАНИРОВАНИЯ:
Можно использовать сетевые имена, IP адреса, сети и т.д.
Пример: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <имя_входного_файла>: Использовать список хостов/сетей из файла
-iR <количество_хостов>: Выбрать произвольные цели
--exclude <хост1[,хост2][,хост3],...>: Исключить хосты/сети
--excludefile <имя_файла>: Исключить из сканирования список хостов/сетей, находящийся в файле
ОБНАРУЖЕНИЕ ХОСТОВ:
-sL: Сканирование с целью составления списка - просто составить список целей для сканирования
-sP: Пинг сканирование - просто определить, работает ли хост
-PN: Расценивать все хосты как работающие - пропустить обнаружение хостов
-PS/PA/PU [список_портов]: TCP SYN/ACK или UDP пингование заданных хостов
-PE/PP/PM: Пингование с использованием ICMP-эхо запросов, запросов временной метки и сетевой маски
-PO [список_протоколов]: Пингование с использованием IP протокола
-n/-R: Никогда не производить DNS разрешение/Всегда производить разрешение [по умолчанию: иногда]
--dns-servers <сервер1[,сервер2],...>: Задать собственные DNS сервера для разрешения доменных имён
--system-dns: Использовать системный DNS-преобразователь
РАЗЛИЧНЫЕ ПРИЕМЫ СКАНИРОВАНИЯ:
-sS/sT/sA/sW/sM: TCP SYN/с использованием системного вызова Connect()/ACK/Window/Maimon сканирования
-sU: UDP сканирование
-sN/sF/sX: TCP Null, FIN и Xmas сканирования
--scanflags <флаги>: Задать собственные TCP флаги
-sI <зомби_хост[:порт]>: "Ленивое" (Idle) сканирование
-sO: Сканирование IP протокола
-b <FTP_хост>: FTP bounce сканирование
--traceroute: Трассировка пути к хосту
--reason: Выводить причину, почему Nmap установил порт в определенном состоянии
ОПРЕДЕЛЕНИЕ ПОРТОВ И ПОРЯДКА СКАНИРОВАНИЯ:
-p <диапазон_портов>: Сканирование только определенных портов
Пример: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Быстрое сканирование - Сканирование ограниченного количества портов
-r: Сканировать порты последовательно - не использовать случайный порядок портов
--top-ports <количество_портов>: Сканировать <количество_портов> наиболее распространенных портов
--port-ratio <рейтинг>: Сканировать порты с рейтингом большим, чем <рейтинг>
ОПРЕДЕЛЕНИЕ СЛУЖБ И ИХ ВЕРСИЙ:
-sV: Исследовать открытые порты для определения информации о службе/версии
--version-intensity <уровень>: Устанавливать от 0 (легкое) до 9 (пробовать все запросы)
--version-light: Ограничиться наиболее легкими запросами (интенсивность 2)
--version-all: Использовать каждый единичный запрос (интенсивность 9)
--version-trace: Выводить подробную информацию о процессе сканирования (для отладки)
СКАНИРОВАНИЕ С ИПОЛЬЗОВАНИЕМ СКРИПТОВ:
-sC: эквивалентно опции --script=default
--script=<Lua скрипты>: <Lua скрипты> - это разделенный запятыми список директорий, файлов скриптов или
категорий скриптов
--script-args=<имя1=значение1,[имя2=значение2,...]>: Передача аргументов скриптам
--script-trace: Выводить все полученные и отправленные данные
--script-updatedb: Обновить базу данных скриптов
ОПРЕДЕЛЕНИЕ ОС:
-O: Активировать функцию определения ОС
--osscan-limit: Использовать функцию определения ОС только для "перспективных" хостов
--osscan-guess: Угадать результаты определения ОС
ОПЦИИ УПРАВЛЕНИЯ ВРЕМЕНЕМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ:
Опции, принимающие аргумент <время>, задаются в миллисекундах, пока вы не добавите 's' (секунды), 'm' (минуты),
или 'h' (часы) к значению (напр. 30m).
-T[0-5]: Установить шаблон настроек управления временем (больше - быстрее)
--min-hostgroup/max-hostgroup <кол_хостов>: Установить размер групп для параллельного сканирования
--min-parallelism/max-parallelism <количество_запросов>: Регулирует распараллеливание запросов
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <время>: Регулирует время ожидания ответа на запрос
--max-retries <количество_попыток>: Задает максимальное количество повторных передач запроса
--host-timeout <время>: Прекращает сканирование медленных целей
--scan-delay/--max-scan-delay <время>: Регулирует задержку между запросами
--min-rate <число>: Посылать запросы с интенсивностью не меньше чем <число> в секунду
--max-rate <число>: Посылать запросы с интенсивностью не больше чем <число> в секунду
ОБХОД БРАНДМАУЭРОВ/IDS:
-f; --mtu <значение>: Фрагментировать пакеты (опционально с заданным значениме MTU)
-D <фикт_хост1,фикт_хост2[,ME],...>: Маскировка сканирования с помощью фиктивных хостов
-S <IP_адрес>: Изменить исходный адрес
-e <интерфейс>: Использовать конкретный интерфейс
-g/--source-port <номер_порта>: Использовать заданный номер порта
--data-length <число>: Добавить произвольные данные к посылаемым пакетам
--ip-options <опции>: Посылать пакет с заданным ip опциями
--ttl <значение>: Установить IP поле time-to-live (время жизни)
--spoof-mac <MAC_адрес/префикс/название производителя>: Задать собственный MAC адрес
--badsum: Посылать пакеты с фиктивными TCP/UDP контрольными суммами
ВЫВОД РЕЗУЛЬТАТОВ:
-oN/-oX/-oS/-oG <файл>: Выводить результаты нормального, XML, s|<rIpt kIddi3,
и Grepable формата вывода, соответственно, в заданный файл
-oA <базовове_имя_файла>: Использовать сразу три основных формата вывода
-v: Увеличить уровень вербальности (задать дважды или более для увеличения эффекта)
-d[уровень]: Увеличить или установить уровень отладки (до 9)
--open: Показывать только открытые (или возможно открытые) порты
--packet-trace: Отслеживание принятых и переданных пакетов
--iflist: Вывести список интерфейсов и роутеров (для отладки)
--log-errors: Записывать ошибки/предупреждения в выходной файл нормального режима
--append-output: Добавлять выходные данные в конец, а не перезаписывать выходные файлы
--resume <имя_файла>: Продолжить прерванное сканирование
--stylesheet <путь/URL>: Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML
--webxml: Загружает таблицу стилей с Nmap.Org
--no-stylesheet: Убрать объявление XSL таблицы стилей из XML
РАЗЛИЧНЫЕ ОПЦИИ:
-6: Включить IPv6 сканирование
-A: Активировать функции определения ОС и версии, сканирование с использованием скриптов и трассировку
--datadir <имя_директории>: Определяет место расположения файлов Nmap
--send-eth/--send-ip: Использовать сырой уровень Ethernet/IP
--privileged: Подразумевать, что у пользователя есть все привилегии
--unprivileged: Подразумевать, что у пользователя нет привилегий для использования сырых сокетов
-V: Вывести номер версии
-h: Вывести эту страницу помощи
ПРИМЕРЫ:
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -PN -p 80
Со всеми ключами предстоит разобраться подробнее.
В Nmap все, что не является опцией (ключом или аргументом ключа), рассматривается как цель сканирования. Хосты можно ввести как вручную, так и из файла, причем разными способами.
Далее про обнаружение хостов:
-sL
(сканирование для составления списка)-sP
(пинг сканирование). Будут пинговаться все хосты, после чего будут выведены доступные из них.- и так далее
Ключ --traceroute
отслеживает путь к хосту, а --reason
показывает причину состояния портов и хостов.
Порты могут быть в шести состояниях:
- Открыт (open) – приложение принимает запросы.
- Закрыт (closed) – порт доступен, но не используется каким-либо приложением.
- Фильтруется (filtered) – Nmap не может определить, открыт порт или нет, так как установлена фильтрация пакетов.
- Не фильтруется (unfiltered) – порт доступен, но Nmap не может определить открыт он или закрыт. Сканирование другим способом может помочь определить, является ли порт открытым.
- Открыт|фильтруется (open|filtered) – непонятно, открыт порт или фильтруется. Такое состояние возникает при таких типах сканирования, при которых открытые порты не отвечают.
- Закрыт|фильтруется (closed|filtered) – используется только при сканировании IP ID idle типа.
А далее все расписано в руководстве программы Nmap.
Теперь, думаю, необходимо лучше разобраться с протоколами, которые обозначил в начале заметки.
Сегодня подвел итог семи дней изучения компьютерной безопасности и наметил дальнейший путь.