Главная

Wednesday, 5 February 2020

Hping как сетевой сканирующий инструмент.

Всем привет.

Недавно я говорил про утилиту fping. А сегодня расскажем про ее старшего брата Hping. Hping - бесплатный генератор пакетов и анализатор для протокола TCP/IP, распространяемый Salvatore Sanfilippo (Antirez). Это один из тестеров для сетевой безопасности.

Hping де-факто инструмент для аудита безопасности и тестирования брандмауэров и сетей и использовался для технологии сканирования бездействия (также изобретенной автором hping), и теперь он реализован в Nmap Security Scanner.

Нping - это ассемблер/анализатор пакетов TCP/IP с командной строкой.

Интерфейс вдохновлен командой unix ping (8), но hping не только может отправлять эхо-запросы ICMP. Он поддерживает протоколы TCP, UDP, ICMP и RAW-IP, имеет режим traceroute, возможность отправки файлов между закрытым каналом и многими другими функциями. В то время как hping использовался в прошлом как инструмент безопасности, он может использоваться многими способами людьми, которые не заботятся о безопасности для тестирования сетей и хостов.

Для чего вы можете использовать hping:
  • Тестирование брандмауэра
  • Расширенное сканирование портов
  • Сетевое тестирование с использованием разных протоколов, TOS, фрагментация, служба атаки - DoS с использованием hping3 с поддельным IP в Kali Linux - blackMORE Ops - 61
  • Ручное обнаружение MTU пути
  • Расширенный traceroute, при всех поддерживаемых протоколах
  • Удаленные отпечатки ОС
  • Удаленное отладочное время
  • Аудит аудита TCP / IP
  • hping также может быть полезен для студентов, изучающих TCP / IP.
  • Traceroute / ping / probe за брандмауэром, который блокирует попытки с использованием стандартных утилит.
  • Выполнение проверку простоя (теперь она реализована в nmap с помощью простого пользовательского интерфейса).
  • Проверьте правила брандмауэра.
  • Проверить идентификационные номера.
  • Использовать известные уязвимости стеков TCP / IP.
  • Сетевые исследования.
  • Изучите TCP / IP (hping использовался в сетевых курсах AFAIK).
  • Напишите реальные приложения, связанные с тестированием и безопасностью TCP / IP.
  • Автоматизированные тесты брандмауэра.
  • Доказательство эксплойтов концепции.
  • Исследования в области сетевого взаимодействия и безопасности, когда необходимо подражать сложному поведению TCP / IP.
  • Системы прототипов IDS.
  • Простые в использовании сетевые утилиты с интерфейсом Tk.



Как использовать hping?

Командный синтаксис:
hping3 = Имя бинарного приложения.
-c 100000 = Количество отправленных пакетов.
-d 120 = Размер каждого пакета, который был отправлен на целевой компьютер.
-S = Я отправляю только пакеты SYN.
-w 64 = размер окна TCP.
-p 21 = Порт назначения (21 — порт FTP). Здесь вы можете использовать любой порт.
—flood = Отправка пакетов как можно быстрее, без необходимости отображать входящие ответы. Режим флуда.
—rand-source = Использование случайных источников IP-адресов. Вы также можете использовать -a или -spoof, чтобы скрыть имена хостов. См. Страницу MAN ниже.
www.itsecforu.ru = IP-адрес целевого IP-адреса или целевой IP-адрес. Здесь вы также можете использовать название веб-сайта. В моем случае разрешается 127.0.0.1 (как указано в файле /etc/hosts)

Простой SYN флуд — DoS с использованием HPING3


Тестирование правил брандмауэра — Часть 1:

Hping3 по умолчанию (без параметров) отправляет нулевой пакет с заголовком TCP на порт 0.
Вы можете выбрать использование другого протокола с помощью числовой опции, доступной для каждого из них:
-0 (режим Raw IP)
-1 (режим ICMP)
-2 (режим UDP)
-8 (Режим сканирования)
-9 (Режим прослушивания)

Поскольку hping3 использует TCP по умолчанию, отсутствие указанных ниже параметров отправит сегмент TCP.

При использовании TCP мы можем решить либо опустить флаги (по умолчанию), либо установить флаг, используя один из следующих параметров:
-S (SYN)
-A (ACK)
-R (RST)
-F (FIN)
-P (PUSH)
-U (URG)
-X (XMAS)
-Y (YMAS)

В следующих примерах мы будем использовать TCP, UDP и ICMP.

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

ПИНГ

Прежде всего, мы отправим простой запрос PING (ICMP Echo Request) на нашу цель.
?
# hping3 -1 -c 1 192.168.5.1

-1 в этой команде сообщает hping3 использовать ICMP, который по умолчанию отправляет Echo Reply.

В -c 1 говорится, что мы хотим отправить только 1 пакет, а 192.168.5.1 — наша цель.


Из вывода команды видно, что 1 пакет был отправлен и принят. Теперь давайте проверим ответ в выводе tcpdump.
?
# tcpdump -i wlan0 -n host 192.168.5.1


Из этого вывода tcpdump видно, что команда отправила ICMP Echo Request, и наша цель ответила соответствующим ICMP Echo Reply. Из первого отправленного пакета мы уже можем сказать, что наша цель жива.

SYN, порт 0

?
# hping3 -S-c 1-s 5151 192.168.5.1


Как указано выше, -S отмечает флаг SYN в нашем заголовке TCP.

Мы также видим здесь новый вариант: -s 5151, который выбирает порт источника для использования. Без этой опции hping3 просто выбирает случайный порт источника. Поскольку порт 0 не открыт, мы видим ответ RST-ACK (отмеченный на выходе). Позже мы увидим, как цель будет реагировать на пакет SYN, предназначенный для открытого порта. Как и ожидалось, на выходе показано, что пакет был отправлен с использованием исходного порта 5151 в нашу цель на порту 0 с установленным флагом SYN. Ниже мы можем увидеть набор Flags [R.], и у нас также есть «ack» на выходе. Многие ресурсы укажут, что «.» В выводе tcpdump отмечает флаг ACK, но это просто неверно. В поле флагов tcpdump имеется 7 доступных опций: S (SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR), E (ECN-Echo) и . нет флагов). Когда на выходе отображается [.], Это означает, что заголовок TCP не имеет установленного флага. В сочетании с другим флагом, «.» показывает флаг, который не является одним из доступных параметров. Во многих случаях следующим «.» будет флаг ACK, но это может быть подтверждено только «ack» на выходе.

FIN, Порт 0

Мы собираемся отправить идентичный пакет, за исключением этого времени с установленным флажком FIN.
?
# hping3 -F -c 1-с 5151 192.168.5.1


Единственное, что мы сделали по-другому в этой команде, изменяет -S на -F.
Опять же, у нас есть ответ. Поскольку этот порт закрыт, мы должны увидеть тот же ответ, как если бы мы отправили пакет SYN. Как и следовало ожидать, мы видим тот же ответ RST-ACK, что и раньше, отмеченный [R.] и «ack».

SYN, порт 80

В предыдущих примерах мы отправляли пакеты в порт 0. Теперь мы проверим известный порт, порт 80 (http). Поскольку SYN является первым шагом в трехстороннем рукопожатии TCP-соединения (SYN, SYN-ACK, ACK), если порт открыт, мы получим правильный ответ SYN-ACK из-за того, что цель пытается завершить соединение , это популярный метод, используемый при сканировании портов, известный как «полуоткрытое соединение».
?
# hping3 -S -c 1 -s 5151 -p 80 192.168.5.1


Все эти параметры должны выглядеть знакомыми, за исключением -p 80. Он просто указывает порт назначения, который будет установлен в нашем заголовке TCP. Мы видим, что наша цель ответила, и на выходе отображается «flags = SA», подтверждающая, что мы получили пакет SYN-ACK. Поскольку наша цель ответила SYN-ACK (отмечена [S.] и «ack»), мы знаем, что порт 80 нашей цели открыт и принимает соединения. В противном случае мы увидим [R.], как в предыдущем пакете SYN, отправленном на порт 0.

ACK, порт 80

Теперь мы знаем, что порт 80 открыт для нашей цели, поэтому давайте посмотрим, как и как он реагирует на разные пакеты. В последнем примере мы видели, что когда мы отправляем пакет SYN в открытый порт, мы получаем SYN-ACK. Давайте посмотрим, какой ответ мы получим, когда отправляем пакет ACK (заключительная часть трехстороннего рукопожатия).
?
# hping3 -A -c 1-s 5151 -p 80 192.168.5.1


Наша цель ответила, но на этот раз с установленным флагом RST.


Наш вывод tcpdump показывает отправленный пакет с отметкой [.] Следующий ack поясняет, что это флаг ACK. На выходе также отображается ответ цели с пакетом RST.

UDP, порт 80

Мы отправим последний пакет в нашу цель, чтобы узнать, получим ли мы ответ. Поскольку порт 80 использует TCP как протокол транспортного уровня, должно быть интересно посмотреть, какой ответ мы получим, когда отправляем ему UDP-пакет.
?
# hping3 -2 -c 1 -s 5151 -p 80 10.0.0.4

Используя команду «-2» в этой команде, мы указываем использование UDP в качестве нашего протокола транспортного уровня. На выходе мы видим, что мы получили сообщение ICMP Port Unreachable из-за того, что этот порт не открыт для трафика UDP. На выходе tcpdump будет отображаться эта же информация. 

No comments:

Post a Comment

А что вы думаете по этому поводу?