Содержание статьи
- ARP
- Выявление хостов за файрволом
- Обнаружение хостов с несколькими IP
- Определение аппаратной части удаленного хоста
- Stale Network Address Configurations
- Анализ IP.ttl
- Определение ОС
- Выявление помех
- Обнаружение пути
- Анализ IP.id
- Определение использования трафика
- Idle scan
- TCP.options
- Получение uptime
- Выявление ОС
- Определение количества балансировочных серверов
- ICMP.type=13
- Получение локального времени UTC
- TCP.flags
- Выявление помех
- Определение ОС
- IP.options
- Разглашение хопов
- Выводы
Фраза «Enumeration is the key» широко известна в среде пентестеров. Вначале пентестеры обычно сканируют порты, определяя службы и выполняя специфичные тесты для каждого. И тут начинающие часто допускают грубые ошибки, ведь сканирование портов может быть расценено удаленной стороной как сетевая атака.
Enumeration — это целое искусство. Оно заключается в умении легитимно, без использования каких‑либо уязвимостей, а полагаясь исключительно на поведение приложения вытащить из исследуемого сервиса или открытого порта столько информации, сколько возможно. И чем больше такой информации получит хакер, тем проще ему будет на следующих этапах.
Сегодня на серверах крутится столько разнообразных служб, что описания всех приемов для каждой из них хватило бы на целую книгу. Поэтому сегодня мы коснемся самых основ, того, на чем работает каждый сервис, — стека протоколов TCP/IP. Думаю, ты крайне удивишься, узнав, сколько информации реально достать, не поднимаясь выше уровня L2/L3/L4 и не имея доступа к удаленному серверу, а просто зная его IP-адрес и отправляя ему те или иные пакеты. Большинство приемов применимо абсолютно к любым узлам интернета.
Итак, используя только лишь протоколы сетевого и транспортного уровней (IP, TCP и ICMP), мы сможем определить:
- операционную систему;
- сетевую активность (speed rate);
- время непрерывной работы операционной системы (uptime);
- время на удаленном сервере;
- сколько серверов реально находятся за IP-адресом;
- сколько балансировочных серверов на порте;
- принадлежат ли порты одному серверу;
- сколько IP-адресов у сервера;
- топологию маршрута до цели;
- ложные открытые порты.
В статье я буду показывать все примеры двумя способами: с помощью базового инструментария и с использованием собственного набора скриптов. В коде этих скриптов ты найдешь полезные примеры использования библиотеки для крафтинга пакетов scapy, чтобы при необходимости кастомизировать их под свою задачу.
ARP
Обычно с ARP ассоциируются атаки перехвата трафика, но мы взглянем на этот протокол с другой стороны.
В каждом ARP-пакете есть поле с src_mac
.
И именно по содержимому этого поля мы сможем ответить на ряд вопросов.
Выявление хостов за файрволом
Думаешь, если удаленный узел не отвечает на ping, то его там нет? Когда ты инициируешь любое обращение к узлу из текущего сетевого сегмента, будь то команда ping
или обращение через браузер, твоя ОС сначала выполняет ARP-запрос, чтобы узнать MAC-адрес удаленного хоста. И обычно файрволы (даже если они настроены на полную блокировку всего входящего трафика) не трогают канальные протоколы (Ethernet), а также ARP, поскольку из‑за этого может быть нарушена работоспособность сети.
Например, имеется хост из текущего сетевого сегмента. Этого хоста вроде как нет, поскольку на ping он не отзывается. Тем не менее в кеше присутствует его MAC-адрес, следовательно, сетевой узел существует.
Чтобы обнаружить подобные скрытые узлы во всем сетевом сегменте, можно использовать скрипт, который автоматически выполняет описанные выше действия.
Эта информация может быть также полезна в сетях, где нет DHCP, но тебе нужно аккуратно занять IP-адрес. Кроме того, она просто дает понимание, что тот или иной сервер не выключен, а находится за файрволом.
Обнаружение хостов с несколькими IP
То, что в сетевом сегменте мы можем видеть MAC-адреса удаленных узлов, позволяет выявить системы с несколькими IP-адресами.
Все просто: если нескольким IP-адресам соответствует один MAC, с большой долей вероятности находится узел, сетевой карте которого присвоено несколько IP-адресов (alias). Стоит отметить, что так мы не увидим dual-homed-машины (несколько сетевых карт). Как их можно обнаружить, я расскажу чуть позже.
Определение аппаратной части удаленного хоста
Первые три октета MAC-адреса резервируются за производителями оборудования и потому достаточно точно могут идентифицировать железо.
Хорошо видно, что рядом с нами в сети присутствуют четыре IP-камеры и четыре сетевых устройства. Информация об этом находится в OUI-базах:
-
/
;usr/ share/ arp-scan/ ieee-oui. txt -
/
.usr/ share/ airgraph-ng/ oui. txt
В зависимости от MAC-адреса удаленного узла мы можем сделать еще и достаточно точный вывод о том, физический перед нами сервер или виртуальный. Например, популярная в Enterprise-секторе VMware по умолчанию использует MAC-адреса вида 00:
.
Stale Network Address Configurations
С ARP связана еще одна не столь очевидная атака под названием SNAC, которая выявляет устаревшие информационные потоки. Учитывая, что для непосредственной коммуникации узлов в локальных сетях требуется запрашиваемый по ARP MAC-адрес, и при этом запрашиваемый широковещательно (так что его слышат все), мы можем узнать, а все ли запрашиваемые узлы реально существуют.
Так как ARP-ответ уже не идет широковещательно, а отправляется непосредственно запрашиваемой стороне, его мы не услышим. Поэтому скрипт выполняет повторный ARP-запрос, чтобы проверить, реально ли существует в текущем сетевом сегменте запрашиваемый хост. Если да, он подсвечивается зеленым, как действующий информационный поток, если нет — красным, как недействующий. Во время работы скрипт постоянно обновляет граф, визуализирующий эти самые информационные потоки.
Просто анализируя ARP, можем видеть, что некто (через шлюз 192.
), расположенный в другом сетевом сегменте, пытался соединиться с несуществующими хостами. Или например, что сразу три узла (82, 79 и 83) связываются с хостом 192.
.
Вполне очевидным действием будет занять свободный, но запрашиваемый IP-адрес, присвоив своей сетевой карте сколько нужно адресов. Результатом может стать абсолютно что угодно, любой информационный поток вплоть до разглашения паролей (например, если присвоенный адрес принадлежит серверу MS SQL) или хешей (если это адрес сетевого диска). Впрочем, это уже отдельная история.
SNAC крайне сложно увидеть невооруженным взглядом, ведь часто причиной успешной атаки становится всеми забытый конфиг. В то же время угроза не столь очевидна, когда у сервера меняется IP-адрес: мало кто задумывается о том, что его может занять атакующий.
SNAC просто незаменим при атаках на так называемые стенды, когда исследуемые узлы просто выдергиваются из продуктивных сетей, разрывая информационные потоки.
Анализ IP.ttl
В любом IP-пакете есть поле ttl
.
Его особенность заключается в том, что каждое сетевое устройство, которое доставляет твой IP-пакет до цели, вычитает из значения этого поля единицу. Если устройств по пути до цели много, значение IP.
будет уменьшаться по мере удлинения маршрута следования пакета. Как только содержимое поля IP.
станет равным нулю, пакет удалится. Так реализована защита от зацикливания пакетов на пути следования. Отправляющая сторона вольна устанавливать любое значение ttl
, a удаленная сторона при этом ответит пакетом со своим IP.
.
Определение ОС
Отправляющая сторона (твой ПК) устанавливает определенное начальное значение IP.
. Точно так же удаленная сторона в ответ отправит тебе пакет со своим начальным IP.
(значение которого может уменьшиться на длину трассировки). И это значение специфично для ОС.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»