📌 Шпаргалка #19

Ч.1: TCP/IP, порты, протоколы

✍️ pentestudy 📅 30.03.2026

🌐 Что это

Полный гайд по сетевым основам, без которых пентест невозможен. Когда ты сканируешь цель через Nmap, эксплуатируешь сервис через Metasploit или анализируешь трафик — ты работаешь с этими протоколами. Понимание "как" данные ходят по сети — фундамент всего.

Аналогия: если пентест — это взлом замков, то сетевые основы — это понимание как устроены двери, стены и коридоры здания. Без этого ты просто тыкаешь отмычкой наугад.

📌 Модель OSI — 7 уровней сети

OSI (Open Systems Interconnection) — эталонная модель, которая разбивает сетевое взаимодействие на 7 уровней. Каждый уровень отвечает за свою задачу.

Аналогия: отправка письма. Ты пишешь текст (уровень 7), кладёшь в конверт (уровень 6), указываешь адрес (уровень 3), отдаёшь почтальону (уровень 2), тот несёт физически (уровень 1).

Уровни снизу вверх

Уровень 1 — Physical (Физический) Биты по проводу или радиоволнам. Кабели, Wi-Fi, оптоволокно. Ноли и единицы. Для пентестера: физический доступ к сети (подключение к порту коммутатора, Evil Twin Wi-Fi атака).

Уровень 2 — Data Link (Канальный) Фреймы между устройствами в одной сети. MAC-адреса. Протоколы: Ethernet, Wi-Fi (802.11), ARP. Для пентестера: ARP-спуфинг, MAC-флудинг, перехват трафика в локальной сети.

Уровень 3 — Network (Сетевой) Пакеты между разными сетями. IP-адреса. Маршрутизация. Протоколы: IP, ICMP. Для пентестера: сканирование подсетей, трассировка маршрутов, IP-спуфинг.

Уровень 4 — Transport (Транспортный) Доставка данных между приложениями. Порты. Протоколы: TCP, UDP. Для пентестера: сканирование портов (Nmap), SYN-флуд, определение сервисов.

Уровень 5 — Session (Сеансовый) Управление сессиями. Установка, поддержание и завершение соединений. Для пентестера: перехват сессий (session hijacking), повторное использование токенов.

Уровень 6 — Presentation (Представления) Кодирование, шифрование, сжатие данных. SSL/TLS работает здесь. Для пентестера: SSL-stripping, анализ сертификатов, обход шифрования.

Уровень 7 — Application (Прикладной) Протоколы приложений: HTTP, FTP, SSH, DNS, SMTP. Для пентестера: SQL injection, XSS, эксплуатация уязвимостей веб-приложений.

Мнемоника для запоминания (снизу вверх)

Please Do Not Throw Sausage Pizza Away — Physical, Data Link, Network, Transport, Session, Presentation, Application.

⚡ TCP/IP — реальная модель интернета

OSI — теоретическая модель. В реальности интернет работает на модели TCP/IP с 4 уровнями.

Соответствие моделей

  • Link (Канальный) = OSI уровни 1-2. Ethernet, Wi-Fi, ARP
  • Internet (Сетевой) = OSI уровень 3. IP, ICMP
  • Transport (Транспортный) = OSI уровень 4. TCP, UDP
  • Application (Прикладной) = OSI уровни 5-7. HTTP, SSH, DNS, FTP

🔍 IP-адрес — адрес устройства в сети

IPv4

Формат: ***.***.*.* — четыре октета (числа от 0 до 255), разделённые точками. Всего 32 бита.

Аналогия: почтовый адрес дома. Город — это сеть, улица — подсеть, номер дома — конкретное устройство.

Частные (приватные) IP-адреса

Эти диапазоны зарезервированы для локальных сетей и не маршрутизируются в интернете:

  • 10.0.0.0 — 10.255.255.255 (10.0.0.0/8) — крупные корпоративные сети
  • 172.16.0.0 — 172.31.255.255 (172.16.0.0/12) — средние сети
  • 192.168.0.0 — 192.168.255.255 (192.168.0.0/16) — домашние сети

Твоя лаба: Kali ***.***.*.* и Metasploitable ***.***.*.* — оба в приватной сети ..*.0/24.

Публичные IP-адреса

Всё остальное — адреса, видимые в интернете. Твой *** VPS: **.**.**.*** — это публичный IP.

Специальные адреса

  • 127.0.0.1 — localhost, обращение к самому себе
  • 0.0.0.0 — "все интерфейсы" (при прослушивании)
  • 255.255.255.255 — широковещательный адрес
  • 169.254.x.x — APIPA, назначается автоматически когда DHCP не ответил

Маска подсети

Определяет, какая часть IP — адрес сети, а какая — адрес устройства.

***.***.*.0/24 — маска /24 означает, что первые 24 бита (3 октета) — это сеть, оставшиеся 8 бит — хосты. Значит в этой сети может быть до 254 устройств (от .1 до .254).

  • /8 — 16,777,214 хостов (10.0.0.0/8)
  • /16 — 65,534 хоста (172.16.0.0/16)
  • /24 — 254 хоста (..*.0/24) — самая типичная маска
  • /32 — 1 хост (конкретный IP)

Аналогия: /24 — это как сказать "дома на улице Ленина". Улица — это сеть, номер дома — хост. /16 — "все улицы в районе".

IPv6

Формат: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 — 128 бит, записывается в шестнадцатеричном формате через двоеточия. Создан потому что IPv4 адреса закончились (4.3 миллиарда — мало для всех устройств на планете).

Для пентестера IPv6 важен тем, что многие файрволы настроены только на IPv4 и пропускают IPv6-трафик.

⚡ TCP vs UDP — два транспортных протокола

TCP (Transmission Control Protocol) — надёжный

Устанавливает соединение перед передачей данных. Гарантирует доставку и порядок пакетов.

Трёхстороннее рукопожатие (Three-Way Handshake):

Клиент → Сервер: SYN        (хочу подключиться)
Сервер → Клиент: SYN-ACK    (ок, подтверждаю)
Клиент → Сервер: ACK         (принято, начинаем)

Аналогия: телефонный звонок. Ты звонишь (SYN), собеседник берёт трубку (SYN-ACK), ты говоришь "алло" (ACK) — соединение установлено.

Для пентестера:

  • SYN-скан Nmap (-sS) — отправляет SYN, но не завершает рукопожатие. Если пришёл SYN-ACK — порт открыт
  • SYN-флуд — DDoS-атака: отправляем тысячи SYN без ACK, сервер тратит ресурсы на ожидание

Протоколы на TCP: HTTP (80), HTTPS (443), SSH (22), FTP (21), SMTP (25), DNS (53 — зонные трансферы), MySQL (3306), PostgreSQL (5432), RDP (3389)

UDP (User Datagram Protocol) — быстрый

Без установки соединения. Просто отправляет данные — дошли или нет, неважно.

Аналогия: отправка SMS. Ты отправил — и не знаешь, прочитали или нет.

Для пентестера:

  • UDP-скан медленнее (-sU), потому что нет ответа "порт открыт" — только "порт закрыт" (ICMP unreachable)
  • DNS-амплификация — DDoS через открытые DNS-серверы
  • Memcached/SNMP — часто без аутентификации на UDP

Протоколы на UDP: DNS (53 — обычные запросы), DHCP (67/68), SNMP (161), TFTP (69), NTP (123), Syslog (514)

🔧 Порты — двери в систему

Порт — это число от 0 до 65535, идентифицирующее конкретный сервис на машине. IP-адрес указывает на машину, порт — на сервис.

Аналогия: IP — это адрес здания, порт — номер квартиры. HTTP живёт в квартире 80, SSH — в квартире 22.

Диапазоны портов

  • 0-1023 — Well-known (привилегированные). Стандартные сервисы. Требуют root для привязки
  • 1024-49151 — Registered. Зарегистрированные приложения
  • 49152-65535 — Dynamic/Private. Временные порты для клиентских соединений

Самые важные порты для пентестера

Удалённый доступ:

  • 22 — SSH. Основной способ управления Linux-серверами
  • 23 — Telnet. Как SSH, но без шифрования. Всё открытым текстом
  • 3389 — RDP (Remote Desktop). Удалённый рабочий стол Windows
  • 5900 — VNC. Ещё один протокол удалённого рабочего стола

Веб:

  • 80 — HTTP. Незашифрованный веб
  • 443 — HTTPS. Зашифрованный веб (TLS/SSL)
  • 8080 — Альтернативный HTTP. Часто прокси или тестовые серверы
  • 8443 — Альтернативный HTTPS

Почта:

  • 25 — SMTP. Отправка почты
  • 110 — POP3. Получение почты
  • 143 — IMAP. Получение почты (продвинутый)
  • 465/587 — SMTP с шифрованием
  • 993 — IMAP с шифрованием
  • 995 — POP3 с шифрованием

Файловые сервисы:

  • 21 — FTP. Передача файлов (без шифрования)
  • 69 — TFTP. Простая передача файлов (UDP)
  • 445 — SMB. Файловые шары Windows (EternalBlue!)
  • 139 — NetBIOS. Старый протокол Windows-сетей
  • 2049 — NFS. Сетевая файловая система Unix

Базы данных:

  • 3306 — MySQL/MariaDB
  • 5432 — PostgreSQL
  • 1433 — Microsoft SQL Server
  • 1521 — Oracle DB
  • 27017 — MongoDB
  • 6379 — Redis
  • 9200 — Elasticsearch

DNS и сеть:

  • 53 — DNS. Разрешение имён
  • 67/68 — DHCP. Автоматическое назначение IP
  • 161 — SNMP. Мониторинг сетевых устройств

Управление и мониторинг:

  • 9000/9443 — Portainer
  • 9090 — Prometheus
  • 9100 — Node Exporter
  • 3000 — Grafana
  • 10250 — Kubelet API
  • 2375 — Docker API (без TLS — мгновенный root!)

Состояния портов в Nmap

  • open — сервис слушает, принимает соединения
  • closed — порт доступен, но сервис не запущен
  • filtered — файрвол блокирует, Nmap не может определить состояние
  • open|filtered — Nmap не уверен (характерно для UDP-сканирования)

🔍 DNS — система доменных имён

Что это

DNS (Domain Name System) — переводит человеческие имена (google.com) в IP-адреса (142.250.74.78). Без DNS пришлось бы запоминать IP-адреса всех сайтов.

Аналогия: телефонная книга. Ты ищешь имя "Вася", а книга возвращает его номер телефона.

Как работает DNS-запрос

1. Ты вводишь google.com в браузере
2. Браузер спрашивает локальный DNS-резолвер (обычно у провайдера)
3. Резолвер спрашивает корневой DNS-сервер → "кто знает .com?"
4. Корневой отвечает: "спроси у TLD-сервера .com"
5. TLD-сервер .com отвечает: "google.com обслуживает ns1.google.com"
6. ns1.google.com отвечает: "google.com = 142.250.74.78"
7. Резолвер кэширует ответ и возвращает браузеру

Типы DNS-записей

  • A — имя → IPv4 адрес. google.com → 142.250.74.78
  • AAAA — имя → IPv6 адрес
  • CNAME — алиас, ссылка на другое имя. www.google.com → google.com
  • MX — почтовый сервер домена. google.com → smtp.google.com
  • NS — DNS-сервер, обслуживающий домен
  • TXT — текстовая запись (SPF, DKIM, верификация)
  • PTR — обратная запись: IP → имя (используется в reverse DNS)
  • SOA — Start of Authority, основная информация о зоне

DNS для пентестера

Разведка через DNS:

# Определить IP по домену
nslookup target.com
dig target.com
 
# Все записи домена
dig target.com ANY
 
# Почтовые серверы
dig target.com MX
 
# DNS-серверы
dig target.com NS
 
# Обратный поиск (IP → домен)
dig -x **.**.**.***
 
# Трансфер зоны (если разрешён — выдаст ВСЕ записи домена)
dig axfr target.com @ns1.target.com

Атаки через DNS:

  • Zone Transfer — если DNS-сервер неправильно настроен, можно получить полный список поддоменов и IP
  • DNS-спуфинг — подмена DNS-ответов, перенаправление на свой сервер
  • DNS-туннелирование — скрытие трафика внутри DNS-запросов для обхода файрволов
  • Subdomain enumeration — перебор поддоменов для нахождения скрытых сервисов

Файл /etc/hosts

Локальный DNS на машине. Проверяется до обращения к DNS-серверу.

cat /etc/hosts
# 127.0.0.1    localhost
# ***.***.*.*  metasploitable

Можно добавлять свои записи для лабы — вместо IP вводить имя.

Файл /etc/resolv.conf

Указывает какой DNS-сервер использовать:

cat /etc/resolv.conf
# nameserver 8.8.8.8        (Google DNS)
# nameserver 1.1.1.1        (Cloudflare DNS)

⚡ HTTP/HTTPS — протокол веба

Что это

HTTP (HyperText Transfer Protocol) — протокол, по которому браузер общается с веб-сервером. HTTPS — то же самое, но зашифрованное через TLS.

Структура HTTP-запроса

GET /index.html HTTP/1.1        ← метод, путь, версия
Host: www.target.com            ← домен
User-Agent: Mozilla/5.0...      ← кто мы
Cookie: session=abc123          ← куки сессии
Authorization: Basic base64...  ← аутентификация

HTTP-методы

  • GET — получить данные (открыть страницу)
  • POST — отправить данные (форма, логин)
  • PUT — обновить ресурс
  • DELETE — удалить ресурс
  • HEAD — как GET, но без тела ответа (только заголовки)
  • OPTIONS — узнать какие методы поддерживает сервер
  • PATCH — частичное обновление

Коды ответов HTTP

1xx — Информационные:

  • 100 Continue

2xx — Успех:

  • 200 OK — всё хорошо
  • 201 Created — ресурс создан
  • 204 No Content — успех, но тело пустое

3xx — Перенаправления:

  • 301 Moved Permanently — ресурс переехал навсегда
  • 302 Found — временное перенаправление
  • 307 Temporary Redirect — как 302, но метод сохраняется

4xx — Ошибка клиента:

  • 400 Bad Request — некорректный запрос
  • 401 Unauthorized — нужна аутентификация
  • 403 Forbidden — доступ запрещён (как IIS банка на Shodan)
  • 404 Not Found — ресурс не найден
  • 405 Method Not Allowed — метод запрещён
  • 429 Too Many Requests — rate limit

5xx — Ошибка сервера:

  • 500 Internal Server Error — сервер сломался
  • 502 Bad Gateway — upstream не ответил
  • 503 Service Unavailable — сервер перегружен

HTTP для пентестера

Заголовки, которые утекают информацию:

  • Server: Apache/2.4.41 — версия веб-сервера
  • X-Powered-By: PHP/7.4 — язык и версия
  • X-AspNet-Version: 4.0 — .NET версия

Это то, что ты видел на Shodan — серверы отдают версии в заголовках.

Куки и сессии:

  • Cookie session=abc123 — идентификатор сессии
  • Перехват cookie = перехват сессии пользователя
  • HttpOnly флаг — защищает cookie от JavaScript (XSS)
  • Secure флаг — cookie только по HTTPS

HTTPS (TLS/SSL):

  • Шифрует весь HTTP-трафик между браузером и сервером
  • Самоподписанный сертификат — не проверяется центром сертификации
  • Let's Encrypt — бесплатные валидные сертификаты

🛡 ARP — связь IP и MAC-адресов

Что это

ARP (Address Resolution Protocol) — переводит IP-адрес в MAC-адрес в локальной сети. Когда устройство хочет отправить пакет соседу по сети, ему нужен MAC-адрес получателя.

Компьютер A: "Кто ***.***.*.*? Скажите мне свой MAC!"  (ARP-запрос, broadcast)
Компьютер B: "Это я! Мой MAC — AA:BB:CC:DD:EE:FF"       (ARP-ответ, unicast)

ARP для пентестера

ARP-спуфинг (ARP Poisoning) — атакующий отвечает на ARP-запросы вместо настоящего устройства:

Жертва: "Кто роутер 192.168.1.1?"
Атакующий: "Это я! MAC = мой_MAC"

Теперь весь трафик жертвы идёт через атакующего → Man-in-the-Middle. Можно перехватывать пароли, модифицировать трафик.

Посмотреть ARP-таблицу:

arp -a
# или
ip neigh show

🔧 DHCP — автоматическое назначение IP

Что это

DHCP (Dynamic Host Configuration Protocol) — автоматически выдаёт устройствам IP-адреса, маску, шлюз и DNS-сервер при подключении к сети.

Процесс получения IP (DORA)

1. Discover — клиент: "Есть тут DHCP-сервер?" (broadcast)
2. Offer    — сервер: "Вот, возьми 192.168.1.100" (unicast)
3. Request  — клиент: "Беру 192.168.1.100" (broadcast)
4. Ack      — сервер: "Подтверждаю, IP твой на 24 часа" (unicast)

Мнемоника: Discover, Offer, Request, Ack = DORA.

DHCP для пентестера

DHCP Starvation — запрашиваем все доступные IP-адреса, исчерпывая пул. Новые устройства не могут подключиться к сети.

Rogue DHCP — поднимаем свой DHCP-сервер, который выдаёт клиентам наш IP как шлюз. Весь трафик идёт через нас → Man-in-the-Middle.

⚡ NAT — трансляция адресов

Что это

NAT (Network Address Translation) — позволяет нескольким устройствам с приватными IP выходить в интернет через один публичный IP.

Домашняя сеть:
192.168.1.10 (телефон)  ─┐
192.168.1.11 (ноутбук)  ─┤→ Роутер (NAT) → 85.140.x.x (публичный IP) → Интернет
192.168.1.12 (планшет)  ─┘

Аналогия: офис с одним номером телефона. Все сотрудники звонят через одну линию, но каждый разговор маршрутизируется по внутренним добавочным номерам.

NAT для пентестера

Из-за NAT твоя Kali в VirtualBox (...) не видна напрямую из интернета. Поэтому при reverse shell LHOST должен быть IP, доступный для цели — в лабе это IP Kali в локальной сети.

🔍 ICMP — диагностика сети

Что это

ICMP (Internet Control Message Protocol) — протокол для диагностических сообщений. Самый известный инструмент — ping.

ping ***.***.*.*
# PING ***.***.*.*: 64 bytes from ***.***.*.*: icmp_seq=1 ttl=64 time=0.5ms
  • TTL (Time To Live) — сколько маршрутизаторов может пройти пакет. TTL=64 обычно Linux, TTL=128 — Windows, TTL=255 — сетевое устройство
  • Traceroute — показывает путь пакета через маршрутизаторы
traceroute **.**.***.***
# Показывает каждый хоп (маршрутизатор) на пути к цели

ICMP для пентестера

# Ping sweep — найти живые хосты в сети
nmap -sn 192.168.1.0/24
 
# Traceroute через Nmap
nmap --traceroute ***.***.*.*
 
# Определение ОС по TTL (грубо):
# TTL ~64 → Linux/macOS
# TTL ~128 → Windows
# TTL ~255 → Cisco/сетевое устройство

Некоторые хосты блокируют ICMP (не отвечают на ping), но при этом сервисы работают. Поэтому Nmap использует не только ping для обнаружения хостов.

🛡 Важные сетевые концепции

MAC-адрес

Уникальный аппаратный адрес сетевого интерфейса. Формат: AA:BB:CC:DD:EE:FF (6 байт, 48 бит). Первые 3 байта — идентификатор производителя (OUI), последние 3 — уникальный номер устройства.

# Посмотреть свой MAC
ip link show
ifconfig

Широковещание (Broadcast)

Отправка пакета всем устройствам в сети одновременно. Broadcast-адрес для сети 192.168.1.0/24 = 192.168.1.255. ARP и DHCP Discover используют broadcast.

Шлюз по умолчанию (Default Gateway)

Маршрутизатор, через который устройство выходит за пределы своей сети. Обычно .1 в подсети (192.168.1.1). Все пакеты "наружу" отправляются на шлюз, а он решает куда их послать дальше.

# Посмотреть шлюз
ip route show
# default via 192.168.1.1 dev eth0

Инкапсуляция

Каждый уровень OSI оборачивает данные своим заголовком:

Данные приложения (HTTP запрос)
  → TCP добавляет свой заголовок (порты, seq numbers)
    → IP добавляет свой заголовок (IP адреса)
      → Ethernet добавляет свой заголовок (MAC адреса)
        → Биты по проводу

На принимающей стороне — обратный процесс: каждый уровень снимает свой заголовок.

🧠 Готовые комбо

Быстрая разведка сети:

ip a → узнать свой IP и подсеть → nmap -sn 192.168.1.0/24 → найти живые хосты → nmap -sV -p- TARGET → определить сервисы

DNS-разведка домена:

nslookup target.com → IP → dig target.com ANY → все записи → dig target.com MX → почтовые серверы → dig axfr target.com @ns1.target.com → зонный трансфер (если повезёт)

Определение ОС по признакам:

TTL ~64 в ping → Linux. TTL ~128 → Windows. Порт 445 открыт → Windows. Порт 22 → скорее Linux.
IIS в заголовке Server → точно Windows. Apache/Nginx → скорее Linux.

⚠️ Важные моменты

  • IP-адрес ≠ физическое расположение. VPN, прокси, облачные провайдеры — всё маскирует реальное местоположение
  • Порт ≠ уязвимость. Уязвим не порт, а софт, который на нём слушает. Открытый порт 22 с SSH-ключом — безопасен. Открытый порт 27017 с MongoDB без пароля — катастрофа
  • TCP-рукопожатие — основа SYN-скана. Понимание three-way handshake объясняет почему -sS в Nmap работает быстрее и тише, чем полное соединение
  • DNS — золотая жила для разведки. Зонный трансфер, перебор поддоменов, MX-записи — часто раскрывают внутреннюю инфраструктуру
  • ARP работает только в локальной сети. ARP-спуфинг невозможен через интернет — только когда ты в той же сети, что и жертва
  • NAT защищает случайно. Домашние устройства за NAT не видны из интернета, но это не замена файрволу
  • HTTP-заголовки утекают информацию. Server, X-Powered-By, версии — всё это ты видел на Shodan. Хороший админ их убирает
  • HTTPS не значит "безопасный сайт". HTTPS шифрует канал, но фишинговый сайт тоже может иметь HTTPS
Содержание
🌐 Что это 📌 Модель OSI — 7 уровней сети Уровни снизу вверх Мнемоника для запоминания (снизу вверх) ⚡ TCP/IP — реальная модель интернета Соответствие моделей 🔍 IP-адрес — адрес устройства в сети IPv4 Частные (приватные) IP-адреса Публичные IP-адреса Специальные адреса Маска подсети IPv6 ⚡ TCP vs UDP — два транспортных протокола TCP (Transmission Control Protocol) — надёжный UDP (User Datagram Protocol) — быстрый 🔧 Порты — двери в систему Диапазоны портов Самые важные порты для пентестера Состояния портов в Nmap 🔍 DNS — система доменных имён Что это Как работает DNS-запрос Типы DNS-записей DNS для пентестера Файл /etc/hosts Файл /etc/resolv.conf ⚡ HTTP/HTTPS — протокол веба Что это Структура HTTP-запроса HTTP-методы Коды ответов HTTP HTTP для пентестера 🛡 ARP — связь IP и MAC-адресов Что это ARP для пентестера 🔧 DHCP — автоматическое назначение IP Что это Процесс получения IP (DORA) DHCP для пентестера ⚡ NAT — трансляция адресов Что это NAT для пентестера 🔍 ICMP — диагностика сети Что это ICMP для пентестера 🛡 Важные сетевые концепции MAC-адрес Широковещание (Broadcast) Шлюз по умолчанию (Default Gateway) Инкапсуляция 🧠 Готовые комбо ⚠️ Важные моменты