Потребовалось мне как-то проверить отказоустойчивость некоторых сервисов на всякие разновидности атак, т.е. самому организовать DDoS на свой сервис, интернет подсказал, что есть замечательная утилита hping.
Немного о…
hping3 — это сетевая утилита, позволяющая посылать сгенерированные вами TCP/IP пакеты и отслеживать ответы также, как это делает ping.
Используя hping3 сможете:
- протестировать правила файервола;
- сканировать порты;
- протестировать производительность сети, используя различные протоколы, размер пакетов, TOS и фрагментацию.
- Path MTU discovery
- передавать файлы даже черех самые строго настроенные файерволы;
- работать, как traceroute, используя при этом различные протоколы;
- Firewalk-подобное использование;
- определение переметров удалённой ОС;
- аудит стека TCP/IP;
- и многое, многое другое.
Установить программу просто:
aptitude install hping3
Вот собственно как выглядит строчка создающая TCP SYN-Flood на порт 80
hping -i u1 -S -p 80 dst-host-or-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
Опции 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 пакеты без опций зачастую не протоколируются в журнальных файлах проверяемой системы.
Опции 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
Опции 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
Опции 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.
Опции для всех протоколов
Опции 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. Эта опция полезна при использовании программы в сценариях, которым требуется информация об откликах проверяемого хоста.
перевод мана позаимствован с BiLiM Systems