11 октября 2014

ИнфоБез. Введение в сети

Я знаю отличную шутку про UDP, но не факт, что она до вас дойдет.

Сети окружают нас везде. Телефоны, компьютеры, даже телевизоры, холодильники и одежда - всё сейчас имеет доступ в локальную или глобальную сеть. Если предельно упростить ситуацию, то сети используются для передачи данных между всеми устройствами, к ней подключенными. Очень часто взломы происходят именно через сеть, поэтому этот предмет изложения является первоочередным.
Компьютерная сеть (вычислительная сеть, сеть передачи данных) — система связи компьютеров или вычислительного оборудования (серверы, маршрутизаторы и другое оборудование). Для передачи данных могут быть использованы различные физические явления, как правило — различные виды электрических сигналов, световых сигналов или электромагнитного излучения.
Что такое компьютерная сеть я думаю все знают. Любые два компьютера, соединенные между собой для передачи данных уже являются сетью. Фактически сеть состоит из "промежуточных узлов", таких как роутеры, мосты, свичи, хабы, а также из "конечных узлов" - компьютеры, принтеры, оборудование, телефоны и т. д. Сети бывают различных топологий, размеров, составов, но фундаментальные принципы работы у них схожи: кто-то передает данные, кто-то их получает.

Но как происходит передача? На что похожи данные в момент передачи?
Для ответа на эти вопросы следует понять структуру сетевого обмена.

Рассмотрим модель OSI:


Всего существует 7 уровней. Каждый из них определяет свои возможности, протоколы, форму представления данных и функции.

  1. Физический уровень
Когда компьютер хочет передать данные, то они в виде сигналов передаются через какую-то среду-носитель. Это и есть физический уровень. То есть когда мы повышаем и понижаем напряжение на проводе, подключенном к Ethernet порту - мы передаем данные. Или например посылаем радиосигнал в эфир с помощью встроенной антенны WiFi модуля. На физическом уровне специфицируются носители, но не сама среда. Среда, согласно эталонной модели, рассматривается как нечто, лежащее ниже физического уровня. Битовый поток в носителе должен быть независим от среды. Также на этом уровне описываются принципы кодирования сигнала (уровни напряжения, спад/фронт импульса, тактовые сигналы и прочее).
Единица измерения: бит.
Пример оборудования: повторители сигналов и концентраторы.

  1. Канальный уровень
Если несколько компьютеров соединены посредством физического уровня в одну локальную сеть, то передача между ними будет происходить на канальном уровне. На этом уровне происходит адресация по MAC адресу, также именно на этом уровне обозначается, что та или иная последовательность сигналов является фреймом (кадром). Также может использоваться для обнаружения и, возможно, исправления ошибок, возникших на физическом уровне.
Единица измерения: фрейм.
Пример протоколов: Ethernet и PPP.
Пример оборудования: коммутаторы, мосты.

  1. Сетевой уровень
Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. Используются две модели: с установкой соединения и без установки соединения. Для логической адресации преимущественно используется IP протокол.
Единица измерения: пакет.
Пример протоколов: IP, ARP, ICMP.
Пример оборудования: маршрутизатор.

  1. Транспортный уровень
Здесь предоставляется интерфейс для передачи данных таким образом, что не нужно задумываться ни о чем. Просто протокол сам решает как передать те или иные указанные данные. Протоколы разбивают данные на сегменты и указывают что обмен идет в пределах одной операции передачи/приема данных.
Единица измерения: сегмент.
Пример протоколов: TCP, UDP.

  1. Сеансовый уровень
Показывает что набор событий отправки/получения данных является частью одного сеанса связи. Уровень предназначен для установления, поддержания и завершения соединения между приложениями участников соединения. В задачи пятого уровня входит периодическая проверка соединения, восстановление соединения в случае его разрушения, либо рестарт, если восстановление не возможно. Бывают 3 вида соединения: симплексное (одна сторона только говорит, другая только слушает), полудуплексное (стороны говорят и слушают попеременно), полнодуплексное (стороны говорят и слушают одновременно).
Единица измерения: сеанс.
Пример протоколов: NetBIOS, RPC, SMPP.

  1. Представления уровень
Предназначен для шифровки/дешифровки и сжатия/распаковки данных в форматы необходимые для хранения/передачи. Также на этом уровне происходит обращение к другому сетевому ресурсу для обработки данных. На транспортном уровне предоставляли возможность "забыть" о проблемах пересылки некоторого объема данных, на сеансовом уровне - "забыть" о проблемах соотношении данных с соединением. Этот уровень позволяет "не беспокоится" о том, чтобы различные системы восприняли данные в правильной форме (не изменили своего значения в зависимости от архитектуры).
Пример протоколов: ASCII, MIME.

  1. Прикладной уровень
Предоставляет интерфейс для приложений, которые должны передавать данные. Реализация этого уровня зависит от приложения, и служит для того, чтобы передавать непосредственно пользовательские данные в "понятной" форме другому узлу.
Пример протоколов: HTTP, FPT, SMTP, SSH, TELNET.


Наглядный пример работы модели OSI

Пусть нам необходимо передать некоторую HTML страничку с одной машины на другую.
Страница будет преобразована в HTTP сообщение, которое в свою очередь будет зашифровано и некоторое количество раз инкапсулировано. При каждом уровне вложения к данным обычно добавляется служебная информация, которая необходима для обработки сообщения (маршрутизация/дешифровка/распаковка/преобразование/адресация). Когда сообщение поступит на целевой компьютер, то все этапы пройдут в обратном порядке: каждый уровень будет считывать свою служебную информацию и в соответствии с ней обрабатывать данные. В конце концов компьютер-приемник получит HTML страницу, которую ему передали.

На рисунке ниже изображена примерная схема инкапсуляции (вложения) данных при передаче от 7 уровня OSI к 1 уровню. Самые важные части заголовков, таки как адреса указаны на схеме, остальные же элементы опущены, чтобы не загромождать изображение ненужными деталями.

Следует также отметить, что чем выше уровень в модели OSI, тем легче управлять "чистыми" данными, а следовательно легче их перехватить/подменить/удалить/создать. Чем ниже уровень, тем сложнее вычленить полезную нагрузку, поэтому атаки на целевые системы из уровней до 3 включительно обычно производятся на аппаратном уровне, в то время как уровни от 4 и выше подвержены программным атакам.