Две недели назад мы наблюдали атаку шифровальщика на сервер, принадлежащий одной французской компании. Это был один из вариантов семейства шифровальщиков Crysis. Ежедневно мы видим тысячи попыток заражения со стороны шифровальщиков, но этот случай привлек наше внимание, т.к. файл, каким-то образом, появившийся на компьютере, предположительно никем не использовался и не должен был использоваться, при этом на компьютере не был запущен ни один почтовый агент или Интернет-браузер.

Как он попал на компьютер?


Почему средства безопасности на сервере позволили этому файлу попасть туда? Мы решили найти ответ именно на этот вопрос, а потому начали свое исследование. Оказывается, на этом сервере работает протокол удаленного рабочего стола Remote Desktop Protocol (RDP), и кибер-преступники использовали атаку типа brute force attack, благодаря которой смогли подобрать регистрационные данные и получить удаленный доступ к серверу.

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

Кибер-преступники проникли на сервер, используя атаку типа brute force, перебирая пароли с помощью хорошего словаря или проверяя наиболее часто используемые комбинации.

В данном случае атака на сервер началась 16 мая, когда они осуществили 700 попыток подключения. Они осуществлялись автоматически, примерно в течение двух часов. Большинство подобных атак осуществлялось в период с 1 до 3 часов или с 3 до 5 часов ночи. Каждый день. Количество попыток подключения менялось: например, 18 мая их было 1976, а 1 июля — 1342.

Спустя почти четыре месяца и выполнив свыше 100 000 попыток подключения, хакеры все же сумели проникнуть на сервер и запустить шифровальщика Crysis.

Это всемирный Crysis


На этой неделе наши коллеги из Trend Micro опубликовали статью, в которой предупредили о подобных атаках, произошедших в Австралии и Новой Зеландии, когда также использовали варианты Crysis. К сожалению, мы можем сказать, что они были не только в этих странах – данные атаки осуществляются во всем мире (по крайней мере, с мая).

Предположим, что Вам необходимо иметь протокол RDP, запущенный и подключенный к Интернету, а потому, помимо мониторинга попыток подключения, который позволит Вам узнать о том, что Вы подвергаетесь атаке, Вам следует также использовать сложные пароли. Самый лучший вариант – это внедрить двухфакторную авторизацию, например, с паролем через SMS, в результате чего подбор паролей станет бесполезным занятием.

Автор статьи: Луис Корронс
Поделиться с друзьями
-->

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


  1. LoadRunner
    23.09.2016 12:53
    +1

    Самый лучший вариант – это внедрить двухфакторную авторизацию, например, с паролем через SMS, в результате чего подбор паролей станет бесполезным занятием.
    А подключение по RDP через VPN только с разрешённых IP проблему не решает?


    1. Alex_2016
      23.09.2016 12:54
      +1

      А подключение по RDP через VPN только с разрешённых IP проблему не решает?


      Скорее всего должно решать.


      1. acyp
        23.09.2016 13:13
        +1

        Не всегда применимо. У меня, например, шеф любит путешествовать, но при этом систематически работает в той же 1сАвтоматизации 1.1, у которой веб-морды нормальной нету.
        К нему не прикрутишь ИП-блокировку. ВПН — это двойное шифрование, что не руль если канал худой. Ибо RDP 7 и выше на худых каналах относительно нормально живут, а вот ВПН — не очень.
        Блокировку по ошибкам тоже опасаюсь, ибо кричит шибко громко :), а ошибаться бывает.
        Скрипт объективно спасает.


        1. Habezza
          23.09.2016 16:20

          в Вашем случае самым адекватным решением будет port knocking (можно сделать один батник, который будет стучаться и запускать рдп-клиент)


        1. The_Kf
          23.09.2016 16:48
          +1

          Прикрутите аутентификацию по сертификатам. Сам сертификат выдайте на смарт-карте.


          1. Vinchi
            25.09.2016 08:16

            вот самый правильный вариант. именно так все правили Шипова ныне пользователи у нас работают


          1. Vinchi
            25.09.2016 08:16

            вот самый правильный вариант. именно так все правили Шипова ныне пользователи у нас работают


        1. SAMbI4
          23.09.2016 20:53

          внедрите RemoteApp и забудьте про VPN/RDP/etc.
          ну и после 5 неправильных вводов доменного пароля — поставьте блокировку «пока админ не разбанит», очень помогает :)


  1. acyp
    23.09.2016 12:53
    +1

    … или простой скрипт на powershell, который сообщает о всех фактах авторизации и попытках авторизации. эт в отсутствии централизованной системы контроля доступа.


    1. Alex_2016
      23.09.2016 12:57

      … или простой скрипт на powershell, который сообщает о всех фактах авторизации и попытках авторизации. эт в отсутствии централизованной системы контроля доступа.


      Спасибо. И это, как вариант, тоже решит проблему.


  1. ARad
    23.09.2016 13:01

    Если у вас на сервере есть что то к чему можно подключиться используя пароль, значит вам НАДО иметь стойкий пароль и еще желательно другие способы защиты. А их много начиная от ограничения неверных попыток, ограничения IP и т. д.


  1. AcidVenom
    23.09.2016 13:02

    … или поднять домен и настроить блокировку учетки на произвольное время при 5+ неверных вводах пароля.


  1. dmitry_dvm
    23.09.2016 13:20
    +3

    Тот же RDP можно настроить на таймауты между попытками и блокировать на час после нескольких неудачных. И никакой брутфорс будет не страшен. Как всегда паника вместо изучения вопроса.


    1. fpir
      23.09.2016 14:41

      10 минут, думаю, достаточно. При 7-значном пароле с буквами и цифрами и сроком жизни.


    1. ideatum
      23.09.2016 16:18

      Мне интересно, как самому подключиться по RDP, если брутфорсят непрерывно? При таком подходе, учетка постоянно в локауте.


      1. pwrlnd
        23.09.2016 16:26

        Как минимум будет известно, что происходит брутфорс — можно принимать дальнейшие меры.


      1. fpir
        26.09.2016 15:22

        Так если брутфорсят, то на сервере RDP(в смысле, только на декстопных win-ах ограничение в одну rdp-сессию) учётки доступны, недоступны они станут, когда под ними залогинятся. Ну а после этого уже и брутфорс прекратится.


    1. flyme
      23.09.2016 18:22

      А не подскажете, в деталях, как средствами самой винды задать тайм-аут при N-кратном неверном вводе пароля?


      1. dmitry_dvm
        23.09.2016 20:00

        В деталях не помню. Как всегда — в gpedit.msc — Administrative Templates.


      1. senator14
        23.09.2016 20:53
        +1

        В политике компьютера (локального или через Group Policy Management Console, если в домене):
        Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Account Lockout Policies.

        Всего три простые политики: кол-во неудачных входов, после которых аккаунт блокируется, продолжительность блокировки плюс время сброса счетчика неудачных входов в систему.


        1. flyme
          24.09.2016 10:18

          Спасибо, работает.


  1. uniqm
    23.09.2016 13:29

    Имел опыт борьбы с подобными ботами (одна атака была успешной, но вместо крипто запустили скрипт майнинга биткойнов на половину ядер сервера ^^), для начала лечилось банальной сменой порта RDP из вне (3389 на любой другой) и переименованием учеток типа Администратор, admin, user, user1 и тд. на более несловарные.


  1. Daar
    23.09.2016 15:20
    +2

    Ну пароли ладно брутят, а как с логинами? или там все под Administrator или Guest работают? И права смотрю у RDP пользователей широкие. Да и можно ограничить по количеству неверных попыток, а потом блочить учетку. Если юзер звонит админу что учетка заблочена а он все выходные бухал, то тут уже есть над чем задуматься админу.
    Думаю RDP не стоит ругать, вина не в протоколе. Это как поставить бронированную дверь в квартиру, а ключ класть под коврик.


    1. uniqm
      23.09.2016 15:57

      Блочить учетку не особо вариант. Когда шла непрерывная атака, реальные юзеры не могли войти, не успевали. Или админ был не всегда доступен для помощи (разлочить учетку), например при работе вечером.


  1. DayLike
    23.09.2016 16:18

    порты смените просто) Я фронт энд но пришлось заниматься сервером, в итоге обнаружил что ломились на ssh, ftp на wordpress сайты, перебирали пароли, один раз проворонил сделал плагин для wordpress который пишет 3 лога подряд при ошибочной авторизации в wordpress первый в стандартный sitename.access.log второй в лог fail_ip.sitename.log в папочку logs на ftp можно если что смотреть ситуацию) а потом в syslog но он похоже дублируется ы messages лог и там по мне нужному алгоритму пишется лог (дата, адресс сайта, ip кто авторизовывался, логин с которым авторизовывались и useragent) этого достаточно в принципе, это помогло мне выявить что с 3х ночи до 7 утра сделали 10000 подборов с одного ip на одном из сайтов который на нашем сервере. когда я показал fail2ban общий лог и настроил параметры защиты и подкорректировал поисковик по messages log сразу ситуация изменилась, нагрузка на сервер упала, но второй лог мне помог выявить сверх низкие переборы) примерно с интервалом в 30-45 минут по 2-3 раза с одного ip в итоге настроил fail2ban на 9 одинаковых ip в логе за 5 часов и нормально) Плюс ещё начал собирать уникальные ip так проверить сколько у нас гостей чтоб их потом разом всех в банлист) в итоге ну уже 178 ip адресов есть в базе, сделал после добавления в базу запрос на geoip сервис какой то, чтоб знать из какой страны была авторизация, для того чтоб сразу легитимных отсеять. Мало ли) причём скрипт принимает ip не только с нашего сервера но и второго сервера где так же стоит мой плагин и при брутфосе шлёт мне этот ip на наш сервер. а теперь надо wordpress защищать, пытаюсь это сделать через ngnix потому что htaccess перезаписывается всякими плагинами защиты и кэша и они иногда перетирают друг друга) там есть модуль для ngnix который блокирует такие запросы но я вроде уже конвертирую htaccess параметры в ngnix для всех сайтов разом. Ну что поделать учусь)


    1. Daar
      23.09.2016 16:30

      Это понятно, но ты говоришь по линуха, а он про remote desktop, у мелкомягких там толком нет никакой защиты, кроме как блочить по количеству попыток, ну или привязка к IP.
      А так да, я с наружи никогда RDP не делаю на 3389, переставляю на другие порты всегда.


      1. DayLike
        23.09.2016 16:50

        Я тоже поставил на сервер rdp но там какой то интерфейс вроде gnome и я похоже его сломал) что то ткнул на панели сверху в итоге у меня там при логине пишется «Oops… » ну упс а что дальше делать))) не инструкций ни советов, я вобще поставил его для того чтоб зайти и файл в zip заархивировать там 6 гигабайт примерно было isp manager 5 мне отказался этим заниматься, супер технологии такие) Хочешь не хочешь а из фронт энд я уже похоже в системного администратора превращаюсь а потом что бэк энд? Оптимизация баз данных облачное распределение, разгон хэширования паролей с помощью видео карт на серверах, вот веселуха)

        Кстати а почему от брут форса не использовать связку ( ( login || email ) && (pass_1 && pass_2) ) это же будет бессмысленно перебирать пароли когда 2 поля для разных паролей, причём это более секьюрно: ( pass_1 + salt_1 && pass_2 + salt_2 ) = pass hash; я думаю замучаются перебирать если конечно не такая связка (login: admin, pass_1: qwerty, pass_2:123456) а так перебрать варианты будет наверно по труднее.


  1. avelor
    23.09.2016 18:21

    имя пользователя текущее можно вытащить.
    а так эффективный метод защиты рдп — помимо двухфакторной аутентификации, RDS Gateway на сертификатах, VPN и блокирования учётки — fail2ban. есть платные решения, есть бесплатный ts_block и evlwatcher. так же скрипт, блокирующий по айпи на основании аудита отказа пишется на коленке за полчаса-счас.


  1. Impet
    23.09.2016 18:21

    Разве грамотно настроенные Application Control Policies не предотвратят запуск стороннего программного обеспечения? (в случае, если взломанная учетная запись не обладает правами Администратора)


  1. msosov
    23.09.2016 18:21

    На PS решается подобная проблема в несколько строк.
    Создаем правило в брандмауере для блокировки по порту RDP
    И прикручиваем скрипт на выполнение при возникновении события 4625

    $min = 30 #Проверка за последние 30 минут
    $c= 10 #Количество неудачных попыток
    $nameRules=«BlockIp» #Имя блокирующего правила брандмауера Windows

    $time = (get-date) — (new-timespan -min $min)
    $l = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $time | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
    $Ip = $l | group-object -property IpAddress | where {$_.Count -gt $c} | Select -property Name, count
    $ip % {[string]$z=$z+$_.name+","}
    $firewall = New-Object -ComObject hnetcfg.fwpolicy2
    $y = $firewall.Rules.Item($nameRules).RemoteAddresses
    $z=$z+$y
    $firewall.Rules.Item($nameRules).RemoteAddresses = $z


  1. varnav
    23.09.2016 18:22

    Доступный из интернета RDP считается дурным тоном последние 20 лет. Именно поэтому.


  1. dklm
    23.09.2016 22:40

    Для защиты от всякой гадости нужно/можно использовать AppLocker.