Антикриминалистика и как с ней бороться
Грамотный атакующий не только проникает, но и заметает следы — задача криминалиста в том, чтобы заметить само заметание.
Антикриминалистика (anti-forensics) — приёмы, которыми атакующий пытается затруднить или сорвать расследование: уничтожить, скрыть или фальсифицировать данные, чтобы аналитик не смог восстановить ход событий.
Этот урок — оборонительный по своей сути: мы изучаем методы сокрытия следов не чтобы их применять, а чтобы распознавать их работу и не дать обмануть себя. Понимание антикриминалистики делает аналитика устойчивым: он перестаёт принимать «чистую» картину за отсутствие инцидента и учится видеть подозрительные пустоты. Все описанные техники рассматриваются исключительно как объект обнаружения. Намеренное уничтожение или фальсификация информации с целью скрыть преступление — отягчающее обстоятельство; работа защитника — обратная.
Зачем это знать защитнику
Если бы атакующие не заметали следы, расследование сводилось бы к чтению логов. Но зрелый злоумышленник целенаправленно мешает анализу: чистит журналы, подделывает временные метки, прячет и шифрует данные. Аналитик, который этого не ожидает, делает ложный вывод «всё чисто» там, где на самом деле кто-то постарался. Поэтому ключевой навык — читать отсутствие данных как сигнал. Пробел в журнале, файл с невозможной хронологией, зашифрованный том на машине, где шифрования быть не должно, — всё это не «ничего», а след самого сокрытия.
Очистка логов — и как её заметить
Самый частый приём — удалить или обнулить журналы, чтобы спрятать действия. Но у самой очистки есть следы.
Как это выглядит
В Windows очистка журнала событий сама порождает событие: запись 1102 «журнал безопасности был очищен» в Security, событие 104 при очистке других журналов. В Linux атакующий может урезать файл или подменить его, но остаются косвенные признаки.
Признаки очистки журналов (что ищет аналитик):
- Windows EventID 1102 / 104 — факт очистки сам залогирован
- «дыра» во времени: непрерывный поток событий внезапно обрывается
- размер лог-файла 0 или резко меньше ожидаемого
- несоответствие между локальным логом и его копией в SIEM/на коллекторе
- время модификации лог-файла не совпадает с временем последней записи в нём
Главный контрприём виден в списке: если логи в реальном времени уезжают на отдельный коллектор (SIEM), то локальная очистка уже бесполезна — копия событий лежит там, куда атакующий не дотянулся. Поэтому «дыра» в локальном журнале при наличии записей в SIEM — это и есть пойманное заметание.
Тайм-стомпинг — и его выдаёт сама файловая система
Тайм-стомпинг (timestomping) — подмена временных меток файла, чтобы он выглядел старым и «своим» и не попал в окно расследования. Атакующий ставит вредоносному файлу дату создания, скажем, двухлетней давности.
Как это обнаруживают
На NTFS у каждого файла не один набор времён, а два: в атрибуте $STANDARD_INFORMATION (его показывает проводник и его легко изменить) и в $FILE_NAME (обновляется ядром, изменить штатными средствами трудно). Тайм-стомпинг обычно правит первый и забывает про второй — возникает рассинхрон, который и ловит аналитик.
Один файл, два источника времени на NTFS:
$STANDARD_INFORMATION Created: 2024-01-10 09:00 <- подделано
$FILE_NAME Created: 2026-01-15 14:05 <- реальное
Расхождение -> признак timestomping.
Доп. сигналы: метки с нулями в долях секунды (ровно :00.0000000),
время создания ПОЗЖЕ времени изменения, несовпадение с MFT-соседями.
Дополнительно помогает перекрёстная сверка с независимыми источниками из прошлого урока: запись в журнале о запуске процесса, ссылка в реестре, запись в MFT по номеру. Если файл «создан два года назад», но впервые упоминается в системе вчера — метка подделана.
Шифрование и сокрытие данных
Третье направление — сделать данные нечитаемыми или незаметными. Сюда входят шифрование контейнеров и дисков, упаковка вредоноса упаковщиком (packer), сокрытие данных в неиспользуемых областях, стеганография (прятать данные внутри картинок). С точки зрения защитника важно не «вскрыть любой ценой», а зафиксировать сам факт и оценить, что это меняет.
Косвенные признаки сокрытия/шифрования:
- файл/раздел с высокой энтропией без явного формата (выглядит как «шум»)
- процесс или том шифрования там, где его быть не должно
- аномально большие «пустые» области, slack-пространство с данными
- исполняемый файл, у которого почти нет читаемых строк (признак упаковки)
Понятие энтропии здесь рабочее: у зашифрованных и сжатых данных она близка к максимуму, у обычного текста и кода — заметно ниже. Резкий скачок энтропии — повод присмотреться. При этом аналитик честно фиксирует границу своих возможностей: если данные стойко зашифрованы и ключа нет, восстановить содержимое нельзя — и это тоже факт для отчёта, а не повод что-то домыслить.
Как это работает под капотом
У большинства антикриминалистических приёмов есть фундаментальная слабость: система избыточна. Одно и то же событие оставляет след в нескольких местах, и злоумышленнику нужно «подчистить» их все синхронно — что почти невозможно. Удалил локальный лог — остался коллектор. Подделал $STANDARD_INFORMATION — забыл про $FILE_NAME и MFT. Стёр файл — данные остались в неразмеченных секторах до перезаписи (отсюда работает file carving). Зашифровал том — но сам факт наличия криптоконтейнера и время его создания скрыть труднее. Криминалистика на этом и стоит: атакующий должен быть безупречен во всех источниках одновременно, а защитнику достаточно одной несостыковки. Поэтому стратегия защиты — увеличивать избыточность и выносить улики за пределы досягаемости: чем больше независимых, недоступных атакующему источников, тем труднее замести следы незаметно.
Как защититься
1. Выносите логи за пределы машины. Централизованный сбор в SIEM/на защищённый коллектор в реальном времени обесценивает локальную очистку — копия уже не у атакующего.
2. Защищайте журналы. Ограничьте права на изменение логов, включите аудит самой очистки (события 1102/104 — ваши друзья), храните на носителе только для добавления (append-only) где возможно.
3. Сверяйте времена из нескольких источников. Не доверяйте одной метке. $FILE_NAME против $STANDARD_INFORMATION, журнал против файловой системы, локальные часы против NTP — рассинхрон выдаёт подделку.
4. Читайте пустоту как сигнал. Дыра в логах, файл без истории, том высокой энтропии — это не «ничего», а след сокрытия. Подозрительная чистота требует объяснения.
5. Честно фиксируйте пределы. Если данные стойко зашифрованы и ключа нет — так и пишут в отчёте. Достоверность важнее красивого вывода.
Итоги
- Антикриминалистика — это очистка логов, тайм-стомпинг и шифрование/сокрытие; изучаем, чтобы обнаруживать, а не применять.
- Очистка журнала сама оставляет след (Windows 1102/104) и бессильна против копии в SIEM.
- Тайм-стомпинг выдаёт рассинхрон
$STANDARD_INFORMATIONи$FILE_NAMEи перекрёстная сверка с журналами и MFT. - Шифрование/упаковку выдают высокая энтропия и аномалии; факт сокрытия фиксируют, даже если содержимое не вскрыть.
- Сила защитника — в избыточности источников: атакующему нужно подчистить всё, аналитику достаточно одной несостыковки; намеренное уничтожение улик отягчает ответственность.