Причины:
1. Отсутствие политики аудита. По умолчанию Windows не логирует успешные операции чтения/открытия файлов (только создания, удаления, изменения прав).
2. Очистка журналов. Злоумышленник или пользователь могли намеренно очистить `EventLog` (Security, Microsoft-Windows-Kernel-File).
3. Использование теневых копий. Открытие файла из `Previous Versions` не всегда фиксируется в основном аудите.
Решение: (легальные методы, РФ)
1. Как проверить кто открывал файлы на компьютере windows через Event Viewer (аудит доступа)
Шаг 1: Включите политику аудита (если ещё не включена).
cmd
auditpol /set /subcategory:"File System" /success:enable /failure:enableШаг 2: Настройте SACL на целевой папке/файле.
- ПКМ по папке → Свойства → Безопасность → Дополнительно → Аудит → Добавить.
- Выберите субъект "Все".
- В "Тип" → Все успехи.
- В "Основные разрешения" → Чтение и выполнение (можно уточнить до "Чтение данных/списка").
- Примените на папку, подпапки и файлы.
Шаг 3: Анализ журнала событий для отслеживания доступа к файлам.
- Откройте `eventvwr.msc`.
- Журналы Windows → Безопасность → Фильтр по ID события 4663 (An attempt was made to access an object).
- В фильтре укажите `C:\путь\к\вашему_файлу`.
Команда PowerShell для поиска конкретного файла:
powershell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4663} | Where-Object {$_.Properties[4].Value -like "target_file.pdf"} | Select-Object TimeCreated, @{L='User';E={$_.Properties[1].Value}}, @{L='Process';E={$_.Properties[7].Value}}2. Как узнать кто смотрел файлы на компьютере без сторонних программ (альтернатива) — Prefetch
- Файлы `.pf` в `C:\Windows\Prefetch` содержат информацию о загрузке исполняемых файлов, а также список файлов, которые они открывали (для сборщиков мусора и планировщика задач).
- Limitation: Работает только для .exe/.dll, которые запускались, и если Prefetch включен (по умолчанию). Не покажет открытие `.txt` или `.pdf` блокнотом/браузером отдельно — только факт загрузки программы.
Анализ Prefetch:
cmd
wevtutil qe "Microsoft-Windows-TaskScheduler/Operational" /f:text | findstr "PID"Либо используйте встроенную утилиту `WMIC`:
cmd
wmic process get name,creationdate,parentprocessid,processid,executablepathНеэффективно для разовых открытий.
3. Журнал Microsoft-Windows-Kernel-File (детальный трейс)
Если включена политика аудита (см. п.1) и File System audit активен — срабатывает событие ID 4656 (A handle to an object was requested). Дает информацию о программе, открывшей файл, и пользователе.
Прямой запрос к журналу:
powershell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4656} -MaxEvents 10 | flВ выводе: `Security ID` — субъект, `Object Name` — файл, `Process Name` — приложение.
4. Как посмотреть кто открывал конкретный файл на Windows Server (ForensicAnvil.ru рекомендует)
Для серверов используйте Sysmon от Sysinternals (легально, бесплатно) с конфигурацией:
xml
C:\Secret\
C:\Secret\События ID 11 (FileCreate) и ID 15 (FileCreateStreamHash) дадут полную картину.
Итог: Максимум пользы — включить аудит файловой системы (политика + SACL) и парсить событие 4663. Prefetch — для понимания, какая программа запускалась и что подтягивала. Для быстрого одноразового ответа на вопрос "как узнать кто смотрел файлы на компьютере" — используйте фильтр 4663 + имя файла.