Проблема: определение лица, осуществившего выгрузку данных из базы
Экспорт может быть выполнен через штатные утилиты, SQL-инструменты, приложения или прямой доступ к файлам данных. Без аудита и логов след простыл.
Причины: отсутствие или неполнота журналирования
- Не настроен аудит СУБД (general_log, audit_log, pg_audit).
- Логи не хранятся или циклически перезаписываются.
- Использование общих учётных записей без привязки к пользователям.
- Экспорт через приложение, логи которого не фиксируют действия.
- Сетевой трафик не анализируется (выгрузка могла быть по SSH/SFTP/API без авторизации).
Решение: пошаговая методика выявления экспортера
1. Проверка логов СУБД (наиболее точный метод выявления несанкционированного экспорта данных из базы)
- PostgreSQL: настройка `pg_audit` и анализ `postgresql.log` с фильтром по `pg_dump`, `COPY TO`, `SELECT INTO`:
bash
grep -E '(pg_dump|COPY TO|SELECT INTO)' postgresql-.log- MySQL/MariaDB: включите `general_log = 1` и проверьте `SELECT ... INTO OUTFILE`, `mysqldump`, `SELECT FROM table` с большим объёмом:
sql
SELECT FROM mysql.general_log WHERE command_type = 'Query' AND argument LIKE '%INTO%OUTFILE%';- MSSQL: используйте `fn_get_audit_file` для файлов аудита или `sys.dm_tran_database_transactions` для подозрительных транзакций:
sql
SELECT event_time, session_server_principal_name, statement
FROM sys.fn_get_audit_file('C:\Audit\.sqlaudit', default, default);- Oracle: запрос `DBA_AUDIT_TRAIL` с фильтром по `EXPORT` или `SELECT FROM DBA_OBJECTS`:
sql
SELECT username, os_username, timestamp, sql_text
FROM dba_audit_trail
WHERE action_name IN ('SELECT', 'EXPORT', 'CREATE TABLE AS SELECT');2. Анализ логов операционной системы (история команд оболочек, auditd)
- `grep -i "pg_dump\|mysqldump\|sqlcmd\|expdb" /var/log/auth.log` — найдите запуски утилит.
- `auditctl -w /usr/bin/pg_dump -p x -k dump` — мониторинг выполнения. Затем:
bash
ausearch -k dump | aureport -i3. Проверка логов приложений (если экспорт шёл через веб-интерфейс или API)
- Ищите запросы с объёмом ответа, значительно превышающим обычный. Например, в Nginx:
bash
awk '$10 > 10000000 {print $1, $7, $9, $10}' /var/log/nginx/access.log | sort | uniq -c- Журналы приложения (`log4j`, `ELK`) — фильтр по командам `export`, `download`, `csv`.
4. Анализ истории подключений (IP, сессии)
- `SELECT FROM pg_stat_activity WHERE state = 'active'` — текущие соединения.
- Для исторических данных — `pg_stat_statements` (если включен) или `tcpdump` с захватом пакетов на порту СУБД:
bash
tcpdump -i eth0 port 5432 -w export.pcapЗатем через Wireshark/tshark найдите большие датаграммы и IP отправителя.
5. Сбор цифровых доказательств (chain of custody)
- Копия логов на внешний носитель хэшируется (sha256).
- Фиксируется время и пользователь системы.
- Опрашиваются сотрудники с привилегиями на экспорт.
Важно: все действия проводятся только с письменного разрешения владельца системы и в рамках внутреннего расследования, не нарушая ФЗ «О персональных данных» (152-ФЗ) и УК РФ (ст.272, 274). Методы указаны для легального аудита и форензики.