• 🚨 24 часа до повышения цены на курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    Последний день записи в текущий поток по старой цене Подробнее о курсе ...

На проверке Honeypot с нуля: установка, мониторинг и реагирование на инциденты

Автор: n0_mad
Источник: ex. DaMaGeLab

Уровень: Novice + Mid.

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

Подготовка.
Для начала необходимо определить тип honeypot.
В основном, выделяются 2 типа:
1. Низкоуровневый(Low-Interaction), эмулирующие ограниченное количество сервисов и служб, не предоставляя полноценное окружение.
  • Реагирует, например, на взаимодействия с SSH / HTTP.
  • Собирает аналитические данные без вреда для основной системы.
  • Прост в установке и не требует большого количества ресурсов.

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

Low-Interaction.
Для низкоуровневых honeypot мы будем использовать Cowrie, который позволит нам имитировать SSH и Telnet.

1. Установим необходимые пакеты.
Bash:
sudo apt install git python3 python3-pip python3-virtualenv -y

2. Копируем репозиторий Cowrie.
Bash:
git clone https://github.com/cowrie/cowrie.git

cd cowrie

3. Создаём виртуальное окружение Cowrie.
Bash:
virtualenv cowrie-env

Bash:
source cowrie-env/bin/activate

4. Устанавливаем зависимости.
Bash:
pip install -r requirements.txt

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

5. Редактируем конфигурационный файл.
Bash:
nano cowrie.cfg

Нам необходимо изменить следующие параметры:
1. hostname - задаём имя honeypot.
2. listen_port - указываем порт, который будет "прослушиваться" с помощью honeypot (например, 2222 или 22 для SSH).

6. Сохраняем изменения в конфигурации.

7. Делаем, чтобы Cowrie запускался как служба.

Для этого создадим файл типа systemd.
Bash:
sudo nano /etc/systemd/system/cowrie.service

После этого необходимо добавить следующее содержимое:
Код:
[Unit]

Description=Cowrie SSH/Telnet Honeypot

After=network.target



[Service]

Type=simple

User=your_username # Замените на имя пользователя

WorkingDirectory=/path/to/cowrie # Укажите путь к каталогу cowrie

ExecStart=/path/to/cowrie/cowrie-env/bin/python3 /path/to/cowrie/bin/cowrie start

Restart=on-failure



[Install]

WantedBy=multi-user.target

Не забываем заменить "/path/to/cowrie" на фактический путь к директории.

8. Запускаем сервис и настраиваем автозагрузку.
Bash:
sudo systemctl start cowrie.service sudo systemctl enable cowrie.service

9. Проверяем статус работы системы.
Bash:Скопировать в буфер обмена
sudo systemctl status cowrie.service

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

Поэтому, для просмотра действий с honeypot в вашей инфраструктуре используем:

Bash:Скопировать в буфер обмена
tail -f cowrie/log/cowrie.log

High-Interaction.
Для высокоуровневых honeypot мы будем использовать более комплексный инструмент, поэтому для примера возьмём Dionaea.

1. Установим необходимые для работы пакеты.
Bash:Скопировать в буфер обмена
sudo apt update sudo apt install git build-essential python3 python3-pip python3-dev libssl-dev \ libffi-dev libtool automake autoconf libglib2.0-dev libpcap-dev \ libsqlite3-dev libcurl4-openssl-dev libgcrypt20-dev libnetfilter-queue-dev \ libnetfilter-conntrack-dev

2. Копируем репозиторий Deonaea.

Bash:Скопировать в буфер обмена
git clone GitHub - DinoTools/dionaea: Home of the dionaea honeypot cd dionaea

3. Компилируем Dionaea.

Bash:Скопировать в буфер обмена
./autogen.sh ./configure make

4. Проводим настройку конфигурационного файла.

Обычно файл находится по адресу dionaea/etc/dionaea.conf, но применим команду:

Bash:Скопировать в буфер обмена
nano etc/dionaea.conf

Необходимо уделить внимание важным параметрам:
  • [http]: Настройки HTTP. Например: "port = 80"
  • [ftp]: Настройки FTP. Например: "port = 21"
  • [sip]: Настройки SIP (если это применимо).
  • [logging]: Настройки логирования. Например: "logfile = /var/log/dionaea.log"

5. Создаем базу данных SQLite.

Dionaea использует MySQL и SQLite для хранения данных, поэтому рассмотрим создание именно второго варианта.

Bash:Скопировать в буфер обмена
mkdir -p /var/lib/dionaea touch /var/lib/dionaea/dionaea.sqlite
Не забываем проверить, что у Dionaea есть права записи:

Bash:Скопировать в буфер обмена
sudo chown -R $(whoami):$(whoami) /var/lib/dionaea

6. Запускаем Dionaea.

Bash:Скопировать в буфер обмена
sudo ./dionaea/dionaea -c etc/dionaea.conf

7. Добавляем опцию автозапуска системы.

Bash:Скопировать в буфер обмена
sudo nano /etc/systemd/system/dionaea.service

Добавляем следующие строки:

[Unit]
Description=Dionaea Honeypot

[Service]
Type=simple
ExecStart=/path/to/dionaea/dionaea -c /path/to/dionaea/etc/dionaea.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
Не забываем заменить "/path/to/dionaea/" на нужный нам путь.

8. Активируем и запускаем сервис.

Bash:Скопировать в буфер обмена
sudo systemctl enable dionaea.service sudo systemctl start dionaea.service

9. Логирование.

Как и в случае с Cowrie, мы используем аналогичную команду для просмотра логов:

Bash:Скопировать в буфер обмена
tail -f /var/log/dionaea.log

Complexity is the key.
Мы рассмотрели опцию настройки honeypot для высокоуровневых и низкоуровневых типов. Однако, подобные решения скорее представляют из себя точечные или даже костыльные меры, поскольку требуют довольно много настроек и внимания со стороны master-user, а так же скорее направлены на какой-то конкретный раздел.

В качестве комплексного решения для обеспечения безопасности вашей инфраструктуры, с точки зрения обеспечения корпоративной кибебезопасности, можно использовать такой инструмент как Illusive Shadow(Proofpoint).

Поскольку Illusive Shadow имеет возможность имитации различных сетевых сервисов таких как SSH, HTTP и FTP для привлечения внимания, а также приложений, то этот инструмент, за счёт удобных опций настройки является одним из оптимальных решений.

Помимо самого варианта создания honeypot'ов, каждый сотрудник ИБ и знтузиаст может найти для себя и другие функции, которые будут полезны в процессе работы над обеспечением безопасности систем:
- Сбор данных для последующего анализа.
Платформа собирает данные о IP, типах угроз, используемых инструментах.
  • Имеет интеграцию AI+ML, что позволяет адаптировать поведение защиты в случае угрозы.
  • Интеграция с SIEM для получения обширного спектра возможностей интеграции с текущими системами безопасности для централизованного мониторинга.

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

Заключение.
Использование honeypot как меры обеспечения безопасности может сослужить хорошую службу, исходя из всех аналитических данных. Поскольку есть вариация использования таких ловушек для отвлечени внимания, теста гипотез, определения векторов атак, оптимизации работы системы безопасности, то понимание принципов работы и вытекающие отчёты являются клдчами в общей связке для достижения необходимого уровня безопасности организации.
Понятие "Incident".
Инцидентом считается любое событие, которое влечёт за собой полную недоступность критической сервиса корпоративной инфраструктуры. Обычно классификация выглядит следующим образом:

  • External Incident(например, хакерская атака).
  • Internal Incident(внутренняя проблема технического характера).
  • Non-Tech Incident(ошибка на основании человеческого фактора).

Команда SOAR.
Создание команды "ГБР" является важным, а иногда и ключевым фактором в обеспечении безопасности организации, так как во многом влияет организация процесса и коммуникация между различными отделами, ответственными за Incident Management.

Если мы говорим о конкретных специализациях, то команда выглядит следующим образом:
1. Lead.
Ответственный за принятия решений и координацию действий. На практике это представитель C-level(CTO, CSO, CCO etc.)
2. InfoSec.
Представители команды информационной безопасности необходимы для анализа вектора атак, оценки угроз, мер противодействия.
3. IT.
Я обобщил данный сектор, так как ответственные вызываются, в зависимости от сервиса, следовательно за недоступность функционала сайта будет вызван Frontend Dev, либо могут быть задействованы несколько различных отделов разработки.
4. PR / Customer Support.
Репутация нарабатывается временем, а теряется по щелчку пальцев. При длительной недоступности каких-то функций, которыми пользуются тысячи или миллионы пользователей, ваш имидж страдает в первую очередь, поэтому необходимо своевременно комментировать ваши неполадки и взаимодействовать с клиентами.
5. DevOps.
Так как core system чаще всего является сферой влияния именно данного отдела, то их присутствие будет определенно преимуществом.

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

Разработка плана и процедур реагирования.
Эффективный план реагирования имеет чёткую структуру:
1. Описание целей и задач плана.
2. Перечисление ответственных лиц.
3. Описание инцидентов.
4. Сценарии инцидентов.
5. Процедуры для сценариев реагирования.

Сам план реагирования крайне удобно визуализировать, например, блок-схемами в XMind. Вы будете чётко понимать саму процедуру в каждом случае применения.

В вашем IMP(Incident Management Plan) так же важно охватить такую тему как "определение уровней риска", так как обычно от этого зависит само понятие инцидента.

Для простоты привожу формулу расчёта:
Уровень_риска = Вероятность × Воздействие

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

Воздействие — какое воздействие данный случай имеет на вашу инфраструктуру.

Классификация рисков по уровням:
  • Низкий
  • Средний
  • Высокий

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

Практические командные тесты.(Стратегии).
Я затрагивал тему аудита систем безопасности и реагирования на инциденты для определения наиболее подходящих инструментов, в своих предыдущих статьях.

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

1. Симуляция инцидента. (R/B Team).
Команда 1 создаёт инцидент с помощью внутренних или внешних инструментов. Необходимо создать триггер для своевременной реакции со стороны ответственных(Команда 2), согласно IMP.
Например:
1. Создаётся имитация.

- Потери соединения:

Пример:
Bash:Скопировать в буфер обмена
sudo ip link set eth0 down

- Повышенной нагрузки:

Пример:
Bash:Скопировать в буфер обмена
sudo apt-get install stress stress --cpu 8 --timeout 60

- Повышенного лага сети:

Пример:
Bash:Скопировать в буфер обмена
sudo tc qdisc add dev eth0 root netem delay 100ms

- Отключение конкретного Product Service.

Пример: Payment system.
2. Происходит оповещение команды 2.
3. Происходит тест процедур IMP.
Выводы: Координация процесса, скорость реагирования, возможное противодействие, скорость исправления.
2. Тренировка на основе сценариев.
Составленные заранее вов ремя планирования сценарии необходимо так же тестировать.
Например:
Составлен сценарий противодействия DDoS атаке.
Команде необходимо отточить полностью процедуру, которая будет включать в себя такие этапы как:
1. Обнаружение ициндента с помощью мониторинговых систем.
2. Оценка и анализ ситуации ответственной 1-й линией.
3. Уведомление SOAR.
4. Сбор кейсов и доказательств.
5. Реакция и противодействие Incident Management Team.
6. Постинциндентый анализ.
Выводы: Опрелеление эффективности частных сценариев, доработка процедур, определение необходимых мониторинговых систем.

3. Ротация ролей.
Для понимания зоны ответственности и специфики смежных по специализации ролей, в Incident Management Team возможно проводить ротацию для создание более полноценной картины.
Например:
PR <-> Customer Support.
Предоставление возможности отделу PR взаимодействовать со входящими обращениями клиентов через каналы связи, а Customer Support составлению плана исключения или смягчения репутационных рисков.
Выводы: Более дополненное представление сотрудников о реагировании на инциденты.

Выводы из тестов.
Проведя все тесты, мы получаем тонны данных для анализа, а следовательно дальнейших вариаций противодействия атаке на инфраструктуру. Это позволит вам составлять более чёткие процессы и процедуры реагирования, оптимизировать свои SIEM-системы или же дополнять арсенал инструментов.

Однако, я бы хотел вознаградить постоянных читателей небольшим бонусом. Самое первое, что влияет на скорость реакции это дашборды, которые в режиме реального времени могут показывать аномальные изменения поведения ваших систем. Первые в голову приходят такие инструменты как Grafana, Kibana(в сочетании с Elastic search), Prometheus и NetData. Поэтому мы создадим бесплатно простой дашборд с помощью 2-х инструментов - Grafana + Prometheus для логгирования событий безопасности и визуализации:
Шаг 1. Устанавливаем инструменты.

  • Prometheus отвечает за сбор данных и хранения метрик.
  • Grafana отвечает за визуализацию данных.

Bash:Скопировать в буфер обмена
# Установка Prometheus sudo apt-get update sudo apt-get install prometheus # Установка Grafana sudo apt-get install grafana

Шаг 2. Настроим Prometheus.

Создаём конфигурационный файл prometheus.yml и вставляем следующее:

YAML:Скопировать в буфер обмена
global: scrape_interval: 15s scrape_configs: - job_name: 'linux_metrics' static_configs: - targets: ['localhost:9090'] # Укажите адрес вашего сервера

Сохраняем.

Шаг 3. Запуск Prometheus.

Bash:Скопировать в буфер обмена
prometheus --config.file=prometheus.yml

Шаг 4. Сбор данных.

Для сбора данных будем использовать auditd, чтобы отслеживать, например, событие входа в систему.

Устанавливаем auditd:

Bash:Скопировать в буфер обмена
sudo apt-get install auditd

Шаг 5. Настраиваем правила аудита.

Откроем файл по пути etc/audit/audit.rules и добавим правило:

Bash:Скопировать в буфер обмена
-w /var/log/auth.log -p wa -k auth_log

Шаг 6. Перезапускаем auditd.

Bash:Скопировать в буфер обмена
sudo service auditd restart

Шаг 7. Настроим экспорт метрик.

Для этого используем node_exporter, устанавливаем:


Bash:Скопировать в буфер обмена
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-<version>.linux-amd64.tar.gz tar xvfz node_exporter-<version>.linux-amd64.tar.gz cd node_exporter-<version>.linux-amd64 ./node_exporter &

Шаг 8. Добавляем в конфигурацию Prometheus.

Снова открываем файл prometheus.yml и добавляем:


YAML:Скопировать в буфер обмена
- job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']

Шаг 7. Запустим Grafana.

Bash:Скопировать в буфер обмена
sudo service grafana-server start

Шаг 8. Переходим в веб-интерфейс Grafana.

Обычно интерфейс доступен по адресу .

Шаг 9. Входим в Grafana.

- Входим с помощью стандартных admin/admin.

- Добавляем источник данных.
"Configurations" -> "Data Sources".

- Выбираем Prometheus и указываем URL.

Шаг 10. Создаём дашборд.

1. Перейдите в "Dashboards" > "New Dashboard".
2. Добавьте панели для отображения метрик безопасности:
  • Количество неудачных попыток входа: используйте запросы к логам auth.log.
  • Активные пользователи: количество активных сессий.
  • События аудита: количество событий, зарегистрированных auditd.

Пример запроса для неудачных попыток входа:

Код:Скопировать в буфер обмена
sum(rate(auditd_events_total{event_type="failed_login"}[5m]))

Шаг 11. Добавляем визуализацию.

Настройте графики и таблицы, которые хотелось бы отслеживать, в зависимости от ваших требований.

Если кто-то держит в уме Part 1, то заодно скажу, что Grafana отлично сочетается так же и с honeypot ловушками от Cowrie, которые так же можно взаимосвязать.

Данные из Cowrie обычно хранятся в базе данных SQLite, но так же есть формат JSON.

Поэтому, чтобы интегрировать Cowrie с Grafana, нам необходимо экспортировать логи в систему мониторинга - Prometheus.

Правда для этого нам понадобится Exporter для Cowrie.

https://github.com/marvinpinto/cowrie-exporte, либо же написать свой скрипт на Python.

Шаг 1. Установим репозиторий.

Bash:Скопировать в буфер обмена
git clone https://github.com/marvinpinto/cowrie-exporter.git cd cowrie-exporter

Шаг 2. Установите зависимости.

Bash:Скопировать в буфер обмена
pip install prometheus_client requests

Шаг 3. Настройка Exporter.

Откройте файл cowrie_exporter.py и измените параметры подключения к вашему экземпляру Cowrie (например, путь к логам или API, если используется).

Шаг 4. Запускаем Exporter.

Bash:Скопировать в буфер обмена
python cowrie_exporter.py --cowrie-log-dir /path/to/cowrie/logs --port 8080

Не забываем убедиться в правильном пути к логам Cowrie.

Шаг 5. Изменить файл конфигурации Prometheus(prometheus.yml).

Например:
YAML:Скопировать в буфер обмена
global: scrape_interval: 15s scrape_configs: - job_name: 'cowrie' static_configs: - targets: ['localhost:8080'] # Порт, на котором работает ваш exporter

Дальше мы запускаем Prometheus и повторяем процедуру с настройкой дашбордов в веб-интефейсе Grafana.

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

В этой части я буду заканчивать. Скоро увидимся!
 
  • Не нравится
Реакции: f22
Странно звучит. honeypot - это термин, описывающий физический объект (флешку, CD, жёсткий или ssd диск), или какой-то сервис (открытый wifi, в конце концов ссылка на сайт), но называть это опцией как-то странно.

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

полноценное окружение
речь о виртуальном окружении?

по итогам конфигурации
По итогам тестирования, наверное
Правильно ли будет, чтобы этот honeypot висел на порту по умолчанию?

Bash:Скопировать в буфер обмена
sudo systemctl status cowrie.service
:(

Мы рассмотрели опцию настройки honeypot для высокоуровневых и низкоуровневых типов. Однако, подобные решения скорее представляют из себя точечные или даже костыльные меры, поскольку требуют довольно много настроек и внимания со стороны master-user, а так же скорее направлены на какой-то конкретный раздел.
А я вообще не понял - вот установили мы эти программы, а дальше что?

Статья называется Honeypot set up. Учимся установке и мониторингу систем, а так же реагировать на понятие "инцидент".
но чему-то научиться по ней сложно - идёт просто пересказ установки каких-то инструментов без понимания того какие функции они будут выполнять, какие задачи перед ними ставятся и какие выводы должны быть сделаны.
 
Странно звучит. honeypot - это термин, описывающий физический объект (флешку, CD, жёсткий или ssd диск), или какой-то сервис (открытый wifi, в конце концов ссылка на сайт), но называть это опцией как-то странно.


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


речь о виртуальном окружении?


По итогам тестирования, наверное

Правильно ли будет, чтобы этот honeypot висел на порту по умолчанию?


:(


А я вообще не понял - вот установили мы эти программы, а дальше что?

Статья называется Honeypot set up. Учимся установке и мониторингу систем, а так же реагировать на понятие "инцидент".
но чему-то научиться по ней сложно - идёт просто пересказ установки каких-то инструментов без понимания того какие функции они будут выполнять, какие задачи перед ними ставятся и какие выводы должны быть сделаны.
Приветствую. Спасибо за интерес к статье и комментарии. Практически сразу видно, что не особо в ней что-либо поняли или невнимательно читали :)
Странно, что к ней не вся история с форматированием применялась при переносе. Даже обидно. Уважаемый админ, хотел бы прислать скорректированный вариант, если это возможно.
Касательно замечаний. Люблю обоснованную критику, но ваши комментарии немного показали отсутствие компетенции в вопросе, а дизлайк от этого выглядит вдвойне обиднее ;)
Странно звучит. honeypot - это термин, описывающий физический объект (флешку, CD, жёсткий или ssd диск), или какой-то сервис (открытый wifi, в конце концов ссылка на сайт), но называть это опцией как-то странно.
Вы довольно интересно и дотошно прошлись по конкретному слову. Только практической пользы от этого замечания = 0. Если я правильно изучал русский язык и понимаю значение слова "опция", то практически любой вариант из списка чего-либо можно назвать "опцией". Синонимы слова будут: "вариант", "выбор", "альтернатива".
Как раз наоборот - для привлечения внимая. honey pot - горшок с мёдом, что-то вкусной, на что должен клюнуть человек.
Здесь примерна та же тактика, что и выше. Выделили слово, комментарий "по контексту" с буквальной интерпретацией смысла.
Поиграем тогда на вашем поле:
Не знаю зачем вы используете горшок с медом, чтобы туда клевали люди... Ведь у них нет клювов ;)
Вы в практическом смысле используете honeypot для поимки или для защиты? Статью вообще прочитали, что мы в защитном положении рассматриваем кейс? Соответственно, при проникновении в систему, за счёт этого самого honeypot, внимание злоумышленника от основных наших файлов, сетей, систем и т.п. мы таким способом "отвлекаем" с помощью "горшка с мёдом". Будьте проще, вы всё-таки из Codeby Academy ;)
речь о виртуальном окружении?
Вы же видите, что там, где речь о venv, так и написано "виртуальное окружение".
По итогам тестирования, наверное
Правильно подметили, что "наверное". Потому что мы всё же по итогам настройки и конфигурации проводим тесты, а не до.
Правильно ли будет, чтобы этот honeypot висел на порту по умолчанию?
Безусловно. Надеюсь, что вы не предлагаете ловить плохишей, которые посягают со своим сканированием и брутфорсом на 22-й порт, с honeypot'ом который размещён на 553, например? Спойлер: Было б уж совсем бесполезно для 22 порта.
А я вообще не понял - вот установили мы эти программы, а дальше что?
Обычно я этого в статьях не делаю, но, если вы обратите внимание, то наверху пишется уровень. Это сделано для того, чтобы было понимание насколько комплексная статья и на кого рассчитано. В данном случае, по итогам, начинающий или недавно действующий специалист ИБ получит лабораторию или же начнёт создание собственной системы реагирования или противодействия.
Укажу что вы можете почерпнуть:
1. Создание "горшков с мёдом".
2. Настройка мониторинга за "горшками с мёдом".
3. Визуализация ключевых параметров, которые мы получаем о "горшках с мёдом".
4. Возможность реагировать на случай, если кто-то тронул "горшки с мёдом".
5. Возможность делать выводы об уязвимости систем на основании отчётов от "горшочков с мёдом".

Примерно так. Спасибо за внимания, peace ✌️
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

Курс AD