Пос­ле уда­ления фай­ла информа­ция о нем может еще дол­го оста­вать­ся в сис­теме. В статье мы раз­берем эту осо­бен­ность на при­мере Windows 11. Возь­мем стан­дар­тный сце­нарий: уда­лим файл, очис­тим кор­зину и перезаг­рузим сис­тему. Пред­ставь себе, даже пос­ле таких про­цедур в сис­теме оста­нет­ся дос­таточ­но инфы для форен­зики.

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

В мат­рице MITRE ATT&CK у этой тех­ники есть иден­тифика­тор — T1070.004 File Deletion: выпол­нив задачу, ата­кующий уда­ляет файл, что­бы оста­вить мень­ше сле­дов в сис­теме и зат­руднить даль­нейший ана­лиз.

Эта тех­ника меня зацепи­ла: мне всег­да было инте­рес­но, как находят уда­лен­ные дан­ные и как все это работа­ет с точ­ки зре­ния DFIR.

По­это­му я выб­рал прос­той сце­нарий: соз­дать тес­товый файл .exe, запус­тить его в Windows 11, уда­лить в кор­зину, очис­тить ее, перезаг­рузить сис­тему, а затем поис­кать сле­ды.

В этом слу­чае я хотел про­верить:

  • смо­жем ли мы под­твер­дить, что файл оста­вал­ся в сис­теме пос­ле очис­тки кор­зины;
  • смо­жем ли мы доказать, что файл запус­кали;
  • смо­жем ли мы хотя бы при­мер­но вос­ста­новить хро­ноло­гию и опре­делить вре­мя запус­ка;
  • сох­ранит­ся ли информа­ция о пути к фай­лу;
  • по­лучит­ся ли доказать, что уда­лили имен­но нуж­ный файл;
  • бу­дут ли отли­чать­ся арте­фак­ты запус­ка через про­вод­ник, cmd.exe и PowerShell.

Об­рати вни­мание: нам нужен не столь­ко сам уда­лен­ный файл, сколь­ко хро­ноло­гия дей­ствий, которую мы вос­ста­новим по оставшим­ся в Windows сле­дам.

 

Схема лаборатории и эксперимента

Для опы­та я выделил отдель­ную машину с Windows 11 и сде­лал снап­шот чис­той сис­темы, что­бы во вре­мя экспе­римен­та фай­лы не сме­шива­лись.

Мы будем про­верять три сце­нария:

  • за­пуск .exe двой­ным щел­чком в про­вод­нике;
  • за­пуск .exe из cmd.exe;
  • за­пуск .exe из PowerShell.

По­рядок дей­ствий во всех сце­нари­ях будет оди­нако­вым: файл появ­ляет­ся на рабочем сто­ле, мы один раз запус­каем его, отправ­ляем в кор­зину, очи­щаем кор­зину, переза­пус­каем сис­тему и ана­лизи­руем резуль­таты.

 

Тестовый файл

Я соз­дал прос­той Test.exe. Пос­ле запус­ка он соз­давал в той же пап­ке файл marker.txt и записы­вал в него вре­мя выпол­нения, имя поль­зовате­ля, имя компь­юте­ра и путь к исполня­емо­му фай­лу.

Этот мар­кер будет для нас кон­троль­ной точ­кой: если он появил­ся, зна­чит, запуск про­шел успешно.

Со­дер­жимое мар­кера:

TimestampLocal=2026-08-14 13:26:28.457 +03:00
Username=dfirlab
ComputerName=WIN11-T1070-LAB
ExecutablePath=C:\Users\dfirlab\Desktop\T1070_004_Test.exe

Раз­мер исходно­го .exe — 4608 байт. Его хеш:

CBFCE7E3844A23784E07DC4B4D94813BA2C60933496F80A4CF343E5CD98ED84D

Хеш здесь нужен, что­бы пос­ле уда­ления убе­дить­ся: мы наш­ли имен­но те сле­ды, которые иска­ли.

Для про­вер­ки выпол­ним такую коман­ду:

Get-FileHash `
'C:\Users\dfirlab\Desktop\T1070_004_Test.exe' `
-Algorithm SHA256

Ус­ловия для работы готовы. Нач­нем с самого прос­того и при­выч­ного вари­анта — запус­ка двой­ным кли­ком через про­вод­ник.

 

Запуск через проводник

Файл готов. Запус­каем его двой­ным щел­чком на рабочем сто­ле. На скрин­шоте видим резуль­тат: файл .exe и marker.txt.

 

Удаляем .exe

Пос­ле запус­ка уда­ляем кла­вишей Delete толь­ко .exe, тог­да как наш тек­сто­вый мар­кер спе­циаль­но оставля­ем.

На этом эта­пе файл еще не стерт пол­ностью. При обыч­ном уда­лении Windows перено­сит его в кор­зину — каталог $Recycle.Bin. Там появ­ляют­ся два свя­зан­ных объ­екта: $I с метадан­ными и $R с содер­жимым уда­лен­ного фай­ла.

У нас появи­лись:

  • $IQ4SOOB.exe;
  • $RQ4SOOB.exe.

Раз­мер $R сов­падал с раз­мером .exe — 4608 байт. Хеш SHA-256 тоже был оди­нако­вым.

CBFCE7E3844A23784E07DC4B4D94813BA2C60933496F80A4CF343E5CD98ED84D

Для про­вер­ки:

Get-FileHash `
'C:\$Recycle.Bin\<SID>\$RQ4SOOB.exe' `
-Algorithm SHA256

Про­вер­ка фай­лов $I и $R пос­ле уда­ления исполня­емо­го фай­ла: све­ряем хеш SHA-256 и вре­мен­ные мет­ки.

 

Что в $I

Пос­ле раз­бора фай­ла IQSOOB.exe мы получи­ли:

OriginalSize: 4608
DeletionTimeLocal: 2026-08-10 14:32:29.124 +03:00
OriginalPath: C:\Users\dfirlab\Desktop\T1070_004_Test.exe

По­ка файл хра­нит­ся в кор­зине, $I дает нам мно­го информа­ции: исходный путь, раз­мер и вре­мя уда­ления. Вмес­те с хешем SHA-256 фай­ла $R это поз­воля­ет вос­ста­новить пол­ную кар­тину: свя­зать исходный .exe с объ­ектом в кор­зине и опре­делить, ког­да его уда­лили.

Метаданные $I: исходный путь, размер и время удаления Test.exe
Ме­тадан­ные $I: исходный путь, раз­мер и вре­мя уда­ления Test.exe
 

Убираем очевидные следы

По­ка фай­лы $I и $R лежат в кор­зине, мож­но было бы прос­то иссле­довать их. Но наша задача — дей­ство­вать радикаль­нее, поэто­му пол­ностью очи­щаем кор­зину и перезаг­ружа­ем сис­тему.

Пе­ред очис­ткой я зафик­сировал вре­мя:

2026-08-10 14:49:05.912 +03:00

Очис­тка и переза­пуск заняли при­мер­но пол­торы минуты. Пос­ле это­го в кор­зине остался толь­ко слу­жеб­ный файл desktop.ini, а фай­лов $I и $R уже не было.

$Recycle.Bin после очистки
$Recycle.Bin пос­ле очис­тки
 

Что осталось после перезагрузки

В хро­ноло­гии уже нет фай­лов .exe, $I и $R, но про­верим, оста­лись ли дру­гие сле­ды их сущес­тво­вания и запус­ка.

 

Prefetch

Для начала про­верим каталог Prefetch в Windows: в нем могут хра­нить­ся дан­ные о при­ложе­ниях, которые запус­кали рань­ше.

Ищем запись по име­ни фай­ла:

Get-ChildItem 'C:\Windows\Prefetch' `
-Filter 'T1070_004_TEST.EXE-*.pf' |
Select-Object Name, Length, CreationTime, LastWriteTime

В катало­ге нашел­ся файл:

T1070_004_TEST.EXE-F0FBFC96.pf
Prefetch-файл, который сохранился после удаления .exe и перезагрузки
Prefetch-файл, который сох­ранил­ся пос­ле уда­ления .exe и перезаг­рузки

Про­веря­ем хеш:

Get-FileHash `
'C:\Windows\Prefetch\T1070_004_TEST.EXE-F0FBFC96.pf' `
-Algorithm SHA256

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии