Интервью с авторами VBootkit

Автор: Topol Вторник, Май 8th, 2012 Нет комментариев

Рубрика: Операционные системы

Федерико Бьянкузи взял интервью у Найтина и Вайпина Кумара (Nitin и Vipin Kumar), авторов VBootkit, руткита, который может запускаться из загрузочных секторов Windows Vista. Они обсуждают особенности их кода, поддержку различных версий Windows Vista, возможность размешать его в BIOS (требуется около 1500 байт), а также возможность использовать его для обхода программной активации Windows Vista  и DRM.

Не могли бы вы представиться?

Найтин Кумар: Я — 23-летний дипломированный специалист из Индии. У меня есть пристрастие к компьютерам. Самой лучшей чертой своего характера считаю то, что я никогда не сдаюсь и не оставляю попытки достичь цели. Я люблю программировать на C и на ассемблере. Мне нравится Reverse Engineering. В свободное время я занимаюсь познанием чего-то нового для себя. Windows Vista является абсолютно новой ОС и содержит в себе множество новых разработок в области безопасности, потому мы и задумались о создании чего-то нового для Vista.

Вайпин Кумар: Я — 22-летний специалист из Индии. Я люблю анализировать операционные системы (главным образом их внутреннюю организацию, элементы ядра и т. п.) и тестировать ОС и сетевую защиту.

За отдельную плату мы также занимаемся оценкой уязвимости, аудитом защиты и т.п. Сегодняшнюю нашу жизнь нельзя назвать простой, потому мы много боримся/работаем, чтобы у нас были определенные аппаратные средства, как и у других. Если вам понадобится наша помощь, то не стесняйтесь обращаться.

Что такое Vbootkit?

Н. и В.: Vbootkit очень похожа на дверь или на ярлык доступа к ядру Windows Vista.Загрузочный комплект — это набор ядра, который способен запуститься с загрузочных секторов (главная загрузочная запись, CD, PXE, флоппи-диск и т.п.) и полностью сохраниться в памяти через переход в защищенный режим, а затем запустить ОС. Это очень интересный тип руткита. Все руткиты устанавливаются в момент функционирования ОС, так как они используют ее технологии для загрузки (к тому же они используют для установки привилегии администратора), но буткиты отличаются от них, так как они используют загрузку с носителей для атаки на ОС и потому выживают. Vbootkit — это специальный буткит для Windows Vista.

Он построен на «таранной» концепции. Так что он ни при каких обстоятельствах не касается жесткого диска и потому не оставляет никаких доказательств. Вам нужно только перезапустить систему, работающую с vbootkit, и он исчезнет, как будто его никогда и не было.

Какие «функции» он обеспечивает для пользователейWindows?

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

В настоящее время он может исполнять лишь следующие немногие действия:

Он периодически поднимает уровень привилегии cmd.exe до системного по прошествии нескольких секунд.

Вносит изменения в системный реестр для автоматического запуска телнет-сервера.

Создает поток пользовательского режима и переправляет определенные пользовательские данные в контекст защищенного процесса системы (LSASS.EXE, Winlogon.exe и т.п.)

В целом, он может делать все что угодно, что запрограммирует для него пользователь на выполнение, так как vbootkit становится частью ядра и может делать все, что может делать ядро Windows Vista.

Он может работать на любых версиях Vista?

Н. и В.: Да, он будет работать практически на всех выпусках Vista, в том числе и на локализованных, но это потребует небольшой настройки. Скорее всего, он будет поддерживать и Windows Vista Service Pack 1, хотя это всего лишь предположение.

Выложите ли вы ваш код в сети?

Н. и В.: Нет, мы не выложим код для vbootkit, но мы обеспечим им некоторых производителей антивирусов.

Однако, вы можете загрузить предыдущие версии буткита (для Windows 2000/XP/2003) с нашего сайта. Программный код также доступен.

Если вы интересуетесь демо-версией, то вы можете найти ее описание (PDF), слайдшоу с нашей презентации (PPT) и видео, показывающее vbootkit в работе (AVI 1AVI 2).

Какова была реакция продавцов антивирусов?

Н. и В.: В настоящее время многие антивирусные решения не сканируют загрузочные данные. Мы не получили от них никаких официальных комментариев. Собираются ли они исправлять это или нет?! Но они, безусловно, заинтересовались нашим кодом.

Как он может быть развернут нападающим?

Н. и В.: Нападающему необязательно его устанавливать, с этой целью его и разрабатывали. Надо всего лишь поместить носитель с vbootkit (в загрузочном секторе содержится vbootkit) в систему и начать загрузку. После того, как Windows Vista загрузится, вы можете проверить работу vbootkit, повысив изначально низкий уровень доступа cmd.exe до системного.

Ему не нужны никакие привилегии, только прямой доступ к машине. При определенных условия он может быть установлен и на удаленной машине.

Разработали ли вы стационарную версию?

Н. и В. Он был разработан в основном для работы с CD, флэш-драйвов и портативных жестких дисков. Однако, такие версии не были устойчивыми, так, при перезагрузке системы они пропадали. Так что во время разработки вы работали над стационарной версией, что означает, что она будет присоединяться к MBR с жесткого диска. Это присоединение означает, что мы скопируем оригинал MBR в какую-либо другое место и затем заменим его другим MBR. Таким образом, когда система будет запушена, vbootkit начнет действовать в MBR, самостоятельно загрузится (ему потребуется немногим больше 446 байтов) и затем начнет загрузку оригинального MBR, продолжая, таким образом, обычный запуск.

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

Достаточно ли он мал, чтобы быть помещенным во флэш-память BIOS?

Н. и В.: Определенно, его размер составляет всего 1500 байт. И его можно и дальше уменьшать. Сегодняшние BIOS очень велики, так что он может легко там затеряться.

Как работает vbootkit?

Н. и В.: Вот упрощенная последовательность направлений действий:

BIOS —> код Vbootkit (с CD, PXE и т.п.) —> MBR —> загрузочный сектор NT —> Windows Boot manager —> загрузчик Windows —> ядро Windows Vista.

Как только vbootkit получит контроль над системой, он вызывает прерывание 13, затем производит поиск сигнатур для ОС Windows Vista. После их обнаружения он начинает модификацию Windows Vista, одновременно скрывая себя (небольшими кусками в различных областях памяти). Эти модификации включают в себя обход таких систем защиты, как проверка цифровых подписей, контрольной суммы, а также он предпринимает определенные действия для сохранения своего контроля, в то время как процесс загрузки переходит в свою вторую фазу.

Вторая стадия включает в себя патчинг ядра системы с целью сохранения у vbootkit контроля над системой до ее перезагрузки. Были проанализированы некоторые защитные системы, наподобие знаменитой PE header checksum (каждый Windows EXE содержит ее) и цифровой подписи файлов.

Таким образом, у вас будет vbootkit, загруженный в ядро Vista.

Можете ли вы использовать vbootkit для обхода DRM?

Н. и В.: Да, vbootkit может быть настроен таким образом, чтобы он мог обойти защиту DRM. Последний был сконструирован таким образом, чтобы в случае загрузки неподписанных драйверов он не позволял бы вам проигрывать контент. Так как vbootkit может загружать код без того, чтобы система знала о его присутствии, его можно использовать для обхода DRM.

Что еще может делать vbootkit?

Н. и В.: vbootkit может быть использован как долгоживущий вирус для загрузочного сектора. Даже некоторые антивирусные производители перестали обращать внимание на вирусы для загрузочного сектора. Он может возобновить их использование.

Только вообразите следующую ситуацию.

Предположим, что vbootkit работает на компьютере, к которому подключён USB-носитель (vbootkit скопирует себя в загрузочный сектор нового устройства), и, таким образом, всякий раз, когда по ошибке будут загружены USB-устройства, он будет присоединяться к загрузочному процессу новой системы и таким путем сможет перемещаться от системы к системе.

А теперь рассмотрим другой интересный сценарий. Vbootkit работает на одной системе в компании, и находит все MAC-адреса. И в полночь система vbootkit начинает удаленную загрузку и код vbootkit представляется как загрузочный код PXE и, таким вот образом, медленно и настойчиво целая организация начнет работать уже с vbootkit…

Он может использоваться и как обратный доступ (локальный или удаленный), хотя это только идея. В целом, он может делать все, что бы вы ни захотели (и что может делать Windows Vista).

Как может vbootkit закрепиться в системе после одной загрузки?

Н. и В.: В текущих версиях он показывает нашу сигнатуру во время выбора ОС (загрузочное меню). Во-вторых, мы добавили сигнатуры vbootkit в память ядра, так что физический дамп или сканирование ядра сможет их найти.

Как бы вы его изменили, если бы захотели сделать его максимально «невидимым»?

Н. и В.: Мы бы удалили все сигнатуры из загрузочного меню и из памяти. Невидимость и обнаружение в руткитах/буткитах — это непрерывное соперничество по изменению ваших инструментальных средств с целью нанести поражение другому.

Как разрабатывался vbootkit?

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

Это стало началом развития буткита. Мы сделали буткит для семейства Windows NT (включая 2000/XP/2003 без Windows NT). Тогда появилась Vista RC1, которая вышла под маркой нового загрузочного механизма ОС (процесс загрузки полностью отличается от предыдущих версий) и мы занялись анализом Windows Vista. Этот процесс включал в себя изучение MBR, загрузочного сектора NT, менеджера загрузки (Bootmgr.exe), загрузчика Windows (Winload.exe) и ядра Vista (NTOSKRNL.EXE). Несколько «околоядерных» кодов были разработаны с целью использовать их в различных сценариях.

Все же, почему вы не выпустили исходные коды?

Н. и В.: Мы не хотим, чтобы кто-то неправильно бы ими воспользовался. Мы лишь хотели показать, что есть такой способ, как vbootkit, который можно использовать для обхода всей защиты ядра.

Нужна ли вам какая-нибудь специфическая аппаратура?

Н. и В.: Нет, нам не понадобились какие-либо специфические аппаратные средства или CPU, поддерживающий виртуализацию.

Что конкретно подвергается изменениям?

Н. и В.: Главным образом мы изменяем менеджер загрузки Windows, загрузчик Windows и ядро Vista.

Устойчивая к перезагрузке версия vbootkit также вносит изменения в MBR. Она изменяет некоторые проверки защиты типа PE-проверки, проверки цифровой подписи и т.д., чтобы сохранять контроль над процессом начальной загрузки. Если мы пропустим любой такой патч, то система вообще не будет загружаться.

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

Н. и В.: Модификации кода коснулись проверок защиты. Например, PE checksum, в следствие того, что, когда мы изменяем файлы в памяти, они должны пройти проверку, и для этого мы вычисляем новую контрольную сумму и помещаем ее на место старой.

Мы должны внести изменения в ядро Windows Vista, чтобы оставить контроль над системой за нами. Эти модификации позволяют нам оставаться в отдельных частях ядра и после этого мы пересылаем наши коды, которые позволяют определенным командам пользоваться системными привилегиями. У нас также есть коды для ядра, которые вносят изменения в системный реестр, позволяя запустить телнет-сервер.

POC видео показывает, насколько повышается уровень доступа посредством этого кода. Он всего лишь находит cmd, наращивает их уровень доступа и затем бездействует 30 секунд, чтобы не произошло никакой значимой потери производительности.

Как Vbootkit влияет на производительность системы?

Н. и В.: Vbootkit оказывает очень маленькое влияние на производительность (менее 0,01%). Так происходит потому, что он работает не постоянно, а лишь непродолжительными сеансами (между прочим, период бездействия не занимает много циклов CPU).

В демонстрационном видео Vista работает в vmware на четырехлетнем Pentium-IV 2 ГГц 512 ОП, 40 Гб жесткий диск, видеокарта Geforce2 MX 400. Именно поэтому он кажется медленным.

Во время вашей атаки вы пользуетесь ошибкой в Windows Vista?

Н. и В.: Мы не можем сказать, что воспользовались ошибкой в ядре Windows Vista (по крайней мере в данном сценарии). Мы только создали туннель к ядру Vista, у которого нет защитных барьеров.

Могли бы вы использовать vbootkit для обхода активации Vista?

Н. и В.: Да, он может быть запрограммирован для обхода активации Vista.

Связывались ли вы с Microsoft по этому поводу?

Н. и В.: У нас нет официального контакта с ними. Но мы обсудили эту ситуацию с несколькими парнями из Microsoft.

Что вы можете предложить для борьбы с буткитами?

Н. и В.: Только программ защиты недостаточно, чтобы предохраниться от буткитов. Единственный способ защиты — это защиты на аппаратном уровне (Trusted Platform Module).

Microsoft может затруднить работу буткитов, внося изменения в алгоритмы, но она не может сделать никакой реальной защиты от буткитов только программными методами. Нужно использовать Безопасную Загрузку (Secure Boot, SB).

Вы хотели бы что-то добавить?

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

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты