PTCI_5.mp4
# Тема 7. Анализ трафика
## Введение
Анализ трафика применим к внутренней инфраструктуре. Для анализа мы будем использовать WireShark, поскольку из коробки включает в себя уже много возможностей, есть возможность установки различных плагинов и скриптов.
## WireShark
Мегаинструмент, отраслевой стандарт
* Глубокая проверка протоколов
* Онлайн захват и оффлайн анализ
* Браузер пакетов
* Просмотр трафика в GUI (И в CGI с помощью TShark)
* Мощные фильтры отображения
* Анализ VoIP
* Чтение/запись многих форматов захвата
tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (сжатый и несжатый), Sniffer® Pro, and NetXray®, Network Instruments Observer, NetScreen snoop, Novell LANalyzer, RADCOM WAN/LAN Analyzer, Shomiti/Finisar Surveyor, Tektronix K12xx, Visual Networks Visual UpTime, WildPackets EtherPeek/TokenPeek/AiroPeek …
* Разархивация gzip из трафика на лету
* Читает трафик Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetotth, USB, Token Ring, Frame Relay, FDDI и 100500 других
* Поддерживает расшифровку протоколов (IPSec, ISAKMP, Kerberos, SNMPv3, SSL/TLS, WEP и WPA/WPA2 и ...)
* Раскрашивает пакеты для ручного анализа
* Вывод можно экспортировать в XML, PostScript, CSV или в обычный текст
[https://kali.tools/?p=1407]()
Для начала работы с трафиком, требуется запустить WireShark, выбрать какой адаптер будет анализироваться и нажать "Старт". После будут отражены все пакеты и интерфейсы, по которым осуществляется передача. Пример пакетов приведен ниже:

По протоколу UDP общаются чаще всего стриминговые сервисы, поскольку данный протокол сильно быстрее, он без подтверждения. Например, если пропадут несколько пакетов, то для видео/стрима это сильно не ударит.
Для примера генерации трафика зайдем в Яндекс.Картинки, выберем любое изображение и скачаем его. После остановим прослушивание трафика и сохраним полученные данные в формате **.pcapng**:

С тем учетом, что был открыт ZOOM и велась конференция, нам удалось наловить трафика на 97 МБ. Характеристики dump-файла:

Разберем, что нам удалось поймать WireShark'ом. Откроем сохраненный файл в программе.
Давайте посмотрим, что у нас здесь есть.
### Фильтры
Для того, чтобы отфильтровать данные необходимо в строке над пакетами указать интересующий интерфейс. В нашем случае все кроме OpenVPN. На скриншоте ниже видно данные которые получает телевизор, находящийся в квартире.

Чтобы отследить интересующий пакет данных:
```
ПКМ на пакет - Follow - UDP Stream
```

После проделанных действий применяется фильтр `udp.stream eq 1` и в отдельном окне (справа) отображается весь стрим связанный с этим пакетом. Внизу окна возможно отфильтроваться по входящим / исходящим данным.

При необходимости можно изменить кодировку на любую из представленных. Рассмотрим кодировку YAML. По стилю выделенное сообщение похоже на BASE64, по последним двум символам. При желании, то возможно декодировать это сообщение и увидеть что пересылается.
Теперь отфильтруемся по следующему правилу `!openvpn and !udp` (не openvpn и не udp), таким образом выведуться все данные не содержащие openvpn и udp протоколы. После чего мы увидим, некоторое количество пакетов, переданных по протоколу STP и ARP:

> **Протокол STP (Spanning Tree Protocol)** — канальный протокол. Основной задачей STP является устранение петель в топологии произвольной сети Ethernet, в которой есть один или более сетевых мостов, связанных избыточными соединениями. STP решает эту задачу, автоматически блокируя соединения, которые в данный момент для полной связности коммутаторов являются избыточными.
>
> Необходимость устранения топологических петель в сети Ethernet следует из того, что их наличие в реальной сети Ethernet с коммутатором с высокой вероятностью приводит к бесконечным повторам передачи одних и тех же кадров Ethernet одним и более коммутатором, отчего пропускная способность сети оказывается почти полностью занятой этими бесполезными повторами; в этих условиях, хотя формально сеть может продолжать работать, на практике её производительность становится настолько низкой, что может выглядеть как полный отказ сети.
>
> STP относится ко второму уровню модели OSI. Протокол описан в стандарте IEEE 802.1d
#### Атака на дерево STP
Атака осуществляется каким образом? Мы подменяем (вклиниваемся) в маршрут, таким образом, чтобы маршрут проходил через нас (подменное устройство), устанавливая себе высокий приоритет. Данную технологию мы разберем чуть чуть позже.

> **Протокол ARP (Address Resolution Protocol)** - протокол разрешения адресов (Address Resolution Protocol) является протоколом третьего (сетевого) уровня модели OSI, используется для преобразования IP-адресов в MAC-адреса, играет важную функцию в множественном доступе сетей. В сети Ethernet для идентификации источника и получателя информации используются IP и MAC адреса. Информация, пересылаемая от одного компьютера другому по сети, содержит в себе физический адрес отправителя, IP-адрес отправителя, физический адрес получателя и IP-адрес получателя. ARP-протокол обеспечивает связь между этими двумя адресами, поскольку эти два адреса никак друг с другом не связаны.
Для фильтрации по конкретному протоколу указывается его название, например:
> icmp

Неточное вхождение
> contains
Показать **TCP** пакеты, содержащие строку **HackerU**:
>
> `tcp contains HackerU`
Операторы:
| Операнд | | Описание |
| -------- | -------- | -------- |
| `==` | `eq` | Равно |
| `!=` | `ne` | Не равно |
| `<` | `lt` | Меньше чем |
| `<=` | `ls` | Меньше или равно |
| `>` | `gt` | Больше чем |
| `>=` | `ge` | Больше или равно |
| Как можно видеть, имеется по два варианта написания, например, если мы хотим указать, что значение фильтра равно чему-либо, то мы можем использовать == или eq. | | |
Из фильтров можно строить сложные конструкции с применением **логических операндов**:
| Операнд | | Описание |
| -------- | -------- | -------- |
| `==` | `eq` | Логическое И |
| `\|\|` | `or` | Логическое ИЛИ |
| `!=` | `not` | Логическое НЕ |
Попытаясь найти скачанную картинку, нам необходимо понять следующее - по какому протоколу мы общялись с Яндексом? Ответ - HTTPS, но без ключа у нас не получится собрать исходную картинку. Но мы все равно попробует обнаружить пакеты с картинкой, написав данный фильтр `ip.dst == 192.168.78.101 && !openvpn && tcp`, где ip.dst (адрес назначения пакета) 192.168.78.101 - адрес нашей машины.
После написанного фильтра, можем отфильтроваться, если потребуется, например, по протоколу или длине пакета и так далее.

Если бы у нас был ключ, то мы могли бы его подцепить к WireShark и отображение пакетов происходило бы уже в расшифрованном виде.
## Файл с заданием
Подгружаем в WireShark файл для задания.
В поле фильтров вводим http и рассмотрим пакет, в котором запрашивался файл *robots.txt*

HTTP запрос получения данного файла:

HTTP ответ на запрос получения файла:

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

## Иерархия протоколов
WireShark предоставляет возможность происматривать иерархию протоколов. Для начала необходимо сбросить установленные фильтры.
`Statistics -> Protocol Hierarchy`

## Работа на виртуальной машине (Kali)
Для проверки, какие пакеты пересылаются, воспользуемся виртуальной машиной на базе Kali Linux. Запустим на Kali WireShark и начнем "слушать" трафик.

Через терминал Linux начнем пинговать самих себя следующей командой
> ping 192.168.67.128
В результате увидим, что генерируется трафик от команды **ping**. Как уже научились ранее, каждый принятый и отосланный пакет мы можем просмотреть в деталях, и также запустить ICMP стрим.
