«Crysis» во всем мире через RDP-протокол

Original author: Panda Security
  • Translation


Две недели назад мы наблюдали атаку шифровальщика на сервер, принадлежащий одной французской компании. Это был один из вариантов семейства шифровальщиков 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, в результате чего подбор паролей станет бесполезным занятием.

Автор статьи: Луис Корронс
Panda Security в России и СНГ
77.67
Облачные решения безопасности, антивирусы
Share post

Comments 33

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


      Скорее всего должно решать.
        +1
        Не всегда применимо. У меня, например, шеф любит путешествовать, но при этом систематически работает в той же 1сАвтоматизации 1.1, у которой веб-морды нормальной нету.
        К нему не прикрутишь ИП-блокировку. ВПН — это двойное шифрование, что не руль если канал худой. Ибо RDP 7 и выше на худых каналах относительно нормально живут, а вот ВПН — не очень.
        Блокировку по ошибкам тоже опасаюсь, ибо кричит шибко громко :), а ошибаться бывает.
        Скрипт объективно спасает.
          0
          в Вашем случае самым адекватным решением будет port knocking (можно сделать один батник, который будет стучаться и запускать рдп-клиент)
            +1
            Прикрутите аутентификацию по сертификатам. Сам сертификат выдайте на смарт-карте.
              0
              вот самый правильный вариант. именно так все правили Шипова ныне пользователи у нас работают
                0
                вот самый правильный вариант. именно так все правили Шипова ныне пользователи у нас работают
                0
                внедрите RemoteApp и забудьте про VPN/RDP/etc.
                ну и после 5 неправильных вводов доменного пароля — поставьте блокировку «пока админ не разбанит», очень помогает :)
                  0
                  К.О. предупреждает, что RemoteApp работает ровно по тому же самому RDP и с ним возникают ровно те же самые проблемы с безопасностью ;)

                  The_Kf выше правильное предлагает: вся аутентификация по смарт карте или usb-токену решает проблему. Самое главное чтобы пароля и логина вообще не было. Сертификат и ключи тоже могут спереть поэтому совсем хорошее решение это аппаратный аутентификатор.
            +1
            … или простой скрипт на powershell, который сообщает о всех фактах авторизации и попытках авторизации. эт в отсутствии централизованной системы контроля доступа.
              0
              … или простой скрипт на powershell, который сообщает о всех фактах авторизации и попытках авторизации. эт в отсутствии централизованной системы контроля доступа.


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

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

                0
                … или поднять домен и настроить блокировку учетки на произвольное время при 5+ неверных вводах пароля.
                  +3
                  Тот же RDP можно настроить на таймауты между попытками и блокировать на час после нескольких неудачных. И никакой брутфорс будет не страшен. Как всегда паника вместо изучения вопроса.
                    0
                    10 минут, думаю, достаточно. При 7-значном пароле с буквами и цифрами и сроком жизни.
                      0
                      Мне интересно, как самому подключиться по RDP, если брутфорсят непрерывно? При таком подходе, учетка постоянно в локауте.
                        0
                        Как минимум будет известно, что происходит брутфорс — можно принимать дальнейшие меры.
                          0
                          Так если брутфорсят, то на сервере RDP(в смысле, только на декстопных win-ах ограничение в одну rdp-сессию) учётки доступны, недоступны они станут, когда под ними залогинятся. Ну а после этого уже и брутфорс прекратится.
                          0
                          А не подскажете, в деталях, как средствами самой винды задать тайм-аут при N-кратном неверном вводе пароля?
                            0
                            В деталях не помню. Как всегда — в gpedit.msc — Administrative Templates.
                              +1
                              В политике компьютера (локального или через Group Policy Management Console, если в домене):
                              Computer Configuration -> Windows Settings -> Security Settings -> Account Policies -> Account Lockout Policies.

                              Всего три простые политики: кол-во неудачных входов, после которых аккаунт блокируется, продолжительность блокировки плюс время сброса счетчика неудачных входов в систему.
                                0
                                Спасибо, работает.
                            0
                            Имел опыт борьбы с подобными ботами (одна атака была успешной, но вместо крипто запустили скрипт майнинга биткойнов на половину ядер сервера ^^), для начала лечилось банальной сменой порта RDP из вне (3389 на любой другой) и переименованием учеток типа Администратор, admin, user, user1 и тд. на более несловарные.
                              +2
                              Ну пароли ладно брутят, а как с логинами? или там все под Administrator или Guest работают? И права смотрю у RDP пользователей широкие. Да и можно ограничить по количеству неверных попыток, а потом блочить учетку. Если юзер звонит админу что учетка заблочена а он все выходные бухал, то тут уже есть над чем задуматься админу.
                              Думаю RDP не стоит ругать, вина не в протоколе. Это как поставить бронированную дверь в квартиру, а ключ класть под коврик.
                                0
                                Блочить учетку не особо вариант. Когда шла непрерывная атака, реальные юзеры не могли войти, не успевали. Или админ был не всегда доступен для помощи (разлочить учетку), например при работе вечером.
                                0
                                порты смените просто) Я фронт энд но пришлось заниматься сервером, в итоге обнаружил что ломились на 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 для всех сайтов разом. Ну что поделать учусь)
                                  0
                                  Это понятно, но ты говоришь по линуха, а он про remote desktop, у мелкомягких там толком нет никакой защиты, кроме как блочить по количеству попыток, ну или привязка к IP.
                                  А так да, я с наружи никогда RDP не делаю на 3389, переставляю на другие порты всегда.
                                    0
                                    Я тоже поставил на сервер 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) а так перебрать варианты будет наверно по труднее.
                                  0
                                  имя пользователя текущее можно вытащить.
                                  а так эффективный метод защиты рдп — помимо двухфакторной аутентификации, RDS Gateway на сертификатах, VPN и блокирования учётки — fail2ban. есть платные решения, есть бесплатный ts_block и evlwatcher. так же скрипт, блокирующий по айпи на основании аудита отказа пишется на коленке за полчаса-счас.
                                    0
                                    Разве грамотно настроенные Application Control Policies не предотвратят запуск стороннего программного обеспечения? (в случае, если взломанная учетная запись не обладает правами Администратора)
                                      0
                                      На 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

                                        0
                                        Доступный из интернета RDP считается дурным тоном последние 20 лет. Именно поэтому.
                                          0
                                          Для защиты от всякой гадости нужно/можно использовать AppLocker.

                                          Only users with full accounts can post comments. Log in, please.