![]() |
https://forum.antichat.xyz/attachmen...9294101470.png
Автор: n0_mad Источник: ex. DaMaGeLab Уровень: Novice. Итак, перед нами стоит задача: Создать защищённую базу данных, используя SQL, чтобы потом интегрировать honeypot с триггером на неё. В данном случае мы создаём некую песочницу для дальнейшего тестирования на проникновение или изучения утилит. Начнём. Нам понадобится PostgreSQL. Обновляемся через sudo apt update и приступаем. Шаг 1. Установка PostgreSQL. Bash: Код:
sudoШаг 2. Проверяем состояние службы. Bash: Код:
sudoBash: Код:
sudoПри установке, по умолчанию, задаётся имя пользователя postgres, поэтому чтобы войти в систему как данный пользователь, используем: Bash: Код:
sudoBash: Код:
psqlВ консоли можно создать новую базу данных, я предлагаю обыграть это ситуативно: 1. База данных содержит информацию о клиентах, сотрудниках, а так же авторизованных устройствах. 2. Каждая таблица имеет свои значения. 3. Создаётся список "белых IP адресов". SQL: Код:
CREATESQL: Код:
c my_databaseШаг 5.1. Таблица clients: SQL: Код:
CREATEШаг 5.2. Таблица employees: SQL: Код:
CREATEШаг 5.3. Таблица authorized_devices: SQL: Код:
CREATEШаг 6. Таблица IP whitelist. SQL: Код:
CREATEДля автоматического добавления можно использовать адаптированную версию скрипта ниже: SQL: Код:
CREATEДля того, чтобы наша база данных поплнялась, необходимо задать условия, например: SQL: Код:
CREATEВнесём первые данные для большей содержательности. Шаг 1. Добавляем клиентскую информацию. SQL: Код:
INSERTSQL: Код:
INSERTSQL: Код:
INSERTДа, еще и на всякий случай, можно подключаться к PostgreSQL через удобную GUI утилиту pgAdmin: Bash: Код:
sudoBash: Код:
pgadmin41. General -> Name: Имя сервера, можно задать любое удобное. 2. Connection -> Host: Адрес сервера где установлен PostgreSQL или localhost, если работаем с локальным сервером. 3. Connection -> Port: Указываем порт, по умолчанию tcp/5432. 4. Connection -> Maintenance database: Имя созданной нами базы. 5. Connection -> Username/Password: Указываем имя и пароль пользователя PostgreSQL. Далее происходит подключение и вывод вашей DB. Создаём элемент защиты. Для создания полноценной картины, можно так же использовать поддержку шифрования. Для этого детально рассмотрим 2 пути: - Опция 1, при использовании MySQL - Шаг 1. Проверяем поддержку шифрования. В конфигурации MySQL находим файл my.cnf и проверяем, что содержимое равно INI: Код:
[mysqld]SQL: Код:
SETSQL: Код:
ALTERШаг 4. Проверяем шифрование. Сделать это можно с помощью: SQL: Код:
SELECT- Опция 2, используя PostgerSQL - (более подходит) Поскольку мы подгрузили все плагины и утилиты postgre, то нам должен быть доступен инструмент pgcrypto. Шаг 1. Устанавливаем pgcrypto. SQL: Код:
CREATESQL: Код:
INSERTЧтобы получить зашифрованные данные мы можем воспользоваться: SQL: Код:
SELECTСоздаём honeypot. Для этой цели используем инструмент honeyd. Он позволит нам обыграть ловушки для дальнейшего тестирования своих знаний. Шаг 1. Устанавливаем Python зависимости. Bash: Код:
sudoBash: Код:
sudoДля дальнейшего взаимодействия нам необходимо вносить свои настройки, поэтому создаём файл через: Bash: Код:
sudoВ открытом через nano файле вносим следующее: INI: Код:
create mysqlШаг 5. Запуск honeyd. Для запуска используем следующую команду + название созданного файла конфигурации: Bash: Код:
sudoШаг 1. Установим iptables(если его ещё нет). Bash: Код:
sudoНапример: Bash: Код:
sudoШаг 3. Настроим логирование. В конфигурационном файле добавляем строку для сохранения данных: Код: Код:
log mysql /var/log/honeyd/mysql.logBash: Код:
sudoSQLmap. Именно с этого варианта я бы начал, чтобы проверить реакцию honeypot или базы на SQL инъекции. Шаг 1. Установим sqlmap. Bash: Код:
sudoBash: Код:
sqlmap -u-u указывает URL для тестирования. --batch автоматически отвечает на вопросы SQLmap по умолчанию (без участия пользователя). --dbs выводит список баз данных на целевом сервере. Шаг 3. Получаем результаты. После запуска SQLmap, мы увидим вывод с результатами попытки инъекции. Если SQL-инъекция удалась, то мы увидим список баз данных, например: Bash: Код:
[Bash: Код:
sqlmap -uBash: Код:
sqlmap -uТогда зачем мы применяли шифрование, если это всё спокойно видно в SQLmap? Разъясняю. pgcrypto даёт нам возможность оставить сюрприз, в виде зашифрованных данных. Например, мы настроили шифровку столбца "phone" с помощью: SQL: Код:
CREATEЧто же тогда мы увидим, применив SQLmap к данной таблице? Используем: Bash: Код:
sqlmap -uBash: Код:
[Варианты дешифровки в данном случае, это получение доступа к самим ключам, либо же получение доступа к методу генерации "gen_salt" = "соли", что в целом усложняет сам вектор атаки. Нам в качестве практики самое то! Как бы нам теперь ещё и создать опцию оповещения о попытках неправомерного доступа? Возвращаемся к PostgreSQL. Там, где создана наша база. Шаг 1. Создаём таблицу alerts. Данная таблица будет содержать все триггреры и алерты при определённых событиях с базой. SQL: Код:
CREATEПри подозрительных действиях, данные триггеры будут передаваться в систему алертинга. Например: SQL: Код:
CREATEШаг 3. Добавим триггер модификации данных. SQL: Код:
CREATEИспользуем в завершении Postfix. Утилита доступна для Linux OS пользователей, поэтому установим через: Bash: Код:
sudoШаг 1. Создаём функцию отправки. Нам необходимо вызывать системную команду sendmail для отправки письма, поэтому прописываем: SQL: Код:
CREATEШаг 2. Установка dblink. Так как при установке Postgre мы установили пакет postgresql-contrib, нам доступно расширение dblink: SQL: Код:
CREATEШаг 3. Добавляем триггер. SQL: Код:
CREATEЗаключение. Таким образом можно создать окружение для тестов своих навыков или других инструментов, которые вам могут пригодится в будущем. Здесь нет особой замысловатости, но вполне подходит для каких-то манипуляций. Даже общедоступные SQL инструменты так же предлагают довольно широкий спектр защитных опций, что позволяет иметь защищённое пространство, хотя бы для каких-то собственных или рабочих данных. Всем успехов! |
Спасибо, возник вопрос, если проводится атака на БД не может ли возникнуть проблемы, что оповещение на почту утонет в спаме из за большого количества изменений за короткое время
|
Цитата:
Вопрос действительно важный. Да, при большом количестве изменений в базе данных за короткий промежуток времени есть риск, что почтовые уведомления могут попасть в спам или просто затеряться в потоке других писем. Это частая проблема, с которой сталкиваются при настройке систем оповещений. Чтобы минимизировать такой эффект, обычно советуют не отправлять отдельное письмо на каждое событие, а собирать их в агрегированный отчет. Например, вместо сотни писем за минуту можно отправлять один сводный отчет с описанием всех зафиксированных изменений за этот период. Это одновременно снизит нагрузку на почтовую систему и уменьшит вероятность попадания в спам. Еще один момент — стоит позаботиться о правильной настройке самого почтового сервера. Наличие корректных записей SPF, DKIM и DMARC для домена, с которого уходят письма, помогает повысить доверие к ним со стороны почтовых служб и снизить шанс, что уведомления окажутся в спаме. Если эти технические детали не настроены, даже самые важные оповещения могут просто не дойти до адресата. Кроме того, для серьезного и надежного мониторинга баз данных лучше использовать специализированные SIEM-системы или другие инструменты. Они умеют отправлять оповещения не только на почту, но и через другие каналы: SMS, мессенджеры (Telegram, Slack) или отображать их в реальном времени на дашбордах. Таким образом, вы точно не пропустите критически важное событие. |
| Время: 23:40 |