войти зарегистрироваться

ESET NOD32

ESET NOD32
хабраиндекс
46,11

Патч руткиту не товарищ!

Во вторник, на прошлой неделе, вышло внеплановое обновление от Microsoft, под номером MS10-015 . Данный патч устранял уязвимость, которая позволяет локально повысить свои привилегии, и вносил модификации непосредственно в ядро ОС. Это обновление повлекло довольно непредвиденные последствия — некоторые пользователи испытывали проблемы после его установки. А конкретнее, после перезагрузки системы, которая требуется для установки этого обновления, стала проявляться критическая ошибка в одном из системных драйверов, которая в дальнейшем демонстрировала BSoD.

image

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

Давайте разберемся более подробно, что же произошло, и по какой именно причине возникал BSoD. Итак, речь идет о последней модификации руткита TDSS, которая уже довольно давно активно распространяется в Интернете. Но почему происходит эта ошибка?
Ответ оказался довольно простым: руткит использует неявные вызовы WinAPI функций и ищет их по смещению в памяти, но при обновлении произошли модификации, которые изменили код, находившийся по другим адресам оперативной памяти. Это и послужило причиной критической ошибки.

image

image

По словам представителей Microsoft, проблема с данной ошибкой проявлялась исключительно на 32-х разрядных операционных системах. А в качестве аргументов приводилась информация о невозможности загрузки неподписанных драйверов в 64-х битных версиях Vista и Win7. Все это тоже объяснимо, так как руткит вносит модификации непосредственно в драйвер, цифровая подпись уже не проходит верификацию, и драйвер не может быть загружен.

По нашим данным, активность зараженных пользователей руткитом TDSS после выхода этого обновления довольно сильно просела, что заставило злоумышленников выпустить обновленную версию с исправлением этой ошибки. Злоумышленники подошли с иронией к обновлению своего детища, и в одном из конфигурационных файлов к этому зловреду нам встретилась следующая строка непристойного содержания: «F*ck damnation, man! F*ck redemption! We are God's unwanted children!» .

Возникшая ситуация продемонстрировала, что количество пользователей, зараженных данным руткитом, достаточно велико. Причем концентрация пострадавших в США, отнюдь не маленькая. Возможно, именно это повлекло быструю реакцию и расследование инцидента со стороны Microsoft.

комментарии (34)

  • Дизассемблируя системные файлы, вы нарушили Лицензионное Соглашение (;
    • Какое лицензионное соглашение? Вы правда в курсе подробностей соглашений ESET и Microsoft? ;) Или вы думаете что раз Windows одинаковая — то и соглашение у всех точно такое же как в коробочных версиях?
    • НЛО прилетело и опубликовало эту надпись здесь.
    • Наше законодательство разрешает такое дело.
    • Читайте ГК. У него статус повыше, чем у соглашения.
  • По поводу цитат, которые руткит пишет в отладочный вывод при загрузке — «F*ck damnation, man! F*ck redemption! We are God's unwanted children!» встречалась и в более старых билдах зловреда. Всего их порядка десятка, причём одна половина эитх цитат из The Simpsons, другая — из Fight Club'a (хотя была ещё одна из Страха и ненависти в Лас-Вегасе). Сама цитата, по всей видимости, прописывается в билд при его сборке, и хранится в файле config.ini, который находится на скрытом и зашифрованном вирутальном диске руткита со своей фс.
    Пример такого конфига:
    [main]
    quote=Tomorrow will be the most beautiful day of Raymond K. Hessel's life
    version=3.23
    botid=eb450bf0-36a4-453d-a0af-86dea98332fc
    affid=20273
    subid=0
    installdate=30.1.2010 14:33:12
    builddate=30.1.2010 14:1:8
    [injector]
    *=tdlcmd.dll
    [tdlcmd]
    servers=https://d45648675.cn/;https://d92378523.cn/;https://91.212.226.62/
    wspservers=http://b11335599.cn/;http://b00882244.cn/
    popupservers=http://m3131313.cn/
    version=3.64

    Ваш К.О.
    • Бойцовский клуб! Точно! :) вы меня избавили от мерзкого ощущения «откуда же это», спасибо
  • «достаточно велико» и «отнюдь не маленькая» это сколько в цифрах?
  • > руткит мог заражать и другие системные драйверы

    Скоро руткиты будут заражать прошивки контроллеров на материнской плате (
    • уже умеют писаться в bios flash
      • Подрастут — перестанут.
        • во флеш можно писать только голову а хвост подтягивать с инета.
          • Во флеше свободного места нынче по пол мегабайта ) Что хочешь влезет )
      • CIH умел
    • скоро руткиты будут заражать прошивки на наших мозгах (
      • Иногда, особенно на хабре, кажется, что кое у кого это уже произошло :-|
      • Основная причина нежелания устанавливать себе микрочип.
        • потому надо будет ставить туда линукс.
          это единственный выход.
          в винде существует вероятность… а значит… это тот случай, где никакой риск недопустим.
  • На PAGE_FAULT_IN_NON_PAGED_AREA сегодня насмотрелся в течение дня. Драйвер выходит туго.
  • Наредкость качественный «скриншот» BSoD'а =)
    • из виртуалбокса — легко!
    • виртуальная машина? ;)
  • а как вылечить-то это? Есет, вроде, ничего не нашёл, когда я поймал этот бсод два дня назад
    • Вот ссылка на решение. Там надо удалить один из патчей, а именно: KB977165.

      Но в некоторых случаях запустить recovery console не удается. Все равно вылетает синий экран. В таких случаях можно загрузиться с помощью linux live cd и все сделать руками в консоле.
      • Если я правильно понял всё, что там написано, это хрень какая-то, а не решение. Вопрос в том, как убить руткит этот? Ведь не майкрософт же его в патчах рассылает. Удаление патча уберёт только последствия, но не причину. Так вот как избавиться от причины всего этого добра?
  • Расскажу вам чуток поподробнее.
    При заражении размер драйвера не меняется. Руткит перезаписывал часть ресурсов и устанавливал точку входа на себя. Он заражает atapi.sys(там идёт перехват диспатч таблицы irp), т.е. возможность стартовать на самом раннем этапе загрузки ОС.
    В болле поздних версиях диспатч-таблица не тронута, а создается fake объект драйвера со своими диспатч функциями и перезаписывает указатель в устройстве, которое обслуживает загрузочный диск, на свой драйвер. На этом возможности не заканчиваются, для сокрытия данных он перехватывает функцию для построения очереди irp пакетов, с последующим извлечением их оттуда. Диспатч функция вызывает IoStartPacket, что в свою очередь приведёт к вызову функции StartIO которая и будет перехвачена руткитом.
    Если клиент пытается считывать скрываемые сектора, руткит устанавливает свою функцию завершения, в который фильтрует данные.
  • Может быть я в танке, но я так и не понял, причём тут Eset? И самое главное, как вылечится?
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.