🟩 Инженерная экспертиза баз данных и СУБД: как мы разоблачаем фальсификации, не веря ни одной строчке кода

🟩 Инженерная экспертиза баз данных и СУБД: как мы разоблачаем фальсификации, не веря ни одной строчке кода

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка

Вы думаете, компьютерная экспертиза — это честный поиск истины? 🤥 Как бы не так. 80% «независимых» экспертов работают по шаблонам, не умеют читать байты и боятся заглянуть внутрь журнала транзакций. Они запускают стандартные отчёты из СУБД, которые лгут так же, как и сами данные. А вы платите миллионы за заключение, которое в суде разносит в пух и прах любой грамотный оппонент. 😤

Союз «Федерация судебных экспертов» — исключение. Мы не берёмся за дело, если не можем копать до физического уровня. Инженерная экспертиза баз данных и СУБД в нашем исполнении — это война с подделками, низкоуровневый разбор полётов и публичное унижение недобросовестных администраторов. Мы показываем суду такие детали, от которых у ответчика начинается нервный тик. 🎯

В этой статье я расскажу, почему 90% экспертов — профаны, как мы ловим фальсификаторов за руку, и приведу три реальных кейса, где наши выводы разрушили ложь. Приготовьтесь: будет много технического цинизма и правды. ⚔️

Глава 1. Определение: что такое НАСТОЯЩАЯ инженерная экспертиза

🔧 Инженерная экспертиза баз данных и СУБД — это исследование, при котором эксперт не доверяет ни одному уровню абстракции выше байта. Мы не спрашиваем у СУБД «что здесь было удалено?», мы идём на диск и читаем остатки строк в нераспределённых экстентах. Мы не верим timestamp’ам из SQL-запроса — мы анализируем порядковые номера транзакций и сдвиги LSN.

В отличие от «аналитических отчётов» (которые любят продавать ИТ-аутсорсеры), инженерный подход требует:

  • Доступа к сырым образам дисков.
  • Умения парсить бинарные форматы InnoDB, WAL, redo-логов вручную.
  • Понимания, как работает фрагментация страниц и сборка мусора в СУБД.
  • Способности восстанавливать данные после VACUUM FULLи даже после shred (частично).

Наша позиция проста: если эксперт не написал хотя бы одного парсера страниц базы данных — он не инженер, а пользователь Excel. И его заключение стоит столько же, сколько пустой файл cookie. 🍪

Глава 2. Главная ложь: «логи транзакций невозможно подделать»

Адвокаты ответчиков часто заявляют: «журнал транзакций — это святая корова, его нельзя изменить без следа». Чушь! 🐮💥

Да, напрямую отредактировать LDF-файл работающей СУБД сложно — но можно:
1️⃣ Остановить SQL Server.
2️⃣ Отредактировать.ldf в HEX-редакторе, подменив несколько байтов (например, тип операции с UPDATE на SELECT).
3️⃣ Снять флаг «грязной страницы» в заголовке.
4️⃣ Запустить сервер и продолжить работу.

После этого формально контрольные суммы могут сойтись, если отключена проверка страниц (а в 70% компаний она отключена «для производительности»). Мы видели такие дела. И только кропотливый анализ временных меток соседних записей выявляет аномалию: одна операция выбивается из общей хронологии LSN.

Поэтому инженерная экспертиза баз данных и СУБД всегда включает анализ целостности цепочки LSN, а не только чтение журнала «как есть». Мы ищем разрывы, аномалии, несоответствия контрольных сумм. И находим.

Глава 3. Типичные фальсификации: от тупых до хитрых

📌 Тупой уровень: удаление строк через DELETE и надежда, что никто не заметит. Раскрывается элементарным анализом свободных слотов на страницах.
📌 Средний уровень: UPDATE с перезаписью старых значений на новые, а затем изменение timestamp вручную через UPDATE системной_таблицы. Раскрывается через сравнение времени модификации страницы (из заголовка) и времени в пользовательском поле.
📌 Хитрый уровень: использование триггеров «самоуничтожения», которые после определённой даты чистят следы. Требует восстановления кода триггера из системных таблиц, даже если он был удалён (в PostgreSQL можно найти в pg_catalog после DROP — если повезёт).
📌 Профессиональный уровень: модификация ядра СУБД через dbginfo или патчинг памяти процессов. Против таких нужны дампы RAM и анализ гипервизора.

Мы сталкивались со всеми. И ни один метод не устоял перед нашими инженерами. Потому что физика диска неумолима: информация не исчезает, пока её не перепишут несколько раз. А перезапись оставляет свои артефакты — магнитные, NAND- или временны́е.

Глава 4. Кейс №1: Бухгалтерия «Альянс-Нефть» — фальшивые списания на 47 млн рублей ⛽💰

🟥 Контекст: Крупный трейдер нефтепродуктов. Главбух подделал базу MS SQL, чтобы списать бензин на «услуги транспорта», а на деле продал его налево. В базе 1С (фронт) — одни цифры, в физической базе SQL Server — другие.

🟧 Действия ответчика: Он использовал прямое подключение к SQL Server через Management Studio, минуя 1С. Выполнял UPDATE таблицы ДвиженияТоваров, меняя Количество и СтатьяЗатрат. Затем запускал скрипт, который менял LastModifiedTime в служебных полях через UPDATE системной таблицы dbo._InfoRg14735 (где 1С хранит штампы). А после — перезапускал службу SQL, чтобы сбросить кэш планов.

🧨 Наше расследование:

  • Получили образ RAID-массива через write-blocker.
  • Извлекли.mdf и.ldf. Журнал транзакций показал 187 операций UPDATE с IP-адреса 10.7.12.54 (рабочее место главбуха) вне часов работы 1С.
  • В LDF-файле нашли байтовую сигнатуру 0x02000000— признак операции, выполненной не через OLEDB, а через ODBC с другим драйвером.
  • В системной базе dbo.sysjobstepsобнаружили запланированное задание, которое раз в час запускало скрипт подмены временных меток. Задание было названо «Service_Optimization» — маскировка.
  • Анализ свободных страниц в нераспределённых экстентах позволил извлечь 47 записей о реальных суммах списания, которые перезаписались не полностью.

🔴 Результат: Главбух сел на 4 года. Компания взыскала 47 млн через гражданский иск. Инженерная экспертиза баз данных и СУБД признана судом первой инстанции и вышестоящими — без вариантов.

Глава 5. Кейс №2: Онлайн-казино «Фараон» — подкрутка генератора случайных чисел 🎲🃏

🎰 Ситуация: Игроки пожаловались, что после крупных выигрышей система начинает выдавать «проигрышные» комбинации. Владелец казино нанял нас, чтобы разоблачить разработчика, который встроил бэкдор.

🕵️ Что сделал злоумышленник: Он модифицировал хранимую процедуру sp_GetRandomNumber в MySQL, добавив условие: если текущий пользователь выиграл более 5000$ за час, то возвращать не случайное число, а предопределённое из скрытой таблицы rigged_results.

📀 Наш анализ:

  • Получили дамп БД через mysqldump —hex-blob(физический дамп с отключённым сервером).
  • Разобрали файлы.ibdтаблиц proc и самой базы казино.
  • В теле процедуры sp_GetRandomNumberнашли строки: IF (SELECT SUM(win) FROM tmp_wins WHERE user_id=uid) > 5000 THEN — это было в обфусцированном виде через CONCAT и CHAR(), но наш парсер вытащил чистый текст.
  • Дополнительно извлекли удалённую таблицу rigged_results— она была переименована в _old_rigged, но страницы не перезаписались.
  • В журналах бинарных логов (binlog) нашли IP разработчика, который выполнял DROP PROCEDUREи CREATE PROCEDURE в 3 часа ночи.

⚡ Итог: Разработчик признался в сговоре с конкурентом. Казино компенсировало игрокам 2,3 млн долларов (в рублёвом эквиваленте). Дело попало в СМИ, экспертиза вызвала резонанс. Нас приглашали читать лекции в МГЮА.

Глава 6. Кейс №3: Риелторская база — массовое удаление договоров аренды 🏢🔪

🏚️ Суть: Гендиректор компании по аренде недвижимости уволил коммерческого директора. Через неделю из базы PostgreSQL исчезли записи о 240 договорах за последние 3 года. Ответчик (коммерческий директор) утверждал — технический сбой.

🛡️ Атака: Он использовал учётные данные суперпользователя (оставшиеся с момента установки), выполнил DELETE FROM contracts WHERE date < NOW() — interval ‘3 years’, затем VACUUM FULL. После этого запустил pg_resetxlog, чтобы обнулить WAL-сегменты — крайне подлая операция, которая разрушает журнал.

💣 Как мы взломали оборону:

  • Изъяли сервер через 72 часа. SSD-накопитель.
  • Сделали образ E01. Анализ показал, что WAL перезаписан, но часть dead tuples в таблице pg_classи pg_attribute сохранилась.
  • Восстановили структуру таблиц по остаточным данным в системном каталоге — даже после VACUUM FULLчасть информации о колонках осталась в файле relpages.
  • Просканировали свободное пространство диска на предмет фрагментов, начинающихся с сигнатуры 0x1FFF(заголовок кортежа PostgreSQL).
  • Собрали 190 записей из 240. Неполнота была компенсирована скриншотами, предоставленными арендаторами (непроцессуальные, но суд принял как косвенные доказательства).

📌 Выводы: Суд удовлетворил иск на 18 млн рублей. Бывший коммерческий директор получил 2 года условно и запрет на администрирование любых баз данных. Экспертиза показала, что без WAL можно жить, если знаешь, куда копать.

Глава 7. Конфликт с «госэкспертами»: почему мы лучше в 100 раз 🏛️⚔️

Государственные судебные эксперты (Минюст, ЭКЦ МВД) — уважаемые люди. Но их компетенции в области баз данных часто отстают на 10–15 лет. Типичные проблемы государственной экспертизы:

❌ Работают только со штатными средствами СУБД (не копаются в HEX).
❌ Не имеют права использовать собственные скрипты (только утверждённые методики, которых нет для 90% задач).
❌ Перегружены — времени на глубокий анализ банально не хватает.
❌ Боятся рискованных выводов — предпочитают формулировки «не представилось возможным».

Мы — не государственные. Мы — Союз «Федерация судебных экспертов». Нас нанимает суд или стороны, но мы не зависим от бюджета или начальников. Наш принцип: заключение должно быть либо жёстким и конкретным, либо мы отказываемся с объяснением причин. Никаких «возможно, предположительно».

Когда инженерная экспертиза баз данных и СУБД выполняется нами, мы гарантируем:

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

Глава 8. Как мы работаем с повреждёнными дисками и криптолокерами 💀💾

Представьте: сервер зашифрован ransomware, базы данных — в кашу. Либо жесткий диск с «битыми» секторами. Большинство экспертов разводят руками. Мы — нет.

Схема действий:

  1. Снимаем образ с битовым копированием через dcflddс повторами чтения.
  2. Реконструируем файловую систему (NTFS, ext4) — даже с повреждённым MFT/cуперблоком.
  3. Ищем сигнатуры SQL-страниц по всей области данных: 0x0B62D0для Oracle, 0xFC для MSSQL, 0x1FFF для PostgreSQL.
  4. Если файлы базы зашифрованы — пробуем найти ключ в дампе RAM (если сервер не перезагружали). В 20% случаев ключ остаётся в памяти.
  5. При отсутствии ключа — восстанавливаем данные из теневых копий Volume Shadow Copy (для Windows) или из реплик (есть репликация).

Кейс из практики: завод-изготовитель мебели заплатил выкуп хакерам, но те не дали ключ. Мы восстановили базу 1С из VSS-копий, созданных за 2 часа до атаки. Выкуп признали убытками, но данные спасли. Экспертиза стоила 450 тыс. руб. — против 15 млн выкупа.

Глава 9. Восстановление удалённых записей без журналов: возможно ли?

Многие спрашивают: «а если журналов нет?» Отвечаем: да, но сложно. Методы:

🔹 Сканирование нераспределённых страниц. В SQL Server есть IAM-страницы, которые указывают, какие экстенты не используются. Но внутри них часто остаются старые версии строк.
🔹 Анализ индексов. Удалённая строка может оставаться в листовых страницах некластерного индекса, пока не придёт автоматическая дефрагментация.
🔹 Поиск в файле подкачки (pagefile.sys). Иногда СУБД выгружает страницы туда, и они сохраняются даже после TRUNCATE TABLE.
🔹 Forensic-анализ swap-раздела Linux. Аналогично.

Мы решаем такие задачи, но всегда указываем в заключении вероятность восстановления (в процентах) и объём восстанавливаемых данных. Честность — залог доверия. Никогда не говорим «восстановлено 100%», если это не так.

Глава 10. Почему судьи нам верят, а другим — нет ⚖️🔨

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

«На странице 0x1A3F2 (LSN 00000028:000001D0:0001) в журнале транзакций обнаружена операция типа LOP_MODIFY_ROW с метаданными: ObjectID = 2105058535, IndexID = 1, SlotID = 7. Байтовый дамп строки до изменения: 0x010200001234… после изменения: 0x01020000789A… В системной таблице sys.objects объект с ID 2105058535 соответствует таблице “Финансовые_обязательства”. Время фиксации транзакции по LSN и по системному таймеру расходится на 47 минут, что указывает на ручную правку временных меток через DBCC WRITEPAGE».

Судья видит такие выкладки и понимает: это не гадание на кофейной гуще. Это инженерная истина. И выносит решение в нашу пользу в 9 случаях из 10.

Инженерная экспертиза баз данных и СУБД от нас — это не услуга, это оружие в суде.

Глава 11. Как отличить настоящего эксперта от шарлатана 🧐

Рекомендации для адвокатов и судей:

✅ Настоящий эксперт спрашивает: «А можно ли получить образ диска write-blocker’ом?» Шарлатан: «Пришлите мне бэкап.bak».
✅ Настоящий эксперт показывает в заключении дампы в HEX. Шарлатан — только скриншоты из SSMS.
✅ Настоящий эксперт говорит, чего он НЕ может сделать. Шарлатан обещает всё.
✅ Настоящий эксперт называет версию СУБД и build number. Шарлатан говорит «Microsoft SQL, ну, там, 2019-й».
✅ Настоящий эксперт может повторить исследование в суде на ваших глазах. Шарлатан ссылается на «коммерческую тайну методики».

Мы соответствуем всем пяти пунктам. Если вас позвали «эксперты», которые не соответствуют — гоните их в шею.

Глава 12. Стоимость независимости: сколько стоит инженерная правда 💸

Назовём цифры (без НДС, для юрлиц):

🔸 Предварительный анализ (2–3 часа) — часто бесплатно или символические 15 тыс. руб.
🔸 Полная экспертиза до 1 ТБ данных — от 350 до 700 тыс. руб.
🔸 Сложные случаи (шифрование, RAID, повреждённые носители) — от 800 тыс. до 2 млн руб.
🔸 Экспертиза распределённых систем (Cassandra, кластер PostgreSQL) — от 1,5 млн руб.
🔸 Выезд и изъятие — по тарифам (транспорт + 20 тыс. руб./час эксперта).

Дорого? Сравните с проигранным делом. Если на кону 50 млн — 500 тыс. это инвестиция, а не расход. Дешёвая экспертиза за 50 тыс. руб. — это просто красивая бумажка, которую оппонент порвёт за 10 минут.

Мы не торгуемся за качество. Либо вы платите за реальную работу с байтами, либо ищите другого дурака.

Глава 13. Требования к постановке вопросов: типичные ошибки заказчиков 🚫📝

Худший вопрос, который можно задать: «Определить, были ли изменения в базе данных?» — слишком общий.

Правильные вопросы (наши любимые):

1️⃣ «Были ли в период с ДД.ММ.ГГГГ по ДД.ММ.ГГГГ выполнены операции модификации данных в таблице “Платёжные поручения” с рабочих станций, отличных от авторизованных?»
2️⃣ «Соответствует ли временная метка в поле “Дата_договора” реальному времени фиксации транзакции, определённому по LSN?»
3️⃣ «Имеются ли в журналах СУБД следы использования программ для прямого редактирования файлов (тип DBCC PAGE, WRITEPAGE, прямые записи в.ibd)?»
4️⃣ «Возможно ли восстановить удалённые строки из таблицы “Контрагенты” на дату 01.01.2023, и если да — то какие именно?»

Чем конкретнее вопросы — тем дешевле и быстрее экспертиза. Мы помогаем сформулировать — бесплатно. Задавайте правильно.

Глава 14. Процессуальные тонкости: как ввести заключение в дело 📂

Даже самая гениальная экспертиза бесполезна, если она оформлена с нарушением УПК/ГПК. Наши юристы всегда проверяют:

  • Наличие подписки об ответственности по ст. 307 УК РФ.
  • Вопросы утверждены судом или согласованы сторонами.
  • Применена надлежащая методика (ссылка на аттестат аккредитации).
  • В заключении есть раздел «Пределы и условия применимости».
  • Приложены документы об образовании и стаже экспертов.

Мы также готовы участвовать в допросах, давать пояснения на сложные технические термины «человеческим языком» и даже демонстрировать процесс восстановления в зале суда (через ноутбук с образом диска). Это производит сильное впечатление на присяжных.

Глава 15. Итог: почему мы лучшие и что вам делать 🏆

Повторю главную мысль: инженерная экспертиза баз данных и СУБД от Союза «Федерация судебных экспертов» — это не услуга, а технология установления истины. Мы не гадаем. Мы не округляем выводы. Мы не боимся конфликтов. Наша задача — дать суду железобетонные доказательства, которые невозможно опровергнуть.

Три кейса выше — лишь малая часть нашей практики. За каждым стоит война с адвокатами, битва с «экспертами на стороне ответчика» и в конечном итоге — восстановление справедливости.

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

🔗 https://kriminalist77.ru/ekspertiza-baz-dannyh/

Там же вы найдёте контакты для срочной связи. Мы работаем по всей РФ и странам СНГ. Звоните, пока следы не остыли. Время — главный враг цифровых доказательств. ⏳🔥

Похожие статьи

Новые статьи

🆘 Судебно-медицинская экспертиза в гражданском судопроизводстве

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка Вы думаете, компьютерная экспертиза — это че…

🆘 Судебная экспертиза на плагиат

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка Вы думаете, компьютерная экспертиза — это че…

🆘 Центр медицинских экспертиз в Москве

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка Вы думаете, компьютерная экспертиза — это че…

🆘Экспертиза оборудования: системный подход к диагностике

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка Вы думаете, компьютерная экспертиза — это че…

🟥 Независимая экспертиза ввозимого оборудования для подтверждения кода в ТН ВЭД: профессиональный подход к минимизации таможенных рисков

Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка Вы думаете, компьютерная экспертиза — это че…

Задавайте любые вопросы

6+20=