**NTA (Network Traffic Analysis) - Анализ сетевого трафика** включает в себя: 1. **Collecting traffic** - сбор трафика в режиме real time 2. **Setting a baseline for day-to-day network communications** - Установка базового уровня для повседневной сетевой связи. 3. **Identifying and analyzing** - идентификация и анализ трафика на нестандартных портах, подозрительных хостах и различных проблем с протоколами. 4. **Detecting** - распознавание вирусов в сети, таких как программы-вымогатели, эксплойты и не стандартные события. | Инструмент | Описание | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **tcpdump** | утилита командной строки, которая спомощью LibPcap захватывает и интерпретирует сетевой трафик из сетевого интерфейса или файла захвата | | **Tshark** | Анализатор, похожий на tcpdump, захватывает пакеты из действующей сети или читает и декодирует файлы. Wireshark только в консоли | | **Wireshark** | Графический анализатор сетевого трафика. Захватывает и декодирует кадры по сети и позволяет глубже изучить окружающую среду. Может запускать множество различных анализаторов трафика, что бы охарактеризовать протоколы и приложения и получить представление о том, что происходит | | **NGrep** | как grep только для сети, работает pcap файлами | | **tcpick** | анализатор пакетов в командной строке, специализируется на отслеживании и повторной сборке TCP потоков. | | **Network Teps** | Тапы - устройства, способные снимать копию трафика и отправлять в другое место для анализа. Могут быть линейными и внеполосными. Могут активно перехватывать и анализировать трафик напрямую или пассивно, возвращая исходный пакет обратно в сеть, будто ничего не происходило | | **Networking Span Ports** | Способ копирования кадров с сетевых устройств второго или третьего уровня во вреся исходящей или входящей обработки и отправки их в точку сбора. | | **Elastic Stack** | кульминация инструментов, которые могут получать данные из многих источников, принимать их и визуализировать, что бы обеспечить их посик и анализ | | **SIEMS** | являются центральной точкой анализа и визуализации данных | # Процесс анализа трафика ![[Pasted image 20250105162015.png]] 1. **Получение трафика** 2. **Удаление шума с помощью фильтрации** - фильтрация трафика от ненужной нам информации 3. **Анализ и исследование трафика** - Осмотр отфильтрованного трафика, проверка на наличие подозрительных хостов, подключений к редкоиспользуемым портам и проверка флагов в заголовке TCP. 4. **Обнаружение и оповещение** 5. **Исправление и мониторинг трафика** Пятый пункт фактически начинает процесс с самого начала, т.е. сам по себе процес всегда зациклен и должен выполнятся. # OSI\TCP-IP ![[Pasted image 20250105164935.png]] ![[Pasted image 20250105165103.png]] ![[Pasted image 20250105165110.png]] **MAC Address** - 48 битный, 6 байтный адрес, представленный в шестнадцатиричном формате. Используется на 2 уровне OSI или на 1 уровне TCP-IP, обеспечивая связь между хостами. Каждая сетевая карта имеет уникальный, встроенный MAC адрес, прошитый с ней при изготовлении. ![[Pasted image 20250105165916.png]] **octet** - В сетевой терминологии октет (octet) обозначает последовательность из 8 битов. С помощью октетов определяют данные, передаваемые в сети. Например, в виде байтов (1 байт = 1 октет). В этом случае октеты могут представлять символы, числа или другую информацию, передаваемую через сетевое соединение. ***IP address*** - (Internet protocol address) уникальный числовой идентификатор устройства в сети интернет, отвечает за маршрутизацию пакетов. **IPv4** - самый распространненный вид ip адреса, состоит из 4 байтов (32битное число), записывается в десятичной системе исчисления в виде четырех чисел, от 0 до 255, разделенных точкамим, например **192.168.0.1** # IPv6 **IPv6** - состоит из 16 байтов (128 битов), записывается в виде восьми четырехзначных шестнадцатеричных чисел, разделенных двоеточием, например **`2001:0db8:85a3:0000:0000:8a2e:0370:7334`**. В данном случае "пропуски" относятся к сокращению записи **IPv6-адресов**. IPv6-адреса состоят из восьми групп по четыре шестнадцатеричных цифры (каждая группа разделена двоеточием). Если одна или несколько групп состоят из нулей, их можно **опустить**, чтобы сократить запись. ### Что значит опускание нулей? 1. **Ведущие нули в группе можно не указывать.** Например: Группа `00ab` может быть записана как `ab`. 2. **Последовательность групп, содержащих только нули, можно заменить двойным двоеточием (`::`).** Например: Адрес `fe80:0:0:0:0:0:0:1` содержит 6 групп из нулей подряд. Эти нулевые группы можно заменить двойным двоеточием: **`fe80::1`**. 3. **Двойное двоеточие можно использовать только один раз в адресе.** Это ограничение существует для того, чтобы однозначно восстановить полный адрес. Если использовать `::` дважды, было бы непонятно, сколько групп нулей пропущено в каждом месте. ### Пример объяснения сокращения Рассмотрим адрес: `2001:0db8:0000:0000:0000:ff00:0042:8329` 1. Уберем ведущие нули в каждой группе: **`2001:db8:0:0:0:ff00:42:8329`** 2. Заменим подряд идущие группы из нулей двойным двоеточием: **`2001:db8::ff00:42:8329`** Если вы встретите адрес с двойным двоеточием, например, `2001:db8::1`, это означает, что пропущенные группы заполнены нулями: **`2001:0db8:0000:0000:0000:0000:0000:0001`**. ### Тип адресации IPv6 | Тип | Описание | | --------- | ----------------------------------------------------------------------- | | Unicast | Адрема для одного интерфейса | | Anycast | Адреса для нескольких интерфейсов, где только один получает пакеты | | Multicast | Адреса для нескольких интерфейсов, где они получают один и тот же пакет | | Broadcast | Не существует и реализуется с помощью Multicast | ## TCP трехстороннее рукопожатие Основные флаги TCP: 1. **SYN** - синхронизация 2. **ACK** - подтверждение ### Что происходит когда клиент запрашивает связь с сервером по TCP? 1. Клиент оправляет пакет с флагом **SYN** и другими согласованными параметрами в заголовке TCP 1. Это пакет синхронизации. Он будет установлен только в первом пакете от хоста и сервера и позволяет установить сеанс, позволяя с обоих концов согласовать порядковый номер для начала связи 2. Это играет решающую роль в отслеживании пакетов. Наряду с синхронизацией порядкового номера, на этом этапе согласуются многие другие параметры. 2. Сервет отвечает TCP пакетом, внутри которого установлен **SYN** флаг для согласования порядкового номера и флаг **ACK** для подтверждения предыдущего пакета **SYN**, отправленного клиентом. 1. Сервер так же включит любые изменения в параметры TCP, которые ему необходимо установить в полях заголовка. 3. Клиент ответит TCP пакетом, включающим в себя **ACK** для подтверждения согласия на согласование. Этот пакет завершает трехстороннее рукопожатие (three-way handshake) и устанавливает соединение между клиентом и сервером. ![[Pasted image 20250105183609.png]] Если посмотреть на красный квадрат, то мы увидим пример трехстороннего рукопожатия. Сначала клиент отправляет **SYN** флаг серверу, на что сервер отвечает **SYN** для согласования порядкового номера и **ACK** для подтверждения предыдущего **SYN**. После чего идет последний пакет **ACK** от клиента, который завершает рукопожатия и устанавливает соединение. Зеленым подчеркнуты 2 числа - одно из них это случайный номер "старшего" порта (клиенского порта, назначенного из диапазона динамических портов (**49152–65535**) операционной системой ) и "младшего" порта (порта на стороне сервера, на котором сервер принимает входящие подключения. Обычно это порт из диапазона **0–1023** ). В данном случае порт **80** это младший порт, стандартный порт для HTTP соединения, а **57678** - старший порт со стороны клиента. ### Окончание соединения TCP ![[Pasted image 20250105185359.png]] Флаг **FIN** используется для обозначения необходимости разрыва соединения, и отправитель запрашивает завершение соединения. Клиент подтверждает получение данных и отправляет **FIN** и **ACK** что бы завершить сессию. Сервер подтверждает получение **FIN** от клиента и отправляет **FIN ACK**. В итоге, клиент подтверждает закрытие сессии и закрывает соединение. Всегда перед закрытием соединения мы увидим такую комбинацию: 1. **`FIN, ACK`** 2. **`FIN, ACK`**, 3. **`ACK`** # FTP **FTP** - file transfer protocol. Протокол позволяет быстро передавать данные между вычислительными устройствами. **Признан небезопасным и браузеры не поддерживают с 2020 года***. Использует **20 порт** для передачи данных и **21 порт** для получения данных. Может работать в 2х режимах: **active** (по умолчанию) и **passive**. **Active** в этом типе FTP клиент инициирует установление соединения с FTP-сервером, после чего сервер открывает новый порт для передачи данных, которые клиент должен принять. По умолчанию сервер использует порт 20 для передачи данных, а клиент использует порт 21 для установления соединения. Проблема этого типа FTP заключается в том, что многие сети блокируют входящие соединения на порту 20. **Passive** - в этом типе FTP клиент инициирует установление соединения с FTP-сервером, после чего сервер отвечает клиенту со своим IP-адресом и номером порта, который клиент может использовать для передачи данных. Этот тип FTP широко используется в Интернете, так как клиентам не нужно открывать новые порты для передачи данных, что делает его более безопасным и надежным. #### FTP Commands | Команда | Описание | | ------- | ---------------------------------------------------------------------- | | ftp | запускает программу FTP-клиента в командной строке | | open | устанавливает соединение с FTP-сервером | | user | вводит имя пользователя для аутентификации на FTP-сервере | | pass | вводит пароль для аутентификации на FTP-сервере | | cd | изменяет текущую директорию на FTP-сервере | | lcd | изменяет текущую директорию на локальном компьютере | | ls | показывает содержимое текущей директории на FTP-сервере | | dir | показывает содержимое текущей директории на FTP-сервере в виде таблицы | | get | скачивает файл с FTP-сервера на локальный компьютер | | mget | скачивает несколько файлов с FTP-сервера на локальный компьютер | | put | загружает файл с локального компьютера на FTP-сервер | | mput | загружает несколько файлов с локального компьютера на FTP-сервер | | delete | удаляет файл на FTP-сервере | | mdelete | удаляет несколько файлов на FTP-сервере | | quit | закрывает соединение с FTP-сервером и выходит из программы FTP-клиента | # SMB **SMB** - Server Message Block - протокол удалённого доступа, позволяющий совместно использовать ресурсы хостов. Требует аутентификации пользователя что бы гарантировать что у пользователя есть права на использование этого ресурса и выполнения действий. | Название механизма | порты | | ------------------ | ----------- | | NetBios | UDP 137/138 | | TCP | TCP 445 | | NetBios | TCP 139 | ## Анализ трафика **Анализ тарфика** - детальное исследование события или процесса, определение его происхождения и влияния, принятие конкретных мер предосторожности и действий для предотвращения угроз. Касаемо сетевого трафика - обработка полученного дампа, устранение шума, проверка на наличие подозрительных моментов. | **Dependencies** | **Passive** | **Active** | **Description** | | ----------------------------------------- | ----------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Permission` | `☑` | `☑` | В зависимости от организации, в которой мы работаем, сбор данных может противоречить политике или даже закону в некоторых чувствительных областях, таких как здравоохранение или банковское дело. Обязательно всегда получайте разрешение в письменной форме от лица, обладающего соответствующими полномочиями, чтобы предоставить вам его. Мы можем называть себя хакерами, но мы хотим оставаться в свете с юридической и этической точки зрения. | | `Mirrored Port` | `☑` | ☐ | Сетевой интерфейс коммутатора или маршрутизатора, настроенный для копирования данных из других источников в этот конкретный интерфейс, а также возможность перевода вашего сетевого адаптера в неразборчивый режим. Копирование пакетов на наш порт позволяет нам проверять любой трафик, предназначенный для других каналов, который мы обычно не можем видеть. Поскольку VLAN и порты коммутатора не будут пересылать трафик за пределы своего широковещательного домена, нам необходимо подключиться к сегменту или скопировать этот трафик на наш конкретный порт. Когда речь идет о беспроводной связи, пассивная технология может быть немного сложнее. Мы должны быть подключены к SSID, от которого мы хотим захватывать трафик. Простое пассивное прослушивание радиоволн вокруг нас предоставит нам множество рекламных объявлений SSID, но не более того. | | `Capture Tool` | `☑` | `☑` | Способ поглощения трафика. Достаточно компьютера с доступом к таким инструментам, как TCPDump, Wireshark, Netminer или другим. Имейте в виду, что при работе с данными PCAP эти файлы могут быстро стать очень большими. Каждый раз, когда мы применяем к нему фильтр в таких инструментах, как Wireshark, приложение снова анализирует эти данные. Это может быть ресурсоемкий процесс, поэтому убедитесь, что на хосте достаточно ресурсов. | | `In-line Placement` | ☐ | `☑` | Установка Tap в линию требует изменения топологии сети, в которой вы работаете. Хосты источника и назначения не заметят разницы в трафике, но ради маршрутизации и коммутации это будет невидимый следующий переход трафика. проходит по пути к месту назначения. | | `Network Tap or Host With Multiple NIC's` | ☐ | `☑` | Компьютер с двумя сетевыми адаптерами или такое устройство, как сетевой перехватчик, необходим для обеспечения бесперебойной передачи данных, которые мы проверяем. Думайте об этом как о добавлении еще одного маршрутизатора в середину канала. Для активного захвата трафика мы будем дублировать данные непосредственно из источников. Лучшее место для ответвления — на третьем уровне связи между коммутируемыми сегментами. Это позволяет захватывать любую маршрутизацию трафика за пределами локальной сети. Коммутируемый порт или сегментация VLAN не отфильтровывают наше мнение здесь. | | `Storage and Processing Power` | `☑` | `☑` | Вам понадобится много места для хранения и вычислительная мощность для захвата трафика. Гораздо больше трафика проходит по каналу третьего уровня, чем только внутри коммутируемой локальной сети. Подумайте об этом так; Когда мы пассивно захватываем трафик внутри локальной сети, это похоже на наливание воды в чашку из фонтана. Это постоянный поток, но управляемый. Активный захват трафика по маршрутизируемому каналу больше похож на использование шланга для наполнения чашки воды. За потоком стоит гораздо большее давление, и хосту может потребоваться большая обработка и хранение. | # TCPdump Базовые команды | Команда | Результат | | ------- | ---------------------------- | | -D | Покажет доступные интерфейсы |