This commit is contained in:
2026-07-30 11:35:10 +05:00
commit 8a3ec978ad
113 changed files with 3384 additions and 0 deletions
+148
View File
@@ -0,0 +1,148 @@
**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**) операционной системой ) и "младшего" порта (порта на стороне сервера, на котором сервер принимает входящие подключения. Обычно это порт из диапазона **01023** ). В данном случае порт **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 | Покажет доступные интерфейсы |