Homepage: Official web site of tcpdump
Утилита tcpdump относится к числу так называемых «снифферов» — программ предназначенных для перехвата сетевого трафика. Одним словом, tcpdump предназначен для подслушивания. Разработан Группой сетевых исследований (Network Reseach Group, NRG) Отдела информационных и вычислительных технологий (Information and Computing Sciences Division, ICSD) в Национальной лаборатории Лоренс Беркли (Lawrence Berkeley National Laboratory, LBNL).
tcpdump не единственный Сетевые анализаторы снифферы, которым может пользоваться администратор. Кроме tcpdump можно обратить внимание на такие программы, как:
tcpdump работает при помощи интерфейса bpf (Berkeley Packet Filter). Если поддержку этого устройства отключить, сниффинг в BSD окажется невозможен. Права на запуск программы tcpdump определяются правами доступа к устройсву bpf (/dev/bpf0). Эти права можно регулировать через devfs. Если вы предоставляете, например, группе operator права на чтение из этого устройства, то это значит, что все члены этой группы смогут перехватывать любой трафик, в том числе трафик суперпользователя.
Если программа tcpdump вызвана для прослушивания некоторого интерфейса, она переводит его в «promiscuous mode» — «неразборчивый режим». В этом режиме интерфейс ловит вообще все пакеты, которые до него добрались, а не только пакеты адресованные непосредственно ему. Таким образом, если сеть собрана не на коммураторах (switch), а на репитерах (hub), то tcpdump позволит перехватить трафик между посторонними машинами, т.е. подслушать разговор двух сторонних машин. Сказанное не означает, что перехват трафика невозможен в сети собранной на коммутаторах. Впрочем, интерфейс можно и не переводить в promiscous mode, если передать программе аргумент -p.
# tcpdump -r tcpdumplog # tcpdump -X -r tcpdumplog
# tcpdump -i eth0 -n port 5060 -w mbill or # tcpdump -i eth0 -n -s 0 port 5060 -vvv -w /home/capture_file_name or # tcpdump -i eth0 -n host 89.31.241.2 -vvv -w /home/textcall
Анализирует траффик удаленно через SSH с помощью wireshark
ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -
UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060:
# tcpdump -nnvvS udp and host xxx.xxx.xxx.251 and dst port 5060
Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh
# tcpdump -n -i eth0 host xxx.xxx.xxx.251 -vvv and not port 22 -w /home/mbill251
Прослушать порт 5060 с ip xxx.xxx.xxx.251
tcpdump -i eth0 -n -s 0 port 5060 and host xxx.xxx.xxx.251 -vvv -w /usr/local/tcpdumplog/log
tcpdump -i eth0 -n -s 0 port 1720 and host xxx.xxx.xxx.251 -vvv -w /usr/local/tcpdumplog
H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать, может быть OR нужно было поставить.
# tcpdump -i eth0 -n -s 0 port 1720 and host xxx.xxx.164.1 and host xxx.xxx.107.1 -vvv -w /usr/local/tcpdumplog/logfile
Просмотреть лог Packet Filter Firewall (PF) межсетевой экран FreeBSD
# tcpdump -nettti pflog0 # tcpdump -netttr /var/log/pflog
перечислить доступные интерфейсы (которые можно прослушивать при помощи опции -i)
tcpdump -D
посмотреть трафик одного хоста:
tcpdump host 1.2.3.4
посмотреть трафик на порте:
tcpdump src port 80
посмотреть IP трафик на хост:
tcpdump ip host 1.2.3.4
посмотреть ARP трафик на хост:
tcpdump arp host 1.2.3.4
посмотреть RARP трафик на хост:
tcpdump rarp host 1.2.3.4
посмотреть трафик, кроме хоста unixserver:
tcpdump not host unixserver
посмотреть трафик на server1 и server2
tcpdump host server1 or host server2
посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru
tcpdump -X -i tun0 host ya.ru
подсмотреть номера и пароли к icq
tcpdump -X -i fxp1 port aol
посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста
tcpdump -X -s 1500 -n -i tun0 host ya.ru
AND and or && OR or or || EXCEPT not or !
TCP traffic from 10.5.2.3 destined for port 3389:
# tcpdump -nnvvS tcp and src 10.5.2.3 and dst port 3389
Traffic originating from the 192.168 network headed for the 10 or 172.16 networks:
# tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
Non-ICMP traffic destined for 192.168.0.2 from the 172.16 network:
# tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/16 and not icmp
# tcpdump -nvvvpi rl0 tcp and not port ssh and not port smtp
Лечение: запускаем команду и ищем MAC c ошибкой
# tcpdump -vvv -n -l -e arp | grep 0.0.0.0 ... 16:43:57.407018 00:0e:89:1d:cc:87 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: arp who-has 86.90.285.175 (00:50:fc:f0:3e:e9) tell 0.0.0.0 ...
arplookup 0.0.0.0 failed: host is not on local network
# tcpdump -vvv -n -l -e arp # tcpdump -i rl1 -vvv -n -l -e arp
arpdig – dig an interface for arp responses. Выводит соответствие между IP и MAC. Пример использования:
# arpdig 195.143.151.1/28
gratuitous arp - самообращенные запросы. При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес.
Использование утилиты arping - Работа с ARP протоколом: очистка таблицы level "ping" utility Пример использования:
for /l %i in (1,1,254) do ping -n 1 -w 1 192.168.1.%i arp -a | find "арп"
Файлы tcpdump совместимы с wireshark. Запуская ее с параметром -w filename, мы получаем файл, содержащий нужный нам сетевой трафик. К сожалению, по умолчанию в tcpdump каждый пакет ограничивается 96ю байтами (которых, как правило, достаточно для анализа любых пакетов). Однако если нужно залезть глубже и смотреть всё содержимое пакетов, нужно использовать команду -s size (где size - размер пакетов, которые нужно ловить). Для обычного ethernet'а размер пакетов равен 1500, для "разогнанного" гигабитного etherneta - порой до 65к.
Итого, имеем следующую команду:
# tcpdump -s 1500 -w filename
И используем ее для того, чтобы можно было создать полный дамп сетевого трафика, который можно смотреть в Wireshark без сообщений вида Packet size limited during capture
Утилиту tcpdump можно использовать не только в Linux, но Windows.
TCPDUMP для Windows является клоном TCPDUMP, наиболее используемого сетевого анализатора / анализатора для UNIX, скомпилированного с исходным кодом tcpdump (tcpdump.org) и пакетом SDK от Microolap Packet Sniffer (без libpcap / WinPcap).
Клон TCPDUMP для Windows можно скачать на microolap.com