Паранойя на марше: замена BIOS на Coreboot

Паранойя на марше: замена BIOS на Coreboot  

  By: PRSG on 2019-03-12 11 ч.

Паранойя на марше: замена BIOS на Coreboot

runion_exclusive.png

Пара вступительных слов

Приветствую, форумчане! По не самым радужным причинам почти два года не имел возможности сюда зайти. За это время пришлось переосмыслить самые разные жизненные аспекты, и многое пересмотреть. На день рождения Runion захотелось чем-то с вами поделиться. Электронщики 80lvl вряд ли найдут здесь нечто новое, но надеюсь сподвигну среднепродвинутого пользователя на устранение серьезной дыры в безопасности. Скромно замечу, что на русском языке не нашел ничего подобного и настолько подробного.

Речь пойдет про устранение закладок которые таит в себе современное железо, которые нельзя обойти просто используя открытую операционную систему. Обсуждение было в отдельной теме на форуме, вот еще неполный список возможных угроз. Конечно можно купить ноутбук без Intel ME, но помимо него в заводском BIOS остается иной закрытый код вида "незнамочо". Много лет назад до этого додумались хорошие люди и разработали свободные альтернативы BIOS: Coreboot и Libreboot.

"Рыночек порешал", в продаже есть проошитые ноутбуки. Однако, по множеству причин это лучше делать самому. От "зачем кормить барыг" и все равно когда выйдет обновление придется изучать процесс чтобы перешивать самостоятельно. До например, вы не можете идти на почту и банковской карты у вас тоже нет. Также, если в вас дух исследоваталя и экспериментатора сильнее сиюминутной потребительской страсти, предлагаю к ознакомлению и повторению эту статью.

Подбор компонентов

Все необходимое у вас либо уже есть, либо свободно продается в местных магазинах крупных городов. Нам понадобятся:

1. Ваш нынешний ноутбук или ПК

2. Программатор CH341A с проводом-прищепкой-SOIC8
Во многих мануалах используются Raspberry, но с программатором процесс на мой взгляд обстоит намного проще. Провод с прищепкой может быть дешевый китайский (как на фото ниже) или модные Pomona, разницы при редком использовании нет, берите какой найдете.

3. Малая крестовая отвертка и пластиковая карточка (например любая скидочная) для разборки ноутбука.
(опционально: тюбик термопасты, кисточка смахнуть пыль внутри, еще пригодится лупа если зрение не очень. Также если вы привыкли к такому подходу или если делаете устройство для кого-то, то пара нитриловых перчаток)

4. Прямые руки, внимательность, запас терпения и времени

5. Устройство, которое мы будем прошивать — я выбрал ноутбук. Для удобства далее он иногда будет именоваться "ноутбук-пациент"
Большой Брат позаботился о нас настолько, что заменить проприетарный BIOS и заодно отключить Intel ME можно на очень небольшом списке устройств.

Примерный список подходящих ноутбуков выглядит так:
Coreboot: Lenovo ThinkPad X201, X220, X230, T420, T430 (полный список устройств здесь)
Libreboot: Lenovo ThinkPad X60, X60s, X60 Tablet, X200, X200 Tablet, R400, T400, T500, Apple MacBook 1.1 и 2.1, Asus Chromebook C201 (полный список устройств здесь)
(не все устройства из списков и железо в них поддерживаются полностью, подробнее узнаете там же по ссылкам)

Разница между ними следующая:
Coreboot — свободная альтернатива BIOS с открытым исходным кодом, лишь некоторые небольшие участки кода берутся из заводского BIOS ("блобы", степень их опасности и подробности здесь).
Libreboot — тоже самое, но без этих блобов, т. е. только полностью открытый код и чуть более простой процесс прошивки. Минус в том, что железо которое он поддерживает менее производительное и его сложнее найти в приемлимом состоянии. Еще он не поддерживает Windows, если вам вдруг это важно.

По итогу полученные профиты от перепрошивки:

  • открытый код

  • выпиливается Intel ME

  • загрузка ОС происходит быстрее

  • возрастает безопасность, в обращении с ОЗУ например

  • удаляется "одобренный список" Wi-Fi адаптеров присутствующий во многих ThinkPad, т. е. появится возможность использовать адаптеры с открытыми драйверами

  • полнодисковое шифрование становится действительно таковым, /boot раздел также можно зашифровать (нужно выбрать GRUB в качестве Payload)

  • код Coreboot/Libreboot занимает существенно меньше места, в освободившееся место можно воткнуть небольшую ОС типа KolibriOS, или игры вроде тетриса (основная причина почему я вообще в это ввязался) т. е. загрузить их можно без флешек и жестких дисков

Изначально я хотел именно Libreboot, но не нашел подходящей для него модели в приличном состоянии. Я искал с живучей батареей и, на всякий случай, с процессором который не поддерживает Intel vPro (проверить — вбить модель в этот поиск), попался под руку Lenovo ThinkPad X230. Для него подойдет Coreboot и после прошивания останутся несколько блобов и будет возможность запуска Windows (с внешнего диска, например) если выбрать SeaBIOS. Именно на примере X230+Coreboot будет описано данное руководство. Когда-нибудь и этот ноутбук придется менять и я дополню статью таким же опытом уже с Libreboot, будем надеяться у меня будет такая возможность.

Подготовка компонентов

1. Ваш нынешний ноутбук или ПК
Я использовал live образ Debian 9, возможно подойдут и другие дистрибутивы, проверяйте сами. Открываем терминал.
(Напоминаю для новичков, что команду нужно копировать после значка "$" и затем вставлять в терминал).

1) Устанавливаем необходимые пакеты:

user@debian:~$ sudo apt update && sudo apt upgrade
user@debian:~$ sudo apt install -y bison build-essential curl flashrom flex git gnat libncurses5-dev m4 zlib1g-dev

2) Создаем 2 папки:

user@debian:~$ mkdir -p ~/X230/bios-backup

3) Готовим Coreboot:

user@debian:~$ cd ~/X230/
user@debian:~/X230$ git clone https://review.coreboot.org/coreboot
user@debian:~/X230$ cd coreboot
user@debian:~/X230/coreboot$ git submodule update --init --checkout
user@debian:~/X230/coreboot$ make crossgcc-i386 *****US=$(nproc)

2. Программатор CH341A с проводом-прищепкой-SOIC8

Смотрим Видео по работе с программатором (тысячи их там же), самое важное соблюдать нумерацию, все 1 (они же — единицы, они же — ключи) подключать между собой. То есть:
mini_ch341a.jpg
Красный провод идущий к прищепке это 1.
Площадка к которой крепится провод также содержит нумерацию и красный провод должен быть соединен к 1 на площадке.
Затем, смотрим на программатор (USB разъем смотрит влево): на программаторе снизу справа есть выбор 25XX или 24XX, справа вверху — будет 1, как указано в подсказке там же), поднимаем лапку вверх и площадку устанавливаем в левую часть, надежно вставили и опустили лапку вниз. Смотрите видео если вдруг непонятно.
Также 1 это ключ (выемка или углубление) чипа на материнской плате ноутбука (в который зашит BIOS), соответственно 1 к 1 т. е. красный провод прищепки должен соединяться к ножке рядом с этой выемкой.
mini_mx.jpg
И последнее что важно помнить, сначала убеждаемся, что на устройстве которое мы собрались прошить нет питания (отсоединена внешняя батарея, зарядка, внутренняя батарейка), потом подключаем прищепку к чипу, только после этого вставляем программатор в USB-разъем текущего ноутбука или ПК. Отключение в обратном порядке — вытаскиваем программатор, затем снимаем прищепку.

3. Ноутбук-пациент для прошивки
1) Первым делом обновляем заводской BIOS до последней официальной версии.
(необязательно, но на всякий случай я это сделал: настройки BIOS сбросил на заводские и разрешил прошивку)

2) (опционально) Если хотите сделать апгрейд железа лучше всего для начала протестировать работу новых компонентов на заводском BIOS. И только после этого приступать к прошивке Coreboot.

3) Отсоединяем зарядку и батарею, после этого (опционально: одеваем перчатки) приступаем к разборке ноутбука:
Видео по разборке (тысячи их)
Официальные мануалы:
User Guide
Hardware Maintenance Manual (ниже указаны страницы по оглавлению)

4) Разобрав ноутбук-пациент выкидываем из него лишние детали (не во всех исполнениях все это есть):
WLAN — с. 68 — все встроенные варианты Wi-Fi адаптеров этого ноутбука требуют проприетарные драйвера, они будут работать на том же Tails (привет "параноикам") так как там полно блобов для поддержки различного оборудования, но не заработают на чистом Debian. Заменить их на адаптеры использующие свободные драйвера и поддерживающие смену MAC адреса, это или адаптеры фирмы Atheros (AR9285, AR9382 и т. п.), или USB-адаптеры (различных размеров и функционала на любой вкус).
WWAN — с. 70
Bluetooth — с. 74
Сканер отпечатков пальца — расположен рядом с тачпадом, откручивается элементарно или просто отсоединяется шлейф.
Микрофоны — с. 88 — их два, находятся на планке вместе со светодиодами. Удаляются вместе с планкой.
Камера — с. 86
(опционально: удаляем кисточкой пыль, меняем термопасту)

5) Отсоединяем внутреннюю батарейку (с. 65).

6) Находим чипы в которых записан текущий BIOS. Их два, находятся примерно под тачпадом. Выглядят вот так:
mini_X230_chips.jpg
Верхний на 4 МБ, нижний на 8 МБ. Считывать и прошивать будем оба.

7) Считайте своими глазами (опционально: с помощью лупы, а если чипы заляпаны аккуратно протрите их тканью) и запишите где-нибудь буквы и цифры которые указаны на этих чипах, например "MX25L3206E" и "MX25L6406E", они нам понадобятся на следующем этапе.

Процесс прошивки

Многие команды терминала взяты отсюда. Видеопроцесс прошивки через Raspberry.

1. Делаем backup ВЕРХНЕГО чипа заводской прошивки
Присоединяем прищепку к верхнему чипу. Помним, что красным проводом к выемке на чипе и все остальное о чем сказано выше. Как только соединение выглядит надежно вставляем программатор в порт нынешнего ноутбука или ПК. Выглядеть это будет примерно так:
mini_x230-connected.jpg
(отличие будет только в способе крепления прищепки к программатору)

1) Идем в папку:

user@debian:~$ cd ~/X230/bios-backup

2) Читаем (пока только читаем) ВЕРХНИЙ чип:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi

3) Вывод должен быть таким:

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L3205(A)" (4096 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L3205D/MX25L3208D" (4096 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L3206E/MX25L3208E" (4096 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L3273E" (4096 kB, SPI) on ch341a_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L3205(A)", "MX25L3205D/MX25L3208D", "MX25L3206E/MX25L3208E", "MX25L3273E"
Please specify which chip definition to use with the -c <chipname> option.

(Если вывод другой, значит вы что-то сделали не так, скорее всего нужно отсоединить программатор и проверить соединение прищепки к чипу. Потом снова повторить чтение).
Смотрим какое обозначение мы считали своими глазами с чипа, выбираем его группу из этого списка ("MX25L3205(A)", "MX25L3205D/MX25L3208D", "MX25L3206E/MX25L3208E", "MX25L3273E") и эту группу дальше вставляем вместо моей.

4) Делаем ПЕРВЫЙ дамп ВЕРХНЕГО чипа:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi -r factory_top-1.bin -c "MX25L3206E/MX25L3208E"

5) Делаем ВТОРОЙ дамп ВЕРХНЕГО чипа:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi -r factory_top-2.bin -c "MX25L3206E/MX25L3208E"

6) Сверяем контрольные суммы дампов:

user@debian:~/X230/bios-backup$ sha512sum factory_top-*

Если суммы совпадают значит считали верно и идем к следующему шагу, если нет — начинаем все заново.

7) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу
2. Делаем backup НИЖНЕГО чипа заводской прошивки
1) Читаем (пока только читаем) НИЖНИЙ чип:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi

2) Вывод должен быть таким:

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6405" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6405D" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi.
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" (8192 kB, SPI) on ch341a_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E"
Please specify which chip definition to use with the -c <chipname> option.

(Если вывод другой, значит вы что-то сделали не так, скорее всего нужно отсоединить программатор и проверить соединение прищепки к чипу. Потом снова повторить чтение).
Смотрим какое обозначение мы считали своими глазами с чипа, выбираем его группу из этого списка ("MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E") и эту группу дальше вставляем вместо моей.

3) Делаем ПЕРВЫЙ дамп НИЖНЕГО чипа:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi -r factory_bottom-1.bin -c "MX25L6406E/MX25L6408E"

4) Делаем ВТОРОЙ дамп НИЖНЕГО чипа:

user@debian:~/X230/bios-backup$ sudo flashrom -p ch341a_spi -r factory_bottom-2.bin -c "MX25L6406E/MX25L6408E"

5) Сверяем контрольные суммы дампов:

user@debian:~/X230/bios-backup$ sha512sum factory_bottom-*

Если суммы совпадают значит считали верно.

6) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу

3. Сохраняем всю папку /bios-backup в надежное место, на случай если дальше что-то пойдет не так

4. Готовим прошивку Coreboot
1) Соединяем 2 дампа в один файл:

user@debian:~/X230/bios-backup$ cat factory_bottom-1.bin factory_top-1.bin > X230-bios.rom

2) Берем блобы из заводского BIOS для дальнейшего использования:

user@debian:~/X230/bios-backup$ cd ~
user@debian:~$ ***** ~/X230/bios-backup/X230-bios.rom ~/X230/coreboot/util/ifdtool/
user@debian:~$ cd ~/X230/coreboot/util/ifdtool/
user@debian:~/X230/coreboot/util/ifdtool$ make
user@debian:~/X230/coreboot/util/ifdtool$ ./ifdtool -x X230-bios.rom
user@debian:~/X230/coreboot/util/ifdtool$ mkdir -p ~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230
user@debian:~/X230/coreboot/util/ifdtool$ mv ~/X230/coreboot/util/ifdtool/*.bin ~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230
user@debian:~/X230/coreboot/util/ifdtool$ cd ~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230
user@debian:~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230$ rename 's/.{14}//' *.bin
user@debian:~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230$ mv flashdescriptor.bin descriptor.bin
user@debian:~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230$ mv intel_me.bin me.bin
user@debian:~/X230/coreboot/3rdparty/blobs/mainboard/lenovo/x230$ cd ~/X230/coreboot/

3) Компилируем нашу новую прошивку:
3.1) Выполняем команду:

user@debian:~/X230/coreboot$ make nconfig

3.2) Устанавливаем следующие настройки, сохраняем и выходим:
mini_nconf.png

3.3) Выполняем команду:

user@debian:~/X230/coreboot$ make

(опционально) 4) Добавляем приоритет загрузки
После прошивки у нас не будет привычных настроек BIOS (все будет выглядеть совершенно иначе) например, необходимый мне приоритет загрузки нужно сформировать заранее и добавить в .rom до прошивки. Итак, в моем случае, приоритет по порядку: порты USB3.0, порт USB2.0, SATAIII, SATAII (слот WWAN в него можно установить SSD диск). Для этого:
4.1) Создаем файл:

user@debian:~$ nano ~/X230/coreboot/mybootlist.txt

4.2) Записываем в него и сохраняем:

/pci@i0cf8/usb@1d/hub@1/storage@1/*@0/*@0,0
/pci@i0cf8/usb@1d/hub@1/usb-*@1
/pci@i0cf8/usb@1d/hub@1/storage@2/*@0/*@0,0
/pci@i0cf8/usb@1d/hub@1/usb-*@2
/pci@i0cf8/usb@1a/hub@1/storage@2/*@0/*@0,0
/pci@i0cf8/usb@1a/hub@1/usb-*@2
/pci@i0cf8/*@1f,2/drive@0/disk@0
/pci@i0cf8/*@1f,2/drive@2/disk@0

4.3) Выполняем команды:

user@debian:~$ cd ~/X230/coreboot/util/cbfstool/
user@debian:~/X230/coreboot/util/cbfstool$ make
user@debian:~/X230/coreboot/util/cbfstool$ cd ~/X230/coreboot/
user@debian:~/X230/coreboot$ ./build/cbfstool build/coreboot.rom add -f mybootlist.txt -n bootorder -t raw

4.4) Проверим добавление:

user@debian:~/X230/coreboot$ ./build/cbfstool build/coreboot.rom print

Должна появиться строка "bootorder" ближе к концу списка.

5) Делим созданный .rom на две части (для каждого чипа свой .rom):

user@debian:~$ cd ~/X230/coreboot/build
user@debian:~/X230/coreboot/build$ dd if=coreboot.rom of=coreboot-bottom.rom bs=1M count=8
user@debian:~/X230/coreboot/build$ dd if=coreboot.rom of=coreboot-top.rom bs=1M skip=8

5. Прошиваем Coreboot

ВЕРХНИЙ ЧИП:
1) Читаем (пока только читаем) ВЕРХНИЙ чип:

user@debian:~/X230/coreboot/build$ sudo flashrom -p ch341a_spi

2) Если он не считался — проверяем соединение и т. д., если считался — прошиваем:

user@debian:~/X230/coreboot/build$ sudo flashrom --chip "MX25L3206E/MX25L3208E" --programmer ch341a_spi --write coreboot-top.rom

3) Вывод должен быть таким:

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L3206E/MX25L3208E" (4096 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

4) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу

НИЖНИЙ ЧИП:
1) Читаем (пока только читаем) НИЖНИЙ чип:

user@debian:~/X230/coreboot/build$ sudo flashrom -p ch341a_spi

2) Если он не считался — проверяем соединение и т. д., если считался — прошиваем:

user@debian:~/X230/coreboot/build$ sudo flashrom --chip "MX25L6406E/MX25L6408E" --programmer ch341a_spi --write coreboot-bottom.rom

3) Вывод должен быть таким:

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

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

Проверка и дополнительные настройки

1) Соединяем клавиатуру, ОЗУ, батарею и проверяем включение ноутбука.

2) Теперь, дабы узнать це зрада чи перемога?" статус Intel ME, на прошитом ноутбуке-пациенте загружаемся в Debian (так как в моем примере live образ, то нужно снова установить необходимые пакеты и скачать код).

Выполняем следующие команды:

user@debian:~$ sudo apt update && sudo apt upgrade
user@debian:~$ sudo apt install -y git libpci-dev zlib1g-dev
user@debian:~$ git clone --depth=1 https://review.coreboot.org/coreboot
user@debian:~$ cd ~/coreboot/util/intelmetool
user@debian:~/coreboot/util/intelmetool$ make
user@debian:~/coreboot/util/intelmetool$ sudo ./intelmetool -m

И сверяем вывод с этой таблицей:
mini_clean.png
Если результат такой же как в первой колонке («Stock firmware») — ровняйте руки и начинайте процесс прошивки заново. Значения как в 3 и 4 колонках — Intel ME отключен.

3) Можно заодно проверить наличие и работу Intel AMT:

user@debian:~$ git clone https://github.com/mjg59/mei-amt-check
user@debian:~$ cd ~/mei-amt-check/
user@debian:~/mei-amt-check$ make
user@debian:~/mei-amt-check$ sudo modprobe mei_me
user@debian:~/mei-amt-check$ sudo ./mei-amt-check

В случае успеха должно выдать:

Unable to find a Management Engine interface - run sudo modprobe mei_me and retry.
If you receive the same error, this system does not have AMT

4) Если проверки пройдены успешно — отключаем ноутбук и полностью его собираем.

5) (опционально) Если часто работаете от сети и хотите как можно дольше сохранять ресурс батареи установите пороги зарядки батареи: зарядка начнется ниже 40% и продлится до 70%:

user@debian:~$ cd ~/coreboot/util/ectool
user@debian:~/coreboot/util/ectool$ make
user@debian:~/coreboot/util/ectool$ sudo ./ectool -w 0xb0 -z 0x28
user@debian:~/coreboot/util/ectool$ sudo ./ectool -w 0xb1 -z 0x46

Как задать иные пороги смотрим здесь. При отсоединении батареи эти настройки перестанут работать и нужно выполнять их заново или писать скрипт на автовыполнение.

6) (опционально) При включении ноутбука можно нажать клавишу Esc и выбрать цифрой "Payload [nvramcui]", в нем есть немного настроек, я применил такие:

gfx_uma_size=224M
wwan=Disable
bluetooth=Disable
fn_ctrl_swap=Enable

Для сохранения и выхода нажать F1.

7) Прежний Debian установленный на другом ноутбуке или свежеустановленный на этом ноутбуке (проверял дважды) — отказывается запускаться, нужно загрузить его с другого ноутбука и выполнить в терминале:

user@debian:~$ echo "i915" | sudo tee -a /etc/initramfs-tools/modules
user@debian:~$ sudo update-initramfs -u

Если у вас есть более элегантное решение без использования другого ноутбука, пожалуйста, поделитесь им.

8) (опционально) Если вместо SeaBIOS выбрали GRUB, можно установить дистрибутив с полнодисковым шифрованием включая раздел /boot.

Послесловие

Дописав я прошил снова заводской BIOS из снятых дампов и повторил снова уже по этой статье чтобы убедиться в ее работоспособности. Прошивка и проверка прошли успешно.

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

Готов к тапкам в мой огород и к вашим вопросам.

runion_approved.png


Pseudo Random Shit Generator

Если вдруг кому-то в голову взбредет меня поблагодарить,
напишите в ящик, напишу btc адрес. Мой ключ прежний.

Паранойя на марше: замена BIOS на Coreboot  

  By: mturin on 2019-03-12 11 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Ого, рад видеть.

Паранойя на марше: замена BIOS на Coreboot  

  By: Esther on 2019-03-12 12 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Добро пожаловать. Снова.


Паранойя на марше: замена BIOS на Coreboot  

  By: Bluefish on 2019-03-12 14 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Таким авторам всегда тут рады. Уровень профи.

Паранойя на марше: замена BIOS на Coreboot  

  By: Bluefish on 2019-03-12 15 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Я вот что думаю на этот счет. Глубина, куда влез автор это темы это уже уровень американской разведки. То есть он уже настолько параноит что хочет быть не видимым и для них. Для создателей и разработчиков всего этого компьютерного железа. Я думаю что у них за все эти устройства отвечает АНБ.  Если вы простой барыга веществами в России или продаете переделанные стволы, даже изготавливаете самодельные бомбы вами врят ли заинтересуются на подобном уровне. Хотя если  начнете контейнерами стволы в Венесуэлу ввозить и вооружать не тех людей, то заинтересуются.

Ну и мне хотелось бы данных, научилось ли фсб использовать технологию Intel Me или это не досягаемый для них уровень?

Паранойя на марше: замена BIOS на Coreboot  

  By: Bluefish on 2019-03-13 00 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Так что радуйтесь россияне, на уровне Intel ME фсб за вами следить не может.  Для такого уровня им нужно начать свои процессоры выпускать.


Идея очень интересная и мне понравилась с Libreboot. Но слишком старое железо поддерживается прошивкой с открытым кодом.  Нужно что бы современное поддерживалось.  Только тогда она будет жить.

Паранойя на марше: замена BIOS на Coreboot  

  By: spurdo on 2019-03-13 08 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

PRSG, с возвращением!


special-purpose undeground research and development organization
Зарегистрирован только на Рунионе. Связь только через ЛС форума.

Паранойя на марше: замена BIOS на Coreboot  

  By: uRDESGHJ on 2019-03-13 10 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Процессору это безразлично,потому что он не ориентирован на линейное выполнение команд).

Паранойя на марше: замена BIOS на Coreboot  

  By: uRDESGHJ on 2019-03-13 11 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Примерный список подходящих ноутбуков выглядит так:
#https://h-node.org/notebooks/catalogue/en

Паранойя на марше: замена BIOS на Coreboot  

  By: Weesah1s on 2019-03-13 14 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Очень годный мануал. Немного дополню.

Автор использует для примера X230. В 30-й серии ThinkPad-ов 2 флеш-чипа, один на 4мб другой на 8мб, вместе образующие виртуальный чип на 12мб. В более старых моделях один чип на 8мб (не всегда на 8, в моделях 2008-го года есть вроде и на 4 и на 16, хотя они реже встречаются), поэтому действия чуть-чуть будут отличаться (да и на X200/T400/T500 скорее всего будет SOIC16 а не SOIC8). Впрочем в интернете много информации на английском для новичков.

12-ти дюймовые модели (X200, X220, X230) прошивать сравнительно легко, чтобы добраться до чипа(ов), нужно всего лишь снять клавиатуру и палмрест. Чтобы прошить 14-ти и 15-ти дюймовые (T400, T420, T430 и тд), придется полностью разобрать ноутбук, достав мат. плату из кейса. Это в 3 раза дольше получится.

Автор правильно включил настройку "Strip down the Intel ME firmware", однако стоит пояснить. ME нельзя полностью выпилить на интеловских системах после 2008 года, но пару лет назад исследователи нашли способ выкинуть из прошивки ME максимальное количество "модулей", оставив только загрузчик, при этом оставив систему в рабочем состоянии (если выпилить блоб с флешки полностью, система перестанет загружается), а сам ME - в нерабочем. Есть такой проект me_cleaner, это скрипт, который "очищает" прошивку ME, оставляя только необходимый для включения компьютера BUP (bring-up) раздел. Собственно он и используется сборочными скриптами coreboot для "stip down".

Libreboot - по сути дистрибутив coreboot для тех моделей, на которых ME можно выпилить полностью, поэтому поддержка заканчивается на X200/T400/T500. libreboot устанавливать в целом проще, потому что он распространяется в виде готовых сборок (вместе с исходниками, конечно), нужно только выбрать нужную и залить в чип (не надо собирать coreboot из исходников). Последний стабильный релиз libreboot родом из 2016-го и пожалуй несколько устарел. Лучше уж собрать актуальный coreboot без блобов, даже если прошиваете X200/T400.

После прошивки coreboot действительно дальше можно прошивать флешку программно, но если уж параноить, то это не очень-то безопасно: если атакующий получит root на системе, он спокойно может записать вредоносный код в чип. Я бы рекомендовал проставить в итоге биты флеш дескриптора запрещающие программную запись.

coreboot более чувствителен к памяти, поэтому не все планки которые работали на стоковом биосе, заработают на coreboot. Но в целом, с большинством проблем нет.

Насчет поддержки windows: с seabios и libreboot думаю можно подружить с windows, а без seabios и на coreboot работать не будет. Windows 10 будет работать хуже, чем Windows 7, причина где-то в A*****I коде.  Впрочем Windows стоит исключить изначально и пользоваться Linux или *BSD.

Паранойя на марше: замена BIOS на Coreboot  

  By: PRSG on 2019-03-14 11 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

mturin, взаимно.
Bluefish, спасибо, но я не профи. Лучше считать что ФСБ способно использовать эти технологии для проникновения.
spurdo, о возвращении вряд ли можно говорить, но я постараюсь иногда писать что-то полезное.

uRDESGHJ пишет:

Примерный список подходящих ноутбуков выглядит так:

По вашей ссылке есть ноутбуки Acer, их поддержки в Coreboot или Libreboot нет. Лучше смотреть списки по ссылкам в статье.

Weesah1s пишет:

Я бы рекомендовал проставить в итоге биты флеш дескриптора запрещающие программную запись.

Как это сделать?

Weesah1s пишет:

Насчет поддержки windows: с seabios и libreboot думаю можно подружить с windows

Я специально поискал и решения нет.

Weesah1s пишет:

Впрочем Windows стоит исключить изначально и пользоваться Linux или *BSD.

Я указал это в тексте только с тем, что может быть кому-то это важно из-за специального софта.

Редактировался PRSG (2019-03-14 11 ч.)


Pseudo Random Shit Generator

Если вдруг кому-то в голову взбредет меня поблагодарить,
напишите в ящик, напишу btc адрес. Мой ключ прежний.

Паранойя на марше: замена BIOS на Coreboot  

  By: Kosmosvin on 2019-03-17 08 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

спасибо за статью, я свой прошивал еще по англоязычному гайду
официальный список поддерживаемых coreboot материнок - coreboot.org/status/board-status.html
там ноуты и десктопы и даже сервера

Паранойя на марше: замена BIOS на Coreboot  

  By: PRSG on 2019-03-17 14 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Kosmosvin, пожалуйста.

Kosmosvin пишет:

официальный список поддерживаемых coreboot материнок - coreboot.org/status/board-status.html
там ноуты и десктопы и даже сервера

В статье эта ссылка уже указана.

Coreboot: Lenovo ThinkPad X201, X220, X230, T420, T430 (полный список устройств здесь)


Pseudo Random Shit Generator

Если вдруг кому-то в голову взбредет меня поблагодарить,
напишите в ящик, напишу btc адрес. Мой ключ прежний.

Паранойя на марше: замена BIOS на Coreboot  

  By: tolikmsk on 2019-03-18 19 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

PRSG пишет:

Конечно можно купить ноутбук без Intel ME,

"без Intel ME " это маркетинговый пиздеж от Purism, просто они прогоняют me_cleaner и отключают почти все модули, за исключением базовых.

Паранойя на марше: замена BIOS на Coreboot  

  By: tolikmsk on 2019-03-18 20 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Хоть для libreboot железо старое, тем не менее для мессенджера, браузера, офисных программ хватит
Максимальная конфигурация для ноутбуков будет иметь 8 Гб и  Core 2 Quad (4 ядра, 12Мб кэша), вполне мощный ноут получается.

Паранойя на марше: замена BIOS на Coreboot  

  By: tolikmsk on 2019-03-19 03 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

Bluefish пишет:

Ну и мне хотелось бы данных, научилось ли фсб использовать технологию Intel Me или это не досягаемый для них уровень?

Вполне досягаемый, ФСБые конторы(Digital security, Positive Technologies) показывают успехи в изучении и реверсе Intel ME

Другое дело, что для внедрения закладки в большинстве случаев нужен физ. доступ к компу, или root-права и возможность писать во флеш-память, где находится SPI

Паранойя на марше: замена BIOS на Coreboot  

  By: PRSG on 2019-03-19 09 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

tolikmsk пишет:

они прогоняют me_cleaner и отключают почти все модули, за исключением базовых.

В статье такой же метод, для полного удаления нужны более старые процессоры.

tolikmsk пишет:

возможность писать во флеш-память, где находится SPI

Тут выше писали, что надо запретить программную запись

Я бы рекомендовал проставить в итоге биты флеш дескриптора запрещающие программную запись.

Но не написали как именно это сделать. Может вы знаете способ?


Pseudo Random Shit Generator

Если вдруг кому-то в голову взбредет меня поблагодарить,
напишите в ящик, напишу btc адрес. Мой ключ прежний.

Паранойя на марше: замена BIOS на Coreboot  

  By: Kosmosvin on 2019-03-19 10 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

tolikmsk пишет:

Хоть для libreboot железо старое, тем не менее для мессенджера, браузера, офисных программ хватит
Максимальная конфигурация для ноутбуков будет иметь 8 Гб и  Core 2 Quad (4 ядра, 12Мб кэша), вполне мощный ноут получается.

Модули аналогичные IntelME стали появляться в компах AMD позднее, с 2013 года, так что можно помощнее взять железо вообще без ME/PSP(аналог ME в AMD)

например ноут Lenovo g505s можно поставить 16гб оперативки + ссд, проц А10, 4 ядра 2.5Ghz, прошить coreboot, в качестве ОС - Qubes и ближайшие несколько лет можно ждать более совершенных аналогов

Паранойя на марше: замена BIOS на Coreboot  

  By: tolikmsk on 2019-03-19 11 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

PRSG пишет:

Но не написали как именно это сделать. Может вы знаете способ?

libreboot.org/docs/hardware/gm45_remove_me.html#write-protecting-the-flash-chip

Паранойя на марше: замена BIOS на Coreboot  

  By: PRSG on 2019-03-20 10 ч.

Re: Паранойя на марше: замена BIOS на Coreboot

tolikmsk пишет:

libreboot.org/docs/hardware/gm45_remove_me.html#write-protecting-the-flash-chip

Спасибо.


Pseudo Random Shit Generator

Если вдруг кому-то в голову взбредет меня поблагодарить,
напишите в ящик, напишу btc адрес. Мой ключ прежний.