Wireshark — очень популярное программное обеспечение для анализа сетевых пакетов, называемое Little Shark, и очень мощное. Может перехватывать различные сетевые пакеты и отображать подробную информацию о сетевых пакетах.
Wireshark — это программное обеспечение с открытым исходным кодом, и его можно использовать с уверенностью. Может работать на Windows и Mac OS. Соответственно, инструментом перехвата пакетов в Linux является tcpdump. Люди, использующие Wireshark, должны понимать сетевой протокол, иначе они не поймут Wireshark.
Короче говоря, Wireshark можно использовать для всего, что связано с сетью.
Wireshark использует WinPCAP в качестве интерфейса для прямого обмена пакетами данных с сетевой картой.
Среды, используемые Wireshark, грубо делятся на два типа: одна — это автономная среда, в которой компьютер напрямую подключен к сети, а другая — сетевая среда, в которой имеется множество приложений, то есть когда подключен коммутатор. .
В «автономной ситуации» Wireshark напрямую захватывает сетевой трафик локальной сетевой карты;
В «ситуации переключения» Wireshark получает сетевой трафик в локальной сети посредством зеркалирования портов, подмены ARP и т. д.
Зеркалирование портов: используйте интерфейс коммутатора для перенаправления сетевого трафика локальной сети на сетевую карту назначенного компьютера.
Подмена ARP: коммутатор пересылает данные на основе MAC-адреса и маскирует MAC-адреса других терминалов для получения сетевого трафика в локальной сети.
Путь загрузки программного обеспечения:
https://www.wireshark.org/
Выберите загрузку в соответствии с версией системы. После завершения загрузки следуйте инструкциям программного обеспечения и нажмите «Далее» для установки.
Во-первых, давайте представим пример использования инструмента Wireshark для захвата операции команды ping. Вы можете начать работу и испытать конкретный процесс захвата пакетов.
1. Откройте Wireshark. Основной интерфейс выглядит следующим образом:
2. Выберите в строке меню захватывать -> Опции, проверьте сетевую карту WLAN. Здесь вам нужно выбрать в зависимости от использования сетевой карты каждого компьютера. Простой способ — посмотреть сетевую карту, соответствующую используемому IP. Нажмите «Пуск», чтобы начать захват пакетов.
3. После запуска Wireshark Wireshark находится в состоянии захвата пакетов.
4. Выполните операции, требующие перехвата пакетов, например проверку связи с www.baidu.com в окне cmd.
5. После завершения операции соответствующие пакеты данных будут захвачены, и вы сможете нажать кнопку Хватит захватывать группировку кнопка.
6. Чтобы другие бесполезные пакеты данных не влияли на анализ, вы можете отфильтровать список пакетов данных, установив условия фильтрации в столбце фильтра. Результаты следующие. Примечание: ip.addr == 183.232.231.172 и icmp означает, что отображаются только пакеты данных протокола ICPM и IP-адрес хоста 183.232.231.172. Примечание. Имя протокола icmp должно быть написано строчными буквами.
7. Wireshark завершает захват пакета и сохраняет результаты этого захвата или анализа. Это так просто. Подробности об условиях фильтра отображения Wireshark, условиях фильтра захвата пакетов и способах просмотра пакетов данных будут представлены позже.
Основной интерфейс Wireshark состоит из 6 частей:
Примечание. Для различения разные протоколы в области списка пакетов данных используют разные цвета. Цветовая идентификация протокола расположена в строке меню. вид --> Правила окраски. Как показано ниже
WireShark в основном разделен на эти интерфейсы.
Используется для установки условий фильтрации списка пакетов. Путь меню: Анализ --> Display Filters。
Отображать пакеты, полученные захватывать,Каждый пакет содержит номер,Временная метка,Исходный адрес,адрес назначения,протокол,длина,и информация о пакете。другойпротокол Пакет данных используетдругойцветной дисплей。
Выберите указанный пакет данных в списке пакетов данных, и вся подробная информация о пакете данных будет отображена в сведениях о пакете данных. Панель «Сведения о пакете» является наиболее важной и используется для просмотра каждого поля протокола. Информация для каждой строки
(1) Кадр: обзор кадров данных на физическом уровне.
(2) Ethernet II: информация заголовка кадра Ethernet уровня канала передачи данных.
(3) Интернет-протокол версии 4: информация заголовка IP-пакета уровня Интернета.
(4) Протокол управления передачей: информация заголовка сегмента данных транспортного уровня T, здесь TCP.
(5) Протокол передачи гипертекста: информация прикладного уровня, вот протокол HTTP.
Конкретное содержимое TCP-пакета
На рисунке ниже вы можете увидеть каждое поле в TCP-пакете, полученном Wireshark.
Исходное содержание сообщения.
Когда новички используют Wireshark, они получают большое количество избыточных списков пакетов, что затрудняет поиск той части пакетов, которую им необходимо перехватить. Инструмент Wireshark поставляется с двумя типами фильтров. Научившись использовать эти два фильтра, мы сможем быстро находить нужную информацию в большом объеме данных.
1. Фильтр захвата пакетов
Путь в строке меню для фильтра захватывать: захватывать --> захватывающий фильтр. Используется для настройки перед захватом пакетов.
Как его использовать? Настройки следующие.
ip хоста 183.232.231.172 означает только пакеты данных с IP хоста 183.232.231.172. Полученные результаты следующие:
Фильтр отображения используется для установки условий фильтрации для фильтрации пакетов данных после захвата пакетов данных.
Обычно при захвате пакетов данных заданные условия являются относительно широкими или настройки отсутствуют, что приводит к большому количеству захваченных пакетов данных. Фильтры отображения используются для установки условной фильтрации для облегчения анализа.
В том же сценарии, что и выше, в режиме «Захватывать» не устанавливаются правила фильтрации захвата пакетов для непосредственного захвата всех пакетов данных через сетевую карту.
Список пакетов данных, полученных при выполнении команды ping www.baidu.com, выглядит следующим образом:
Судя по полученному выше списку пакетов данных, он содержит большое количество недопустимых данных. В это время вы можете извлечь аналитическую информацию, установив условия фильтра отображения. ip.addr == 183.232.231.172 и отфильтровать.
Выше описано базовое использование фильтров захвата пакетов и фильтров отображения. Когда сеть несложная или трафик небольшой, использование фильтра отображения для захвата и постобработки пакетов может удовлетворить наши потребности. Ниже представлен синтаксис между ними и их различия.
Тип фильтра захвата пакетов Тип (хост、net、port)、НаправлениеDir(src、dst)、протоколProto(ether、ip、tcp、udp、http、icmp、фтп и др.)、Логические операторы(&&и、|| или,! Нет)
(1) Фильтрация протоколов
Это относительно просто: просто введите имя протокола непосредственно в поле фильтра захвата пакетов.
tcp, отображает только список пакетов протокола TCP.
http, просматривать только список пакетов протокола HTTP
icmp, отображает только список пакетов протокола ICMP.
(2) IP-фильтрация
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3) Фильтрация портов
port 80
src port 80
dst port 80
(4)Логические операторы&&и、|| или,! Нет
src host 192.168.1.104 &&dst port 80 Захват пакетов данных с адресом хоста 192.168.1.80 и портом назначения 80.
хост 192.168.1.104 || хост 192.168.1.102 перехватывает пакеты данных с хостом 192.168.1.104 или 192.168.1.102
! Broadcast не захватывает широковещательные пакеты
(1) Оператор сравнения
Операторы сравнения:
== равный,! = не равно、> больше, чем、< меньше, чем、>= больше, чемравный、<=меньше, чемравный
(2) Фильтрация протоколов
Это относительно просто: просто введите имя протокола прямо в поле «Фильтр». Примечание. Имя протокола необходимо вводить строчными буквами.
tcp, отображает только список пакетов протокола TCP.
http, просматривать только список пакетов протокола HTTP
icmp, отображает только список пакетов протокола ICMP.
(3) IP-фильтрация
ip.src ==112.53.42.42 отображает список пакетов с адресом источника 112.53.42.42.
ip.dst==112.53.42.42, отображает список пакетов с адресом назначения 112.53.42.42.
ip.addr == 112.53.42.42 Отображает список пакетов с IP-адресом источника или IP-адресом назначения 112.53.42.42.
(4) Фильтрация портов
tcp.port ==80 отображает список пакетов с портом исходного хоста или хоста назначения 80.
tcp.srcport == 80, отображает только список пакетов, у которых исходный порт хоста протокола TCP равен 80.
tcp.dstport == 80, отображает только список пакетов, порт назначения хоста протокола TCP которых равен 80.
(5) фильтрация режима http
http.request.method=="GET" отображает только метод HTTP GET.
(6) Логический оператор: и/или/нет.
При фильтрации нескольких комбинаций условий используйте и/или. Например, выражение для получения пакета ICMP с IP-адресом 192.168.0.104 имеет вид ip.addr == 192.168.0.104 и icmp
(7) Фильтрация по содержимому пакета данных.
Предположим, я хочу выполнить фильтрацию на основе содержимого уровня ICMP. Я могу щелкнуть поток кода в интерфейсе выбора и выбрать данные ниже.
После щелчка правой кнопкой мыши для выбора появится следующий интерфейс.
После выбора он отобразится в фильтре следующим образом
Последующие условные выражения вам необходимо заполнить самостоятельно. Таким образом, я хочу отфильтровать поток данных, содержащий содержимое «abcd» в пакете данных. Ключевое слово содержит, а полное условное выражение — данные, содержащие «abcd».
Видя это, у меня есть предварительное представление о Wireshak.
Уровень канала передачи данных:
Фильтровать пакеты с MAC-адресом 04:f9:38:ad:13:26
eth.src == 04:f9:38:ad:13:26
Фильтровать пакеты с исходным MAC-адресом 04:f9:38:ad:13:26----
eth.src == 04:f9:38:ad:13:26
Сетевой уровень:
Фильтровать пакеты с IP-адресом 192.168.1.1
ip.addr == 192.168.1.1
Фильтрация данных в сегменте сети 192.168.1.0
ip contains "192.168.1"
Транспортный уровень:
Фильтровать пакеты для порта 80
tcp.port == 80
Фильтровать пакеты между портом 12345 и портом 80.
tcp.port == 12345 &&tcp.port == 80
Фильтровать пакеты с порта 12345 на порт 80
tcp.srcport == 12345 &&tcp.dstport == 80
Прикладной уровень:
Особое примечание: http.request в http представляет первую строку в заголовке запроса (например, GET index.jsp HTTP/1.1), http.response представляет первую строку в заголовке ответа (например, HTTP/1.1 200 OK) и другие заголовки: используйте формат http.header_name.
Фильтровать http-пакеты, содержащие .php в URL-адресе
http.request.uri contains ".php"
Фильтровать http-пакеты, содержащие имя пользователя
http contains "username"
Шаг 1: Клиент отправляет пакет данных с флагами SYN=1 и ACK=0 на сервер, запрашивая соединение. Это первое рукопожатие;
Шаг 2. Если сервер получает запрос и разрешает соединение, он отправит пакет данных с флагами SYN=1 и ACK=1 на отправляющую сторону, сообщая ей, что связь возможна, и просит клиента отправить пакет подтверждения. . Это второе рукопожатие;
Шаг 3: Сервер отправляет пакет данных с SYN=0 и ACK=1 клиенту, чтобы сообщить ему, что соединение подтверждено. Это третье рукопожатие. TCP-соединение устанавливается и начинается связь.
Шаг 1. Запустите Wireshark для перехвата пакетов, откройте браузер и введите www.baidu.com.
Шаг 2. Используйте команду ping www.baidu.com, чтобы получить IP-адрес.
Шаг 3. Введите условия фильтрации, чтобы получить список пакетов для анализа. ip.addr == 183.232.231.172.
На картинке видно, что Wireshark перехватил три пакета данных трехстороннего рукопожатия. Четвертый пакет предназначен для HTTPS и показывает, что HTTPS использует TCP для установления соединения.
Первый пакет рукопожатия
Клиент отправляет TCP с битом флага SYN и порядковым номером 0, который представляет запрос клиента на установление соединения.
Ключевые атрибуты пакета данных следующие:
SYN: бит флага, указывающий на запрос на установление соединения.
Seq = 0: начальное значение соединения равно 0, а относительный порядковый номер пакета данных начинается с 0, что указывает на то, что данные еще не были отправлены.
Ack =0: начальное значение установления соединения равно 0, и количество полученных пакетов указывает на то, что в данный момент данные не получены.
Второй пакет рукопожатия
Сервер отправляет обратно пакет подтверждения с битами флага SYN, ACK. Добавьте в поле «Номер подтверждения» значение 1, то есть 0+1=1.
Ключевые атрибуты пакета данных следующие:
Seq = 0: начальное значение установления равно 0, что указывает на то, что данные еще не были отправлены.
Ack = 1: указывает количество битов данных, успешно полученных текущей стороной. Хотя клиент не отправляет действительных данных, номер подтверждения все равно увеличивается на 1, поскольку он содержит флаг SYN или FIN. (Это не повлияет на количество действительных данных, поскольку пакеты, содержащие флаг SYN или FIN, не несут действительных данных)
Третий пакет рукопожатия
Клиент снова отправляет пакет подтверждения (ACK) с флагом SYN, установленным в 0, и флагом ACK, установленным в 1. Добавьте 1 в поле порядкового номера ACK, отправленного сервером, поместите его в поле подтверждения и отправьте другой стороне, а в поле Флага напишите ACK +1:
Ключевые атрибуты пакета данных следующие:
ACK: бит флага, указывающий, что запись получена.
Seq = 1: указывает, что в данный момент отправлено 1 данные.
Ack = 1: указывает количество битов данных, успешно полученных текущей стороной. Хотя сервер не отправляет действительных данных, номер подтверждения все равно увеличивается на 1, поскольку он содержит флаг SYN или FIN (это не влияет на счетчик). действительных данных, поскольку пакеты, содержащие флаг SYN или FIN, не несут действительных данных).
Таким образом, передается трехстороннее рукопожатие TCP и устанавливается соединение. Начать взаимодействие с данными
Настройте формат отображения временной метки в списке пакетов. Метод регулировки такой. вид -->Формат отображения времени --> Дата и время. Скорректированный формат выглядит следующим образом:
Как правило, программное обеспечение Wireshark также можно использовать с симуляторами крупных производителей, что больше подходит для точной настройки проекта.