Ч.1: TCP/IP, порты, протоколы
🌐 Что это
Полный гайд по сетевым основам, без которых пентест невозможен. Когда ты сканируешь цель через 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