Инструменты пользователя

Инструменты сайта


tcpdump

Различия

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

Ссылка на это сравнение

tcpdump [2018/06/10 14:14] (текущий)
Строка 1: Строка 1:
 +====== tcpdump ======
  
 +~~Title: tcpdump Linux примеры использования ~~
 +{{htmlmetatags>​
 +metatag-description=(Использование сниффера tcpdump в Linux и Windows.)
 +}}
 +
 +Homepage: [[http://​www.tcpdump.org|Official web site of tcpdump]]
 +
 +Утилита **tcpdump** относится к числу так называемых «снифферов» — программ предназначенных для перехвата сетевого трафика. Одним словом,​ tcpdump предназначен для подслушивания. Разрабо­тан Группой сетевых исследований (Network Reseach Group, NRG) Отдела инфор­мационных и вычислительных технологий (Information and Computing Sciences Division, ICSD) в Национальной лаборатории Лоренс Беркли (Lawrence Berkeley National Laboratory, LBNL).
 +
 +tcpdump не единственный [[сниффер]],​ которым может пользоваться администратор. Кроме tcpdump можно обратить внимание на такие программы,​ как:
 +  * [[wireshark]] (бывший ethereal) — [[сниффер]] с графическим интерфейсом,​ который может обрабатывать дампы сделанные программой tcpdump
 +  * [[NGrep]]
 +
 +tcpdump работает при помощи интерфейса bpf (Berkeley Packet Filter). Если поддержку этого устройства отключить,​ сниффинг в [[BSD]] окажется невозможен. Права на запуск программы tcpdump определяются правами доступа к устройсву bpf (/​dev/​bpf0). Эти права можно регулировать через devfs. Если вы предоставляете,​ например,​ группе operator права на чтение из этого устройства,​ то это значит,​ что все члены этой группы смогут перехватывать любой трафик,​ в том числе трафик суперпользователя.
 +
 +Если программа tcpdump вызвана для прослушивания некоторого интерфейса,​ она переводит его в «promiscuous mode» — «неразборчивый режим». В этом режиме интерфейс ловит вообще все пакеты,​ которые до него добрались,​ а не только пакеты адресованные непосредственно ему. Таким образом,​ если сеть собрана не на коммураторах (switch), а на репитерах (hub), то tcpdump позволит перехватить трафик между посторонними машинами,​ т.е. подслушать разговор двух сторонних машин. Сказанное не означает,​ что перехват трафика невозможен в сети собранной на коммутаторах. Впрочем,​ интерфейс можно и не переводить в promiscous mode, если передать программе аргумент -p.
 +===== tcpdump для VoIP SIP H.323 =====
 +<​note>​Ключ -w применяется для записи данных в отдельный файл. Прочитать это файл можно применяя ключи -r и -X(показать заголовки),​ например:<​file>​
 +# tcpdump -r tcpdumplog
 +# tcpdump -X -r tcpdumplog
 +</​file></​note>​
 +<​file>​
 +# 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
 +</​file>​
 +
 +Анализирует траффик удаленно через SSH с помощью [[Wireshark]]<​file ssh>
 +ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -
 +</​file>​
 +
 +UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060:
 +<​file>​
 +# tcpdump -nnvvS udp and host xxx.xxx.xxx.251 and dst port 5060
 +</​file>​
 +Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh
 +<​file>​
 +# tcpdump -n -i eth0 host xxx.xxx.xxx.251 -vvv and not port 22 -w /​home/​mbill251
 +</​file>​
 +Прослушать порт 5060 с ip xxx.xxx.xxx.251
 +<​file>​
 +tcpdump -i eth0 -n -s 0 port 5060 and host xxx.xxx.xxx.251 -vvv -w /​usr/​local/​tcpdumplog/​log
 +</​file>​
 +<​file>​
 +tcpdump -i eth0 -n -s 0 port 1720 and host xxx.xxx.xxx.251 -vvv -w /​usr/​local/​tcpdumplog
 +</​file>​
 +H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать,​ мож**ет быть OR нужно бы**ло поставить.
 +<​file>​
 +# 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
 +</​file>​
 +===== tcpdump Packet Filter Firewall (PF) =====
 +Просмотреть лог [[Packet Filter Firewall (PF)]]
 +<​code>​
 +# tcpdump -nettti pflog0
 +# tcpdump -netttr /​var/​log/​pflog
 +</​code>​
 +===== Примеры использования tcpdump =====
 +перечислить доступные интерфейсы (которые можно прослушивать при помощи опции -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
 +
 +===== Примеры использования tcpdump AND OR EXCEPT =====
 +<​file>​
 +AND 
 +and or &&
 +OR 
 +or or ||
 +EXCEPT ​
 +not or !
 +</​file>​
 +TCP traffic from 10.5.2.3 destined for port 3389:
 +<​file>​
 +# tcpdump -nnvvS tcp and src 10.5.2.3 and dst port 3389
 +</​file>​
 +Traffic originating from the 192.168 network headed for the 10 or 172.16 networks:
 +<​file>​
 +# tcpdump -nvX src net 192.168.0.0/​16 and dst net 10.0.0.0/8 or 172.16.0.0/​16
 +</​file>​
 +Non-ICMP traffic destined for 192.168.0.2 from the 172.16 network:
 +<​file>​
 +# tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/​16 and not icmp
 +</​file>​
 +<​file>​
 +# tcpdump -nvvvpi rl0 tcp and not port ssh and not port smtp
 +</​file>​
 +
 +===== Проблема +arplookup 0.0.0.0 failed: host is not on local network =====
 +
 +Лечение:​ запускаем команду и ищем MAC c ошибкой
 +<​code>​
 +# 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
 +...
 +</​code>​
 +[[http://​www.mail-archive.com/​freebsd-questions@freebsd.org/​msg191545.html|arplookup 0.0.0.0 failed: host is not on local network]]
 +
 +[[http://​en.wikipedia.org/​wiki/​0.0.0.0|Default route 0.0.0.0]]
 +<​code>​
 +# tcpdump -vvv -n -l -e arp
 +# tcpdump -i rl1 -vvv -n -l -e arp
 +</​code>​
 +**arpdig** -- dig an interface for arp responses. Выводит соответствие между IP и MAC. Пример использования:​
 +<​code>​
 +# arpdig 195.143.151.1/​28
 +</​code>​
 +
 +[[gratuitous arp]] - самообращенные запросы. При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес.
 +
 +[[arping]] - [[ARP]] level "​ping"​ utility ​ Пример использования:​
 +<​code>​
 +
 +</​code>​
 +<​code>​
 +for /l %i in (1,1,254) do ping -n 1 -w 1 192.168.1.%i
 +arp -a | find "​арп"​
 +</​code>​
 +===== Wireshark: Packet size limited during capture =====
 +Файлы tcpdump совместимы с [[wireshark]]. Запуская ее с параметром -w filename, мы получаем файл, содержащий нужный нам сетевой трафик. К сожалению,​ по умолчанию в tcpdump каждый пакет ограничивается 96ю байтами (которых,​ как правило,​ достаточно для анализа любых пакетов). Однако если нужно залезть глубже и смотреть всё содержимое пакетов,​ нужно использовать команду -s size (где size - размер пакетов,​ которые нужно ловить). Для обычного ethernet'​а размер пакетов равен 1500, для "​разогнанного"​ гигабитного etherneta - порой до 65к.
 +
 +Итого, имеем следующую команду:​
 +<​file>​
 +# tcpdump -s 1500 -w filename
 +</​file>​
 +И используем ее для того, чтобы можно было создать полный дамп сетевого трафика,​ который можно смотреть в Wireshark без сообщений вида **Packet size limited during capture**
 +<note important>​Если указать -s 0 тогда размер пакета не важен будет браться все.</​note>​
 +===== tcpdump использование в Windows 10 =====
 +Утилиту tcpdump можно использовать не только в Linux, но Windows.
 +
 +TCPDUMP для Windows является клоном TCPDUMP, наиболее используемого сетевого анализатора / анализатора для UNIX, скомпилированного с исходным кодом tcpdump (tcpdump.org) и пакетом SDK от Microolap Packet Sniffer (без libpcap / WinPcap).
 +
 +Клон TCPDUMP для Windows можно скачать на [[https://​www.microolap.com/​products/​network/​tcpdump/​|microolap.com]]
 +
 +===== Ссылки =====
 +
 +  * [[Wireshark]]
 +  * [[http://​www.linuxshare.ru/​docs/​net/​tcpdump.html|Мониторинг сети с помощью tcpdump]]
 +  * [[ARP]] - [[http://​ru.wikipedia.org/​wiki/​ARP|ARP Материал из Википедии]] (англ. Address Resolution Protocol — протокол разрешения адресов) — протокол канального уровня (англ. Data Link layer), предназначенный для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. Он определён в RFC 826.
 +  * RARP - [[http://​ru.wikipedia.org/​wiki/​RARP|RARP Материал из Википедии]] (англ. Reverse Address Resolution Protocol — Обратный протокол преобразования адресов) — протокол третьего (сетевого) уровня модели OSI, выполняет обратное отображение адресов,​ то есть преобразует аппаратный адрес в IP-адрес.
 +  * [[http://​book.itep.ru/​4/​44/​arp_446.htm|Протокол преобразования адресов ARP]]
 +  * [[http://​danielmiessler.com/​study/​tcpdump/​|A tcpdump Tutorial and Primer]]
Загрузка...
tcpdump.txt · Последние изменения: 2018/06/10 14:14 (внешнее изменение)