• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья The Car Hacker's Handbook: A Guide For Penetration Testing - Глава 1, Часть 2

Итак часть 2
Let's go,dude

Уровень 1: Приемники
Чтобы перейти к диаграмме,показывающая модель угроз уровня 1(рис.1-2),выберите процесс для изучения диаграммы.
Рисунок 1-2.jpg


Поскольку у нас есть только один процесс на нашей диаграмме, давайте вникаем в процесс автомобиля и сосредоточимся на том, что говорит каждый вход.Если посмотреть на диаграмму уровня 0 и диаграмму уровня 1 можно заметить,что они почти схожи.Единственное различие заключается в том, что здесь мы указываем соединения транспортного средства, которые получают вход Level 0.Пока мы еще не посмотрим на приемники; мы смотрим только на основное устройство или область, к которой ведет вход.Заметьте,что мы на рисунке 1-2 пометили каждый приемник,куда поступает сигнал.Первая цифра представляет метку процесса из диаграммы уровня 0 на рисунке 1-1, а вторая цифра - номер приемника. Поскольку информационно-развлекательная система представляет собой сложный процесс и ввод, мы дали ему круг процессов. Теперь у нас есть еще три процесса: иммобилайзер, ECU и TPMS Receiver.Пунктирные линии на карте уровня 1 представляют собой разграничения между границами доверия. Входы в верхней части диаграммы являются наименее надежными, а те, которые внизу, являются наиболее надежными. Чем больше границ доверия, которые пересекает канал связи, тем рискованнее этот канал.

Уровень 2: Распределение приемника(В дальнешем просто ресивер)
На уровне 2 мы рассмотрим средство связи, имеющееся внутри транспортного средства. На нашей диаграмме примеров (рис. 1-3) основное внимание уделяется Linux-ориентированной информационно-развлекательной консоли, приемнику 1.1. Это один из более сложных приемников, и он часто напрямую подключается к внутренней сети автомобиля.

Рисунок 1-3.jpg


На рисунке 1-3 мы группируем каналы связи в ящики с пунктирными линиями, чтобы снова отобразить границы доверия. Теперь в консоли информационно-развлекательной системы, называемой ядром, есть новая граница доверия. Системы, которые общаются напрямую с ядром, имеют более высокий риск, чем те, которые общаются с системными приложениями, потому что они могут обойти любые механизмы контроля доступа в информационно-развлекательном блоке. Следовательно, сотовый канал имеет более высокий риск, чем канал Wi-Fi, потому что он пересекает границу доверия в пространстве ядра; канал Wi-Fi, с другой стороны, общается с процессом подачи запроса WPA в пространстве пользователя.Эта система представляет собой информационно-развлекательную систему (IVI) на базе Linux и использует части, общие для среды Linux. В пространстве ядра вы видите ссылки на модули ядра udev, HSI и Kvaser, которые получают ввод от нашей модели угрозы. Модуль udev загружает USB-устройства, HSI - это последовательный драйвер, который обрабатывает сотовую связь, а Kvaser является сетевым драйвером автомобиля. Шаблон нумерации для Уровня 2 теперь X.X.X, а система идентификации такая же, как и раньше. На уровне 0, мы взяли процесс транспортного средства, который был 1.0 и нырнули глубже в него. Затем мы отметили все процессы в Уровне 1 как 1.1, 1.2 и т. Д. Затем мы выбрали информационно-развлекательный процесс с отметкой 1.1 и "разломали" его далее для диаграммы уровня 2. Поэтому на уровне 2 мы обозначили все сложные процессы как 1.1.1, 1.1.2 и т. Д. (Вы можете продолжить ту же схему нумерации, если вы погружаетесь еще глубже в процессы. Схема нумерации предназначена для документирования, что позволяет вам ссылаться на точный процесс на соответствующем уровне.)

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

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

Уровен 0:с высоту птичего полета

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

•Удаленное управление транспортным средством

•Выключить транспортное средство

•Шпион на пассажирах автомобиля

•Разблокировать автомобиль

•Украсть автомобиль

•Отследить транспортное средство

•Защитные системы Thwart

•Установить вредоносное ПО на автомобиле

Во-первых, может возникнуть сложность придумать кучу сценариев атаки. Часто бывает полезно, чтобы люди, которые не являются инженерами, также участвуют на этом этапе, потому что, будучи разработчиком или инженером, вы склонны быть настолько вовлечены во внутренние дела, что естественно дискредитировать идеи, даже не имея смысла. Будь креативным; попытайтесь придумать самую атакующую атаку Джеймса Бонда, о которой вы можете думать. Возможно, подумайте о других сценариях нападения и о том, могут ли они также применяться к транспортным средствам. Например, рассмотрите ransomware, вредоносное программное обеспечение, которое может зашифровать или заблокировать вас из вашего компьютера или телефона, пока вы не заплатите деньги кому-либо, контролирующему программное обеспечение удаленно. Может ли это использоваться на транспортных средствах? Ответ - да. Пишите ransomware вниз.

Уровень 1:ресиверы(кто забыл,то это приемники)

Идентификация угрозы на уровне 1 больше фокусируется на соединениях каждой части, а не на соединениях, которые могут быть сделаны непосредственно на входе. Уязвимости, которые мы устанавливаем на этом уровне, относятся к уязвимостям, которые влияют на то, что связано с устройствами в транспортном средстве. Мы разделим их на группы угроз, которые относятся к сотовой, Wi-Fi, брелки (KES), датчику контроля давления в шинах (TPMS), информационно-развлекательной консоли, USB-соединениям, шине Bluetooth и сети локальной сети (CAN). Как вы можете видеть в следующих списках, в автомобиль есть много потенциальных путей.



Сотовая связь

Злоумышленник может использовать сотовую связь в транспортном средстве, чтобы:

• получить доступ к внутренней сети транспортного средства из любого места;

• использовать приложение в информационно-развлекательном устройстве, которое обрабатывает входящие вызовы;

• получить доступ к модулю идентификации абонента (SIM) через информационно-развлекательный блок.

• использовать сотовую сеть для подключения к дистанционной диагностической системе (OnStar)

• Подслушивание по сотовой связи

• Отслеживание движения автомобиля

• Настройка поддельной базовой системы мобильной связи (GSM)

Wi-Fi

Атакующий может использовать соединение Wi-Fi с:

• Доступ к сети транспортных средств с расстояния до 300 ярдов или более

• Найти эксплойт для программного обеспечения, которое обрабатывает входящие соединения.

• Установить вредоносный код в информационно-развлекательном блоке.

• Узнать пароль Wi-Fi.

• Настроить поддельную точку доступа дилера, чтобы обмануть автомобиль, думая, что он обслуживается.

• Перехватить связь, проходящую через Wi -Fi

• Отслеживать транспортного средства

Key Fob

Злоумышленник может использовать соединение с брелоком для:

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

• Активно зондировать иммобилайзер для слива автомобильного аккумулятора.

• Блокировки ключа.

• Записи криптографическую информацию, просочившись из иммобилайзер во время процесса рукопожатия

• Жесткого алгоритм брелока

• Клонирование брелока

• Замятие сигнала фонового сигнала

• Сливать питание из брелка для монитора датчика давления в шинах



Злоумышленник может использовать соединение TPMS для:

• Отправить невозможное состояние блока управления двигателем (ECU), вызывающее неисправность, которую можно было бы использовать.

• Обрезать ECU на сверхкоррекцию для подделанных дорожных условий

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

• Отследить транспортное средство на основе уникальных идентификаторов TPMS.

• Обмануть сигнал TPMS отключение внутренних тревог

Консоль Infotainment Console

Злоумышленник может использовать консоль Infotainment, чтобы:

• Поставить консоль в режим отладки

• Изменить параметры диагностики

• Найти ошибку ввода, которая вызывает неожиданные результаты

• Установить вредоносное ПО на консоль

• Использовать вредоносное приложение для доступа к внутренняя сеть CAN-шины.

• Использовать вредоносное приложение для подслушивания действий, предпринятых жильцами транспортного средства.

• Использовать вредоносное приложение для подмены данных, отображаемых для пользователя, таких как местоположение транспортного средства.

USB.

Злоумышленник может использовать соединение с портом USB для:

• установки вредоносного ПО на информационно-развлекательный блок

• Использования дефект в USB-накопителе информационно-развлекательного устройства

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

• Установки модифицированное программное обеспечения для обновления на автомобиле.

• Закрытия портф USB, тем самым повредив информационно-развлекательную систему.

Bluetooth.

Злоумышленник может использовать соединение Bluetooth с:

• Выполнять код в информационно-развлекательном блоке

• Использовать дефект в стеке Bluetooth в информационно-развлекательном блоке.

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

Доступ к транспортному средству с близкого расстояния (менее 300 футов).

• Застревание устройства Bluetooth

Сеть контроллеров

Злоумышленник может использовать соединение с шиной CAN:

• установить вредоносное диагностическое устройство для отправки пакетов на шину CAN;

• подключиться непосредственно к шине CAN, чтобы попытаться запустить автомобиль без ключа;

• подключить непосредственно к CAN автобус для загрузки вредоносных программ

• Установить вредоносное диагностическое устройство для отслеживания транспортного средства

• Установить вредоносное диагностическое устройство для включения удаленной связи непосредственно на шину CAN, что делает обычную внутреннюю атаку теперь внешней угрозой

Уровень 2: Распределение ресивера

На уровне 2 мы можем больше говорить об определении конкретных угроз. Когда мы посмотрим, какое именно приложение обрабатывает это соединение, мы можем начать выполнять проверку на основе возможных угроз. Мы разобьем угрозы на пять групп: Bluez (демон Bluetooth), wpa_supplicant (демон Wi-Fi), HSI (высокоскоростной синхронный модуль сотового ядра), udev (диспетчер устройств ядра) и драйвер Kvaser (CAN-приемопередатчик). В следующих списках я указал угрозы каждой программе.

Bluez

Старые или непроверенные версии демона Bluez:

• Может быть эксплуатируемым

• Может быть неспособен обрабатывать поврежденные адресные книги

• Невозможно настроить для обеспечения правильного шифрования

• Невозможно настроить безопасное квитирование

• Может использовать стандартные ключи доступа

wpa_supplicant

• Старые версии может быть эксплуатируемым

• Может не применяться надлежащее беспроводное шифрование WPA2

• Может подключаться к вредоносным точкам доступа

• Может утечка информации о драйвере через BSSID (сетевой интерфейс)

HSI

• Возможно использование более старых версий

• Может быть восприимчивым к инъекционной последовательной связи (man- in-themiddle, в которых злоумышленник вставляет последовательные команды в поток данных)

udev

• Старые, неподдерживаемые версии могут быть восприимчивыми к атаке.

• Может не содержать поддерживаемый белый список устройств, позволяя злоумышленнику загружать дополнительные драйверы или USB-устройства, которые не были протестированы или предназначены для использования.

• Может позволить злоумышленнику загружать чужие устройства, такие как как клавиатуру для доступа к информационно-развлекательной системе

Kvaser Driver.

• Возможно, старые версии, не имеющие доступа, могут быть использованы.

• Может позволить злоумышленнику загрузить вредоносную прошивку на устройство Kvaser.

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

Системы оценки угроз
Задокументировав многие наши угрозы, мы теперь можем оценивать их с уровнем риска. Общие рейтинговые системы включают DREAD, ASIL и MIL-STD-882E. DREAD обычно используется в веб-тестировании, в то время как автомобильная промышленность и правительство используют ISO 26262 ASIL и MIL-STD-882E, соответственно, для оценки угрозы. К сожалению, ISO 26262 ASIL и MIL-STD-882E ориентированы на сбои безопасности и не подходят для обработки вредоносных угроз. Более подробную информацию об этих стандартах можно найти на .php/Policies_and_Guidelines



DREAD оценка угроз

Потенциал Повреждения(Damage Potential) -Насколько велики повреждения?

Воспроизводимость(Reproducibility) -Насколько легко воспроизводится?

Эксплутационная способность(Exploitability) -Насколько легко эксплуатировать(воспроизвести атаку)?

Затронутые пользователи(Affected users) -Как много пользователей затронуты(или пострадало от атаки)

Обнаружение уязвимости(Discoverabilty) -Как легко найти уязвимость?

По первым английский буквам получаем абревиатуру DREAD

В таблице 1-1 приведены уровни риска от 1 до 3 для каждой рейтинговой категории.
рисунок 1-1.jpg


Например, если мы возьмем угрозы HSI уровня 2, описанные в разделе «Уровень 2:« Распределение ресивера »на стр. 10, мы можем получить рейтинги угроз, подобные тем, которые показаны в таблице 1-2.
Рисунок 1-2.jpg


Вы можете определить общий рейтинг, используя значения в столбце Total, как показано в таблице 1-3
Рисунок 1-3.jpg


При проведении оценки риска хорошей практикой является то, что результаты подсчета очков видны так, что человек, читающий результаты, может лучше понять риски. В случае угроз HSI мы можем назначить высокий риск для каждой из этих угроз, как показано в таблице 1-4.
Рисунок 1-4.jpg


Несмотря на то, что оба риска отмечены как высокие, мы видим, что более ранняя версия модели HSI представляет собой несколько более высокий риск, чем инъекционные серийные атаки, поэтому мы можем сделать это приоритетом для решения этого риска в первую очередь. Мы также можем видеть, что причина, по которой риск инъекционной последовательной связи ниже, заключается в том, что ущерб является менее серьезным, а эксплойт сложнее воспроизвести, чем для старой версии HSI.


CVSS:Альтернатива DREAD

Если DREAD недостаточно детально для вас, рассмотрите более подробную методологию риска, известную как общая система оценки уязвимостей (CVSS). CVSS предлагает гораздо больше категорий и деталей, чем DREAD в трех группах: базовом, временном и экологическом. Каждая группа подразделяется на подпункты - шесть для базы, три для временных и пять - для окружающей среды - в общей сложности 14 баллов! (Более подробную информацию о работе CVSS см. На странице .)
Заметим:Хотя мы можем использовать ISO 26262 ASIL или MIL-STD-882E при оценке угроз, мы хотим получить больше деталей, чем просто Risk = Probability × Severity. Если вам нужно выбрать между этими двумя системами для обзора безопасности, обратитесь к MIL-STD-882E из Министерства обороны (DoD). Система уровня безопасности автомобильной безопасности (ASIL) слишком часто подвержена риску попадания в рейтинг QM, что в основном переводится как «meh». Система DoD имеет тенденцию приводить к более высокому ранжированию, что приравнивается к более высокому значению стоимости жизнь. Кроме того, MIL-STD-882E предназначен для применения на протяжении всего жизненного цикла системы, включая удаление, что отлично подходит для безопасного жизненного цикла разработки


Работа с результатами модели угроз
На этом этапе у нас есть макет многих потенциальных угроз для нашего автомобиля, и мы оцениваем их с точки зрения риска. Что теперь? Ну, это зависит от того, в какой команде вы находитесь. Чтобы использовать военный жаргон, сторона атакующего - это «красная команда», а сторона защитника - «синяя команда». Если вы в красной команде, ваш следующий шаг - начать атаковать районы с наивысшим риском, которые могут имеют наилучшие шансы на успех. Если вы находитесь в синей команде, вернитесь к диаграмме риска и измените каждую угрозу контрмерой.Например, если бы мы взяли два риска в «Системе оценки DREAD» на стр. 11, мы могли бы добавить раздел контрмеры каждому. Таблица 1-5 включает в себя контрмер для риска выполнения кода HSI, а в таблице 1-6 приведена контрмера для риска перехвата HSI.
Рисунок 1-5.jpg

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

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

P.S. почти перевел 2 главу,осталось 8 страниц
 

Вложения

  • Рисунок 1-2.jpg
    Рисунок 1-2.jpg
    60,2 КБ · Просмотры: 310
  • Рисунок 1-5.jpg
    Рисунок 1-5.jpg
    53,1 КБ · Просмотры: 183
Последнее редактирование модератором:
P

Pigeon

Меньше теории, больше практики.
Чувак это книга,вся практика в 3 главе.Там от один только кодинг почти..если ты считаешь теорию скучной,то 2 глава покажеться тебе очень скучной,по сути она реально скучная,там голый текст
 

Ondrik8

prodigy
Green Team
08.11.2016
1 129
3 187
BIT
0
я уже писал про нее)) и о лучшем, даже больше, выдал статьи)
 

n3d.b0y

Red Team
19.01.2018
181
472
BIT
73
Никто простыни читать не будет. Разделять на части - оптимальный вариант.

Админы, сделайте раздел на сайте для переводов. Дайте права редактора человеку и пусть он там пилит переводы с нормальным оформлением - визуально не очень воспринимается такой объем текста в формате форума. А тут пускай публикует ссылки на новые переводы что бы плюсы мог собирать.

p.s Ну и если админам лишняя работа не нужна то пели лучше данный материал в PDF. Сделай одну тему на форуме и обновляй там инфу да бы кому интересна был в курсе новостей о новой информации.
 
Последнее редактирование:
  • Нравится
Реакции: Глюк, Pigeon и Ondrik8
P

Pigeon

Админы, сделайте раздел на сайте для переводов. Дайте права редактора человеку и пусть он там пилит переводы с нормальным оформлением - визуально не очень воспринимается такой объем текста в формате форума. А тут пускай публикует ссылки на новые переводы что бы плюсы мог собирать.

p.s Ну и если админам лишняя работа не нужна то пели лучше данный материал в PDF. Сделай одну тему на форуме и обновляй там инфу да бы кому интересна был в курсе новостей о новой информации.

Я думаю сделать так, перевести все главы,запилить некую pdf-книжку с теми табличками и примерами кодов, и потом просто написать краткую статья,в которой будет всего лишь этот документ,потому что там идет очень много отсылок к следующим главам,так сказать на опережение,поэтому выпускать отдельные статьи с переводом неудобно, да и воспринимаются они плохо, поэтому через недели 3, я думаю, не толкьо переведу всю книгу,но и сделаю pdf документ
 
  • Нравится
Реакции: n3d.b0y и Глюк

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
1
Пили по частям , так будет вернее . К тому же ,эти части , скорее всего , смогут опубликовать в Телеграмме ресурса.
@rink0 скромный парень просто (админ телеграмма codeby) , и не всегда Вам скажет ,что длинные тексты не уложатся в его формат (может , ошибаюсь).
Поэтому ,самое удобное ,разбивать объёмные материалы на составляющие. И в этом ,полностью согласен с @WebWare Team , потому что ,это будет гораздо читабельнее.
 
  • Нравится
Реакции: rink0 и n01n02h

Глюк

Red Team
03.01.2018
1 184
1 877
BIT
104
В этом есть свои минусы: PDF формат прямой конкурент посещаемости портала. Вам это надо ?
А если, как вариант, дать возможность и время Pigeon перевести всю книгу. И уже выложить полный вариант. Со всеми ссылками, аннотациями.
 
P

Pigeon

Я решил сделать некое комбо,чтобы попытаться удовлетворить всем.Я буду делать скрины pdf документа(pdf удобнее,но скрины,чтобы не составлять конкуренцию посещения портала),по частям(кто проголосовал за данный вариант) и тут же выпускать 2 часть,будет выглядеть как целиком вся глава(кто проголосовал за главы).
 
  • Нравится
Реакции: Глюк

rink0

Green Team
28.11.2017
62
65
BIT
0
Пили по частям , так будет вернее . К тому же ,эти части , скорее всего , смогут опубликовать в Телеграмме ресурса.
@rink0 скромный парень просто (админ телеграмма codeby) , и не всегда Вам скажет ,что длинные тексты не уложатся в его формат (может , ошибаюсь).
Поэтому ,самое удобное ,разбивать объёмные материалы на составляющие. И в этом ,полностью согласен с @WebWare Team , потому что ,это будет гораздо читабельнее.
Всё верно, спасибо)
Они улаживаются, но telegraph через раз включает instant view. По-этому большие тексты приходится обходить
 
  • Нравится
Реакции: Vertigo
0

0v3r_Cr1t

Просто оставлю это тут потому что это вот всё вместо тысячи слов
[automerge]1523416477[/automerge]
Никто простыни читать не будет. Разделять на части - оптимальный вариант.
Я читаю простынки, выискивая то что мне нужно среди бескрайних морей текста, это развивает скилы Шерлока и данные скилы будут очень полезны молодому поколению
А твитеризация очень хреновая тенденция!
Я считаю что в инстантвайв в тг канале можно публиковать оглавлениеии краткую выжимку, в конце оставляя ссылку на полную статью на форуме а на форуме публикуя пдф если кто то не осиливает чтение с форума. А подстраиваться под поколение твиттера не стоит, это техническая литература и дробить её не нужно, потому как потом скакать от темы к теме такое себе занятие ( особенно когда будешь искать какой либо комментарий но забыл в какой из овер 100 мелких тем он находится)
 
Последнее редактирование модератором:
  • Нравится
Реакции: Глюк
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!