Китайские закладки: непридуманная история о виртуализации, безопасности и шпионах.

  • Автор темы painter
  • Дата начала
P

painter

Guest
Я не профессионал в области информационной безопасности, моя область интересов — это высокопроизводительные вычислительные комплексы. В тему ИБ я пришел совершенно случайно, и именно об этом дальше пойдет речь. Думаю, эта невыдуманная история гораздо лучше осветит проблемы, связанные с аппаратурой виртуализации, нежели сухое изложение фактов.
Еще до официального анонса новых процессоров 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.
 
OP
P

painter

Guest
Применение иностранных криптографических средств с длиной ключа более 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-блока, причем хост, виртуализирующий режим системного менеджмента, контролирует основной хост как задачу, но только в точках вызова прерываний системного менеджмента.
 
OP
P

painter

Guest
Эта совокупность косвенных фактов говорит о том, аппаратура виртуализации Intel, вероятно, имеет механизм контроля множественных вторичных хостов, управляемых корневым хостом, хотя этот механизм нигде не описан. Кроме того, моя система именно так и работала, и другого объяснения практически незаметным действиям корневого гипервизора у меня до сих пор нет. Стало еще интереснее: похоже, кто-то имел доступ к этим недокументированным возможностям и использовал их на практике.
Примерно за полгода до окончания сотрудничества с "Крафтвеем" я занял позицию пассивного наблюдателя, продолжая тем не менее регулярно запускать свою систему на новых партиях серийных материнских плат из Китая и новых сэмплах. На сэмплах все продолжало стабильно работать. Когда я переходил к китайским платам, в системе возникали все новые и новые чудеса. Было похоже, что коллеги из-за рубежа активно улучшали работу своего корневого гипервизора. Последние подозрительные партии плат вели себя практически нормально, то есть первый запуск моего гипердрайвера приводил к перезагрузке системы во время старта ОС, но все последующие запуски гипердрайвера и ОС проходили без сучка и задоринки. В конце концов случилось то, чего я давно ожидал: поступила новая партия серийных материнских плат, при использовании которых мой гипердрайвер вообще не зависал. Я уже начал сомневаться в своих параноидальных подозрениях, однако новый случай укрепил их.
Надо заметить, что фирма Intel активно совершенствует аппаратуру виртуализации. Если первая ревизия аппаратуры, с которой я начал работать, имела номер 7, то описываемая ситуация произошла на 11-й ревизии, то есть приблизительно за год ревизия обновлялась дважды (ревизии почему-то имеют только нечетные номера). Так вот, на ревизии с номером 11 условия выходов в хост по состоянию задачи для аппаратуры виртуализации существенно расширились, в соответствии с чем в VMCB-блоке даже было введено новое управляющее поле. Когда появились сэмпловые процессоры с этой ревизией аппаратуры виртуализации, мне захотелось испытать новые возможности на практике. Я усовершенствовал гипердрайвер за счет новых возможностей 11-й ревизии аппаратуры виртуализации, установил сэмпловый процессор на серийную плату из Китая, в которой все уже работало без замечаний, и начал отладку. Новые возможности аппаратуры никак себя не проявили, и я опять впал в прострацию, греша на сэмпловый процессор и документацию. Через некоторое время материнская плата потребовалась для другой задачи, и я, возобновив эксперименты, для подстраховки переставил процессоры с 11-й ревизией аппаратуры виртуализации на канадский сэмпл. Каково же было мое удивление, когда на этом сэмпле все заработало!
Сначала я подумал, что где-то накосячил с серийной платой, поскольку новые выходы в хост не имели к материнской плате ну совершенно никакого отношения, это чисто процессорная функция. Для проверки я переставил сэмпловый процессор на серийную плату, и все опять перестало работать. Значит, я ничего не накосячил, а проблема крылась в том, что материнская плата каким-то образом влияла на новые возможности аппаратуры виртуализации процессора. С учетом моих подозрений напрашивался единственный вывод — нелегальный корневой хост коллег из-за рубежа, прошитый в флеш-памяти материнской платы, не знал о новой ревизии аппаратуры виртуализации. Когда эта неизвестная ему аппаратура начинала работать, он переставал корректно пропускать выходы из состояния задачи в мой вторичный хост через собственный обработчик событий. Уже зная, как бороться с этой напастью, я залил на серийную плату прошивку для блока ВМС с сайта Intel, включил систему в уверенности, что все сразу заработает, и снова выпадал в осадок, так как зависания остались. Это было что-то новенькое.
Согласно моей теории, нелегальный гипервизор обнаглел и уверился в своей неуязвимости. Видимо, его авторы посчитали, что этап обкатки их детище прошло и маскировать неотлаженное ПО под сбой биоса больше не нужно. После того как была включена функция защиты кода инициализации от перезаписи во флеш-памяти, закладка стала практически неудалимой.
Уверенности в своей правоте у меня не было, нужны были контрольные эксперименты. Пришлось изобретать собственный метод для обнаружения аппаратного гипервизора. Потом, правда, оказалось, что я изобрел велосипед. Метод позволял контролировать время выполнения системных команд, требующих обязательной эмуляции в хосте гипервизора. В качестве таймера я использовал циклический счетчик фреймов в аппаратуре USB-контроллера, а программу написал для реального режима работы, чтобы минимизировать побочные и неконтролируемые прерывания, которые маскировали истинное время выполнения системных команд. Первую проверку я провел для чистой системы на базе сэмпловых материнских плат из Канады.



Время выполнения, указанное на фото, — это некоторое условное значение, приблизительно соответствующее такту процессора. Затем я запустил тот же тест на серийной материнской плате и убедился в своих параноидальных предположениях — циклы выполнения команд существенно удлинились.



То есть во флеш-памяти блока ВМС серверных плат из Китая, выпускаемых под лейблом Intel, имелся установленный на этапе производства недекларированный программный модуль, работающий как хост гипервизора. Осталось убедить в этом окружающих. Первым делом я вышел на российского представителя Intel. Это было совсем нетрудно, поскольку сотрудники российского офиса часто появлялись в "Крафтвее".
Я все рассказал и показал, однако не был уверен, что технический специалист все понял. Эти так называемые технические специалисты по уровню своей компетенции мало отличаются от менеджеров. Однако он обещал доложить обо всем руководству. Не знаю, сделал ли он это, но никакой ответной реакции от Intel так и не последовало, все ушло как в песок. Работа в "Крафтвее" к тому времени завершилась, и я начал новый проект в фирме, связанной с системами информационной безопасности. Руководитель этой фирмы, с которым я поделился своими "открытиями", принял мои слова всерьез. В связи с этим было решено выйти на руководство Центра защиты информации и спецсвязи ФСБ. Эта структура в составе ФСБ занимается обеспечением информационной безопасности в стране и регулирует деятельность государственных и коммерческих организаций, которые имеют отношение к защите информации. Она также регламентирует меры по защите информации для госструктур и коммерческих фирм, обрабатывающих секретную и конфиденциальную информацию. Фирма, в которой я в то время работал, поддерживала с Центром официальные контакты, чтобы сертифицировать и лицензировать свои коммерческие проекты, поэтому организовать встречу на уровне специалистов было достаточно просто. Предполагалось, что эксперты Центра сообщат о своем мнении руководству, и если после этого руководство сочтет нужным выслушать нас, то следующим этапом будет встреча на более высоком уровне.
Встреча состоялась, я рассказал и показал все, что удалось выяснить, затем продемонстрировал наличие нелегального программного модуля на примерах плат из Канады и Китая. Кстати, тогда я в первый раз услышал и профессиональный термин "закладка", обозначающий такой модуль. Когда разговор зашел про ВМС, в глазах у коллег из Центра появилось непонимание. Пришлось проводить ликбез. По ходу дела выяснилось, что они даже не подозревали о существовании специального микропроцессора в южном мосте с выходом на сетевой адаптер и о наличии в блоке ВМС криптографического модуля, нарушающего российское законодательство. В заключение мы совершенно неожиданно услышали, что эта модель угроз уже исследована, в их отношении применяется комплекс мер противодействия, и вообще, нам закладки не страшны, поскольку наши системы не имеют выхода в интернет.
Дальнейшие расспросы ни к чему не привели, все упиралось в секретность, типа, мы умные и суперграмотные, а вам ни о чем знать не положено. Однако я сильно сомневался в их технической грамотности, поскольку они просто не поняли большую часть того, что я рассказал и показал. Расстались на том, что они доложат своему начальству, а уж оно примет решение о дальнейших действиях.
Чуть позже я узнал, что это за "секретный метод" обнаружения программ хоста. Причем узнал совершенно случайно, во время переговоров на фирме — лицензиате Центра, уполномоченной проверять биос на закладки. Технические специалисты этой фирмы, проводящие исследования биоса, рассказали, что его программные модули, использующие аппаратуру виртуализации, надо искать по сигнатурам команд виртуализации. Действительно, команды процессора для аппаратуры виртуализации содержат три-четыре байта и в программном коде, но кто сказал, что этот программный код они обнаружат в незашифрованном виде на флеш-микросхеме? Как они отсканируют этот код в оперативной памяти, если эти области памяти защищены аппаратно от просмотра?
В общем, результат первой встречи оставил неприятный осадок, и я в самом мрачном настроении ожидал развития событий. Месяца через полтора нас пригласили уже в сам Центр защиты информации и спецсвязи, чтобы мы продемонстрировали обнаруженную нами закладку. На этот раз послушать нас собрались не рядовые сотрудники, а руководители и ведущие специалисты (по крайней мере, так они представились). Встреча превратилась в лекцию, меня внимательно слушали практически три часа, было видно, что они впервые слышат то, о чем я им рассказываю. Я перечислил новые уязвимости платформы х86, показал закладку и рассказал, как ее детектировать, ответил на множество вопросов. В конце нас поблагодарили, сказали, что тему нужно развивать в рамках специальных НИР, и на этом мы и расстались.
 
OP
P

painter

Guest
Эйфория улетучилась, когда по неофициальным каналам до нас дошла информация, что нам просто не захотели поверить. Однако это не охладило моего желания доказать свою правоту. Как мне тогда казалось, решение лежало на поверхности: нужно было самому написать такой программный модуль закладки. Мне бы не удалось поместить закладку во флеш-память ВМС, но в основной биос запихнуть ее я вполне мог. Я решил оснастить гипервизор модулем собственной безопасности для маскировки в памяти и на флеш-микросхеме, а также заблокировать запись во флеш-микросхему, где будет размещен код закладки, после чего удалить ее получится только путем выпаивания биоса и его перепрограммирования на внешнем программаторе.
Оставалось только определиться со "зловредной" функцией, которую следовало выполнять гипервизору. Я вспомнил утверждение одного из специалистов ФСБ о том, что им не страшны закладки, поскольку их системы отключены от глобальной Сети. Но информация из внешнего мира как-то должна попадать в эти защищенные локальные сети, хотя бы через одноразовые оптические диски. Таким образом, я пришел к очевидному выводу и решил анализировать входящий информационный поток в закладке средствами гипердрайвера, чтобы реализовать, так сказать, оружие судного дня, то есть использовать закладку для уничтожения вычислительной системы по внешней команде, передавая ее через входной информационный поток, стеганографически.
Просканировать информационный поток скрытно, без потери быстродействия, по зубам только аппаратуре виртуализации. В какой точке сканировать, тоже понятно: на буферах ввода/вывода дисковых систем и сетевого адаптера. Сканирование буферов ввода/вывода — плевая задача для аппаратуры виртуализации. Сказано — сделано! Такой гипердрайвер размером около 20 Кб был прописан в биос материнской платы и оснащен функцией защиты от обнаружения. Он блокировал попытки его перезаписи при обновлении биоса и выполнял единственную функцию: обнулял флеш-микросхему биоса при поступлении команды на уничтожение. Сама команда для простоты реализации была зашита в текстовый файл DOC-формата в тегах настройки.
Когда все было готово, руководство фирмы опять вышло на ФСБ с предложением посмотреть работу нашей собственной закладки и убедиться в том, что технологии виртуализации представляют реальную угрозу. Но посмотреть на нашу закладку в деле никто не захотел, с самого верха поступила команда (я так и не узнал, чье именно это было распоряжение) с нами больше не общаться. Главные борцы за информационную безопасность не захотели нас слушать. Тогда, уже практически ни на что не надеясь, фактически для очистки совести, мы попытались донести информацию о проблеме до пользователей систем информационной безопасности. Мы связались с "Газпромом", чтобы проинформировать специалистов компании о современных угрозах для распределенных систем управления технологическими процессами. Удалось организовать встречу с руководством службы корпоративной защиты и управления комплексными системами безопасности этой корпорации. Специально для них была подготовлена более наглядная версия закладки с упрощенным командным интерфейсом. Закладка активировалась после загрузки на компьютер текстового файла, содержимое которого включало два слова — "Газпром" и "стоп", — расположенных в произвольном порядке. После этого компьютер умирал, но не сразу, а с задержкой в пять минут. Естественно, можно было сделать задержку и на сутки, но тогда мы бы не уложились во время, отведенное для демонстрации. Сотрудники "Газпрома" посетовали на низкий уровень информационной безопасности и заявили, что это не их дело, поскольку они руководствуются требованиями и правилами, которые устанавливает ФСБ. Круг замкнулся, стало понятно, что эту монолитную систему "информационной безответственности" не пробить.
За три с лишним года, которые прошли с тех пор, я ни разу не слышал, чтобы кто-нибудь говорил об аппаратуре виртуализации как об инструменте проникновения в целевые системы. Парадокс? Не думаю. Специфика темы в том, что мы узнаем только о провальных технологиях. О технологиях, которые не обнаружены, мы не знаем, а их авторы, конечно, молчат.
Нужно учитывать, что надежное размещение закладок в биосе возможно только в заводских условиях. В условиях эксплуатации для этого придется ориентироваться на определенную модель материнской платы, а такие варианты не слишком интересны хакерам. Им нужна массовость, они работают, что называется, "по площадям". Однако существуют и те, кто атакует прицельно, "по-снайперски". Технологии размещения закладок в биосе, да еще и с активацией аппаратуры виртуализации, которая позволяет эффективно скрыть их, — это, конечно, удобный инструмент для таких "снайперов". Один раз их почти поймали, причем практически случайно. Думаю, сейчас этого сделать уже не удастся, да и ловить, как ты, наверное, понял, некому.


© http://www.xakep.ru
 
OP
Ф

Фокс Малдер

Guest
:617b81f1dd649ea9c20
 
!Chip

!Chip

Активный участник
Регистрация
27.02.2008
Сообщения
42 382
Реакции
2 255
Баллы
113
Осилил, странно былобы еслиб этого небыло
 
Танкер

Танкер

LPD: Танкер
Регистрация
15.04.2007
Сообщения
13 834
Реакции
32
Баллы
48
OP
P

painter

Guest
Китайские закладки. Голый король

Автор: R_T_T
30 сентября, 2012


В конце ноября прошлого года наткнулся на статью в Комсомольской правде «В Россию поставляют ноутбуки-шпионы?», речь в ней шла о защищенном ноутбуке Getac А790 Тайваньской компании Getac Technology.
На рисунке показан этот «красавец»
В статье говорилось о наличии на этом компьютере предустановленной программе Computrace LoJack, разработанной канадской фирмой Absolute Software. Утверждалось, что программа приходит в активированном виде и сразу пытается подключиться к серверам в Канаде. Кроме того фирма производитель стимулировала продавцов техники в России для предоставления ей форвардной информации о заказчиках данных защищенных компьютеров.
В заключении делался однозначный вывод о целевой акции потенциального противника и утверждалось, что данные компьютеры широко применяются в Российских вооруженных силах….
Прочитав статью в «Комсомолке» сразу вспомнил о материале двухлетней давности посвященной этой же программе на сайте rom.by «BIOS-ный троян от Absolute Software». Там описывался механизм размещения и работы в БИОС программного модуля для сетевой активации программ удаленного управления и мониторинга вычислительной системой. Так что тема не нова, просто даже в голову не могло прийти, что такую «паленую» технику закупают военные.
Заинтересовавшись зашел на сайт разработчика программы и читаю, - программа посылает данные геолокации на удаленный сервер, имеет возможности удаленной блокировки компьютера и стирания информации с дисков по командам с серверов фирмы Absolute Software. Кроме этого возможен полный цикл удаленного менеджмента ноутбука начиная от обновления БИОС, установки и удаления любых программ и кончая переустановкой ОС. Официальное предназначение программы - предотвращение утечки данных и использования ноутбука в случае его кражи или потери.
Программная часть системы Computrace LoJack,состоит из двух модулей, первый прописывается в БИОС на этапе производства компьютера, а второй подгружается из сети в случае, если владелец компьютера решает воспользоваться программой Computrace LoJack. Причем этот сервис не бесплатен, нужно платить порядка $50 за годовую подписку на услуги фирмы Absolute Software.
Альтруизм не свойственен бизнесу, бесплатная активация платного сервиса говорит о том, что получаемая информация оправдывает финансовые затраты (бесплатно не значит «даром»), кто платит за информацию думаю тоже понятно…
Взглянув на изображение защищенного ноутбука Getac А790 сразу вспомнился увиденный на площадке одного из заказчиков аналогичный серый ящик, он был задвинут в угол, весь в пыли, и похоже давно не использовался. Захотелось «пощупать» машинку самому и в следующий приход к заказчику сразу направился к этому пыльному ящику.
Открываю и не веру своим глазам, это не ноутбук Getac А790, это судя по шильдику на лицевой панели Российский компьютер МВК-2, более того, на этикетке все данные о модели и производителе, где написано, что это изделие произведено фирмой «ИнфоПро» в 2011году. Кроме этого на ноутбуке красуется голографический стикер спецпроверки.
Для незнающих поясню, спецпроверка и специсследования это необходимые процедуры (и очень дорогостоящие) для того, чтобы техника появилась на секретных объектах и в войсках. После этих проверок техника считается безопасной с точки зрения утечек секретной и конфиденциальной информации и может использоваться на секретных и защищенных объектах.
Ящик заинтриговал и не включить его я просто не смог, руки сами потянулись к клавиатуре, включаю, на экране появляется заставка инициализации и сразу все становится на свои места, - классический вариант «бизнеса по русски».
Фирма ИнфоПро даже не удосужилась переписать в БИОС собственную заставку инициализации и на российском компьютере МВК -2 гордо высвечивается название: Getac А790.
Я не поленился и заснял это «чудо» на мобильник, вот ОНО.
Сразу стало еще интереснее, МВК-2 это вам не какой-то там «левый» Getac А790. МВК-2 это Мобильный Вычислительный Комплекс,- основной защищенный компьютер Вооруженных Сил России, отечественная разработка, в войсках их тысячи, если не десятки тысяч…
Ну, по поводу отечественной разработки и отечественной сборки мне стало все сразу понятно, а вот имеется ли там после специсследований и спецпроверки (о чем свидейтельствовал голографический стикер) программы фирмы Absolute Software мне было интересно. Воспользовавшись свободным временем, даже не спрашивая заказчика (каюсь, грешен) просканировал БИОС на наличие сигнатуры программы Computrace LoJack, которую взял из статьи на сайте rom.by. И даже не удивился, когда их там обнаружил. Инженеры ИнфоПро из БИОС своих компьютеров ничего не удалили, а все специальные исследования не выявили наличие в МВК-2 этой официальной «закладки».
Тупизна производителя поражала, есть официальные программы для сборки/разборки БИОС, можно любой модуль из БИОС удалить, либо вставить без проблем, что мешало специалистам ИнфоПро вставить собственную заставку для экрана и вырезать скандальный модуль из БИОС? Эту процедуру освоили все отечественные сборщики, она не уникальна…
К сожалению машина не была подключена ни к Интернету ни к локальной сети, поэтому не удалось посмотреть сетевой активности на IP адресах, чтобы выяснить в каком состоянии находится сервис фирмы Absolute Software.
Единственное, что сделал, это сфотографировал экраны диспетчера устройств в программе Sandra, чтобы на досуге разобраться с аппаратурой внутри мобильного вычислительного комплекса (именно так официально именуется МВК-2). Было ощущение, что кто-то $50 баксов за активацию программы Computrace LoJack платит не просто так, в этой штуковине есть еще закладки.
Cразу обратил внимание на сетевой чип Broadcom установленный в МВК-2. По кодам производителя вышел на конкретную микросхему Broadcom BCM 5752.
Вот это фото.

Собственно у Broadcom целая линейка чипов ВСМ 57хх, кроме того она выпускает и платы расширения с этими чипами на борту. Чипы этого семейства засветились на множестве хакерских сайтов, журнал Хакер о нем писал в прошлом году как минимум дважды. Была статья «Руткит в сетевухе: фантазии программиста о создании непобедимого руткита» и более конкретная новость со ссылкой на успешный эксплоит: «Руткит в сетевой карте» французского исследователя.
В этом чипе имеется собственная флеш-память (можно подключить и дополнительно внешнюю флоеш-память на выделенном SPI интерфейсе), собственная ОП, собственный RISC процессор.
Вот официальная блок схема этой микросхемы:

 
OP
P

painter

Guest
Фактически это компьютер в компьютере, причем программы, прошитые внутри его флеш-памяти, выполняются как на собственном встроенном RISC процессоре, так и на центральном процессоре вычислительной установки, во время инициализации системы (расширенный БИОС на периферийных контроллерах).
Согласно документации внутри микросхемы находится всего 16Кбайт флеш-памяти, но на внешнем интерфейсе можно разместить дополнительно до 8Мбайт программ и данных. Представляете сколько туда можно «напихать» всего?
В связке с программой Computrace LoJack такой сетевой чип может все, что угодно… Узнать содержимое флеш-памяти этого чипа можно только на инструментальном стенде, да и то не факт, что это получится. У меня опять начался приступ шпиономании, но уже не виртуальной, а сетевой.
Пристально вглядываюсь в блок-схему чипа, можно сказать сверлю ее взглядом, и наконец, до меня доходит, - TPM Security Core – это же ТРМ модуль!, смотрю в документацию и точно, именно в чипе ВСМ 5752 из этого семейства имеется встроенный ТРМ модуль стандарта 1.2, подключенный к LPC интерфейсу.
Наличие ТРМ модуля в Российском защищенном компьютере это нонсенс, законодательно запрещено даже ввозить технику с такими модулями, единственный вариант, чип может присутствовать на плате, но должен быть физически отключен на этапе производства и быть в неработоспособном состоянии.
Формально запрет основан на использовании в этих ТРМ модулях криптографических алгоритмов зарубежной разработки. Истинная причина запрета, в том, что ТРМ модули это средство генерации и хранения ключей имеющих в корне цепочки доверия уникальный для каждого чипа ключ (PRIVEK), который является корневым ключом шифрования по RSA алгоритму (его секретной частью).
Этот ключ неизвлекаем, его знают только производители чипа, и по идее никто более. Но, все производители крипто-средств в обязательном порядке имеют контакты со спец-службами, думаю не нужно объяснять у кого будут храниться дубликаты этих ключей?.
Знание корневого ключа для конкретного ТРМ модуля позволяет расшифровать содержимое памяти ТРМ модуля и кроме того, всегда точно локализовать место конкретной вычислительной установки в сетевом пространстве.
Захотелось проверить наличие активности ТРМ модуля на МВК-2, сделать это просто, для этого есть две возможности. В системных ASPI таблицах есть специальный объект, описывающий наличие ТРМ модуля, но это только отметка в памяти. Устройство может присутствовать, а записи в таблицах о его наличии может и не быть, так что этот метод недостаточно надежен и кроме того если его нет в таблицах, ОС его тоже не увидит и соответственно не будет использовать.
Второй способ гораздо надежнее, любое устройство взаимодействует с остальными компонентами вычислительной системы через регистры, если эти регистры активны (их можно читать и в них писать информацию) то устройство работоспособно. По идее отключенный в условиях производства ТРМ модуль не должен иметь работоспособных регистров. Проверить это просто, все регистры ТРМ модуля стандарта 1.2 находятся на системной шине в фиксированном адресном пространстве 0FED4_0000h - 0FED4_FFFFh, это не я придумал, так написано в стандарте.
Снова включая исследуемый МВК-2 я уже имел под рукой программу для просмотра регистров на системной шине (собственного производства естественно).
Ожидаемый результат подтвердился, регистры ТРМ модуля были в рабочем состоянии. Только вот информация в них не соответствовала спецификации. В одном из активных регистров обнаружились Скан-коды клавиатуры…
Было похоже, что информация о сканкоде последней нажатой клавиши запоминается в регистрах, предназначенных для работы ТРМ модуля, а это уже напоминало аппаратный кейлоггер.
Возможно ли такое, - вполне, поскольку контроллер клавиатуры и ТРМ модуль расположены на одном интерфейсе – LPC и этот интерфейс выполнен по схеме последовательного соединения всех устройств подключенных к нему. Фактически ТРМ модуль был превращен в сниффер, слушающий LPC шину и запоминающий в своих регистрах информацию с клавиатуры.
Кейлоггер в МВК-2 это конечно круто, могу ли я ошибаться, - безусловно, поскольку это предварительный результат внешнего исследования. Если бы удалось залезть внутрь этой машинки то можно это либо доказать, либо опровергнуть, в любом случае нужно разбираться, но у меня такой возможности нет…
Закономерный вопрос, а может кто уже разбирался и пришел к заключению что все нормально,- работать можно?
Сомневаюсь, специалисты которые не в состоянии поменять заставку в БИОС, не знающие про закладку в БИОС программы Computrace LoJack врядли даже знают о ТРМ модулях, не говоря уж о том, чтобы разбираться в их спецификациях.
Так что эта непроверенная техника продолжает поступать в Россию под гордым именем «Мобильный Вычислительный Комплекс МВК-2» и несет на своем борту и явную закладку и непроверенный аппаратный кейлоггер. А этими комплексами


Подвижные узлы связи Р-849М1(М) и Р-986М

Р-849М1(М) предназначен для обеспечения телефонной радиосвязи на коротких, ультракоротких волнах на стоянке и в движении автомобиля операторам авиационных средств связи.
В изделии обеспечивается управление радиостанциями с основного пульта управления на базе мобильной ПЭВМ типа МВК-2, резервного пульта управления и дистанционное управление с выносного пульта, удаленного на расстояние до 200 м.


P.S.

Данная статья «вылеживалась» практически год, но не нужно думать, что автор все это время хранил информацию в тайне, - отнюдь. Те, кому по долгу службы положено знать об этом, были сразу поставлены в известность.
Но повторилась история, описанная в первой статье про китайские закладки, хотя руководители отвечающие за тему ИБ в России практически полностью сменились…..
Это говорит о незыблемости универсального правила перестановок в Российских бюрократических структурах информационной безопасности – от пересадок в креслах суть не меняется. Другими словами, универсальное правило, описанное Крыловым еще двести лет тому назад, осталось неизменным, как и дороги, как и …….
Короли все равно голые, а мне, хоть я далеко не «мальчик» приходится снова выступать в этой роли, и тыкать пальцем в непотребное.
Хоть и сменилось руководство ИБ России, а подход к теме остался неизменным. Реакции на информацию о аппаратных закладках в МВК-2 не было, и эта «паленая» техника до сих пор поступает на защищенные объекты.
 
OP
Y

Yujen

Guest
Вот никто не догадался, а поинтер с журналюгой.... да. запростто! :D
сам дизайн этого ноута:

говорит о многом )))))))))))))))))))

От себя добавлю: Я всегда говорил, что кятайское говно с кятяйскихговносайтов покупать не стоит!
 
demyan

demyan

Активный участник
Регистрация
20.07.2006
Сообщения
15 219
Реакции
658
Баллы
113
Восстание машин началось?
 
Верх Низ