Wireshark: Анализ трафикa в Linux и Windows

WireShark icon

Здравствуйте друзья! В этой статье я попытаюсь объяснить и рассказать о самом необходим, что нужно знать при использовании Wireshark на Linux, и покажу анализ трёх типов сетевого трафика. Данный мануал применим и для работы Wireshark под Windows.

Если вы новичок в информационной безопасности, советую почитать статью «Что такое сниффер», и только потом читать эту статью о том как пользоваться Wireshark.

Wireshark — очень популярный и чрезвычайно умелый анализатор сетевого протокола, который разработал Джеральд Комбс [Gerald Combs], Wireshark появился в июне 2006 г., когда Комбс переименовал сетевой инструмент Ethereal, также созданный им, поскольку сменил работу и не мог больше использовать старое название. Сегодня большинство используют Wireshark, a Ethereal сделался историей.

Wireshark: лучший сниффер

Вы, возможно, спросите, чем Wireshark отличается от других сетевых анализаторов — кроме того, что он свободный — и почему бы нам просто не начать пропагандировать применение tcpdump для захвата пакетов?

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

Как пользоваться Wireshark?

Чтобы новичок смог разобраться с Wireshark, ему нужно понять сетевой трафик. В таком случае цель этой статьи состоит в разъяснении вам основ TCP/IP, чтобы вы смогли сделать нужные выводы по сетевому трафику, который анализируете.

wireshark-snifer
Формат пакета TCP и пакета IP.

Если вы запускаете Wireshark от имени обычного пользователя, вы не сможете использовать сетевые интерфейсы для сбора данных из-за имеющихся в сетевых интерфейсах разрешений файла Unix по умолчанию. Удобнее запускать Wireshark от имени root (sudo wireshark) при сборе данных и от имени обычного пользователя—для анализа данных.

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

Захват сетевых данных с помощью Wireshark

Простейший способ приступить к захвату данных сетевых пакетов — выбрать после запуска Wireshark нужный вам интерфейс и нажать на Start. Wireshark покажет данные о сети на вашем экране в зависимости от трафика вашей сети. Обратите внимание: можно выбрать более одного интерфейса. Если вы ничего не знаете о TCP, IP или других протоколах, результат может показаться вам сложным для чтения и понимания.

Чтобы прекратить процесс захвата данных, выберите в меню Capture > Stop. В качестве альтернативы, можете нажать на четвертый значок слева, с красным квадратиком (это сокращение от «Прекратить захват данных live») в панели инструментов Main (учтите, его точное расположение зависит от имеющейся у вас версии Wireshark). На эту кнопку можно нажимать только в процессе сбора сетевых данных.

При использовании описанного метода захвата данных вы не можете изменить настроенные в Wireshark по умолчанию Capture Options [Опции захвата]. Вы можете увидеть и изменить Capture Options, выбрав в меню Capture > Options. Здесь можно выбрать интерфейс(ы) сети, посмотреть свой IP-адрес, применить фильтры сбора данных, перевести свою сетевую карту в режим приема всех сетевых пакетов и сохранить собранные данные в один или несколько файлов. Вы даже можете велеть прекращать захват пакетов по достижении определенного числа сетевых пакетов, или определенного времени, или определенного объема данных (в байтах).

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

Wireshark позволяет читать и анализировать уже собранные сетевые данные из большого числа файловых форматов, в том числе tcpdump, libpcap, snoop от Sun, nettl от HP, текстовых файлов К12, и т.д. Короче, с помощью Wireshark можно читать практически любой формат собранных сетевых данных. Подобным же образом Wireshark позволяет сохранять собранные данные в разных форматах. Можно даже использовать Wireshark для конверсии файла из одного формата в другой.

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

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

Фильтры отображения Wireshark

Если во время захвата сетевых данных применяются фильтры захвата, то Wireshark не учитывает сетевой трафик, не соответствующий фильтру; тогда как фильтры отображения применяются после захвата данных и «прячут» сетевой трафик, не удаляя его. Вы всегда можете отключить Display filter и вернуть свои скрытые данные.

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

Wireshark выделяет синтаксически правильный фильтр светло-зеленым фоном. Если синтаксис содержит ошибки, фон розовеет.

Фильтры отображения поддерживают операторы сравнения и логические операторы. Фильтр отображения http.response.code

wireshark linux
Три пакета (SYN, SYN+ACK и АСК) трехзтапной установки соединения TCP

==404 && ip.addr == 192.168.1.1 показывает трафик, который либо идет с IP-адреса 192.168.1.1, либо идет на IP-адрес 192.168.1.1, который также имеет в себе код отклика 404 (Not Found) HTTP. Фильтр!Ьоо1р &&!ip &&!агр исключает из результата трафик BOOTP, IP и ARP. Фильтр eth.addr == 01:23:45:67:89:ab && tcp.port == 25 отображает трафик идущий от или к сетевому устройству с MAC-адресом 01:23:45:67:89:аЬ, которое использует во входящих и исходящих соединениях порт TCP за номером 25.

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

Продолжение статьи на следующей странице. Для перехода на следующую страницу нажмите на кнопку 2 которая находится под кнопками социальных сетей.

Определяя правила, помните, пожалуйста, что выражение (ip. addr!=192.168.1.5) не означает, что ни одно из полей ip.addr не может содержать IP-адреса 192.168.1.5. На самом деле оно означает, что одно из полей ip.addr не должно содержать IP-адрес 192.168.1.5. Поэтому значение другого поля ip.addr может быть и равным 192.168.1.5. Словесная формулировка такова: «существует одно поле ip.addr, не равное 192.168.1.5» Правильно первое утверждение выражается 4epe3!(ip.addr == 192.168.1.5). Это частое заблуждение.

Помните также, что МАС-адреса действительно полезны, когда вы отслеживаете определенную машину в своей локальной сети, потому что IP машины может изменяться, если она использует DHCP, а вот MAC-адрес изменить сложнее.

Тот факт, что протокол FTP обычно использует порт номер 21, не означает, что ему нельзя брать порт с другим номером. Иными словами, не стоит слепо полагаться на номер порта, принимая трафик за TCP/IP.

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

Протокол TCP

TCP означает Transmission Control Protocol — протокол управления передачей. Главное свойство TCP — его надежность и гарантия доставки пакета. Если доставка пакета не подтверждена, он отправляет пакет заново. Программа TCP передает данные между компьютерами, используя сегменты (именуемые также пакетами TCP). TCP присваивает последовательный номер каждому переданному байту и ждет положительного подтверждения (оно же ACK) от стороны-получателя TCP.

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

Заголовок TCP содержит поля Source Port и Destination Port. Эти два поля, а также исходный IP-адрес и IP-адрес назначения объединяются для уникального обозначения каждого соединения TCP. Порты помогают каналам TCP/IP в объединенных сетью устройствах (ПК, роутерах и т.д.) распределять трафик по разным программам, исполняемым на одном устройстве.

Если сервис хочет, чтобы его считали надежным, то обычно он основывается на TCP, в ином случае он будет основан на IP. Но, как легко себе представить, за надежность надо платить, а это не всегда желательно.

О TCP/IP, TCP и IP

TCP/IP — наиболее широко используемый протокол для соединения компьютеров между собой, и он настолько тесно связан с Интернетом, что крайне сложно обсуждать TCP/IP, не касаясь Интернета, и наоборот. Каждое устройство, которое его применяет, имеет:

  • IP-адрес Этот адрес должен быть уникальным, по крайней мере, в своей локальной сети.
  • Сетевая маска Используется для разделения больших сетей IP на меньшие сети, относящиеся к текущей сети.
  • Один или более DNS-серверов Используется для перевода IP-адреса в запоминаемый человеком формат и наоборот.
  • Шлюз по умолчанию Это опционально, если вы хотите общаться с устройствами вне вашей локальной сети. Шлюз по умолчанию [Default Gateway] — это сетевое устройство, которому TCP/ IP отправляет пакет, когда он «не знает», куда еще его отправить.

Каждый сервис TCP слушает порт, являющийся уникальным на каждом компьютере. Компьютер, который поддерживает протокол HTTP, протокол, обслуживающий WWW, также именуется HTTP-сервером. Подобным же образом существуют FTP-серверы, DNS-серверы, и т.д. Именно две пары IP-адресов и номеров портов на обоих концах канала взаимодействия TCP/IP уникальным образом идентифицируют соединение между двумя компьютерами, которые используют TCP/IP.

Пакет TCP  можно использовать, чтобы установить соединение; передать данные; переслать подтверждения, анонсировать буфер, содержащий входящие данные, именуемый Window Size, и закрыть соединения. Как видно, в каждом сегменте пакета есть раздел заголовка и раздел данных.

З-этапный обмен данными TCP

TCP обеспечивает ориентированный на соединение надежный сервис по передаче байтов. Это полный дуплексный протокол, то есть каждое соединение TCP поддерживает пару потоков байтов; по одному в каждом направлении. «Ориентированный на соединение» означает, что два приложения, использующие TCP, прежде чем начать обмен данными, должны сначала установить между собой TCP-соединение.

Заголовок TCP включает поле 6-битных флагов, используемое для передачи контрольной информации между пирами TCP. Среди возможных флагов — SYN, FIN, RESET, PUSH, URG и ACK. Флаги SYN и ACK используются для трехэтапного обмена данными (квитирования, handshake) TCP при установке соединения, как вы вскоре увидите. Флаг RESET означает, что получатель хочет прервать соединение.

Квитирование TCP происходит так: клиент отправляет пакет TCP SYN на сервер, и его заголовок TCP содержит поле идентификационного номера, которое имеет условное значение в пакете SYN. Сервер отправляет назад пакет TCP (SYN, ACK), который включает идентификационный номер противоположного направления и подтверждение предыдущего номера.

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

И, наконец, чтобы действительно установить соединение TCP, клиент отправляет пакет TCP АСК, подтверждая идентификационный номер сервера. После трехэтапного обмена данными TCP устанавливается соединение, готовое отправлять и получать данные.

Трафик в данном случае был получен с помощью следующей команды:

Спустя необходимое количество сетевого трафика DNS, ARP и ICMP начинается квитирование TCP (на рисунке вверху стр. 85). IP-адрес клиента 10.0.2.15, а IP-адрес назначения — 80.244.178.150. Довольно простой фильтр отображения (tcp &&!http) заставит Wireshark показать 63 из 85 пакетов. Три номера пакетов, используемые в обмене данными, являются последовательными, потому что на момент сбора данных хост не вел никакой другой сетевой активности, однако вряд ли это может считаться общим случаем.

Сканирование пингом

Эта часть будет изучать сетевой трафик Nmap при сканировании с помощью пинга.

dns tcp ip wireshark nmap
Часть сканирования пинга Nmap в LAN по данным Wireshark.

Этот вид сканирования в локальной сети выполняется с помощью протокола ARP. Хосты за её пределами сканируются с помощью протокола ICMP, и в этом случае трафик будет отличаться от представленного. В нижеприведенном примере команда Nmap сканирует 255 IP-адресов, от 10.67.93.1 до 10.67.93.255. Результаты показывают, что на момент выполнения только 10 хостов были включены, или, если точнее, только 10 хостов ответили на сканирование Nmap:

Цель пинга — просто выяснить, работает IР или нет, см на предыдущий рисунок. Для Nmap в сканировании пинга важны не настоящие данные полученных пакетов, а, грубо говоря, существование ответного пакета. Поскольку весь трафик относится к локальной сети, каждое сетевое устройство сообщает в ответ свой MAC-адрес, поэтому и в поле Source, и в поле Destination вы видите только MAC-адреса

Наличие ответов позволяет Nmap понять, что хост включен и работает. Поскольку МАС-адрес заодно включает информацию о производителе сетевого устройства, Nmap сообщает вам также и эту информацию.

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

Анализируем трафик DNS

Запросы DNS очень часты в сетях ТСР/IP. Запрос DNS создает небольшой трафик, и поэтому является отличным примером для целей обучения. Следующая команда используется для создания необходимого сетевого DNS-трафика, который будет изучаться:

Всего нужно два пакета: один для отправки и один для ответа на запрос DNS.

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

Настройка Wireshark Linux

Первый пакет — номер 3, второй — номер 4. Фильтр отображения (DNS) используется, чтобы минимизировать отображаемые данные и показать полезную информацию. Был использован протокол UDP (User Datagram Protocol), и нужная информация без всяких ошибок была отправлена назад, как показано в поле Flags. Кроме того, по разнице во времени между запросом DNS (1.246055000) и ответом (1.255059000) вы можете судить о том, что сервис DNS работает отлично, поскольку время отклика вполне разумное.

Запрошенный сервер DNS  имеет IP-адрес 10.67.93.1 — как вы видите из IP-адреса назначения первого пакета. Тот же самый DNS сервер ответил на запрос DNS, как вы видите из исходящего IР-адреса второго пакета. Строка ‘Answer RRs: 2’ сообщает о том, что на запрос DNS будет два ответа. Со временем вы научитесь понимать это с одного взгляда.

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

Порт назначения первого пакета — 53, это обычный номер порта для DNS сервиса. Часть UDP второго пакета показывает номера портов, используемых для ответа:

Как и с большинством инструментов, чем больше вы используете Wireshark, тем эффективнее становится ваша работа с ним, так что продолжайте практиковаться и изучать его!

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

ВКонтакте
OK
Telegram
WhatsApp
Viber

7 комментариев

  1. Интер

    За инструкцию Wireshark спасибо!
    Вопрос не по теме. Собираюсь переходить на Linux. Какой дистрибутив посоветуете? Что лучше Ubuntu или Debian ?

    • Debian – для профессионалов, а Ubuntu для новичков.

    • su

      Ой ладно, вам. Я знаю убунтушников, которые дадут фору любому debian’щику, и наоборот на форуме debian я видел достаточно новичков. Так, что не надо ля-ля. Новички везде есть.

    • Владимир

      С линухи начинай… да и мануалов по работе завались

  2. Wladimir

    Подскажите пожалуйста, а можно с его помощью отслеживать, сколько я принял и передал мб.

    • Monster Kill

      Трафик снифером отследить конечно можно, но намного легче использовать специальные программы для мониторинга трафика.

    • olala

      тебе поможет программа NetWorx

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *