# Роль обратной разработки в понимании артефактов: когда документация — враг, а декомпилятор — друг Максим Суханов · CICADA8 MOSCOW FORENSICS DAY ’25 · День 2 — пятница, 12 сентября 2025: день информационной безопасности · По программе 13:45–14:15 · В записи 06:35:14–06:58:14 Саммари выступления · https://2025.moscow-forensics-day.workers.dev/summary/15-sukhanov Расшифровка: https://2025.moscow-forensics-day.workers.dev/transcript/15-sukhanov · Слайды: https://2025.moscow-forensics-day.workers.dev/slides/14-suhanov-obratnaya-razrabotka · Смотреть с 06:35:14: https://youtu.be/4V7Wez3L_58?t=23714 --- ## Кратко Чем эксперт обосновывает интерпретацию артефакта: чужими результатами или своим экспериментом. Главная мысль — документация вендора расходится с кодом по четырём разным причинам, каждая показана кейсом Windows: метки NTFS под reserved, «scoped» теневые копии, спецификация FAT, prefetch-файлы «OP-…pf». Метод — «из кода»: строки в бинарях, символы, декомпилятор, чёрный ящик. Доклад технический, без продукта; вопросов не было. ## Главное - Обосновать интерпретацию можно чужими результатами (статья, книга, документация) или своим экспериментом; повод — спор в Telegram-чатах год назад. Вендоры, в том числе Microsoft, «могут обманывать людей» — в кавычках, без злого умысла. - Кейс 1 (NTFS): в документации на `$STANDARD_INFORMATION` и `$FILE_NAME` временные метки помечены как зарезервированные поля — вендор скрывает служебные структуры «от кривых ручек». - Кейс 2: при шифровании по сети через шары теневые копии уцелевают, но с Windows 8 вместо документов и истории браузера в них нули, хотя документация VSS обещает всё занятое пространство. - Разгадка — scoped shadow copy: с Windows 8 пользовательские файлы исключаются (блок 16 КБ при кластере 4 КБ, поэтому часть данных уцелевает). Не задокументировано, но Microsoft объясняла это двум клиентам частными ответами. - Механизм: copy-on-write, затем srtasks.exe проходит MFT и по расширениям исключает эти файлы из битмапа; на серверных Windows скоупинга нет. - Кейс 3 (FAT): спецификация Microsoft для EFI System Partition написана по коду ветки 95/98/Millennium; драйвер NT/XP/10/11 ей не следует, драйверы Linux правят логику проверки на ошибки. - Кейс 4 (Prefetch): о файлах «OP-…-….pf» четыре гипотезы, три — «отсебятина»; четвёртая идёт от Process Hacker на GitHub, где константа 5 из старого Windows SDK названа PrefetcherBootControl — отсюда версия про загрузку. - Верный ответ давно есть в блоге Microsoft про ASP.NET: файл порождают вызовы OperationStart/OperationEnd («Operation Based Prefetching»), но сказано вскользь. - Путь из кода: строки шаблона имени в System32, отсев по символам, единственное вхождение — ntoskrnl.exe (PfSnBeginScenario, PfSnEndProcessTrace, PfSnOperationProcess из PfSnSetPrefetcherInformation при PrefetcherInformationClass = 5). - Чёрный ящик на Python: к загрузке ОС файлы отношения не имеют; трасса идёт от OperationStart до OperationEnd, в процессе одновременно одна, порог — 32 запроса ввода-вывода, page fault (см. ниже). ## Инструменты, артефакты, технологии - **Документация Microsoft, NTFS (`$STANDARD_INFORMATION`, `$FILE_NAME`)** — критикуется — метки под reserved, VSS не по коду, FAT по коду Windows 95. - **VSS, scoped shadow copy, srtasks.exe, MFT, hex-редактор, история Chrome** — механизм и демонстрация — 16 КБ против 4 КБ. - **Спецификация FAT, EFI System Partition** — критикуется — драйверы Linux правят проверку на ошибки. - **Prefetch «OP-…-….pf», OperationStart/OperationEnd, Python** — артефакт, API и проверка чёрным ящиком. - **ntoskrnl.exe, символы, System32, декомпилятор** — маршрут разбора — PfSnBeginScenario, PfSnEndProcessTrace, PfSnSetPrefetcherInformation, PfSnOperationProcess, PrefetcherInformationClass = 5; декомпилятор не назван. - **Process Hacker (GitHub), блог Microsoft про ASP.NET** — источники — устаревшая константа PrefetcherBootControl; верный ответ «вскользь», пост не назван. ## Правовой и организационный контекст Законы, статьи, ведомства и методики не звучали; терминология — «судебный эксперт», «интерпретация артефактов, следов, аномалий», «экспертный эксперимент». Организационный сюжет один: Microsoft объясняла scoped shadow copy как минимум двум клиентам частными ответами, в публичную документацию это не попало. ## Вопросы из зала Вопросов не было. Реплика «Зато было по-честному. Ни разу не сказал слово «бизнес»» (атрибуция не установлена), затем модератор: «Мне кажется, ты опять сломал мне аудиторию». ## Позиция спикера Слепое доверие документации — проблема, а не решение: обосновывать надо своим экспериментом, источник истины — код. Скепсис ко всем чужим текстам, включая блоги Microsoft. Ограничения называет сам: пример с NTFS экстремальный, исключение из копий работает «со звёздочкой», три из четырёх гипотез про prefetch — «отсебятина». Тон — лекция с самоиронией, без продаж. ## Цитаты - «…могут обманывать людей. Обманывать, естественно, в кавычках.» - «Вендор защищает служебные структуры от кривых ручек так называемых.» - «Но давайте попытаемся пойти самым сложным путем именно из кода.» - «процесс загрузки вообще никаким боком здесь не стоит рядом»