Атрибуты Hidden и System в Windows
Описание
В Windows атрибут Hidden (H) помечает файл или папку как скрытые, а System (S) – как системные. Файл с H + S остаётся невидимым в Проводнике даже при включённом показе скрытых файлов, если включено "Скрывать защищенные системные файлы (рекомендуется)".
Примечание
System можно установить у обычного пользовательского файла. Этот атрибут не связан с учётной записью NT AUTHORITY\SYSTEM и не даёт дополнительных прав доступа.
Две настройки Проводника
Чтобы увидеть H + S, откройте Win + R → control.exe folders → вкладка "Вид":
- Выберите "Показывать скрытые файлы, папки и диски".
- Снимите флажок "Скрывать защищенные системные файлы (рекомендуется)" и подтвердите предупреждение Windows.
- Нажмите "Применить"; если список файлов не обновился, нажмите
F5в Проводнике.
Пункт "Скрытые элементы" в меню Проводника ("Просмотреть" → "Показать") управляет только первой настройкой.

Видимость файлов при разных настройках:
| Показ скрытых файлов | Флажок "Скрывать защищенные системные файлы" | Файл без H и S | Файл с H | Файл с S | Файл с H + S |
|---|---|---|---|---|---|
| Выключен | Установлен | Видим | Скрыт | Видим | Скрыт |
| Включён | Установлен | Видим | Видим | Видим | Скрыт |
| Включён | Снят | Видим | Видим | Видим | Видим |
Практический пример
1. Создание четырёх тестовых файлов
Выполните команды в CMD. Если %TEMP%\system-attribute-demo уже существует, удалите её (см. Удаление тестовой папки) или замените имя папки во всех командах ниже.
mkdir "%TEMP%\system-attribute-demo"
cd /d "%TEMP%\system-attribute-demo"
echo Ordinary file>normal.txt
echo Hidden file>hidden.txt
echo System file>system-only.txt
echo Hidden and system file>hidden-system.txt
attrib +h "hidden.txt"
attrib +s "system-only.txt"
attrib +h +s "hidden-system.txt"
attrib
+ устанавливает атрибут, - снимает. В выводе attrib также может быть Archive (A) – на видимость он не влияет.

2. Отображение с настройками по умолчанию
Откройте папку из той же CMD:
explorer .
Выключите показ скрытых файлов и включите скрытие защищённых системных файлов (см. Две настройки Проводника). В списке останутся normal.txt и system-only.txt.

3. Включение показа скрытых файлов
Включите "Скрытые элементы" ("Просмотреть" → "Показать" → "Скрытые элементы"), оставив скрытие защищённых системных файлов включённым. Появится hidden.txt, но hidden-system.txt останется скрытым.

4. Отключение скрытия защищённых системных файлов
В параметрах Проводника → "Вид" снимите флажок "Скрывать защищенные системные файлы (рекомендуется)", подтвердите предупреждение Windows и нажмите "Применить". Показ скрытых оставьте включённым. Теперь видны все четыре файла.
Предупреждение говорит о файлах, «помеченных как системные или скрытые», но флажок влияет только на объекты, у которых одновременно установлены H и S: видимостью hidden.txt управляет показ скрытых файлов, а system-only.txt виден при любых настройках.

Просмотр без изменения настроек Проводника
Скрытие в Проводнике не меняет права доступа: при наличии прав файл можно прочитать по известному пути.
CMD
Находясь в тестовой папке:
rem Показать все файлы и папки, включая скрытые и системные
dir /a
rem Показать объекты с атрибутом System
dir /a:s
rem Показать объекты, у которых одновременно Hidden и System
dir /a:hs
rem Посмотреть атрибуты конкретного файла
attrib "hidden-system.txt"
rem Прочитать файл по известному пути
type "hidden-system.txt"


PowerShell
$demoPath = Join-Path $env:TEMP 'system-attribute-demo'
Get-ChildItem -LiteralPath $demoPath -Force |
Select-Object Name, Attributes
Для проверки одного объекта:
Get-Item -LiteralPath (Join-Path $demoPath 'hidden-system.txt') -Force |
Select-Object FullName, Attributes
-Force включает скрытые и системные объекты в результат. У hidden-system.txt поле Attributes содержит Hidden и System.

Аналог dir /a:hs – параметр -Attributes, где + означает «и»:
Get-ChildItem -LiteralPath $demoPath -Attributes Hidden+System
Снятие атрибутов
В CMD в тестовой папке выполните:
attrib -s -h "hidden-system.txt"
attrib "hidden-system.txt"
H и S у такого файла снимаются одной командой. По отдельности attrib откажется: attrib -h выведет «Переустановка атрибутов системного файла … не произведена», а attrib -s – «Переустановка атрибутов скрытого файла … не произведена».

После снятия H и S верните настройки Проводника по умолчанию: выключите показ скрытых файлов и включите скрытие защищённых системных. hidden-system.txt останется видимым. Его содержимое не изменится.

Для папки атрибуты задаются аналогично:
mkdir "demo-folder"
attrib +s +h "demo-folder"
attrib "demo-folder"
attrib -s -h "demo-folder"
attrib "demo-folder"
Здесь меняются атрибуты самой папки: после +s +h в выводе attrib видно SH, после -s -h поле атрибутов пустое. Для рекурсивной обработки содержимого у attrib есть параметры /S и /D.

Удаление тестовой папки
CMD не может удалить папку, в которой находится, поэтому сначала выйдите из неё:
cd /d "%TEMP%"
rd /s /q "%TEMP%\system-attribute-demo"
rd /s удаляет содержимое вместе со скрытыми и системными файлами.
Предупреждение
delбез/aмолча пропускает файлы с атрибутами H или S. В тестовой папкеdel *.txtудалил бы толькоnormal.txtиhidden-system.txt(после снятия атрибутов), аhidden.txtиsystem-only.txtостались бы. Чтобы удалить и их, используйтеdel /a *.txt.
Использование в атаках
Сочетание H + S – простой способ спрятать файл от пользователя: при настройках по умолчанию и даже при включённых «Скрытых элементах» Проводник его не показывает. В MITRE ATT&CK это техника T1564.001 (Hide Artifacts: Hidden Files and Directories).
Вместо заключения
Войдите, чтобы оценить заметку или добавить её в закладки.
По всем вопросам (технические, личные или по содержанию заметок) обращайтесь в бота поддержки или на почту iam@kgmnotes.ru.