Основы работы сетей для начинающего хакера. IP, DHCP, NAT, port. TCP/IP
Если ты хочешь стать хакером, пентестером или просто системным администратором, то понимать как работает сеть, это как выучить алфавит, чтоб научиться писать. Именно поэтому я решил сделать серию уроков на эту тему, и сегодня я постараюсь максимально просто и понятно объяснить базовые основы работы компьютерных сетей.
IP-address
Internet Protocol Address — уникальный сетевой адрес узла в компьютерной сети. По сути, чтоб тебе было понятней это твой домашний адрес. Каждому цифровому устройству (компьютеру, ноутбуку, телефону, планшету и т.д.) назначается IP-адрес, без этого адреса невозможно найти устройство и обратиться к нему.
Существует две системы ip адресов: IPv4 и IPv6 (IPv6 мы разберем в другом уроке, чтобы не распыляться) а сегодня IPv4.
В 4 версии IP адрес представляет собой 32-х битовое число, однако видим мы его в десятичном представлении, так банально удобней, а если быть точнее IP состоит из 4 групп по 8 битов каждая, разделенных точками, каждая группа может представлять числа в диапазоне от 0 до 255.
IP-адреса обычно делятся на три класса, каждому из которых соответствует свой диапазон:
- Класс А : 0.0.0.0 — 127.255.255.255
- Класс B : 128.0.0.0 — 191.255.255.255
- Класс C : 192.0.0.0 — 223.255.255.255
в одном из следующих уроков мы рассмотрим подсети и маски подсетей которые отличаются в зависимости от класса ip адреса
Публичные и частные IP-адреса
Система ip адресов имеет свои ограничения и самое основное из них связано с тем что адресов банально не хватает для всех устройств. Система IPv4, имеет только 4,3 миллиарда IP-адресов. А людей на планете более 7 миллиардов, а устройств еще больше и постоянно появляются новые. В результате, что бы решить эту проблему, была разработана система для повторного использования группы IP-адресов, которые будут использоваться в локальной сети, и которые нельзя будет использовать в сети Интернет. Эти адреса можно использовать снова и снова в каждой локальной сети.
Эти частные адреса включают в себя диапазоны ip-адресов:
192.168.0.0 — 192.168.255.255
10.0.0.0 — 10.255.255.255
172.16-.0.0 — 172.16.255.255
если ты наберешь в командной строке ipconfig (для linux это ifconfig) то сможешь узнать свой частный ip. При этом если тебе нужно узнать ip адрес сайта, т.е. доменного имени, нужно написать nslookup и адрес сайта
Для связи через Интернет его необходимо преобразовать в общедоступный IP-адрес с помощью устройства NAT, к этому мы ещё вернемся
DHCP
(англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла)
Отвечает за динамическое назначает IP-адреса. Это означает, что у тебя не один и тот же IP-адрес все время. Как правило эти назначения IP-адресов происходят в локальной сети. Когда устройство подключено к локальной сети, оно должно запросить IP-адрес. Это устройство отправляет запрос на сервер DHCP, который затем назначает IP-адрес этой системе на фиксированный период времени, это период времени называется «аренда».
NAT
(Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Что это означает?
Другими словами, это протокол, посредством которого внутренние частные IP-адреса «транслируются» на внешний общедоступный IP-адрес, который можно направить через Интернет к пункту назначения.
Устройство NAT принимает запросы с внутренней машины. Затем оно записывает IP-адрес этого устройства в таблицу и преобразует IP-адрес во внешний IP-адрес маршрутизатора. Когда пакет возвращается из пункта назначения, устройство NAT просматривает свою сохраненную таблицу исходных запросов и перенаправляет пакет на внутренний IP-адрес системы, которая сделала исходный запрос в локальной сети. При правильной работе пользователи не видят весь этот процесс, а многие и не знают что он вообще существует.
Порты
Порты это своего рода подадрес, если ip — это название улицы и номер дома, то порт — это номер квартиры.Точно также ip адрес приводит нас к нужному компьютеру, а порт к нужной службе.
Всего существует 65 535 портов. Первые 1024 из них обычно называют общие порты. Врядли ты сможешь запомнить их все, да и нет в этом особой необходимости, но толковый системный администратор (или хакер должен знать основные):
- 20 FTP
- 21 FTP
- 22 SSH
- 23 Telnet
- 25 SMTP
- 53 DNS
- 69 TFTP
- 80 HTTP
- 88 Kerberos
- 110 POP3
- 123 NTP
- 135 Microsoft’s RPC
- 137-139 Microsoft’s NetBIOS
- 143 IMAP
- 161 SNMP
- 389 LDAP
- 443 HTTPS or HTTP over SSL
- 445 SMB
- 500 IKE
- 514 syslog
- 3389 RDP
Теперь немного о применяемых терминах относительно портов:
Если процесс постоянно использует один номер порта, то такой порт называют «открытым», примером может быть если вэб-сервер использует 80 порт для приема-передачи данных, то соответственно 80 порт считается открытым
Если процесс получил номер порта у ОС («открыл порт») и «держит его открытым» для приёма и передачи данных, это называется «прослушивание» порта.
Ты ведь наверняка слышал или видел такое название как TCP/IP. Хочу заметить, что рассказать всё о TCP/IP в одном уроке невозможно физически, поэтому сегодня мы разберем основы, что это такое и как работает. Причем ты должен понимать, что именно эти знания лежат в основе искусства взлома, ну или теста на проникновение, называй как хочешь и именно эти знания дадут тебе возможность изучить и понять практически любую атаку, или придумать свою.
В интернете используется очень много разных протоколов, но наиболее распространенные это IP и TCP. Теперь, как я уже говорил, давай, рассмотрим их более подробно.
TCP — Transmission Control Protocol — это протокол управления передачей, а IP — межсетевой протокол, но прежде чем разбирать их, давай, для начала разберемся что такое вообще протокол. На самом деле всё просто, протокол — это всего навсего согласованный способ общения, как, допустим, английский язык в международном сообществе. Т.е. по сути, протокол определяет способ связи со всеми его правилами. А правила определяются RFC, это Request for Comments, что можно перевести как запрос на отзывы — это документ, который содержит технические спецификации и стандарты применяемые в интернете.
IP или интернет-протокол, он же межсетевой протокол — это протокол, который используется для определения IP-адреса источника и получателя пакета при прохождении через Интернет. Так как он часто используется в сочетании с другими протоколами, такими как TCP, поэтому мы и видим название TCP / IP.
Теперь давай посмотрим на header, т.е заголовок IP-пакета и разберемся, какая информация в нем содержится:
1 ряд
- version : определяет версию IP, v4 или v6.
- IHL : определяет длину заголовка.
- Type of Service (TOS) : определяет тип обслуживания этого пакета. К ним относятся минимизация задержки, максимизация пропускной способности, максимизация надежности и минимизация затрат.
- Total Length : определяет общую длину дейтаграммы IP (включая данные) или фрагмента. Его максимальное значение составляет 65 535.
2 ряд
- Identification : идентифицирует каждый пакет. Может иметь важное значение при повторной сборке фрагментированных пакетов.
- IP Flag: определяет, является ли пакет фрагментированным (M) или нет (D). Манипулирование этим полем может быть использовано для обхода межсетевых экранов.
- Fragment Offset : это поле используется, когда пакеты фрагментированы. Определяет, где пакеты должны быть повторно собраны.
3 ряд
- TTL : это «время жизни». Определяет, сколько прыжков до истечения срока действия пакета. Это зависит от операционной системы, что делает его полезным для определения ОС отправителя.
- Protocol : это поле определяет, какой протокол используется с IP. Чаще всего это 6 т.е. TCP, 1 это ICMP, 17 это UDP.
- Header checksum: это поле проверки ошибок, вычисляет контрольную сумму, чтобы определить целостность данных в заголовке.
4 и 5 ряд
- Source / Destination . Эти строки заголовка IP, пожалуй, наиболее важная часть заголовка, потому что они содержат IP-адрес источника и получателя.
6 ряд
- Options: Это поле переменной длины, и его использование не является обязательным
Теперь рассмотрим заголовок TCP пакета:
1 ряд
- Source Port / Destination Port : Это порт источника и порт назначения. Эти поля определяют, с какого порта пришло сообщение и куда оно идет.
Ряд 2
- Sequence Number: Порядковый номер, генерируется стеком TCP исходного компьютера и используется для обеспечения того, чтобы пакеты располагались в правильной последовательности при поступлении.
Ряд 3
- Acknowledgment Number : это эхо порядкового номера, отправленного обратно принимающей системой. Благодаря ему, отправитель знает, что пакет прибыл. Если отправитель не получает номер подтверждения обратно в фиксированный промежуток времени, он повторно отправит пакет, чтобы убедиться, что получатель получит пакет. Таким образом, TCP надежен (например, UDP не делает этого и поэтому ненадежен).
Ряд 4
- Data offset указывает значение длины заголовка, измеренное в 32-битовых словах
- CWR : Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтобы указать, что получен пакет с установленным флагом ECE
- ECE : Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети
Четвертый ряд содержит очень важную информацию, а именно флаги. Эти флаги используются TCP для связи;
- SYN : открытие нового соединения.
- FIN : нормальное, мягкое закрытие соединения.
- ACK : подтверждение пакета. У всех пакетов после трехстороннего рукопожатия должен быть установлен этот бит.
- RST : аппаратное закрытие соединения, которое обычно используется для сообщения о том, что пакет поступил не на тот порт или IP.
- URG : этот флаг указывает, что данные являются срочными.
- PSH : протолкнуть данные за буфер в приложение.
- Window Size : на некоторых диаграммах это просто описывается как поле окна . Его роль заключается в сообщении размера окна, которое стек TCP должен выполнять для буферизации пакетов. Именно так TCP управляет потоком. С точки зрения хакера, одного этого поля может быть достаточно для идентификации ОС, отправившей пакет.
Ряд 5
- Checksum : в этом поле используется простой алгоритм проверки на наличие ошибок. По сути, это проверка целостности.
- Urgent Pointer: в этом поле указывается последний байт порядкового номера срочных данных. Чтобы активировать это поле должен быть установлен флаг URG
Ряд 6
- Options: Как и заголовок IP, заголовок TCP имеет поле параметров, которое можно использовать при необходимости, и его длина варьируется.
- Padding: заполнение необходимо, чтобы заголовок TCP был кратным 32 битам.