# Wireshark

Захват пакетов должен быть базовым знанием, освоенным каждым техническим специалистом: будь то персонал службы технической поддержки и технического обслуживания или НИОКР, сколько людей столкнется с захватом пакетов. Используемые инструменты захвата пакетов - скрипка и wireshark. Персоналу пакета достаточно научиться использовать Wireshark, ведь это самый комплексный инструмент захвата пакетов с самыми обширными пользователями.

Wireshark (ранее известный как Ethereal) - это программное обеспечение для анализа сетевых пакетов. Функция программного обеспечения для анализа сетевых пакетов состоит в том, чтобы захватывать сетевые пакеты и отображать максимально подробные данные о сетевых пакетах. Wireshark использует WinPCAP в качестве интерфейса для прямого обмена пакетами данных с сетевой картой.

Функцию программного обеспечения для анализа сетевых пакетов можно представить так: «Электрик использует электрический счетчик для измерения тока, напряжения, сопротивления» - просто перенесите сцену в сеть и замените провода сетевыми кабелями. В прошлом программное обеспечение для анализа сетевых пакетов было очень дорогим, или программное обеспечение, которое было специально разработано для использования. Появление Ethereal изменило все это. В рамках общей лицензии GNUGPL пользователи могут бесплатно получить программное обеспечение и его исходный код и имеют право изменять и настраивать его исходный код. В настоящее время Ethereal является одним из наиболее распространенных в мире программ для анализа сетевых пакетов.

Официальный сайт загрузки Wireshark:[http://www.wireshark.org/](https://www.wireshark.org/)

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

Wireshark является программным обеспечением с открытым исходным кодом и может использоваться с уверенностью. Может работать на Windows и Mac OS.

&#x20;

## **Чего не может сделать Wireshark**

По соображениям безопасности wireshark может только просматривать пакеты, не изменять их содержимое и не отправлять пакеты.

&#x20;

## **Wireshark VS Fiddler**

Fiddler - это программа, которая запускается в Windows и используется для захвата HTTP и HTTPS.

wireshark может получить HTTP и HTTPS, но не может расшифровать HTTPS, поэтому wireshark не может понять содержание HTTPS

&#x20;

## **Другие подобные инструменты**

Сетевой монитор Microsoft

sniffer&#x20;

&#x20;

## **Кто будет использовать wireshark**

1\. Сетевые администраторы будут использовать wireshark для проверки сетевых проблем

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

3\. Инженеры сокетного программирования будут использовать wireshark для отладки

4\. Я слышал, что большинство инженеров в Huawei и ZTE будут использовать wireshark.

&#x20;

Короче говоря, все, что связано с сетью, может использовать wireshark.

&#x20;

## **wireshark начинает захватывать пакеты**

Интерфейс запуска

![](https://russianblogs.com/images/587/14598fe7b3de57f3902984235a8f9f13.png)

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

Нажмите Caputre-> Interfaces .. Появится следующее диалоговое окно. Выберите правильную сетевую карту. Затем нажмите кнопку «Пуск», чтобы начать захват пакетов

![](https://russianblogs.com/images/710/1e7a97511c78c89c03228ce7a351d44e.png)

&#x20;

## **Wireshark окно введение**

![](https://russianblogs.com/images/973/89a64084fc537ae494ddcfb3cbb4acbd.png)

&#x20;

WireShark в основном делится на эти интерфейсы

1\. Display Filter (фильтр отображения), используемый для фильтрации

2\. На панели списка пакетов отображаются захваченные пакеты, адреса источника и назначения и номера портов. Разные цвета представляют

3\. Панель сведений о пакете, показывающая поля в пакете

4\. Панель диссектора (шестнадцатеричные данные)

5\. Разное (адресная строка, разное)

&#x20;

## **Фильтрация отображения Wireshark**

![](https://russianblogs.com/images/330/9abc71e6c085d0b0a758f1f5f8119402.png)

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

Фильтры помогают нам быстро находить нужную нам информацию в больших объемах данных.

Есть два типа фильтров.

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

Одним из них является фильтр захвата, который используется для фильтрации захваченных пакетов, чтобы избежать захвата слишком большого количества записей. Установить в Capture-> Фильтры захвата

&#x20;

## **Сохранить фильтр**

В столбце Фильтр заполните выражение фильтра и нажмите кнопку Сохранить, чтобы получить имя. Как «Фильтр 102»,

![](https://russianblogs.com/images/562/6fe3363af698ed129bd2441f0e54d342.png)

На панели фильтров есть дополнительная кнопка «Фильтр 102».

![](https://russianblogs.com/images/865/2e91f69cfa5da1f6eb1646c137bee4d1.png)

## **Фильтр правил выражения**

Правила выражения

1\. Протокол фильтрации

Например, TCP отображает только протокол TCP.

2\. IP-фильтрация

Например, ip.src == 192.168.1.102 показывает, что адрес источника 192.168.1.102,

ip.dst == 192.168.1.102, адрес назначения 192.168.1.102

Фильтрация портов

tcp.port == 80, порт 80

tcp.srcport == 80, отображается только TCP-порт 80.

4\. Http режим фильтрации

http.request.method == "GET", отображаются только методы HTTP GET.

5\. Логическими операторами являются И / ИЛИ

Общие выражения фильтра

| Выражение фильтра                               | использование                                  |
| ----------------------------------------------- | ---------------------------------------------- |
| http                                            | Просмотр только записей протокола HTTP         |
| ip.src ==192.168.1.102 or ip.dst==192.168.1.102 | Адрес отправителя или получателя 192.168.1.102 |
|                                                 |                                                |
|                                                 |                                                |

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

&#x20;

## **Панель списка пакетов**

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

Вы также можете изменить эти правила отображения цвета, View-> Coloring Rules.

![](https://russianblogs.com/images/384/7f8d2f6422cf7285a96a677548ff0c98.png)

&#x20;

## **Панель сведений о пакете**

Эта панель является нашей самой важной и используется для просмотра каждого поля в протоколе.

Каждая строка информации

Frame:   Обзор фрейма данных физического уровня

Ethernet II: Информация заголовка кадра Ethernet на канальном уровне

Internet Protocol Version 4: Информация заголовка IP-пакета интернет-уровня

Transmission Control Protocol:  Информация заголовка сегмента данных транспортного уровня T, здесь TCP

Hypertext Transfer Protocol:  Информация прикладного уровня, вот протокол HTTP

&#x20;

## **Wireshark и соответствующая семислойная модель OSI**

![](https://russianblogs.com/images/27/3e66ff32ccd5327f6146739eea635f33.png)

## **Конкретное содержимое пакета TCP**

На рисунке ниже вы можете видеть каждое поле в TCP-пакете, захваченное wireshark.

&#x20;

![](https://russianblogs.com/images/788/a917ffbc7fe9a449543fff405e8bf6c4.png)

&#x20;

## **Пример анализа TCP трехстороннего процесса рукопожатия**

Видя это, у меня есть предварительное представление о проводнике, а теперь мы рассмотрим пример трехстороннего рукопожатия по протоколу TCP.

&#x20;

Процесс трехстороннего рукопожатия

![](https://russianblogs.com/images/722/8af8409eb051814f5d8261548624deda.png)

&#x20;

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

Откройте Wireshark, откройте ваш браузер и введитеhttp://www.cnblogs.com/tankxiao

Введите http-фильтрацию в wireshark, затем выберите запись GET / tankxiao HTTP / 1.1, щелкните правой кнопкой мыши и выберите «Follow TCP Stream»,

Целью этого является получение пакета данных, связанных с веб-сайтом, открытым браузером, и вы получите следующую картину

![](https://russianblogs.com/images/923/a864d83dbf96910bd7eca335fe3c2553.png)

На рисунке видно, что wireshark перехватил три пакета трехстороннего рукопожатия. Четвертый пакет - HTTP, который показывает, что HTTP использует TCP для установления соединения.

&#x20;

Первый пакет рукопожатия

Клиент отправляет TCP с флагом SYN и порядковым номером 0, который указывает, что клиент запросил установить соединение. Как показано ниже

![](https://russianblogs.com/images/662/bfc48b738b1eff4cd145165d7815bf2e.png)

Второй пакет рукопожатия

Сервер отправляет обратно пакет подтверждения с флагами SYN и ACK .Установите номер подтверждения на I S N плюс 1 клиента, то есть 0 + 1 = 1, как показано на рисунке ниже.

![](https://russianblogs.com/images/820/c593b81520715ccc1448eaee38b39f84.png)

Третий пакет рукопожатия

Клиент снова отправляет пакет подтверждения (ACK) с битом флага SYN, равным 0, и битом флага ACK, равным 1. Поле порядкового номера ACK, отправленного сервером, равно +1 и отправлено другой стороне в поле определения. ISN записывается в сегменте данных. +1, как показано ниже:

![](https://russianblogs.com/images/884/6f0deb7149778fb457ed8ef8d083da4c.png)

Таким образом, было пройдено трехстороннее рукопожатие по протоколу TCP и установлено соединение.

[http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html](https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html)

&#x20;

1\. Установите условия фильтра

【1】http and ip.addr == 192.168.1.106 and tcp.port == 8080

\[A] http: назначенный сетевой протокол

【b】ip.addr == 192.168.1.106：Укажите IP-адрес сервера. Замените его при необходимости.

【c】tcp.port == 8080，Укажите номер порта. Замените его при необходимости.

![](https://russianblogs.com/images/554/ca50d51f24df97dbc659fe99baccb2f2.png)

Рисунок 1 Условия фильтра

\[2] Нажмите применить

После нажатия кнопки «Применить» можно отфильтровать два пакета данных: запрос HTTP и ответ HTTP.

![](https://russianblogs.com/images/537/a7b61dcd1d9a1a29e222d42fda9b2721.png)

Рисунок 2 HTTP-запрос и ответ

&#x20;

2\. Просмотр потока данных TCP-Follow TCP Stream

\[1] Щелкните правой кнопкой мыши по любому пакету и выберите «Follow TCP Stream».

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

![](https://russianblogs.com/images/149/d5489403db71df971c8ddd92057cc695.png)

Рисунок 3 Выбор Follow TCP Stream

\[2] наконец получить HTTP-запрос и ответ

\[A] Красный фоновый шрифт - HTTP-запрос, синий фоновый шрифт - HTTP-ответ

\[B] Из User-Agent видно, что в режиме совместимости с браузером 360 используется ядро ​​IE8 (операционная система компьютера - XP, а версия браузера IE - 8), что указывает на то, что браузер 360 использует ядро ​​IE в системе. ,

![](https://russianblogs.com/images/650/7a7244ebf097d32ca968507065215ae2.png)

![](https://russianblogs.com/imgrdrct/https://www.cnblogs.com/doit8791/p/5730595.html)

Рисунок 4 HTTP-запрос и ответное содержимое

&#x20;

&#x20;

**Опасность чистой передачи в сети**

Существует довольно много протоколов и инструментов, которые передаются открытым кодом, типичными являются telnet, ftp и http. Мы использовали telnet для этого эксперимента. Предположим, я вошел на свой сервер Linux через telnet, а затем перехватил пакеты через wireshark, чтобы получить информацию об учетной записи и пароле.

1\. Сначала запустите wireshark и перейдите в состояние захвата. Затем войдите на наш сервер linux удаленно через telnet.

[![wKiom1PtxDOQimlAAACdwiZqfeE162.jpg](https://russianblogs.com/images/227/53fb4abe1febb7e12ac82ab50709107b.JPEG)](http://s3.51cto.com/wyfs02/M02/46/13/wKiom1PtxDOQimlAAACdwiZqfeE162.jpg)

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

[![wKioL1PtxUvT0yksAACzkwdoI\_Y013.jpg](https://russianblogs.com/images/477/5ea21b5d3946f1d085ba128b78d6f7fd.JPEG)](http://s3.51cto.com/wyfs02/M01/46/15/wKioL1PtxUvT0yksAACzkwdoI_Y013.jpg)

2\. Затем остановите операцию перехвата пакетов в Wireshark и выполните ярлык «Стоп».

Однако в нем содержится много информации. В настоящее время вы можете использовать функцию «Фильтр отображения» для фильтрации отображаемого содержимого, как показано на рисунке ниже, нажмите «Выражение», а затем выберите выражение фильтра. Здесь мы можем выбрать TELNET.

[![wKiom1PtxVXjVpp9AAU8cd7PEgE073.jpg](https://russianblogs.com/images/269/1390e2ec8e670785511943479e2724ed.JPEG)](http://s3.51cto.com/wyfs02/M02/46/14/wKiom1PtxVXjVpp9AAU8cd7PEgE073.jpg)

После определения выражения выберите «Применить», чтобы отфильтровать пакеты, содержащие только TELNET.

[![wKioL1Ptx42CAgvXAAYLelyRK58954.jpg](https://russianblogs.com/images/948/29e9e78f7442c7b1acd493c61d2b9a5c.JPEG)](http://s3.51cto.com/wyfs02/M02/46/16/wKioL1Ptx42CAgvXAAYLelyRK58954.jpg)Давайте посмотрим на все записи всего сеанса telnet. Wireshark может записывать записи сеанса (точно так же, как когда мы беседуем с QQ, «Записи чата QQ»), найти любой пакет telnet, щелкните правой кнопкой мыши, чтобы найти «Follow TCP Stream», wireshark будет Возвращает всю историю сеанса.

[![wKioL1PtyevSaTfJAASR\_\_mwGZk771.jpg](https://russianblogs.com/images/404/a61a348c83a623c3f299569c30c7c584.JPEG)](http://s3.51cto.com/wyfs02/M02/46/17/wKioL1PtyevSaTfJAASR__mwGZk771.jpg)

ОК, мы видим следующую информацию данных,Красная часть - это ДАННЫЕ, которые мы отправили, а синяя часть - это ДАННЫЕ, которые мы получили.[![j\_0061.gif](https://russianblogs.com/images/634/32f6f71e11295e34785574bcd97d1352.gif)](https://img.baidu.com/hi/jx2/j_0061.gif)Скажи мне, что ты видишь

[![wKiom1PtyVriu\_\_WAAINWJKx1S0346.jpg](https://russianblogs.com/images/568/26cc502234497e656aaeab74ec1978e8.JPEG)](http://s3.51cto.com/wyfs02/M02/46/16/wKiom1PtyVriu__WAAINWJKx1S0346.jpg)

Чтобы увидеть более четко, мы еще раз отфильтровываем только те ДАННЫЕ, которые мы отправили. Или только что получил ДАННЫЕ.

[![wKioL1PtzA7D1\_ewAAIm3rxMBZk668.jpg](https://russianblogs.com/images/499/acbcd81ba7892001b66c62c166dacffb.JPEG)](http://s3.51cto.com/wyfs02/M02/46/18/wKioL1PtzA7D1_ewAAIm3rxMBZk668.jpg)

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

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

&#x20;<[http://skypegnu1.blog.51cto.com/8991766/1540728/](http://skypegnu1.blog.51cto.com/8991766/1540728/)>

**Часто используемые правила фильтрации:**

Фильтры захвата (CaptureFilters): используются для определения того, какая информация записывается в результатах захвата. Необходимо установить перед началом захвата.\
DisplayFilters: подробный поиск в захваченных результатах. Они могут изменить его после получения результата захвата.

&#x20;

**Фильтр захвата**

&#x20;

Протокол (Protocol):

Возможные значения: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp и udp.

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

&#x20;

Направление (направление):

Возможные значения: src, dst, src и dst, src или dst

Если источник или назначение не указаны, по умолчанию используется "src or dst".

Например, «хост 10.2.2.2» совпадает с «хостом src или dst 10.2.2.2».

&#x20;

Host(s):

Возможные значения: net, port, host, portrange.

Если это значение не указано, по умолчанию используется ключевое слово "host".

Например, «src 10.1.1.1» совпадает с «src host 10.1.1.1».

&#x20;

Логические операции:

Возможные значения: нет, и, или.

Нет («не») имеет самый высокий приоритет. Или («или») и («и») имеют одинаковый приоритет, и операция выполняется слева направо.

Например,

«Не tcp порт 3128 и tcp порт 23» совпадает с «(не tcp порт 3128) и tcp порт 23».

«Not tcp port 3128 и tcp port 23» отличается от «not (tcp port 3128 и tcp port 23)».

&#x20;

Примеры:

tcp dst port 3128 // Захватывает пакеты, чей TCP-порт назначения 3128.

ip src host 10.1.1.1 // Захват пакетов с исходным IP-адресом 10.1.1.1.

хост 10.1.2.3 // Захватывает пакеты, чей IP-адрес назначения или источника равен 10.1.2.3.

Эфирный хост e0-05-c5-44-b1-3c // Захват пакетов с MAC-адресом получателя или источника e0-05-c5-44-b1-3c. Если вы хотите перехватить пакеты данных, которые аппарат связывает со всеми внешними сетями, вы можете заменить здесь MAC-адрес маршрутизированным Mac-адресом.

src portrange 2000-2500 // Захватывает пакеты, источником которых является UDP или TCP и номер порта которых находится в диапазоне от 2000 до 2500.

not imcp // Показать все пакеты, кроме icmp. (Icmp обычно используется инструментом ping)

src host 10.7.2.12, а не dst net 10.200.0.0/16 // Показать пакеты, чей IP-адрес источника 10.7.2.12, но адресат не 10.200.0.0/16.

(хост src 10.4.1.12 или src net 10.6.0.0/16) и tcp dst portrange 200-10000 и dst net 10.0.0.0/8 // IP-адрес источника захвата - 10.4.1.12 или исходная сеть - 10.6.0.0/16, назначение Номер локального порта TCP составляет от 200 до 10000, а местом назначения являются все пакеты в сети 10.0.0.0/8.

src net 192.168.0.0/24

src net 192.168.0.0 mask 255.255.255.0 // Захватывать все пакеты в сети с исходным адресом 192.168.0.0.

&#x20;

&#x20;

**Фильтр дисплея**

Примеры:

snmp || dns || icmp // Отображение пакетов SNMP или DNS или ICMP.

ip.addr == 10.1.1.1 // Показать пакеты с IP-адресом источника или назначения 10.1.1.1.

ip.src! = 10.1.2.3 или ip.dst! = 10.4.5.6 // Показать пакеты, источником которых не является 10.1.2.3 или адресатом которых не является 10.4.5.6.

Другими словами, отображаемые пакеты будут:

IP-адрес источника: любой, кроме 10.1.2.3; IP-адрес назначения: любой

Как хорошо

IP-адрес источника: любой; IP-адрес назначения: любой, кроме 10.4.5.6.

ip.src! = 10.1.2.3 и ip.dst! = 10.4.5.6 // Показать пакеты, чей источник не 10.1.2.3 и IP-адрес назначения не 10.4.5.6.

Другими словами, отображаемые пакеты будут:

IP-адрес источника: любой, кроме 10.1.2.3; в то же время IP-адрес назначения: любой, кроме 10.4.5.6.

tcp.port == 25 // Показывать пакеты с исходным или целевым TCP-портом с номером 25.

tcp.dstport == 25 // Показать пакеты с целевым TCP-портом с номером 25.

tcp.flags // Показать пакеты, содержащие флаги TCP.

tcp.flags.syn == 0 × 02 // Показать пакеты, содержащие флаг TCP SYN.

Если синтаксис фильтра правильный, фон выражения зеленый. Если это красный, выражение неверно.
