Практические примеры Tcpdump?

30559
LanceBaynes

Я хочу собрать как можно больше примеров tcpdump!

Например: как фильтровать пароли FTP на eth0; ИЛИ как отфильтровать ошибки HTTP 404 и т. Д.

6

5 ответов на вопрос

4
shiftycow

Это не делает никакой фильтрации, но этот пример создает удобный непрерывный анализатор пакетов:

tcpdump -n -C 128 -W 100 -z /home/user/compress_logs.pl -i br0 -w /home/user/packetlogs/packetlog.pcap & 
  • -n не выполнять обратный поиск по IP-адресам, не преобразовывать номера портов в текстовые описания, не преобразовывать MAC-адреса в имена и т. д.
  • -C 128 вращать файлы захвата каждые 128 000 000 байтов
  • -W 100ограничить количество вращающихся файлов захвата (см. -C) до 100
  • -z /home/user/compress_logs.plзапустить скрипт compress_logs.plна каждом повернутом файле захвата
  • -i br0 захватить на интерфейсе br0
  • -w /home/user/packetlogs/packetlog.pcap использовать имя файла /home/user/packetlogs/packetlog.pcap
  • &это анализируется bash; указывает, что команда должна выполняться в фоновом режиме (асинхронно)

Поместите его в /etc/rc.local для запуска при загрузке. Он захватывает все пакеты на интерфейсе br0, который может быть двумя встроенными интерфейсами в виде ответвления или двух интерфейсов, подключенных к пассивному ответвлению, или одного интерфейса, подключенного к зеркальному порту коммутатора (на практике я использовал все три)

Он записывает ~ 128 МБ файлов и автоматически поворачивает до 100 из них. Когда он захватывает 128 МБ данных, он закрывает файл, открывает новый и раскручивает указанную команду со старым именем файла в качестве аргумента - в этом случае небольшой скрипт Perl, который сжимает предыдущий файл захвата для более быстрой передачи из IDS сервер.

Я использую это, когда мне приходится долго контролировать соединение (например, день или два), и мне нужно вернуться назад и найти событие, которое произошло в определенное время. Небольшие файлы гораздо проще обрабатывать в Wireshark, чем один огромный файл pcap.

это лучшие пока :) LanceBaynes 12 лет назад 0
4
Code Bling

Захват только данных HTTP POST:

tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956  or tcp[24:4] = 1347375956  or tcp[28:4] = 1347375956  or tcp[32:4] = 1347375956  or tcp[36:4] = 1347375956  or tcp[40:4] = 1347375956  or tcp[44:4] = 1347375956  or tcp[48:4] = 1347375956  or tcp[52:4] = 1347375956  or tcp[56:4] = 1347375956  or tcp[60:4] = 1347375956\) 

Немного громоздко, но, безусловно, полезно. tcp[2:2]захватывает, начиная с позиции 2 заголовка TCP, 2 байта (которые являются портом, порт 80 предназначен для трафика HTTP).

Затем мы хотим сравнить первые 4 байта данных TCP с «POST». Заголовок TCP составляет не менее 20 (десятичных) байтов, но поскольку параметры TCP имеют переменную длину, от 0 до 40 байтов (дополняются до 32-битной границы и начинаются с), мы должны тестировать каждые 4 байта от 20 до 60 ( десятичный). Наконец, 1347375956это двоичное представление base10 с прямым порядком байтов для текста ASCII 'POST'. Используйте значения ниже для других типов HTTP:

  • GET 1195725856(включает пробел после 'GET', который необходим, потому что мы сравниваем с 4 байтами)
  • СООБЩЕНИЕ 1347375956
  • PUT 1347769376(включает пробел)
  • УДАЛИТЬ 1145392197(просто « УДАЛИТЬ », на самом деле)

Для других типов конвертируйте 4 символа ASCII в шестнадцатеричные (вы должны точно использовать 4 символа), затем обрабатывайте шестнадцатеричные байты как одно число и преобразуйте его в десятичную. Например, POST есть 50 4f 53 54. 504f5354преобразуется в десятичный 1347375956.

1
Spiff

Capture everything to a file (so you can analyze it later with Wireshark or something):

sudo tcpdump -i en0 -s0 -w ~/capture.pcap 
  • -i en0 capture on interface en0
  • -s0 use the whole packet (don't truncate -- snarf 0)
  • -w ~/capture.pcap write to packet capture file ~/capture.pcap
1
Code Bling

Шпаргалка по изготовлению фильтров:

http://staff.washington.edu/dittrich/talks/core02/tools/tcpdump-filters.txt

Wireshark предоставил очень полезный инструмент для создания фильтров: https://www.wireshark.org/tools/string-cf.html NathanChristie 8 лет назад 0
0
LanceBaynes

Если вы хотите отслеживать DNS-запросы клиентов на маршрутизаторе OpenWRT:

tcpdump -n -i br-lan dst port 53 
  • -n не выполнять обратный поиск по IP-адресам, не преобразовывать номера портов в текстовые описания, не преобразовывать MAC-адреса в имена и т. д.
  • -i br-lan захватить на интерфейсе br-lan
  • dst port 53 фильтр, порт назначения 53, порт для службы DNS