id: Гость   вход   регистрация
текущее время 14:42 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/05/2014 07:15)   <#>
Гость (26/05/2014 18:05)
Все хуже. Этот «документ» не доступен по https, значит для gpg4win тоже. Значит мой местный провайдер видел на какую именно из страниц сайта gpg заходил и мог даже автоматически подменить «документ» на фальшивку.


И здесь хуже. Анонимность теряет оставленная мною эта серия сообщений. Пользователей из России обратившихся по открытому каналу к сайту pool.sks-keyservers.net в течении суток немного, еще меньше их среди пользователей Tor. Почитав мой пост, штатный полковник прапорщик Ф%C%Б приставленный к pgpru.com запросит данные С0%PМ и сопоставит. Конечно здесь нужна ручная работа. Если он до сих пор это не сделал, то он просто лох и зря получает свой паек.

Я сразу не сообразил. Надо для надежности отрубать интернет при работе с gpg4win или как-то откючить его сетевой интерфейс. Даже нет гарантии что gpg не работает с сетью, если в некоторой команде нет url. Он может по умолчанию посылать запрос на стандартный адрес.


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


Гость (26/05/2014 18:13)
У меня оно странно работает. Оно не ищет полное имя существующего файла по началу пути, а набирает по букве предыдущую введенную команду, включая кусок с "gpg --verify".


Я так и сделал, уже сталкивался с текстовым кодированием.
Использую AkelPad
— unknown (28/05/2014 10:44, исправлен 28/05/2014 10:46)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Возможные пути обхода внутриприсущих ограничений PGP можно продолжить обсуждать в темах:
Почему сети доверия PGP так беспомощны, 13 причин не прибегать к использованию PGP.

— Гость (28/05/2014 11:13)   <#>
Почитав мой пост, штатный полковник прапорщик Ф%C%Б приставленный к pgpru.com запросит данные С0%PМ и сопоставит. Конечно здесь нужна ручная работа. Если он до сих пор это не сделал, то он просто лох и зря получает свой паек.

По моему наоборот – лох, если по-собачьи усердно выполняет любую инструкцию начальства. А может прозрел и втихую саботирует, тогда молодец, и паёк не зря ест.
— sentaus (28/05/2014 11:29)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
Но она не видит содержимое текстовых форм браузера и других программ, набранный текст можно редактировать прямо в форме перемещая курсор мышкой и затирая лишние буквы.

Если эти формочки нарисованы каким-нибудь стандартными виндовыми средствами, то где гарантия, что на них не навешаны какие-нибудь onChange события?
— SATtva (28/05/2014 11:33)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Но она не видит содержимое текстовых форм браузера и других программ, набранный текст можно редактировать прямо в форме перемещая курсор мышкой и затирая лишние буквы. Можно вводить текст мышкой с опенсурсной виртуальной клавы и передать его браузеру или gpg через файл или через потоки данных, винда их содержимое не фильтрует.

Феерия. По-вашему, ОС не имеет доступ к собственной подсистеме GUI и всему вводу-выводу? То есть Вы допускаете злонамеренность ОС, но какие-то исполняемые в ней приложения считаете доверенными? У Вас очень странная модель угрозы.
— Гость (29/05/2014 05:07)   <#>

Какая разница, как вы скачиваете, если вы скачиваете через Tor? Подлинность ключа проверяется не благодаря https, а иным образом: сети доверия, получение отпечатка через доверенный источник, получение отпечатка через множество независимых источников, через проверку подписей на ключе и т.д. В конце концов, найти и скачать ключ можно даже через местный интерфейс.


В России несколько тысяч пользователей Tor'а. Возможно, даже десятков тысяч. Сам факт того, что кто-то его решил запустить и проверить ключи, малоинформативен, чтобы начинать за вами прицельную тотальную слежку. Наконец, использование анонимных сетей пока что не нарушает никаких законов РФ.


Я не могу гарантировать, что интерфейсная надстройка gpg4win не лазит в сеть когда не надо, но про обычный gpg такого точно не слышал. Т.е. если вы не используете команды работы с сетью (запрос ключа, отправка ключа, синхронизация ключей), а ограничиваетесь только шифрованием, расшифрованием, подписыванием и проверками подписи, то gpg в сеть не пойдёт. Если параноя мучает, есть файерволл, в конце концов. И, да, url тут ни при чём. Если он не указан, используется стандартный.

Вообще, если вы запустите TBB, будет и так видно, что вы используете Tor. Раскрытие теперь того факта, что вы ещё и ключ их разработчиков скачали, мало что даёт на фоне общей картины.


Если вы считаете ОС злонамеренной, то она может видеть всё. Во всяком случае, потенциально может. И любой зловред с административными полномочиями, запущенный в ОС, тоже может. Это разумная рабочая гипотеза. Ваши попытки спрятаться от этого — вытягивание самого себя из болота за волосы. Не поможет вам ни мышка от этого, ни gpg. Всю вашу эквилибристику потенциально можно расковырять. Защита, которая полагается на тупость зловредов и игру в прятки с ними — не защита, а фикция.
— Гость (29/05/2014 06:44)   <#>

Защита от целенаправленной разработки, например, трёхбуквенными агентствати также не защита, а фикция – это даже в эпиграфе дпнного сайта говорится, а вот в случае отсутствия целенаправленного интереса именно к вашей персоне всякие нестандартности могут оказаться полезными. Ну и потом мы живем в вероятностном мире, и просто понижать риски тоже имеет смысл – иначе бы, например, в армиях не использовались каски и бронежилеты – всё равно же против снайпера и бомбы не помогут.
— Гость (29/05/2014 06:54)   <#>
Экономика, опять же – разрабатывать кого-то целенаправленно – дорого. И "принцип медведя" – надо просто быть защищённым чуть лучше, чем остальные. :)
— Гость (29/05/2014 08:01)   <#>

С этим принципом лучше не переусердствовать, а то получается не защищённость, а банальная самопсихотерапия и самоуспокоение. Часто когда имплементят полумеры, нету даже внятного обоснования, где и в каких случаях они помогут, где не помогут; какова вероятность, что будут приняты (из миллиона возможных) именно те атаки, против которых полумера поможет и т.д. Это не должно быть в виде «мы сделали хоть что-нибудь, лишь бы было».

Одеть каску на ногу от чего-то тоже поможет, и можно даже успокаивать себя тем, что другие не сделали даже этого, а я сделал, вот только если будут стрелять в голову, каска на ноге — фикция.
— Гость (29/05/2014 17:42)   <#>
Гость (28/05/2014 11:13)
Для начальства он дармоед.


Либералмажорчики не прозревают, они быдло ненавидят и воспевают тотальную слежку.


sentaus (28/05/2014 11:29)
SATtva (28/05/2014 11:33)
У программы и браузера может быть свое библиотечное GUI. Для винды постороннее гуи это обезличенный процесс.


Бинарные файловые потоки слишком объемны, в отличие от клавиатурного ввода, фильтровать и пересылать их накладно и заметно. Винда не знает что именно искать, нужна работа человека.
Но если софт стандартный, то винда конечно может содержать автоматический взломщик под него, фальсифицировать результаты его работы (подтвердить ложный ключ). Лучше пользоваться обусцированной версией криптософта (или, что равносильно, запускать под виртуалкой) или написать свой.


Гость (29/05/2014 05:07)
Важен не этот факт, а его упоминание здесь. Смотрящий за сайтом сможет профилировать мое сообщение.
— SATtva (29/05/2014 18:02)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
У программы и браузера может быть свое библиотечное GUI. Для винды постороннее гуи это обезличенный процесс.

Речь о графической подсистеме в целом (GDI), которую не обойдёт ни одно графическое приложение.

Винда не знает что именно искать, нужна работа человека.

Вам это доподлинно известно? Вы видели исходники Windows? Вы можете поручиться, что она не имеет специализированной функции по передаче OpenPGP-ключей в "центр"?
— Гость (29/05/2014 18:44)   <#>
SATtva (29/05/2014 18:02)
Даже если работает только с bmp картинками и мышкой в качестве графоболочки? В любом случае это работа с картинками, редактирование текста вне поля зрения винды.


Сначала его нужно опознать как OpenPGP-ключ. Это трудно, когда не используется командная строка, а тем более когда не используется стандартный софт. Но я говорил о наборе конфиденциального текста в браузер-форму (пароли) или в блокнот.
— SATtva (29/05/2014 18:52)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Даже если работает только с bmp картинками и мышкой в качестве графоболочки?

Да с чем угодно, GDI является интерфейсом к графическому харду. Винда же не через libastral.dll посылает образы юзеру в моск.

Сначала его нужно опознать как OpenPGP-ключ. Это трудно, когда не используется командная строка, а тем более когда не используется стандартный софт.

Это абсолютно тривиально, так как формат OpenPGP стандартизирован. Даже без всяких стандартов развёрнутые ключи симметричных шифров зачастую имеют сравнительно легко опознаваемую в памяти структуру.
— Гость (30/05/2014 02:39)   <#>

Вы доверяете MS, MS доверяет АНБ, АНБ доверяет ZOG. Судя по откровениям АНБ, винда может влёгкую предоставлять удалённое управление к себе. Конкретных пруфов нет, но соображения такие есть. Всякие хардварные закладки и прочие буткиты от производителя будут затачиваться, в первую очередь, под винду. Вы также доверяете обновлениям MS, а обновления от MS могут содержать персональный троян под вас. В сноуденовских документах есть предостаточно информации о том, как управляются сети из десятков тысяч взломанных машин, к каждой из которых у АНБ есть полный доступ. Работа человека там минимализирована. Даже информацию, которую у вас украдут, будут анализировать машины, и не важно, будет это текст, голос, видео или фото. Человек получает уже готовый обзорный отчёт на тему того, кто вы, что, и чем можете быть им полезны или вредны. Считайте, что винда может в любой момент дать внешнему наблюдателю подключиться к вам удалённо и в режиме реального времени видеть как всё изображение с вашего монитора, так и ваши движения мышкой. Попробуйте спрячьтесь, ага.


Кулхацкеры, скрипткидди и прочие самоучки 90-ых на марше. Нет пока толком никакой научно обоснованной обфускации, как и доказательств того, что она реально существенно затрудняет анализ чего бы то ни было. Остаётся лишь набор эвристических уловок, верований и прочих обрядов. Даже Skype — и тот основательно проанализировали ещё до слива Майкрософту.


И следящий и смотрящий уже более года как не обращают никакого внимания на этот сайт.
— unknown (30/05/2014 09:41)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Lest We Remember: Cold Boot Attacks on Encryption Keys, AESFix: Error-correction for AES key schedules:

This program illustrates automatic techniques for locating 128-bit and
256-bit AES keys in a captured memory image.
.
The program uses various algorythms and also performs a simple entropy test to filter out blocks that are not keys. It counts the number of repeated bytes and skips blocks that have too many repeats.
.
This method works even if several bits of the key schedule have been
corrupted due to memory decay.
На страницу: 1, 2, 3, 4, 5, ... , 10, 11, 12, 13, 14 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3