
Как создать загрузочный образ RDP-клиента для запуска USB-флешки.
Часть 1. Подготовка загрузочного образа.
Установка и настройка базовых пакетов. Настройка сетевого интерфейса, grub для работы на USB-накопителе.
Unified Extensible Firmware Interface
Как создать загрузочный образ RDP-клиента для запуска USB-флешки.
Часть 1. Подготовка загрузочного образа.
Установка и настройка базовых пакетов. Настройка сетевого интерфейса, grub для работы на USB-накопителе.
Привет, Хабр! Меня зовут Сергей, я embedded-разработчик в «Гравитон», моя основная задача в компании — разрабатывать и внедрять системы защиты встраиваемого программного обеспечения.
В современных реалиях, когда число изощренных угроз целостности прошивки, таких как персистентные руткиты, растет (так, согласно исследованию руткит CosmicStrand был внедрен во множество устройств в разных странах), а риск фатальных ошибок при ее обновлении или эксплуатации остается критически высоким, полагаться только на софтверный уровень защиты недостаточно. Поэтому наша команда сделала ставку на аппаратные возможности чипсетов (PCH) и разработала многоуровневую систему защиты.
Сегодня я расскажу, как устроен механизм аппаратной защиты от записи в BIOS-регион SPI Flash, как разработчикам и инженерам безопасности контролировать его, используя доступные инструменты, и покажу, как я применил этот подход на практике и что из этого вышло.
Статья будет полезна embedded-разработчикам, инженерам по безопасности и всем, кто хочет понять, как обеспечивается защита BIOS от несанкционированной записи на аппаратном уровне.
Привет, хабр!
Давно я откладывал написание данной статьи, но время пришло.
В интернете есть довольно много материалов по тому, как запустить macOS на обычных, IBM-совместимых, ПК. Проблема их ровно таже, что и в случае с wine, о котором я тоже делал свою статью - они слишком... мало посвящают в детали того, как вообще создавать установочный носитель и что нужно делать после установки.
В данной статье я буду руководствоваться гайдом от Dortania. Есть версия на русском, но она всегда старее, чем самая актуальная, поэтому буду использовать оригинал. Также оттуда буду некоторые скрины и ссылки.
Перед тем как начать, я бы хотел немного просветить тех, кто не в курсе о том, что такое Хакинтош.
Хакинтош - это процесс установки macOS на обычные ПК. В чём сложность?
Все макбуки используют своё железо(во всяком случае сейчас, в 2025 году), раньше они пользовались другими процессорами - в классических макинтошах использовали процессоры от Motorola. В поздних моделях встречались процессоры от IBM PowerPC(в этот период они назывались PowerMac). А в начале нулевых компания Apple перешла на процессоры Intel. В этот период и появилась система, которая нам интересна больше всего - OSX, позже переименованная в macOS.
Здравствуй, читатель. Перед тобой вторая статья о найденной мной серьезной уязвимости в UEFI-совместимых прошивках на базе платформы Insyde H2O, которую я назвал Hydroph0bia. В первой статье я рассказывал о проблеме "затенения" волатильных переменных NVRAM неволатильными, и о катастрофических последствиях, которые могут наступить при неудачном стечении обстоятельств и неаккуратном программировании критических для безопасности прошивки компонентов. Для правильного понимания этой статьи потребуются знания из первой, поэтому если вдруг она еще не прочитана, рекомендую устранить этот пробел.
Я вновь категорически не советую использовать полученные из этой статьи сведения для совершения каких-либо противоправных действий, всю полученную информацию вы используете на свой страх и риск.
Здравствуй, читатель. В этой статье я расскажу про найденную мной не так давно серьезную уязвимость в UEFI-совместимых прошивках на базе платформы Insyde H2O, которая присутствует в них примерно с 2012 года и (на большинстве существующих ныне систем) продолжает присутствовать.
Уязвимость эта позволяет надежно (и незаметно для средств мониторинга стандартных переменных UEFI SecureBoot вроде db, KEK и PK) обойти механизм проверки подписей UEFI-драйверов и UEFI-загрузчиков, а для её успешной эксплуатации требуется только возможность записи в UEFI NVRAM (доступная и в Windows, и в Linux после локального повышения привилегий).
Я категорически не советую использовать полученные из этой статьи сведения для совершения каких-либо противоправных действий, всю полученную информацию вы используете на свой страх и риск.
Здравствуй, читатель. С моих прошлых статей про NVRAM прошло некоторое количество времени (за эти почти 10 лет мало что изменилось, и все эти форматы до сих пор с нами практически без модификаций), а моя работа на одну фруктовую компанию не позволяла мне писать статьи, тесты и посты без одобрения кучей непонятных людей, но теперь эта работа осталась в прошлом, а желание писать так и не пропало.
Эта статья - практическая реализация этого желания, а поговорим мы в ней о формате Dell DVAR, и немного о декларативном языке для написания парсеров Kaitai Struct, на котором я недавно переписал парсеры всех известных UEFITool NE форматов NVRAM.
Прошивка чипа BIOS с использованием внешнего девайса — надежный способ восстановить работоспособность ноутбука, если микропрограмма повреждена. Загрузка извне позволяет обойтись без запуска ОС, с прямым доступом к SPI-флеш-памяти. Сегодня покажу пошаговый процесс прошивки и расскажу, какие тут могут быть нюансы.
Сразу отмечу, что это пост для начинающих любителей электроники. Профессионалы и так отлично знают, как нужно «шить». Но если захотите поделиться опытом — приходите в комментарии, буду рад!
Привет, Хабр. На связи Сергей Пушкарёв, я руковожу отделом разработки BIOS в YADRO. Расскажу об устройстве UEFI и его применении в компании. Мы разрабатываем и выпускаем разные аппаратные платформы: серверы, системы хранения данных, клиентское и телеком-оборудование.
Один из «кирпичиков», который обеспечивает инициализацию и функционирование оборудования, — это BIOS (но правильнее говорить UEFI 🙂). В статье кратко разберем историю этой системы и ее современную реализацию — UEFI. Также поговорим о подходе к разработке и отладке этого ПО в YADRO.
Вы узнаете, зачем нам нужна «синяя коробка» Intel, как мы прошиваем BIOS и проводим диагностику «в полях».
Меня давно интересовал вопрос, насколько сложно написать собственный загрузчик операционной системы. Я не говорю о простой программе, выводящей «Hello, World!», а о полноценном загрузчике, который передаёт управление от встроенного программного обеспечения компьютера ядру операционной системы. Современные загрузчики представляют собой сложные программы, способные загружать множество операционных систем различными способами, учитывая массу нюансов, связанных с программным и аппаратным обеспечением. Читая их исходный код, легко утонуть в деталях и потерять понимание сути и реализации.
Я решил начать изучение с максимально простого подхода, постепенно усложняя задачи, экспериментируя и получая новые знания. Если мне удалось вас заинтересовать, добро пожаловать под кат.
На каком языке пишут программы для BIOS? Ответ на этот вопрос кажется очевидным: Си и ассемблер. Да, вот так коротко и просто. Существуют и другие инструменты и языки, но так исторически сложилось, что на такой “низкой” глубине выживают только они. В настоящее время здесь доминируют два основных языка, причем с явным перекосом в одну из сторон. В последние годы наблюдается значительный рост популярности языка Rust, который стал серьезным конкурентом одного из фаворитов. Проникнув в ядро Linux, где ранее никому не удавалось потеснить Си, Rust продолжает расширять свое влияние и на другие сферы разработки. Именно с идеи попробовать и сравнить началось мое путешествие по написанию EFI-утилиты на Rust для BIOS.
Приветствую вас, дорогие читатели! Сегодня мы продолжим изучать BlackLotus UEFI bootkit. В прошлой части мы рассмотрели темы:
В предыдущей части мы выполнили следующие шаги:
1. Подготовка тестового стенда.
2. Запуск CVE-2022-21894 (baton drop).
В этой части мы сосредоточимся на следующих шагах:
3. Добавление сертификата в базу данных MOK.
4. Компиляция payload и компонентов для его выполнения.
5. Чтение и запись файлов в операционной системе Windows10 из файловой системы NTFS через grub.elf.
Отказ от ответственности
Информация, представленная в данной статье, носит исключительно информационный характер. Она не предназначена для использования в качестве профессиональной консультации или рекомендации. Автор не несет ответственности за какие-либо действия, предпринятые на основе информации, содержащейся в этой статье.
Автор не гарантирует полноту, точность или актуальность информации, а также не несет ответственность за возможный ущерб, включая утрату данных, нарушения безопасности или иные последствия, которые могут возникнуть в результате применения представленных материалов.
Использование информации осуществляется на ваш страх и риск.
Рассмотрим подробнее, зачем нам это нужно. Поскольку grub.elf компилируется вручную, он не имеет валидной цифровой подписи. В такой ситуации Secure Boot не позволит его запустить, блокируя выполнение неподтверждённого или неподписанного кода. Чтобы обойти это ограничение, мы должны подписать grub.elf и добавить подпись в MOK (Machine Owner Key), который управляет доверенными ключами системы. Это обеспечит корректный запуск на устройстве с включённым Secure Boot.
Приветствую вас, дорогие читатели! Сегодня я хочу поделиться с вами своим опытом изучения BlackLotus UEFI bootkit. В этом исследование разберем следующие темы:
1. Подготовка тестового стенда.
2. Запуск CVE-2022-21894 (baton drop).
3. Компиляция payload и компонентов для его выполнения.
4. Добавление сертификата в базу данных MOK.
5. Чтение и запись файлов в операционной системе Windows10 из файловой системы NTFS через grub.elf.
Давайте углубимся в эти интересные темы и разберемся, как функционирует одна из современных угроз безопасности.
Вы когда-нибудь задумывались, что происходит, когда вы нажимаете кнопку питания на компьютере? За той краткой паузой, прежде чем экран загорится, скрывается сложный процесс. В этой статье мы погрузимся в увлекательный мир прошивок (firmware) и исследуем, как разные компоненты взаимодействуют во время загрузки системы. Поняв эти связи, вы получите четкое представление о том, как основные элементы приводят вашу систему в действие. Мы сосредоточимся на Intel архитектуре x86, хотя многие принципы применимы и к другим архитектурам.
Привет, Хабр! Меня зовут Александр Иоффе, в компании Aquarius я руковожу департаментом разработки средств автоматизации и обеспечения качества производимой продукции, такой как сервера, коммутаторы, ноутбуки, мониторы и так далее.
Конечно же важным моментом процесса разработки является тестирование и его автоматизация. Тестирование помогает выявить ошибки и недостатки в продукте, а автоматизация позволяет ускорить этот процесс и снизить влияние человеческого фактора.
И чтобы делиться опытом и учиться новому, мы с командой решили поучаствовать в конференции для тестировщиков Heisenbug этой весной со стендом и докладом об автоматизации тестирования интегрированного ПО.
Для этого нам надо было сначала подготовить стенд к тестированию – под катом я расскажу, как и что мы с командой готовили. Статья будет интересна всем, кто работает с железом и занимается автотестированием.
Всем привет.
Недавно мне попался в руки нетбук Asus E200H, и я его хотел его использовать для как портативный компьютер для работы c высокоточным оборудованием.
В рамках данной статьи мы проведем эксперимент по замене штатного eMMC накопителя 32 ГБайт на 256 ГБайт и протестируем результат.
Всем удачного прочтения!
Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++
Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.
Здравствуйте, дорогие друзья!
Вот и заканчивается 2023 год. В этой статье я хочу продолжить начатую в 2021 году традицию вспоминания наиболее важных событий из жизни ReactOS за год. То что статьи не появляются на Хабре, не значит что система мертва. Медленно, но верно, в ReactOS реализуются разные фичи и исправляются баги. И в данной статье мы рассмотрим что произошло в жизни системы в 2023 году.
Так повелось в мире, что время от времени необходимо проводить исследования безопасности драйверов и прошивок. Одним из способов исследования является — фаззинг (Fuzzing). Не будем останавливаться на описании самого процесса фаззинга, для этого есть эта статья, отметим только, что в основном его используют для исследования прикладных приложений. И тут возникает вопрос: как профаззить прошивку, в частности прошивку UEFI? Здесь будет рассказано об одном из способов с использованием программного эмулятора EDKII, чтобы проводить фаззинг без развертывания аппаратных стендов. И что важно, все это сделаем в Windows.
Жил-был я. И как-то я задумался, почему у Windows есть BitLocker с шифровамние раздела, а в Linux эта тема не сильно освещена? Очевидно, что это достаточно нишевая задача. Нишевая - потому что не только лишь каждому нужно шифровать разделы. А те, кому надо тискают LUKS. Монтирование этого самого пресловутого LUKS через crypttab не составляет трудностей. А вот системный раздел обычно не шифруют. Потому что при включении будет требоваться ввод пароля от системного раздела...
Я, конечно, понимаю, что среднестатистический Я мало кому нужен вот в качестве индивидуума. Но потерять свой ноутбук и непроизвольно пошарить кому-либо мои грязные секретики не очень-то хочется. Да, можно окунуться в тот же самый Windows, но былые чувства к нему угасло, а дух авантюризма остался.
Итак. Какого же результата я ожидаю? Я хочу, чтобы мой ноутбук загружался и требовал только аутентификации. И чтобы разделы были зашифрованными. И весить менее 80 кг. Я понимаю, что от чего-то одного придётся отказаться...
Процесс запуска компьютера всегда был интересен пользователям. Именно здесь начинается магия, которое продолжается, пока устройство включено. В этой статье рассматривается общая картина процесса загрузки, включая различные этапы, ключевые компоненты, задачи, с которыми сталкивается система во время загрузки. Несмотря на то, что основное наше внимание будет сосредоточено на x86 архитектуре, остальные архитектуры будут иметь много общего в их процессе запуска. Приступим!