Анти-форензика: как заметают следы
Этот урок — обзор приёмов сокрытия следов, чтобы вы умели их распознавать, а не применять.
Анти-форензика — техники, затрудняющие расследование: сокрытие, подделка или уничтожение артефактов. Криминалист изучает их, чтобы выявлять признаки манипуляций.
Опытные злоумышленники не просто атакуют — они стараются скрыть следы. Понимание их приёмов превращает «пустоту» в улику: отсутствие логов там, где они должны быть, или подозрительно «ровные» времена сами по себе сигнализируют о вмешательстве.
Здесь особенно важна этическая рамка, и мы вынесем её вперёд, чтобы не было разночтений. Этот материал — про распознавание, а не про применение. Аналитик должен понимать, как выглядят следы сокрытия, ровно затем, чтобы находить их при легальном расследовании своих или корпоративных систем. Использование анти-форензики для уничтожения доказательств, сокрытия противоправных действий или воспрепятствования расследованию само по себе противоправно и может образовывать отдельный состав. Мы изучаем приёмы как «отпечатки», которые они оставляют, — с позиции защитника, а не нападающего.
Основные приёмы
- 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, сокрытие процессов.
- Большинство приёмов оставляют вторичные следы — аномалии, которые сами становятся уликой.
- Знание нужно для распознавания при легальном расследовании, не для сокрытия действий.