Интересное чтиво по теме бирусов появилось на страницах "Хакера" - "Китайские закладки: непридуманная история о виртуализации, безопасности и шпионах", может понравиться многим, хоть и "многа букаф". Даже не буду говорить, что я не буду говорить, что говорил...
Update: Почему-то страница не доступна (error 404), ниже копия (автор статьи R_T_T)
Я не профессионал в области информационной безопасности, моя область интересов — это высокопроизводительные вычислительные комплексы. В тему ИБ я пришел совершенно случайно, и именно об этом дальше пойдет речь. Думаю, эта невыдуманная история гораздо лучше осветит проблемы, связанные с аппаратурой виртуализации, нежели сухое изложение фактов.
Еще до официального анонса новых процессоров Intel с поддержкой аппаратной виртуализации (в начале 2007 года) я задумал использовать эти чипы для создания единой вычислительной системы на базе нескольких серверов, которая стала бы для ОС и прикладных программ единой вычислительной установкой с SMP-архитектурой. Для этого требовалось написать компактный гипервизор с нестандартным функционалом, главной особенностью которого было бы не разделение ресурсов единой вычислительной установки между разными ОС, а наоборот, объединение ресурсов нескольких вычислительных машин в единый комплекс, которым бы управляла одна ОС. При этом ОС не должна была даже догадываться, что имеет дело не с единой системой, а с несколькими серверами. Аппаратура виртуализации предоставляла такую возможность, хотя изначально не предназначалась для решения подобных задач. Собственно, система, в которой аппаратура виртуализации применялась бы длявысокопроизводительных вычислений, не создана до сих пор, а уж в то время я вообще был первопроходцем в этой области.
Гипервизор для этой задачи, конечно, писался с нуля. Принципиально важно было запускать ОС уже на виртуализированной платформе, чтобы с первых команд загрузчика ОС все работало в виртуальной среде. Для этого пришлось виртуализировать реальную модель и все режимы работы процессора и запускать виртуализацию сразу после инициализации платформы до загрузки ОС.
Поскольку система виртуализации для этой цели получилась нестандартной и выглядела как полностью автономный компактный программный модуль (объем кода не более 40–60 Кб), язык как-то не поворачивался называть ее гипервизором, и я стал использовать термин "гипердрайвер", поскольку он более точно передавал суть функционального предназначения системы. Серийного оборудования с аппаратурой виртуализации в то время еще не было, однако благодаря сотрудничеству с фирмой "Крафтвей" я имел доступ к предсерийным образцам процессоров и материнских плат с поддержкой виртуализации, которые еще не выпускались официально (так называемым сэмплам, которые фирма Intel любезно предоставляет своим партнерам по бизнесу). Поэтому работа закипела на этом "сэмпловом" оборудовании.
Макет был собран, гипердрайвер написан, все заработало, как и было задумано. Нужно сказать, что на тот момент аппаратура виртуализации было очень "сырой", из-за чего она не один раз отказывалась работать так, как написано в документации. Приходилось разбираться буквально с каждой ассемблерной командой, а сами команды для аппаратуры виртуализацииписать в машинных кодах, поскольку тогда не существовало компиляторов с поддержкой команд виртуализации.
Я гордился полученными результатами, чувствовал себя чуть ли не властелином виртуальных миров… но моя эйфория продлилась недолго, всего месяц. К тому времени я уже собрал макет на основе серверов с аппаратурой виртуализации, первые серийные образцы которых тогда как раз появились, но макет не работал.
Я начал разбираться и понял, что моя система виснет при выполнении команд аппаратной виртуализации. Создавалось такое впечатление, что они или совсем не работают, или работают как-то нестандартно. Зависание происходило только во время работы аппаратуры виртуализации в реальном режиме, если же моя система запускалась из защищенного режима, после загрузки ОС, то все было нормально.
Профессионалы знают, что в первых ревизиях аппаратура виртуализации Intel не поддерживала работу процессора в реальном режиме. Для этого требовался дополнительный слой достаточно большого объема для эмуляции виртуального х86. Поскольку гипердрайвер запускался до загрузки операционной системы, чтобы она могла полностью поверить в новую виртуальную конфигурацию, то небольшой кусок загрузочного кода ОС выполнялся в реальном режиме работы процессора. Система умирала как раз на обработчиках эмуляции реального режима в гипердрайвере. Сначала я подумал, что где-то ошибся, что-то не понял, о чем-то забыл. Проверил все до последнего бита в своем коде, никаких ошибок не нашел и начал грешить уже не на себя, а на коллег из-за бугра.
Первым делом заменил процессоры, но это не помогло. На материнских платах в то время аппаратура виртуализации была только в биосе, где она инициализировалась во время включения сервера, поэтому я начал сравнивать биосы на материнских платах (однотипных платах с сэмплами) — все совпадало до байта и номера самого биоса. Я впал в ступор и, уже не зная, что делать, применил последнее средство — "метод тыка". Чего я только не делал, уже не думая, а просто комбинируя, и в конце концов тупо скачал биосы с официального сайта Intel и переписал их заново в материнские платы, после чего все заработало…
Моему удивлению не было предела: номер биоса был тем же самым, образы биоса совпадали побайтно, но по какой-то причине серийные материнские платы заработали только тогда, когда я залил в них такой же биос, взятый сайта Intel. Значит, причина все-таки в материнских платах? Но единственное их отличие было в маркировке: на сэмплах было написано Assembled Canada, а на серийных платах — Assembled China. Стало ясно, что платы из Китая содержат дополнительные программные модули, прошитые в биосе, а стандартные программы анализа эти модули не увидели. Они, видимо, тоже работали с аппаратурой виртуализации и, соответственно, имели возможность скрыть истинное содержимое биоса. Стала понятна и причина зависаний моего гипердрайвера на этих китайских платах: две программные системы одновременно работали с одной и той же аппаратурой виртуализации, которая не позволяла разделять свои ресурсы. Мне захотелось разобраться с этим зловредным биосом, причем без всякой задней мысли о "закладках", "бэкдорах", "недокументированных возможностях", был просто академический интерес, и не более того.
Нужно сказать, что параллельно с внедрением аппаратуры виртуализации Intel радикально обновила чипсет. Этот чипсет, получивший номер 5000х, выпускается в нескольких модификациях до сих пор. Южный мост этого чипсета, 631xESB/632xESB I/O Controller Hub, к которому подключены флеш-микросхемы с биосом, практически в неизменном виде выпускается с 2007 года и используется в качестве базового чипа почти для всех серверов в двухсокетном исполнении. Я скачал даташит на южный мост, прочел описание и просто обалдел. Оказывается, к этому новому южному мосту подключаются три микросхемы флеш-памяти: первая представляет собой стандартный биос, вторая выделена под программы процессора сетевого контроллера, а третья предназначена для интегрированного в южный мост блока ВМС.
Блок менеджмента системы (ВМС) — это средство удаленного управления вычислительной установкой и ее мониторинга. Он незаменим для больших серверных комнат, где из-за шума, температуры и сквозняков просто невозможно долго находиться.
То, что блоки ВМС имеют собственный процессор и, соответственно, флеш-память для его программ, конечно, не новость, но до сих пор такие процессор и память выносились на отдельную плату, которая подключалась к материнской плате: хочешь — ставь, не хочешь — не ставь. Теперь Intel внедрила эти компоненты в южный мост, более того, подключила этот блок к системной шине и не стала использовать выделенный сетевой канал (как предусмотрено стандартом IPMI, описывающим функции блока ВМС) для работы сервисной сети, а туннелировала весь сервисный сетевой трафик в основные сетевые адаптеры. Далее я узнал из документации, что программы на флеш-микросхеме блока ВМС зашифрованы, а для их распаковки используется специальный аппаратный криптографический модуль, также интегрированный в южный мост. Такие блоки ВМС мне раньше не попадались.
Чтобы не быть голословным, привожу выдержку из документации на этот южный мост:
ARC4 processor working at 62.5 MHz speed.
Interface to both LAN ports of Intel® 631xESB/632xESB I/O Controller Hub allowing direct connection to the net and access to all LAN registers.
Cryptographic module, supporting AES and RC4 encryption algorithms and SHA1 and MD5 authentication algorithms.
Secured mechanism for loadable Regulated FW.
Применение иностранных криптографических средств с длиной ключа более 40 бит запрещено на территории России законодательно, а тут — пожалуйста! — в каждом сервере Intel криптомодуль с неизвестными ключами длиной 256 бит. Более того, эти ключи использовались для шифрования программ, зашитых в микросхемы материнской платы на этапе производства.
Выходит, что блоки ВМС в России на серверах Intel, которые имеют в своем составе чипсет 5000х, должны быть отключены. Однако эти блоки, напротив, всегда находятся в рабочем состоянии, даже если сама вычислительная установка отключена (для функционирования ВМС достаточно дежурного напряжения, то есть вставленного в розетку кабеля питания сервера). Все это казалось мне на тот момент второстепенным, поскольку для начала нужно было выяснить, в какой из флеш-микросхем находился программный модуль, работающий с аппаратурой виртуализации и мешающий моему гипердрайверу, и я начал экспериментировать с прошивками.
После ознакомления с документацией я насторожился, а когда обнаружил, что работоспособность гипердрайвера восстанавливается как раз после перепрошивки флеш-микросхемы блока ВМС, даже не удивился. Разбираться дальше без специальных стендов было невозможно, так как криптография полностью перекрывала возможности реверса кода для ВМС. Документации на внутреннюю архитектуру этого интегрированного ВМС я не нашел, в даташите на южный мост Intel описала только интерфейсные регистры для управления этим блоком по стандартным методам доступа, в результате чего получился классический "черный ящик".
Совокупность фактов настораживала и наводила на параноидальные мысли в стиле шпионских детективов. Эти факты однозначно говорили о следующем:
В новых серийных серверных платах Intel на базе чипсета 5000 имеются программы, прошитые в флеш-памяти блока ВМС и исполняемые на центральном процессоре, причем эти программы работают с использованием аппаратуры виртуализации центрального процессора.
Образы флеш-памяти с официального сайта Intel не содержат таких программных модулей, следовательно, мешающие мне программные модули были нелегально прошиты в материнские платы на этапе производства.
Флеш-память блока ВМС содержит зашифрованные программные модули, которые невозможно собрать и залить в флеш-память без знания ключей шифрования, следовательно, тот, кто вставил эти нелегальные программные модули, знал ключи шифрования, то есть имел доступ фактически к секретной информации.
Я сообщил руководству "Крафтвей" о проблеме с прошивкой флеш-памяти блока ВМС и сомнительной с точки зрения законодательства ситуации с новыми чипсетами Intel, на что получил вполне ожидаемый ответ в стиле "не мути, мешаешь бизнесу". Пришлось угомониться, поскольку против работодателей особо не попрешь.
Руки были связаны, но "мои мысли, мои скакуны" не давали мне покоя, было непонятно, зачем эти сложности и как все это сделано. Если у тебя есть возможность разместить собственное ПО в памяти блока ВМС, зачем тебе вся эта морока с центральным процессором? Разумной причиной могло быть только то, что решаемая задача требовала контролировать текущий вычислительный контекст на центральном процессоре. Очевидно, что уследить за обрабатываемой информацией на основной вычислительной системе, используя только периферийный низкоскоростной процессор с частотой 60 МГц, невозможно. Таким образом, похоже, задача этой нелегальной системы состояла в съеме информации, обрабатываемой на основной вычислительной установке, с помощью средств аппаратуры виртуализации. Дистанционно управлять всей нелегальной системой, конечно, удобнее с процессора блока ВМС, поскольку он имеет собственный независимый доступ к сетевым адаптерам на материнской плате и собственные МАС- и IP-адреса. Вопрос "как это сделано?" имел более академический характер, поскольку кто-то умудрился создать гипервизор, умеющий разделять ресурсы аппаратуры виртуализации с другим гипервизором и делающий это корректно для всех режимов, кроме реального режима работы ЦП. Сейчас такими системами уже никого не удивишь, но тогда, пять лет назад, они воспринимались как чудо, кроме того, скорость эмуляции поражала — программно эмулировать хост без значительных потерь в быстродействии было невозможно.
Для пояснения придется немного углубиться в теорию. Архитектура систем виртуализации Intel и AMD не предполагает наличия на платформе сразу нескольких гипервизоров, однако запущенный первым гипервизор может эмулировать для гипервизоров, которые запускаются после, работу на реальном оборудовании виртуализации. В этом случае все гипервизоры, запущенные вслед за первым, работают в эмулируемой среде хоста. Этот принцип я называю "правом первой ночи". Его можно легко реализовать с помощью специальных обработчиков в корневом хосте, при этом режим задачи существенно не изменится, а хосты вторичных гипервизоров будут выполняться в режиме задачи для корневого хоста. Режим эмуляции организовать не сложно, однако с быстродействием возникают проблемы. Аппаратура виртуализации работает в основном с блоком VMCB (VMCS), программы хоста постоянно обращаются к этому блоку, а на каждое такое обращение требуется 0,4–0,7 мкс. Скрыть такую программную эмуляцию хоста для системы виртуализации Intel практически невозможно, слишком много команд виртуализации придется эмулировать программно через выходы в корневой хост, вместо того чтобы выполнять их на реальном оборудовании.
Расскажу немного о различиях между архитектурами виртуализации. Системы аппаратной виртуализации от Intel и AMD совершенно не похожи друг на друга. Главное архитектурное отличие этих систем состоит в режиме работы хоста. В системе AMD хост работает с отключенной аппаратурой виртуализации, то есть его программы выполняются на реальном процессоре. Виртуализация вторичного хоста в системах от AMD требует виртуализации только команды VMRUN (можно считать, что других команд нет). Работа с управляющим VMCB-блоком в архитектуре AMD происходит через обычные команды обращения к оперативной памяти, что позволяет контролировать с помощью вторичного хоста только выполнение команд VMRUN и подправлять при необходимости VMCB-блок перед реальным входом в режим задачи. Удлинить цикл обработки события в два раза еще можно, и на платформе AMD такая эмуляция жизнеспособна. В системе виртуализации Intel все гораздо сложнее. Для доступа к VMCB-блоку используются специальные команды VMREAD и VMLOAD, которые нужно обязательно виртуализировать. Обычно обработчики хоста десятки, если не сотни раз обращаются к полям VMCB-блока, и каждую такую операцию нужно эмулировать. При этом заметно, что скорость падает на порядок, это очень неэффективно.
Стало ясно, что для эмуляции неизвестные коллеги использовали другой, более эффективный механизм. И подсказки насчет того, какой именно, я нашел в документации. Хост у Intel сам является виртуальной средой, то есть ничем, по сути, в этом плане не отличается от среды выполнения задачи и просто управляется другим VMCB (см. схему).
Кроме того, в документации описана концепция "дуального монитора" для виртуализации SMM-режима (режима системного менеджмента), когда фактически активны сразу два хоста и, следовательно, два VMСB-блока, причем хост, виртуализирующий режим системного менеджмента, контролирует основной хост как задачу, но только в точках вызова прерываний системного менеджмента.
Эта совокупность косвенных фактов говорит о том, аппаратура виртуализации Intel, вероятно, имеет механизм контроля множественных вторичных хостов, управляемых корневым хостом, хотя этот механизм нигде не описан. Кроме того, моя система именно так и работала, и другого объяснения практически незаметным действиям корневого гипервизора у меня до сих пор нет. Стало еще интереснее: похоже, кто-то имел доступ к этим недокументированным возможностям и использовал их на практике.
Примерно за полгода до окончания сотрудничества с "Крафтвеем" я занял позицию пассивного наблюдателя, продолжая тем не менее регулярно запускать свою систему на новых партиях серийных материнских плат из Китая и новых сэмплах. На сэмплах все продолжало стабильно работать. Когда я переходил к китайским платам, в системе возникали все новые и новые чудеса. Было похоже, что коллеги из-за рубежа активно улучшали работу своего корневого гипервизора. Последние подозрительные партии плат вели себя практически нормально, то есть первый запуск моего гипердрайвера приводил к перезагрузке системы во время старта ОС, но все последующие запуски гипердрайвера и ОС проходили без сучка и задоринки. В конце концов случилось то, чего я давно ожидал: поступила новая партия серийных материнских плат, при использовании которых мой гипердрайвер вообще не зависал. Я уже начал сомневаться в своих параноидальных подозрениях, однако новый случай укрепил их.
Надо заметить, что фирма Intel активно совершенствует аппаратуру виртуализации. Если первая ревизия аппаратуры, с которой я начал работать, имела номер 7, то описываемая ситуация произошла на 11-й ревизии, то есть приблизительно за год ревизия обновлялась дважды (ревизии почему-то имеют только нечетные номера). Так вот, на ревизии с номером 11 условия выходов в хост по состоянию задачи для аппаратуры виртуализации существенно расширились, в соответствии с чем в VMCB-блоке даже было введено новое управляющее поле. Когда появились сэмпловые процессоры с этой ревизией аппаратуры виртуализации, мне захотелось испытать новые возможности на практике. Я усовершенствовал гипердрайвер за счет новых возможностей 11-й ревизии аппаратуры виртуализации, установил сэмпловый процессор на серийную плату из Китая, в которой все уже работало без замечаний, и начал отладку. Новые возможности аппаратуры никак себя не проявили, и я опять впал в прострацию, греша на сэмпловый процессор и документацию. Через некоторое время материнская плата потребовалась для другой задачи, и я, возобновив эксперименты, для подстраховки переставил процессоры с 11-й ревизией аппаратуры виртуализации на канадский сэмпл. Каково же было мое удивление, когда на этом сэмпле все заработало!
Сначала я подумал, что где-то накосячил с серийной платой, поскольку новые выходы в хост не имели к материнской плате ну совершенно никакого отношения, это чисто процессорная функция. Для проверки я переставил сэмпловый процессор на серийную плату, и все опять перестало работать. Значит, я ничего не накосячил, а проблема крылась в том, что материнская плата каким-то образом влияла на новые возможности аппаратуры виртуализации процессора. С учетом моих подозрений напрашивался единственный вывод — нелегальный корневой хост коллег из-за рубежа, прошитый в флеш-памяти материнской платы, не знал о новой ревизии аппаратуры виртуализации. Когда эта неизвестная ему аппаратура начинала работать, он переставал корректно пропускать выходы из состояния задачи в мой вторичный хост через собственный обработчик событий. Уже зная, как бороться с этой напастью, я залил на серийную плату прошивку для блока ВМС с сайта Intel, включил систему в уверенности, что все сразу заработает, и снова выпадал в осадок, так как зависания остались. Это было что-то новенькое.
Согласно моей теории, нелегальный гипервизор обнаглел и уверился в своей неуязвимости. Видимо, его авторы посчитали, что этап обкатки их детище прошло и маскировать неотлаженное ПО под сбой биоса больше не нужно. После того как была включена функция защиты кода инициализации от перезаписи во флеш-памяти, закладка стала практически неудалимой.
Уверенности в своей правоте у меня не было, нужны были контрольные эксперименты. Пришлось изобретать собственный метод для обнаружения аппаратного гипервизора. Потом, правда, оказалось, что я изобрел велосипед. Метод позволял контролировать время выполнения системных команд, требующих обязательной эмуляции в хосте гипервизора. В качестве таймера я использовал циклический счетчик фреймов в аппаратуре USB-контроллера, а программу написал для реального режима работы, чтобы минимизировать побочные и неконтролируемые прерывания, которые маскировали истинное время выполнения системных команд. Первую проверку я провел для чистой системы на базе сэмпловых материнских плат из Канады.
Время выполнения, указанное на фото, — это некоторое условное значение, приблизительно соответствующее такту процессора. Затем я запустил тот же тест на серийной материнской плате и убедился в своих параноидальных предположениях — циклы выполнения команд существенно удлинились.
То есть во флеш-памяти блока ВМС серверных плат из Китая, выпускаемых под лейблом Intel, имелся установленный на этапе производства недекларированный программный модуль, работающий как хост гипервизора. Осталось убедить в этом окружающих. Первым делом я вышел на российского представителя Intel. Это было совсем нетрудно, поскольку сотрудники российского офиса часто появлялись в "Крафтвее".
Я все рассказал и показал, однако не был уверен, что технический специалист все понял. Эти так называемые технические специалисты по уровню своей компетенции мало отличаются от менеджеров. Однако он обещал доложить обо всем руководству. Не знаю, сделал ли он это, но никакой ответной реакции от Intel так и не последовало, все ушло как в песок. Работа в "Крафтвее" к тому времени завершилась, и я начал новый проект в фирме, связанной с системами информационной безопасности. Руководитель этой фирмы, с которым я поделился своими "открытиями", принял мои слова всерьез. В связи с этим было решено выйти на руководство Центра защиты информации и спецсвязи ФСБ. Эта структура в составе ФСБ занимается обеспечением информационной безопасности в стране и регулирует деятельность государственных и коммерческих организаций, которые имеют отношение к защите информации. Она также регламентирует меры по защите информации для госструктур и коммерческих фирм, обрабатывающих секретную и конфиденциальную информацию. Фирма, в которой я в то время работал, поддерживала с Центром официальные контакты, чтобы сертифицировать и лицензировать свои коммерческие проекты, поэтому организовать встречу на уровне специалистов было достаточно просто. Предполагалось, что эксперты Центра сообщат о своем мнении руководству, и если после этого руководство сочтет нужным выслушать нас, то следующим этапом будет встреча на более высоком уровне.
Встреча состоялась, я рассказал и показал все, что удалось выяснить, затем продемонстрировал наличие нелегального программного модуля на примерах плат из Канады и Китая. Кстати, тогда я в первый раз услышал и профессиональный термин "закладка", обозначающий такой модуль. Когда разговор зашел про ВМС, в глазах у коллег из Центра появилось непонимание. Пришлось проводить ликбез. По ходу дела выяснилось, что они даже не подозревали о существовании специального микропроцессора в южном мосте с выходом на сетевой адаптер и о наличии в блоке ВМС криптографического модуля, нарушающего российское законодательство. В заключение мы совершенно неожиданно услышали, что эта модель угроз уже исследована, в их отношении применяется комплекс мер противодействия, и вообще, нам закладки не страшны, поскольку наши системы не имеют выхода в интернет.
Дальнейшие расспросы ни к чему не привели, все упиралось в секретность, типа, мы умные и суперграмотные, а вам ни о чем знать не положено. Однако я сильно сомневался в их технической грамотности, поскольку они просто не поняли большую часть того, что я рассказал и показал. Расстались на том, что они доложат своему начальству, а уж оно примет решение о дальнейших действиях.
Чуть позже я узнал, что это за "секретный метод" обнаружения программ хоста. Причем узнал совершенно случайно, во время переговоров на фирме — лицензиате Центра, уполномоченной проверять биос на закладки. Технические специалисты этой фирмы, проводящие исследования биоса, рассказали, что его программные модули, использующие аппаратуру виртуализации, надо искать по сигнатурам команд виртуализации. Действительно, команды процессора для аппаратуры виртуализации содержат три-четыре байта и в программном коде, но кто сказал, что этот программный код они обнаружат в незашифрованном виде на флеш-микросхеме? Как они отсканируют этот код в оперативной памяти, если эти области памяти защищены аппаратно от просмотра?
В общем, результат первой встречи оставил неприятный осадок, и я в самом мрачном настроении ожидал развития событий. Месяца через полтора нас пригласили уже в сам Центр защиты информации и спецсвязи, чтобы мы продемонстрировали обнаруженную нами закладку. На этот раз послушать нас собрались не рядовые сотрудники, а руководители и ведущие специалисты (по крайней мере, так они представились). Встреча превратилась в лекцию, меня внимательно слушали практически три часа, было видно, что они впервые слышат то, о чем я им рассказываю. Я перечислил новые уязвимости платформы х86, показал закладку и рассказал, как ее детектировать, ответил на множество вопросов. В конце нас поблагодарили, сказали, что тему нужно развивать в рамках специальных НИР, и на этом мы и расстались.
Эйфория улетучилась, когда по неофициальным каналам до нас дошла информация, что нам просто не захотели поверить. Однако это не охладило моего желания доказать свою правоту. Как мне тогда казалось, решение лежало на поверхности: нужно было самому написать такой программный модуль закладки. Мне бы не удалось поместить закладку во флеш-память ВМС, но в основной биос запихнуть ее я вполне мог. Я решил оснастить гипервизор модулем собственной безопасности для маскировки в памяти и на флеш-микросхеме, а также заблокировать запись во флеш-микросхему, где будет размещен код закладки, после чего удалить ее получится только путем выпаивания биоса и его перепрограммирования на внешнем программаторе.
Оставалось только определиться со "зловредной" функцией, которую следовало выполнять гипервизору. Я вспомнил утверждение одного из специалистов ФСБ о том, что им не страшны закладки, поскольку их системы отключены от глобальной Сети. Но информация из внешнего мира как-то должна попадать в эти защищенные локальные сети, хотя бы через одноразовые оптические диски. Таким образом, я пришел к очевидному выводу и решил анализировать входящий информационный поток в закладке средствами гипердрайвера, чтобы реализовать, так сказать, оружие судного дня, то есть использовать закладку для уничтожения вычислительной системы по внешней команде, передавая ее через входной информационный поток, стеганографически.
Просканировать информационный поток скрытно, без потери быстродействия, по зубам только аппаратуре виртуализации. В какой точке сканировать, тоже понятно: на буферах ввода/вывода дисковых систем и сетевого адаптера. Сканирование буферов ввода/вывода — плевая задача для аппаратуры виртуализации. Сказано — сделано! Такой гипердрайвер размером около 20 Кб был прописан в биос материнской платы и оснащен функцией защиты от обнаружения. Он блокировал попытки его перезаписи при обновлении биоса и выполнял единственную функцию: обнулял флеш-микросхему биоса при поступлении команды на уничтожение. Сама команда для простоты реализации была зашита в текстовый файл DOC-формата в тегах настройки.
Когда все было готово, руководство фирмы опять вышло на ФСБ с предложением посмотреть работу нашей собственной закладки и убедиться в том, что технологии виртуализации представляют реальную угрозу. Но посмотреть на нашу закладку в деле никто не захотел, с самого верха поступила команда (я так и не узнал, чье именно это было распоряжение) с нами больше не общаться. Главные борцы за информационную безопасность не захотели нас слушать. Тогда, уже практически ни на что не надеясь, фактически для очистки совести, мы попытались донести информацию о проблеме до пользователей систем информационной безопасности. Мы связались с "Газпромом", чтобы проинформировать специалистов компании о современных угрозах для распределенных систем управления технологическими процессами. Удалось организовать встречу с руководством службы корпоративной защиты и управления комплексными системами безопасности этой корпорации. Специально для них была подготовлена более наглядная версия закладки с упрощенным командным интерфейсом. Закладка активировалась после загрузки на компьютер текстового файла, содержимое которого включало два слова — "Газпром" и "стоп", — расположенных в произвольном порядке. После этого компьютер умирал, но не сразу, а с задержкой в пять минут. Естественно, можно было сделать задержку и на сутки, но тогда мы бы не уложились во время, отведенное для демонстрации. Сотрудники "Газпрома" посетовали на низкий уровень информационной безопасности и заявили, что это не их дело, поскольку они руководствуются требованиями и правилами, которые устанавливает ФСБ. Круг замкнулся, стало понятно, что эту монолитную систему "информационной безответственности" не пробить.
За три с лишним года, которые прошли с тех пор, я ни разу не слышал, чтобы кто-нибудь говорил об аппаратуре виртуализации как об инструменте проникновения в целевые системы. Парадокс? Не думаю. Специфика темы в том, что мы узнаем только о провальных технологиях. О технологиях, которые не обнаружены, мы не знаем, а их авторы, конечно, молчат.
Нужно учитывать, что надежное размещение закладок в биосе возможно только в заводских условиях. В условиях эксплуатации для этого придется ориентироваться на определенную модель материнской платы, а такие варианты не слишком интересны хакерам. Им нужна массовость, они работают, что называется, "по площадям". Однако существуют и те, кто атакует прицельно, "по-снайперски". Технологии размещения закладок в биосе, да еще и с активацией аппаратуры виртуализации, которая позволяет эффективно скрыть их, — это, конечно, удобный инструмент для таких "снайперов". Один раз их почти поймали, причем практически случайно. Думаю, сейчас этого сделать уже не удастся, да и ловить, как ты, наверное, понял, некому.
Угу. Пару новых вещей для себя узнал...
А кому счас легко...
"Гость 27.12.2011 15:05:45 причем пендосы о проблемме знают и уже года три (или больше? )как запрещено покупать компы для государственного сектора в китае"
PS:вот они "окопы в тылу врага", из которых будут производиться кибер-атаки
... иди туда, незнаю куда, возьми то, не знаю что ... (C) Русские народные сказки
To bios71: если чувак пишет слово "проблемма" с двумя м, то все остальные мысли тоже ОК.
Открытая книга: icbook.com.ua
проверочное слово куллер )))))))))
...ложки нет
![](http://nick-name.ru/forum3t6/Bishop%20Lab..gif)
Бгг ))
Открытая книга: icbook.com.ua
про статью в хакере:
чуть ниже:
Он что, потрошил биосы на модули и модули сравнивал? или всё же просто сравнил побайтно? или тупо размер сравнил (сам не верю, конечно). Похоже, что он образ биоса считывал на той же материнке, где он (биос) и был, соответственно, модуль в биосе не дал ему себя обнаружить. Догадайся он сразу программатором вооружиться - слил бы биос, да сравнил с тем, что скачал с сайта. Сразу бы всё и всплыло.
Продолжая тему...
Intel (да и другие тоже) вполне могли бы защитить свою прошивку для Блока менеджмента системы (ВМС), и, кроме того, поиметь свою армию подконтрольных ИМ компьютеров, в идеале - полмира.
И вот как:
- в чипсет зашивается уникальный серийный номер, достаточно длинный и сложный, который будет открытым ключом, и номер этот будет доступен (и в документации к плате, и на самом чипе, например, написан). Кроме того, в чипсет зашивается закрытый ключ, доступ к которому будет иметь только сам чипсет, и никаким образом он не может быть считан снаружи.
- Содержимое биоса в открытом виде имеется в компании интел. Она берёт открытый ключ, шифрует код, получает шифрованный образ биоса, который уже зашивается в какую-нибудь флешку (ну там типа 25mx....). Шифрование такое, что расшифровывается только закрытым ключом, который только внутри чипсета. BMC считывает шифрованный код из флешки, расшифровывает, если удачно - то работает, если нет - то уж как пожелают разработчики - либо неработающий AMT, либо (что даже лучше) неработающий компьютер.
Далее:
- в исходной прошивке для BMC уже встроить закладку или множество разных.
- На сайте поддержки вместо скачивания прошивок теперь нужно будет вводить серийник чипсета (ведь теперь прошивка к нему жёстко привязана), и в ответ получать шифрованный образ для прошивки.
- Когда что-то идет не так (ломается плата, какой-то мастер-ремонтник или супер-спец из хакера что-то заподозрит), и кто-то для определённого серийника качает прошивку - можно подстраховаться, и выдать чистую прошивку, без закладок, и пометить у себя, что далее будет выдаваться чистая прошивка (чистая = без закладок, но так же зашифрованная). При этом, если же выяснится, что кто-то (как в статье) сможет доказать наличие закладки - то можно легко приписать сей факт злобных китайским хакерам-инсайдерам, что работают на заводах-изготовителях в Китае, типа это они туда внедрили код, а НАШ код, с нашего сайта - смотрите, он девственно чист, хоть и зашифрован.
- можно сделать и по-другому: каждый раз в исходную прошивку (до шифровки) добавлять незначащий мусор, рандомно (код, который никогда и не выполнится, или просто набор цифр туда), а потом уже шифровать. В итоге каждая новая закачка будет иметь результатом новый образ для заливки в флешку, и каждый раз у них будет возможность или обновить код (включая закладки), или добавить-что-то, или что-то убрать. И выдавать всегда прошивку с закладками. Получится, что проверить плату, поменяв флешку с другой такой же платы, не получится, так же как и скачав новый образ с сайта - ведь он будет каждый раз разный. А обвинения в каких-то закладках просто игнорировать - ведь пока шифрование не вскрыто, ничего доказать-то толком нельзя будет. И только когда реально пойдет возня, тогда применить на сайте уже чистые образы.
Более того - можно сделать отдельно сервис получения прошивок для официальных сервис-центров, и отдельно - для всех остальных. И далее - для сервисцентров - чистые образы, для остальных - с закладками. А потом в случае каких-то заявлений писать - мол, ремонтируйте только у нас.
Кстати, никаких проблем нет, чтобы в шифрованном коде сделать закладку в виде бомбы замедленного действия - например, когда внутренний какой-то таймер в чипсете отсчитает срок гарантии - чипсет перестаёт работать. Или делает что-то ещё - например, просто включает в работу такой нужную закладку, которая, например, сливает все данные (или то, что нужно) в сеть куда-то, а после просто уничтожает материнку - например, подаёт на флешку вместо 3В все 12, ну и до кучи самоуничтожает чипсет (например, тем же способом), или ещё что-то такое. В итоге пару щелчков, отрубается БП, мы подходим смотрим - флешка сдохла, чипсет сдох, остальное цело. Данные на флешке уже не считать, да и материнку в утиль. Позже обнаруживаем, например, на интернет-шлюзе в логах (допустим, он у нас очень умный и всё просёк), что у нас утащили куда-то в Китай все данные с компа (ну или просто факт, что что-то утащили). Китайский IP-адрес вполне может принадлежать какому-нибудь зомби-компьютеру с той же системой, которая получив данные тут же передала их дальше и тоже сдохла по тому же сценарию. Так что раскопать куда и что и откуда ноги растут - практически нереально (если правильно поставить дело). В итоге появляются страшные рассказы о страшном вирусе, который живет в биосе компьютера, скачивает информацию, а потом уничтожает компьютер (а пытливые умы, проверив адрес, куда утекла инфа, еще и скажут, что этот вирус ещё и червь, и размножается по сети, постепенно уничтожая компы). Конечную же цель никто и никогда не узнает. Пока кто-то не сольёт информацию. Но пока что-то прояснится и появятся доказательства - все улики можно спокойно уничтожить, да и срок давности выйдет... тем более, что всегда найдут "козла отпущения" в виде какого-нибудь индуса-программера. Или китайца-хакера=рабочего-на-заводе.
P.S. я ничего не курил. нафантазировал конечно, много![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
P.P.S. это только беглый обзор, что мне взбрело в голову (а голова теперь просто пухнет, не мог не поделиться). Спасибо за то, что дочитали
т. 89276219324
apple_rom : "многа букаф" - да но к сожалению и много непонятных , лично мне понятий , в особенности о "виртуализации" , извините , отстал![](/images/smiles/eusa_doh.gif)
Но я ни разу не понял о способе обновления BIOSов - шил ли он их прямо на плате , доступными средсвами или на програматоре?
А я , лично , считаю - что мы с Вами и с россиянами вместе , крупно проиграли в сфере ИТ !
И всецело от них зависимы - как и от разработчиков в сфере ИТ , так их "глобальных производителей".
Кстати , как на уровне "железа" (HW) , так и на уровне системного програмного обезпечения(SW).
Не факт , что многие бяки не заложены еще изначально на стадии проектирования - уже давно каждый проц имеет свой уникальный номер + МВ -уникальный МАС и програмно доступный № HDD и т.д. и т.п. (HW)
Теперь по (SW) - почему такие жесткие условия , с прессингом на суверенном государственном уровне , тем более , что многие SW уже настолько переработаны/ улучшены /и модернизированы нашимы умельцами от ИТ , что не имеют уже даже иногда визуального сходства с убогими разрекламироваными брендами - ну кроме подачи в суд за плагиат или нарушение патентных прав
Ответ по (SW) - тот же - желают знать совокупность № (SW) , установленных на Вашем ПК !
Хотя и ети "улутшители" (SW) - тоже грешат иногда - урезая Ваши права администрирования и надавая права удаленного доступа - ну все сборки разные - и это уже отдельная Тема.
Кстати , к чему это я все ... , а к тому , что 3-я мировая может быть тихой и нами не контролируемой -
ну где-то свет пропадет , ну где-то что-то взорвется , ну где-то системы контроля заткнутся и ...
Все приведенные предположения являются моим личным мнением , усиленным 1-л флягой хорошего пива 1-й приватной броварни и посему подлежат обсуждению , а не истине .
ваще-т она давно в разгаре...
...ложки нет
![](http://nick-name.ru/forum3t6/Bishop%20Lab..gif)
Её можно назвать "Информационной Войной"
Я тролль, лжец и девственник, а ещё мне 20 лет.
она всеобъемлющая (имхо)![:(](http://bios.rom.by/img/smiles/icon_sad.gif)
А кто-нибудь вкурсе, человек-то вообще написавший статью жив?![:D](http://bios.rom.by/img/smiles/icon_biggrin.gif)
![:D](http://bios.rom.by/img/smiles/icon_biggrin.gif)
Мне то проще, у меня справка есть %-)
могу писать что хочу, не переходя определённых границ
Мне даже бумажку выдали, с печатью, что всем моим рассказам и теориям можно верить
А вот в статье человека настолько подробно изложены особенности, что за такое могут либо закрыть до конца жизни, либо просто убрать, мы то знаем откуда ветер дует.
По очень настоятельной просьбе трудящихся - ориджин удалён и больше не появится. Гарантировать же отсутствие публикации статей со своей стороны не могу :P
а никому не приходило в голову, что китайцы могут шить эти платы с закладками по заказу ....и для каждой страны своя закладка![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
ничего-же не стоит на производстве лить тот или иной тип биоса в ту или иную серию выпуска![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
проплаченная той-же СБ
к тому-же не факт, что модуль писали китайцы....мог и Вася Пупкин и Джон Смит какой-нибудь
а конечному потребителю предоставляется управляющее ПО..и всё![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
Либо нечему гореть, либо нечем поджечь!
Дал почитать статью знакомому из ... ну вы поняли. Сказал, что их компы к интернету не подключены, типа своя сеть.
Статья перекликается с vmgu.ru/articles/red-pill-virtualization-security vmgu.ru/articles/tpm-virtualization-security и vmgu.ru/articles/hardware-virtualization-antiviruses
Правда сам уровень изложения провоцирует сомнения в профессиональности автора этой статьи. Особенно подозрительно, что не была названа модель матплаты. Для проверки его слов этого бы хватило с излишком...
Друзья, прежде, чем хаять написанное другим, не поленитесь изучить технологию, исследуемую им. Человек этот хороший специалист, прочитавший огромное количество спецификаций. И очень адекватен (насколько, конечно, можно быть адекватным после копания на таком низком уровне
).
Кто-то тут писал про побайтовое сравнение BIOS. В статье об этом сказано, так что читайте внимательнее.
В прошиваемом с пользовательской точки зрения BIOS НЕ содержится прошивки блока BMC. Дополнительные зашифрованные образы привлекают внимание и провоцируют кучу новых вопросов. Зачем это нужно. При этом не забывайте про то, что современные flash-микросхемы позволяют иметь несколько областей, некоторые невидимые. Невидимость их при этом такова, что даже программатором их области без определённых усилий не считать.
Язык, которым изложена статья - специально для "Хакера". Вы другие статьи посмотрите - стиль журнала таков.
Лично у меня в статье вызывает отрицательные эмоции только одно - то, что человек что-то сделал, показал и тут же по его мнению надо срочно решить проблему. То есть что? Просто запретить поставку новых материнских плат? И вообще сколько таких "что-то сделавших гениальное"? На каждого надо реагировать? И на того мальчика, который попросил миллион на ОС у президента?
Так что всего надо добиваться. И, кстати, насколько, известно, данная проблема уже исследуется где надо и он в ней принимает активное участие. Но, как уже было сказано выше - мы слишком сильно проиграли и теперь зависим от "них", чтобы что-то диктовать.
"мы слишком сильно проиграли и теперь зависим от "них", чтобы что-то диктовать"
Знаем мы как интеловские биосы шьются ... А на заводе - без проблем - вся документация под рукой.
Понимание причин своей слабости и борьба с ними позволяет стать сильнее. Но так поступают умные\адекватные люди , не мы...
У нас сотруднику СБ проще тебя обвинить в параное чем признать, что кто-то за него сделал его работу , а он, сотрудник СБ, даже не может понять о чем идет речь.
У нас проще продать нефти и купить за $40 материнку, чем организовать их производство (не говоря уже о производстве МС).
Ну а по поводу BMC - что тут удивительного ? Ну работает он когда проц стоит. Ну позволяет исполнять все что ему в флешку загонишь. Только попробуй загони на своем программаторе
Основная идея - сделай свой гипервизор, который будет хостом, зашей его с криптованием в скрытый от глаз блок и вуаля ! Не заметить , не проверить !
Даже если автор нафантазировал , теоретически такое возможно.
" - Скажите государю, что у англичан ружья кирпичом не чистят: пусть что бы и у нас не чистили, а то, храни Бог войны, они стрелять не годятся – внятно выговорил Левша, перекрестился и умер. …государю так и не сказали, и чистка всё продолжалась до самой Крымской компании..."
"у англичан ружья кирпичом не чистят" - да , элемент шпионажа упрощается до предела
"дай мне твой ноутбук на пол часа и я буду знать что на нем творится всю оставшуюся его жизнь" - главное продолжать себя тешить знанием "протоколов и сетей" и "своими сетями"
ведь все сетевое оборудование на "своём силиконе", а не на любезно предоставленом Интелом,
или раскажите как долго превратить ноут - в точку доступа в Инет чтобы подать единственную команду - "счёлк" по "локальной сети"
"не долго мучалась старушка" (С)
inopressa.ru/article/21Mar2012/corriere/cyber1.html
"...даже когда аппаратура не подключена к Сети или вообще выключена. Крайне полезная опция: можно контролировать радарную сеть противника в случае нанесения бомбового удара по его объектам", - пишет автор статьи.
Однако применение такого оружия может привести к незапланированным последствиям: компьютерный вирус способен разрушить компьютерные системы больниц, например, или аппаратуры, обеспечивающей функционирование электростанции
"
... иди туда, незнаю куда, возьми то, не знаю что ... (C) Русские народные сказки
Если в Росии Матушке такой по__изм не прекратится, то у всего мира етот синдром по отношению к ней будет продолжаться до момента возникновения нового государства, на территории о который идет речь. 8-Х
я тут кстати вспомнил, что наверное за год до даты парвого поста Романом в этом треде, я видел видео ролик, про как раз такого рода информацию: типа какой то индийский чувак, обнаружил что из компа ис ходит трафик, когда сам комп выключен и он типа предупреждает всех об этой уюазвимости, помоему этот ролик вышел на первое апреля...поэтому никто в серьез не воспринял. Не думаю, что я этот ролик смогу найти, но попробую.
заметил одну закономерность: автор с разной степенью настроения и доброжелательности отвечает на любые комменты, кроме тех, где просят хотя бы опубликовать модель платы
ну вот и дожили до обнаружения аппаратных бакдыр:
xakep.ru/post/58757/
В кривых руках и коврик глючит.
несколько лет назад моя командировка в один НИИ была смещена на 2 недели из-за разбора "полетов" опытных образцов неких блоков управления, в которые были поставлены импортные чипы, причем прогон в стенах опытного цеха не предвещал ничего плохого, а при полевых испытаниях все блоки вышли из строя одномоментно.
так что этими "бэкдорами" грешат все ведущие производители продукции двойного назначения, не только китайцы
Научные круги не смогли пройти мимо бирусной темы! Нано-шоу под названием «Накатай дисер — стань кандидатом в доктора!».
Уже первый коммент попадает не в бровь, а в пах: Это нам прямо показывает, насколько нам нужны процессоры российского производства.
Открытая книга: icbook.com.ua
по-моему - это плагиат. Или я что-то не понимаю, или там взяли чужие мысли, и чужой опыт, и выдали за свои исследования.
т. 89276219324
Это наука.
Открытая книга: icbook.com.ua
Добавил картинки из оригинала статьи.
wiki.rom.by - здесь специально собраны ответы на большинство вопросов!
Когда другие уже закончили, процессоры Intel (R) Pentium (R) продолжают работать, работать и работать...
Разовью тему паранойи немного.
Например, я не хочу чтобы что-то куда-то утекло. Я купил новый ноут, отключил вай-фай, никогда не подключаю к сетке...
1. Вай-фай ноутбуков. Биос вполне может использовать его даже если пользователь нажал "отключить". И, естественно, лампочка гореть не будет.
2. Сливать инфу - можно в зашифрованном виде в окружающие вай фай роутеры даже если их сети запаролены. Т.е. если в них стоит похожая система, которая способна обмениваться "втихаря" с теми системами, которые имеют нужный ключ и знают как. Т.о. информация таким "чёрным ходом" может путешествовать по вай-фаям пока не доберётся до нормального выхода в интернет.
3. И даже там - передача будет идти не явными пакетами, а среди шума настроек, корректировок "сломанных пакетов". И, опять же - оборудование которое "в теме" - будет инфу передавать дальше. А то, что "не в теме" - не отличит эту инфу от обычных тех. данных.
4. Скорость и гарантированность такого "тёмного интернета", конечно, будет небольшой. Но за пару дней вполне можно передать и получить некоторое количество инфы к и от любого компа, "умеющего" данную технологию.
5. Если вай-фая нет и сети нет и вообще. Тогда сливать инфу можно в технические области HD, CD и других носителей. Опять же, для оборудования "не в теме" - это будет просто шум за пределами размеченного пространства носителя. А "своё" оборудование эту инфу может извлекать и распространять. Т.о. эту инфу - тоже можно "распространять", только, конечно, гораздо медленнее чем по сетям. Но суть в том - что отсутствие интернета не спасает. Когда-нибудь она тоже доходит до компа с сетью.
P.S. паранойя дело такое, которое нельзя воспринимать особо серьёзно
)
)
P.P.S. вывод один - хочешь секьюрный комп - сделай его сам
securitylab.ru/contest/430512.php
интересны комментарии![:)](http://bios.rom.by/img/smiles/icon_smile.gif)
"у нас все хорошо!!! мы и так все знаем!!! не лезте в наши железяки!! сами вы лохи !!" и пр.![:(](http://bios.rom.by/img/smiles/icon_sad.gif)
... иди туда, незнаю куда, возьми то, не знаю что ... (C) Русские народные сказки
Забавная статья. Только немного не понял: зачем какая-то виртуализация для HPC? С одной стороны такая штука позволить быдлокодерам и пионерам писать софт, с другой - просёр производительности. А в HPC как раз именно производительность и нужна.. Как работает эта вся аццки сложная и замухрённая байда так и не понял...
Что касается безопасности от железа: при поставки в страну оборудование должно проходить сертификацию. Условия сертификации выставляет потребитель. Не хотите запрещённых блоков шифрования? Так требуйте тех-документации. Никаких встроенных флешей. Никакого шифрования. Всё это по заказу и на территории страны-заказчика. Да мы не можем производить процессоры и чипсеты, но мы можем контролировать всё остальное. В конце-концов саму плату и незначительную периферию мы изготовить можем, как и спроектировать её в нашем КБ, пусть хоть и с их специалистами. Но всё это убивает лоббирование в определённых кругах. Проблемы ФСБ мне не знакомы. А вот то, что компы сейчас есть везде, это стрёмно при таком подходе. Сливать всю инфу нереально - слишком большой поток будет и он не пройдёт незамеченным. Особенно, когда система не должна интенсивно общаться с внешним миром. А вот замочить HPC кластер, который стоит огромных денег, в самый неподходящий момент - легко. Особенно если учесть, что такое оборудование поставляется под заказ, конкретному потребителю.
Раньше мне казались смешными фильмы в которых управляют светофорами. А теперь стрёмно как-то. Если есть система управления, которая централизована, хотя бы локально, то лёгкая команда из "центра" парализует всё движение. Для малых городов может это и не так смертельно, но вот крупные, и особенно столица столкнуться с жутким коллапсом. А теперь к этому добавим смерть сотовой связи и сбой на электростанциях (в памяти ещё свежо), и вполне получится такой локальный конец мира, с реками фекалий на улицах (из-за остановившихся насосов), отсутствием света, воды, продовольствия и невозможностью свалить из этого ада. А руководство будет грызть ногти т.к. никогда о таком не думало, и способностями разрулить такую катастрофу не обладает. А самое обидное, что вся проблема не в технологиях, а в организации.
слишком сгущаете краски. На железной дороге, например, нет таких систем, что управляли бы системой сигнализации и блокировки (стрелками, светофорами и прочим) - есть только железная автоматика. Опасность в этом случае (в данный момент времени) в том, что тенденция идёт к замене старых модулей, элементной базы (кстати, на 90% еще советской разработки) на новые элементы и модули - а они на порядок менее надёжны. Специалисты, непосредственно ремонтирующие и обслуживающие автоматику СЦБ, уже бьют тревогу, но всем пофигу. Ибо откаты решают, особенно на железной дороге.
В других областях - аналогично, деньги правят миром. На безопасность всем начхать. Сейчас пока не стоит бояться "конца света", но в будущем это произойдёт. Точно произойдёт, если ничего уже сейчас не изменится.
т. 89276219324
Отправить комментарий