MS12-020: разведение RDP-червей

    Во вторник Microsoft выпустила очередную порцию патчей, и среди них наше внимание особенно привлек MS12-020, который имеет критический статус. Уязвимость позволяет выполнить произвольный код на удаленной системе при мощи специально сформированного RDP-пакета. Данной уязвимости подвержены все версии MS Windows в том числе и 64-битные версии. На самом деле в рамках патча MS12-020 было закрыто две уязвимости CVE-2012-0002 (RCE в RDP) и CVE-2012-0152 (DoS в Terminal Server). Нас больше интересует первая уязвимость, так как она гораздо более опасная и может повлечь за собой появление сетевых червей, которые будут ее активно эксплуатировать (на данный момент о случаях ее использования во вредоносных программах мне не известно).

    Кстати относительно недавно уже закрывалась уязвимость MS11-065 (август 2011), которая позволяла осуществлять DoS (WinXP/2003) и была замечена в том же драйвере rdpwd.sys, в котором была найдена CVE-2012-0002. Эти изменения можно отследить по временным меткам в rdpwd.sys до и после патча. А также в официальных списках изменений для MS11-065 и для MS12-020.

    image


    image

    Собственно, основные изменения были замечены в функции HandleAttachUserReq(), декомпилированный вариант которой выглядит следующим образом:

    image

    image

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

    image

    Видно, что добавлена дополнительная проверка и освобождение памяти при помощи ExFreePoolWithTag():

    image

    Теперь посмотрим на декомпилированный вариант этих изменений:

    image

    image

    Именно отсутствие этой проверки может за собой повлечь возможность удаленного захвата памяти и возможность несанкционированного выполнения кода. Причем выполнения кода происходит в ядре.

    Неплохой анализ CVE-2012-0152 (DoS в Terminal Server) можно найти здесь.

    Бытует мнение, что уже существует рабочий эксплойт:

    image

    Возможно, это просто фейк, но, по нашим прогнозам, публичный эксплойт, вероятнее всего, появится на следующей неделе в составе Metasploit, что вызовет цепную реакцию появления его во вредоносных программах.
    ESET NOD32
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 23

      0
      > при мощи специально сформированного RDP-пакета
      Мощный пакет!
        0
        Спасибо, полезная информация.
        Предлагаю опубликовать в хабы «Информационная безопасность» и «Системное администрирование».
          +1
          добавили пост в хабы «Информационная безопасность» и «Системное администрирование»
          +11
          Ещё один аргумент за то, почему у меня все виндовые сервера находятся за злобным натом, а ходить на них по RDP предлагается так:

          ssh -XYC user@access_server rdesktop -k en-us windows.server
            +4
            есть немалая вероятность, что эксплойт не появится вообще, т.к. далеко не факт, что можно выполнить код через ExFreePoolWithTag().
              0
              А чем декомпилируете, если не секрет?
                +6
                Декомпилируем в уме =) Ну, а если серьезно это последняя версия творения от Hex-Rays, а патчи сравниваем BinDiff (лучше ничего нет, бесплатные аналоги отстают).
                0
                нагуглил уже возможный паблик hurri.blog.51cto.com/355432/806744
                но не тестил на работоспособность
                  0
                  sabu@fbi.gov как бэ намекает
                    0
                    ну если сплоит рабочий то и ему и потролить можно :D
                    0
                    не смог найти freerdp модуль питоновский… мне кажется кто-то троллит))
                      0
                      всё равно импорты нигде не используются. предполагаю, что или fake или используют собственный wrapper
                      0
                      Это фейк, пока есть только рабочий отказ в обслуживании.
                      +1
                      а вот и bluescreen PoC pastebin.com/UzDKcCQy
                        0
                        2003-й server успешно ушел в ребут по stop error.
                        +1
                        вот модернизированый, проверил сейчас на семерке, хр и 2008 серверной.
                        pastebin.com/WYx9kRQ6
                          0
                          да… работает
                            0
                            Семерка х64 ultimate
                            python rdp3.py ******.spb.ru
                            0
                            1
                            .
                            .
                            53
                            54
                            Traceback (most recent call last):
                            File «rdp3.py», line 26, in s.connect((HOST,PORT))
                            File "", line 1, in connect
                            socket.timeout: timed out
                            0
                            Я не умею админить Windows.
                            У меня есть несколько серверов на базе Windows. К сожалению, это сервера, которые должны быть доступны 24х7, поэтому, обновление системы производится лишь после критичных уязвимостей. Ни раз было, что какой-нибудь сервер после автообновления отказывался нормально стартовать.

                            Есть один сервер 2003 очень капризный, который не всегда стартует с первого раза после ребута. Одна такая перезагрузка может привести к получасу простоя с бубном около KVM.

                            А вот обновления имеют свойства ставиться не все за раз, а постепенно: несколько штук установится, далее ребут, еще несколько штук, ребут… В моих условиях это оборачивается в невероятные приключения.

                            Ищу совета. Что делать, чтобы все апдейты ставились за раз, с одной перезагрузкой?
                              0
                              Штатно — никак, у обновлений есть специальные признаки «требует », поэтому они и и ставятся с.
                              Собственно ситуация, когда серверы не стартуют после перезагрузки врядли может штатной, и вам лучше лечить корень проблем, а не искать варианты как исправить симптомы.
                                0
                                Может нанять админа, который умеет админить win? Или просто использовать ту ОС, которую умеете админить?
                                  0
                                  cepera_ang
                                  Да там и железяка глючная и софт сильно специфичный грузит i/o не хило… ОС переставляли с нуля — не помогло.
                                  Что касается рестартов — не понимаю я почему так… У *nix*-систем не бывает больше одного ребута для установки апдейтов. Я уж молчу, что ребут обычно нужен только для обновления ядра…

                                  AwesomeBanana
                                  Я бы очень хотел чтобы было именно так, как Вы говорите, но мы ведь живем в реальном мире. :)
                                    0
                                    Прекрасно понимаю :)

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