{{tag>shell networks networking network utils}}

====== tcpdump ======

===== Анализ =====

  * tcpdump -n -i eth0 -l | tee resolv.pcap
  * ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -
==== Фильтры ====

^                ^                                                              ^
| Фильтр         | Определение                                                  |
| host           | Служит для указания имени хоста                              |
| net            | Указывает IP подсети и сети                                  |
| ip             | Служит для указания адреса протокола                         |
| src            | Выводит пакеты, которые были отправлены с указанного адреса  |
| dst            | Выводит пакеты, которые были получены указанным адресом      |
| arp, udp, tcp  | Фильтрация по одному из протоколов                           |
| port, portrange           | Отображает информацию, относящуюся к определенному порту, диапазону портов     |
| and, or        | Служит для объединения нескольких фильтров в команде         |
| less, greater  | Вывод пакетов меньше или больше указанного размера           |

==== Ключи ====


  * -i - Прослушиваемый интерфейс
  * port 9000, port 80
  * -A - выводить все пакеты в формате ASCII;
  * -c - закрыть программу после перехвата n-ого количества пакетов;
  * -C - при записи пакетов в файл, проверять размер файла, и если он больше заданного - создать новый файл;
  * -D - вывести список доступных сетевых интерфейсов;
  * -e - выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
  * -f - выводить доменное имя для ip адресов;
  * -F - читать пакеты из файла, а не интерфейса;
  * -G - создавать новый файл лога через указанный промежуток времени;
  * -H - обнаруживать заголовки 802.11s;
  * -i - имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
  * -I - переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
  * -j - установить формат Timestamp для записи пакетов;
  * -J - посмотреть доступные Timestamp;
  * -K - не проверять контрольные суммы пакетов;
  * -l - добавить поддержку прокрутки к выводу;
  * -L - вывести поддерживаемые протоколы подключения для интерфейса;
  * -n - не отображать доменные имена;
  * -r - прочитать пакеты из файла, созданного с помощью -w;
  * -v, -vv, -vvv - более подробный вывод;
  * -q - выводить минимум информации;
  * -w - записать вывод в файл;
  * -Z - пользователь, от имени которого будут создаваться файлы.

===== Примеры =====

=== Анализ DNS трафика ===

<code bash>
$ tcpdump -i eth0 -s0 -w resolv.pcap port 53
</code>

=== Анализ трафика HTTP сервера ===

<code bash>
$ tcpdump -An  tcp port 80
</code>

=== Анализ PHP-FPM на 9000 порту ===

<code bash>
$ tcpdump -nAs 20000 -i lo tcp port 9000
</code>

=== Анализирует траффик удаленно через SSH с помощью Wireshark ===

<code bash>$ ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -</code>

=== UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060: ===

<code bash>$ tcpdump -nnvvS udp and host xxx.xxx.xxx.251 and dst port 5060</code>

=== Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh ===

<code bash>$ tcpdump -n -i eth0 host xxx.xxx.xxx.251 -vvv and not port 22 -w /home/mbill251</code>

=== Прослушать порт 5060 с ip xxx.xxx.xxx.251 ===

<code bash>
$ 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
</code>

=== H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать, может быть OR нужно было поставить. ===

<code bash>$ 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</code>

=== перечислить доступные интерфейсы (которые можно прослушивать при помощи опции -i) ===

<code bash>$ tcpdump -D</code>

=== посмотреть трафик одного хоста: ===

<code bash>$ tcpdump host 1.2.3.4</code>

=== посмотреть трафик на порте: ===

<code bash>$ tcpdump src port 80</code>

=== посмотреть IP трафик на хост: ===

<code bash>$ tcpdump ip host 1.2.3.4</code>

=== посмотреть ARP трафик на хост: ===

<code bash>$ tcpdump arp host 1.2.3.4</code>

=== посмотреть RARP трафик на хост: ===

<code bash>$ tcpdump rarp host 1.2.3.4</code>

=== посмотреть трафик, кроме хоста unixserver: ===

<code bash>$ tcpdump not host unixserver</code>

==== посмотреть трафик на server1 и server2 ====

<code bash>$ tcpdump host server1 or host server2</code>

=== посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru ===

<code bash>$ tcpdump -X -i tun0 host ya.ru</code>

=== подсмотреть номера и пароли к icq ===

<code bash>$ tcpdump -X -i fxp1 port aol</code>

=== посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru ===

посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста

<code bash>$ tcpdump -X -s 1500 -n -i tun0 host ya.ru</code>

=== TCP traffic from 10.5.2.3 destined for port 3389: ===

<code bash>$ tcpdump -nnvvS tcp and src 10.5.2.3 and dst port 3389</code>

=== Traffic originating from the 192.168 network headed for the 10 or 172.16 networks: ===

<code bash>$ tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16</code>

=== Non-ICMP traffic destined for 192.168.0.2 from the 172.16 network: ===

<code bash>$ 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</code>

=== tcpdump на unix socket ===

nano ./host.conf, затем перезапускаем nginx
<code>
fastcgi_pass unix:/tmp/php-fpm.sock.socat;
</code>

Запускаем снифер и смотрим вывод
<code bash>
$ socat -t100 -x -v UNIX-LISTEN:/tmp/php-fpm.sock.socat,mode=777,reuseaddr,fork UNIX-CONNECT:/tmp/php-fpm.sock
</code>

=== Заголовок ===

<code bash>
$ tcpdump -i eth1 tcp and host 10.27.13.14 and port 6973 -s0 -vv -X -c 1000
</code>
===== Ссылки =====

  * http://www.lexpr.ru/tcpdump
  * http://storm.in.ua/a2/analiz-setevogo-trafika-s-pomoschyu-Tcpdump.html
  * http://www.inattack.ru/article/analiz-trafika-pri-pomoschi-tcpdump-chas/266.html#.UIpnsYKCgUA
  * https://xakep.ru/2012/02/06/tcpdump-network-audit/
  * [[https://habr.com/ru/post/211042/|Фильтры захвата для сетевых анализаторов ]] :!:
