Анти-форензика: как заметают следы

Этот урок — обзор приёмов сокрытия следов, чтобы вы умели их распознавать, а не применять.

Анти-форензика — техники, затрудняющие расследование: сокрытие, подделка или уничтожение артефактов. Криминалист изучает их, чтобы выявлять признаки манипуляций.

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

Здесь особенно важна этическая рамка, и мы вынесем её вперёд, чтобы не было разночтений. Этот материал — про распознавание, а не про применение. Аналитик должен понимать, как выглядят следы сокрытия, ровно затем, чтобы находить их при легальном расследовании своих или корпоративных систем. Использование анти-форензики для уничтожения доказательств, сокрытия противоправных действий или воспрепятствования расследованию само по себе противоправно и может образовывать отдельный состав. Мы изучаем приёмы как «отпечатки», которые они оставляют, — с позиции защитника, а не нападающего.

Основные приёмы

  • Timestomping — подделка временных меток файлов, чтобы вредонос «затерялся» среди старых системных файлов.
  • Очистка логов — удаление или выборочная правка журналов (в Windows — Event ID 1102; в Linux — обрезка /var/log, history -c).
  • Шифрование и стеганография — сокрытие данных в зашифрованных контейнерах или внутри других файлов.
  • Secure wiping — многократная перезапись для надёжного удаления (после этого carving бессилен).
  • Fileless/in-memory — работа только в памяти, минимум следов на диске.
  • Сокрытие процессов — руткиты прячут процессы из штатных списков ОС.

За этим списком стоит простая логика противника: чем дольше его действия остаются незамеченными, тем больше времени у него на достижение цели. Поэтому анти-форензика бьёт по трём опорам расследования сразу — по достоверности артефактов (timestomping искажает хронологию), по наличию артефактов (очистка логов и wiping убирают улики) и по видимости активности (fileless и руткиты прячут саму работу вредоноса). Понимая, какую опору атакует приём, вы знаете, где искать компенсирующий след.

Полезно рассмотреть приёмы и по «уровню», на котором они работают. Часть из них действует на уровне отдельных артефактов: timestomping правит метки конкретного файла, очистка истории команд убирает строки из ~/.bash_history. Часть — на уровне подсистемы журналирования: очистка журнала событий Windows или обрезка /var/log бьёт по целому классу записей разом. Самые «дорогие» для злоумышленника приёмы работают на уровне ядра (руткиты, скрывающие процессы и файлы) или вовсе отказываются от диска (fileless — жизнь только в памяти). Закономерность такая: чем выше уровень сокрытия, тем оно эффективнее, но и тем сложнее в исполнении, тем больше прав требует и тем заметнее становится в другой плоскости — например, бесфайловый вредонос почти ничего не оставляет на диске, зато ярко виден в дампе памяти. Это снова возвращает нас к идее перекрёстной проверки: спрятавшись в одном измерении, активность проявляется в другом.

Как их распознают

ПриёмПризнак для криминалиста
timestompingрасхождение пар меток в NTFS, «ровные» времена
очистка логовобрыв/пробел во времени, Event 1102
wipingобласти из нулей/мусора, отсутствие slack-обрывков
скрытые процессыpsscan находит то, чего нет в pslist

Перекрёстная проверка источников

Общий принцип распознавания — не доверять одному источнику и сверять независимые. Метку времени файла в NTFS проверяют по второму набору меток ($FILE_NAME против $STANDARD_INFORMATION), по записям в журнале $UsnJrnl и $LogFile, по prefetch и по логам выполнения. Удаление логов на хосте обнаруживают по их «двойнику» — событиям, уже улетевшим в SIEM до очистки. Скрытый процесс ловят, сопоставляя «официальный» список (pslist, который вредонос мог подправить) со сканированием памяти по сигнатурам структур (psscan, который видит то, что из списка убрали). Идея одна: злоумышленник почти никогда не контролирует все источники сразу, и расхождение между ними — это и есть улика.

Как работает под капотом

Многие приёмы оставляют вторичные следы. Подделка времени через стандартные API меняет $STANDARD_INFORMATION, но не $FILE_NAME — отсюда расхождение, видимое в NTFS. Очистка журнала сама порождает запись (1102). Wiping оставляет неестественно «чистые» области. То есть полностью бесследное заметание — большая редкость; задача криминалиста — искать аномалии, а не только прямые улики.

Глубинная причина в том, что современная ОС избыточна: одно и то же событие отражается сразу в нескольких подсистемах, которые ведутся независимо и о которых атакующий может не знать или до которых не дотянется без полного контроля над ядром. Скрыть факт запуска файла означало бы синхронно подчистить и журнал событий, и prefetch, и реестр, и USN-журнал, и кэш ShimCache/AmCache, и при этом не оставить «слишком ровной» пустоты на их месте. Практически это почти неосуществимо, и именно на этой избыточности держится форензика. Поэтому опытный аналитик мыслит не «где улика», а «где должен был остаться след, и почему его нет».

Нормально:  логи непрерывны, времена разнообразны
Аномалия:   |__пробел__|  в логах за 02:00-02:30
            файлы с идентичным "ровным" временем
            процесс в psscan, но не в pslist
  -> признаки вмешательства = сами по себе улика

Этическая рамка

Эти знания нужны для защиты и распознавания: понимать, как могли скрыть следы, и находить признаки этого при легальном расследовании своих/корпоративных систем. Применять анти-форензику для сокрытия противоправных действий или уничтожения доказательств — недопустимо и само по себе наказуемо. Отдельно подчеркнём: даже «защитное» шифрование собственных данных или законное безопасное удаление списанных носителей — это нормальные практики приватности; противоправность возникает не от самих инструментов, а от цели сокрытия доказательств в расследовании.

Частые ошибки

  • Принять «пустоту» за чистоту. Отсутствие ожидаемых следов — само по себе подозрительно.
  • Доверять одной метке времени. Сверяют пары меток и совокупность артефактов.
  • Полагаться только на pslist. Скрытые процессы ищут сканированием (psscan).
  • Считать wiped-данные доступными. После надёжной перезаписи восстановления нет.
  • Объяснять всё злым умыслом. Пробел в логах бывает и от сбоя или ротации — версию проверяют, а не назначают.

Итоги

  • Анти-форензика: timestomping, очистка логов, шифрование, wiping, fileless, сокрытие процессов.
  • Большинство приёмов оставляют вторичные следы — аномалии, которые сами становятся уликой.
  • Знание нужно для распознавания при легальном расследовании, не для сокрытия действий.
Проверьте себя
1. Что такое timestomping?
AУдаление файла
BПодделка временных меток файлов, чтобы скрыть вредонос среди старых файлов
CШифрование диска
DОчистка логов
2. Почему «пустота» (отсутствие ожидаемых логов) сама по себе подозрительна?
AЛоги всегда пусты
BПробел или обрыв там, где должны быть события, указывает на очистку следов
CЭто нормально для любой системы
DЭто ускоряет анализ
3. Зачем криминалисту изучать анти-форензику?
AЧтобы применять её при расследовании
BЧтобы распознавать признаки сокрытия следов при легальном анализе
CЧтобы скрывать свои действия
DЧтобы ускорить carving