Наши специалисты технической поддержки фиксируют самые разные запросы пользователей. Один из таких запросов оказался весьма интересным для анализа. Ситуация заключалась в обнаруженной нами вредоносной активности в системе пользователя, которая проявилась в технике DNS hijack. Она используется для перенаправления DNS-запросов пользователя на специальные DNS-серверы. Особенность ситуации заключалась в том, что вредоносное ПО использовало для операции hijack специальный метод, который скрывал от глаз пользователя вредоносную активность.



Таким образом, пользователь не мог видеть настройки DNS-серверов в GUI-интерфейсе сетевых настроек. Кроме этого, там также будет указано, что система использует DHCP-протокол для получения настроек. Нежелательное приложение, которые выполняет подобные операции в системе, называется DNS Unlocker.

Приложение DNS Unlocker устанавливает сетевые настройки системы жертвы таким образом, что они будут указывать на фиктивные адреса DNS-серверов. При посещении веб-браузером жертвы ресурса google-analytics.com, фальшивый DNS-сервер будет указывать на вредоносный адрес с внедренным туда содержимым JavaScript. Это делается для того, чтобы реклама, которая вставляется в веб-страницы DNS Unlocker, опиралась на Google Analytics. Как правило, пользователь, с установленным DNS Unlocker, увидит рекламные объявления с заметкой внизу веб-страницы с надписью «Ads by DNSUnlocker» (Рис. 1) или чем-то подобным во множестве других вариантов (Рис. 2).


Рис. 1. Внедренное в веб-страницу рекламное содержимое.


Рис. 2. Фишинговое сообщение для запугивания пользователя.

Вредоносное ПО, которое использует механизмы подмены адресов DNS в настройках Windows, не является новым, кроме этого, такие экземпляры даже не достойны подробного освещения. Однако, DNS Unlocker имеет в своем составе интересную функцию, которая выделяет его среди прочих аналогичных примеров. Она используется для скрытного изменения настроек DNS таким образом, что пользователь этого не заметит. Пользователь не сможет увидеть новые настройки TCP/IPv4 в панели управления, которые отвечают за поля статических DNS-записей. Как правило, при задании адреса DNS-сервера, его адрес должен быть отображен в списке настроек «Предпочитаемых DNS-серверов» при условии установленного флага «Использовать следующие адреса DNS-серверов». Кроме этого, пользователь может обратить внимание на настройку «Альтернативный DNS-сервер». При использовании протокола DHCP для получения адресов DNS (используется в большинстве конфигураций домашних и офисных окружений), активной является настройка «Получать адрес DNS-сервера автоматически».


Рис. 3. Сетевые настройки TCP/IPv4 с типичными настройками.

Особенность используемой DNS Unlocker техники заключается в том, что заданный им статический адрес DNS не отображается в списке сетевых настроек, кроме этого, там указано, что пользователь получает DNS-адреса автоматически. Команда ipconfig /all также укажет на использование DHCP, но она отобразит и статически установленные адреса DNS. При использовании инструмента ipconfig, тем не менее, невозможно установить для каких сетевых подключений используется DHCP, а для каких статические адреса. GUI-интерфейс сетевых настроек не отображает статическую часть и уверяет пользователя в использовании DHCP. Ниже мы ответим на вопрос, почему так происходит, т. е. что является причиной того, что статическая запись не отображается в GUI-интерфейсе сетевых настроек.

Рассмотрим раздел реестра, который отвечает за настройки сетевых интерфейсов.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\

Этот раздел реестра фиксирует настройки сетевых интерфейсов, каждый из которых задается идентификатором GUID. Раздел настроек для каждого сетевого адаптера может содержать параметры DhcpNameServer и NameServer. Параметр NameServer представляет для нас интерес. Обычно, в случае задания настройки статического DNS-сервера, используются сетевые настройки панели управления (либо для этого привлекается команда netsh). При этом статические адреса серверов будут храниться в параметре реестра NameServer с символом «,» в качестве разделителя элементов значения.

192.168.1.21,192.168.1.22

Теперь рассмотрим случай, когда в качестве разделителя адресов в этом параметре используется пробел.

192.168.1.21 192.168.1.22

Это небольшое изменение позволяет скрыть от GUI-интерфейса сетевых настроек адреса используемых DNS-серверов, так как, на самом деле, один из них является основным, а второй дополнительным. Для пользователя данный факт означает получение рекламных объявлений, внедренных в посещаемые пользователем веб-сайты.

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

192.168.1.21?192.168.1.22,208.67.222.123,208.67.220.123

Видно, что в качестве разделителя Windows использует символ «,», в то время как для первых элементов по-прежнему используется пробел.

Вопрос заключается в том, почему Windows разрешает такое поведение своего системного компонента. У нас нет достоверного ответа на этот вопрос. Наша гипотеза заключается в предположении, что параметр DhcpNameServer использует список с пробелом в качестве разделителей, а NameServer копирует его поведение. Кроме этого, как утверждает сама Microsoft на веб-сайте TechNet, в случае присутствия параметра NameServer, он имеет более высокий приоритет чем DhcpNameServer.

If the value of NameServer is valid, it takes precedence over the value of DhcpNameServer.
Источник: technet.microsoft.com/en-us/library/cc962470.aspx.

Так как значению параметра DhcpNameServer разрешено иметь символ пробела в качестве разделителя, то аналогичное может быть разрешено и для NameServer. Кроме этого, на ресурсе TechNet указывается, что символ пробела разрешен для разделения элементов значения параметра NameServer. В действительности, такое свойство параметра системного реестра не является стандартным и GUI-интерфейс панели управления не знает, как обрабатывать такое значение. Панель управления использует только символ запятой в качестве разделителя значений «Предпочитаемого» и «Альтернативного» DNS-серверов. Стоит отметить, что другие приложения Windows, которые работают с данным параметром реестра, нормально работают с пробелом в качестве разделителя. То же самое относится к значению параметра на вкладке «Расширенные настройки TCP/IP».

Хуже всего, что данную особенность используют нежелательные приложения для перенаправления DNS-запросов пользователя на нужные им ресурсы. Она используется в качестве метода DNS hijack и заставляет пользователя работать с подмененными DNS-серверами. Мы называемых их скрытыми, поскольку пользователь на сможет увидеть их в настройках сетевых подключений панели управления.

Теперь, когда мы разобрались с DNS hijack, посмотрим на другие области в GUI-интерфейсе сетевых настроек TCP/IPv4 панели управления. Нас будут интересовать окно расширенных настроек TCP/IP на вкладке DNS. Верхняя часть вкладки содержит список, который определяет порядок использования DNS-серверов и позволяет указать использование более двух IP-адресов в качестве них. Каждый адрес должен использовать свою отдельную строку. Теперь в том случае, когда DNS был перехвачен и скрыт, настройки TCP/IP будут выглядеть следующим образом.


Рис. 4. Вкладка с расширенными настройками DNS протокола TCP/IP, в котором используется вариант с пробелом в качестве разделителя.

Видно, что в настройках на скриншоте выше указаны два адреса, разделенные пробелом. В том случае, если попытаться нажать на кнопку «Добавить…», для добавления двух адресов, разделенных пробелом, система отобразит сообщение об ошибке с указанием неверного IP-адреса. В случае попытки добавить дополнительные адреса DNS-серверов к уже указанным скрытым, они будут добавлены в GUI-интерфейсе вкладки свойств TCP/IP как отдельные строки.


Рис. 5. Вручную установленные адреса DNS-серверов, когда перед этим уже были включены «скрытые» записи.

К счастью, пользователь может удалить вредоносные записи DNS на вкладке DNS на странице расширенных настроек TCP/IP.

Наши специалисты сообщили о данной проблеме Microsoft Security Response Center (MSRC) 10-го мая 2016 г. MSRC признал проблему, но не классифицировал его ее как уязвимость, поскольку модификация значения системного реестра требует прав администратора. Они направили данный вопрос другим командам разработчиков для рассмотрения исправления в будущих версиях.

Заключение

Отметим, что сама Windows может нормально работать со значением параметра NameServer, в котором вместо запятой в качестве разделителя используются пробелы. В свою очередь, нежелательные приложения могут использовать этот метод для сокрытия настроек DNS в системе. Он наблюдался в использовании DNS Unlocker начиная с декабря 2015 г. и работает на всех ОС Windows, начиная с Windows XP. Интересно отметить, что для метода DNS hijack в качестве разделителя может использоваться и точка с запятой, однако, мы не наблюдали использование такого варианта в других типах вредоносного или нежелательного ПО по состоянию на 31-е мая 2016 г.

Индикаторы компрометации

Описанная выше версия DNS Unlocker обнаруживается ESET как MSIL/Adware.CloudGuard.C. Она использует следующие IP-адреса для подмены DNS:

  • 203.131.145
  • 203.131.150 — 199.203.131.152
  • 163.142.2 — 82.163.142.7
  • 163.142.66 — 82.163.142.70
  • 163.142.130 — 82.163.142.189
  • 163.143.131 — 82.163.143.190
  • 211.158.129 — 95.211.158.135
  • 211.158.145 — 95.211.158.151

Следующие IP-адреса используются как HTTP-серверы для внедрения вредоносного содержимого JavaScript, которое отображает рекламу на веб-страницах.

  • 163.143.23 — 82.163.143.250
  • 88.193.133 — 209.88.193.141

Следующие образцы вредоносного ПО используют эту технику.

Поделиться с друзьями
-->

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


  1. vilgeforce
    03.06.2016 16:14

    Красота! Жаль только таблица с хэшами картинкой… И опечатка у вас: «пользователь на сможет»


  1. Digriz
    03.06.2016 18:24

    В таких случаях рука сразу тянется выполнить cmd /k ipconfig /all, а после уже и в GUI можно залезть…


  1. Ivan_83
    03.06.2016 18:40

    Купируется банально: на роутере заворачиваем все TCP/UDP пакеты на порт 53 на локальный DNS сервер типа unbound, который занимается и рекурсией и кешированием.
    Заодно всякие фрики с 8.8.8.8 лечатся автоматом.


    1. ESP
      03.06.2016 22:40
      +1

      А что фрикового в гугло-днс?


      1. Ivan_83
        04.06.2016 01:16
        +1

        Тоже самое что ходить добровольно в электронном браслете для лиц с ограниченной судом свободой перемещения.
        Даже ещё хуже, потому что им ограничили только свободу перемещения, но не смотрят что они дома делают 24 часа в сутки.
        Через ДНС гугл легко различает пользователей, по тому зоопарку ПО которое у них есть, и знает об том куда они и их ПО ходит в инете, даже если больше ничего от гугла в компе нет.

        Вон, поставьте себе:
        http://unbound.net/download.html
        http://maradns.samiam.org/
        http://posadis.sourceforge.net/
        http://www.george-barwood.pwp.blueyonder.co.uk/DnsServer/
        и забудьте про чужие ДНС сервера, если провайдерские так сильно не нравятся.


        1. ESP
          04.06.2016 01:32

          Но ведь использования своего DNS-сервера – мало. Провайдер как знал что вы делаете 24 часа так и продолжит знать. И тут уже без DNSCrypt или VPN (с завернутым в него dns-трафиком) не обойтись


          1. Ivan_83
            04.06.2016 02:39

            1. С провайдером у меня договор, с гуглом нет.
            2. Провайдер подчиняется местным законам, гугл нет.
            3. Днскрипт бесполезен, лучше сразу впн туннель городить.

            Притом не нужно смотреть на ситуацию что «я гуглу никто а тут товарищ майор заинтересован», поскольку у товарища и так есть дохрена возможностей (пока не поднят впн, но и с ним остаётся куча оффлайновых методов), более того в ряде случаев этот товарищ ещё и на твоей стороне (случай когда госов бьют за использование иностранных сервисов в работе), а у гугла интересы всегда корыстные. Кстати, траф то открытый, наивно полагать что только гугл имеет к нему доступ, его смотрят все желающие кто может отзеркалить по пути.
            За 8.8.8.8, опенднс и др левые днс — админов и юзеров в госах и всех кто с госами работает нужно гонять, ровно как и за рабочую почту на гугле. За дропбокс, за онедрайв, за гуглдоксы…

            А все потуги гугла, мс и прочих всё зашифровать это:
            1. Защита своих граждан от чужих товарищей майоров
            2. Ослабление чужих товарищей майоров
            3. PR для своих граждан.
            4. PR для не граждан=всего остального мира, которые почему то думают что с ними будут обходится как с людьми у которых есть какие то права.

            Тема очень печальная, в том плане что люди сами по тупости всё сливают, и личное и рабочее, и своё и чужое.
            Некоторые ещё и гордятся/хвастаются как это удобно.

            NSA никогда за всю историю так легко не жилось: сейчас каждый сам на себя и на своих друзей/соседей всё сливает в сеть, в социалки. Самые попсовые социалки у них в юрисдикции, остальное можно парсить пауками и тоже не мало всего видеть. Они там бедалаги не успевают это всё разгребать и строить ЦОДы.
            Ситуация на самом деле очень хреновая для всех, особенно не граждан сша, потому что в каждом доме, а часто и в карманах есть устройства которые сливают туда инфу, пусть и не всегда интересную, часто кажется что это мусор, но в сумме из этого легко узнать кто где работает, чем занимается, над чем работает, с кем и тп.

            ДНС от гугла/опенднс/цыски тут не единственный источник, но весьма лакомый.
            Есть ещё куча всякого мусора который хостится на гугле а ленивые вебмастера делают ссылку на гугл, вместо выкладывания у себя очередного шрифта/скрипта.
            Ещё всякие счётчики и баннеры которые есть везде…
            Халявные и полу халявные хостинги с азуре и у гугла… всё это заложники, которые не дают забанить AS гугла/мс/пр для уменьшения потока информации которую можно и не отправлять туда.

            На этом фоне местные товарищи со своим СОРМом как дети в песочнице, у их коллег/конкурентов СОРМ по всему миру работает, и часто не только метаданные (кто, когда, куда) собирает но сам контент, и привязка не симке/точке подключения а к каждому конкретному устройству+человеку.


            1. mtp
              04.06.2016 20:00

              Извините, но госконторами свет не ограничивается.

              И корыстный интерес гугла ограничивается показом мне максимально таргетированной рекламки. Это прозрачно и понятно, в отличие от.


              1. Ivan_83
                05.06.2016 01:24

                Но есть нюансы.
                Так или иначе лично вы может и не связаны, но вполне можете взаимодействовать с госами через одну-две прокладки/посредника.
                Это везде так.

                Очень наивно полагать что гугл торгует только рекламой — даже я видел платную версию планеты земля на их сайте :)
                Ну и там бабло за андройд, в том или ином виде от производителей…
                В случае ДНС, как я написал выше, согласие гугла не требуется совсем и они об этом никогда не узнают.
                Любой нормальный человек из NSA/FBI/… понимает что у гугла есть очень много полезного, и наладить с ними взаимодействие это весьма приоритетное направление, в любой форме и любыми средствами. Гуглу тоже наверное интереснее зарабатывать деньги а не терять, поэтому они если сами не торгуют доступом то как минимум стараются не мешать работать.


        1. Barafu
          04.06.2016 10:42

          Забавно, я по этим же аргументам всем вместо провайдерского ДНС 8.8.8.8 прописываю. Каждой домохозяйке по своему DNS серверу не настроишь. Просто гугл далеко, а козлы близко.


          1. Ivan_83
            04.06.2016 11:29

            Это полностью лишено смысла.
            Провайдеры пишут и хранят netflow, как для органов так и для себя. Годы. (вроде 3, может уже 5 лет)
            В netflow входит: IP src, IP dst, Port src, Port dst, тип протокола, время. (порт может не входить, тк некоторые/многие протоколы кроме TCP/UDP не используют порты).
            При этом провайдеры в массе своей ничего не делают в плане логирования DNS — оно ни им (бывают исключения когда пытаются давить вирусный траф) ни органам не надо.
            А теперь вопрос: что провайдер/майор НЕ узнает в результате использования гуглового ДНС?

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

            PS: в турции или где там блочили по ДНС — они просто не очень хотели блочить, поэтому 8.8.8.8 там работал для обхода. На практике завернуть всё UDP на 53 порт на свой сервер не проблема ни разу.


            1. Barafu
              04.06.2016 11:53

              Всё верно. Я в комментарии причину не указал.
              У провайдера список сайтов, заблокированных по IP меньше, чем список сайтов, заблокированных по DNS. Например, гитхаб то и дело не резолвится.
              А уж если нужна анонимность, то тоннель до Гваделупы — первым пунктом.


              1. ESP
                04.06.2016 13:20

                Всегда интересовал один момент с этми Гваделупами и прочими банановыми республиками, через которые пытаются скрываться от системы. Неужели на такие маленькие страны нельзя надавить дабы они выдали все с потрохами?


                1. Barafu
                  04.06.2016 13:32
                  +1

                  Конечно можно. Но не будут же через дипломатов выяснять, какую партию поддерживает Василий Алибабаевич и какое анимэ он качал.
                  А если задумывают эпичную гадость, то используют множество вложенных туннелей через разные страны, в количестве, пропорциональном эпичности гадости.


                  1. ESP
                    05.06.2016 04:56

                    Но ведь обращаясь к той же Германии, например, разве не нужны послы? Почему в пример приводятся именно маленькие страны на краю земли?


                    1. Barafu
                      05.06.2016 13:01

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


            1. ESP
              04.06.2016 13:18

              А что можете сказать про такую вещь как OpenNIC? Понятное дело что нет ничего лучше кроме своего. Но как выше отметили, не поднимать же каждой домохозяйке свой DNS.


              1. Ivan_83
                04.06.2016 14:45

                Ничего особенного, это больше про альтернативную регистрацию имён чем про резолвинг.
                Поднимать своё совсем не сложно, достаточно один раз разобраться и настроить unbound на рекурсию и кеширование, без DNSSec, и потом просто копировать всем конфиги. Сама инсталяция там не сложнее 7зипа.


  1. Dywar
    03.06.2016 20:04

    Конечно банально все, когда показали что и как :)
    Сколько еще таких трюков, про которые никто не пишет.


  1. Barafu
    04.06.2016 10:50

    Почему, ну почему в винде каждую настройку можно прописать в 100500 разных мест, из которых половина недокументированных, часть трудно посмотреть, все связаны непонятной иерархией и те, что доступны пользователю — самые низкие в приоритете? Не настройки, а паззл для кулхацкеров.


  1. Handsomer
    06.06.2016 07:35

    Буквально с месяц назад, боролся с этой проблемой на родительском лэптопе. Вначале не мог понять, почему на всех сайтах начала вылазить реклама. Заметив надпись «ads by DNS Unlocker», понял что нужно браться за лечение.

    Кстати, тот же антивирус от eset его никак не находил. Окно с расширенными настройками DNS (рис.4) никакие адреса не отображало. Пришлось в ручную капать regedit.
    P.S. как бонаружил позже, данную проблему хорошо обнаруживает spyhunter