id: Гость   вход   регистрация
текущее время 18:03 28/03/2024
Автор темы: Гость, тема открыта 19/10/2013 22:46 Печать
Категории: софт, инфобезопасность, политика, защита дисков, уязвимости, хард, атаки, программные закладки, закрытый софт, спецслужбы, жучки/кейлоггеры
https://www.pgpru.com/Форум/ПрактическаяБезопасность/ЧегоСтоитИЧегоНеСтоитБоятьсяаппаратныеБэкдорыИПроприетарныеПрошивки
создать
просмотр
ссылки

Чего стоит и чего не стоит бояться (аппаратные бэкдоры и проприетарные прошивки)


Оглавление документа:

Вместо предисловия


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


Первое, о чём стоит подумать при разговоре о защищённом ноутбуке — это о модели угрозы. У разных людей она может быть сильно разной, например:

  1. «Ноутбук мой, я делаю с ним, что хочу. Хочу — шифрую, хочу — модифицирую, имею полное право».
  2. «Отрицаемость» (нужно по возможности не иметь ни следов аппаратных модификаций (вскрытие, изменение железа и т.д.), ни программных (скрытая ОС со скрытым софтом, ничего не шифруется и т.д.).

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


Ранее форумчанами уже озвучивались предварительные списки потенциально вредных портов (разъёмов) и технологий:


Старый ноут с ОС с открытым исходным кодом, желательно без Intel Insider, без Intel AMT, без Intel vPro, без UEFI, без поддержки computrace, с открытым BIOS'ом и без firmware. Да, такой найти практически нереально.

Сделать дамп можно через ExpressCard-порт, через Thunderbolt или Mini DisplayPort. Возможно, даже через esata, но насчет этого не уверен. В первые два порта можно тупо включить pci-x карточку firewire, а дальше по накатанной.

Помимо них, целью для атак может стать Apple'овский разъём и USB, через них нельзя напрямую читать память, но можно загрузить бекдор при старте компьютера. Правда, USB-клавиатура, USB-мышь, USB-сетевая и т.п. штуки могут быть отключены в BIOS, поэтому их можно условно считать безопасным. Некоторые опции (например, firewire) иногда могут быть отключены программно в настройках BIOS, но гарантии это не даст. Надёжней сделать аппаратный патч, выпаяв лишнее паяльником. Другой вариант — залить вредные разъёмы эпоксидной смолой, а потом отшлифовать и покрасить. При должной сноровке ноутбук после этого будет выглядеть так, как будто разъёма там и в помине не было.


VGA-порт, в отличие от Thunderbolt, безопасен: первый — это аналоговый выход, второй — pci-e. Через VGA ничего кроме видео идти не может. Есть переходники с Thunderbolt/DisplayPort в VGA, но такой переходник — полноценный видеоадаптер (PCIe-видеокарта), получить же DisplayPort из VGA нельзя в принципе. Даже если оцифровать изображение с VGA и перекодировать его в формат DisplayPort'а, это никак не поможет подключиться к внутренней памяти, потому что VGA принципиально не содержит такой возможности. Что касается HDMI-выхода, он вроде как бесполезен (не на всех мониторах есть — раз, не поддерживает высокое разрешение — два) и безопасен. Единственный его плюс — меньший размер коннектора, а так он ничем не лучше VGA (IMHO).


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


Кому не нужно, лучше также отключить wi-fi и bluetooth. IMHO, bluetooth лучше вообще физически удалить, поскольку он — совершенно ненужная штука (хотя кто-то ещё пользуется им для копирования информации между ноутбуком и телефоном): скорость — слёзы, софт — глючный и проприетарный, безопасность — одна сплошная дыра.


Стоит обратить внимание и на тип дисков. SSD не позволяет скрывать, какие из ячеек диска свободные, а какие нет, поэтому для криптографии HDD в целом лучше и традиционней. Из-за этого свойства SSD категорически не дружит ни с отрицаемым шифрованием, ни с отрицанием шифрования. Часто упрощает дело то, что диски из ноутбуков штатно вынимаются без нарушения пломб и гарантий. Под такой вынутый диск можно купить внешнюю коробку с USB2SATA-разъёмом и вставить его туда, после чего он ничем не будет отличаться от обычного внешнего USB-диска. Вынутый диск можно затереть случайными числами, установить на него ОС, настроить её нужным образом на другом более доверяемом железе, а потом вставить его в исходный ноутбук.


Сейчас найти 100%-подходящее под специфические требования железо уже невозможно, поэтому «доработки напильником» не избежать. Ноутбук лучше покупать не модный и тонкий, а крепкий и дубовый, который можно разбирать, перепаивать и делать патчи к нему. К достоинству металлических ноутбуков можно отнести то, что они легко разбираются — там всё на болтиках, а вот пластмассовые ноутбуки часто разобрать если и можно, то только молотком, и собрать их потом можно не всегда.


Помимо устранения лишних разьёмов хорошо бы также защитить память от заморозки и извлечения (cold boot). Для этого можно сделать либо специальный датчик, либо просто залить отсек оперативной памяти эпоксидной смолой (а заодно и все лишние разъёмы) намертво. После засыхания разъёмы можно будет подпилить шкуркой, чтоб было красиво. Ею целые устройства в военной промышленности заливают, что сильно повышает их надёжность. Однако, заливать нужно только те места, где не нужен обдув (а именно, планки памяти). Перед заливкой также стоит убедиться, что память годная, и ее замена в скором времени не понадобится. Если заливать внутренности, то лучше сначала потренироваться на ненужном ноутбуке, чтоб не было жалко, случись что. Ещё одна проблема — ноутбук греется при работе, а расширяться деталям некуда. Когда военную техникую заливают эпоксидной смолой, она работает, но вот что будет с ноутбуками китайского качества — непонятно. Прямые руки в этом деле приветствуются, ибо легко испортить железо, залив чего-нибудь не туда.


Справка: эпоксидная смола — это две компоненты, которые смешивают и потом заливают. Ток она не проводит. Эпоксидную смолу реально либо расплавить при 200 градусах (пайка может поотваливаться), либо оторвать вместе с деталями. Залитые ею военные устройства очень трудно разбирать.


Computrace от Absolute и его связь с виртуализационным руткитом


Проверить наличие гипервизора несложно, т.к. он не маскируется и ломает виртуализацию. Достаточно проверить, работает ли ОС в режиме виртуализации, и работоспособна ли виртуализация вообще. Например, на некоторых ноутбуках с гипервизором в BIOS'е не удается запустить аппаратную виртуализацию в VMware, и программы типа aida64 показывают отсутствие поддержки виртуализации, хотя по модели процессора известно, что она там есть — это самый простой признак. Где-то писалось о том, что патчили BIOS, чтобы решить эту проблему, и VMware заработала. Другая подобная проблема — отключенный (по маркетинговым или ещё каким-то соображениям) AES-NI, что тоже лечится патчем к BIOS'у.


Разработчики Маркетологи computrace от Absolute утверждают следующее:

  1. Хотя он сидит в BIOS (что намекает на ОС-независимость, да), Linux не поддерживается.
  2. Computrace не следит за пользователем, пока не станешь их закачиком, оплатив услугу (есть какой-то free trial срок), но даже если заплатишь, без винды никак. Стать их заказчиком, используя Linux, невозможно.
  3. Computrace сидит в той части BIOS'а, которая защищена от перепрошивки, и поэтому самовосстанавливается при перепрошивках BIOS'а.
  4. Computrace не лечится ни перепрошивками BIOS'а, ни сменой диска, ни установкой другой ОС (тип другой ОС не конкретизируется).

Конечно, из того, что они не работают с Linux-заказчиками, ещё не следует, что они принципиально ничего с другими ОС (невиндой) сделать не могут, имея свой код встроенным в BIOS'ы.


Маркетинговый бред от Absolute странный, разобрать его сложно, но про некоторые моменты можно вспомнить. Первое — computrace писался во времена, когда виртуализации еще не было, и работал он так (проверка была на ноутбуке, приобретённом в 2011-ом году): в BIOS прописывался модуль, которые при загрузке искал винду на диске и дропал свой файл на её системный раздел, прописывая его в автозапуск, т.е. вёл себя, как самый обычный троян. Из BIOS'а этот модуль можно было выпилить с помощью uniprog, и никакой защиты от перепрошивки BIOS'а там не было. Второе — несмотря на наличие контроля из BIOS, сделать трояну что-нибудь из-под него — нетривиальная задача, а особенно сделать так, чтобы ничего не заглючило и не отвалилось. Эта задача настолько нетривиальная, что неизвестно ни одного полноценного решения под такую задачу. Единственное руткит-решение, какое есть — полностью аппаратное, и ОС оно не затрагивает — это отдельный модуль с GPS+GSM. В общем, безупречный виртуализационный бэкдор — это почти что фантастика. Стоит отметить, что если гипервизор будет сделан с ошибкой, то отвалится не он сам, а будет падать ОС, будет глючить сеть, не будет работать VMware и т.п., поэтому пользователь по косвенным признакам сразу заметит неладное.


По поводу пункта 3 — защиты от перезаписи: маркетологи могут попросту врать, как это было в своё время с аппаратной криптографией для жёстких дисков, «которую нельзя взломать», в то время как внутри сидел простой XOR. Другое возможное объяснение — официальный софт запрещает перепрошивать BIOS без их модуля. Если что, флэш-память обычного BIOS'а шьётся целиком. Чтобы защитить его от перезаписи, нужна аппаратная поддержка, т.е. программно и универсально это не сделать никак (я пока не рассматриваю виртуализацию и прочие потенциально глючные штуки). Отключить перезапись всего BIOS'а можно, отпилив ножку, подающую напряжение программирования, но чтобы защитить часть памяти от перезаписи, придётся минимум еще одну внешнюю микросхему навесить (уточнение: в LPC флешках есть два вывода для блокировки записи, общий и для бутблока, но на современных мамках стоят SPI Flash). Конечно, если у Absolute есть договор с поставщиками, они могут специально под них делать железо, аппаратно блокируя перепрошивку BIOS'а нужным Absolute'у образом, но в это слабо верится. В некоторых инструкциях ещё пишут, что перепрошивку BIOS'а с UEFI нельзя сделать, пользуясь только lagacy-загруженной ОС (т.е., не использующей UEFI).


Сложно подвести итог, но можно попытаться. Итак, список совместимых BIOS'ов — это только список совместимых BIOS'ов. Если вы никогда не заказывали antitheft-услугу у Absolute, не ставили их софт, то по умолчанию всё должно быть отключено. При активации их услуги ноутбук каждые сколько-то минут отправляет «keep-alive-пакеты» на их сервера, что можно заметить снифером на внешнем роутере. Если бы большинство компьютеров с совместимыми с computrace BIOS'ами действительно постоянно отправляли туда что-то, шум в интернете на этот счёт был бы совсем другого порядка. Если у кого-то есть сомнения, можно разбирать логи на внешнем роутере, надеясь, что computrace — не ИИ, и встроиться в произвольный шифрованный трафик невидимым для роутера образом он не сможет. Потом, что касается присутствия поддержки computrace в BIOS, не понятно, стоят ли в нём какие-либо модули от Absolute изначально на момент покупки ноутбука. Вполне возможно, что не стоят. Т.е., до тех пор, пока вы не станете их заказчиком и не установите их софт, ничего такого в вашем BIOS'е вообще нет. Это гипотезы, разобраться с ними можно только дезассемблеруя конкретную прошивку, но в духе здорового скептицизма они сойдут.


Также стоит не забывать и о том, что прошивка BIOS — не монолитный кирпич, а набор модулей, причём производитель материнки может как встроить какие-то модули в прошивку, так и нет. Пользователь при большом желании тоже может подредактировать список этих модулей. То же касается и фич процессора: хотя номинально процессор может много чего поддерживать, BIOS на стадии инициализации может отключаить эти фичи записью соответствующих MSR регистров. Например, не всё, что поддерживается процессором (допустим, vPro), бывает включено по умолчанию производителем ноутбука, и без перепрошивки это не обойти. Например vPro требует дополнительный флэш-чип для своей прошивки (точнее, насколько я понял, там есть два механизма работы: либо чипсет разделяет микросхему BIOS на две логические части, где одна — для прошивки BIOS, а другая — для прошивки vPro, либо для vPro ставится отдельная микросхема; какой способ используется — определяется аппаратно разводкой платы, программно сменить одно на другое нельзя). Стоит начать поиск вредного железа именно с vPro — посмотреть, сколько каких микросхем памяти стоит и сравнить их характеристики с теми, которые видны программно. Если нужный дополнительный аппаратный и/или программный функционал (к примеру, для vPro) отсутствует в ноутбуке, то вполне логично, что в настройках BIOS'а нет ничего на тему этого функционала несмотря на номинальную его поддержку процессором.


Intel AMT и Intel vPro


Intel AMT — это не виртуализационный бэкдор (вопреки расхожему мнению), а отдельная аппаратная часть со своим процессором и сетевым каналом.


Intel vPro — это система удаленного администрирования, которую можно отключить, либо удалив соответствующий модуль из BIOS (т.е. понадобится перепрошивка), либо отпаяв микросхему его памяти (у vPro есть внешний чип для хранения прошивки, который можно выпаять или тупо замкнуть ножки). Intel vPro раньше часто встречалось на серверах, выглядело это так: можно было сконфигурировать второй сетевой адаптер в качестве management, и через него удаленно управлять сервером как через KVM-устройство. Если виртуализация не используется, vPro лучше отключить в настройках BIOS'а.


Сейчас vPro уже есть если не везде, то почти везде, а дальше будет совсем повсеместно. Скоро вообще не будет железа без троянов. Сами процессоры предоставляют набор инструкций, на которых тоже можно реализовать гадость. Такие технологии — они как нож: ими можно хлеб резать, а можно и людей. Сами по себе виртуализационные инструкции очень полезны для безопасности (например, можно использовать виртуалки) но, с другой стороны, можно и рутикиты писать. Пока что в сам процессор, к счастью, ещё ничего такого не встроено (во всяком случае, судя по открытым источникам), но в BIOS'ы уже могут встроить, но, опять же, пока ничего на этот счёт не слышно.

Подробнее про vPro/AMT


В настройках BIOS'а оно даёт возможность создать и настроить второй сетевой адаптер. Настройки BIOS'а также обычно позволяют отключить AMT целиком, но насколько им можно верить, и что при этом отключается, а что нет — отдельный открытый вопрос. Обычно на материнских платах, где есть vPro/AMT, имеется две сетевых, где одна отдаётся под AMT целиком. Соответственно, каждая сетевая имеет свой выход наружу и свой провод. Однако, есть варианты и с VLAN — это когда в BIOS'е настраивается всё так, что пакеты с одним VLAN идут на компьютер, а с другим — на AMT. Хотя сетевая карта при этом физически одна, в настройках имеются две виртуальных сетевых — каждая для своего VLAN'а (встречается в сетевых картах от Intel). VLAN используют там, где надо по одному проводу передать несколько сетей так, чтобы эти сети были не связаны друг с другом. VLAN поддерживается на аппаратном уровне сетевыми картами Intel, умными свичами и т.п. железом. Казалось бы, что если провод один, то владельцу ноутбука никто не запретит получать чужие VLAN-пакеты, идущие по тому же проводу, но тонкость в том, что административного доступа на ПК недостаточно для получения этих пакетов (IP-протокол — не единственное, что гуляет по сети: ARP, всякие маршрутизационные протоколы, IPX и, вообще, могут ходить пакеты от протоколов неопознанных форматов). VLAN — это дополлнительный заголовок самого нижнего уровня, который даже ниже IP. Т.е. VLAN — это надстройка, которая делит виртуальные сети, а внутри виртуальных сетей может гулять, что угодно. Если сетевая карта настроена на приём в raw-режиме, он будет видеть абсолютно всё, а если только на определённый VLAN, то только то, что внутри него. Соответственно, если сетевая настроена в BIOS'е ловить определенный VLAN, то даже в promiscuous mode она будет ловить только его и не будет показывать VLAN-заголовки. Т.е., всё будет выглядеть так, как если бы никакого VLAN не было, а была бы просто одна сеть. Эти вещи часто встречаются на серверах.


VLAN используют в организациях: настраивают его в BIOS'е, а на BIOS ставят пароль, после чего сотрудник со снифером не может снять данные из другого VLAN'а, идущего по тому же проводу. Один VLAN при этом даёт трафик на сам сервер, а другой — на управление им, AMT. Подключить сотруднику другой компьютер, чтобы там запустить снифер, запрещают организационными мерами, равно как и вскрывать компьютер, чтобы сбросить настройки BIOS'а. Возможно, что BIOS'ы в таких случаях ещё и лочатся на перепрошивку (на серверах с AMT BIOS'ы шьются, только если это разрешено в BIOS Setup). По сути такая система была задумана для того, чтобы иметь самый высший администраривный доступ к серверам, неперехватываемый теми, кто имеет администраторские полномочия на серверной ОС.


Кстати, говорят, что есть BIOS'ы, в которых настройки не сбрасываются перемыканием контактов или выниманием батарейки, поскольку хранятся в энергонезависимой памяти EEPROM. В этом случае можно сбросить BIOS либо через бэкдоры от производителя, либо перешивать его так, чтобы он не спрашивал пароль (если это возможно), либо, на худой конец, выпаивать.


UEFI


BIOS'ы с UEFI — ещё один бич современых ноутбуков. UEFI может как отключаться в BIOS'е, так и нет. Во втором случае проблема лечится либо перепрошивкой BIOS'а, либо использованием UEFI-инсталляции для ОС. Правда, поддержка UEFI в Linux'ах сейчас ещё сырая, и может легко привести к тому, что ваш ноутбук после таких экспериментов превратится в кирпич, на котором вы уже ничего не сможете загрузить. Если есть хоть какая-то возможность использовать так называемую legacy-загрузку (т.е. ту, что не UEFI), настоятельно рекомендуется этим воспользоваться.


С точки зрения безопасности UEFI — зло, потому что оно может содержать модули, исполняемые после загрузки ОС. Внутри самого UEFI BIOS'а находится полноценная операционка, у которой есть, в том числе, выход в сеть. Сделать в ней кейлоггер с отправкой отчетов не составляет труда. В некоторых случаях UEFI можно полностью отключить, а его модуль удалить из прошивки BIOS, но есть ноутбуки, где он единственный, т.е. обычная BIOS'овская прошивка вообще отсутствует. Во втором случае UEFI не удалить никак, разве что перепрошивкой BIOS'а от другого ноутбука, но после неё первый может и не заработать.


Если ОС загружена не в режиме UEFI, то резидентные UEFI-модули не могут работать, т.к. ОС должна позволять им резервировать под себя память и прерывания, при этом другой функционал (вроде встроенного в BIOS доступа к сети) может продолжать работать (с вопросами про поддержку виртуализации UEFI не связана никак, если что). В гугле на тему «UEFI backdoor» можно найти много ссылок, где среди прочего утверждается, что UEFI существует уже много лет, давно всюду встроено, но раньше BIOS'ы по умолчанию использовали legacy-загрузку, из-за чего широкая общественность могла не замечать присутствия UEFI в их ноутбуках — всё работало искоробки и без плясок. Этот факт пытаются представить оправданием опасному функционалу UEFI. Впрочем, даже сейчас имеются как отдельно модули стандартного BIOS-формата, так и, отдельно, подсистема UEFI, благодаря чему UEFI можно целиком выпилить из прошивки.


На некоторых материнских платах есть настройки, позволяющие отключить сеть для UEFI.


Насколько популярно UEFI на серверах — непонятно. Кто-то пишет, что долго и упорно искал материнскую плату без UEFI и с большим трудом нашёл. Опыт других говорит о том, что UEFI малораспространён, и даже на брендовых HP-серверх его обычно нет (сервера на десктопном железе — исключение).


Что касается считывания прошивки, случаи, когда её нельзя считать, неизвестны. Можно, тем не менее, представить, что при считывании BIOS будет рассказывать не всё о текущей прошивке. Такой вариант можно проверить программатором, но возможен и более простой тест:

  1. Посмотреть, какая микросхема флэша стоит, найти на неё datasheet, узнать её ёмкость.
  2. Прочитать прошивку, а потом зашить вместо неё рандомный блок на всю емкость чипа.
  3. Прочитать то, что записалось, и сравнить с тем, что записывали.
  4. Зашить обратно старую прошивку.

Если есть скрытые области, этот тест может их выявить. Суть теста — проверить, что чип на плате записывается и читается на полную паспортную ёмкость. Сам тест проводится во время работы ОС без её перезагрузки. Если всё пройдёт гладко, то компьютер не превратится после такого текста в кирпич. :) Конечно, можно представить хитрый бэкдор, которые обманет этот тест, временно храня данные в оперативной памяти, но неизвестно, делал ли что-то такое кто-нибудь.


Номинально производителем считается, что доступ к UEFI имеет (и, вообще, управляет доступом извне) только тот, кто сидит за клавиатурой во время загрузки ноутбука, а доступа извне штатно нет. Из UEFI-шелла можно выйти в интернет. В частности, там есть ping. В некоторых прошивках есть даже GUI с браузером. Этого всего вполне достаточно, чтобы UEFI-бэкдор мог в процессе загрузки отправить «домой» какие-то данные, а собрать эти данные может, например, резидентный модуль драйвера клавиатуры. Можно стараться отключать сеть на момент загруки (сеть может работать только при загрузке), но тогда желательно отключать, в том числе, и wi-fi, что вряд ли можно сделать надёжно из интерфейса BIOS'а, раз к нему по умолчанию нет доверия. Тумблеры для отключения wi-fi и bluetooth сейчас не ставят, поэтому остаётся только вариант с герметичной шапочкой из фольги для ноутбука плюс внешний монитор к нему для временной блокировки wireless-сетей на момент загрузки. :) Правда, с учётом того, что многие (особенно старые) BIOS'ы не выдают изображение на внешний монитор до загрузки ОС (или даже до старта графической системы в ней), всё ещё хуже.


Если ОС грузится посредством UEFI, она должна поддерживать спецификацию резидентных UEFI-драйверов, т.е. позволять части кода UEFI оставаться в памяти и работать. Соответственно, если UEFI содержит бэкдор, он может продолжать работать в UEFI-загруженной ОС и после её загрузки. Т.е. функционал UEFI, который работает до загрузки ОС, может и после загрузки продолжать работать, при том, что в том функционале может, например, быть предоставление удаленного доступа, закачка бэкдора и т.д. Такая сетевая инфраструктура в UEFI может позволять закачивать к себе по сети бэкдор и инструкции, которые заранее неизвестны и каких нет в только что купленном ноутбуке. Идея в том, что закладывать можно не сам бэкдор сразу, а функционал, позволяющий этот бэкдор в систему позже доустановить.


Тем не менее, при legacy-загрузке стандартизованных способов внедрения бэкдора нет, поскольку в этом случае модулям просто негде работать — ОС занимает всю память. Можно считать, что если всегда используется только legacy-загрузка (а если используется UEFI, то не вводится ничего серьёзного с клавиатуры типа паролей на дисковое шифрование), а ноутбук во время зарузки отключен от сети, то всё теоретически ОК (если ни разу не забыть выключить сеть).


Подытожить можно следующими пунктами:

  1. После загрузки ОС:
    1. При lagacy-загрузе ничего работать не может.
    2. При UEFI-загрузке могут работать только резидентные UEFI-модули.
  2. До загрузки ОС может работать что угодно, но в случае наличия UEFI гораздо проще написать бекдор, чем без него (до ОС исполняется код BIOS, и что там есть, то и будет; проверить, что он делает, можно только дезассемблером).

По поводу перепрошивки BIOS'ов без программатора: теоретически можно считать его прошивку, выпилить оттуда UEFI и снова залить её обратно, не перезагружая ОС. Это рисковано, но может получиться и с первой попытки. На случай, если не получилось, и прошивка brick'нулась, у BIOS'ов есть bootblock, позволяющий прошиться с floppy, но этот floppy ещё надо поискать, и непонятно куда его подключать в случае ноутбука. Правда, вроде бы современные bootblock'и BIOS'ов позволяют восстановить прошивку с CD.


Что касается программатора, они бывают разные, стоят где-то от 500 до 100000р., но можно даже самому спаять что-то простое. Если компьютер имеет LPT-порт, некоторые чипы можно прошивать, просто воткнув туда проводки. LPT порт (к сожалению, уже ушедший в прошлое) был удобной штукой для электронщика, фактически это был единственный порт компьютера, позволяющий напрямую управлять железом.


BIOS'ы из ноутбуков достать проблематично. Они там запаяны, но выпаиванию поддаются. Кроме того, их не обязательно выпаивать для прошивки, поскольку можно подпаять проводки сверху и подключиться. Панелек для BIOS, как было раньше, уже давно не ставят нигде: ни на ноутбуках, ни на обычных материнках. Умельцы могут подпаиваться на десятки проводков, расположенных на расстоянии 0.65мм друг от друга — для этого нужна лупа, мелкий паяльник, прямые руки и зоркий глаз. Тем не менее, перепаять один BIOS на другой проще, чем подпаяться к существующему проводками, не выпаивая его, и делается это так: есть специальная оплётка для снятия припоя. Канифолью капается на выводы, прикладывается оплётка и греется паяльником, потом также с другой стороны, после чего микросхема аккуратно снимается. До 300°C втечение 10 секунд можно греть почти любой чип. Желательно использовать паяльник со стабилизированной температурой жала. Впаять обычно проще, чем выпаять: площадки мажутся жидким флюсом, на них ровно кладётся микросхема, прижмается специальным крючком, а потом выводы греются паяльником с сухим жалом. Если при пайке возникли замыкания соседних дорожек, они устраняются оплеткой. Рекомендуется не жалеть канифоли в процессе: чем больше канифоли, тем лучше, но ее обязательно потом нужно отмыть, т.к. неотмытая канифоль вызывает коррозию. Паять лучше легкоплавким припоем при низкой температуре жала, выпаивать — наоборот при высокой.


Из п.1.A следует, что кейлоггер (тот, который универсальный, т.е. аппаратно и программно независимый) не может перехватить пароли на шифрованные файловые системы (в отличие от паролей на preboot-аутентификацию и паролей на загрузчик), т.к. он запрашивается только после старта ОС. Однако, ОС-зависимый кейлоггер возможен, как и аппаратно-зависимый. Например, бэкдор может взять загрузку ОС под контроль и избежать вытеснения. В случае с виндой это делается так: бэкдор изначально перехватывает 13-ое прерывание BIOS, через которое загрузчик ОС читает сектора диска, и 10-ое прерывание BIOS, через которое ОС определяет карту доступной памяти. Модифицируя возврат 10-го прерывания, бэкдор резервирует под себя немного памяти realmode'ового режима, где размещает резидентную часть, а обработчик 13го прерывания сканирует читаемые с диска сектора на предмет сигнатуры определенной функции ядра винды и модифицирует код этой функции, ставя jump на свой обработчик. Следующая стадия работы бэкдора — получение управления уже внутри ОС, в режиме ядра, и подгрузка другого функционала из постоянной памяти. Это схема внедрения в ОС для обычного BIOS'а, она используется в ряде вполне мирных программных продуктов, даже оупенсорсных. Если же такая схема используется бэкдором, то она становится не только ОС-зависимой, но, к тому же, ещё и детектируемой — для этого достаточно сравнить карту памяти, которую выдал BIOS, с картой памяти, полученой сканированием адресного пространства. Т.е. сделать дамп и поискать код с подозрительно выглядящими обработчиками прерываний. У бэкдора такого типа в первую очередь будет зависимость от ОС.


Чтобы резидент мог получить управление после загрузки ОС, он должен модифицировать бинарный код ОС в момент загрузки, а для этого нужно знать, что искать и на что заменять; знать, как ОС работает, и что с ней делать. Всё это нетривиально даже в случае десятка версий винды (чисто программная проблема), а в случае с Linux'ом можно вообще не беспокоиться: делать такое под десятки дистрибутивов Linux'а с сотнями их версий — адский нереальный труд.


Что касается ограничения на память в UEFI — это то, сколько может влезть во флэш-микросхему. Поддержку бэкдора для 10-20 ОСей вставить реально, если все эти ОС — винда; как раз примерно столько разных комбинаций версий ядер и есть. А версий того же Linux'а — тьма тьмущая. И хотя официальных релизов (той же убунты) не так много, всё равно проблемно выходит, т.к., условно говоря, после выхода каждого релиза АНБ было бы вынуждено обновлять BIOS'ы во всех уже выпущенных ноутбуках. Кроме того, как сказано выше, такой boot'овый руткит (прописывающийся в бутсектор и перехватывающий управление на раннем этапе загрузки) отнюдь не неуловим, и внимательный программист с отладчиком ядра может его случайно найти. Кстати, под винду такой бекдор есть (TDSS, буткит от которого был в т.ч. в Carberp, где исходники последнего могут быть перенесены на BIOS один в один с последующей зашивкой и тестированием в индвидуальном порядке), и то там были проблемы при выходе мажорных апдейтов от M$ (писали, что апдейт валит руткит и винда от этого падает).


Далее, если считать, что изначально трояна в прошивке не было, то и отсылать в сеть он ничего не будет. Тем не менее, есть риск, что чистая прошивка инфицирует сама себя после захода в сеть и всяких типа «обновлений» (неизвестно, есть ли автоматические обновления UEFI-прошивок по умолчанию, но теоретически ничего не мешает их сделать). Опять же, даже если она будет инфицирована, она не сможет слить в сеть ничего, если ОС грузится в legacy mode, а во время загрузки сеть отключена.


В интернете была статья про инфицирование буткитами, вот ключевое:


To infect a computer with Rakshasa, Coreboot is used to re-flash the BIOS with a SeaBIOS and iPXE bootkit. This bootkit is benign, and because it’s crafted out of legitimate, open-source tools, it’s very hard for anti-malware software to flag it as malicious. At boot time, the bootkit fetches malware over the web using an untraceable wireless link if possible (via a hacker parked outside), or HTTPS over the local network. Rakshasa’s malware payload then proceeds to disable the NX (no-execute) bit, remove anti-SMM protections, and disable ASLR (address space layout randomization).

Because the same basic chips are used time and time again, Brossard says Rakshasa works on 230 Intel-based motherboards. It is also possible to load Rakshasa into the firmware of another piece of hardware — a network card, for example — and then have Rakshasa automatically transfer itself to the BIOS. Furthermore, the bootkit can be used to create a fake password prompt for Truecrypt and BitLocker, potentially rendering full-disk encryption useless. Finally, the Rakshasa bootkit even allows the remote flashing of the original BIOS — perfectly covering your tracks.

В применении к UEFI получается, что здесь нужна либо преинсталляция зловреда на производстве, либо физический доступ злоумышленника к железу после, либо уязвимость, позволяющая получить административные привелегии. Т.е. имплементить баг как фичу тут вряд ли получится. Однако, даже если UEFI имплеменчено на фабрике с бэкдором, а загрузка идёт в legacy, то оно не может украсть пароли на дисковое шифрование вышеописанным образом, но возможен ОС-зависимый бекдор. Более того, для винды такие есть, причём даже в открытом доступе (к примеру, утекшие исходники Carberp).


В рекламных спецификациях на некоторые ноутбуки, оснащённые Intel vPro, пишут про возможность «удалённого стирания дисков» и TPM. И если TPM можно считать безвредным для получения несанкцоинированного доступа, то удалённое стирание стоит обсудить подробней.


Интересно, что иногда пишут о возможности стирать информацию с дисков или превращать ноутбук в нерабочее состояние даже тогда, когда он выключен. Что касается UEFI, оно использует центральный процессор для работы. Теоретически, если железо ноутбука позволяет включить CPU так, чтобы вентилятор не выл, и батарея не садилась, то, может быть, UEFI сможет выполнить какие-то вредные операции при внешне выключенном ноутбуке. Далее, всевозможные просыпания по сети происходят при передаче аппаратного сигнала сетевой картой, которая выдаёт их при получении пакета определенного формата. В норме при такой активации компьютера через, например, wi-fi он должен физически включиться так, что это будет видно, хотя теоретически злоумышленники могут попытаться удалённо включить его ночью, когда все спят, взломать, а потом выключить. Однако, при физически вынутой батарее ничего из этого сработать не может, потому что мощности батарейки BIOS (литиевый элемент 2052 с ёмкостью 120мA*ч при напряжении 3.6В) очень мало даже для работы слабейшего примитивнейшего процессора втечение сколь-нибудь длительного времени. В общем, если батарея вынута, ни UEFI, ни AMT, ни просыпание по сети не может работать, поэтому по поводу удалённого стирания информации в этом случае можно не беспокоиться. Естественно, ноутбук выключенный кнопкой, в который вставлена заряженная батарея, — совсем другое дело, тут что-либо гарантировать сложно.


Вместо заключения


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


Если сильно хочется, то да, можно сделать виртуализированный бэкдор, который висит в BIOS'е и универсально, программнонезависимо берет под контроль ОС и всё, что в ней выполняется, при этом не детектясь и не мешая работе других программ, использующих виртуализацию. Однако, хотеться должно действительно очень сильно, а шансы у бэкдора спалиться (особенно при массовом производстве) весьма велики. Достаточно разработчику сделать всего один баг, как кто-нибудь может начать докапываться до его причин и раскопать весь зловредный функционал. Говорят, что попытки сделать такой бэкдор just for fun были, но споткнулись о массивность задачи. Есть и ряд концептуальных проблем, которые неизвестно, как толком решать.


Для целевой атаки вполне можно сделать виртуализационный бэкдор, но это долго (может занять до полугода работы), сложно и дорого (до 100-150k$). С другой стороны, это и не нужно, потому что аппаратный кейлоггер с передачей информации по радоиканалу в разы, на порядки проще, дешевле и эффективней — с ним профессионал может справиться и за месяц.


Для целевой атаки против конкретного пользователя намного проще всего сделать «заряженное» железо: ту же клавиатуру или мышь зарядить, да даже и флэшку. USB-устройство тоже может в нужный момент превратиться в USB-накопитель или клавиаутуру, где клавиатура сама вызовет консоль и наберет команду для запуска трояна с накопителя, после чего троян передаст собранную информацию обратно в девайс, а уже он по радиоканалу отправит «домой» (это не очень чистая атака, но, весьма вероятно, будет успешной). Правда, говорят, что аппаратные закладки и ищут в первую очередь при всяких сертификациях. Т.е., если пользователь сильно обеспокоен собственной безопасностью, поиск аппаратных закладок — первое, с чего он должен начать.


В лицензионных соглашениях на ноутбуки часто пишут, что производитель ноутбука и M$ могут удалённо подключаться для решения технических проблем и даже перепрошивки BIOS'а. На умолчальной винде действительно встречаются всякие троянские программы и учётные записи типа support_что-то_там — возможно, что доступ именно через такие программы подразумевается в лицензионных соглашениях.


IMHO, сейчас начинается эпоха тотального затроянивания всего и вся, бэкдоры скоро будут всюду: в ОС, в прикладном софте, во всём железе и т.д. Экранировка ПК от излучений вовне, внешний роутер и домашний DPI — меры ограниченные, часто неудобные, неидеальные и неуниверсальные. Параноикам остаётся только учиться и ещё раз учиться; придумывать, как заблокировать и обходить бэкдоры. Может так получиться, что вообще придётся осваивать реверсинг микросхем, что для современных техпроцессов весьма нетривиальное занятие, требующее очень дорогого оборудования, которое даже при наличии денег мало кто продаст. Cтарые микросхемы 80-ых годов сейчас реверсят энтузиасты, но что-то новее, чем процессор первой Play Station, им уже не под силу. В принципе, реверсинг микросхем реален, но всё упирается в получение детальных фотографий кристалла послойно. Вот, к примеру, сайт кого-то любителя, который этим занимается. С его фотографий сейчас реверсят процессор PS1 и уже отреверсили чипы денди. Смысл реверсинга чипов, конечно, не в копировании их (произвести их практически нереально), а в выявлении бэкдоров.


 
На страницу: 1, 2, 3, 4, 5, ... , 10, 11, 12, 13, 14 След.
Комментарии
— Гость (28/10/2013 11:55)   <#>
В тему:

We have determined that some AMT code is still being executed, regardless of whether AMT is disabled in BIOS or not. In our proof of concept rootkit we decided to subvert this very AMT code. .

New Intel Chips Contain Back-Door Processor, Hackable Even When Computer is Turned Off .

vPro иногда не заявлен, а в BIOS'е он есть, всегда запущен и работает. То же касается, судя по слухам, и 3g.
— Гость (28/10/2013 14:21)   <#>
The list of authorized IT administrators is configured by the end customer IT during a protected process using either enterprise certificates or physical presence at the Intel AMT system (via BIOS menu or USB key) to establish trust, and thus occurs entirely with consoles residing on trusted servers designated as such by the end customer IT.
http://www.intel.com/technology/vpro/privacy/

Если у вас есть правильные сертификаты, то в «physical presence» нет никакой необходимости? «Ready to go backdoor» в любую систему, номинально поддерживающую vPro (все интелловские многоядерники)?
— SATtva (28/10/2013 14:25)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Enterprise certificates загружаются самим пользователем, нет?
— Гость (28/10/2013 14:35)   <#>
Ответ зависит от того, кто есть «end customer IT» (IT == Intel Technology?): конечный пользователь или производитель ноутбуков.
— Гость (28/10/2013 22:29)   <#>
Выявлени бекдоров ещё имеет и такие трудности:
55нм это уже по меньшей мере в 5 раз меньше того, что можно увидеть в оптический микроскоп, так что самые мелкие детали реализации от нас пока останутся скрыты... .


есть у штатов контора http://www.chipworks.com, можно заказать вскрытие наверно любого чипа, есть не мало готовых результатов современных, цены 300$ одна фотография, 2000$ + другая
— Гость (29/10/2013 01:27)   <#>
И как проверить запущен ли vPro, если он не заявлен?
— Гость (29/10/2013 12:14)   <#>
И как проверить запущен ли vPro, если он не заявлен?


:) "к верху каком"
а именно вот так http://savepic.su/3635888.jpg
— Гость (29/10/2013 13:03)   <#>
Проверить можно реверсингом BIOS после считывания программатором. Отключить – перешивкой чипа BIOS программатором.
Я сейчас над этим работаю, есть некоторые результаты. По итогам будет обстоятельная статья.
— Гость (05/11/2013 14:31)   <#>
По ссылке unknown'а (стр. 8, середина):

Processing and exploitation

… Fast, flexible, front-end processors must spot targets based on patterns, events or metadata rather than predefined selectors or brute force scanning of content. High performance computing systems must extract meaning from hige data sets and to negate data encryption and computer access controls.

New developments will stress standardized interfaces that let diverse applications share infrastructure, and will favor automation and off-the-shelf technology over manual processes and point solutions. New SIGINT systems architectures will de-couple event detection from follow-on reaction and processing, so that applications can be added or deleted with little impact to ongoing operations and so that sensors and processors can serve many tasks rather than one operational stovepipe. All this — and increased use of remotely confugurable commerical hardware — will also cut the time needed to retool or refocus technical infrastructure as customer needs, target behaviors, or technical contraints change; they'll reduce life-cycle costs as well.

И эти люди (Intel) ещё говорят, что в промышленных масштабах Intel ME / AMT — это хорошие технологии. Конечно же, эти технологии прежде всего будут использоваться вот для всего того, о чём выше пишет АНБ. Сто против одного, что в современных процессорах и BIOS'ах закладки от АНБ уже есть, а Intel — одна из их «sensitive partnerships».
— SATtva (05/11/2013 14:49)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Вы не притягиваете за уши? Во втором абзаце, по-моему, речь лишь об использовании стандартных интерфейсов в целях съёма данных и обычной компьютерной техники в целях обработки данных (вместо инвестиций в специализированное железо).
— Гость (07/11/2013 08:27)   <#>

Всё может быть. Текст короткий, понять его можно по-разному. Этот текст — реклама для того, чтобы АНБ оправдала своё существование и выбила деньги, а не объяснение для технических специалистов.
— Гость (11/11/2013 10:59)   <#>
Computrace сидит в той части BIOS'а, которая защищена от перепрошивки, и поэтому самовосстанавливается при перепрошивках BIOS'а.
Computrace не лечится ни перепрошивками BIOS'а, ни сменой диска, ни установкой другой ОС (тип другой ОС не конкретизируется).


Автор уверен в этом?

* www.coreboot.org
* OpenBIOS

Вот How-To.

P.s саппорт у них глучит, у меня был бук со встроенным компутранс, я заказал триал, но так и не получил доступ в админку.
— Гость (11/11/2013 11:06)   <#>
Помимо устранения лишних разьёмов хорошо бы также защитить память от заморозки и извлечения (cold boot). Для этого можно сделать либо специальный датчик, либо просто залить отсек оперативной памяти эпоксидной смолой (а заодно и все лишние разъёмы) намертво. После засыхания разъёмы можно будет подпилить шкуркой, чтоб было красиво. Ею целые устройства в военной промышленности заливают, что сильно повышает их надёжность. Однако, заливать нужно только те места, где не нужен обдув (а именно, планки памяти). Перед заливкой также стоит убедиться, что память годная, и ее замена в скором времени не понадобится.


Это защита от злой горничной и cold-boot, а тема статьи
Чего стоит и чего не стоит бояться (аппаратные бэкдоры и проприетарные прошивки)

Автор переборщил с VMWare и эпоксидкой.
— unknown (11/11/2013 12:11)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Подземный бункер Intel? или АНБ? Где якобы занимаются разработкой эксплойтов для железа. Возможно там их и встраивают. Если это всё правда. Так это или нет, но легальное прикрытие вида «разрабтка железа для секретных заказов и собственных нужд» всегда найдётся.
— Гость (11/11/2013 12:14)   <#>
coreboot – это жалкая пародия на открытость, т.к. наполовину состоит из закрытых блобов. Впрочем, мои ковыряния BIOS говорят что иное в принципе невозможно, никакое сообщество не сможет написать например MemoryInit стадию, ибо там находится поразившее меня количество hardware-specific костылей и подпорок, работающих с недокументированными особенностями железа. Открытых BIOS не будет, если только кто-то из крупных игроков не решит открыть исходники, а это врядли. Сторонним программистам, не работающим в тесной связке с производителями железа, никогда в жизни это не написать, имеющейся документации совершенно недостаточно.
На страницу: 1, 2, 3, 4, 5, ... , 10, 11, 12, 13, 14 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3