×
Главная   »   Заметки   »   День 8. Подведение итогов семи дней и сканер Nmap
День 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 все, что не является опцией (ключом или аргументом ключа), рассматривается как цель сканирования. Хосты можно ввести как вручную, так и из файла, причем разными способами.

Далее про обнаружение хостов:

  1. -sL (сканирование для составления списка)
  2. -sP (пинг сканирование). Будут пинговаться все хосты, после чего будут выведены доступные из них.
  3. и так далее

Ключ --traceroute отслеживает путь к хосту, а --reason показывает причину состояния портов и хостов.

Порты могут быть в шести состояниях:

  1. Открыт (open) – приложение принимает запросы.
  2. Закрыт (closed) – порт доступен, но не используется каким-либо приложением.
  3. Фильтруется (filtered) – Nmap не может определить, открыт порт или нет, так как установлена фильтрация пакетов.
  4. Не фильтруется (unfiltered) – порт доступен, но Nmap не может определить открыт он или закрыт. Сканирование другим способом может помочь определить, является ли порт открытым.
  5. Открыт|фильтруется (open|filtered) – непонятно, открыт порт или фильтруется. Такое состояние возникает при таких типах сканирования, при которых открытые порты не отвечают.
  6. Закрыт|фильтруется (closed|filtered) – используется только при сканировании IP ID idle типа.

А далее все расписано в руководстве программы Nmap.

Теперь, думаю, необходимо лучше разобраться с протоколами, которые обозначил в начале заметки.

Сегодня подвел итог семи дней изучения компьютерной безопасности и наметил дальнейший путь.

330 просмотров
30.03.2022
Автор