March 4

День 43. Nmap Advanced Port Scans

Изучите продвинутые методы, такие как сканирование с использованием нулевых адресов, FIN-сканирование, сканирование Xmas и сканирование в режиме ожидания (зомби-сканирование), подмена адресов, а также обход брандмауэров и систем обнаружения вторжений.

Task 1. Introduction

Эта комната — третья в серии уроков по Nmap (часть модуля «Введение в сетевую безопасность»). В первых двух комнатах мы изучили обнаружение хостов в режиме реального времени и базовое сканирование портов.

  1. Nmap Live Host Discovery
  2. Базовое сканирование портов Nmap
  3. Расширенное сканирование портов Nmap
  4. Nmap после сканирования портов

В разделе « Базовое сканирование портов с помощью Nmap» мы рассмотрели флаги TCP и повторили трехэтапное рукопожатие TCP . Для установления соединения TCP требует, чтобы первый пакет имел установленный флаг SYN. ​​Следовательно, мы можем определить, открыт ли порт TCP , по полученному ответу.

Исследователи безопасности и хакеры изучили флаги TCP , показанные на рисунке ниже и объясненные в предыдущем разделе, и начали экспериментировать. Они хотели узнать, что произойдет, если отправить TCP- пакет, не являющийся частью какого-либо текущего TCP- соединения, с одним или несколькими установленными флагами.

Например, флаг ACK устанавливается, когда вы хотите подтвердить получение данных. Сканирование ACK — это как попытка подтвердить данные, которые изначально не были ни отправлены, ни получены. Рассмотрим простую аналогию: кто-то внезапно подходит к вам и говорит: «Да, я вас слышу, пожалуйста, продолжайте», хотя вы ничего не сказали.

В этом разделе рассматриваются расширенные типы сканирования и параметры сканирования. Некоторые из этих типов сканирования могут быть полезны для конкретных систем, в то время как другие полезны в определенных сетевых конфигурациях. Мы рассмотрим следующие типы сканирования портов:

  • Нулевое сканирование
  • Сканирование FIN
  • Рождественское сканирование
  • Скан Маймона
  • ACK Scan
  • Сканирование окна
  • Пользовательское сканирование

Кроме того, мы рассмотрим следующие вопросы:

  • Подмена IP-адреса
  • Подмена MAC-адреса
  • Сканирование ложной цели
  • Фрагментированные пакеты
  • Сканирование в режиме ожидания/ зомби

Мы обсудим варианты и методы обхода брандмауэров и систем обнаружения вторжений . Мы также рассмотрим способы получения более подробной информации от Nmap .

Task 2. TCP Null Scan, FIN Scan, and Xmas Scan

Начнём с следующих трёх типов сканирования:

  • Нулевое сканирование
  • Сканирование FIN
  • Рождественское сканирование

Нулевое сканирование

При сканировании без флагов никакие флаги не устанавливаются; все шесть битов флагов устанавливаются в ноль. Вы можете выбрать этот режим сканирования с помощью соответствующей -sNопции. TCP-пакет без установленных флагов не вызовет никакого ответа при достижении открытого порта, как показано на рисунке ниже. Поэтому с точки зрения Nmap отсутствие ответа при сканировании без флагов указывает на то, что либо порт открыт, либо брандмауэр блокирует пакет.

Однако мы ожидаем, что целевой сервер ответит пакетом RST, если порт закрыт. Следовательно, отсутствие ответа RST позволит нам определить, какие порты не закрыты: открыты или отфильтрованы.

Ниже приведён пример сканирования на отсутствие ответа на сервере Linux. Проведённое нами сканирование на отсутствие ответа успешно выявило шесть открытых портов в целевой системе. Поскольку сканирование на отсутствие ответа основано на предположении, что порт не закрыт, оно не может с уверенностью указывать на то, что эти порты открыты; существует вероятность того, что порты не отвечают из-за правила брандмауэра.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sN MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:30 BST
Nmap scan report for MACHINE_IP
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 96.50 seconds

Обратите внимание, что для многих параметров Nmap требуются права root. Если вы не запускаете Nmap от имени root, вам необходимо использовать параметр sudo, как в примере выше -sN.

Сканирование FIN

Сканирование FIN отправляет TCP-пакет с установленным флагом FIN. Вы можете выбрать этот тип сканирования с помощью соответствующей -sF опции. Аналогично, ответ не будет отправлен, если TCP- порт открыт. Опять же, Nmap не может быть уверен, открыт ли порт или же брандмауэр блокирует трафик, связанный с этим TCP- портом.

Однако целевая система должна ответить RST, если порт закрыт. Следовательно, мы сможем узнать, какие порты закрыты, и использовать эти знания для определения открытых или отфильтрованных портов. Стоит отметить, что некоторые межсетевые экраны могут «молча» отбрасывать трафик, не отправляя RST.

Ниже приведён пример сканирования FIN на сервере Linux. Результат весьма похож на результат, полученный нами ранее при использовании сканирования без проверки.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sF MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:32 BST
Nmap scan report for MACHINE_IP
Host is up (0.0018s latency).
Not shown: 994 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 96.52 seconds

Рождественское сканирование

Сканирование «Рождественское» получило свое название в честь рождественских гирлянд. При сканировании «Рождественское» одновременно устанавливаются флаги FIN, PSH и URG. Вы можете выбрать сканирование «Рождественское» с помощью соответствующей опции -sX.

Как и в случае с сканированием Null и сканированием FIN, получение пакета RST означает, что порт закрыт. В противном случае будет указано, что он открыт|отфильтрован.

На следующих двух рисунках показан случай, когда TCP-порт открыт, и случай, когда TCP-порт закрыт.

Приведённый ниже вывод консоли демонстрирует пример сканирования Xmas на сервере Linux. Полученные результаты довольно похожи на результаты сканирования с нулевым значением и сканирования FIN.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sX MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00087s latency).
Not shown: 994 closed ports
PORT    STATE         SERVICE
22/tcp  open|filtered ssh
25/tcp  open|filtered smtp
80/tcp  open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 84.85 seconds

Один из сценариев, где эти три типа сканирования могут быть эффективны, — это сканирование цели за межсетевым экраном без сохранения состояния (stateless firewall) . Межсетевой экран без сохранения состояния проверяет, установлен ли входящий пакет флаг SYN для обнаружения попытки подключения. Использование комбинации флагов, не соответствующей пакету SYN, позволяет обмануть межсетевой экран и получить доступ к системе за ним. Однако межсетевой экран с сохранением состояния практически блокирует все такие специально сформированные пакеты и делает этот тип сканирования бесполезным.

Вопрос: При нулевом сканировании, сколько флагов устанавливаются в значение 1?

Ответ: 0

Вопрос: В ходе сканирования FIN, сколько флагов установлено в значение 1?

Ответ: 1

Вопрос: В ходе рождественского сканирования, сколько флагов установлено в значение 1?

Ответ: 3

Вопрос: Запустите виртуальную машину и загрузите AttackBox. После того, как оба компонента будут готовы, откройте терминал на AttackBox и используйте nmap для запуска сканирования FIN целевой виртуальной машины. Сколько портов отображается как открытые|отфильтрованные?

Ответ: 9

Вопрос: Повторите сканирование, запустив сканирование с нулевым количеством портов на целевой виртуальной машине. Сколько портов отображается как открытые/отфильтрованные?

Ответ: 9

Task 3. TCP Maimon Scan

Уриэль Маймон впервые описал это сканирование в 1996 году. В этом сканировании устанавливаются биты FIN и ACK. Целевой объект должен отправить пакет RST в ответ. Однако некоторые системы, основанные на BSD, отбрасывают пакет, если это открытый порт, раскрывающий доступ к открытым портам. Это сканирование не будет работать на большинстве целей, встречающихся в современных сетях; тем не менее, мы включили его в этот раздел, чтобы лучше понять механизм сканирования портов и подход хакеров. Чтобы выбрать этот тип сканирования, используйте соответствующую -sMопцию.

Большинство целевых систем отвечают пакетом RST независимо от того, открыт ли TCP-порт. В таком случае мы не сможем обнаружить открытые порты. На рисунке ниже показано ожидаемое поведение как при открытых, так и при закрытых TCP-портах.

Приведённый ниже вывод консоли — это пример сканирования TCP-портов с помощью Maimon на сервере Linux. Как уже упоминалось, поскольку открытые и закрытые порты ведут себя одинаково, сканирование Maimon не смогло обнаружить ни одного открытого порта в целевой системе.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sM 10.10.252.27

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:36 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.00095s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.61 seconds

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

Вопрос: Сколько флагов установлено при сканировании Maimon?

Ответ: 2

Task 4. TCP ACK, Window, and Custom Scan

В этом задании будет рассмотрено, как выполнить сканирование TCP ACK, сканирование TCP- окна и как создать собственное сканирование флагов.

Сканирование TCP ACK

Начнём с сканирования TCP ACK. Как следует из названия, сканирование ACK отправляет TCP- пакет с установленным флагом ACK. Используйте опцию -sA для выбора этого сканирования. Как показано на рисунке ниже, целевой сервер ответит на ACK сигналом RST независимо от состояния порта. Такое поведение обусловлено тем, что TCP-пакет с установленным флагом ACK должен отправляться только в ответ на полученный TCP-пакет для подтверждения получения данных, в отличие от нашего случая. Следовательно, в простой конфигурации это сканирование не покажет нам, открыт ли целевой порт.

В следующем примере мы просканировали целевую виртуальную машину до установки на нее брандмауэра. Как и ожидалось, нам не удалось узнать, какие порты были открыты.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sA MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:37 BST
Nmap scan report for MACHINE_IP
Host is up (0.0013s latency).
All 1000 scanned ports on MACHINE_IP are unfiltered
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.68 seconds
      

Такое сканирование было бы полезно, если перед целевым устройством установлен брандмауэр . В результате, на основе того, какие пакеты ACK привели к ответам, вы узнаете, какие порты не были заблокированы брандмауэром . Другими словами, этот тип сканирования больше подходит для обнаружения наборов правил и конфигурации брандмауэра .

После настройки целевой виртуальной машины MACHINE_IP с брандмауэром мы повторили сканирование ACK. На этот раз мы получили интересные результаты. Как видно из приведенного ниже вывода консоли, три порта не блокируются брандмауэром. Этот результат указывает на то, что брандмауэр блокирует все остальные порты, кроме этих трех.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sA MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00046s latency).
Not shown: 997 filtered ports
PORT    STATE      SERVICE
22/tcp  unfiltered ssh
25/tcp  unfiltered smtp
80/tcp  unfiltered http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 15.45 seconds
      

Сканирование окна

Ещё один похожий тип сканирования — сканирование TCP- окна. Сканирование TCP- окна практически идентично сканированию ACK; однако оно анализирует поле TCP- окна в возвращаемых пакетах RST. В некоторых системах это может показать, что порт открыт. Вы можете выбрать этот тип сканирования с помощью опции -sW . Как показано на рисунке ниже, мы ожидаем получить пакет RST в ответ на наши «незапрошенные» пакеты ACK, независимо от того, открыт порт или закрыт.

Аналогично, запуск сканирования TCP-окна в системе Linux без брандмауэра не даст много информации. Как видно из приведенного ниже вывода консоли, результаты сканирования окна в системе Linux без брандмауэра не предоставили никакой дополнительной информации по сравнению с ранее выполненным сканированием ACK.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sW MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:38 BST
Nmap scan report for MACHINE_IP
Host is up (0.0011s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
      

Однако, как и следовало ожидать, если мы повторим сканирование TCP- окна на сервере за брандмауэром , мы рассчитываем получить более удовлетворительные результаты. В показанном ниже выводе консоли сканирование TCP- окна указало на то, что три порта обнаружены как закрытые. (Это контрастирует со сканированием ACK, которое пометило те же три порта как нефильтрованные.) Хотя мы знаем, что эти три порта не закрыты, мы понимаем, что они отреагировали по-разному, указывая на то, что брандмауэр их не блокирует.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sW MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:39 BST
Nmap scan report for MACHINE_IP
Host is up (0.00040s latency).
Not shown: 997 filtered ports
PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 14.84 seconds
      

Пользовательское сканирование

Если вы хотите поэкспериментировать с новой комбинацией флагов TCP , выходящей за рамки встроенных типов сканирования TCP , вы можете сделать это с помощью --scanflags . Например, если вы хотите одновременно установить SYN, RST и FIN, вы можете сделать это с помощью --scanflags RSTSYNFIN . Как показано на рисунке ниже, если вы разрабатываете собственное сканирование, вам необходимо знать, как будут вести себя различные порты, чтобы правильно интерпретировать результаты в различных сценариях.

х

Наконец, важно отметить, что сканирование ACK и сканирование окна оказались очень эффективными в составлении карты правил брандмауэра . Однако необходимо помнить, что если брандмауэр не блокирует определенный порт, это не обязательно означает, что служба прослушивает этот порт. Например, возможно, правила брандмауэра необходимо обновить, чтобы отразить недавние изменения в работе служб. Следовательно, сканирование ACK и сканирование окна выявляют правила брандмауэра , а не службы.

Вопрос: Сколько флагов устанавливается при сканировании окна TCP?

Ответ: 1

Вопрос: Вы решили поэкспериментировать с пользовательским сканированием TCP, в котором установлен флаг сброса. Что бы вы добавили после --scanflags?

Ответ: RST

Вопрос: Виртуальная машина получила обновление правил брандмауэра. Теперь брандмауэр разрешает новый порт. После того, как вы убедитесь, что завершили работу виртуальной машины из Задания 2, запустите виртуальную машину для этого задания. Запустите AttackBox, если вы еще этого не сделали. Как только обе машины будут готовы, откройте терминал на AttackBox и используйте Nmap для запуска сканирования ACK целевой виртуальной машины. Сколько портов отображается без фильтрации?

Ответ: 4

Вопрос: Какой новый номер порта появился? Чтобы определить новый порт, необходимо сравнить результаты сканирования Задания 2 с результатами этого задания.

Ответ: 443

Вопрос: Есть ли какая-либо услуга, связанная с недавно обнаруженным номером порта? (Да/Нет)

Ответ: N

Task 5. Spoofing and Decoys

В некоторых сетевых конфигурациях вы можете сканировать целевую систему, используя поддельный IP-адрес и даже поддельный MAC-адрес. Такое сканирование полезно только в том случае, если вы можете гарантировать получение ответа. Если вы попытаетесь сканировать целевую систему из случайной сети, используя поддельный IP-адрес, скорее всего, вы не получите никакого ответа, и результаты сканирования могут быть ненадежными.

На следующем рисунке показано, как злоумышленник запускает команду nmap -S SPOOFED_IP MACHINE_IP. В результате Nmap сформирует все пакеты, используя предоставленный исходный IP-адрес SPOOFED_IP. Целевая машина будет отвечать на входящие пакеты, отправляя ответы на целевой IP-адрес SPOOFED_IP. Для того чтобы сканирование работало и давало точные результаты, злоумышленнику необходимо отслеживать сетевой трафик для анализа ответов.

Вкратце, сканирование с использованием поддельного IP-адреса состоит из трех шагов:

  1. Злоумышленник отправляет пакет с поддельным IP-адресом отправителя на целевой компьютер.
  2. Целевой компьютер отвечает, указывая в качестве адреса назначения поддельный IP-адрес.
  3. Злоумышленник перехватывает ответы, чтобы определить открытые порты.

Как правило, предполагается указать сетевой интерфейс с помощью команды -e`ping` и явно отключить сканирование ping -Pn. Поэтому вместо ` nmap -S SPOOFED_IP MACHINE_IPping` вам потребуется использовать команду `ping` nmap -e NET_INTERFACE -Pn -S SPOOFED_IP MACHINE_IP, чтобы явно указать Nmap , какой сетевой интерфейс использовать, и не ожидать ответа на ping. Стоит повторить, что это сканирование будет бесполезно, если система злоумышленника не сможет отслеживать сеть на предмет ответов.

Находясь в той же подсети, что и целевой компьютер, вы также сможете подменить свой MAC-адрес. Вы можете указать исходный MAC-адрес с помощью команды `make - --spoof-mac SPOOFED_MAC...

Подмена IP-адресов работает лишь в минимальном количестве случаев, когда выполняются определенные условия. Поэтому злоумышленник может прибегнуть к использованию поддельных IP-адресов, чтобы затруднить обнаружение. Концепция проста: сканирование должно выглядеть так, будто оно исходит со множества IP-адресов, чтобы IP-адрес злоумышленника затерялся среди них. Как показано на рисунке ниже, сканирование целевой машины будет выглядеть так, будто оно исходит из 3 разных источников, и, следовательно, ответы будут поступать и в поддельные IP-адреса.

Вы можете запустить сканирование с использованием ложных целей, указав конкретный или случайный IP-адрес после команды -D`.`. Например, команда ` nmap -D 10.10.0.1,10.10.0.2,ME MACHINE_IP.` заставит сканирование MACHINE_IP выглядеть так, будто оно исходит с IP-адресов 10.10.0.1, 10.10.0.2, а затем MEкоманда `.` укажет, что ваш IP-адрес должен быть третьим в списке. Другой пример команды `.` — `.` nmap -D 10.10.0.1,10.10.0.2,RND,RND,ME MACHINE_IP, где третий и четвертый исходные IP-адреса назначаются случайным образом, а пятым источником будет IP-адрес злоумышленника. Другими словами, при каждом выполнении последней команды вы ожидаете, что в качестве третьего и четвертого источников ложных целей будут использоваться два новых случайных IP-адреса.

Вопрос: Что нужно добавить в команду sudo nmap MACHINE_IP , чтобы сканирование отображалось так, будто оно выполняется с исходного IP-адреса, 10.10.10.11 а не с вашего IP-адреса?

Ответ: -S 10.10.10.11

Вопрос: Что нужно добавить к команде sudo nmap MACHINE_IP , чтобы сканирование отображалось так, будто оно выполняется с исходных IP-адресов 10.10.20.21 , а 10.10.20.28 также с вашего собственного IP-адреса?

Ответ: -D 10.10.20.21,10.10.20.28,ME

Task 6. Fragmented Packets

Брандмауэр

Брандмауэр — это программное или аппаратное устройство, которое разрешает прохождение пакетов или блокирует их. Он работает на основе правил брандмауэра , которые можно кратко описать как блокировку всего трафика с исключениями или разрешение всего трафика с исключениями. Например, вы можете заблокировать весь трафик к вашему серверу, кроме того, который поступает на ваш веб-сервер. Традиционный брандмауэр проверяет, как минимум, заголовок IP-адреса и заголовок транспортного уровня. Более сложный брандмауэр также попытается проверить данные, передаваемые транспортным уровнем.

ИРС

Система обнаружения вторжений ( IDS ) проверяет сетевые пакеты на наличие определенных поведенческих шаблонов или специфических сигнатур содержимого. Она выдает предупреждение всякий раз, когда обнаруживается вредоносное правило. В дополнение к заголовку IP и заголовку транспортного уровня, IDS проверяет содержимое данных на транспортном уровне и проверяет, соответствует ли оно каким-либо вредоносным шаблонам. Как можно снизить вероятность обнаружения вашей активности Nmap традиционным межсетевым экраном / IDS ? На этот вопрос нелегко ответить; однако, в зависимости от типа межсетевого экрана / IDS , может быть полезно разделить пакет на более мелкие пакеты.

Фрагментированные пакеты

Nmap предоставляет возможность -fфрагментации пакетов. После выбора этой опции IP-данные будут разделены на фрагменты размером не более 8 байт. Добавление еще одного параметра -f( -f -fили -ff) разделит данные на фрагменты по 16 байт вместо 8. Вы можете изменить значение по умолчанию, используя параметр --mtu; однако всегда следует выбирать значение, кратное 8.

Для правильного понимания фрагментации нам необходимо взглянуть на заголовок IP-пакета на рисунке ниже. На первый взгляд он может показаться сложным, но мы видим, что большинство его полей нам известны. В частности, обратите внимание на адрес источника, занимающий 32 бита (4 байта) в четвертой строке, а адрес назначения — еще 4 байта в пятой строке. Данные, которые мы будем фрагментировать на несколько пакетов, выделены красным цветом. Для облегчения сборки на стороне получателя IP использует идентификатор (ID) и смещение фрагмента, показанные во второй строке рисунка ниже.

Давайте сравним выполнение команд `np` sudo nmap -sS -p80 10.20.30.144и ` sudo nmap -sS -p80 -f 10.20.30.144np`. Как вы уже знаете, в первом случае будет использоваться скрытое сканирование TCP SYN на порту 80; однако во второй команде мы запрашиваем у Nmap фрагментацию IP-пакетов.

В первых двух строках мы видим ARP-запрос и ответ. Nmap отправил ARP-запрос, поскольку целевой объект находится в том же Ethernet-соединении. Вторые две строки показывают TCP SYN-пинг и ответ. Пятая строка — это начало сканирования портов; Nmap отправляет TCP SYN-пакет на порт 80. В этом случае заголовок IP составляет 20 байт, а заголовок TCP — 24 байта. Обратите внимание, что минимальный размер заголовка TCP составляет 20 байт.

При фрагментации, запрошенной через параметр `--fragment` -f, 24 байта заголовка TCP будут разделены на фрагменты, кратные 8 байтам, при этом последний фрагмент будет содержать не более 8 байтов заголовка TCP . Поскольку 24 делится на 8, мы получаем 3 фрагмента IP; каждый из них содержит 20 байтов заголовка IP и 8 байтов заголовка TCP . Три фрагмента можно увидеть между пятой и седьмой строками.

Обратите внимание, что если вы добавите -ff(или -f -f), фрагментация данных будет кратна 16. Другими словами, 24 байта заголовка TCP в этом случае будут разделены на два фрагмента IP: первый будет содержать 16 байтов, а второй — 8 байтов заголовка TCP.

С другой стороны, если вы предпочитаете увеличить размер пакетов, чтобы они выглядели безобидными, вы можете использовать опцию --data-length NUM, где num указывает количество байтов, которые вы хотите добавить к вашим пакетам.

Вопрос: Если размер TCP-сегмента составляет 64 байта, и -ff используется опция, сколько IP-фрагментов вы получите?

Ответ:4

Task 7. Idle/Zombie Scan

Подмена исходного IP-адреса может быть отличным способом скрытого сканирования. Однако подмена работает только в определенных сетевых конфигурациях. Она требует наличия возможности отслеживать трафик. Учитывая эти ограничения, подмена IP-адреса может быть малоэффективна; однако мы можем улучшить этот метод с помощью сканирования в режиме ожидания.

Для сканирования в режиме ожидания, или сканирования «зомби» , требуется система, находящаяся в режиме ожидания и подключенная к сети, с которой вы можете взаимодействовать. На практике Nmap будет создавать видимость каждого зондирующего запроса от хоста в режиме ожидания ( зомби ), а затем проверять, получил ли хост в режиме ожидания ( зомби ) какой-либо ответ на поддельный запрос. Это достигается путем проверки значения IP-идентификатора (IP ID) в заголовке IP. Вы можете запустить сканирование в режиме ожидания, используя команду `npm run src` nmap -sI ZOMBIE_IP MACHINE_IP, где ZOMBIE_IP`npm run src` — это IP-адрес хоста в режиме ожидания ( зомби ).

Для проверки доступности (на наличие « зомби-памяти ») порта необходимо выполнить следующие три шага:

  1. Чтобы записать текущий IP-адрес неактивного хоста, необходимо активировать ответ на этом хосте.
  2. Отправьте SYN-пакет на TCP- порт целевого устройства. Пакет должен быть подделан таким образом, чтобы создавалось впечатление, будто он отправлен с IP-адреса неактивного хоста ( зомби-сервера ).
  3. Повторно запустите неактивный компьютер, чтобы он ответил, и вы могли сравнить новый IP-адрес с тем, который был получен ранее.

Давайте объясним на рисунках. На рисунке ниже показана система злоумышленника, которая проверяет неактивный компьютер — многофункциональный принтер. Отправив SYN/ACK, она отвечает пакетом RST, содержащим её вновь увеличенный IP-адрес.

Злоумышленник отправит SYN-пакет на TCP- порт, который он хочет проверить на целевой машине на следующем шаге. Однако этот пакет будет использовать IP-адрес неактивного хоста ( зомби- хоста ) в качестве источника. Могут возникнуть три сценария. В первом сценарии, показанном на рисунке ниже, TCP- порт закрыт; следовательно, целевая машина отвечает неактивному хосту пакетом RST. Неактивный хост не отвечает; следовательно, его IP-адрес не увеличивается.

Во втором сценарии, как показано ниже, TCP- порт открыт, поэтому целевая машина отвечает SYN/ACK неактивному хосту ( зомби- хосту ). Неактивный хост отвечает на этот неожиданный пакет пакетом RST, тем самым увеличивая свой IP-адрес.

В третьем сценарии целевая машина вообще не отвечает из-за правил брандмауэра . Отсутствие ответа приведет к тому же результату, что и при закрытом порту: неактивный хост не увеличит свой IP-адрес.

На заключительном этапе злоумышленник отправляет еще один SYN/ACK на неактивный хост. Неактивный хост отвечает пакетом RST, снова увеличивая IP-адрес на единицу. Злоумышленнику необходимо сравнить IP-адрес пакета RST, полученного на первом этапе, с IP-адресом пакета RST, полученного на третьем этапе. Если разница равна 1, это означает, что порт на целевой машине был закрыт или отфильтрован. Однако, если разница равна 2, это означает, что порт на целевой машине был открыт.

Стоит повторить, что это сканирование называется сканированием в режиме ожидания, поскольку выбор неактивного хоста имеет решающее значение для точности сканирования. Если «неактивный хост» занят, все возвращаемые IP- адреса будут бесполезны.

Вопрос: Вы обнаружили редко используемый сетевой принтер с IP-адресом 10.10.5.5, и решили использовать его в качестве «зомби» при сканировании в режиме ожидания. Какой аргумент следует добавить к команде Nmap?

Ответ: -sI 10.10.5.5

Task 8. Getting More Details

Вы можете добавить эту информацию, --reasonесли хотите, чтобы Nmap предоставлял более подробные сведения о своих рассуждениях и выводах. Рассмотрите два приведенных ниже сканирования системы; однако, последнее добавляет --reason.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sS 10.10.252.27

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:39 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
111/tcp open  rpcbind
143/tcp open  imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sS --reason 10.10.252.27

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:40 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0020s latency).
Not shown: 994 closed ports
Reason: 994 resets
PORT    STATE SERVICE REASON
22/tcp  open  ssh     syn-ack ttl 64
25/tcp  open  smtp    syn-ack ttl 64
80/tcp  open  http    syn-ack ttl 64
110/tcp open  pop3    syn-ack ttl 64
111/tcp open  rpcbind syn-ack ttl 64
143/tcp open  imap    syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds

Указание этого --reasonфлага дает нам четкое представление о том, почему Nmap пришел к выводу, что система работает или определенный порт открыт. В приведенном выше выводе консоли мы видим, что система считается онлайн, поскольку Nmap «получил arp-ответ». С другой стороны, мы знаем, что порт SSH считается открытым, поскольку Nmap получил обратно пакет «syn-ack».

Для получения более подробной информации можно использовать команду `p` -vдля подробного вывода или `p` -vvдля еще большей детализации.

Терминал пентестера

pentester@TryHackMe$ sudo nmap -sS -vv 10.10.252.27

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:41 BST
Initiating ARP Ping Scan at 10:41
Scanning 10.10.252.27 [1 port]
Completed ARP Ping Scan at 10:41, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:41
Completed Parallel DNS resolution of 1 host. at 10:41, 0.00s elapsed
Initiating SYN Stealth Scan at 10:41
Scanning ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) [1000 ports]
Discovered open port 22/tcp on 10.10.252.27
Discovered open port 25/tcp on 10.10.252.27
Discovered open port 80/tcp on 10.10.252.27
Discovered open port 110/tcp on 10.10.252.27
Discovered open port 111/tcp on 10.10.252.27
Discovered open port 143/tcp on 10.10.252.27
Completed SYN Stealth Scan at 10:41, 1.25s elapsed (1000 total ports)
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0019s latency).
Scanned at 2021-08-30 10:41:02 BST for 1s
Not shown: 994 closed ports
Reason: 994 resets
PORT    STATE SERVICE REASON
22/tcp  open  ssh     syn-ack ttl 64
25/tcp  open  smtp    syn-ack ttl 64
80/tcp  open  http    syn-ack ttl 64
110/tcp open  pop3    syn-ack ttl 64
111/tcp open  rpcbind syn-ack ttl 64
143/tcp open  imap    syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
           Raw packets sent: 1002 (44.072KB) | Rcvd: 1002 (40.092KB)

Если -vvэто не удовлетворит ваше любопытство, вы можете использовать это -dдля отладки деталей или -ddдля получения еще более подробной информации. Вы можете быть уверены, что использование этого метода -dсоздаст вывод, выходящий за рамки одного экрана.

Вопрос: Запустите AttackBox, если вы еще этого не сделали. Убедившись, что вы завершили работу виртуальной машины из Задания 4, запустите виртуальную машину для этого задания. Дождитесь ее полной загрузки, затем откройте терминал на AttackBox и используйте Nmap для nmap -sS -F --reason MACHINE_IP сканирования виртуальной машины. Какова причина открытия указанных портов?

Ответ: syn-ack

Task 9. Summary

В этом кабинете проводились следующие виды сканирования.

Эти типы сканирования основаны на неожиданной установке флагов TCP для запроса ответа от портов. Сканирование Null, FIN и Xmas вызывает ответ от закрытых портов, в то время как сканирование Maimon, ACK и Window вызывает ответ от открытых и закрытых портов.


Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!