Hping3 — это улучшенная версия классической утилиты ping (см. Использование Ping на Kali Linux) со значительно большим количеством функций. Далее покажу, как можно использовать Hping3 в пентестах.
Еще по теме: Сканирование больших сетей с помощью Nmap
Возможности Hping3
Вместо простого отправления ICMP-запросов для проверки доступности хоста hping3 можно настроить для отправки любых типов TCP/IP-пакетов. Это делает ее достаточно полезным инструментом как для специалистов по ИБ, так и для обычных администраторов. С помощью hping3 вы можете имитировать атаки, проверять правила межсетевого экрана, тестировать качество сетевых соединений и даже сканировать порты.
- Hping3 может выполнять быстрое сканирование портов TCP и UDP, предоставляя информацию о том, какие порты открыты, закрыты или отфильтрованы брандмауэром.
- С помощью Hping3 можно отправлять пакеты различных протоколов и форматов, что помогает выявить слабые места в конфигурации брандмауэров и систем обнаружения вторжений.
- Hping3 позволяет вручную создавать и отправлять пакеты TCP с заданными флагами, опциями и данными полезной нагрузки. Это может быть полезно для тестирования реакции системы на нестандартные пакеты.
- Используя опцию traceroute, Hping3 может отслеживать маршрут пакетов до целевого хоста, выявляя промежуточные узлы и возможные точки отказа.
- Тулза может выполнять ping-сканирование сети, определяя активные хосты и собирая информацию об их операционных системах и открытых портах.
- Инструмент позволяет передавать файлы по протоколу IP, что может быть полезно для обхода брандмауэров и систем обнаружения вторжений.
Важно помнить, что использование Hping3 и других инструментов пентестинга должно осуществляться только с разрешения владельцев систем и в рамках этических норм.
Примеры использования Hping3 в пентесте
Hping3 можно использовать для выявления активных хостов в сети с помощью ICMP эхо-запросов аналогично утилите ping. Допустим, у вас есть сеть 192.168.1.0/24 и вы хотите найти все активные хосты в этой сети. Примените следующую команду:
1 |
hping3 -1 -c 1 -I eth0 --rand-dest --base-ip 192.168.1.0 --dest-ip 192.168.1.255 |
Использованные параметры:
- -1 означает отправку ICMP эхо-запросов;
- -c 1 указывает, что будет отправлен только один пакет на каждый хост;
- -I eth0 указывает интерфейс, который будет использоваться для отправки пакетов;
- --rand-dest означает, что пакеты будут отправляться в случайном порядке;
- --base-ip 192.168.1.0 и --dest-ip 192.168.1.255 определяют диапазон IP-адресов, которые будут сканироваться.
Эта команда отправит ICMP эхо-запрос на каждый IP-адрес в сети и выведет ответы, позволяя вам определить, какие хосты активны. Вы также можете использовать данную утилиту для имитации DoS-атаки, отправляя большое количество пакетов на целевой хост.
Например, следующая команда отправляет бесконечную серию TCP SYN-пакетов на порт 80 хоста с IP-адресом 192.168.1.1:
1 |
hping3 --flood -S 192.168.1.1 -p 80 |
В этом примере параметр --flood обеспечивает быструю отправку пакетов, -S означает использование TCP/SYN-пакетов, а -p 80 указывает на порт 80.
Обнаружение хоста в сети
Существует множество серверов и устройств, у которых ICMP-ответы отключены по соображениям безопасности. Можно использовать Hping3 для проверки порта на целевой системе, чтобы получить ICMP-ответ.
Сначала мы используем функцию ping, чтобы отправить запрос ping на сервер localhost.
На скрине выше видно, что мы не получаем никаких ответов от цели. Новички могут предположить, что цель находится в оффлайне, и, вероятно, пойдут дальше.
Если мы используем Hping3 для проверки определенного порта путем отправки SYN-пакетов, это заставит цель проявить себя.
1 |
sudo hping3 -S 192.168.225.48 -p 80 -c 2 |
Здесь мы указали SYN-пакеты, используя параметр -S, и указали порт 80, используя параметр -p 80.
Из приведенного выше скрина видно, что были получены успешные ответы от нашей цели. Это означает, что цель открыта.
Передача файлов
Мы также можем отправлять файлы с помощью hping3. Для примера отправим текстовый файл с нашей виртуальной машины Linux Mint на хост-машину Kali Linux. Сначала запустим прослушиватель на машине, с которой мы хотим загрузить наш файл, используя следующую команду:
1 |
sudo hping3 -1 192.168.225.29 -9 signature -I wlan0 |
Здесь флаг -1 используется для ICMP, а IP-адрес — это IP-адрес отправителя. Флаг -9 используется для запуска слушателя, а -I — для выбора сетевого интерфейса. После этого слушатель запустится, как мы видим на следующем скрине.
Режим слушителя Hping3
После запуска режима слушателя можно отправить файл с другой машины, используя следующую команду:
1 |
sudo hping3 -1 192.168.225.29 -e signature -E hping3.txt -d 2000 |
Здесь флаг:
- -e используется для указания подписи.
- -E используется для отправки данных файла.
- -d используется для указания размера данных.
Прослушивание сетевого трафика
Tакже вы можете использовать hping3 в качестве сниффера сетевых пакетов. В этом случае можно использовать режим слушателя hping3 и перехватывать и сохранять весь трафик, проходящий через сетевой интерфейс нашего компьютера.
Сначала нужно разрешить следующее (разкоментировать) в файле /etc/sysctl.conf:
1 |
net.ipv4.conf.all.accept_redirects = 0 |
Это показано на следующем скриншоте:
Для примера, чтобы перехватить весь трафик, содержащий HTTP, выполним команду:
1 |
sudo hping3 -9 HTTP -I wlan0 |
На следующем снимке экрана мы видим результат.
На приведенном выше снимке видно, как hping3 перехватывает пакеты на сетевом интерфейсе wlan0.
Отказ в обслуживании (DOS)
С помощью hping3 также можно провести DoS-атаку (SYN flood), направленную на отказ в обслуживании. Простая команда будет выглядеть следующим образом:
1 |
sudo hping3 -S --flood -V www.examplesite.com |
Здесь флаг:
- -S означает, что используются SYN-пакеты.
- --flood — отправка пакетов как можно быстрее.
Немного усовершенствуем добавив дополнительные параметры:
1 |
sudo hping3 -c 20000 -d 120 -S -w 64 -p TARGET_PORT --flood --rand-source TARGET_SITE |
Здесь флаг:
- -c используется для подсчета пакетов ( можно увеличивать или уменьшать его в соответствии с требованиями).
- -d для размера данных.
- -w для установки размера окна.
- -p для указания порта назначения, —rand-source — для рандомизации источника.
Параметры запуска и использования Hping3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Использование: hping3 хост [опции] -h --help показать эту справку -v --version показать версию -c --count количество пакетов -i --interval ожидание (uX для X микросекунд, например -i u1000) --fast алиас для -i u10000 (10 пакетов в секунду) --faster алиас для -i u1000 (100 пакетов в секунду) --flood отправить пакеты как можно быстрее. Не показывать ответы. -n --numeric числовой вывод -q --quiet тихий режим -I --interface имя интерфейса (иначе используется интерфейс маршрутизации по умолчанию) -V --verbose подробный режим -D --debug отладочная информация -z --bind привязать ctrl+z к ttl (по умолчанию к пункту назначения) -Z --unbind отвязать ctrl+z --beep звуковой сигнал при получении каждого соответствующего пакета |
1 2 3 4 5 6 |
Режимы режим по умолчанию TCP -0 --rawip режим RAW IP -1 --icmp режим ICMP -2 --udp режим UDP -8 --scan режим СКАН. Пример: hping --scan 1-30,70-90 -S www.target.host -9 --listen режим прослушивания IP |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
IP -a --spoof подделка адреса источника --rand-dest случайный адрес назначения. смотрите документацию. --rand-source случайный адрес источника. смотрите документацию. -t --ttl ttl (по умолчанию 64) -N --id идентификатор (по умолчанию случайный) -W --winid использовать порядок байтов id win* -r --rel релативизация поля id (для оценки трафика хоста) -f --frag разбить пакеты на больше фрагментов (может пройти слабую фильтрацию доступа) -x --morefrag установить флаг больше фрагментов -y --dontfrag установить флаг не фрагментировать -g --fragoff установить смещение фрагмента -m --mtu установить виртуальный mtu, подразумевает --frag если размер пакета > mtu -o --tos тип сервиса (по умолчанию 0x00), попробуйте --tos help -G --rroute включает опцию RECORD_ROUTE и отображает буфер маршрута --lsrr локальный маршрут и запись маршрута --ssrr строгий источник маршрута и запись маршрута -H --ipproto установить поле IP protocol, только в режиме RAW IP ICMP -C --icmptype тип icmp (по умолчанию запрос эха) -K --icmpcode код icmp (по умолчанию 0) --force-icmp отправить все типы icmp (по умолчанию отправляются только поддерживаемые типы) --icmp-gw установить адрес шлюза для ICMP redirect (по умолчанию 0.0.0.0) --icmp-ts алиас для --icmp --icmptype 13 (ICMP timestamp) --icmp-addr алиас для --icmp --icmptype 17 (ICMP адрес подсети маски) --icmp-help показать справку для других опций icmp UDP/TCP -s --baseport базовый исходный порт (по умолчанию случайный) -p --destport [+][+]<port> пункт назначения (по умолчанию 0) ctrl+z inc/dec -k --keep сохранить исходный порт -w --win размер окна (по умолчанию 64) -O --tcpoff установить фиктивное смещение данных TCP (вместо tcphdrlen / 4) -Q --seqnum показать только номер последовательности tcp -b --badcksum (пытаться) отправить пакеты с неправильной контрольной суммой IP многие системы исправят контрольную сумму IP, отправив пакет таким образом, вы получите неправильную контрольную сумму |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
UDP/TCP -M --setseq установить номер последовательности TCP -L --setack установить TCP ack -F --fin установить флаг FIN -S --syn установить флаг SYN -R --rst установить флаг RST -P --push установить флаг PUSH -A --ack установить флаг ACK -U --urg установить флаг URG -X --xmas установить флаг X (неиспользуемый) (0x40) -Y --ymas установить флаг Y (неиспользуемый) (0x80) --tcpexitcode использовать последний tcp->th_flags в качестве кода выхода --tcp-mss включить опцию TCP MSS с заданным значением --tcp-timestamp включить опцию TCP timestamp для угадывания HZ/uptime |
1 2 3 4 5 6 7 8 9 10 11 12 |
Общее -d --data размер данных (по умолчанию 0) -E --file данные из файла -e --sign добавить 'подпись' -j --dump вывести пакеты в шестнадцатеричном формате -J --print вывести печатные символы -B --safe включить 'безопасный' протокол -u --end сообщить вам, когда файл --file достигнет EOF и предотвратить перемотку -T --traceroute режим трассировки маршрута (подразумевает --bind и --ttl 1) --tr-stop Выход при получении первого не ICMP в режиме трассировки маршрута --tr-keep-ttl Оставить фиксированный исходный TTL, полезно для отслеживания только одного хопа --tr-no-rtt Не вычислять/отображать информацию RTT в режиме трассировки маршрута |
Как видите, использование Hping3 в пентесте на Kali Linux — эффективный способом обнаружения и анализа уязвимых хостов в сети.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Команды для работы с сетью в Kali Linux
- Сканирование больших сетей с помощью Nmap
- Как сканировать скрыто с помощью Netdiscover и Nmap