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, выбрать какой адаптер будет анализироваться и нажать "Старт". После будут отражены все пакеты и интерфейсы, по которым осуществляется передача. Пример пакетов приведен ниже: ![](https://i.imgur.com/7iqt0AA.jpg) По протоколу UDP общаются чаще всего стриминговые сервисы, поскольку данный протокол сильно быстрее, он без подтверждения. Например, если пропадут несколько пакетов, то для видео/стрима это сильно не ударит. Для примера генерации трафика зайдем в Яндекс.Картинки, выберем любое изображение и скачаем его. После остановим прослушивание трафика и сохраним полученные данные в формате **.pcapng**: ![](https://i.imgur.com/5ACR6Wv.jpg) С тем учетом, что был открыт ZOOM и велась конференция, нам удалось наловить трафика на 97 МБ. Характеристики dump-файла: ![](https://i.imgur.com/aM8CbNZ.png) Разберем, что нам удалось поймать WireShark'ом. Откроем сохраненный файл в программе. Давайте посмотрим, что у нас здесь есть. ### Фильтры Для того, чтобы отфильтровать данные необходимо в строке над пакетами указать интересующий интерфейс. В нашем случае все кроме OpenVPN. На скриншоте ниже видно данные которые получает телевизор, находящийся в квартире. ![](https://i.imgur.com/4k43C1I.png) Чтобы отследить интересующий пакет данных: ``` ПКМ на пакет - Follow - UDP Stream ``` ![](https://i.imgur.com/j0NmaFR.png) После проделанных действий применяется фильтр `udp.stream eq 1` и в отдельном окне (справа) отображается весь стрим связанный с этим пакетом. Внизу окна возможно отфильтроваться по входящим / исходящим данным. ![](https://i.imgur.com/gdqFkXg.png) При необходимости можно изменить кодировку на любую из представленных. Рассмотрим кодировку YAML. По стилю выделенное сообщение похоже на BASE64, по последним двум символам. При желании, то возможно декодировать это сообщение и увидеть что пересылается. Теперь отфильтруемся по следующему правилу `!openvpn and !udp` (не openvpn и не udp), таким образом выведуться все данные не содержащие openvpn и udp протоколы. После чего мы увидим, некоторое количество пакетов, переданных по протоколу STP и ARP: ![](https://i.imgur.com/d7B2WmB.png) > **Протокол STP (Spanning Tree Protocol)** — канальный протокол. Основной задачей STP является устранение петель в топологии произвольной сети Ethernet, в которой есть один или более сетевых мостов, связанных избыточными соединениями. STP решает эту задачу, автоматически блокируя соединения, которые в данный момент для полной связности коммутаторов являются избыточными. > > Необходимость устранения топологических петель в сети Ethernet следует из того, что их наличие в реальной сети Ethernet с коммутатором с высокой вероятностью приводит к бесконечным повторам передачи одних и тех же кадров Ethernet одним и более коммутатором, отчего пропускная способность сети оказывается почти полностью занятой этими бесполезными повторами; в этих условиях, хотя формально сеть может продолжать работать, на практике её производительность становится настолько низкой, что может выглядеть как полный отказ сети. > > STP относится ко второму уровню модели OSI. Протокол описан в стандарте IEEE 802.1d #### Атака на дерево STP Атака осуществляется каким образом? Мы подменяем (вклиниваемся) в маршрут, таким образом, чтобы маршрут проходил через нас (подменное устройство), устанавливая себе высокий приоритет. Данную технологию мы разберем чуть чуть позже. ![](https://i.imgur.com/9NxecZu.png) > **Протокол ARP (Address Resolution Protocol)** - протокол разрешения адресов (Address Resolution Protocol) является протоколом третьего (сетевого) уровня модели OSI, используется для преобразования IP-адресов в MAC-адреса, играет важную функцию в множественном доступе сетей. В сети Ethernet для идентификации источника и получателя информации используются IP и MAC адреса. Информация, пересылаемая от одного компьютера другому по сети, содержит в себе физический адрес отправителя, IP-адрес отправителя, физический адрес получателя и IP-адрес получателя. ARP-протокол обеспечивает связь между этими двумя адресами, поскольку эти два адреса никак друг с другом не связаны. Для фильтрации по конкретному протоколу указывается его название, например: > icmp ![](https://i.imgur.com/9Nn8Upo.png) Неточное вхождение > 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 - адрес нашей машины. После написанного фильтра, можем отфильтроваться, если потребуется, например, по протоколу или длине пакета и так далее. ![](https://i.imgur.com/WKFiDMg.png) Если бы у нас был ключ, то мы могли бы его подцепить к WireShark и отображение пакетов происходило бы уже в расшифрованном виде. ## Файл с заданием Подгружаем в WireShark файл для задания. В поле фильтров вводим http и рассмотрим пакет, в котором запрашивался файл *robots.txt* ![](https://i.imgur.com/uCdBx8H.png) HTTP запрос получения данного файла: ![](https://i.imgur.com/eCDC1XQ.png) HTTP ответ на запрос получения файла: ![](https://i.imgur.com/4ZBOCUv.png) Просмотр HTTP стрима (результата). В верхней части данного окна отображен GET запрос, который можно использовать в своих каких-то целях. ![](https://i.imgur.com/aJOcZ9H.png) ## Иерархия протоколов WireShark предоставляет возможность происматривать иерархию протоколов. Для начала необходимо сбросить установленные фильтры. `Statistics -> Protocol Hierarchy` ![](https://i.imgur.com/j6WVzWY.png) ## Работа на виртуальной машине (Kali) Для проверки, какие пакеты пересылаются, воспользуемся виртуальной машиной на базе Kali Linux. Запустим на Kali WireShark и начнем "слушать" трафик. ![](https://i.imgur.com/h5Z27Zu.png) Через терминал Linux начнем пинговать самих себя следующей командой > ping 192.168.67.128 В результате увидим, что генерируется трафик от команды **ping**. Как уже научились ранее, каждый принятый и отосланный пакет мы можем просмотреть в деталях, и также запустить ICMP стрим. ![](https://i.imgur.com/hPE01Dy.png)