@carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

#SymbolicLinks #symlink #NTFS

#timeshift #symlink

My linuxmint system system drive was filling up. I had a large "other" drive that had little on it. I worked with claude.ai to move timeshift and symlink it to the larger drive. the claude session is recorded here:

https://claude.ai/share/18c4995a-02db-414c-b8de-d86822ec7b3d

Claude

Shared via Claude, an AI assistant from Anthropic

Claude

Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

Gonna have to dig to see what else I can find.

#pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

How to Clean Up Your Broken Symlinks: The Good Way and the Better Way

#linux #symlink

https://www.howtogeek.com/how-to-clean-up-your-broken-symlinks/

How to Clean Up Your Broken Symlinks: The Good Way and the Better Way

Find the best way.

How-To Geek

#blue_team #WindowsDefender #symlink

- Право `Create symbolic links (SeCreateSymbolicLinkPrivilege)` должно быть только у администраторов. На рабочих станциях выключите `Developer Mode`, чтобы юзеры без прав администратора не могли создавать symlink-и.

- Включите `Tamper Protection` в `Microsoft Defender` и `WDAC/AppLocker`, разрешайте запуск только из подписанных, ожидаемых путей, а не из «любой» папки.

- Проверьте `ACL` каталога платформы `Defender` — право записи должны иметь только `SYSTEM/TrustedInstaller`.

Самый надежный способ обезвредить этот приём — лишить злоумышленника права создавать ссылки, а также детектировать любые попытки трогать каталоги платформы Defender.

#red_team #WindowsDefender #symlink

- После выполнения команда создает объект в `C:\ProgramData\Microsoft\Windows Defender\Platform\` с именем `5.18.25070.5-0`. Но этот «каталог» на самом деле является указателем, при обращении к которому система перенаправляет все операции в `C:\TMP\AV`.

- Defender при старте выбирает «самую свежую» подпапку своей платформы по строке версии. И когда он попытается скачать и распаковать обновления, записать служебные файлы или обратиться к своим конфигурациям, операции будут выполняться не в его оригинальном каталоге, а в подложном.

За счет того, что Defender «верит» системному пути, подмена сохраняется до тех пор, пока ссылка не будет обнаружена.

Подробности (https://www.zerosalarium.com/2025/09/Break-Protective-Shell-Windows-Defender-Folder-Redirect-Technique-Symlink.html).

Break The Protective Shell Of Windows Defender With The Folder Redirect Technique

Exploiting vulnerability in the update mechanism of Windows Defender by using a symbolic link folder. Destroying or injecting code into Defender

#red_team #WindowsDefender #symlink

- Создаем директорию, которую полностью контролируем, например: `C:\TMP\AV`. В нее в дальнейшем будет перенаправлен антивирус. Здесь можно размещать любые файлы — фейковые обновления, бинарники, заглушки, DLL-библиотеки и не только.

- Создаем `symlink` с защищенного пути на контролируемую директорию. Для Defender она будет выглядеть как «правильное» расположение.

То есть адрес легитимной рабочей папки оформляется по принципу: ProgramData\Microsoft\Windows Defender\Platform\[Version-Number]. Нужно создать контролируемую директорию с папкой, название которой соответствует последней версии Defender (это важно). Вот пример консольной команды — `mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"`.

Обманываем Windows Defender при помощи symlink

#red_team #WindowsDefender #symlink

Windows разрешает следование по символическим ссылкам, а сам Defender автоматически использует содержимое папки, независимо от того, реальная это папка или ссылка, если название соответствует последней версии программы.

Для работы нам нужен профиль с правами, позволяющими создавать symlink.

The lack of #symlink timestamp handling in #RustLang std is a bit sad. 😢