Объяснение safetynet: почему android pay и другие приложения не работают на устройствах с root-доступом

Before You Begin

This guide assumes you»ve already installed Magisk, which is a systemless root utility that can hide its presence from SafetyNet. If you haven»t already done this, head to get started.

When it comes to actually checking your SafetyNet status, the easiest way to do that would be to open the Magisk Manager app and tap the «SafetyNet Check» button at the bottom of the screen. So while following this guide, periodically re-check your SafetyNet status by opening the Magisk Manager app, swiping down to refresh, then tapping the «SafetyNet Check» button again.

Checking SafetyNet status in Magisk Manager.

Step 8: If All Else Fails, Start from Scratch

We»ve saved this step for last because it»s a catchall solution, but it»s a painful pill to swallow. If all else fails, simply restore your device»s stock firmware, reinstall custom recovery, then flash the Magisk ZIP that you can download in the Magisk Manager app. This will work in almost all cases.

The process of restoring your stock firmware will vary depending on the device, but if your phone has a bootloader menu that supports Fastboot commands, we»ve covered the process at . Failing that, your best bet would be to do a Google search for «restore stock firmware .» When you»re done there, you can reference for re-installing TWRP.

So have you finally solved your CTS profile mismatch issues? Do you have any other tips that will help get people past that dreaded SafetyNet check? If so, drop us a line in the comment section below.

О Check Point Software.

Check Point Software Technologies Ltd. является ведущим поставщиком решений по кибербезопасности для государственных и корпоративных предприятий по всему миру. Ее решения защищают клиентов от кибер-атак с лидирующим в отрасли показателем выявления вредоносных программ, шифровальщиков и других видов атак. Check Point предлагает многоуровневую архитектуру безопасности, которая защищает облачные, сетевые данные и информацию, хранящуюся на мобильных устройствах, а также предоставляет наиболее полную и интуитивно понятную систему управления безопасностью с одной точкой контроля. Check Point защищает более 100 000 организаций всех размеров по всему миру.

Перевод сделан со статьи: https://pages.checkpoint.com

Советы атакующим: Как добавить сертификаты read-only в системные директории?

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

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

adb root # запуск с правами root 

adb remount  # переводит раздел system в режим read-write

adb ls /data/misc/user/0/cacerts-added  # просмотр сертификатов, пользователя 

adb pull /data/misc/user/0/cacerts-added/cert.0  # вытащить с устройства на компьютер добавленный сертификат 

adb push cert.0 /system/etc/security/cacerts/  # перенести сертификат с ПК на устройство

  1. Простой способ — воспользоваться плагином Magisk AlwaysTrustUserCerts. Он всё сделает сам. От вас требуется только поставить сертификат и перезагрузить телефон. И вуаля — сертификат окажется в нужном хранилище.

Как говорилось выше, существует проверка SafetyNet, которая чутко реагирует на то, скомпрометирован ли телефон. То есть проверяет наличие root-прав. Пентестеру нужно проксировать трафик, то есть нужен доверенный системный сертификат, следовательно, требуются root права. Однако в таком случае не будет проводиться проверка, так как нарушена целостность устройства, а значит и  приложение работать не будет. Есть выход — можно воспользоваться Magisk hide и в Burp поставить игнорирование запросов на Google.

Как обойти SafetyNet на Android 12 с root-доступом

Есть способ обойти SafetyNet на устройствах Android 12 с root-доступом. Имейте в виду, что это руководство предназначено для тех, кто уже внедрил свое устройство с помощью Magisk и уже установил приложение Magisk на своем устройстве. Мы также предполагаем, что пользователь знаком с рутированием и использованием Magisk.

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

1. Установите конфигурацию MagiskHide Props.

  • Во-первых, перейдите в приложение Magisk на своем устройстве с Android 12 с root-доступом.
  • Затем перейдите в раздел Модули и найдите MagiskHide Props Config.
  • Теперь нажмите на опцию «Загрузить» рядом с ним, и после завершения загрузки нажмите «Установить». Теперь дождитесь завершения процесса установки.
  • После завершения установки перезагрузите систему, нажав кнопку «Перезагрузить» в правом нижнем углу экрана.

2. Принудительная базовая аттестация

  • Сначала установите Приложение Termux на вашем устройстве.
  • Теперь откройте приложение Termux и введите команду ниже:

на -c реквизиты

  • Теперь вы получите доступ SuperUser. Включите его, нажав на Grant.
  • Теперь в терминале запустится конфигурация MagiskHide Props.
  • Введите 2 (число), а затем нажмите Enter, чтобы выполнить аттестацию базового ключа.
  • Вы попадете на страницу подтверждения ключа Force Basic.
  • Здесь выберите Nexus 6P или Pixel 3A, чтобы обойти SafetyNet на Android 12 с root-доступом.
  • Выбрав любой из двух вариантов, введите d и нажмите Enter.
  • ‌Введите 7 (Google) и снова нажмите Enter.
  • Затем вам нужно ввести 5 (Google Nexus 6P), а затем снова нажать Enter.
  • ‌Теперь введите y (да) и нажмите Enter. Повторите этот шаг. Это подтвердит выбранное вами значение и перезагрузит ваше устройство.

3. Включите MagiskHide

  • Запустите приложение Magisk после перезагрузки устройства.
  • Перейдите в Настройки, нажав на значок в правом верхнем углу интерфейса.
  • Теперь сдвиньте вниз и включите MagiskHide, включив его Toggle.

4. Установите модуль Riru.

  • Этот шаг включает установку модуля Riru, который также необходим для обхода SafetyNet на Android 12 с root-доступом.
  • Перейдите в приложение Magisk и перейдите в раздел Модули.
  • ‌ Найдите и загрузите модуль Riru.
  • ‌Нажмите кнопку установки и дождитесь завершения установки.
  • ‌Нажмите кнопку перезагрузки после завершения установки.

5. Исправление Flash SafetyNet.

Благодарность за этот модуль принадлежит разработчику XDA. kdrag0n что помогает нам обойти SafetyNet на Android 12 с root-доступом. Выполните следующие действия:

  • Сначала загрузите Универсальный модуль SafetyNet Fix Magisk на вашем устройстве.
  • Затем перейдите в приложение Magisk и откройте раздел Модули.
  • Затем выберите «Установить из хранилища» и найдите модуль Magisk Universal SafetyNet Fix, который вы скачали по приведенной выше ссылке.
  • Затем выберите модуль для его установки.
  • После завершения установки нажмите кнопку «Перезагрузить».
  • После этого снова откройте приложение Magisk. Теперь перейдите к проверке Check SafetyNet. Он может попросить вас загрузить проприетарный код. Нажмите на ОК.
  • Благодаря этому ваше устройство не пройдет проверку Google SafetyNet.

Итак, это было с нашей стороны, как обойти SafetyNet на Android 12. Мы надеемся, что вы нашли это руководство полезным. Дайте нам знать, что вы думаете, в разделе комментариев ниже.

Шаг 8: Если все остальное не работает, начните с нуля

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

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

Компанией Google разработана специальная проверка SafetyNet, предназначенная для обеспечения безопасности функционирования мобильных устройств на ОС Android. Приложение постоянно анализирует деятельность программ, установленных на телефоне, посредством технологии машинного обучения и осуществляет их сравнение с образцами. Если фиксируется несоответствие работы какого-либо сервиса с его образцом из Google Play, то в автоматическом режиме производится его блокировка с последующим удалением.

Однако может возникнуть ситуация, когда приложение вследствие ошибок в прошивке может заблокировать даже доступ к сервисам Google Pay, банковским ресурсам и мобильным играм. Решение проблемы кроется в использовании утилиты Magisk.

SafetyNet: как Google узнает, что вы загрузили свой телефон Android

СВЯЗАННЫЙ: Устали от кражи вашей кредитной карты? Используйте Apple Pay или Android Pay

Устройства Android предлагают « API SafetyNet », который является частью уровня Сервисов Google Play, установленного на одобренных Google устройствах Android. По словам Google, этот API «предоставляет доступ к службам Google, которые помогают вам оценить здоровье и безопасность устройства Android». Если вы разработчик Android, вы можете вызвать этот API в своем приложении, чтобы проверить, не было ли подделано ваше устройство.

Этот API-интерфейс SafetyNet разработан для проверки того, не было ли подделано какое-либо устройство — было ли оно пользователем root, запущено ли пользовательское ПЗУ или, например, было ли оно заражено вредоносным ПО низкого уровня.

Устройства, которые поставляются с Google Play Store и другими установленными приложениями, должны пройти Google Android «Compatibility Test Suite». Укоренение устройства или установка пользовательского ПЗУ предотвращает совместимость устройства с CTS. Вот как API SafetyNet может определить, являетесь ли вы пользователем root, — он просто проверяет совместимость с CTS. Точно так же, если вы получаете устройство Android, которое никогда не поставлялось с приложениями Google — например, один из этих планшетов стоимостью 20 долларов, поставляемых непосредственно с завода в Китае, — оно не будет считаться «совместимым с CTS», даже если вы его не рутировали. ,

Чтобы получить эту информацию, Google Play Services загружает программу с именем «snet» и запускает ее в фоновом режиме на вашем устройстве. Программа собирает данные с вашего устройства и регулярно отправляет их в Google. Google использует эту информацию для самых разных целей, от получения картины более обширной экосистемы Android до определения того, было ли взломано программное обеспечение вашего устройства. Google не объясняет, что именно ищет snet, но, скорее всего, snet проверяет, был ли ваш системный раздел изменен по сравнению с заводским состоянием.

Вы можете проверить состояние SafetyNet вашего устройства, загрузив приложение, такое как Образец помощника SafetyNet или SafetyNet Playground . Приложение спросит службу Google SafetyNet о состоянии вашего устройства и сообщит вам ответ, полученный от сервера Google.

Для получения более подробной технической информации прочитайте эту запись в блоге, написанную Джоном Козыракисом, техническим стратегом в компании Cigital, занимающейся защитой программного обеспечения. Он копался в SafetyNet и объяснял больше о том, как это работает.

Шаг 1. Избавьтесь от SuperSU и используйте MagiskSU с Magisk Hide

Наиболее вероятной причиной несоответствия профиля CTS является приложение для корневого управления, которое не скрывается от SafetyNet. Так обстоит дело с SuperSU от Chainfire, который является самым популярным средством управления корневым доступом.

Скорее всего, вы изначально рутировали свой телефон с помощью SuperSU ZIP или CF Auto Root, которые устанавливают SuperSU как приложение для управления root по умолчанию. Если ты это сделал, и тогда установленный Magisk, оставшиеся корневые двоичные файлы от SuperSU вызовут отключение SafetyNet.

Не пропустите: как переключиться с SuperSU на Magisk, чтобы обойти SafetyNet

Как только вы это сделаете, убедитесь, что в вашем приложении Magisk Manager включена опция «Magisk Hide». Оттуда вы можете захотеть скрыть дополнительные приложения с помощью Magisk Hide, что существенно мешает приложениям знать, что вы получили root-права.

Для этого перейдите в боковое меню навигации в приложении Magisk Manager и выберите «Magisk Hide». Отсюда может быть полезно установить флажки рядом с Google Play магазин а также Google Services Framework а также с любым другим приложением, с которым у вас возникли проблемы с SafetyNet.

Switch From SuperSU to MagiskSU to bypass SafetyNet

CTS Profile Mismatch Error is, in majority cases, caused because of the root management app. SuperSU is one of the most popular root management app in the market. But unfortunately, it’s not systemless and doesn’t hide from SafetyNet. Therefore, it’s highly likely that you will face CTS profile mismatch errors. So, first thing you need to do is to switch from SuperSU to MagiskSU to Fix CTS profile mismatch errors. Follow below steps carefully to successfully switch from SuperSU to MagiskSU.

  1. Uninstall Xposed Installer if it’s already installed on your device. To keep using Xposed modules, you can install systemless version of Xposed using Magisk. Once it’s uninstalled, reboot your device.
  2. As you rooted your device so it’s obvious that you must have installed apps which changed the core system files. You need to uninstall all such apps, or undo any changes made in the system files. The easiest way to revert back all the changes is to Flash the Stock System Image of your phone.
  3. Now you need to Unroot your Android Device. To do so, launch SuperSU and head towards Settings. In Settings, you will find an option called “Full Root”, tap on it and then tap on Continue. Here tap on “Yes” when it asks you that if you want to restore the stock boot image.
  4. Next, it will ask if you want to restore the stock recovery image. Tap on “No” option as TWRP custom Recovery is required to flash Magisk.
  5. Now open the Magisk Manager App and head towards the Install section. Here tap on the option named “Download”. Once the file is downloaded, reboot your device into recovery mode. Once you are in TWRP menu tap on Install and select Magisk.zip from the MagiskManager folder. To install the ZIP file, slide the button to the right and when finished, tap on ‘Reboot System.’
  6. Now go to Magisk Manager App >> Settings >> here enable Magisk Hide, BusyBox , and Systemless hosts options. The last thing is to clear Google Play Store data, to do so go to Settings > Apps > Play Store > Manage Space > Clear Data.

This is it! This should fix CTS profile mismatch errors. If the error is still bothering you then head towards the next solution.

Как пройти аттестацию SafetyNet на устройствах Android

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

С постепенным переходом к стратегии аттестации оборудования Google полагается на безопасность Trusted Execution Environment (TEE) телефона или специальный аппаратный модуль безопасности (HSM) для обнаружения несанкционированного доступа. Поиск критической уязвимости безопасности в изолированной защищенной среде устройства и использование ее для подделки ответа SafetyNet на стороне клиента не может быть возможным подходом, но существуют другие способы обойти препятствие.

Вот некоторые из известных способов пройти SafetyNet:

1. Восстановление оригинальной прошивки и переблокировка загрузчика

Это, пожалуй, самый простой способ пройти SafetyNet, но он имеет свои достоинства и недостатки. Все, что вам нужно сделать, это найти правильную прошивку для вашего Android-устройства, прошить ее и, наконец, повторно заблокировать загрузчик. Конечно, вы потеряете большинство наворотов моддинга Android, но на самом деле это имеет смысл, когда вам нужно использовать свое устройство в управляемой среде со строгими политиками безопасности или вы пытаетесь продать свое устройство.

2. Использование Magisk

Если у вас есть устаревший Android-смартфон, Magisk — лучший способ пройти SafetyNet без особых хлопот. Несмотря на то, что текущий канарский канал Magisk больше не поддерживает MagiskHide, вы все равно можете придерживаться последней стабильной версии (v23.0) и использовать MagiskHide, чтобы скрыть статус root от приложений. Кроме того, вы можете установить модули Magisk, такие как MagiskHide Props Config, чтобы изменить отпечаток пальца устройства для прохождения SafetyNet.

Говоря о канале Canary, новая функция Magisk «DenyList» представляет собой интересную разработку, которая позволяет пользователям назначать список процессов, в которых Magisk отклоняет дальнейшие модификации и отменяет все сделанные изменения. При соответствующей конфигурации его также можно использовать для прохождения SafetyNet в некоторых сценариях.

Форумы Magic XDA

Наконец, есть Shamiko — незавершенный модуль, написанный поверх Zygisk (Magisk в процессе зиготы). Он считывает список приложений, которые нужно скрыть из списка запрещенных Magisk, чтобы скрыть корень Magisk, сам Zygisk и модули Zygisk, чтобы обойти SafetyNet. Однако Shamiko может работать только после отключения функции DenyList.

3. Использование Universal SafetyNet Fix

Обойти аппаратную технику аттестации SafetyNet от Google немного сложно, но не совсем невозможно. Проект Universal SafetyNet Fix, разработанный старшим членом XDA kdrag0n, ловко выполняет эту задачу, заставляя базовую аттестацию выполнять проверки, поддерживаемые аппаратным обеспечением.

Примечательно, что Universal SafetyNet Fix зависит от Magisk, когда дело доходит до прохождения базовой части аттестации. Разработчик предлагает две разные сборки исправления: вариант Zygisk для Magisk Canary и вариант Riru для стабильного Magisk.

Универсальное исправление SafetyNet: репозиторий GitHub ||| Тема обсуждения XDA

4. их8сн

Если вы не хотите полагаться на Magisk для прохождения аттестации SafetyNet, вы можете попробовать экспериментальное дополнение под названием ih8sn. После применения он может подделать множество значений реквизита, чтобы обойти проверки SafetyNet, такие как модуль MagiskHide Props Config, но в первую очередь нет никакой зависимости от Magisk.

Репозиторий ih8sn на GitHub

Устройства: уязвимы по своей природе

В исследовании «Achilles», о котором говорилось ранее, мы представили тот факт что по меньшей мере 40% мобильных устройств в мире по своей природе уязвимы для кибер-атак. Как мы видим, уязвимости присущи не только операционным системам мобильных устройств, но и их аппаратному обеспечению. Это означает, что когда угроза глубоко укоренилась в устройстве она часто тщательно скрыта и, как правило, атакует врасплох, когда пользователи и организации менее всего подготовлены.

Влияние аппаратных уязвимостей.

Если уязвимость носит аппаратный характер, как, например, в случае с чипом Qualcomm DSP — атака может привести к следующим последствиям для пользователей:

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

Влияние аппаратных операционных систем.

Android.

В 2020 году в Android были обнаружены многочисленные уязвимости, наиболее серьезные из них могут позволить удаленное выполнение кода в контексте привилегированного процесса. Эта уязвимость позволяет злоумышленнику устанавливать программы, просматривать, изменять или удалять данные, а также создавать новые учетные записи с полными правами.

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

Что касается хороших новостей — Samsung исправила «бескликовую» уязвимость, которая затрагивала все смартфоны компании с 2014 года, а также уязвимость, вызывающую сбои в работе устройств при получении обновлений безопасности.

iOS.

Основные уязвимости, обнаруженные в iOS в 2020 году:

  • Ошибка «входа в систему с помощью Apple», которая делает любую учетную запись уязвимой для атаки с целью перехвата;
  • «Бескликовая» уязвимость, которая позволяет злоумышленникам удаленно выполнять код и атаковать другие устройства через отправку электронных писем, которые потребляют много памяти;
  • Эксплойт, который может привести к перезагрузке любого находящегося в радио-диапазоне устройства iOS без вмешательства пользователя;
  • CheckRa1n и ROM — уязвимости для джейлбрейка;
  • LightSpy — модульная вредоносная программа, использующая уязвимость удаленного выполнения кода в браузере Safari. Этот вредонос перехватывает данные из iOS Keychain, который отвечает за обработку хранящихся на устройстве учетных данных.

MDM: Мощный вектор атаки.

В течение 2020 года компания Check Point наблюдала событие с далеко идущим значением, а именно —  впервые корпоративный MDM был использован в качестве вектора атаки.

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

Если MDM взломан — то взломана и вся мобильная сеть.

Именно так новый вариант вредоносной программы «Cerberus» заразил более 75% устройств одной их компаний через корпоративный диспетчер мобильных устройств. Эта вредоносная программа очень опасна поскольку после ее установки она может собирать большое количество конфиденциальных данных, включая учетные данные пользователей, и отправлять их на удаленный командно-контрольный C&C-сервер.

Step 2: Still No Good? Try Flashing unSU

If the above guide didn»t fix your CTS profile mismatch problems and you»re certain you»ve undone any system mods, it»s possible that you still have a few bits of data left over from SuperSU. The «Full Unroot» option in the SuperSU app is supposed
to get rid of everything, but it»s not always perfect.

So to make sure you»ve completely eradicated SuperSU and its binaries, you can use a flashable ZIP created by developer osm0sis . To start, just tap the following link from your Android device, then boot into custom recovery.

From there, tap the «Install» button in TWRP»s main menu, then navigate to your Download
folder and select UPDATE-unSU-signed.zip
. After that, swipe the slider to flash the ZIP and eradicate all traces of SuperSU, and when you»re done, go back and re-flash the Magisk ZIP. After rebooting, check your SafetyNet status again — if you still don»t pass, move onto the next step.

Некоторые приложения могут быть обмануты

Google играет в игру в кошки-мышки с SafetyNet, постоянно обновляя ее, пытаясь опередить людей. Например, разработчик Android Chainfire создал новый метод рутирования устройств Android без изменения системного раздела, известный как «системный рут». Изначально SafetyNet не обнаружил подделку таких устройств, и Android Pay сработал, но в конечном итоге SafetyNet был обновлен для обнаружения этого нового метода рутирования. Это означает, что Android Pay больше не работает вместе с системным рутом.

СВЯЗАННЫЕ: Забудьте мигающие диски: Используйте Xposed Framework для Tweak Your Android

В зависимости от того, как приложение проверяет root-доступ, вы можете его обмануть. Например, как сообщается, существуют способы получения root-прав на некоторые устройства Samsung без отключения защиты KNOX, что позволит вам продолжать использовать Samsung Pay.

В случае приложений, которые просто проверяют наличие корневых приложений в вашей системе, есть модуль Xposed Framework с именем RootCloak, который, как сообщается, позволяет вам обманным путем заставить их работать в любом случае. Это работает с приложениями, такими как DirecTV GenieGo, Best Buy CinemaNow и Movies от Flixster, которые обычно не работают на корневых устройствах. Однако, если бы эти приложения были обновлены для использования сети безопасности Google, их было бы не так просто обмануть.

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

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

Изображение предоставлено: Danny Choo на Flickr

Вход в безопасный режим

Вариант актуален для аппаратов со сканером отпечатков пальцев. Для того чтобы войти в безопасный режим, нужно выключить гаджет и снова включить. Когда на дисплее появится фирменный логотип Ксиаоми, то начинаем тапать по дактилоскопическому датчику до тех пор, пока девайс полностью не загрузится. После этого в нижней части экрана должна появиться надпись «Безопасный режим». Если надпись не появилась, то нужно повторить всю последовательность действий, изменив при этом скорость тапов.

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

Возвращение в нормальный режим осуществляется путем перезагрузки.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
VlikkomТechn
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: