1.Вступление
Как мы понимаем, не собрав информацию про цель и ее уязвимости – мы попросту не сможем ее атаковать, так что это первый основный этап атаки.
Самые основные этапы сбора информации:
Сегодня мы будем заниматься сбором информации про локальную сеть, устройства в сети и сетевое оборудование. Разберем несколько возможных и популярных ситуаций и кейсов при сборе информации.
INPT - это начальный этап пентеста, который включает в себя первичный анализ системы и её инфраструктуры с точки зрения безопасности. В рамках INPT проводится оценка сетевой инфраструктуры, поиск открытых портов, определение служб, запущенных на серверах, анализ возможных уязвимостей и оценка уровня риска. Этот этап позволяет определить общую картину уязвимостей и проблем, с которыми может столкнуться система. Тестированной системой есть физическая сеть, но иногда мы можем работать с удаленной сетью способом подключению к туннелю или VPN каналу. Все тактики которые я опишу в этой статье, актуальны для обеих случаев.
Представьте, что инженеры, разработавшие корпоративную сеть, сидят с вами за одним столом и демонстрируют вам огромную схему, из которой становится понятно строение зон и подсетей, расположение компонентов и почему сеть устроена именно так. Ваша задача на этапе сбора информации в ходе теста на проникновение заключается в том, чтобы максимально приблизиться к этому уровню понимания без помощи сетевых инженеров.Чем больше информации вы получите, тем выше ваши шансы обнаружить слабое место.
Для упрощения анализа придумали такие термины как Черный ящик, Белый ящик и Серый ящик.
Еще в мире пентеста, есть два вида Information Gathering: Активный сбор информации и пассивный сбор информации.
К активному сбору информации относится реальный сбор информации про цель способом сетевого общение с ней (определение, сканирование информации) с этим видом сбора информации мы будем сегодня работать. Пассивный сбор информации – сбор информации с отпечатков хостов, целей в сети (Просмотр сетевых логов, дамп сетевого траффика и т.д.).
Ящики:
Черный ящик – кейс когда мы ничего не знаем от атакуемой сети или цели. Мы подключаемся к сети и начинаем собирать полную информацию про сеть.
Серый ящик – кейс когда мы частично имеем хоть какую то информацию об сети (Например: список подсетей, список IP адресов, список ОС)
Белый ящик – кейс когда у нас есть полная информация про сеть, и нам нужно только протестировать ее на безопасность.
С методом черного ящика хакеры встречаются в 80%, особенно при незаконных взломах.
С сером ящиком часто встречаются частные пентестеры которые тестируют инфраструктуру сети на заказ, заказчик предоставляет некоторую информацию про сеть.
Ну а белый ящик – это большая редкость, актуально только при тестировании сети на заказ.
В некоторых случаях нам надо собрать только небольшой список информации про сеть, в некоторых детальный список с информацией про каждый хост, а в некоторых собрать информацию оставшись полностью незаметным в сети.
Об этих всех методах сбора информации мы и поговорим в этой статье!
P.S Советую сразу записывать найденную информацию в заметки, чтобы было легше развиватся при поиске новой информации. Записывайте например: список активных подсетей, список активных хостов в сети, список сетевых служб на портах и вся информация этого рода.
После сбора информации мы сможем выписать себе список активных IP адресов и рабочих подсетей.
Сперва узнаем подсеть в которой мы находимся, командой
Для быстрого определения активных устройств в подсети будем использовать инструмент nmap с флагом -sn
Тем самым, инструмент выявит активные IP адреса с помощью ICMP пингования. Это работает таким образом: наш компютер отправляет ICMP запрос на хост в сети, если хост выдает нам такой же ICMP ответ это значит что хост активен в сети, а если не отправляет значит такого IP адреса нет, хост выключен, или на нем стоит очень жесткий файрволл (но обходить это также научимся).
После вывода мы увидим такую картину:
Теперь мы будем работать с этими IP адресами.
Также мы можем использовать более удобные инструмента, для графического создания карты сети, например Advanced IP Scanner.
Скачать: https://www.advanced-ip-scanner.com/
1.Открываем инструмент
Мы увидим такой интерфейс:
2. В поле посередине вводим подсеть которую хотим просканировать.
3.Запускаем сканирование кнопкой “Сканировать”
После сканирования мы увидим такую картину:
Инструмент выдаст нам список активных IP адресов в подсети.
Эта информация будет очень полезна при этапе поиска уязвимостей и построения векторов атак.
Сперва просканируем порты и рассмотрим несколько флагов для инструмента Nmap, которые нам в этом помогут.
Шаблон вывода информации после использования этих команд будет таким:
Мы исследовали открытые порты, теперь займемся поиском версий и баннеров служб (сервисов, протоколов), висящих на этих портах.
Сетевые службы — это программы, которые работают на компьютере или другом сетевом устройстве и предоставляют определенные функции для обмена данными и выполнения задач в сети. Они используют протоколы для общения с другими устройствами и предоставляют разнообразные услуги.
Мой любимый флаг в скрипте nmap это -sV, он сканирует открытые порты и определяет версии и баннера служб, висящих на этих портах.
Для полного сканирования цели, выполним эту команду:
После выполнения команды вот такую картину мы увидим:
У нас добавилась колонка Version, которая имеет информацию про версии служб.
После сканирования мы увидим ОС и ее версию, которую использует хост.
Чтобы не задалбливаться кучей флагов, используйте флаг -A он проводит полное сканирование, собирает информацию про открытые порты, версии служб, определяет OS, использует встроенные NSE скрипты для сбора информации (об них мы также поговорим в статье) и много чего другого!
Почти в каждой подсети, есть адрес который заканчивается числом 1 например: 192.168.0.1, 10.10.8.1, 172.178.24.1
Методом пинговки хостов в разных подсетях которые заканчиваются на .1, мы можем определить активные подсети в сети.
Приведу в пример, если ваша актуальная подсеть к которой вы сейчас подключены выглядит так: 192.168.88.1/24 это значит что у вам может быть доступ к подсетям например: 192.168.0.1/24, 192.168.1.1/24, 192.168.12.1/24 и все в этом роде, как мы видим – очень часто изменяются только предпоследнее значение после точки.
Для полного сканирования всех-всех подсетей выполните эту команду:
После удачного определения подсетей, добавим их в список целей и просканируем их на наличие девайсов в следующей главе.
Для определения активных устройств в сети через ICMP использовать такие инструменты как ping и nmap.
Команда
Для проверки наличия хоста в сети выполните команду:
Также инструмент nmap имеет в себе встроенный флаг -sn который проводит ICMP сканирование на наличие активных хостов в подсети.
Преимущество ICMP сканирования в nmap, в том, что тут мы можем просканировать сразу целую подсеть или даже несколько!
Nmap -sn <ваша подсеть> в нашем случае это будет nmap -sn 192.168.88.1/24
Получаем вывод со списком активных хостов в подсети.
Но для этой проблемы есть решение! На таких хостах часто могут быть открыты RMI порты. RMI порты – это самые популярные порты на которых висят самые популярные службы удаленного доступа. Список этих портов – 21,22,23,25,80,443,3389,2222
Файрволл отвергает ICMP пакеты, но не отвергает пакеты для протоколов, которые открыты для удаленного доступа к системе.
Теперь снова просканируем всю подсеть на наличие этих открытых портов в хостах внутри сети.
Анализируя вывод инструмента про хосты, вы можете найти отличия, если у вас в этом выводе есть хосты которых нет в предыдущем выводе.
Для этого нам идеально подойдет инструмент Nmap.
Сканирование портов:
Сканирование портов - это процесс, при котором исследуются порты на удаленных компьютерах или устройствах, чтобы определить, какие из них открыты, закрыты или фильтруются сетевыми устройствами (например, межсетевыми экранами или брандмауэрами). Это важная часть информационного сбора и анализа сетевой инфраструктуры. Существует несколько методов сканирования портов:
TCP-сканирование (TCP Connect Scan): Это наиболее распространенный метод сканирования портов. При таком сканировании сканер (например, Nmap) пытается установить реальное TCP-соединение с целевым портом. Если порт открыт, соединение устанавливается, и это указывает на открытый порт. Если порт закрыт или фильтруется, сканирующий компьютер получит ответ RST (сброс TCP-соединения) или не получит ответ вовсе.
SYN/ACK-сканирование (Half-Open Scan): В этом методе сканирования сканер отправляет SYN-пакеты (начало установки TCP-соединения) на целевой порт. Если порт открыт, целевой компьютер отправит ответ SYN/ACK. Однако сканер не завершит установку соединения, а отправит RST, чтобы завершить попытку. Это позволяет определить, какие порты открыты.
UDP-сканирование: В отличие от TCP, где ответ обязателен, UDP не требует установления соединения. При UDP-сканировании сканер отправляет UDP-пакет на целевой порт. Если порт открыт, целевой компьютер может отправить ответ. Однако часто нет ответа, так как UDP пакеты могут быть отброшены.
NULL, FIN и Xmas-сканирование: Эти методы отправляют специальные комбинации флагов TCP на целевой порт. Если порт закрыт, должен быть отправлен ответ RST. Если порт открыт, ответа не будет.
Полный скан (Connect scan): При этом методе сканирования сканер устанавливает полное TCP-соединение с каждым сканируемым портом. Это может быть медленнее, но такой метод обычно более надежен и трудно обнаруживается.
Выбор метода сканирования зависит от целей и ограничений, но TCP-сканирование является наиболее широко используемым, так как оно дает точные результаты и работает в большинстве случаев.
Что такое службы:
Службы представляют собой программы или процессы, которые работают на определенных портах на компьютере. Каждая служба обрабатывает определенные типы запросов и предоставляет определенные функциональные возможности. Примеры служб: веб-серверы (HTTP на порту 80), почтовые серверы (SMTP на порту 25), базы данных (MySQL на порту 3306) и др.
Как получать баннера служб: Баннер службы - это информация, предоставляемая службой о себе, как правило, в начале сеанса. Баннер может включать в себя версию службы, имя программы и даже дополнительные сведения о конфигурации.
Nmap может извлекать баннеры служб с помощью техники под названием "Service Detection". Она заключается в отправке определенных запросов к портам, чтобы получить ответы, которые содержат информацию о службе. Это позволяет узнать, какие версии служб запущены и какие уязвимости могут быть связаны с этими версиями.
Основные флаги для сканирования портов:
Флаги для получения информации о службах:
Комбинируя эти флаги, вы можете настроить Nmap для выполнения определенных видов сканирования и получения дополнительной информации о службах на целевом хосте.
Существует несколько способов определения ОС, включая методы на основе TTL (Time To Live) и методы, использующие инструмент nmap.
Определение операционной системы через TTL:
В этом методе анализируется начальное значение TTL, которое устанавливается операционной системой для исходящих пакетов. Обратите внимание, что этот метод не всегда является точным и может давать лишь вероятное предположение.
Принцип работы:
Разные операционные системы устанавливают разные начальные значения TTL для исходящих пакетов. Это значение обычно изменяется на каждом узле сети, через которое проходит пакет.
Путем анализа TTL в ответах на ICMP-запросы (например, пакеты типа "Echo Reply"), можно попытаться сделать вывод о том, какая ОС находится на удаленном хосте.
Значение TTL обычно указывается в заголовке ICMP-пакета в поле "Time to Live". Анализируя начальное значение этого поля в ответах, можно выявить схожие группы значений, которые характерны для определенных операционных систем.
Пример:
Windows: Обычно имеет начальное значение TTL в районе 128.
Linux: Обычно имеет начальное значение TTL в районе 64.
FreeBSD: Обычно имеет начальное значение TTL в районе 64.
Для использования этого метода, вы можете выполнить утилиту ping и анализировать значения TTL в ответах. Например:
Определение операционной системы через nmap:
nmap также предоставляет возможности для определения операционной системы хоста. Это достигается путем анализа ответов на различные запросы, отправляемые nmap на целевой хост.
Пример использования nmap для определения операционной системы:
Здесь <IP> - это IP-адрес или доменное имя целевого хоста. Команда выше попытается определить ОС, отправив ряд запросов и анализируя ответы.
Некоторые из самых популярных скриптов NSE для Information Gathering:
Для использования NSE скриптов с nmap, вы можете указать опцию -sC, которая позволяет выполнить скриптовое сканирование по умолчанию. Например:
Здесь <IP> - это целевой хост, а -p 80,443 указывает, что сканирование будет выполнено на портах 80 и 443.
Для запуска конкретных скриптов на целевом IP-адресе можно использовать опцию --script. Например:
Здесь http-title - это имя скрипта, который будет выполнен на хосте <IP>
NSE скрипты помогают собрать дополнительную информацию про службы и протоколы которые использует хост, при пентесте это является очень ценной информацией для поиска уязвимостей и построения векторов атак.
Сперва создайте словарь с DNS адресами, например такого типа:
Назовём файл targets.txt и сохраним его.
Теперь запустим инструмент командой:
(не забудьте заменить подсеть на свою)
При проведении Information Gathering в сети, связанной с Active Directory, можно получить следующую информацию:
Информация о пользователях:
Для сбора этой информации, мы будем использовать инструмент BloodHound.
Установка BloodHound:
Коллектор BloodHound соберет данные о пользователях, группах, отношениях и разрешениях в AD. Он создаст файлы данных, которые будут использоваться в интерфейсе BloodHound.
Запуск BloodHound GUI:
BloodHound предоставляет графическую карту, которая поможет вам выявить потенциально опасные пути распространения атак и слабые места в безопасности AD.
Что можно получить с SNMP данных:
С помощью SNMP вы можете получить разнообразную информацию о сетевых устройствах, включая:
Использование SNMPwalk:
SNMPwalk - это утилита командной строки, которая позволяет проходить по иерархической структуре данных, предоставляемой устройствами через SNMP, и собирать информацию. Она выполняет проход по MIB (Management Information Base) дереву и собирает все доступные данные.
Пример использования SNMPwalk:
Здесь:
community_string - это строка авторизации (по умолчанию "public" или "private").
version - версия SNMP (обычно 1, 2c или 3).
target_ip - IP-адрес целевого устройства.
Утилита SNMPwalk позволяет собирать множество данных, которые могут быть использованы для мониторинга и анализа работы сетевых устройств.
Для подключения к сети по Wifi нам нужно узнать пароль от точки доступа, мы можем сделать это с помощью социальной инженерии (Зависит от того какую сеть вы тестируете) или взломать. Самым незаметным способом взлома пароля будет перехват хэндшейка (без деаунтефикации пользователей точки доступа). То есть с помощью инструмента Airodump-ng мы сможем перехватить зашифрованный файл хэндшейка, и уже потом расшифровать его у себя на системе используя инструменты по типу Hashcat, John the Ripper и так далее.
Для перехвата хэндшейка выполните эту команду
Перед этим не забудьте перевести адаптер в режим мониторинга командой airmon-ng start wlan0 а также просмотреть доступные wifi точки доступа в зоне видимости вашей системы командой:
В случае с подключением через ethernet, надо быть особенно осторожным, советую принести с собой свой ethernet кабель, и незаметно подключится к свичу/роутеру используя социальную инженерию.
MAC-адрес состоит из 12 символов, представляющих шестнадцатеричные цифры (0-9, A-F). Он обычно записывается в виде шести двузначных групп, разделенных двоеточиями или дефисами. Примеры MAC-адресов: 00:1A:2B:3C:4D:5E, A0-B1-C2-D3-E4-F5.
MAC-адресы обычно физически вшиваются в сетевое оборудование производителями в момент его производства. Один и тот же MAC-адрес никогда не должен существовать в двух разных устройствах, что делает их уникальными в рамках данной сети.
MAC-адрес используется в протоколе Ethernet (и других подобных сетях) для определения получателя данных на канальном уровне. Он не изменяется при передаче данных между устройствами в сети и применяется для управления коммуникацией на физическом уровне.
Кроме того, есть два типа MAC-адресов:
MACchanger для Linux:
Инструмент по дефолту уже есть в Kali Linux, для вывода справки введите в консоли
[ICODE
]Usage: macchanger [options] device
-h, --help Print this help
-V, --version Print version and exit
-s, --show Print the MAC address and exit
-e, --ending Don't change the vendor bytes
-a, --another Set random vendor MAC of the same kind
-A Set random vendor MAC of any kind
-p, --permanent Reset to original, permanent hardware MAC
-r, --random Set fully random MAC
-l, --list[=keyword] Print known vendors
-b, --bia Pretend to be a burned-in-address
-m, --mac=XX:XX:XX:XX:XX:XX
--mac XX:XX:XX:XX:XX:XX Set the MAC XX:XX:XX:XX:XX:XX
[/ICODE]
Это вся сводка, но нам понадобится только 2 флага: -r для выбора рандомного мака и -m для выбора кастомного значения для MAC адреса.
Для изменения своего MAC адреса на рандомное значение выполните команду
Для изменения своего MAC адреса на заданный вами адрес выполните команду
Отследить нас могут через ARP пакеты и ответы на ICMP пакеты. Чтобы этого избежать нам нужно будет изменить конкретные настройки Firewall-a.
Конфигурация системы Windows:
Отключение отклика на ARP-запросы:
Отключение NetBIOS:
Отключение ICMP-запросов:
Эти шаги могут уменьшить видимость вашего компьютера в локальной сети, но не гарантируют полной анонимности. Имейте в виду, что отключение определенных сетевых функций может повлиять на функционирование сети и взаимодействие с другими устройствами.
Конфигурация систем Linux:
Отключение ответов на ARP-запросы:
Отключение NetBIOS:
Отключение ICMP-запросов:
Чтобы этого избежать, мы будем использовать Пассивный вид сбора информации, а то есть сбор информации с сетевых отпечатков. В этом нам поможет инструмент Wireshark – удобный и понятный сниффер и анализатор сетевого траффика.
Скачать Wireshark: https://www.wireshark.org/download.html
Этот инструмент по дефолту установлен в Kali Linux, для его запуска кликнете на его иконку в системном интерфейсе, или выполните команду sudo wireshark
Начнем с определения, чтобы определить в сети хосты, отсортируем пакеты по протоколу ARP:
В фильтре поиска пишем
Исходя из этой информации, мы сделаем список активных адресов в сети.
Как это работает? После подключения нового устройства к сети, протокол ARP уведомляет каждое устройство в сети что у нас новый гость, перехватив эти пакеты с информацией про “нового гостя”, мы сделаем список активных IP адресов в сети. Также заметьте – в пакете ARP по типу Who has x.x.x.x? Tell <IP> если мы перехватили пакет такого рода - <IP> это активный хост в сети.
Также вы можете отследить активные IP адреса в сети, анализируя общий траффик в сети, например из каких адресов или к каким приходят и отсылаются сетевые пакеты.
Из сетевых пакетов вы можете извлечь разнообразную информацию о версиях служб и протоколов, используемых на устройствах в сети. Эта информация может быть полезной для идентификации служб и версий программного обеспечения, которые работают на устройствах. Вот некоторые примеры информации, которую вы можете получить из сетевых пакетов:
HTTP User-Agent и Server Headers: В HTTP-заголовках вы можете найти информацию о браузерах (User-Agent) и веб-серверах (Server), включая версии.
DNS Responses (CNAME и TXT записи): В ответах DNS-запросов вы можете найти информацию, такую как Canonical Name (CNAME) и TXT записи, которые могут содержать версии и другую дополнительную информацию.
SSL/TLS Handshake: В SSL/TLS handshake пакетах вы можете найти информацию о версиях SSL/TLS-протоколов и используемых шифрах.
SSH-пакеты: SSH-пакеты могут содержать информацию о версиях SSH-протоколов и используемых алгоритмах.
FTP Banner: FTP-серверы могут отправлять баннеры в ответ на соединение, которые могут содержать информацию о версии.
Telnet Banner: Аналогично, Telnet-серверы могут отправлять баннеры, содержащие информацию о версии.
SMTP Banner и Headers: SMTP-серверы также могут отправлять баннеры и заголовки, содержащие информацию о версии.
POP3 и IMAP Banners: Аналогично, POP3 и IMAP-серверы могут отправлять баннеры, содержащие информацию о версии.
Протоколы на Портах: Анализ трафика на различных портах может позволить определить, какие протоколы или службы используются на устройствах.
MDNS и Bonjour Banners: MDNS-пакеты могут содержать информацию о локальных устройствах и их баннерах.
Специфические Баннеры: Некоторые службы отправляют специальные баннеры или сообщения, содержащие информацию о версиях.
TCP SYN сканирование (-sS): Этот метод, также известный как "Half-Open" или "Stealth" сканирование, является одним из наиболее популярных. Он использует параметр -sS. При этом Nmap отправляет TCP SYN-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет (сброс соединения). Если порт открыт, она просто не ответит. Преимущество этого метода – скрытность и относительно высокая скорость.
TCP ACK сканирование (-sA): Параметр -sA используется для ACK-сканирования. В этом методе Nmap отправляет ACK-запросы на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она отправит RST-пакет вместе с флагом ACK. Этот метод часто используется для определения наличия stateful фильтрации на брандмауэрах.
TCP Connect сканирование (-sT): Параметр -sT представляет стандартное TCP Connect сканирование, которое устанавливает полноценное TCP-соединение с каждым целевым портом. Если порт открыт, соединение успешно устанавливается. Этот метод менее скрытый, но также является надежным.
TCP FIN сканирование (-sF): Сканирование с параметром -sF отправляет FIN-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она просто игнорирует пакет. Этот метод использует меньше ресурсов, но не так надежен, как другие методы.
TCP NULL сканирование (-sN): Этот метод с параметром -sN отправляет пустые (без флагов) TCP-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она проигнорирует пакет. Как и TCP FIN сканирование, этот метод также не всегда надежен.
TCP XMAS сканирование (-sX): Параметр -sX позволяет отправить XMAS-пакеты (со всеми флагами – FIN, URG, PSH) на целевые порты. Аналогично предыдущим методам, если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она проигнорирует пакет. Этот метод также может помочь выявить фильтрацию портов.
Помимо этих методов, Nmap предоставляет и другие параметры для скрытого сканирования, такие как TCP ACK сканирование с флагом PSH (-sAP), сканирование с флагом URG (-sU), и другие. Каждый из этих методов имеет свои преимущества и ограничения, и выбор метода зависит от конкретных условий и целей пентеста.
Для незаметного сканирования инфраструктуры Active Directory, мы будем использовать инструмент CrackMapExec. Он хорошо с этим справляется в отличии от Bloodhound)
Инструмент по дефолту установлен в Kali Linux, для просмотра справки про инструмент, введите в консоли
Для проверки информации про инфраструктуру Active Directory, сбор информации про домены и хосты на винде мы будем использовать эту команду:
Задав один поток (по дефолту их 100) мы проводим менее заметный сбор информации про домены и хосты Active Directory в сети.
Важно учитывать, что каждый случай сбора информации требует индивидуального подхода и соответствия этическим нормам. От использования стандартных методов сканирования сети и определения активных устройств до более глубокого детального анализа, включая определение операционной системы и сбор информации о протоколах, — всё это приносит ценные результаты, помогающие управлять и обезопасить сетевую инфраструктуру.
Дополнительно, понимание методов незаметного сканирования и использование специализированных инструментов, таких как CrackMapExec, позволяют профессионалам обеспечивать анализ сети без лишних следов и эффективно выявлять слабые места.
Однако, не стоит забывать о правомерности и согласованности действий. Сбор информации должен быть проведен в соответствии с политиками безопасности, с разрешения администраторов сети и в рамках действующих законов. В итоге, правильно проведенный процесс Information Gathering помогает обеспечить безопасность и эффективность сетевой инфраструктуры, а также предоставляет ценные инсайты для дальнейшей работы.
Автор: Gufi
Сделано специально для xss.pro!
- Методология Information Gathering
- Введение в INPT
- Разные кейсы при сборе информации
- Определение активных устройств в сети
- Сканирование портов и обозначение служб
- Определение OS
- Определение активных подсетей
- Определение активных устройств в сети через ICMP
- Определение активных устройств в сети через сканирование RCI портов
- Сбор информации про открытые порты и сбор баннеров служб
- Определение OS
- Использование NSE скриптов
- Сбор информации про домены
- Сбор информации про инфраструктуру Active Directory
- Сбор информации с протокола SNMP
- Подключение к сети
- Смена MAC адреса
- Настройка файрволла для избегания сканирования SOC службами
- Построение карты сети с помощью анализа траффика
- Использование скрытого сканирования Nmap
- Использование CrackMapExec
Вступление
Методология Information Gathering
Information Gathering – один из первых этапов пентеста (независимо что вы тестируете: веб аппликацию, локальную сеть, систему). Этот этап пентеста представляет собой сбор информации про атакуемую цель.Методология Information Gathering
Как мы понимаем, не собрав информацию про цель и ее уязвимости – мы попросту не сможем ее атаковать, так что это первый основный этап атаки.
Самые основные этапы сбора информации:
- Определение цели
- Сбор информации об IP адресе
- Сканирование открытых портов
- Определение открытых служб и зависимостей
- Определение баннеров служб
- Сбор информации про службы и зависимости
Сегодня мы будем заниматься сбором информации про локальную сеть, устройства в сети и сетевое оборудование. Разберем несколько возможных и популярных ситуаций и кейсов при сборе информации.
Введение в INPT
INPT (Initial Network Penetration Test) - это процесс тестирования на проникновение локальной физической сети, который фокусируется на исследовании и анализе безопасности сети и информационных систем с целью обнаружения уязвимостей, которые могли бы быть использованы злоумышленниками для несанкционированного доступа, а также для оценки общей защищенности системы.INPT - это начальный этап пентеста, который включает в себя первичный анализ системы и её инфраструктуры с точки зрения безопасности. В рамках INPT проводится оценка сетевой инфраструктуры, поиск открытых портов, определение служб, запущенных на серверах, анализ возможных уязвимостей и оценка уровня риска. Этот этап позволяет определить общую картину уязвимостей и проблем, с которыми может столкнуться система. Тестированной системой есть физическая сеть, но иногда мы можем работать с удаленной сетью способом подключению к туннелю или VPN каналу. Все тактики которые я опишу в этой статье, актуальны для обеих случаев.
Представьте, что инженеры, разработавшие корпоративную сеть, сидят с вами за одним столом и демонстрируют вам огромную схему, из которой становится понятно строение зон и подсетей, расположение компонентов и почему сеть устроена именно так. Ваша задача на этапе сбора информации в ходе теста на проникновение заключается в том, чтобы максимально приблизиться к этому уровню понимания без помощи сетевых инженеров.Чем больше информации вы получите, тем выше ваши шансы обнаружить слабое место.
Разные кейсы при сборе информации
В пентесте есть такая штука как анализ видимости сети. То есть мы анализируем что нам дано и что нам надо получить.Для упрощения анализа придумали такие термины как Черный ящик, Белый ящик и Серый ящик.
Еще в мире пентеста, есть два вида Information Gathering: Активный сбор информации и пассивный сбор информации.
К активному сбору информации относится реальный сбор информации про цель способом сетевого общение с ней (определение, сканирование информации) с этим видом сбора информации мы будем сегодня работать. Пассивный сбор информации – сбор информации с отпечатков хостов, целей в сети (Просмотр сетевых логов, дамп сетевого траффика и т.д.).
Ящики:
Черный ящик – кейс когда мы ничего не знаем от атакуемой сети или цели. Мы подключаемся к сети и начинаем собирать полную информацию про сеть.
Серый ящик – кейс когда мы частично имеем хоть какую то информацию об сети (Например: список подсетей, список IP адресов, список ОС)
Белый ящик – кейс когда у нас есть полная информация про сеть, и нам нужно только протестировать ее на безопасность.
С методом черного ящика хакеры встречаются в 80%, особенно при незаконных взломах.
С сером ящиком часто встречаются частные пентестеры которые тестируют инфраструктуру сети на заказ, заказчик предоставляет некоторую информацию про сеть.
Ну а белый ящик – это большая редкость, актуально только при тестировании сети на заказ.
В некоторых случаях нам надо собрать только небольшой список информации про сеть, в некоторых детальный список с информацией про каждый хост, а в некоторых собрать информацию оставшись полностью незаметным в сети.
Об этих всех методах сбора информации мы и поговорим в этой статье!
P.S Советую сразу записывать найденную информацию в заметки, чтобы было легше развиватся при поиске новой информации. Записывайте например: список активных подсетей, список активных хостов в сети, список сетевых служб на портах и вся информация этого рода.
Типичное сканирование сети
Определение активных устройств в сети
Определение – из первых этапов сбора информации, после того как мы подключились к атакуемой сети, мы должны определить:Определение активных устройств в сети
-Подсеть в которой мы находимся
-IP адреса в сети
-Подсети в сети
После сбора информации мы сможем выписать себе список активных IP адресов и рабочих подсетей.
Сперва узнаем подсеть в которой мы находимся, командой
ifconfig, или ipconfigДля быстрого определения активных устройств в подсети будем использовать инструмент nmap с флагом -sn
Тем самым, инструмент выявит активные IP адреса с помощью ICMP пингования. Это работает таким образом: наш компютер отправляет ICMP запрос на хост в сети, если хост выдает нам такой же ICMP ответ это значит что хост активен в сети, а если не отправляет значит такого IP адреса нет, хост выключен, или на нем стоит очень жесткий файрволл (но обходить это также научимся).
Nmap 192.168.88.1/24 -sn (не забудьте изменить подсеть на свою)После вывода мы увидим такую картину:
Теперь мы будем работать с этими IP адресами.
Также мы можем использовать более удобные инструмента, для графического создания карты сети, например Advanced IP Scanner.
Скачать: https://www.advanced-ip-scanner.com/
1.Открываем инструмент
Мы увидим такой интерфейс:
2. В поле посередине вводим подсеть которую хотим просканировать.
3.Запускаем сканирование кнопкой “Сканировать”
После сканирования мы увидим такую картину:
Инструмент выдаст нам список активных IP адресов в подсети.
Сканирование портов и обозначение служб
У нас есть список целей… теперь обнаружим открытые порты на устройствах и получим версии открытых служб (ПО).Эта информация будет очень полезна при этапе поиска уязвимостей и построения векторов атак.
Сперва просканируем порты и рассмотрим несколько флагов для инструмента Nmap, которые нам в этом помогут.
-p- просканирует все порты в диапазоне от 0 до 65535 (65535 — это максимальный порт, который может быть занят)-p <порт> просканирует указанные вами порты (можно поставить единичный порт, например -p 22, а можно несколько через кому, например -p 22,80,21 также инструмент умеет принимать диапазоны портов, например -p 21-26 в этом случае у нас просканируются порты 21, 22, 23, 24,25, 26)-sT проделывает сканирование с помощью TCP пакетов, это более надежно в отличии от SYN пакетов.-sU сканирует все открытые UDP порты на устройстве.Шаблон вывода информации после использования этих команд будет таким:
| Порт | Статус порта | Служба (сервис, протокол) |
| Номер порта/протокол (TCP/UDP) | Открыт/Закрыт/Фильтруется | Название службы (протокола) висящего на порту (ssh, ftp, http) |
Мы исследовали открытые порты, теперь займемся поиском версий и баннеров служб (сервисов, протоколов), висящих на этих портах.
Сетевые службы — это программы, которые работают на компьютере или другом сетевом устройстве и предоставляют определенные функции для обмена данными и выполнения задач в сети. Они используют протоколы для общения с другими устройствами и предоставляют разнообразные услуги.
Мой любимый флаг в скрипте nmap это -sV, он сканирует открытые порты и определяет версии и баннера служб, висящих на этих портах.
Для полного сканирования цели, выполним эту команду:
nmap <IP> -p- -sVПосле выполнения команды вот такую картину мы увидим:
У нас добавилась колонка Version, которая имеет информацию про версии служб.
Определение OS
Инструмент Nmap также умеет определять Операционную систему хоста в сети, для этого мы будем использовать флаг -ONmap <IP> -p- -sV -O (для получения обширной информации будем использовать несколько флагов)После сканирования мы увидим ОС и ее версию, которую использует хост.
Чтобы не задалбливаться кучей флагов, используйте флаг -A он проводит полное сканирование, собирает информацию про открытые порты, версии служб, определяет OS, использует встроенные NSE скрипты для сбора информации (об них мы также поговорим в статье) и много чего другого!
Детальное сканирование
Теперь перейдем к этапу ДЕТАЛЬНОГО сканирования всей сети! Тут постараемся собрать как можно больше про сеть, и устройства внутри сети. С собранной информацией в этой главе мы можем уверенно начинать искать информацию об уязвимых местах в устройствах и подстраивать векторы атак на сеть и устройства внутри сети.Определение активных подсетей
После удачного подключения к сети через ethernet кабель или wifi точку доступа, нам нужно понимать что атакуемая сеть может быть разделена на несколько подсетей. На этапе определения активных подсетей, нам нужно перечислить подсети способом пинговки разных диапазонов подсетей, тем самым определить которые подсети подтверждают пинговку и у нас есть сетевой доступ к ним.Почти в каждой подсети, есть адрес который заканчивается числом 1 например: 192.168.0.1, 10.10.8.1, 172.178.24.1
Методом пинговки хостов в разных подсетях которые заканчиваются на .1, мы можем определить активные подсети в сети.
Приведу в пример, если ваша актуальная подсеть к которой вы сейчас подключены выглядит так: 192.168.88.1/24 это значит что у вам может быть доступ к подсетям например: 192.168.0.1/24, 192.168.1.1/24, 192.168.12.1/24 и все в этом роде, как мы видим – очень часто изменяются только предпоследнее значение после точки.
nmap -sn 192.168.0-255.1 --min-hostgroup 10000 --min-rate 10000Для полного сканирования всех-всех подсетей выполните эту команду:
nmap -sn 0-255.0-255.0-255.1 --min-hostgroup 10000 --min-rate 10000
После удачного определения подсетей, добавим их в список целей и просканируем их на наличие девайсов в следующей главе.
Определение активных устройств в сети через ICMP
ICMP - это протокол сетевого уровня, который используется для отправки контрольных сообщений и сообщений об ошибках в сети IP. ICMP-пакеты включают в себя разнообразную информацию, такую как проверка доступности хоста (ping), обнаружение маршрутных проблем, фрагментацию пакетов и другие уведомления о состоянии сети.Для определения активных устройств в сети через ICMP использовать такие инструменты как ping и nmap.
Команда
ping которая работает как на Linux, так и на Windows отправляет ICMP-запросы к указанному хосту и ожидает ответа. Если хост активен и доступен, то он будет отвечать на эти запросы. Ответы от хоста подтверждают его активное состояние.Для проверки наличия хоста в сети выполните команду:
ping 192.168.1.1 (Не забудьте изменить IP адрес на вам нужный)Также инструмент nmap имеет в себе встроенный флаг -sn который проводит ICMP сканирование на наличие активных хостов в подсети.
Преимущество ICMP сканирования в nmap, в том, что тут мы можем просканировать сразу целую подсеть или даже несколько!
Nmap -sn <ваша подсеть> в нашем случае это будет nmap -sn 192.168.88.1/24
Получаем вывод со списком активных хостов в подсети.
Определение активных устройств в сети через сканирование RMI портов
Проблема ICMP сканирования – файрволл некоторых систем может отвергать ICMP сканирование или простой ping. Из за этого мы не можем знать есть ли еще какие-то хосты в сети или нет…Но для этой проблемы есть решение! На таких хостах часто могут быть открыты RMI порты. RMI порты – это самые популярные порты на которых висят самые популярные службы удаленного доступа. Список этих портов – 21,22,23,25,80,443,3389,2222
Файрволл отвергает ICMP пакеты, но не отвергает пакеты для протоколов, которые открыты для удаленного доступа к системе.
Теперь снова просканируем всю подсеть на наличие этих открытых портов в хостах внутри сети.
Nmap -p 21,22,23,25,80,443,3389,2222 192.168.88.1/24 (не забудьте заменить подсеть на свою)Анализируя вывод инструмента про хосты, вы можете найти отличия, если у вас в этом выводе есть хосты которых нет в предыдущем выводе.
Сбор информации про открытые порты и сбор баннеров служб
Теперь перейдем к основному этапу сбора информации про сетевой хост – сканирование портов и обозначение версий служб.Для этого нам идеально подойдет инструмент Nmap.
Сканирование портов:
Сканирование портов - это процесс, при котором исследуются порты на удаленных компьютерах или устройствах, чтобы определить, какие из них открыты, закрыты или фильтруются сетевыми устройствами (например, межсетевыми экранами или брандмауэрами). Это важная часть информационного сбора и анализа сетевой инфраструктуры. Существует несколько методов сканирования портов:
TCP-сканирование (TCP Connect Scan): Это наиболее распространенный метод сканирования портов. При таком сканировании сканер (например, Nmap) пытается установить реальное TCP-соединение с целевым портом. Если порт открыт, соединение устанавливается, и это указывает на открытый порт. Если порт закрыт или фильтруется, сканирующий компьютер получит ответ RST (сброс TCP-соединения) или не получит ответ вовсе.
SYN/ACK-сканирование (Half-Open Scan): В этом методе сканирования сканер отправляет SYN-пакеты (начало установки TCP-соединения) на целевой порт. Если порт открыт, целевой компьютер отправит ответ SYN/ACK. Однако сканер не завершит установку соединения, а отправит RST, чтобы завершить попытку. Это позволяет определить, какие порты открыты.
UDP-сканирование: В отличие от TCP, где ответ обязателен, UDP не требует установления соединения. При UDP-сканировании сканер отправляет UDP-пакет на целевой порт. Если порт открыт, целевой компьютер может отправить ответ. Однако часто нет ответа, так как UDP пакеты могут быть отброшены.
NULL, FIN и Xmas-сканирование: Эти методы отправляют специальные комбинации флагов TCP на целевой порт. Если порт закрыт, должен быть отправлен ответ RST. Если порт открыт, ответа не будет.
Полный скан (Connect scan): При этом методе сканирования сканер устанавливает полное TCP-соединение с каждым сканируемым портом. Это может быть медленнее, но такой метод обычно более надежен и трудно обнаруживается.
Выбор метода сканирования зависит от целей и ограничений, но TCP-сканирование является наиболее широко используемым, так как оно дает точные результаты и работает в большинстве случаев.
Что такое службы:
Службы представляют собой программы или процессы, которые работают на определенных портах на компьютере. Каждая служба обрабатывает определенные типы запросов и предоставляет определенные функциональные возможности. Примеры служб: веб-серверы (HTTP на порту 80), почтовые серверы (SMTP на порту 25), базы данных (MySQL на порту 3306) и др.
Как получать баннера служб: Баннер службы - это информация, предоставляемая службой о себе, как правило, в начале сеанса. Баннер может включать в себя версию службы, имя программы и даже дополнительные сведения о конфигурации.
Nmap может извлекать баннеры служб с помощью техники под названием "Service Detection". Она заключается в отправке определенных запросов к портам, чтобы получить ответы, которые содержат информацию о службе. Это позволяет узнать, какие версии служб запущены и какие уязвимости могут быть связаны с этими версиями.
Основные флаги для сканирования портов:
-sS (TCP SYN scan): Одно из наиболее популярных и общих сканирований. Nmap посылает TCP-пакеты SYN на целевые порты, исследуя, открыт ли порт на хосте.-sT (TCP Connect scan): Эмулирует полное установление TCP-соединения с целевыми портами, что делает этот вид сканирования менее скрытым, но также менее заметным.-sU (UDP scan): Позволяет сканировать UDP-порты, которые обычно более сложно сканировать, чем TCP-порты.Флаги для получения информации о службах:
-A (Aggressive scan): Включает сканирование версий, трассировку, анализ версий операционных систем, а также другие дополнительные техники для получения максимально возможной информации.--version-intensity <intensity>: Управляет интенсивностью сканирования версий. Вы можете установить значение от 0 (минимальная интенсивность) до 9 (максимальная интенсивность).-sV (Version detection): Отправляет запросы на определение версий служб, работающих на открытых портах.--script <script>: Позволяет запускать сценарии Nmap Scripting Engine (NSE), которые предназначены для идентификации служб, анализа уязвимостей и других задач.Комбинируя эти флаги, вы можете настроить Nmap для выполнения определенных видов сканирования и получения дополнительной информации о службах на целевом хосте.
Определение OS
Определение операционной системы (OS) хоста в процессе Information Gathering является важной задачей, так как это может предоставить информацию о среде, на которой работает хост, что может быть полезным при анализе уязвимостей и планировании атак.Существует несколько способов определения ОС, включая методы на основе TTL (Time To Live) и методы, использующие инструмент nmap.
Определение операционной системы через TTL:
В этом методе анализируется начальное значение TTL, которое устанавливается операционной системой для исходящих пакетов. Обратите внимание, что этот метод не всегда является точным и может давать лишь вероятное предположение.
Принцип работы:
Разные операционные системы устанавливают разные начальные значения TTL для исходящих пакетов. Это значение обычно изменяется на каждом узле сети, через которое проходит пакет.
Путем анализа TTL в ответах на ICMP-запросы (например, пакеты типа "Echo Reply"), можно попытаться сделать вывод о том, какая ОС находится на удаленном хосте.
Значение TTL обычно указывается в заголовке ICMP-пакета в поле "Time to Live". Анализируя начальное значение этого поля в ответах, можно выявить схожие группы значений, которые характерны для определенных операционных систем.
Пример:
Windows: Обычно имеет начальное значение TTL в районе 128.
Linux: Обычно имеет начальное значение TTL в районе 64.
FreeBSD: Обычно имеет начальное значение TTL в районе 64.
Для использования этого метода, вы можете выполнить утилиту ping и анализировать значения TTL в ответах. Например:
ping 192.168.88.1
Определение операционной системы через nmap:
nmap также предоставляет возможности для определения операционной системы хоста. Это достигается путем анализа ответов на различные запросы, отправляемые nmap на целевой хост.
Пример использования nmap для определения операционной системы:
nmap -O <IP>Здесь <IP> - это IP-адрес или доменное имя целевого хоста. Команда выше попытается определить ОС, отправив ряд запросов и анализируя ответы.
Использование NSE скриптов
NSE (Nmap Scripting Engine) - это мощный компонент инструмента nmap, который позволяет автоматизировать различные задачи сканирования и обнаружения на основе скриптов. Скрипты NSE позволяют расширить функциональность nmap, добавляя возможности для обнаружения уязвимостей, информационного сбора и других задач.Некоторые из самых популярных скриптов NSE для Information Gathering:
http-title - Извлекает заголовок HTTP-сервера, что может дать представление о том, какое приложение или веб-сервис использует хост.
dns-zone-transfer - Пытается выполнить DNS-зонный трансфер с указанного DNS-сервера, чтобы получить список записей DNS для данной зоны.
ssl-cert - Извлекает информацию из SSL-сертификата, предоставляемого веб-сервером, такую как имя владельца и дата истечения.
smtp-enum-users - Пытается перечислить пользователей почтового сервера, отправляя запросы на определенные адреса.
ftp-anon - Проверяет, разрешено ли анонимное подключение к FTP-серверу, и если да, то список файлов и директорий, доступных анонимным пользователям.
smb-os-discovery - Определяет операционную систему хоста в сети SMB/CIFS, такую как Windows, Linux и т.д.
snmp-info - Получает базовую информацию о хосте через протокол SNMP, включая версию SNMP и описание устройства.
whois - Получает информацию о домене через протокол WHOIS, включая даты регистрации и владельца.
sip-enum-users - Пытается перечислить пользователей на SIP-сервере (VoIP).
mysql-info - Получает информацию о сервере баз данных MySQL, такую как версия, имя и описание.
Для использования NSE скриптов с nmap, вы можете указать опцию -sC, которая позволяет выполнить скриптовое сканирование по умолчанию. Например:
nmap -sC -p 80,443 <IP>Здесь <IP> - это целевой хост, а -p 80,443 указывает, что сканирование будет выполнено на портах 80 и 443.
Для запуска конкретных скриптов на целевом IP-адресе можно использовать опцию --script. Например:
nmap --script http-title <IP>Здесь http-title - это имя скрипта, который будет выполнен на хосте <IP>
NSE скрипты помогают собрать дополнительную информацию про службы и протоколы которые использует хост, при пентесте это является очень ценной информацией для поиска уязвимостей и построения векторов атак.
Сбор информации про домены
Чтобы получить информацию про использование DNS серверов в сети, мы будем использовать тактику сканирования DNS прямым перебором. В этом нам поможет инструмент aiodnsbrute. aiodnsbrute - это инструмент на Python для асинхронного перебора DNS-имен в локальной сети. Он позволяет быстро обнаруживать активные хосты и устройства в вашей сети, а также имена хостов и поддомены.Сперва создайте словарь с DNS адресами, например такого типа:
Код:
host1
host2
domain1.com
subdomain.domain2.com
Теперь запустим инструмент командой:
aiodnsbrute -f targets.txt -r 192.168.1.0/24(не забудьте заменить подсеть на свою)
Сбор информации про инфраструктуру Active Directory
Active Directory (AD) - это служба управления доменами и каталогов, разработанная компанией Microsoft. Она предоставляет централизованное хранение данных о пользователях, группах, компьютерах, ресурсах и других объектах в сетевой инфраструктуре. AD обеспечивает аутентификацию, авторизацию и управление доступом в сети, а также упрощает управление и обслуживание сетевых ресурсов.При проведении Information Gathering в сети, связанной с Active Directory, можно получить следующую информацию:
Информация о пользователях:
- Имена пользователей
- Свойства пользователей (фамилия, имя, должность и др.)
- Политики паролей
- Уровни доступа и разрешения пользователей
- Имена групп
- Члены групп
- Права доступа и разрешения групп
- Имена компьютеров
- Операционные системы и версии
- Дата последней аутентификации
- Структура OU
- Пользователи, группы и компьютеры, принадлежащие к каждой OU
- Контроллеры домена
- Серверы DNS, DHCP и другие
- Правила безопасности и политики, применяемые к пользователям и компьютерам
- Локальные и доменные ключи безопасности
- Пользователи и компьютеры, имеющие доступ к ключам
- Информация о выданных сертификатах
- Подписавшие центры сертификации
- Какие протоколы аутентификации используются (NTLM, Kerberos и др.)
- События и журналы:
- События безопасности, включая попытки входа, сбои аутентификации и другие события
Для сбора этой информации, мы будем использовать инструмент BloodHound.
Установка BloodHound:
- Сначала установите BloodHound. BloodHound имеет две части: коллектор и интерфейс. Коллектор запускается на системе с доступом к AD, а интерфейс используется для анализа и визуализации результатов.
- Посетите официальный репозиторий BloodHound на GitHub: https://github.com/BloodHoundAD/BloodHound
- Следуйте инструкциям по установке и настройке, предоставленным в документации.
- Коллектор BloodHound должен быть запущен на системе с доступом к AD. Это может быть вашим домашним ПК или сервером.
- Запустите BloodHound Collector.
- Введите учетные данные с доступом к AD (должны иметь права на чтение данных).
- Выберите метод сбора данных (например, через PowerView или SharpHound).
Коллектор BloodHound соберет данные о пользователях, группах, отношениях и разрешениях в AD. Он создаст файлы данных, которые будут использоваться в интерфейсе BloodHound.
Запуск BloodHound GUI:
- Интерфейс BloodHound предоставляет инструменты для анализа и визуализации собранных данных.
- Запустите BloodHound GUI.
- Загрузите файлы данных, собранные коллектором.
- Используйте запросы и фильтры для анализа данных. BloodHound предоставляет множество запросов для выявления возможных уязвимостей и атак.
- Используйте визуализацию для отображения связей между пользователями, группами, компьютерами и т.д.
BloodHound предоставляет графическую карту, которая поможет вам выявить потенциально опасные пути распространения атак и слабые места в безопасности AD.
Сбор информации с протокола SNMP
SNMP (Simple Network Management Protocol) - это протокол управления сетью, который используется для сбора информации и управления устройствами в сети, такими как маршрутизаторы, коммутаторы, серверы, принтеры и другие сетевые устройства. SNMP позволяет мониторить состояние устройств, собирать статистику, получать оповещения об ошибках и производить удаленное управление. Служба SNMP висит на 161 порту.Что можно получить с SNMP данных:
С помощью SNMP вы можете получить разнообразную информацию о сетевых устройствах, включая:
- Информацию об устройстве: Название устройства, контактные данные, местоположение, описание.
- Интерфейсы и порты: Состояние и статистику сетевых интерфейсов, включая пропускную способность, скорость передачи, количество ошибок.
- Загрузка процессора: Загрузку процессора устройства.
- Использование памяти: Информацию об использовании оперативной памяти.
- Таблицы маршрутизации: Информацию о маршрутах, используемых устройством.
- Системные события: Оповещения и события, связанные с работой устройства.
- Состояние устройства: Данные о состоянии устройства, такие как температура, напряжение и другие параметры.
Использование SNMPwalk:
SNMPwalk - это утилита командной строки, которая позволяет проходить по иерархической структуре данных, предоставляемой устройствами через SNMP, и собирать информацию. Она выполняет проход по MIB (Management Information Base) дереву и собирает все доступные данные.
Пример использования SNMPwalk:
snmpwalk -c community_string -v version target_ipЗдесь:
community_string - это строка авторизации (по умолчанию "public" или "private").
version - версия SNMP (обычно 1, 2c или 3).
target_ip - IP-адрес целевого устройства.
Утилита SNMPwalk позволяет собирать множество данных, которые могут быть использованы для мониторинга и анализа работы сетевых устройств.
Незаметное сканирование
Цель этого кейса – незаметно собрать нужную информацию, чтобы не попадаться на глаза EDR инфраструктуре и SOC службам. Мы начнем с анонимного и безопасного подключения к сети, ну и закончим уже сбором информации про хосты в сети.Подключение к сети
Подключение к сети – первый этап сбора информации, у нас есть два способа подключения к физической локальной сети: подключение по Wifi и подключение через ethernet.Для подключения к сети по Wifi нам нужно узнать пароль от точки доступа, мы можем сделать это с помощью социальной инженерии (Зависит от того какую сеть вы тестируете) или взломать. Самым незаметным способом взлома пароля будет перехват хэндшейка (без деаунтефикации пользователей точки доступа). То есть с помощью инструмента Airodump-ng мы сможем перехватить зашифрованный файл хэндшейка, и уже потом расшифровать его у себя на системе используя инструменты по типу Hashcat, John the Ripper и так далее.
Для перехвата хэндшейка выполните эту команду
airodump-ng wlan0mon -c<канал на котором работает точка доступа> --bssid <bssid адрес атакуемой точки доступа> -w pwdПеред этим не забудьте перевести адаптер в режим мониторинга командой airmon-ng start wlan0 а также просмотреть доступные wifi точки доступа в зоне видимости вашей системы командой:
airodump-ng wlan0mon (здесь мы увидим SSID адрес, bssid адрес, и канал на котором работает точка доступа.)В случае с подключением через ethernet, надо быть особенно осторожным, советую принести с собой свой ethernet кабель, и незаметно подключится к свичу/роутеру используя социальную инженерию.
Смена MAC адреса
MAC-адрес (MAC Address) - это уникальный идентификатор, назначенный сетевому адаптеру устройства, подключенному к сети. MAC-адрес используется на уровне канального доступа в сети и служит для уникальной идентификации конкретного устройства в рамках локальной сети.MAC-адрес состоит из 12 символов, представляющих шестнадцатеричные цифры (0-9, A-F). Он обычно записывается в виде шести двузначных групп, разделенных двоеточиями или дефисами. Примеры MAC-адресов: 00:1A:2B:3C:4D:5E, A0-B1-C2-D3-E4-F5.
MAC-адресы обычно физически вшиваются в сетевое оборудование производителями в момент его производства. Один и тот же MAC-адрес никогда не должен существовать в двух разных устройствах, что делает их уникальными в рамках данной сети.
MAC-адрес используется в протоколе Ethernet (и других подобных сетях) для определения получателя данных на канальном уровне. Он не изменяется при передаче данных между устройствами в сети и применяется для управления коммуникацией на физическом уровне.
Кроме того, есть два типа MAC-адресов:
- Unicast MAC-адрес: Используется для адресации конкретного устройства. Он указывает на определенное сетевое устройство в сети и используется для непосредственной коммуникации с этим устройством.
- Multicast MAC-адрес: Используется для адресации группы устройств. Пакеты, отправленные на Multicast MAC-адрес, могут быть получены группой устройств, которые подписались на этот адрес.
MACchanger для Linux:
Инструмент по дефолту уже есть в Kali Linux, для вывода справки введите в консоли
macchanger[ICODE
]Usage: macchanger [options] device
-h, --help Print this help
-V, --version Print version and exit
-s, --show Print the MAC address and exit
-e, --ending Don't change the vendor bytes
-a, --another Set random vendor MAC of the same kind
-A Set random vendor MAC of any kind
-p, --permanent Reset to original, permanent hardware MAC
-r, --random Set fully random MAC
-l, --list[=keyword] Print known vendors
-b, --bia Pretend to be a burned-in-address
-m, --mac=XX:XX:XX:XX:XX:XX
--mac XX:XX:XX:XX:XX:XX Set the MAC XX:XX:XX:XX:XX:XX
[/ICODE]
Это вся сводка, но нам понадобится только 2 флага: -r для выбора рандомного мака и -m для выбора кастомного значения для MAC адреса.
Для изменения своего MAC адреса на рандомное значение выполните команду
macchanger -rДля изменения своего MAC адреса на заданный вами адрес выполните команду
macchanger -m <MAC адрес, который вы хотите получить>Настройка файрволла для избегания сканирования SOC службами
Чтобы после подключения, наш новый девайс в сети не смогли увидеть SOC службы, или системы мониторинга, нам нужно правильно настроить Firewall нашей системы для избегания обнаружения.Отследить нас могут через ARP пакеты и ответы на ICMP пакеты. Чтобы этого избежать нам нужно будет изменить конкретные настройки Firewall-a.
Конфигурация системы Windows:
Отключение отклика на ARP-запросы:
- ARP (Address Resolution Protocol) используется для связи между IP-адресами и физическими MAC-адресами в локальной сети. Вы можете попробовать отключить ответы на ARP-запросы с помощью команды:
netsh interface ipv4 set interface "Имя интерфейса" weakhostsend=enabled store=active- Замените "Имя интерфейса" на имя вашего сетевого адаптера, которое вы можете узнать с помощью команды ipconfig.
Отключение NetBIOS:
- NetBIOS может предоставлять информацию о компьютере и ресурсах в сети. Вы можете отключить NetBIOS для вашего сетевого адаптера:
netsh interface tcp set global netbios=disable
Отключение ICMP-запросов:
- ICMP (Internet Control Message Protocol) используется для отправки различных сетевых сообщений, включая ping. Отключение ICMP может сделать ваш компьютер менее заметным для сканов:
netsh advfirewall firewall add rule name="Block ICMP" protocol=icmpv4:8,any dir=in action=block
Эти шаги могут уменьшить видимость вашего компьютера в локальной сети, но не гарантируют полной анонимности. Имейте в виду, что отключение определенных сетевых функций может повлиять на функционирование сети и взаимодействие с другими устройствами.
Конфигурация систем Linux:
Отключение ответов на ARP-запросы:
- ARP (Address Resolution Protocol) используется для преобразования IP-адресов в физические MAC-адреса. Вы можете временно отключить ответы на ARP-запросы с помощью следующей команды:
sudo sysctl -w net.ipv4.conf.all.arp_ignore=1- Чтобы вернуть настройку к стандартной, используйте:
sudo sysctl -w net.ipv4.conf.all.arp_ignore=0
Отключение NetBIOS:
- NetBIOS может раскрывать информацию о вашем компьютере в локальной сети. Отключите его, добавив строки в конфигурационный файл /etc/samba/smb.conf:
name resolve order = bcast host
Отключение ICMP-запросов:
- Отключение ICMP может уменьшить видимость вашего компьютера для различных сетевых сканов и пингов:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP- Чтобы удалить это правило:
sudo iptables -D INPUT -p icmp --icmp-type echo-request -j DROP - Обратите внимание, что эти команды могут потребовать прав администратора (sudo).
Построение карты сети с помощью анализа траффика
Для анализа и создания карты сети, мы будем использовать тактику сниффинга и анализа сетевого трафика. В случае когда нам нужно незаметно получить информацию про устройства в сети, активное сканирование может быть определено и заблокировано EDR инфраструктурой или SOC службами.Чтобы этого избежать, мы будем использовать Пассивный вид сбора информации, а то есть сбор информации с сетевых отпечатков. В этом нам поможет инструмент Wireshark – удобный и понятный сниффер и анализатор сетевого траффика.
Скачать Wireshark: https://www.wireshark.org/download.html
Этот инструмент по дефолту установлен в Kali Linux, для его запуска кликнете на его иконку в системном интерфейсе, или выполните команду sudo wireshark
Начнем с определения, чтобы определить в сети хосты, отсортируем пакеты по протоколу ARP:
В фильтре поиска пишем
arp
Исходя из этой информации, мы сделаем список активных адресов в сети.
Как это работает? После подключения нового устройства к сети, протокол ARP уведомляет каждое устройство в сети что у нас новый гость, перехватив эти пакеты с информацией про “нового гостя”, мы сделаем список активных IP адресов в сети. Также заметьте – в пакете ARP по типу Who has x.x.x.x? Tell <IP> если мы перехватили пакет такого рода - <IP> это активный хост в сети.
Также вы можете отследить активные IP адреса в сети, анализируя общий траффик в сети, например из каких адресов или к каким приходят и отсылаются сетевые пакеты.
Из сетевых пакетов вы можете извлечь разнообразную информацию о версиях служб и протоколов, используемых на устройствах в сети. Эта информация может быть полезной для идентификации служб и версий программного обеспечения, которые работают на устройствах. Вот некоторые примеры информации, которую вы можете получить из сетевых пакетов:
HTTP User-Agent и Server Headers: В HTTP-заголовках вы можете найти информацию о браузерах (User-Agent) и веб-серверах (Server), включая версии.
httpDNS Responses (CNAME и TXT записи): В ответах DNS-запросов вы можете найти информацию, такую как Canonical Name (CNAME) и TXT записи, которые могут содержать версии и другую дополнительную информацию.
dns.resp.type == 5 || dns.resp.type == 16SSL/TLS Handshake: В SSL/TLS handshake пакетах вы можете найти информацию о версиях SSL/TLS-протоколов и используемых шифрах.
ssl.handshakeSSH-пакеты: SSH-пакеты могут содержать информацию о версиях SSH-протоколов и используемых алгоритмах.
sshFTP Banner: FTP-серверы могут отправлять баннеры в ответ на соединение, которые могут содержать информацию о версии.
ftpTelnet Banner: Аналогично, Telnet-серверы могут отправлять баннеры, содержащие информацию о версии.
telnetSMTP Banner и Headers: SMTP-серверы также могут отправлять баннеры и заголовки, содержащие информацию о версии.
smtpPOP3 и IMAP Banners: Аналогично, POP3 и IMAP-серверы могут отправлять баннеры, содержащие информацию о версии.
pop || imapПротоколы на Портах: Анализ трафика на различных портах может позволить определить, какие протоколы или службы используются на устройствах.
tcp.port == 80 || udp.port == 80 (замените порт на вам нужный)MDNS и Bonjour Banners: MDNS-пакеты могут содержать информацию о локальных устройствах и их баннерах.
mdns || dns.qry.name == "*.local"Специфические Баннеры: Некоторые службы отправляют специальные баннеры или сообщения, содержащие информацию о версиях.
Использование скрытого сканирования Nmap
Также мы можем использовать некоторые тактики сканирования инструментом Nmap, чтобы оставаться незаметным в сети при пентесте.TCP SYN сканирование (-sS): Этот метод, также известный как "Half-Open" или "Stealth" сканирование, является одним из наиболее популярных. Он использует параметр -sS. При этом Nmap отправляет TCP SYN-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет (сброс соединения). Если порт открыт, она просто не ответит. Преимущество этого метода – скрытность и относительно высокая скорость.
TCP ACK сканирование (-sA): Параметр -sA используется для ACK-сканирования. В этом методе Nmap отправляет ACK-запросы на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она отправит RST-пакет вместе с флагом ACK. Этот метод часто используется для определения наличия stateful фильтрации на брандмауэрах.
TCP Connect сканирование (-sT): Параметр -sT представляет стандартное TCP Connect сканирование, которое устанавливает полноценное TCP-соединение с каждым целевым портом. Если порт открыт, соединение успешно устанавливается. Этот метод менее скрытый, но также является надежным.
TCP FIN сканирование (-sF): Сканирование с параметром -sF отправляет FIN-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она просто игнорирует пакет. Этот метод использует меньше ресурсов, но не так надежен, как другие методы.
TCP NULL сканирование (-sN): Этот метод с параметром -sN отправляет пустые (без флагов) TCP-пакеты на целевые порты. Если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она проигнорирует пакет. Как и TCP FIN сканирование, этот метод также не всегда надежен.
TCP XMAS сканирование (-sX): Параметр -sX позволяет отправить XMAS-пакеты (со всеми флагами – FIN, URG, PSH) на целевые порты. Аналогично предыдущим методам, если порт закрыт, целевая система отправит RST-пакет. Если порт открыт, она проигнорирует пакет. Этот метод также может помочь выявить фильтрацию портов.
Помимо этих методов, Nmap предоставляет и другие параметры для скрытого сканирования, такие как TCP ACK сканирование с флагом PSH (-sAP), сканирование с флагом URG (-sU), и другие. Каждый из этих методов имеет свои преимущества и ограничения, и выбор метода зависит от конкретных условий и целей пентеста.
Использование CrackMapExec
Теперь перейдем к сканированию и сбору информации про сетевую инфраструктуру Active Directory, только в отличии от предыдущего кейса про сбор информации про Active Directory, мы будем делать это максимально незаметно чтобы понизить риск быть обнаруженным SOC службами или EDR инфраструктурой.Для незаметного сканирования инфраструктуры Active Directory, мы будем использовать инструмент CrackMapExec. Он хорошо с этим справляется в отличии от Bloodhound)
Инструмент по дефолту установлен в Kali Linux, для просмотра справки про инструмент, введите в консоли
crackmapexecДля проверки информации про инфраструктуру Active Directory, сбор информации про домены и хосты на винде мы будем использовать эту команду:
crackmapexec -t 1 <ваша подсеть> smb winrmЗадав один поток (по дефолту их 100) мы проводим менее заметный сбор информации про домены и хосты Active Directory в сети.
Итоги
Сбор информации в сети - это ключевой этап для обеспечения безопасности, анализа уязвимостей и оптимизации работы сетевой инфраструктуры. От методологии Information Gathering до незаметных методов сканирования, процесс сбора данных оказывается весьма разнообразным и мощным инструментом для любого профессионала в области информационной безопасности.Важно учитывать, что каждый случай сбора информации требует индивидуального подхода и соответствия этическим нормам. От использования стандартных методов сканирования сети и определения активных устройств до более глубокого детального анализа, включая определение операционной системы и сбор информации о протоколах, — всё это приносит ценные результаты, помогающие управлять и обезопасить сетевую инфраструктуру.
Дополнительно, понимание методов незаметного сканирования и использование специализированных инструментов, таких как CrackMapExec, позволяют профессионалам обеспечивать анализ сети без лишних следов и эффективно выявлять слабые места.
Однако, не стоит забывать о правомерности и согласованности действий. Сбор информации должен быть проведен в соответствии с политиками безопасности, с разрешения администраторов сети и в рамках действующих законов. В итоге, правильно проведенный процесс Information Gathering помогает обеспечить безопасность и эффективность сетевой инфраструктуры, а также предоставляет ценные инсайты для дальнейшей работы.
BTC: bc1qmku9gh5qxy2j8dh9c657rvum80a4cagx803j54
ETH: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
USDT TRC20: TMeeM2prwn7pShvYNcwLCNKmNAM48BmqGc
USDT ERC20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
BUSD BEP20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
ETH: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
USDT TRC20: TMeeM2prwn7pShvYNcwLCNKmNAM48BmqGc
USDT ERC20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
BUSD BEP20: 0x449A9Fc080e48315968Cd47DBdD619B3519B9151
Автор: Gufi
Сделано специально для xss.pro!
Последнее редактирование модератором:
