0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Администрирование систем Linux. Перехват сетевого трафика

23.1.1. Установка wireshark

В данном примере приведена команда для установки приложения wireshark в дистрибутивах, использующих пакеты программного обеспечения с расширением .deb (включая Debian, Mint, Xubuntu и другие дистрибутивы).

В дистрибутивах, использующих пакеты программного обеспечения с расширением .rpm , таких, как CentOS, RHEL и Fedora, для установки приложения wireshark может использоваться утилита yum .

23.1.2. Выбор сетевого интерфейса

При запуске приложения wireshark в первый раз вам придется выбрать сетевой интерфейс. Вы увидите диалог, который выглядит аналогично приведенному на иллюстрации ниже.

Выбор сетевого интерфейса

Вероятна ситуация, при которой доступных сетевых интерфейсов попросту не окажется, ведь в некоторых дистрибутивах перехват сетевого трафика может осуществляться исключительно пользователем root. В этом случае вам придется запустить приложение wireshark от лица пользователя root с помощью команды sudo wireshark .

Или же вы можете последовать общим рекомендациям и использовать утилиту tcpdump или какой-либо другой инструмент для перехвата трафика и записи данных в файл. Любые перехваченные данные могут быть проанализированы позднее с помощью приложения wireshark .

23.1.3. Минимизация трафика

В процессе перехвата сетевого трафика в течение очень коротких промежутков времени могут генерироваться тысячи пакетов. Очевидно, что такой объем данных затруднит анализ трафика. Попытайтесь выйти из этого положения, изолировав ваш сниффер в рамках сети. Предпочтительным вариантом является перехват трафика, проходящего через сетевой интерфейс изолированной виртуальной сети, находящейся под вашим полным контролем.

Если вы изучаете инструменты для перехвата сетевого трафика в домашних условиях, для минимизации трафика будет полезно завершить работу всех приложений для работы с сетью, запущенных на вашем компьютере, а также отсоединить компьютер от других компьютеров и от таких устройств, как смартфоны и планшеты.

И все же более важным инструментом для минимизации трафика являются фильтры , которые будут обсуждаться в следующем разделе.

23.1.4. Перехват трафика, генерируемого утилитой ping

Я запустил сниффер и захватил все пакеты, переданные по сети в результате исполнения трех команд ping (не имеет смысла выполнять эти команды от лица пользователя root):

В общей сложности из сети было захвачено более чем 200 пакетов. Все станет гораздо очевиднее в том случае, если введете строку icmp в поле фильтра и нажмете кнопку «Применить» («Apply»).

Перехват трафика, генерируемого утилитой ping

23.1.5. Перехват трафика, генерируемого утилитой ping и клиентом dns

Работая с той же сессией захвата данных, применим отличный фильтр . Мы хотим отслеживать трафик, относящийся как к протоколу dns , так и к протоколу icmp , поэтому нам придется ввести названия двух упомянутых протоколов в поле фильтра.

Для захвата данных, относящихся к двум рассматриваемым протоколам, в поле фильтра должна быть введена строка «dns or icmp» . В случае ввода строки «dns and icmp» не будет выведено информации о каких-либо пакетах, так как не существует пакетов, относящихся к обоим упомянутыми протоколам.

Читайте так же:
Как преобразовать Word в Excel

Перехват трафика, генерируемого утилитой ping и клиентом dns

При рассмотрении приведенной выше иллюстрации можно заметить, что пакеты 25 и 26 имеют исходные и целевые IP-адреса 10.104.33.30. Это объясняется тем, что клиент DNS работает на том же компьютере, что и сервер DNS.

Аналогичная ситуация наблюдается и в случае пакетов 31 и 32, ведь с помощью утилиты ping осуществляется отправка пакетов рабочей системе, на которой запущена данная утилита.

23.1.6. Определенный IP-адрес

В данном случае осуществляется фильтрация пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес . В качестве фильтра используется строка «ip.addr==10.104.33.30 and dns» . Директива and сообщает приложению о том, что следует выводить информацию о каждом пакете, соответствующем двум условиям.

Определенный IP-адрес

Пакет 93 содержит запрос DNS , направленный на получение записи типа A домена linux-training.be. Пакет 98 содержит ответ от сервера DNS . Как вы думаете, что происходило после отправки пакета 93 и до приема пакета 98? Попытайтесь ответить на этот вопрос перед чтением следующего раздела (при работе с различными системами всегда полезно пытаться предсказывать наступающие события и проверять корректность своих предсказаний).

23.1.7. Фильтрация на основе фреймов

Корректным термином, используемым для обозначения перехваченного пакета , является термин фрейм (из-за того, что мы осуществляем перехват пакетов на уровне 2 сетевой модели OSI). Таким образом, для вывода информации о пакетах с определенными номерами, следует использовать директиву frame.number в поле фильтра.

Фильтрация на основе фреймов

23.1.8. Исследование содержимого пакетов

Средняя панель окна сниффера может быть раскрыта. При выборе строки в рамках данной панели вы можете увидеть соответствующие значения байт в поле нижней панели.

На иллюстрации ниже показана средняя панель окна сниффера с выбранным адресом моего ноутбука.

Средняя панель окна сниффера

Учтите, что описанная выше техника отлично работает при перехвате трафика, передаваемого через один сетевой интерфейс. Если же вы перехватываете трафик, к примеру, с помощью команды tcpdump -i any , вы столкнетесь с методом перехвата пакетов «Linux cooked capture» .

Linux cooked capture

23.1.9. Другие примеры фильтров

Вы можете комбинировать два описания протоколов с помощью директивы логической операции or («ИЛИ»), расположенной между ними. На иллюстрации ниже показан способ захвата исключительно пакетов, относящихся к протоколам ARP и BOOTP (или DHCP ).

Захват пакетов, относящихся к протоколам ARP и BOOTP

А на следующей иллюстрации показан способ перехвата пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес .

Перехват пакетов, относящихся к протоколу DNS и содержащих определенный IP-адрес

Акриловый Wi-Fi Sniffer e интерфейсы WiFi en Wireshark

Эта интеграция значительно проще, чем предыдущая, просто установите Acrylic Wi-Fi Sniffer и нажмите кнопку «Установить интеграцию» на панели управления сниффера, как показано на рисунке ниже.

Читайте так же:
Корректное удаление драйвера видеокарты в Windows

Подсветка панели управления Acrylic Wi-Fi Sniffer с секцией интеграции и конфигурации.

После завершения установки мы запустим Wireshark от имени администратора и увидим интерфейсы, доступные в Acrylic Wi-Fi Sniffer.

Выберите интерфейс, который мы хотим использовать с Acrylic Wi-Fi Sniffer, нажмите на колесо настройки слева, как показано на предыдущем скриншоте, и настройте каналы и полосу пропускания, в которых мы хотим сделать снимок.

После настройки мы можем начать перехват WiFi сети в Wireshark и получать пакеты.

Для облегчения захвата мы добавили панель инструментов в WireShark, чтобы иметь возможность быстро изменять конфигурацию, как показано на следующем рисунке.

Чтобы активировать его, просто перейдите в меню » View» > » Interface toolbars» > «Acrylic Wi-Fi Sniffer interface integration».

Netcat

Netcat (nc, ncat) — утилита, позволяющая устанавливать TCP и UDP соединения, принимать и передавать данные. Основные режимы: подключения и прослушивания.

Режим подключения позволяет подключиться к любому порту, открытому на прослушивание (при условии, что порт разрешает подключения такого типа).

Пример работы nc

На примере с помощью nc осуществляется подключение к google.com: при вводе nc google.com 80 утилита подключается к серверной стороне по протоколу HTTP (80 — стандартный порт для этого протокола). Далее клиент отправляет на сервер простейший HTTP-запрос «GET /», в ответ получает соответствующую веб-страницу, которая отображается в терминале в необработанном виде.

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

Что понадобится

Вам понадобится карта беспроводного сетевого адаптера с режимом мониторинга (беспроводной сети) и смартфон с iOS или Android, подключенный к Wi-Fi, которую вы собираетесь мониторить. Вы можете попрактиковаться на открытой сети, чтобы примерно понимать, какие результаты вы получите, поскольку вначале расшифровка может не сработать. Кроме того, вам нужно знать пароль и имя сети, которую вы хотите мониторить. В этом случае вы сможете вычислить ключ PSK, позволяющий дешифровать трафик в режиме реального времени.

Шаг 1. Загрузка Wireshark и подключение к Wi-Fi сети

Загрузите и установите Wireshark, после чего подключитесь к целевой Wi-Fi сети. Если вы планируете использовать PSK, а не сетевой ключ, нужно сделать вычисления при помощи WPA PSK Generator, поскольку во время перехвата у вас может не быть доступа к интернету (зависит от используемой карты).

Читайте так же:
Как удалить сообщение в «Одноклассниках»

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

Рисунок 1: Перечень сетевых интерфейсов

Шаг 2. Настройка перехвата в Wireshark

В меню Wireshark кликните иконку в виде шестеренки, чтобы зайти в раздел «Capture options»

Рисунок 2: Интерфейс Wireshark

Появится окно Capture Interfaces (Интерфейсы перехвата), как показано на рисунке ниже.

Рисунок 3: Перечень интерфейсов

Шаг 3. Перехват и сканирование EAPOL пакетов

Если вы не подключены к сети, где находится цель, то не увидите ни одного пакета, поскольку можете оказаться в другом случайном канале. Причина заключается в неспособности Wireshark на переключение канала, в котором находится беспроводной сетевой адаптер.

Рисунок 4: Перехваченные пакеты

Шаг 4. Дешифровка трафика при помощи PSK

Теперь, когда у нас появились рукопожатия, можно приступать к расшифровке трафика. Вначале нужно добавить сетевой пароль или PSK. Зайдите в выпадающее меню «Wireshark» и выберите раздел «Preferences». Затем кликните на «Protocols».

Рисунок 5: Настройки, связанные с протоколами

В разделе Protocols выберите «IEEE 802.11» и кликните на флажок «Enable decryption». Для добавления сетевого ключа кликните на «Edit», рядом с надписью «Decryption keys». В открывшемся окне добавьте пароли и PSK.

Рисунок 6: Активация дешифровки

В меню выберите «wpa-psk» и скопируйте ваш ключ. Нажмите кнопку Tab и сохраните изменения, кликнув на «OK».

Рисунок 7: Добавление ключа

По завершению процедуры кликните на «OK» в разделе Preferences. Теперь Wireshark должен пересканировать и попробовать дешифровать все перехваченные пакеты. По некоторым причинам эта схема может не сработать. У меня практически всегда работало при наличии качественного рукопожатия (EAPOL) и при переключении между сетевым паролем и PSK. В случае успешной расшифровки мы можем перейти к следующему шагу и проанализировать трафик для выяснения, какие приложения работают на устройстве.

Шаг 5. Сканирование DNS и HTTP пакетов

После снятия защиты с трафика, можно приступать к расшифровке пакетов и выяснению, чем занимаются устройства в Wi-Fi сети, по которым получены рукопожатия, в режиме реального времени.

Используем tcpdump для анализа и перехвата сетевого трафика

Утилита tcpdump — отличный инструмент командной, который способен перехватывать и анализировать сетевой трафик. Может оказаться большим подспорьем при решении сетевых проблем. Пакеты можно сохранить в файл и анализировать позже. Рекомендуется время от времени запускать эту утилиту, чтобы следить за своей сетью.

  • Вывод tcpdump
  • Установка tcpdump
  • Опции tcpdump
  • Фильтры tcpdump:
    • Фильтр выражений
    • Фильтр портов
    • Фильтр хостов
    • Комбинирование фильтров

    Вывод tcpdump

    Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.

    Давайте рассмотрим одну строку из примера вывода:

    Каждая строка включает:

    • Метка времени Unix (20: 58: 26.765637)
    • протокол (IP)
    • имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)
    • имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)
    • Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:
      • o S — SYN. Первый шаг в установлении соединения
      • F — FIN. Прекращение соединения
      • — ACK. Пакет подтверждения принят успешно
      • P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации
      • R — RST. Связь прервалась

      Установка tcpdump

      В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:

      В дистрибутивах на основе RPM tcpdump можно установить с помощью YUM:

      В RHEL 8 с использование DNF:

      Опции tcpdump

      Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.

      Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:

      Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.

      Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс.

      • -v увеличивает количество отображаемой информации о пакетах
      • -vv дает еще более подробную информацию

      По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.

      • -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.
      • -c захватывает только набор строк, например, 5:
      • -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix)

      Фильтры tcpdump

      Фильтр выражений

      Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.

      Самые распространенные фильтры :

      • port
      • host
      • src
      • dst
      • tcp
      • udp
      • icmp

      Фильтр портов

      Фильт портов используется для просмотра пакетов, поступающих на определенный порт:

      Фильтр хостов

      Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:

      Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:

      Комбинирование фильтров

      Фильтры можно комбинировать с помощью операторов:

      • AND
      • OR
      • NOT

      Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:

      Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:

      Сохранение заголовков в файл

      Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.

      Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.

      Прочитать этот файл можно с помощью опции -r

      Просмотр сведений о пакете

      Пока мы видели только заголовки пакетов, а для просмотра содержимого нужно использовать параметр -A. Вывод содержимого будет в формате ASCII.

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

      Вывод

      Утилита tcpdump проста в настройке и освоении. Необходимо лишь немного разобраться с:

      • выводом
      • фильтрами
      • опциями

      После чего tcpdump станет отличным помощником в вопросах обеспечения безопасности вашей сети.

      Еще одна полезная функция tcpdump, это записывать пакеты в файл. Это удобно, когда вы захватываете большое количество пакетов или когда хотите захватить пакеты для последующего анализа.

      Чтобы начать запись в файл, используйте параметр -w, за которым следует выходной файл захвата:

      Эта команда выше сохранит захват в файл с именем data.pcap. Вы можете назвать файл так, как хотите, но это распространенное соглашение – использовать расширение .pcap (захват пакета).

      Когда -wиспользуется опция, вывод не отображается на экране. tcpdumpзаписывает необработанные пакеты и создает двоичный файл, который невозможно прочитать с помощью обычного текстового редактора.

      Чтобы проверить содержимое файла, вызовите tcpdump с опцией -r:

      Файл захвата также можно проверить с помощью других инструментов анализа пакетов, таких как Wireshark.

      При захвате пакетов в течение длительного периода времени вы можете включить ротацию файлов. tcpdump позволяет создавать новые файлы или вращать файл дампа за указанный промежуток времени или фиксированный размер. Следующая команда будет создавать до десяти 200MB файлов, именованных file.pcap0, file.pcap1 и так далее: перед перезаписью старых файлов.

      После создания десяти файлов старые файлы будут перезаписаны.

      Обратите внимание, что вы должны работать tcpdumpтолько во время устранения неполадок.

      Если вы хотите начать tcpdump в определенное время, вы можете использовать cronjob . tcpdump не имеет возможности выйти через заданное время. Вы можете использовать timeoutкоманду, чтобы остановить tcpdumpчерез некоторое время. Например, чтобы выйти через 5 минут, вы должны использовать:

      Символ амперсанда ( &) в конце команды запускает команду в фоновом режиме.

      голоса
      Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector