Модели в информационной безопасности

1. Вместо вступления

Недавно опубликованный перевод Ментальные модели ИБ заинтересовал меня не только общим посылом (в частности, применение моделей в обучении – острый для меня вопрос, ведь учёба – процесс непрерывный), но и списком ссылок на модели. Почему он так важен? Разберёмся по ходу статьи.

С некоторыми из перечисленных в тексте моделей приходится сталкиваться в рамках рабочего процесса (мониторинг и реагирование модно связывать с MITRE ATT&CK и Kill Chain). О других у меня было общее представление, но как их применять, или какие ключевые особенности позволяют повысить эффективность сего процесса, оставалось за кадром. Названия каких-то моделей, признаться честно, я слышал впервые.

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

Прежде всего, пара слов о себе. Меня зовут Александр Носарев, и я работаю в ИБ интеграторе. Направление моей деятельности — системы мониторинга и реагирования. По долгу службы основные направления деятельности – организация и автоматизация процессов сбора и анализа логов в разрезе ИБ, а также – процессов реагирования на выявленные по результатам анализа нарушения и инциденты.

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

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

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


2. Общая теория


Что же такое модель? Это система, исследование которой служит средством для получения информации о другой системе; представление некоторого реального процесса, устройства или концепции.

Однако это определение сформулировано общо. Конкретизируем область исследования: модели ИБ в деятельности по мониторингу и реагированию.


Перечислю основные цели применения моделей в названной области деятельности:

  • Систематизация и координация действий при анализе данных, при расследовании, предотвращении и устранении последствий и причин инцидентов. С одной стороны, это необходимо для решения задач оперативного или тактического уровней (передача работы по инциденту от одного специалиста к другому, построение максимально эффективных процессов и т.д.). А с другой – для таких стратегических задач, как приоритезация внедрения и подключения к системе мониторинга конкретных СЗИ, создание контента систем мониторинга и реагирования, проведения киберучений и т.д.
  • Описание систем (ИБ, ИТ, организационных и т.д.) для создания, хранения, передачи информации, модернизации, аудита и т.д. При этом важна ценность модели как инструмента, позволяющего описать систему. Сюда можно отнести всё, от модели контролируемой сети до модели злонамеренного события в этой сети.
  • Обучение – передача знаний о системе и методах решения задач с использованием её моделей. Обучение на практике – по-моему, самый эффективный метод. Но рано или поздно встаёт вопрос о систематизации полученных знаний как для индивидуума, так и для организации. Это прежде всего помогает найти скрытые связи и определить дальнейшие направления развития или болевые точки.
  • Решение иных задач – применение методов к модели системы.

Все ли модели для достижения этих целей одинаково полезны? Безусловно, нет. Однако то, что прошло проверку временем и не было забыто в анналах истории, заслуживает внимания. Каким критериям такие модели удовлетворяют прежде всего?

  • Простота. Сложность проблемы, решаемой с помощью модели, должна быть выше сложности модели. В противном случае теряется смысл её использования. Поэтому целесообразно применять модель к относительно независимой части системы, для которой решается задача, и при необходимости совмещать эти представления. Яркий пример – разделение модели сети на уровни L2, L3 и т.д.
  • Полезность. А именно — совокупность ширины области применимости модели и детализации ее проработки. Чем шире область применения, тем больше вероятность, что уже известная модель подойдет для решения новой задачи. Чем глубже детализация, тем проще модель в применении. То есть всё уже может быть описано за вас, в том числе и процесс добавления дополнительных деталей, сущностей и их связей при необходимости. Зачастую эти требования противоречат друг другу, поэтому важен баланс, который можно назвать уровнем абстракции модели. Чем уровень абстракции выше, тем шире область применимости модели.

image

Перед применением модели необходимо помнить о следующих её свойствах:

  • Ограниченность. Любая модель отражает только те характеристики, которые необходимы для решения поставленной перед ней задачи с определённой точностью. Поэтому важно знать границы применимости модели и методы работы с ней. Это свойство характеризует достаточность модели для решения задачи.
  • Итеративность. Любая модель отражает только те характеристики моделируемой системы, которые известны создателю модели. При появлении новых, ранее неизвестных характеристик, модель должна быть подвергнута пересмотру (который не обязательно предполагает изменение). Такая особенность говорит о необходимости пересмотра модели для решения задачи.

Классическим примером существенности этих свойств может послужить механика: когда-то была только классическая механика, а сейчас есть и квантовая, и релятивистская.

Теория отличается от практики, поэтому возникает ряд особенностей при использовании моделей в деятельности:

  • Выбор модели происходит из известных нам вариантов. Именно поэтому меня так заинтересовал список из переведённой статьи.
  • Приложение модели порождает ошибки восприятия, обусловленные как общими когнитивными искажениями, так и личным опытом. Так, в частности, те модели, которые показались мне неинтересными, могут помочь вам. А после расследования инцидента специалист с бэкграундом администратора сетей должен обратить внимание на то, не упустил ли он какие-то хостовые артефакты. А лучше вообще посоветоваться с коллегами.
  • Модели могут наслаиваться. То есть задача разбивается на подзадачи (или наоборот, подзадачи можно синтезировать в одну глобальную), для решения которых применяются модели, возможно, отличные от моделей решения родительской задачи. При этом модели могут быть как дополняющими, так и конкурирующими. Важно помнить про особенности применения каждой модели и уметь увязать их друг с другом так, чтобы идеальное решение одной проблемы не привело к деградации смежных.

Вклад в применение конкретной модели (кроме непосредственно задачи) вносят:

  • Модель угроз.
  • Категоризация активов.
  • Оценка рисков.

Эти полезные документы не только позволяют ввести какие-то ограничения и допущения, способные упростить модель, но и в целом говорить о применимости той или иной модели. Однако не стоит забывать, что злоумышленники вашей ОРД не пользуются, и при расследовании инцидент вполне может в неё не вписаться.

Исходя из приведенной выше теоретической части и найденного описания моделей (от картинки-схемы для одних до десятков страниц для других) было решено использовать в этой статье-конспекте следующие основные характеристики моделей:

  • Уровень абстракции.
  • Область применения.
  • Основные положения и принципы.
  • Основные сущности и методы.
  • Взаимосвязь с другими моделями (при наличии).
  • Решаемые задачи.
  • Примеры (при необходимости).


3. Модели


Перечень моделей взят из оригинальной статьи. К нему добавлена модель CVSS3, для демонстрации модели низкого уровня абстракции с широким распространением в ИБ.


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

Навигатор по моделям
Универсальные модели:

  • Процесс расследования – методика поиска ответов на вопросы при расследовании и обучении; может быть применена к более общим исследованиям.

Модели для работы с инцидентами ИБ:

  • Diamond – поиск и документирование инцидентов, конвертация результатов расследования в TI.
  • MITRE ATT&CK – поиск инцидентов, поведенческая аналитика.
  • Намерение доказательства – форензика.
  • PICERL – реагирование на инциденты.

Модели для построения системы защиты ИБ:

  • Defense in Depth – эшелонирование системы защиты относительно СЗИ.
  • Cyber Kill Chain – эшелонирование системы защиты относительно этапов атаки.
  • Pyramid of Pain – работы с IOC.
  • MITRE ATT&CK – создание контента для системы мониторинга и ее оценка.
  • Намерение доказательства – внедрение специальных средств мониторинга.
  • PICERL – подготовка к реагированию на инциденты.
  • CVSS3 – построение системы управления уязвимостями.


3.1. Модель «Процесс расследования»


image


Уровень абстракции: Высокий.

Область применения: Любой исследовательский процесс.

Основные положения и принципы:

  • Видимое — не реальность. Мы обладаем только ограниченной информацией и достраиваем пустующие места паззла предположениями или вовсе пропускаем их.
  • Знание формируется вопросами.
  • В процессе восприятия мы вносим искажения (когнитивные и из личного опыта).

Основные сущности:

  • Наблюдение – свидетельство средства защиты информации (СЗИ) или предположение аналитика, подтверждённое чем-либо.
  • Вопрос. Должен быть проверяем, обычно относится к неявным взаимоотношениям между объектами.
  • Гипотеза. Состоит из предположения и причины его допущения.
  • Ответ – собранные доказательства, подтверждающие или опровергающие (что предпочтительно, т.к. это ускоряет процесс исследования) гипотезу. Может порождать другие вопросы.
  • Вывод, позволяющий описать произошедшее событие.

Решаемые задачи:

  • Поиск фактов компрометации.
  • Обучение аналитиков SOC.

image


Все модели с высоким уровнем абстракции кажутся простыми. Но, во-первых, не все фломастеры одинаковы на вкус (жёлтый горчит больше). А во-вторых, у большинства таких моделей удалось найти какие-то детали, которые повышают эффективность их применения. В частности, для данной модели это:

  • Подход к «наблюдению». Не обязательно начинать расследование или выбор СЗИ, отталкиваясь от логов или окна с требованием выкупа от шифровальщика на ПК жертвы. Но вы всегда должны уметь объяснить, почему вы инициировали процесс. Тренды ИБ, по-вашему мнению, привели к повышению тех или иных рисков. Злоумышленникам удобно атаковать ваш актив, исходя из известных вам слабостей его защиты. Протесты в Тибете могут привести к массовым атакам ваших пользователей из Тибета со стороны Китая. Что угодно.
  • Состав гипотезы. Без вербализации причины, объясняющей гипотезу, у вас не будет формальных критериев для проверки гипотезы.
  • Формализация вывода. Схема описания результата должна быть фиксирована. В противном случае, обобщение таких результатов и принятие стратегических решений на его базе могут стать невозможными. Или же вы просто упустите что-то в результате своего исследования.

3.2. Модель «Алмаз»


image


Уровень абстракции: Высокий.

Область применения: Любой исследовательский процесс в рамках работы с инцидентами ИБ.

Основные положения и принципы:

  • Для каждого события компрометации существует злоумышленник, выполняющий действие для решения своей задачи. Он использует возможности, предоставляемые инфраструктурой. Эти возможности направлены против жертвы и служат для достижения злоумышленником своей цели.
  • Существуют злоумышленники, которые ищут способы произвести компрометацию хостов и сетей с целью продвижения в своих намерениях и удовлетворения своих нужд.
  • Любая система, а значит и любой целевой актив, имеет уязвимости и слабые места.
  • Каждая вредоносная активность состоит из фаз, успешное выполнение которых приводит к успеху активности в целом.
  • Каждое событие вторжения требует одного или более условий для того, чтобы быть успешным.
  • Всегда существуют взаимоотношения между злоумышленником и жертвой, даже если они неявные или непрямые.
  • Существуют злоумышленники, обладающие мотивацией, ресурсами и возможностями поддерживать вредоносное присутствие в течение продолжительного периода времени. Эта злонамеренная активность может происходить в одной или нескольких жертвах и включать в себя преодоление мер по противодействию.

Основные сущности:

  • Злоумышленник — исполнитель и заказчик, олицетворяющие TTP и конечную цель атаки соответвенно.
  • Инфраструктура, используемая злоумышленником.
  • Возможности. Характеризуются качеством и количеством.
  • Жертва. Активы и персона, обладающие «восприимчивостью» к действиям злоумышленников.

image

Модель алмаза известна мне с институтских времен, но её обычно рисуют в виде одного алмаза, а копать глубже мне не случалось. Поэтому в голове всегда возникал вопрос: как она решит мою задачу? Ответа на него не было. Ознакомившись с описанием, обнаружил следующие интересные детали.

Связи сущностей:

  • Событие – действие злоумышленника на конкретном этапе с использованием конкретных тех-ник. Характеризуется набором метаполей. Именно событие отображается в виде алмаза.
  • Поток активностей – события, объединённые на основе метаполей.
  • Группа активностей – группа потоков активностей на базе метаполей.

Всем элементам этих сущностей присваивается оценка достоверности.

Таким образом, модель алмаза, совмещённая с фазированием процесса вторжения, например, по модели Kill Chain, предоставляет отличный фреймворк для описания процесса атаки. Объединение в цепочку происходит по следующему принципу: то, что выступало жертвой или возможностью в одном событии, может стать инфраструктурой в следующем. Также события могут относиться к одной фазе и идти последовательно или параллельно. При этом для возникновения связи событиям не обязательно относиться к одному потоку активностей. Это могут быть зависимые потоки, например, взлом через подрядчика. Дополнительные метаполя позволяют описать детали атаки.


image

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


image


Модель является расширяемой, особенно в части метаполей. Например, авторы предлагают такой вариант.

image


Дополнительные сущности:

  • Социально-политический аспект (мотив).
  • Технологический аспект.

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


Решаемые задачи:

  • Систематизация и координация действий при анализе данных, расследовании, предотвращении и устранении причин инцидентов.
  • Математический просчёт аналитических вопросов расследования, предотвращения и устранения причин инцидентов на основе графов.
  • Применение не только технических мер противодействия. Например, исключение векторов атаки нетехническими средствами, ограничение контуров циркулирования защищаемой информации и т.д.

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

image


3.3. Модель «MITRE ATT&CK»


image


Уровень абстракции: Средний.

Область применения:

  • Информационная безопасность компьютерных сетей (за Application Security, Database Security и т.д. в соседний проект той же организации MITRE CAPEC).
  • В организации должны быть развернуты сенсоры на конечных устройствах, обеспечивающие постоянный мониторинг (не снимки состояния). Матрица уже несколько раз обновлялась, поэтому данные не совсем актуальны. Но примерное представление о том, что можно обнаружить без сенсоров, отображено зелёными блоками одной из прошлых итераций модели (спойлер: их нет).

image


Системы, для которых существует матрица:

  • Enterprise: Windows, Linux, MacOS.
  • Mobile: Android, iOS.

Основные положения:

  • Модель строится с точки зрения атакующего. Поэтому можно перейти от вопроса «что случилось?» к «что может случиться?». Т.е. от реактивных к проактивным действиям.
  • Модель базируется на реальных инцидентах (открытых отчетах). Исключены все вектора атаки, для которых нужна луна в пятой фазе Меркурия. Т.е. работаем по принципу Парето, что дает быстрый результат. Но это также и минус, т.к. между началом активного применения техник и появлением их в матрице может пройти не один месяц.
  • Уровень абстракции достаточен для соотнесения атакующих действий с действиями по защите. На самом деле это не так, но различные проекты, базирующиеся на модели, вроде RedCanary и Atomic Threat Coverage позволяют нивелировать этот недостаток. Также в ходе подготовки публикации вышла эта небезынтересная статья.
  • Краткосрочные цели злоумышленников определяются набором тактик и отвечают на вопрос «зачем?».
  • Инструменты достижения краткосрочных целей определяются набором техник и отвечают на вопрос «как?».
  • Каждой группировке соответствует набор тактик и техник
.
Основные принципы:

  • Отслеживание активности после компрометации. Понятие периметра и связанных с ним СЗИ постепенно трансформируется. Но уже давно понятно, что отслеживание единственного факта компрометации на периметре – тупиковый путь.
  • Фокус на поведение злоумышленника, а не на единичные флаги, сигнализирующие о нарушениях. Работы аналитикам это добавляет, ведь проверку далеко не всех гипотез можно или нужно автоматизировать. Автоматизация приносит плоды только тогда, когда затраты на неё меньше, чем на выполнение тех же задач автоматически. Зато количество как ложноположительных, так и ложноотрицательных срабатываний сокращает существенно.
  • Предоставляет часть модели угроз. Позволяет действовать проактивно, добавляя контроли и контент в систему мониторинга.
  • Итеративность. Можно оценить то, что уже мониторится, что легко начать мониторить, что требует дополнительных контролей или аналитиков, а что будет уже следующим уровнем развития ИБ в организации.
  • Разработка и тестирование производились в реалистичном окружении. Поэтому у нашей теоретической матричной лодки есть шанс не разбиться о реальную ИТ инфраструктуру компании.

Основные сущности:

  • Тактика.
  • Техника.
  • Злонамеренная группа.
  • Вредоносное ПО.

image


Решаемые задачи:

  • Эмуляция действий злоумышленника для подтверждения возможностей по предотвращению, обнаружению и устранению последствий.
  • Планирование активности Red Team.
  • Поведенческая аналитика действий злоумышленников.
  • Оценка слабых мест защиты.
  • Оценка уровней зрелости SOC (на основе покрытия матрицы).
  • Обогащение данных TI. Возможно, т.к. матрица по сути сама построена на TI отчётах.
  • Ситуационная осведомленность. Аналогично предыдущему пункту.
  • Аналитика аномалий. Скорее вытекающий из опыта использования матрицы приятный бонус.
  • Форензика.

Целевые выявляемые сущности:

  • Временное окно инцидента.
  • Скомпрометированные/задействованные хосты.
  • Скомпрометированные аккаунты.
  • Цели злоумышленников.
  • Использованные тактики и техники.

Разбиение на тактики захватывает часть цепочки Kill Chain, но каждый этап включает в себя от одной до нескольких тактик.

image


3.4. Модель «Глубокая защита»


image


Уровень абстракции: Высокий.

Область применения: Построение системы ИБ.

Основные положения и принципы:

  • Отсутствие единой точки компрометации.
  • Избыточность и перекрытие векторов атаки.

Решаемые задачи: Построение эшелонированной (относительно методов и средств) защиты для увеличения времени и стоимости атаки, а также защиты от специфических слабостей защитных мер.

Модель сама себя хорошо иллюстрирует и может успешно применяться даже при новом подходе к периметру ИБ в организации.

3.5. Модель «Пирамида боли»


image


Уровень абстракции: Высокий.

Область применения: Любой исследовательский процесс в рамках работы с IOC.

Основные положения и принципы: Обнаружение и предотвращение использования IOC позволяет ослабить злоумышленника, степень этого воздействия зависит от типа IOC.

Основные сущности: Типы IOC.

Решаемые задачи: Обнаружение IOC для расследования, предотвращения и устранения причин инцидентов.


Так как эта модель больше всего вписывается в TI, оставлю здесь ссылку на одну из последних интересных статей по теме. В ней рассмотрены проблемы жизненного цикла индикаторов и другие интересные моменты. Кроме того, модель показывает, почему так велик интерес к описаниям TTP, например, вышеупомянутого MITRE ATT&CK.


3.6. Модель «Cyber Kill Chain»


image


Уровень абстракции: Высокий.

Область применения: Работа с инцидентами ИБ.

Основные положения и принципы:

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

Основные сущности: Этапы, отражающие задачи злоумышленника: разведка, вооружение, доставка, эксплуатация, установка, управление, действия внутри сети.

Решаемые задачи: Построение эшелонированной (относительно этапов) системы защиты информации.

Хороший пример масштабируемой модели. Немало порождено аналогов с большей или же меньшей детализацией в зависимости от решаемых задач.

Также это хороший пример наложения моделей. Отлично сочетается с MITRE ATT&CK или моделью «Diamond».

3.7. Модель «Намерение доказательства»


Уровень абстракции: Высокий.

Область применения: Работа с инцидентами ИБ.

Основные положения и принципы:

  • Существуют доказательства вредоносной активности, предоставляемые разработчиками ПО преднамеренно и непреднамеренно.
  • От способа предоставления доказательств зависит уровень доверия, способ сбора и т.д.

Основные сущности и методы: Тип доказательств (намеренные, ненамеренные).

Решаемые задачи: Приоритезация сбора доказательств и оценка их достоверности.

Примеры:

  • Логи ПО и ОС – намеренное доказательство.
  • Кэш запросов – ненамеренное доказательство.
  • Сетевой траффик – доказательство by design, т.е. существование объекта доказывает сам факт его существования.

Данную концепцию я бы назвал «моделью» с большой натяжкой. Она позволяет провести раздел между форензикой, которая может задействовать ненамеренные доказательства, и мониторингом, зачастую не имеющим таких средств. Или имеющим, но точечно. За исключением этого – пользы из нее я не вынес.


3.8. Модель «Процесс реагирования на инциденты PICERL»


image


Уровень абстракции: Средний.

Область применения: Реагирование на инциденты ИБ.

Основные положения и принципы: Реагирование на инциденты ИБ включает в себя несколько этапов.

Основные сущности: Этапы реагирования на инциденты ИБ: подготовка, обнаружение, сдерживание, искоренение, восстановление, анализ результатов.

Решаемые задачи: Построение жизненного цикла реагирования на инциденты ИБ.

В принципе, это хороший аналог модели «Kill Chain», но только применительно к реагированию. С учётом указанных действий для каждого из этапов, она может служить неплохим подспорьем для создания play book-ов. Главное – не забыть наложить сначала организационную структуру и полномочия задействованных лиц, а потом – особенности ИТ инфраструктуры.

3.9. Модель CVSS3


image

Уровень абстракции: Низкий.

Область применения: Приоритезация уязвимостей.

Основные положения и принципы: оценка уязвимости может быть рассчитана с использованием следующих метрик:

  • Базовые метрики.
  • Временные метрики (изменяются с течением времени).
  • Контекстные метрики (зависят от ИТ инфраструктуры организации).

Основные сущности (в скобках указаны возможные принимаемые метрикой значения):
Базовые метрики:
Уязвимый компонент, характеризуется метриками эксплуатируемости:

  • Вектор атаки AV (N A L P), степень удалённости потенциального атакующего от уязвимого объекта.
  • Сложность эксплуатации уязвимости AC (L H), качественная оценка сложности проведения атаки.
  • Аутентификация/требуемый уровень привилегий PR (H L N).
  • Необходимость взаимодействия с пользователем UI (N R).
  • Границы эксплуатации S (U C), отличаются ли эксплуатируемый и атакуемый компоненты.

Атакуемый компонент (характеризуется метриками воздействия):

  • Оценка степени влияния на конфиденциальность, целостности.

Другие публикации

Информационная безопасность – больше не виртуальная угроза для компаний

Илья Четвертнев, заместитель генерального директора и технический директор Angara Security, в интервью для CyberMedia о том, каких ИБ-решений не хватает на российском рынке и почему растет спрос на MSS-сервисы

18.04.2024

Управление уязвимостями с помощью ИИ

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

01.04.2024

Мошенники оценили СМС-сообщения

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

26.02.2024

Отзыв лицензии у «Киви банка» спровоцировал всплеск подделок его сайта

Новость об отзыве лицензии у «Киви банка» спровоцировала всплеск регистрации и обновления доменных имен, похожих на имя кредитной организации, - qiwi.com. 

22.02.2024

Обнаружена группировка русскоязычных хакеров, которая пишет на неудобном языке программирования

В России обнаружена новая хакерская группировка, которая при атаке на корпорацию маскирует вредоносный код под аккаунты действующих сотрудников.

12.02.2024

Остались вопросы?

Понравилась статья?

Подпишитесь на уведомления о новых материалах