По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Во любой цепочке безопасности самым слабым звеном был и остается человек. Забывчивые сотрудники, которые пароли хранят в открытом виде, иногда даже приклеивают на монитор; любопытные пользователи, которые не прочь покликать по первой попавшейся кнопке или ссылке. Чем сидеть и ждать, когда кто-то извне взломает и потом принять меры, лучше самому выявить таких нарушителей и предотвратить взлом со всеми его последствиями. Одной из наиболее распространённых видов атак является фишинг атака. Фишинг это такой вид атаки, когда злоумышленник создает поддельную страницу, которая точь-в-точь копирует легальный сайт. Невнимательный пользователь перейдя по поддельной ссылке попадает на эту страницу. Так как внешний вид похож на доверенный ресурс, никто не догадывается проверить URL. Далее он, как ни в чем не бывало, вводит свои данные и нажимает на соответствующую кнопку. Страница перезагружается и перебрасывает пользователя уже на реальный сайт, а последний думает, что где-то ввёл что-то неправильно и еще раз вводит. А тем временем злоумышленник уже получил нужную ему информацию. Это могут быть пароли, номера кредитных карт и т.п. Данную атаку может провернуть даже начинающий хакер. Но мы лишим его такого удовольствия и сами раскинем свою сеть и посмотрим кто туда попадётся. В этом деле нам поможет бесплатный фреймворк gophish. Фреймворк мультиплатформенный, но я предпочитаю и советую поднять всё это на Linux машине. Подойдёт абсолютно любая версия. Перед тем как начать, посмотрите наш ролик "Информационная безопасность компании. Никаких шуток": Погнали. На сайте разработчика переходим по ссылке Download и качаем нужный нам дистрибутив. На Linux машину можно скачать сразу. Копируем ссылку на zip архив и в терминале вводим: wget https://github.com/gophish/gophish/releases/download/v0.8.0/gophish-v0.8.0-linux-64bit.zip Далее разархивируем скачанный файл: unzip gophish-v0.8.0-linux-64bit.zip Если в системе нет пакета unzip качаем его. Для Debian/Ubuntu apt-get install unzip Для RedHat/CentOS: yum install unzip Затем открываем файл config.json любым удобным вам редактором: nano config.json Меняем указанные ниже значения admin_server.listen_url 127.0.0.1:3333 IP/Port админ панели gophish admin_server.use_tls False Нужно ли защищённое соединение с админ панелью admin_server.cert_path example.crt Путь к SSL сертификату admin_server.key_path example.key Путь к приватному ключу SSL phish_server.listen_url 0.0.0.0:80 IP/Port самого фишинг сервера, куда переходят пользователи по ссылке Здесь первый параметр я поменял на 0.0.0.0:3333 так как мой сервер находится за межсетевым экраном и доступа извне туда нет. Но при необходимости можно организовать это. Также я отключил требование TLS. Во внутренней сети особой надобности в нем нет. Далее просто запускаем файл gophish командой: ./gophish И переходим на админскую часть нашего фишинг сервера. По умолчанию имя пользователя admin, а пароль gophish. Всё это можно потом поменять, но по порядку. При входе открывается панель, где видны проведённые атаки и результаты. Кликнув на иконке статистики можно перейти к детальным отчётам. Тут отображается вся информация о пользователях, которые перешли по ссылке, ввели данные. Есть еще отчёт по открытым письмам, но если пользователь не кликнул на ссылку в письме и не перешёл на нашу фишинговую страницу, то это значение не меняется. Поэтому, на мой взгляд, это просто лишняя информация. Теперь начнём непосредственно настраивать систему и готовить нашу атаку. Пойдем снизу вверх. На вкладке User Management можно создать новых пользователей. Для этого переходим на нужную страницу и нажимает на кнопку Add user: Хотя и пользователям можно назначать права, особого смысла тут тоже нет. Потому, что пользователь, во-первых, не видит никакие кампании другого пользователя, во-вторых, имеет те же самые права, что и администратор, с тем лишь отличием, что он не может создавать других пользователей или сбрасывать их пароли. На этой всё странице интуитивно понятно, так что не буду слишком углубляться. На вкладке Account Settings можно поменять имя пользователя пароль текущего пользователя. Следующая вкладка Sending Profiles. Вот тут то и переходим к этапу подготовки нашей атаки. На этой странице настраиваются профили, от имени которых будет идти атака. Вводим название профиля, e-mail, с которого будут рассылаться письма, адрес SMTP сервера и порт, имя пользователя и пароль при необходимости. Тут бы я хотел остановиться поподробней. Когда планировали свою атаку, мы решили создать почту на общедоступном почтовом ресурсе. Но там стоял лимит на число получателей, что в принципе и правильно. Поэтому первая наша кампания провалилась. И тогда мы оперативно создали новую DNS запись на нашем AD и провернули затею. Создание доменной записи я тут не буду объяснять, ибо этим занялись наши сисадмины, за что им спасибо. Далее можно создать mail заголовки, но для тестовой среды это не критично. После ввода данных можно отправить тестовое письмо, дабы проверить работоспособность нашего профиля: Затем переходим к созданию самой страницы. Делается это на вкладке Landing Pages. Здесь можно пойти двумя путями: сверстать свою страницу с нуля или же просто скопировать с реального сайта и подкорректировать нужное. Для этого предусмотрен очень удобный инструмент в самой системе. Нажав на кнопку Import Site вы можете ввести URL любого сайта и фреймворк сам подтянет оттуда весь дизайн, только учтите, что для этого системе нужен доступ в интернет. Чтобы перехватывать введённые данные, нужно поставить соответствующие галочки. Capture Submitted Data и Capture Passwords. Учтите, что пароли не шифруются и хранятся в базе системы в открытом виде! Также не забываем прописать адрес ресурса, куда будет перенаправляться пользователь после ввода данных. Следующий шаг создание шаблона письма, для чего переходим на страницу Email Template. Тут тоже можно и самому набрать текст или же импортировать уже готовое письмо. Ещё один минус, нельзя вставлять фото из локального ресурса, что досадно. Можно только вставить ссылку на картинку, что в моём случае тоже не сработало картинка не открывалась. Но есть и удобные фичи: переменные например. Ниже приведён список переменных, которые можно указать в тексте, создавая персонализированные письма. {{.RId}} Уникальный ID цели {{.FirstName}} Имя цели {{.LastName}} Фамилия цели {{.Position}} Должность {{.Email}} Почтовый адрес {{.From}} Отправитель {{.TrackingURL}} Ссылка отслеживания {{.Tracker}} Псевдоним <img src="{{.TrackingURL}}"/> {{.URL}} Адрес фишинг ссылки {{.BaseURL}} Та же фишинг ссылка, только без RID Далее создаем пользователя или группу пользователей, которые получат наше письмо. Делается это на вкладке Users & Groups. Здесь тоже разработчики предусмотрели массовый импорт адресов. Если у вас настроен AD и Exchange Server, попросите админов отдать вам список всех акттвных пользователей в формате CSV. Затем импортируйте их в систему. И, наконец, переходим к созданию самой атаки. Для этого переходим на вкладку Campaigns. Здесь в принципе дублируется основная панель. Выбираем New Campaign задаём название кампании, из выпадающих списков выбираем ранее созданные шаблоны письма и фейковой страницы, указываем профиль, с которого пойдут письма, и определяем целевую группу. В URL прописываем адрес нашего сервера. Здесь можно написать и IP или же, что еще лучше, задать доменное имя, которое похоже на доверенный ресурс. В этом случае пользователь в адресной строке увидит не IP, а полноценный домен. Также можно выставить дату начала кампании. И, собственно, запускаем кампанию и ждем пока кто-то попадётся на нашу удочку. Система заботливо показывает текущий статус отправки, и, в случае ошибки, указывает почему не удалось отправить письмо. На этом, пожалуй все. Система очень лёгкая, интуитивно понятная. Удачи в реализации!
img
Выпущена новая версия Ubuntu и мы расскажем, что в ней нового, а также расскажем как на нее обновиться. Ubuntu 20.04, под кодовым названием “Focal Fossa” является LTS версией, и пользователи получат поддержку и обновления безопасности до апреля 2025 года. Ubuntu 20.04 доступна для загрузки в версиях для настольного компьютера, сервера и, конечно, всех зависимых версий Ubuntu, таких как lubuntu, xubuntu, Kubuntu и так далее. Этот релиз приносит некоторые из давно ожидаемых изменений, так что давайте взглянем на них. Что нового в Ubuntu 20.04 ? Улучшение производительности оболочки GNOME Когда вы установите Ubuntu 20.04, первое, что вы заметите, это более быстрое время отклика среды рабочего стола GNOME 3.36. Большая часть работы была проделана в ядре GNOME Shell для улучшения взаимодействия с конечным пользователем. Linux Kernel 5.4 Ubuntu 20.04 LTS работает под управлением версии ядра Linux 5.4, которое включает режим блокировки и поддержку exFAT. Kernel 5.4 обеспечивает улучшенную поддержку оборудования, технологию защищенного VPN, поддержку WireGuard, поддержку Livepatch, а также обновления ядра без перезагрузки, что меняет правила игры для серверов под управлением Ubuntu 20.0 Более быстрая поддержка ZFS Ubuntu 20.04 LTS теперь поддерживает ZFS, которая предоставляет множество расширенных функций файловой системы, таких как клоны, расширенные снепшоты и так далее. Она была доступна в Ubuntu 19.10 в качестве экспериментальной функции. Эта поддержка повышает надежность операционной системы Ubuntu в производственной и корпоративной среде. Фракционное масштабирование С Ubuntu 20.04 вы можете теперь наслаждаться дробным масштабированием с мониторами высокого разрешения, дисплеями. Он имеет масштабируемые проценты в настройках с опциями - 100%, 125%, 150%, 175% и 200%. Теперь вам не нужно запускать команды настройки в GNOME, чтобы включить его, поскольку он доступен по умолчанию. Поддержка нескольких мониторов Если у вас есть несколько мониторов, Ubuntu 20.04 упрощает установку и настройку с помощью таких параметров, как позиционирование, масштабирование, поле входа в систему и так далее. Обновленная блокировка и экран входа Экран входа в систему и блокировки полностью обновлен с красивым и чистым внешним видом. Параметр среды рабочего стола находится в правом нижнем разделе, где вы можете выбрать между опциями «Ubuntu», «Ubuntu on Wayland» и так далее. Новый Темный Режим и Обои Ubuntu 20.04 содержит встроенный темный режим с изменениями в теме по умолчанию. Иконки папок перешли от традиционного оранжевого цвета к темно-серому. Доступны три цвета окна - Светлый, Стандартный и Темный. Вы можете выбрать режимы через Настройки -> Внешний вид. Software как Snap Магазин Ubuntu Software остается популярным местом для поиска новых приложений, но для этого выпуска он поставляется в виде приложения Snap. Это не сильно влияет на ситуацию, поскольку это все тот же базовый инструмент, основанный на программном обеспечении GNOME, но упакованный в формате Snap. Обновленные приложения В Ubuntu 20.04 все приложения по умолчанию доступны в их последней версии. Firefox 75 Thunderbird 68.7 Rhythmbox 3.4 LibreOffice 6.4.2 OpenSSL 1.1.1d gcc 9.3.0 Files 3.36.1.1-stable Python 3.8 установлен по-умолчанию Приложение калькулятор теперь заменено apt версией вместо snap версии Удалено приложение Amazon Launcher OEM Vendor Logo во время загрузки Отныне вы можете видеть логотип OEM-производителя во время загрузки вашей системы вместе с логотипом Ubuntu с новой анимацией. Скачать Ubuntu 20.04 Перейдите по ссылке ниже, чтобы получить последний ISO-образ Ubuntu 20.04 LTS. Загрузите ISO и создайте загрузочную флешку для запуска Focal Fossa. Скачать Ubuntu 20.04 LTS Другие версии: Скачать Kubuntu 20.04 Скачать xubuntu 20.04 Скачать lubuntu 20.04 Скачать Ubuntu Budgie 20.04 Скачать Ubuntu Kylin Скачать Ubuntu MATE Скачать Ubuntu Studio Обновление до Ubuntu 20.04 с Ubuntu 18.04 и Ubuntu 19.10 Если вы используете Ubuntu 18.04 LTS, вы не увидите автоматического запроса на обновление до 20.04 до первого выпуска Focal Fossa, то есть до июля 2020 года. Поэтому, если вы хотите принудительно запустить его, откройте Software and Updates (Программное обеспечение и обновления), перейдите на вкладку Updates (Обновления) и измените notify me of new ubuntu version (уведомлять меня о новой версии Ubuntu) на any new version (любую новую версию), и вы должны получить запрос на обновление, после чего следуйте процессу обновления, как указано на экране. Если вы используете Ubuntu 19.10, встроенный инструмент Ubuntu Software Updater предложит вам получить новую стабильную версию Ubuntu. Ну и конечно, можно просто выполнить команды: # sudo apt update && sudo apt upgrade # sudo do-release-upgrade Вот и все, что касается обновлений для Ubuntu 20.04. Оставайтесь с нами!
img
Эта статья подробно объясняет функции и терминологию протокола RIP (административное расстояние, метрики маршрутизации, обновления, пассивный интерфейс и т.д.) с примерами. RIP - это протокол маршрутизации вектора расстояния. Он делится информацией о маршруте через локальную трансляцию каждые 30 секунд. Маршрутизаторы хранят в таблице маршрутизации только одну информацию о маршруте для одного пункта назначения. Маршрутизаторы используют значение AD и метрику для выбора маршрута. Первая часть статьи про базовые принципы работы протокола RIP доступна по ссылке. Административная дистанция В сложной сети может быть одновременно запущено несколько протоколов маршрутизации. Различные протоколы маршрутизации используют различные метрики для расчета наилучшего пути для назначения. В этом случае маршрутизатор может получать различную информацию о маршрутах для одной целевой сети. Маршрутизаторы используют значение AD для выбора наилучшего пути среди этих маршрутов. Более низкое значение объявления имеет большую надежность. Административная дистанция Протокол/Источник 0 Непосредственно подключенный интерфейс 0 или 1 Статическая маршрутизация 90 EIGRP 110 OSPF 120 RIP 255 Неизвестный источник Давайте разберемся в этом на простом примере: А маршрутизатор изучает два разных пути для сети 20.0.0.0/8 из RIP и OSPF. Какой из них он должен выбрать? Ответ на этот вопрос скрыт в приведенной выше таблице. Проверьте объявленную ценность обоих протоколов. Административное расстояние - это правдоподобие протоколов маршрутизации. Маршрутизаторы измеряют каждый источник маршрута в масштабе от 0 до 255. 0 - это лучший маршрут, а 255-худший маршрут. Маршрутизатор никогда не будет использовать маршрут, изученный этим (255) источником. В нашем вопросе у нас есть два протокола RIP и OSPF, и OSPF имеет меньшее значение AD, чем RIP. Таким образом, его маршрут будет выбран для таблицы маршрутизации. Метрики маршрутизации У нас может быть несколько линий связи до целевой сети. В этой ситуации маршрутизатор может изучить несколько маршрутов, формирующих один и тот же протокол маршрутизации. Например, в следующей сети у нас есть два маршрута между ПК-1 и ПК-2. Маршрут 1: ПК-1 [10.0.0.0/8] == Маршрутизатор OFF1 [S0/1 - 192.168.1.254] = = Маршрутизатор OFF3 [S0/1-192.168.1.253] = = ПК-2 [20.0.0.0/8] Маршрут 2: ПК-1 [10.0.0.0/8] == Маршрутизатор OFF1 [S0/0 - 192.168.1.249] == Маршрутизатор OFF2 [S0/0 - 192.168.1.250] == Маршрутизатор OFF2 [S0/1 - 192.168.1.246] == Маршрутизатор OFF3 [S0/0 - 192.168.1.245] == ПК-2 [20.0.0.0/8] В этой ситуации маршрутизатор использует метрику для выбора наилучшего пути. Метрика - это измерение, которое используется для выбора наилучшего пути из нескольких путей, изученных протоколом маршрутизации. RIP использует счетчик прыжков в качестве метрики для определения наилучшего пути. Прыжки - это количество устройств уровня 3, которые пакет пересек до достижения пункта назначения. RIP (Routing Information Protocol) - это протокол маршрутизации вектора расстояния. Он использует расстояние [накопленное значение метрики] и направление [вектор], чтобы найти и выбрать лучший путь для целевой сети. Мы объяснили этот процесс с помощью примера в нашей первой части этой статьи. Хорошо, теперь поймите концепцию метрики; скажите мне, какой маршрут будет использовать OFF1, чтобы достичь сети 20.0.0.0/8? Если он выбирает маршрут S0/1 [192.168.1.245/30], он должен пересечь устройство 3 уровня. Если он выбирает маршрут S0/0 [19.168.1.254/30], то ему придется пересечь два устройства уровня 3 [маршрутизатор OFF! и последний маршрутизатор OFF3], чтобы достичь целевой сети. Таким образом, он будет использовать первый маршрут, чтобы достигнуть сети 20.0.0.0/8. Маршрутизация по слухам Иногда RIP также известен как маршрутизация по протоколу слухов. Потому что он изучает информацию о маршрутизации от непосредственно подключенных соседей и предполагает, что эти соседи могли изучить информацию у своих соседей. Обновления объявлений RIP периодически транслирует информацию о маршрутизации со всех своих портов. Он использует локальную трансляцию с IP-адресом назначения 255.255.255.255. Во время вещания ему все равно, кто слушает эти передачи или нет. Он не использует никакого механизма для проверки слушателя. RIP предполагает, что, если какой-либо сосед пропустил какое-либо обновление, он узнает об этом из следующего обновления или от любого другого соседа. Пассивный интерфейс По умолчанию RIP транслирует со всех интерфейсов. RIP позволяет нам контролировать это поведение. Мы можем настроить, какой интерфейс должен отправлять широковещательную передачу RIP, а какой нет. Как только мы пометим любой интерфейс как пассивный, RIP перестанет отправлять обновления из этого интерфейса. Расщепление горизонта Split horizon-это механизм, который утверждает, что, если маршрутизатор получает обновление для маршрута на любом интерфейсе, он не будет передавать ту же информацию о маршруте обратно маршрутизатору-отправителю на том же порту. Разделенный горизонт используется для того, чтобы избежать циклов маршрутизации. Чтобы понять эту функцию более четко, давайте рассмотрим пример. Следующая сеть использует протокол RIP. OFF1-это объявление сети 10.0.0.0/8. OFF2 получает эту информацию по порту S0/0. Как только OFF2 узнает о сети 10.0.0.0/8, он включит ее в свое следующее обновление маршрутизации. Без разделения горизонта он будет объявлять эту информацию о маршруте обратно в OFF1 на порту S0/0. Ну а OFF1 не будет помещать этот маршрут в таблицу маршрутизации, потому что он имеет более высокое значение расстояния. Но в то же время он не будет игнорировать это обновление. Он будет предполагать, что OFF1 знает отдельный маршрут для достижения сети 10.0.0.0/8, но этот маршрут имеет более высокое значение расстояния, чем маршрут, который я знаю. Поэтому я не буду использовать этот маршрут для достижения 10.0.0.0/8, пока мой маршрут работает. Но я могу воспользоваться этим маршрутом, если мой маршрут будет недоступен. Так что это может сработать как запасной маршрут для меня. Это предположение создает серьезную сетевую проблему. Например, что произойдет, если интерфейс F0/1 OFF1 выйдет из строя? OFF1 имеет прямое соединение с 10.0.0.0/8, поэтому он сразу же узнает об этом изменении. В этой ситуации, если OFF1 получает пакет для 10.0.0.0/8, вместо того чтобы отбросить этот пакет, он переадресует его из S0/0 в OFF2. Потому что OFF1 думает, что у OFF2 есть альтернативный маршрут для достижения 10.0.0.0/8. OFF2 вернет этот пакет обратно в OFF1. Потому что OFF2 думает, что у OFF1 есть маршрут для достижения 10.0.0.0/8. Это создаст сетевой цикл, в котором фактический маршрут будет отключен, но OFF1 думает, что у OFF2 есть маршрут для назначения, в то время как OFF2 думает, что у OFF1 есть способ добраться до места назначения. Таким образом, этот пакет будет бесконечно блуждать между OFF1 и OFF2. Чтобы предотвратить эту проблему, RIP использует механизм подсчета прыжков (маршрутизаторов). Количество прыжков RIP подсчитывает каждый переход (маршрутизатор), который пакет пересек, чтобы добраться до места назначения. Он ограничивает количество прыжков до 15. RIP использует TTL пакета для отслеживания количества переходов. Для каждого прыжка RIP уменьшает значение TTL на 1. Если это значение достигает 0, то пакет будет отброшен. Это решение только предотвращает попадание пакета в петлю. Это не решает проблему цикла маршрутизации. Split horizon решает эту проблему. Если расщепление горизонта включено, маршрутизатор никогда не будет вещать тот же маршрут обратно к отправителю. В нашей сети OFF2 узнал информацию о сети 10.0.0.0/8 от OFF1 на S0/0, поэтому он никогда не будет транслировать информацию о сети 10.0.0.0/8 обратно в OFF1 на S0/0. Это решает нашу проблему. Если интерфейс F0/1 OFF1 не работает, и OFF1, и OFF2 поймут, что нет никакого альтернативного маршрута для достижения в сети 10.0.0.0/8. Маршрут отравления Маршрут отравления работает противоположном режиме расщепления горизонта. Когда маршрутизатор замечает, что какой-либо из его непосредственно подключенных маршрутов вышел из строя, он отравляет этот маршрут. По умолчанию пакет может путешествовать только 15 прыжков RIP. Любой маршрут за пределами 15 прыжков является недопустимым маршрутом для RIP. В маршруте, находящимся в неисправном состоянии, RIP присваивает значение выше 15 к конкретному маршруту. Эта процедура известна как маршрутное отравление. Отравленный маршрут будет транслироваться со всех активных интерфейсов. Принимающий сосед будет игнорировать правило разделения горизонта, передавая тот же отравленный маршрут обратно отправителю. Этот процесс гарантирует, что каждый маршрутизатор обновит информацию об отравленном маршруте. Таймеры RIP Для лучшей оптимизации сети RIP использует четыре типа таймеров. Таймер удержания (Hold down timer) - RIP использует удерживающий таймер, чтобы дать маршрутизаторам достаточно времени для распространения отравленной информации о маршруте в сети. Когда маршрутизатор получает отравленный маршрут, он замораживает этот маршрут в своей таблице маршрутизации на период таймера удержания. В течение этого периода маршрутизатор не будет использовать этот маршрут для маршрутизации. Период удержания будет прерван только в том случае, если маршрутизатор получит обновление с той же или лучшей информацией для маршрута. Значение таймера удержания по умолчанию составляет 180 секунд. Route Invalid Timer - этот таймер используется для отслеживания обнаруженных маршрутов. Если маршрутизатор не получит обновление для маршрута в течение 180 секунд, он отметит этот маршрут как недопустимый маршрут и передаст обновление всем соседям, сообщив им, что маршрут недействителен. Route Flush Timer - этот таймер используется для установки интервала для маршрута, который становится недействительным, и его удаления из таблицы маршрутизации. Перед удалением недопустимого маршрута из таблицы маршрутизации он должен обновить соседние маршрутизаторы о недопустимом маршруте. Этот таймер дает достаточно времени для обновления соседей, прежде чем недопустимый маршрут будет удален из таблицы маршрутизации. Таймер Route Flush Timer по умолчанию установлен на 240 секунд. Update Timer -В RIP широковещательная маршрутизация обновляется каждые 30 секунд. Он будет делать это постоянно, независимо от того, изменяется ли что-то в маршрутной информации или нет. По истечении 30 секунд маршрутизатор, работающий под управлением RIP, будет транслировать свою информацию о маршрутизации со всех своих интерфейсов. RIP - это самый старый протокол вектора расстояний. Для удовлетворения текущих требований к сети он был обновлен с помощью RIPv2. RIPv2 также является протоколом вектора расстояния с максимальным количеством прыжков 15. Вы все еще можете использовать RIPv1, но это не рекомендуется. В следующей таблице перечислены ключевые различия между RIPv1 и RIPv2. Основные различия между RIPv1 и RIPv2 RIPv1 RIPv2 Он использует широковещательную передачу для обновления маршрутизации. Он использует многоадресную рассылку для обновления маршрутизации. Он посылает широковещательный пакет по адресу назначения 255.255.255.255. Он отправляет многоадресную рассылку по адресу назначения 224.0.0.9. Он не поддерживает VLSM. Он поддерживает VLSM. Он не поддерживает никакой аутентификации. Он поддерживает аутентификацию MD5 Он поддерживает только классовую маршрутизацию. Он поддерживает как классовую, так и бесклассовую маршрутизацию. Он не поддерживает непрерывную сеть. Он поддерживает непрерывную сеть.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59