🟩 Введение: погружение в низкоуровневую реальность
Программное обеспечение — это не просто строки кода. Это сложнейшая иерархия структур: от отдельных битов в оперативной памяти до многомодульных архитектур, распределённых по серверам в разных часовых поясах. 🌐 Когда возникает правовой спор, связанный с авторством, лицензированием, вредоносным функционалом или нарушением целостности, обычные методы IT-аудита оказываются бессильны. На сцену выходит экспертиза программ для ЭВМ — комплекс технических исследований, проводимых с использованием специализированного инструментария, формальных методов и строгой процессуальной дисциплины. В данной статье мы детально разберём технологическую составляющую этого процесса: от снятия образов дисков до дизассемблирования и стилеметрии. 🖥️
- Объекты исследования: что именно изучает эксперт
В рамках экспертизы программ для ЭВМ объектами могут выступать:
- исходные тексты программ на языках высокого уровня (C, C++, Java, Python, C#, Go, Rust и др.);
- объектный (исполняемый) код в виде файлов.exe,.dll,.so,.sys,.bin;
- скриптовые файлы (.js,.vbs,.ps1,.py без компиляции);
- прошивки микроконтроллеров и встраиваемых систем;
- файлы журналов (логи), дампы памяти, трассировка системных вызовов;
- метаданные компиляторов и сборочных сред.
Каждый тип объекта требует специфических методов извлечения и анализа. 🔧
- Криминалистическое копирование носителей: первый и важнейший шаг
Перед началом любого анализа эксперт обязан создать битовую копию носителя (жесткого диска, SSD, флеш-накопителя). 📀 Используются аппаратные блокираторы записи (wrITe-blockers), исключающие любое изменение данных. Процесс копирования сопровождается вычислением контрольных сумм (SHA-256, MD5) для каждого сектора. Только после этого оригинальный носитель помещается в сейф, а эксперт работает с копией. Этот протокол обязателен для признания заключения допустимым доказательством. ✅
- Статический анализ исходного кода: методы и метрики
Если исходный код доступен, эксперт применяет статический анализ. Основные техники:
- Лексический анализ — разбиение кода на токены и сравнение частотных распределений.
- Синтаксический анализ — построение абстрактного синтаксического дерева (AST) и его сравнение с эталонным.
- Семантический анализ — сопоставление графов потока данных (Data Flow Graph).
- Метрики сложности — цикломатическая сложность Маккейба, глубина вложенности, количество параметров функции.
В ходе экспертизы программ для ЭВМ эти методы позволяют выявить заимствования даже при полном переименовании идентификаторов. 🧮
- Дизассемблирование и декомпиляция: заглядываем внутрь бинарника
Когда исходный код отсутствует, эксперт прибегает к реверс-инжинирингу. 🔄 Дизассемблирование — преобразование машинного кода в ассемблерный листинг. Декомпиляция — попытка восстановить псевдокод на языке высокого уровня (например, с помощью Ghidra или Hex-Rays). Полученный псевдокод не идентичен оригиналу, но сохраняет алгоритмическую логику, что достаточно для сравнения. Важно: законность реверс-инжиниринга в судебных целях закреплена статьёй 1280 ГК РФ. ⚖️
- Динамический анализ: запуск в контролируемой среде
Динамический анализ применяется для выявления вредоносного функционала, скрытых потоков, сетевых соединений, манипуляций с файловой системой. 🏜️ Программа запускается в изолированной среде (песочнице), где каждое её действие логируется. Используемые инструменты:
- Системные отладчики (x64dbg, WinDbg, GDB) — позволяют ставить точки останова, изменять регистры, отслеживать вызовы API.
- Мониторы системных вызовов (API MonITor, Process MonITor, strace).
- Эмуляторы сетевых сервисов (INetSim, FakeNet-NG) — имитируют внешние серверы.
Динамический анализ особенно важен для экспертизы программ для ЭВМ подозреваемых в шпионаже или саботаже. 🕵️
- Анализ сетевого трафика: куда «звонит» программа
Многие программы (особенно вредоносные) содержат модули, отправляющие данные на внешние серверы. 📡 Эксперт фиксирует весь сетевой трафик с помощью Wireshark или tcpdump. Анализируются:
- IP-адреса и порты назначения;
- протоколы (HTTP/HTTPS, DNS, IRC, TCP raw);
- передаваемые данные (в том числе зашифрованные — фиксируются длины пакетов и временные метки).
Совпадение с известными C&C-серверами (command & control) может стать основанием для признания программы вредоносной. 🚨
- Экспертиза вредоносного ПО: классификация и признаки
Вредоносное ПО (малварь) классифицируется на троянов, червей, руткиты, бэкдоры, майнеры, ransomware. 🔥 В ходе экспертизы программ для ЭВМ эксперт ищет следующие признаки:
- модификация системных файлов и реестра;
- скрытие собственных процессов (hook’и, DKOM);
- устойчивость к перезагрузке (автозагрузка, планировщик задач);
- попытки внедрения кода в легитимные процессы;
- использование криптографии для шифрования файлов или сокрытия трафика;
- наличие известных сигнатур (YARA rules).
При обнаружении хотя бы нескольких признаков программа классифицируется как потенциально опасная. 🦠
- Сравнительный анализ бинарных файлов: идентификация плагиата
Для выявления плагиата в бинарном коде используется специальное ПО — BinDiff, Diaphora, FCollide. 🔬 Алгоритм работы:
- Дизассемблирование обоих файлов.
- Выделение функций по прологам/эпилогам.
- Сравнение графов потоков управления (CFG).
- Подсчёт процента совпадающих базовых блоков.
Пороговые значения: если более 80% функций имеют идентичные CFG, эксперт делает вывод о копировании. При 50-80% — высокая вероятность заимствования. Менее 30% — скорее всего, разные программы. 📊
- Анализ метаданных компиляции: что может рассказать компилятор
Каждый компилятор (MSVC, GCC, Clang, MinGW) оставляет уникальные сигнатуры в бинарном файле:
- Магические числа (например, 0x00905A4D для PE).
- Стандартные библиотечные функции (вшитые имена, таблицы импорта).
- Отладочные символы (если не удалены).
- Версия компилятора (в секции.rdata или.rodata).
Эти метаданные помогают установить, был ли файл скомпилирован из одних исходников одной средой. Для экспертизы программ для ЭВМ это дополнительный, но не основной признак. 🏷️
- Кейс №1: Идентификация плагиата в системе управления складом (WMS)
📦 Компания «ЛогистСофт» разработала WMS. Конкурент «СкладТех» выпустил аналогичный продукт. В ходе экспертизы программ для ЭВМ эксперт провёл бинарное сравнение. Выявлено:
- 92% функций имеют идентичные графы потоков управления.
- В одной из функций найдена уникальная константа 0x4C4F4749 (ASCII «LOGI»), которая не несла смысловой нагрузки, но присутствовала в оригинале.
- Секции.rdata содержали одинаковые строковые литералы с опечатками.
Заключение: программа ответчика является переработанной копией. Взыскано 43 млн рублей. 💰
- Кейс №2: Обнаружение аппаратного кейлоггера через анализ драйвера
⌨️ В офисах крупной компании были обнаружены компьютеры, отправляющие нажатия клавиш на внешний сервер. Подозрение пало на USB-драйвер клавиатуры. Эксперт провёл экспертизу программ для ЭВМ драйвера (.sys). Динамический анализ в виртуальной машине показал, что драйвер перехватывает IRP-запросы (I/O Request Packets) на чтение с USB и дублирует их в скрытый буфер, откуда данные отправляются через скрытый сетевой канал. Эксперт восстановил алгоритм обфускации трафика (XOR с ключом 0xAB). Дело передано в следственные органы. 🔐
- Кейс №3: Спор о наследовании прав на алгоритм сжатия данных
🗜️ После смерти разработчика два наследника спорили, кто является автором уникального алгоритма сжатия (lossless). Один наследник предоставил исходный код, второй — только исполняемый файл. Эксперт дизассемблировал исполняемый файл, восстановил псевдокод и сравнил с исходником наследника. Совпадение основных циклов и таблиц вероятностей — 97%. Кроме того, стилеметрический анализ показал, что идентификаторы в исходнике и комментарии соответствуют привычкам умершего разработчика (использование int I, J, K вместо i, j, k). Суд признал соавторство обоих наследников в долях 80% и 20%. 📜
- Инструментарий эксперта: детальный обзор аппаратных средств
🖥️ Для качественной экспертизы программ для ЭВМ необходимо специализированное оборудование:
- WrITe-blocker (Tableau T8, Atola Insight, DeepSpar Disk Imager) — для безопасного подключения накопителей.
- Клонировщики (Logicube Forensic Falcon, Vectech PC-3000) — для создания битовых образов даже неисправных дисков.
- Аппаратные отладчики (JTAG-адаптеры, J-Link) — для анализа прошивок и встраиваемых систем.
- Сервер с виртуализацией (VMware ESXi, VirtualBox) — для изолированного динамического анализа.
Стоимость такого оборудования может превышать 2-3 миллиона рублей, что объясняет редкость сертифицированных экспертов. 💸
- Программные инструменты: свободные и коммерческие
🛠️ В работе используются:
- Дизассемблеры/декомпиляторы: IDA Pro (коммерческий, от 3 000$), Ghidra (бесплатный от NSA), Radare2 (open source).
- Отладчики: x64dbg, OllyDbg (бесплатные), WinDbg (из Windows SDK).
- Сравнение бинарников: BinDiff (бесплатный для некоммерческого использования), Diaphora (плагин к IDA).
- Песочницы: Cuckoo Sandbox (open source), ANY.RUN (коммерческий облачный).
- Анализ памяти: VolatilITy Framework (бесплатный).
Подавляющее большинство задач решается комбинацией бесплатных инструментов, но лицензия IDA Pro остаётся золотым стандартом. 🥇
- Формальные методы верификации: математическая строгость
Для критических систем (например, ПО для АЭС или авионики) применяются формальные методы. 🧮 Это математическое доказательство соответствия программы спецификации. Используются:
- Model checking (проверка моделей) — системы SPIN, NuSMV.
- Теоремы доказывания (Coq, Isabelle/HOL).
- Абстрактная интерпретация (Astrée).
В рамках экспертизы программ для ЭВМ такие методы применяются редко (из-за трудоёмкости), но их результаты обладают наивысшей доказательственной силой. 🧠
- Анализ обфусцированного кода: как распутать клубок
Обфускация — намеренное запутывание кода с помощью:
- подмены имён переменных на бессмысленные (a1, a2,…);
- добавления мёртвого кода (never executed);
- разбиения простых инструкций на последовательности сложных;
- использования полиморфных генераторов.
Эксперт противодействует этому:
- символическое выполнение (Angr, KLEE) — вычисляет возможные значения переменных без фактического запуска;
- конкретно-символическое выполнение;
- деобфускация с помощью скриптов (например, Python-скрипты для патчинга байт-кода).
Опытный специалист справляется с 90% коммерческих обфускаторов за 1-5 дней. ⏱️
- Стилеметрия: математическая модель «почерка программиста»
Каждый разработчик имеет уникальные статистические характеристики кода. 📊 Эксперт измеряет:
- Частоту использования конкретных конструкций (for vs while, if-else vs swITch).
- Распределение длин идентификаторов.
- Коэффициент Холстеда (длина программы, сложность).
- Энтропию Шеннона для распределения операторов.
- Предпочтение рекурсии или итераций.
Для экспертизы программ для ЭВМ эти данные обрабатываются методами многомерной статистики (главные компоненты, дискриминантный анализ). Достоверность авторской атрибуции достигает 85-95% при наличии достаточного эталонного материала. 📈
- Почему экспертов по ПО так мало в регионах? Технические причины
Объективные причины:
- Отсутствие лабораторной базы: wrITe-blocker, криминалистические клонировщики, серверные стойки — дорого.
- Необходимость постоянного обучения: новые компиляторы, инструкции процессоров (AVX, AVX-512), обфускаторы.
- Низкая плотность дел: в регионах может быть 1-2 спора в год, экспертизу экономически невыгодно содержать.
- Требования к аттестации: Минюст, МВД или СК требуют регулярного подтверждения квалификации.
Именно поэтому наша организация готова вылетать для проведения данной экспертизы в любой регион России. ✈️ Мы доставляем всю лабораторию с собой.
- Технические требования к выездной лаборатории
Мы используем мобильный набор:
- Ноутбук с ОС Windows/Linux (защищённый, без доступа в интернет в процессе анализа).
- Внешний wrITe-blocker с интерфейсом SATA/USB 3.0.
- Набор переходников для SSD (M.2, mSATA, NVMe).
- Два криминалистических клонировщика (аппаратные, для быстрого копирования).
- Коммутатор и изолированная сетевая среда для динамического анализа.
- Источник бесперебойного питания (защита от скачков напряжения).
Всё это упаковывается в два кейса типа Pelican и перевозится ручной кладью. 🧳
- Пример технического задания на экспертизу: шаблон для юриста
Для назначения экспертизы программ для ЭВМ в определении суда должны быть указаны:
- точное наименование файлов, их хеши (если известны);
- марка, модель, серийные носители (жёсткого диска, SSD);
- перечень вопросов в технической формулировке (например: «Имеются ли в файле module.dll функции, осуществляющие передачу данных на IP-адрес 185.130.5.253?»);
- срок проведения (не менее 20 рабочих дней).
Без конкретных вопросов эксперт не сможет дать содержательный ответ. 📝
- Процедура верификации экспертного заключения: внутренний контроль
Каждое заключение проходит двухэтапную проверку:
- Внутренний рецензент — другой эксперт той же специализации проверяет все расчёты, скриншоты и выводы.
- Методист — проверяет соответствие заключения требованиям Минюста и профильным ГОСТам (например, ГОСТ Р ИСО/МЭК 27037-2014 для изъятия цифровых доказательств).
Дополнительно возможно последующее рецензирование со стороны другой организации (по запросу суда). Такой контроль минимизирует ошибки до менее 1%. ✅
- Типичные артефакты и как их избежать
При анализе экспертизы программ для ЭВМ могут возникать ложные совпадения:
- Стандартные библиотеки (printf, memcpy) — у всех программ они одинаковые. Решение: исключать библиотечные функции из сравнения.
- Оптимизация компилятора (разворачивание циклов) — изменяет граф потока. Решение: сравнивать на более высоком уровне (алгоритмы, а не конкретные инструкции).
- Одинаковые алгоритмы с открытых источников (например, быстрая сортировка). Решение: проверять уникальные константы, нестандартные модификации.
Опытный эксперт всегда документирует эти риски в заключении. 📑
- Автоматизация экспертизы: скрипты и плагины
Большая часть рутинной работы может быть автоматизирована. ✨ Мы используем:
- Пакетный дизассемблирования через IDAPython.
- Сравнение тысяч файлов за раз с помощью BinDiff в командной строке.
- Автоматическое извлечение строковых констант и доменов.
- YARA-правила для поиска известных семейств малвари.
Автоматизация ускоряет экспертизу программ для ЭВМ в 3-5 раз, но не заменяет аналитическое мышление человека при интерпретации результатов. 🤖
- Будущее технической экспертизы ПО: тенденции и прогнозы
🔮 В ближайшие 5 лет ожидаются:
- Внедрение нейросетевых детекторов клонирования кода на основе трансформеров (CodeBERT, GraphCodeBERT).
- Облачные песочницы с искусственным интеллектом для автоматической классификации малвари.
- Блокчейн-фиксация хешей для обеспечения неизменности объектов экспертизы.
- Рост количества экспертиз прошивок IoT-устройств (умные дома, медицинские приборы).
Наша лаборатория уже тестирует некоторые из этих технологий, но пока основой остаются классические методы, апробированные в судах. 🧪
- Заключительные технические рекомендации и ссылка на ресурс
Подводя технический итог, подчеркнём: экспертиза программ для ЭВМ — это высокотехнологичный процесс, требующий уникального оборудования, ПО и многолетнего опыта. Ввиду редкости таких специалистов в регионах России, мы полностью готовы вылетать для проведения данной экспертизы в любой регион России, от Калининграда до Чукотки, с полной выездной лабораторией. Не рискуйте доказательствами — доверьте анализ профессионалам. 🔗
Все технические подробности, включая список оборудования, методики и примеры заключений, опубликованы на сайте:
https://sud-expertiza.ru/ekspertiza-programm-dlya-elektronnyh-vychislITelnyh-mashin-evm/
🟩 Статья подготовлена экспертной группой, специализирующейся на техническом анализе программного обеспечения. Воспроизведение допускается только с активной гиперссылкой на источник.
Новые статьи:
🆘 Центр медицинских экспертиз г Москва: профессиональная защита прав пациентов и врачей
🧪 Экспертиза лакокрасочных материалов и покрытий
🧴 Экспертиза парфюмерных и косметических средств
🧠 Психологическая экспертиза




