October 21, 2020

Уязвимости: модель OSI, классификация уязвимостей.

Всем привет!
Задача этой статьи - начать знакомить вас с миром уязвимостей.


Введение - модель OSI. Азы.

Несмотря на то, что основным предметом данного интенсива являются ботнеты и все с ними связаное, мы не можем не коснуться каких-то основополагающих вещей. Начнем с введения в Информационную Безопасность и разные уязвимости.

Первым домашним заданием будет ознакомиться с моделью сетевого взаимодействия OSI. Данная модель будет полезна в дальнейшем и лучше ее изучить сейчас т.к. по мере роста Ваших навыков, Вам она будет нужна как воздух. Это основа Ваших знаний, т.к. работа ПО и отдельных уязвимостей идет с сетью и разными уровнями OSI.

То, что мы сейчас будем рассматривать по-русски называется Базовая Эталонная Модель Взаимодействия Открытых Сетей, а по-английски - Open Systems Interconnection Basic Reference Model.

Модель OSI (модель стека протоколов TCP/IP) описывает архитектуру и функции компьютерной сети на каждом из уровней. Именно поэтому важно понимать и знать функции каждого уровня модели передачи данных, чтобы понимать принципы функционирования компьютерных сетей в целом.

Всего в модели 7 уровней. Каждый из этих уровней выполняет свои определенные задачи. На каждом уровне есть свои единицы измерения информации или тип данных - PDU (protocol data unit).

Это единицы измерения данных, которыми оперирует протокол на том или ином уровне. Так, например, на уровнях с седьмого по пятый включительно PDU называется просто - данные, на транспортном уровне в случае протокола TCP данные представляются в виде сегментов, а в случае протокола UDP единицей измерения данных являются дейтаграммы или датаграммы.

На сетевом уровне PDU называются пакетами, на канальном уровне - кадрами, а на физическом уровне представляют из себя последовательности нулей и единиц или просто биты.

Также из важного стоит отметить, что условно уровни эталонной модели делятся на верхние и нижние.

Физический, канальный и сетевой уровни можно отнести к нижним уровням или уровням среды передачи данных, в английской литературе это называется media layers.

А вот транспортный, сеансовый, представительский и уровень приложений относятся к host layers или к верхним уровням, ну или к уровням хоста.

Модель OSI 7 проводит четкую границу между протоколом и службой. Службы работают между уровнями внутри одного устройства, а протоколы отвечают за взаимодействие двух устройств на одном уровне.

Не стоит боятся если Вы ничего не поняли. Я согласен, что понять это с первого раза не совсем удается всем, но развитие и немного стараний и делает нас умнее. Если у Вас не получилось понять это сейчас, просто прочтите это позже.


Классификация уязвимостей

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

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

Уязвимость - это какая-либо характеристика или свойство информационной системы, использовав которую мы можем реализовать атаку (угрозу).

Под угрозой, в свою очередь, следует понимать вероятное событие или же некий процесс, которые, воздействуя на компоненты информационной системы, могут нанести ущерб ее целостности.

Естественно, все осуществляемые атаки имеют свою конкретную цель.

Каковы причины возникновения уязвимостей? Принято выделять следующие:

  1. ошибки в ходе проектирования и разработки программного обеспечения;
  2. целенаправленное добавление уязвимостей в ходе проектирования и разработки программного обеспечения;
  3. ошибки в процессе настройки программного обеспечения;
  4. неправомерное изменение режимов работы устройств и/или программ;
  5. установка и использование незарегистрированных программ, что приводит к необоснованному расходованию ресурсов (загрузка процессора, захват оперативной памяти, места на жестком диске и т.п.)
  6. внедрение вирусных программ;
  7. несанкционированные действия пользователей;
  8. сбои в работе аппаратного и программного обеспечения в результате скачков электроэнергии, устаревания и снижения надежности отдельных элементов, внешних воздействий электромагнитных полей технических устройств и т.п.

Далее пара слов о классификации основных уязвимостей.
Эти вещи знать крайне желательно. Может, не досконально, но хотя бы иметь представление в общих чертах.

Итак, выделяют две основные группы.
Первая - это уязвимости системного программного обеспечения (в частности, протоколов сетевого взаимодействия), а вторая - уязвимости прикладного программного обеспечения (в частности, средств защиты информации).

Первую группу важно рассматривать с привязкой к архитектуре построения самих вычислительных систем. Здесь можно выделить следующие типы уязвимостей:

  • уязвимости в микро-программах и прошивках ПЗУ, ППЗУ;
  • уязвимости в средствах операционной системы, которые обеспечивают выполнение функций управления процессами, памятью, устройствами ввода/вывода и пользовательским интерфейсом, а также в драйверах и утилитах;
  • уязвимости в инструментах операционной системы, предназначенных для выполнения вспомогательных функций;
  • уязвимости в программах, предоставляющих пользователю дополнительные услуги (утилитах), таких как архиваторы, программы дефрагментации, проверки и уплотнения диска диска и др., в системных обрабатывающих программах (компиляторах, компоновщиках, отладчиках и т.п.), в библиотеках процедур различного назначения, например, математических функций, функций ввода/вывода и др.;
  • уязвимости в сетевых средствах операционной системы.

На последнем пункте остановимся подробнее. Уязвимости протоколов сетевого взаимодействия имеют четкую корреляцию с особенностями их программной реализации. Ограниченная память применяемого буфера, несовершенства процедуры аутентификации, отсутствие системы контроля за достоверностью служебной информации - эти и другие подобные факторы служат для уязвимостей благодатной почвой.

Весь интернет базируется на наборе протоколов TCP/IP, как вы знаете. Типичными (но не единственными) уязвимостями отдельных компонентов данного стека являются:

  • Аутентификация, основанная на открытом тексте (пересылка паролей в незашифрованном виде) - в основном это протокол HTTP;
  • Доступ по умолчанию;
  • Отсутствие системы контроля за перегрузкой буфера и предотвращения таковой;
  • Отсутствие механизма проверки подлинности управляющих сообщений о перенаправлении пакета/изменении маршрута;
  • Отсутствие системы защиты от ошибок при заполнении служебных заголовков пакета;
  • Отсутствие средств проверки подлинности данных, полученных от источника.

Повторюсь, это далеко не полный список.

Описания всевозможных видов уязвимостей можно найти в единой базе данных CVE (Common Vulnerabilities and Exposures). Подробнее об этом мы еще поговорим.

Кстати много информации собрано здесь: https://www.exploit-db.com/ (база пополняется ежедневно). Для человека в теме - ресурс обязательный к просмотру и мониторингу.

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

  1. различное программное обеспечение между собой не совместимо, то есть попросту не может функционировать в одной операционной среде (например, из-за конфликтов, связанных с распределением ресурсов системы);
  2. параметры установлены таким образом, который дает возможность проникнуть в операционную среду информационной системы и вызвать ее определенные функции;
  3. фрагменты кода программ, которые предусмотрены разработчиком, позволяют обходить процедуры идентификации, аутентификации, проверки целостности операционной системы и др.;
  4. отсутствуют необходимые средства защиты (аутентификации, проверки целостности, проверки форматов сообщений, блокирования несанкционированно модифицированных функций и т.п.);
  5. ошибки в кодах программ, в объявлении переменных, функций и процедур, которые при определенных условиях (скажем, при выполнении логических переходов) ведут к сбоям. Так, сбои при работе средств и систем защиты информации дают возможность легко получить к ней несанкционированный доступ.

Мы уже вскользь упомянули про базу данных CVE. Так вот в ней собираются, обобщаются и анализируются сведения об уязвимостях разрабатываемого и распространяемого на коммерческой основе прикладного программного обеспечения.

Относительно оценки и понимания угроз, есть устоявшаяся модель, разработанная, кстати говоря, компанией Майкрософт, - STRIDE.
Аббревиатура STRIDE собрана по первым буквам названий шести состояний информационной системы, подверженных угрозам:

  • Аутентичность (spoofing) - это характеристика, означающая, что объект, о котором идет речь, является настоящим, подлинным, не поддельным. Т.е. например сертификат сайт является подлинным.
  • Целостность (tampering) - соответствие имеющейся информации её внутренней логике, структуре и всем явно заданным правилам. Например ограничение поля на ввод имени, все данные отвечают некоторым условиям и требованиям
  • Апеллируемость (repudiation) – гарантия того, что информацию можно привязать к ее автору и при необходимости доказать, что автором сообщения является он. Доказательства аутентичности.
  • Конфиденциальность (information disclosure) - степень хранения информации с определенным доступом лиц. Например твои паспортные данные или список ордеров твоих на алике.
  • Доступность (denial of service) - состояние информации (ресурсов автоматизированной информационной системы), при котором субъекты, имеющие права доступа, могут реализовывать их беспрепятственно. К правам доступа относятся: право на чтение, изменение, хранение, копирование, уничтожение информации, а также права на изменение, использование, уничтожение ресурсов. Например конфиденциальный доступ за счет апеллируемость на основе аутентичности.
  • Авторизованность (elevation of privilege) - фактическое разрешение на распространение или использование информации на основе доступности

Кстати любой может сгенерить себе серт, и ваша фейковая страница будет с замочком. Кто полезет проверять замочек - да никто!

Перечисленные состояния охватывают весь спектр возможных угроз целостности информационной системы.

Очевидно, что далеко не каждая угроза актуальна для всех объектов информационной системы. Чтобы выявить актуальные угрозы, разрабатываются индивидуальные модели. Подходов к построению моделей угроз предостаточно, и в рамках данного обучения смысла их анализировать нет.

Формально уязвимость можно охарактеризовать как совокупность факторов и условий, которые способствуют реализации той или иной угрозы в отношении информационной системы целиком или отдельных ее компонентов. Необходимо понимать, что всего одна уязвимость может способствовать реализации сразу нескольких угроз.

Что касается методик оценки рисков, их огромное множество и все это, конечно, из теории информационной безопасности или даже риск-менеджмента. Нам вряд ли пригодится.

Разве что, если кто-то не захочет стать пентестером или специалистом в области информационной безопасности, но для этих целей существуют совсем другие обучения.

И еще буквально пару слов о CVE - базе всех известных уязвимостей.
Главное отличие CVE от любой Bugtrack-ленты - все собранные в ней уязвимости имеют строгую характеристику по описательным критериям.
Официальный сайт базы - cve.mitre.org/data/downloads
Также полная версия CVE доступна в Национальной Базе Уязвимостей США (nvd.nist.gov).
Записи в базе имеют (плюс-минус) следующий вид: CVE ID, Reference и Description. Поле ID содержит код и порядковый номер. Пример: CVE-2020-01. В поле Reference отображаются ссылки на патчи, рекомендуемые дополнительные материалы, а также комментарии разработчика. Поле Description, как можно догадаться, отвечает за описание уязвимости.
База CVE является многопрофильной. Это означает, что в ней есть данные не только о клиентских уязвимостях или, к примеру, она не ограничена только лишь WEB-протоколом.

Зачем CVE нужна, думаю, и так понятно. Но вот откуда она взялась?
Дело в том, что в целях реализации политики неразглашения (non- disclosure) или же, напротив, разглашения информации многие компании занимаются поиском уязвимостей того или иного продукта. Нередко при исследовании продукта сразу несколькими компаниями одна и та же уязвимость получала разные названия. Возникала путаница. Стало ясно, что единый стандарт просто необходим.


На этом сегодня всё, в следующей статье поговорим про уязвимости корпоративных сетей.


🌌Dark Warehouse - Склад интересных вещиц.

🕸Shadow Shop - Магазин цифровых товаров.

💎RefPay - Бот для пассивного дохода.

💬Lamers Chat - Свободный чат. Общение на любые темы.