ICMP NOTES
- ICMP types, а еще лучше описаны все на сайте IANA
- 0 – echo reply
- 8 – echo (PING) request
- 3 – unreahable (net/host/port/etc)
serv:~# netstat -us
IcmpMsg:
InType0: 10144
InType3: 2514
InType8: 540567
OutType0: 540567
OutType3: 2472
OutType8: 10224
<output omitted>
- обычно блокируются все типы кроме 0 и 8-го, особенно это касается
- redirect – redirection, части используется в атаках
- unreachable типа 3
Пример
0 Net Unreachable [RFC792]
1 Host Unreachable [RFC792]
2 Protocol Unreachable [RFC792]
3 Port Unreachable
PING
Параметры по умолчанию
- Huawei: не 32 байта, TTL 255, отправляется 4 пакета
- Windows: 32 bytes, TTL 64 для внешних пакетов и 128 для 127.0.0.1, отправляется 4 пакета
- Unix: 64 bytes, TTL 64, отправляется анлим пакетов
Ping count и результат вида 1 (success)/0 (fail) на основе количества принятых ответов.
ping -c 1 172.31.8.200 | grep loss | awk '{print $4}'
Ping with timestamp
# UNIX ping -D 8.8.8.8 fping -c 10 -D 8.8.8.8 # HUMAR READABLE ping -D google.com | while read str; do dt=$(echo $str | awk '{print $1}' | tr -d '[]'); dt_new=$(date +"%T.%3N" -d @$dt 2>/dev/null); echo "$dt_new --- $str"; done ping google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S.%3N: {}'
Ping with interval less than second
ping -i 0.01 -D 10.10.10.10
Ping по hex адресу (поддерживается как в Windows, так и Linux – каждое число преобразуется из hex в dec)
C:\Users\w>ping 0x329b0117 Pinging 50.155.1.23 with 32 bytes of data:
HPING3
С помощью утилиты можно генерировать трафик, флудить, IP spoofing, DOS’ить (хотя и стандартный чуть умеет – генерировая пакет с миллисекудной скорость между пакетами). Идет как стандартная утилита в Kali Linux.
hping3 --flood -p 80 -S 192.168.1.1 hping3 -c 10000 -d 120 -S -w 64 -p 21 --flood --rand-source 192.168.1.37
tracert/traceroute
- Более подробно (чем ниже) разница между tracert и traceroute описана тут.
как работает tracert – Посылаются запросы (traceroute default udp/with -I icmp, tracert icmp only) к каждому узлу с увеличивающимся TTL, каждый промежуточный узел возвращает TTL expered, а в конце должна прийти ошибка о недоступности порта (traceroute: endpoint PORT unreachable/TCP ack) или ответ icmp (tracert: end point ICMP reply) тогда все ок трассировка завершена.
В дистрибутивах Linux по умолчанию traceroute использует UDP пакеты. Вы можете использовать ІСМР пакеты включив флаг -І.
http://www.infocentr.ru/~bugaga/tcpip/adv35.html
Разница в том, что traceroute посылает UDP-датаграммы, a tracert - эхо-запросы ICMP. Программа tracert работает аналогично traceroute, но для определения маршрута используются не UDP-датаграммы, а эхо-запросы протокола ICMP (как в программе ping). В результате хост-получатель возвращает эхо-ответ ICMP, а не сообщение о недоступности порта. Промежуточные маршрутизаторы по-прежнему возвращают сообщение «истекло время в пути».
http://en.wikipedia.org/wiki/Traceroute On Unix-like operating systems, the traceroute utility by default uses User Datagram Protocol (UDP) datagrams with destination port numbers from 33434 to 33534.
http://sysadmins.ru/post8292431.html
подскажите кто знает: traceroute на Nortel Passport, особенно на 8600, посылает UDP или ICMP пакеты? был бы снифер, вопроса бы не возникло. Впрочем, нашлась документация, в ней написано -
UDP... cpdump -ni fxp0 ! stp and ! arp 12:07:54.482522 IP 10.90.90.90.37048 > 10.90.90.99.33435: UDP, length 12 12:07:54.482548 IP 10.90.90.99 > 10.90.90.90: ICMP 10.90.90.99 udp port 33435 unreachable, length 36
Причем для ICMP/tracert был даже отдельный тип ICMP – 30ый.
Type 30 — Traceroute (Deprecated)
Reference
[RFC1393][RFC6918]
Кроме того утилита traceroute позволяет сделать трассировку с указанием порта назначения как TCP, так и UDP. С использованием TCP SYN пакетов:
sudo traceroute -T -p 22 -w 1 -n 100.0.0.2
C использованием UDP пакетов:
sudo traceroute -U -p 22 -w 1 -n 100.0.0.2
– Почему некоторые сайты не пингуются, но трассировка до них доходит нормально, ведь и ping и tracert используют ICMP?
Traceroute может использовать кроме ICMP в зависимости от ОС разные протоколы, тогда как PING лишь ICMP. Лочим ICMP, а трассу кидаем без использования ICMP.