id: Гость   вход   регистрация
текущее время 09:14 19/03/2024
Автор темы: Гость, тема открыта 19/10/2013 22:46 Печать
Категории: софт, инфобезопасность, политика, защита дисков, уязвимости, хард, атаки, программные закладки, закрытый софт, спецслужбы, жучки/кейлоггеры
http://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 След.
Комментарии
— Гость (19/10/2013 22:55)   <#>
Шрифты в оглавлении перекашивает почему-то. Так и не смог понять, чего им не хватает.

Ссылки оглавления забыл проверить, а они нерабочие. :( Проставлял якоря арабскими цифрами N, а движок их заменил на ftndN. Исправьте их, пожалуйста, на что-нибудь более совместимое с движком. «Подробнее про vPro/AMT» — единственная рабочая ссылка, т.к. у неё якорь цифра+буква, а не просто цифра.
— Гость (20/10/2013 10:03)   <#>

А смысл выявления, если практической альтереативы не будет?

Вот на некоторых заводах, например TSMC на Тайване, пока что можно заказывать свои чипы:
Bitfury – вероятно один из немногих (если не единственный) крупносерийных микроэлектронных проектов в бывшем СССР, который был запущен без гос.финансирования, и не в интересах зарубежных заказчиков.

Выявлени бекдоров ещё имеет и такие трудности:
55нм это уже по меньшей мере в 5 раз меньше того, что можно увидеть в оптический микроскоп, так что самые мелкие детали реализации от нас пока останутся скрыты... .
— SATtva (20/10/2013 16:15)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Не изобретайте велосипед, для оглавлений есть стандартный {{toc}}. Он бесполезен разве что в комментариях из-за их контекстной привязки к основному документу.
— Гость (20/10/2013 16:22)   <#>
Аппаратные закладки внедряются на стадии физического производства фотошаблона, каждый экземпляр которого снабжается электронной подписью АНБ. Поскольку сейчас это оборудование производится только по технологиям США, то все производимые сейчас микросхемы содержат закладки. Вся западная микроэлектроника ВСЕГДА СОДЕРЖАЛА АППАРАТНЫЕ ЗАКЛАДКИ. Электроники без закладок нет ни у кого, даже у АНБ. Даже в ноутбуке у Ротшильда в каждой микросхеме сидит закладка. Пидopасы не могут по другому.
Все существующие сейчас литографические машины тоже производятся по технологиям США, и если физический фотошаблон не имеет электронной подписи от АНБ, станок его не будет производить.

Только в СССР и социалистической Восточной Европе умели делать и делали микроэлектронику без закладок, но это производство было уничтожено. Возможно что-то сохранилось в Беларусии. Нужно покупать белорусские микросхемы.
— Гость (20/10/2013 16:39)   <#>
Гость, уязвимости содержит абсолютное большинство систем. Я уверен, что такие крупные игроки вроде СССР также внедряли закладки и скрытые уязвимости. Но в простые системы вроде логических микросхем очень сложно внедрить закладку. Сделайте реализацию AES на логических элементах и никаких закладок там не будет. Чем проще система, тем она надежнее. Откуда инфа про электронную подпись литографических шаблонов? Можно увидеть пруфлинк?
— unknown (20/10/2013 20:25, исправлен 20/10/2013 20:34)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Специалисты по микроскопам и фотошаблонам, объясните смысл работы, ссылка на которую дана в блоге Шнайера.


Там аппаратный троян внедряют в (почти) готовый современный процессор Intel, не имея фотошаблонов, доступа к его производству (точнее, нужно иметь доступ на его финальной стадии — формирования чипа?), и используя не самые дорогостоящие технологии сканирования чипов. Или я что-то не так понял? Откуда у них на фотках внутренности реального современного проца Intel? И участки, которые они перемкнули для получения трояна?

— Гость (20/10/2013 20:34)   <#>


Зачем? Для кого?


Простую закладку можно.


В электронной версии схемы может и не будет. А в ее физическом фотошаблоне уже будет внедрен, автоматом. Какая-нибудь стандартная закладка не привязанная к исходной схеме должна быть.


Ниоткуда. Не можно.
Это обоснованное предположение. У США есть все возможности сделать это, есть большое желание сделать это, ЗНАЧИТ ОНИ ЭТО СДЕЛАЛИ. С какой стати они позволят китайцам и прочим азиатам клепать процессоры и чипы на самостоятельно разработанных схемах, да еще и без закладок? Зачем они уничтожали всю советскую микроэлектронику, даже самую отсталую?
— Гость (20/10/2013 21:10)   <#>

У меня есть все возможности сделать это*, есть большое желание сделать это, ЗНАЧИТ Я ЭТО СДЕЛАЛ.

Когда наступит час Х и Штаты нажмут заветную красную синюю кнопку для восстания машин и слива всех фоток с контакта и фейсбука?


*Переспать Соединиться в акте чистой и светлой любви с Мариной из 7 "в" параллельного класса. Но я этого не сделал...(( в этом вся разница между мной и США? Или мы с США в этом аспекте весьма схожи? Нет. Т. к. я Марину принуждать демократизатором и навязывать свои демократические идеалы не буду.
— Гость (20/10/2013 23:25)   <#>

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


Все так и поняли.


В слово «уничтожение» можно вкладывать столь же широкий смысл, как и в слово «убытки» (читай «недополученная прибыль»).


Ваш {{toc}} выглядит отвратительно. Мелкий жирный шрифт делает всё сливающимся. Да и вообще, с какой стати всё оглавление целиком должно печататься более мелким шрифтом, чем основной текст? Где вы такое видели? Если бы вид {{toc}} хоть как-то настраивался, можно было бы о чём-то вести речь.
— Гость (21/10/2013 02:52)   <#>

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

Почему будет? ЕСТЬ И БЫЛО. Западная микроэлектроника С МОМЕНТА ВОЗНИКНОВЕНИЯ всегда оснащалась закладками, то есть уже лет сорок или больше. Это же БОЛЬШОЙ БИЗНЕС.

Слово «уничтожение» имеет здесь самый прямой смысл: разбили оборудование кувалдами и вывезли на свалку. Уничтожение в директивном порядке, по приказу из США, а не в результате рыночной борьбы и банкротства. Уничтожение, после захвата власти в СССР кocыгинско-aндpoповско-гусевской кликой (ВнешТорг+KГБ+ГPУ) – это как раз время убийства Брежнева и Черненко, дальнейшего переподчинения всего советского госаппартата (КПСС+армия+милиция+промдиректорат) под управление американских монополий и передачи им всей советской собственности (включая советскую электронную промышленность) – это период от перестройки до октября 93-го. Заполчив в полное распоряжение всю советскую электронную промышленность, монополии США тут же ее уничтожили.
— Гость (21/10/2013 04:03)   <#>
Замечания по статье:

– В основе общего использования сетевого адаптера для AMT и основной системы лежат не VLAN-ы, а L4-коммутация: должным образом запрограммированная сетевая карта при получении пакета смотрит в заголовки TCP пакета (IP-адрес, порт, MAC-адрес) и, если она понимает, что он предназначается AMT-фирмвари, он перенапрваляется на ее интерфейс, иначе – системе. Собственно, современные версии AMT могут даже делить MAC и IP адрес с ОС.

– Непонятно, почему DisplayPort опасен. DisplayPort != Thunderbolt. Последний является скомпонованными интерфесом к PCI-E шине и DisplayPort интерфейсом видеоадаптера. То, что они имеют одинаковый форм-фактор, DisplayPort опасным не делает.

– Про UEFI и BIOS вообще половина – извините, бред. Столь любимый автором статьи "режим совместимости с BIOS" есть ни что иное, как дополнительный CSM-модуль в UEFI. Т.е. включение режима совместимости не делает систему защищеннее, поскольку тогда загружается и получает управление дополнительный код, притом проприетарный (если большая часть UEFI имеет открытые исходники (т.к. собирается на основе референсного EDK2), то CSM ВСЕГДА проприетарен). При этом основной код UEFI никуда не исчезает.
Про резидентные драйверы UEFI, работающие одновременно с ОС – это тоже лишь мечты (которые разбились о реальность) вендоров на заре создания технологии о том, чтобы ОС использовали универсальные UEFI-драйверы. Все современные ОС и загрузчики выгружают сервисы UEFI при старте.
— Гость (21/10/2013 04:15)   <#>
И еще замечание по поводу SSD: у них есть возможность стереть всю информацию с них за пару минут без возможности восстановления. Несмотря на то, что этот механизм закрытый, корректность его работы несложно верифицировать. Этим они могут оказаться намного ценнее, чем HDD.
— Гость (21/10/2013 07:58)   <#>

Не вижу противоречий между тем, что пишете вы, и тем, что сказано в тексте:

SSD не позволяет скрывать, какие из ячеек диска свободные, а какие нет, поэтому для криптографии HDD в целом лучше и традиционней. Из-за этого свойства SSD категорически не дружит ни с отрицаемым шифрованием, ни с отрицанием шифрования.

Это просто предупреждение тем, кто хочет иметь отрицаемое шифрование (читай, TrueCrypt) или отрицание шифрования. И, да, нажать на заветную кнопку в нужный момент вы можете не успеть — за тем отрицаемое шифрование / отрицание шифрования и разрабатываются.

С обычным шифрованием в Linux тоже вроде были проблемы при использовании полнодискового шифрования (судя по постам, как я понял, Linux не умел сообщать микроконтроллеру, какие блоки шифрованной ФС свободны, а какие нет, из-за чего увеличивался износ — с т.зр. микроконтроллера свободных блоков вообще не было). Решена ли эта проблема в современных версиях Linux/cryptsetup — не знаю.

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

Если прогуглить тему как TRIM site:pgpru.com, можно найти старые посты, где всё это в красках обсуждалось.
— SATtva (21/10/2013 09:29)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Ваш {{toc}} выглядит отвратительно. Мелкий жирный шрифт делает всё сливающимся. Да и вообще, с какой стати всё оглавление целиком должно печататься более мелким шрифтом, чем основной текст? Где вы такое видели? Если бы вид {{toc}} хоть как-то настраивался, можно было бы о чём-то вести речь.
Вы так говорите, как будто просите изменить его вид уже лет 5. Простите, Вашу голову пока не зарутал и не знал, что у Вас именно такие претензии к {{toc}} (помимо его неработоспособности в комментариях).
— unknown (21/10/2013 10:00)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Проблемы с TRIM при полнодисковом шифровании.

Если безопасность для вас важнее ресурса износостойкости SSD, то в для cryptsetup предусмотрены опции отключения TRIM.
На страницу: 1, 2, 3, 4, 5, ... , 10, 11, 12, 13, 14 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3