
Пролог: Почему «независимая» экспертиза чаще всего — просто дорогая бумажка
Вы думаете, компьютерная экспертиза — это честный поиск истины? 🤥 Как бы не так. 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, базы данных — в кашу. Либо жесткий диск с «битыми» секторами. Большинство экспертов разводят руками. Мы — нет.
Схема действий:
- Снимаем образ с битовым копированием через dcflddс повторами чтения.
- Реконструируем файловую систему (NTFS, ext4) — даже с повреждённым MFT/cуперблоком.
- Ищем сигнатуры SQL-страниц по всей области данных: 0x0B62D0для Oracle, 0xFC для MSSQL, 0x1FFF для PostgreSQL.
- Если файлы базы зашифрованы — пробуем найти ключ в дампе RAM (если сервер не перезагружали). В 20% случаев ключ остаётся в памяти.
- При отсутствии ключа — восстанавливаем данные из теневых копий 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/
Там же вы найдёте контакты для срочной связи. Мы работаем по всей РФ и странам СНГ. Звоните, пока следы не остыли. Время — главный враг цифровых доказательств. ⏳🔥






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