Welcome to Энциклопедия сетевых протоколов
Поиск

Модули
· Титульная страница
· Мир протоколов
· Основные темы
· Архив публикаций
· Поиск
· Каталог ссылок
· Участники
· Документы и программы

Выбор языка
Язык интерфейса:


Статистика
20490369
запросов с 22 сентября 2005

Внешняя статистика
Rambler's Top100

  
Обзоры: Hping2
Опубликовано 27 сент. 2005 (Вт.) в 17:18:46
Тема: Генераторы пакетов и сетевые тестеры

www.hping.org

Программа hping2 может генерировать почти любые пакеты TCP/IP, адресованные указанному в командной строке хосту. Программа распространяется свободно на условиях лицензии GPL.



Программа hping2 является мощным инструментом тестирования сетей и может передавать пакеты IP с заданными параметрами, выводя на экран полученные от адресата отклики, подобно программам, работающим с откликами ICMP. Hping2 поддерживает фрагментацию, позволяет задавать произвольное содержимое поля данных пакета, менять размер пакетов и может использоваться для передачи файлов, инкапсулированных с использованием поддерживаемых протоколов. Используя hping2, вы сможете решить множество задач, включая:

  • тестирование межсетевых экранов;

  • сканирование портов с широким выбором вариантов сканирования;

  • проверка производительности сети для различных протоколов;

  • проверка передачи пакетов с различным размером и TOS (тип обслуживания);

  • проверка передачи фрагментированных пакетов;

  • определение Path MTU;

  • передача файлов даже через враждебно настроенные брандмауэры;

  • трассировка пакетов для различных протоколов;

  • определение ОС удаленных хостов;

  • аудит стека TCP/IP.

Кроме того, программа может оказать существенную помощью при изучении протоколов стека TCP/IP.

Синтаксис

hping2 [-hvnqVDzZ012WrfxykQbFSRPAUXYjJBuTG] [-c count] [-i wait] [--fast] [-I interface] [-9 signature] [-a host] [-t ttl] [-N ip id] [-H ip protocol] [-g fragoff] [-m mtu]
[-o tos] [-C icmp type] [-K icmp code] [-s source port] [-p[+][+] dest port][-w tcp window] [-O tcp offset] [-M tcp sequence number] [-L tcp ack] [-d data size] [-E filename]
[-e signature] [--icmp-ipver version] [--icmp-iphlen length] [--icmp-iplen length]
[--icmp-ipid id] [--icmp-ipproto protocol] [--icmp-cksum checksum] [--icmp-ts]
[--icmp-addr] [--tcpexitcode] [--tcp-timestamp] [--tr-stop] [--tr-keep-ttl] [--tr-no-rtt] [--rand-dest] [--rand-source] [--beep] hostname

Опции

Опции общего назначения

Таблица 1 Опции hping2 общего назначения

Опция

Описание

-h

--help

Выводит на экран краткую справку о работе с программой.

-v

--version

Выводит на экран номер версии программы и сведения об используемых API

-c

--count

Задает прекращение работы программы после передачи или приема заданного числа пакетов. После передачи последнего пакета hping2 будет ждать отклика в течение заданного в секундах периода COUNTREACHED_TIMEOUT. Значение периода ожидания можно установить, отредактировав заголовочный файл hping2.h.

-i

--interval

Задает период повтора передачи пакетов в секундах или микросекундах (префикс u перед значением интервала). По умолчанию интервал передачи составляет 1 секунду. При использовании hping2 для передачи файлов эта опция оказывает существенное влияние на реальную скорость передачи. Существенное влияние период передачи может оказывать и на сканирование в режимах idle/spoofing.


--fast

Псевдоним для -i u10000, обеспечивающий передачу пакетов с периодом 10 мсек.


--faster

Псевдоним для -i u1, обеспечивающий передачу пакетов с периодом 1 мксек.


--flood

Задает передачу пакетов с максимально возможной скоростью без ожидания приема откликов.

-n

--numeric

Отключает преобразование IP-адресов в символьные имена.

-q

--quiet

Отключает вывод всей информации за исключением стартовой и финишной строки.

-I

--interface

Указывает программе hping2 интерфейс, который будет использоваться для передачи пакетов.
В системах Linux и BSD программа hping2 по умолчанию передает пакеты в интерфейс, используемый для принятого по умолчанию маршрута. В других системах и при отсутствии принятого по умолчанию маршрута hping2 будет использовать первый реальный (не loopback) интерфейс.

-V

--verbose

Задает вывод максимального количества информации. Отклики TCP при использовании этой опции имеют вид:

len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0

rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0

-D

--debug

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

-z

--bind

Позволяет менять для передаваемых пакетов значение поля TTL с помощью клавиш CTRL+Z.

-Z

--unbind

Отключает возможность изменения времени жизни пакетов с помощью CTRL+Z.


--beep

Включает подачу звукового сигнала при поступлении каждого входящего пакета (за исключением сообщений ICMP об ошибках).


Опции выбора протокола

По умолчанию программа генерирует пакеты TCP, адресованные в порт 0, использующие окно размером 64 и не имеющие каких-либо флагов TCP. Такие пакеты могут быть весьма полезны для скрытого “прощупывания” удаленного хоста, особенно если последний спрятан за брандмауэром, отбрасывающим пакеты ICMP. Более того, адресованные в порт 0 пакеты без опций зачастую не протоколируются в журнальных файлах проверяемой системы.

Таблица 2 Опции hping2 для выбора протокола

Опция

Описание

-0

--rawip

Режим RAW IP, при котором hping2 будет передавать заголовки IP с прицепленными к ним данными, указанными опцией --signature и/или –file. Опция --ipproto дополнительно позволяет задать значение поля протокола IP.

-1

--icmp

Режим ICMP – по умолчанию программа будет передавать пакеты ICMP echo-request, но вы можете выбрать тип и код ICMP с помощью опций --icmptype и --icmpcode.

-2

--udp

Режим UDP – по умолчанию hping2 будет передавать пакеты UDP, адресованные в порт 0. Для управления параметрами заголовков UDP могут служить опции –baseport, --destport, --keep.

-8

-–scan

Режим сканирования. Эта опция должна использоваться с аргументом, описывающим группу портов для сканирования. Номера портов в группе разделяются запятыми, при сканировании непрерывного множества портов можно указывать границы диапазона, используя в качестве разделителя дефис (-). Ключевое слово all задает сканирование всех портов в диапазоне от 0 до 65535, а ключевое слово known задает сканирование всех портов из файла /etc/services.

При задании группы портов можно использовать все варианты одновременно. Например, команда

hping --scan 1-1000,8888,known

обеспечивает сканирование портов диапазона 1 – 1000, порта 8888 и портов, указанных в файле /etc/services. Допускается при задании группы портов использовать знак инверсии (!). Например, команда

hping --scan '1-1024,!known'

обеспечивает сканирование всех портов диапазона 1-1024, за исключением портов, указанных в файле /etc/services.

Программа hping в этом режиме похожа на обычный сканер портов, однако вы сохраняете возможности использования других опций. Например, для SYN-сканирования вы можете задать в командной строке опцию -S. Обеспечивается возможность изменения размера окна TCP, времени жизни пакетов (TTL), фрагментации IP и т. п.

В отличие от многих сканеров hping выводит некоторые интересные сведения о принятых пакетах, включая IP ID, TCP win, TTL и т. п. Не забывайте принимать во внимание эту дополнительную информацию.

-9

--listen

Режим прослушивания - hping2 ждет пакеты, соответствующие заданной сигнатуре (параметр опции) и выводит дамп таких пакетов от завершения сигнатуры до конца пакета.


Опции IP

Таблица 3 Опции hping2 для протокола IP

Опция

Описание

-a

--spoof

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


--rand-source

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


--rand-dest

Эта опция обеспечивает генерацию пакетов со случайным адресом получателя. Адреса выбираются из диапазона, заданного в командной строке. Например, команда

hping 10.0.0.x ––rand-dest

будет генерировать пакеты, адресованные хостам сети 10.0.0.0/24, а команда

hping x.x.x.x ––rand-dest

будет использовать все адресное пространство IPv4. Если вам трудно определить диапазон адресов, попытайтесь использовать опцию --debug. При использовании этой опции отклики будут приниматься от всего диапазона адресатов.

Отметим, что при использовании этой опции hping не сможет корректно определить интерфейс для передачи пакетов и вам следует использовать опцию –i для указания выходного интерфейса.

-t

--ttl

Задает время жизни генерируемых пакетов (TTL). Эта опция весьма полезна при совместном использовании с опциями --traceroute и --bind.

-N

--id

Задает значение идентификатора IP ID. По умолчанию программа использует случайные значения поля идентификации IP или ID = getpid() & 0xFF (при включенной фрагментации).

-H

--ipproto

Переводит стек IP в режим RAW.

-W

--winid

Обеспечивает корректное отображение идентификаторов IP для откликов от систем Windows.

-r

--rel

Задает вывод значений инкремента идентификаторов вместо самих идентификаторов (см. HPING2-HOWTO). Отметим, что значение инкремента не рассчитывается просто как id[N] – id[N-1], а учитывает потерю пакетов.

-f

--frag

Задает режим фрагментации пакетов, который может быть полезен для тестирования стека IP или проверки пакетных фильтров. По умолчанию используются фрагменты размером 16 байтов. Для установки другого размера фрагментов можно использовать опцию --mtu (см. ниже).

-x

--morefrag

Устанавливает флаг наличия других фрагментов (more fragments)IP. Эта опция полезна в тех случаях, когда хотите получать от тестируемого хоста сообщения ICMP time-exceeded в процессе сборки фрагментов.

-y

--dontfrag

Устанавливает флаг запрета фрагментирования. Эту опцию можно использовать для определения Path MTU.

-g

--fragoff

Задает смещение фрагмента.

--mtu

Задает значение виртуального MTU, отличное от 16, для использования при включенном режиме фрагментации. Пакеты будут делиться на фрагменты автоматически, если их размер превышает значение виртуального MTU.

-o

--tos

Задает шестнадцатеричное значение поля TOS (Type Of Service – тип обслуживания.). Перечень возможных значения можно получить по команде hping --tos help.

-G

--rroute

Задает режим записи маршрута (Record route). В каждом передаваемом пакете устанавливается флаг RECORD_ROUTE, а для возвращенных пакетов выводится содержимое буфера маршрута. Отметим, что размеров заголовка IP достаточно лишь для 9 маршрутных записей и все последующие хосты будут игнорировать или отбрасывать эту опцию. При использовании hping запись маршрута возможна даже в тех случаях, когда тестируемый хост фильтрует пакеты ICMP. Опция записи маршрута относится к протоколу IP, а не ICMP, поэтому запись маршрута возможна даже в режимах TCP и UDP.


Опции ICMP

Таблица 4 Опции hping2 для протокола ICMP

Опция

Описание

-C

--icmptype

Задает для генерируемых пакетов тип ICMP (по умолчанию - echo request).

-K

--icmpcode

Задает для генерируемых пакетов код ICMP (по умолчанию - 0).


--icmp-ipver

Задает номер версии IP в заголовке пакета IP, содержащемся в поле данных ICMP (по умолчанию – 4).


--icmp-iphlen

Задает размер заголовка пакета IP, содержащегося в поле данных ICMP (по умолчанию – 5; 5 слов по 32 бита = 20 байтов).


--icmp-iplen

Задает значение поля размер пакета IP для заголовка IP, содержащегося в поле данных ICMP. По умолчанию используется реальный размер пакета.


--icmp-ipid

Задает значение поля IP ID для заголовка IP, содержащегося в поле данных ICMP. По умолчанию используется случайное значение.


--icmp-ipproto

Задает значение поля протокола IP для заголовка IP, содержащегося в поле данных ICMP (по умолчанию – TCP).


--icmp-cksum

Задает контрольную сумму пакета ICMP (по умолчанию используется реальное значение контрольной суммы).


--icmp-ts

Псевдоним для --icmptype 13 (передача запросов ICMP timestamp).


--icmp-addr

Псевдоним для --icmptype 17 (передача запросов ICMP address mask).


Опции TCP/UDP

Таблица 5 Опции hping2 для протоколов TCP/UDP

Опция

Описание

-s

--baseport

Программа hping2 использует порт отправителя для предсказания порядковых номеров откликов. Нумерация начинается с заданного этим параметром значения и увеличивается на такую же величину для каждого передаваемого пакета. При получении пакета порядковый номер может быть рассчитан как replies.dest.port – base.source.port. По умолчанию для базового порта отправителя используется случайный номер и данная опция позволяет задать желаемое значение номера порта. Если вы не хотите, чтобы номер порта увеличивался для каждого переданного пакета, используйте опцию -k (--keep).

-p

--destport

[+][+]dest port

Эта опция задает порт получателя (по умолчанию – 0). Если номер порта задан с префиксом + (например, +1024) номер порта получателя будет увеличиваться с каждым принятым откликом, а префикс ++ задает увеличение номера порта для каждого передаваемого пакета. По умолчанию порт получателя можно менять в интерактивном режиме с помощью клавиш CTRL+z.


--keep

Сохраняет номер порта отправителя для передаваемых пакетов (см. --baseport).

-w

--win

Задает размер окна TCP (по умолчанию – 64).

-O

--tcpoff

Задает смещение данных в пакете TCP. Обычно используется смещение в четверть размера заголовка TCP.

-M

-–tcpseq

Задает порядковый номер TCP.

-L

--tcpack

Задает передачу подтверждений TCP ACK.

-Q

--seqnum

Эта опция может использоваться для сбора порядковых номеров, генерируемых проверяемым хостом – это полезно при анализе предсказуемости порядковых номеров. Ниже показан пример вывода по команде hping2 --seqnum:

HPING uaz (eth0 192.168.4.41): S set, 40 headers + 0 data bytes

2361294848 +2361294848

2411626496 +50331648

2545844224 +134217728

2713616384 +167772160

2881388544 +167772160

3049160704 +167772160

3216932864 +167772160

3384705024 +167772160

3552477184 +167772160

3720249344 +167772160

В первой колонке указывается порядковый номер, а во второй разница порядковых номеров с предыдущим пакетом.

-b

--badcksum

Задает передачу пакетов UDP/TCP с некорректной контрольной суммой.


--tcp-timestamp

Включает опцию TCP timestamp и пытается предсказать частоту обновления временных меток и время работы проверяемого хоста (uptime).

-F

--fin

Устанавливает флаг TCP FIN.

-S

--syn

Устанавливает флаг TCP SYN.

-R

--rst

Устанавливает флаг TCP RST.

-P

--push

Устанавливает флаг TCP PUSH.

-A

--ack

Устанавливает флаг TCP ACK.

-U

--urg

Устанавливает флаг TCP URG.

-X

--xmas

Устанавливает флаг TCP Xmas.

-Y

--ymas

Устанавливает флаг TCP Ymas.


Опции для всех протоколов

Таблица 6 Опции hping2 для всех протоколов

Опция

Описание

-d

--data

Задает размер генерируемых пакетов без учета заголовков. Hping2 показывает размер генерируемых пакетов в первой строке вывода.

-E

--file

Задает использование указанного файла в качестве источника информации для поля данных генерируемых пакетов.

-e

--sign

Задает включение указанной в качестве параметра сигнатуры в начало поля данных генерируемых пакетов. Если размер сигнатуры превышает размер поля данных, выдается сообщение об ошибке. Если вы не указали размер поля данных, hping будет создавать пакеты с размером заданной сигнатуры (без учета заголовков). Эта опция может без риска пользоваться вместе с опцией --file – оставшаяся после включения сигнатуры часть поля данных пакета будет заполнена информацией из файла.

-j

--dump

Задает вывод шестнадцатеричного дампа принятых пакетов.

-J

--print

Задает вывод дампа ASCII для принятых пакетов.

-B

--safe

Включает безопасный протокол передачи файлов, который обеспечивает повторную передачу потерянных пакетов. Например, для передачи файла с хоста A на хост B /etc/passwd на хосте A следует ввести команду

hping2 host_b --udp -p 53 -d 100 --sign signature --safe --file /etc/passwd

а на хосте B

hping2 host_a --listen signature --safe --icmp

-u

--end

При использовании вместе с опцией --file эта опция обеспечивает выдачу сообщения при достижении конца файла (EOF).

-T

--traceroute

Включает режим трассировки (Traceroute). При использовании этой опции hping2 будет увеличивать значение TTL всякий раз при получении от промежуточных узлов сообщения ICMP о достижении нулевого значения TTL. Эта опция неявно предполагает наличие опций --bind и --ttl 1. Вы можете указать иное время жизни пакетов с помощью опции --ttl.

Начиная с версии 2.0.0 программа обеспечивает при использовании данной опции вывод значений RTT.


--tr-keep-ttl

Сохраняет фиксированное значение TTL для режима traceroute, что позволяет осуществлять мониторинг одного интервала (hop) используемого маршрута. Например, для контроля пятого интервала и изменений RTT можно воспользоваться командой hping2 host --traceroute --ttl 5 --tr-keep-ttl.


--tr-stop

Эта опция задает завершение работы при получении первого пакета, отличного от сообщения ICMP time exceeded. Это позволяет эмулировать поведение утилиты traceroute.


--tr-no-rtt

Отключает расчет и вывод RTT в режиме traceroute.


--tcpexitcode

Задает завершение работы с кодом tcp->th_flag. Эта опция полезна при использовании программы в сценариях, которым требуется информация об откликах проверяемого хоста.


Формат вывода для протокола TCP

Стандартный формат вывода для пакетов TCP имеет вид:

len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms

  • len – размер принятого от канального уровня пакета (в байтах) без учета заголовка канального уровня. Это значение может отличаться от размера дейтаграмм IP в результате исключения заполняющих байтов.

  • ip – IP адрес отправителя.

  • flags – флаги TCP (R - RESET, S - SYN, A - ACK, F – FIN, P - PUSH, U - URGENT, X - 0x40, Y – 0x80).

  • DF – флаг запрета фрагментирования в заголовке IP.

  • seq – порядковый номер пакета (для пакетов TCP/UDP устанавливается с использованием номера порта отправителя, для ICMP совпадает с порядковым номером).

  • id – значение поля идентификации IP ID.

  • win – размер окна TCP.

  • rtt – время кругового обхода в миллисекундах.

При использовании опции -V будут выводиться дополнительные поля, как показано ниже:

len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1223672061 sum=e61d urp=0

  • tos – поле типа обслуживания заголовка IP.

  • iplen – поле размера из заголовка IP.

  • seq – порядковый номер пакета из заголовка TCP.

  • ack – порядковый номер подтверждения из заголовка TCP.

  • sum – контрольная сумма из заголовка TCP.

  • urp – значение флага срочности из заголовка TCP.


Формат вывода для пакетов UDP

Стандартный формат вывода для пакетов UDP имеет форму:

len=46 ip=192.168.1.1 seq=0 ttl=64 id=0 rtt=6.0 ms

Значение полей вывода совпадает со значением одноименных полей для протокола TCP.

Формат вывода для пакетов ICMP

Для пакетов ICMP информация выводится в формате, подобном показанному ниже:

ICMP Port Unreachable from ip=192.168.1.1 name=nano.marmoc.net

Каждая строка вывода начинается с идентификатора протокола ICMP, за которым следует тип сообщения ICMP. В поле ip указывается IP-адрес отправителя дейтаграммы IP, содержащей сообщение ICMP, поле name содержит символьное имя хоста-отправителя, определенное с помощью DNS (запись PTR) или ключевое слово UNKNOWN, если имя определить не удалось.

Сообщения ICMP Time exceeded для доставки или сборки фрагментов выводятся с использованием несколько отличающегося формата:

TTL 0 during transit from ip=192.168.1.1 name=nano.marmoc.net

TTL 0 during reassembly from ip=192.70.106.25 name=UNKNOWN

Разница заключается в добавлении поля TTL 0 перед описанием типа сообщения.

Известные проблемы

Даже при указании опций --end и --safe последний пакет, используемый для передачи файла, будет дополнен байтами 0x00.

Данные читаются без учета выравнивания, что может приводить к возникновению проблем в некоторых системах, где поля заголовков TCP/IP не выравниваются по естественн


 
Вход
Регистрационное имя

Пароль

[Восстановить пароль]

Если у Вас еще нет учетной записи, Вы можете зарегистрироваться.


Связанные ссылки
· Поиск в разделе Генераторы пакетов и сетевые тестеры
· Статьи пользователя Николай Малых


Самая популярная статья раздела Генераторы пакетов и сетевые тестеры:
Hping2


Оценка статьи
Средняя оценка: 4
голос.: 1


Оцените эту публикацию:

Отлично
Очень хорошо
Хорошо
Приемлемо
Плохо


Параметры

 Вариант для печати Вариант для печати


Связанные темы

Вопросы безопасностиВопросы маршрутизации

"Вход" | Вход/регистрация | 0 коммент.
Комментарии выражают мнение их авторов. Администрация сайта не несет никакой ответственности за достоверность представленных в комментариях посетителей сведений, а также за содержание таких комментариев.

Для публикации своих комментариев Вам нужно зарегистрироваться..
Copyright © Nikolai Malykh
Все права на опубликованные на сайте материалы принадлежат Nikolai Malykh, если в опубликованном на сайте документе явно не указано иное.
Не разрешается воспроизведение опубликованных на сайте документов без согласия правообладателя.

Hosted By Web Hosting by iPage

Copyright © 2005 by Nikolai Malykh
Based on PHP-Nuke by Francisco Burzi. This is free software, and you may redistribute it under the GPL. Author comes with absolutely no warranty.
Время генерации страницы: 0.46 сек.