: :

ПнВтСрЧтПтСбВс

2018-07-10 11:32:17 2459 0

Использование Tcpdump для анализа трафика

tcpdump - очень мощный и широкоиспользуемый инструмент для снифинга и анализа, кторый используется для перехвата TCP/IP пакетов, получаемых или отправляемых по сети. Утилита доступна практически во всех операционных системах Линукс. Tcpdump так же дает возможность сохранять перехваченные пакеты в файл, для их дальнейшего анализа в будующем. А если сохранить файлы в формате pcap, то их можно будет анализировать с помощью такого инструмента как Wireshark.

Установка tcpdump

Redhat подобные системы:

sudo yum install tcpdump

Debian-like:

sudo apt-get install tcpdump

Tcpdump имеет формат записи:

tcpdump options expressions

При использовании tcpdump, требует права root.

Разберем опции tcpdump:

  • -i - указывает на каком интерфейсе выполнять перехват пакетов (по-умолчанию используется первый интерфейс);
  • -D - вывести список всех досиупных в системе интерфейсов;
  • -c - указывает количество пакетов для перехвата;
  • -n - указывает не выполнять преобразование ip-адреса в доменное имя;
  • -nn - указывает не преобразовывать номер порта в имя демона;
  • -A - выводит содержание пакета в формате ASCII;
  • -X - выводит содержимое пакета в формате HEX и ASCII;
  • -w - запись перехваченных пакетов в файл;
  • -r - чтение из файла;
  • -q - выводить мало данных;
  • -s - указывать сколько байт пакета необходимо захватить (по-умолчанию s0 или захват польностью);
  • -e - добавить в вывод содержание ethernet заговолков (2-й уровень OSI);
  • -v - более информативный вывод (например добавляется TTL и TOS);
  • -vv - еще более информативный вывод;
  • -ee -vvv - добавить в вывод теги Vlan.

Приведен список наиболее часто используемых опций, полный перечень смотрите в официальной документации и в man

Теперь разберем какие могут быть выражения для перехвата пакетов, по-большому счету это фильтры на основании, которых будет проводится перехват пакетов.

  • host - указвание адреса или имени хоста;
  • net - указвание сети;
  • src - указание источника пакета;
  • dst - указание назначения пакета;
  • port - указание порта демона;
  • tcp,udp,icmp - указание протокола (tcp,udp,icmp и т.д.)
  • less длина - указывает перехватывать пакеты, длина которых меньше указанной;
  • greater длина - указывает перехватывать пакеты,длина которых больше указанной;
  • ether - указание MAC-адреса;
  • broadcast - указание что пакет должен быть Broadcast;

И конечно же все эти вырадения можно сочитать между собой с помощью логческих выражений:

  • and или && - логическое и;
  • or или || - логическое или;
  • not или ! - отрицание.

Рассмотрим примеры использования tcpdump

Перехват пакетов с источником 192.168.10.1 идущих к сети 192.168.20.0/24 на порт 22

sudo tcpdump src host 192.168.0.1 and dst net 192.168.20.0/24 \

 and dst port 22

Перехват icmp пакетов с выводм MAC-адресов без преобразования ip-адресов и номеров портов:

sudo tcpdump -evnn icmp

tcpdump: listening on enp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:07:40.660870 50:46:5d:73:08:28 > 00:25:90:a2:29:b4, ethertype IPv4 (0x0800),
length 98: (tos 0x0, ttl 64, id 13131, offset 0, flags [DF], proto ICMP (1),
length 84)

172.20.9.40 > 172.20.1.1: ICMP echo request, id 29815, seq 1, length 64
13:07:40.661081 00:25:90:a2:29:b4 > 50:46:5d:73:08:28, ethertype IPv4 (0x0800),
length 98: (tos 0x0, ttl 64, id 58057, offset 0, flags [none],
proto ICMP (1), length 84)

Перехват пакетов идущих к адресу назначения yandex.ru на порт 80 или 443 :

sudo tcpdump "host yandex.ru and (tcp dst port 80 \

 or tcp dst port 443")

Перехват трафика с отображением номеров Vlan (их можно потом искать с помощью grep):

sudo tcpdump -ee -vvv -i eth0

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:03:26.973635 00:25:90:a2:29:b4 (oui Unknown) > 50:46:5d:73:08:28 (oui Unknown),
ethertype 802.1Q (0x8100), length 122: vlan 7, p 0, ethertype IPv4, (tos 0x10,
ttl 64, id 3187, offset 0, flags [DF], proto TCP (6), length 104)

172.20.1.1 > 172.20.9.40.38552: Flags [P.], cksum 0x62ac (incorrect -> 0x8f59),
seq 1666480162:1666480214, ack 2683254910, win 354, options [nop,nop,TS
val 768961419 ecr 517398287], length 52

10:03:26.973657 00:25:90:a2:29:b4 (oui Unknown) > 50:46:5d:73:08:28 (oui Unknown),
ethertype 802.1Q (0x8100), length 122: vlan 7, p 0, ethertype IPv4, 
(tos 0x10, ttl 64, id 3188, offset 0, flags [DF], proto TCP (6), length 104)

Как видно можно видеть в строке с указанием стандарта 802.1Q и номер vlan в нашем случае 7






Введите ответ:

+

=