Комментарии 31
Спасибо Microsoft, которая в Windows 11 сделала EFI-загрузку обязательным требованием, иначе мы бы так и жили в этом аду.
механизма обеспечения персистентности
Это на каком языке?
Поясню, что имею ввиду. В старинные времена нас админы предупреждали — не посещать порнуху и варез, там заразишься почти наверняка. Те, кто туда не лазил, жили себе интернетной жизнью спокойненько (кстати, и до сих пор спокойно живут). А что является фактором риска теперь?
Практически всегда заражение идёт через запуск исполняемого exe/cmd/vbs/макроса в оффисном документе. Распостранение так же либо через експлоиты. Обязательно нужно включить отображение расширений для файлов. Еще малварь распостраняют через уязвимости в том же acrobat, но вроде как реже. А уже медиа и т.п. страшные 0-day експлоиты идут по остаточному принципу. Во всяком случае я об массовых заражениях таким методом не слышал. Обычно "заразный фильм с торрента" - это исполняемый файл и фильмом там даже не пахнет. Для уязвимостей типа eternalblue нужно либо голой жопой торчать в Интернет, либо всё таки запустить вирус на одной из машин. Противодействие - НИКОГДА и ни в коем случае не отключать firewall, а всё что не должно быть доступным снаружи, должно быть им же закрыто. Если речь об предприятии (даже мелком) - разбивать на отдельные подсети всё что можно. Это даст и защиту от зловредов, и уменьшит проблемы при атаках на DHCP/MITM/флуде/петлях и т.д.
После прочтения осталось стойкое ощущение, что автор сего опуса склонен не видеть различий между "тёплым" и "мягким" ...
По-моему, с тех пор ничего не изменилось. Ну, кроме того, что теперь на новом железе обычно CSM по умолчанию выключен, а Secure Boot включён. С релизом Windows 11 эти изменения в ченджлогах к прошивкам у каждого вендора можно было видеть. Онлайн-игры к этому тоже подталкивают. Недавно как раз консультировал пользователя, которому античит в игре сказал что-то типа «или включай Secure Boot, или я тебя не пущу» (а это в свою очередь повлекло необходимость отключать CSM, а это, в свою очередь — конвертацию системного накопителя, который использовал MBR-разметку… а конвертация не удалась по неизвестной причине, короче, пользователь словил нехилый геморрой от того, что когда-то установил систему в legacy-режиме, а установил он, разумеется, потому, что такие настройки в прошивке были по умолчанию).
Сейчас новые материнки, зачастую вообще не имеют возможности загрузки в legacy boot, нет включения csm, особенно ноутбуки. Также распространение nvme m2 дисков приводит к тому, что установка ос/загрузка с него осуществляется в efi режиме
Добавлю к уже сказанному, что к проблемам по ссылке выше недавно добавились еще и известные эксплуатируемые уязвимости в загрузчиках Windows, которые MS отказывается отзывать (при том, что загрузчики других ОС они при похожих условиях отзывали массово). Т.е. мало того, что SecureBoot и так никто не включал, кроме полутора анонимусов, так теперь еще и его конфигурация по умолчанию перестала выполнять свою основную функцию - защищать от выполнения вредоносного кода. Отлично, мужики, замечательная безопасная загрузка, и конкурсы интересные…
Ибо нормальные системы запускаются в любом режиме загрузки с любого типа разметки и только для MS является проблемой загрузка с гибридной MBR. Та же ubuntu 20 (а может и предыдущие версии тоже) по умолчанию создаёт на диске GPT. Если в будущем приходится переключиться - создаём раздел EFI, ставим туда загрузчик и переключаемся.
Самая надёжная защита - это аппаратная защита от записи в bios. Но это можно проделать с более старыми флешками биос, где SPI работал не в режиме QSPI, и 3й вывод (WP) можно было использовать именно для того, для чего он и был изначально разработан - для защиты от записи. В 2015 году я описывал свои эксперименты по этому поводу - если кратко: берём программатор, записываем дамп на флешку, выставляем бит защиты от записи. После записи просто подгибаем 3й вывод микросхемы на 4й (на землю), и вставляем в колодку (ну или как-то иначе, если она в SOIC/WSON корпусе, и нет длинных ножек). Всё, после этого можно пытаться как угодно софтово записать туда - ни встроенные в биос средства не могут записать, ни виндовые утилиты, содержимое остаётся исходным.
В современных биосах мало того, что сама флешка в режиме QSPI (с целью увеличения скорости считывания) и вывод защиты от записи уже нельзя использовать для защиты, так и сама прошивка сделана с расчётом на то, что она будет сохранять свои данные и параметры прямо в этой флешке, и это может помешать корректной работе.
И, в идеале, защита должна работать сразу из коробки, чтобы защищать подавляющее большинство пользователей. Представить себе массового пользователя, который будет лазить и переключать аппаратный переключатель на мамке, я не могу. Если такая защита будет включена по умолчанию, это приведёт к тому, что:
— большая часть пользователей, которая вообще никакие биосы не обновляет, не хочет, и ничего не знает про это, будет сидеть на старых и уязвимых биосах (сейчас, хотя бы, им можно обновления присылать через какой-нибудь Windows Update, как делает вендор моего ноутбука). Да, защищённых от перезаписи, но уязвимых. Аксиома Эскобара в действии.
— те, кто всё-таки озаботится обновить (энтузиасты) немедленно отключат защиту, которая им мешает. Это удел любой меры безопасности: если она мешает пользователю и отключается — она будет отключена, и на тысячах сайтов в интернете будет инструкция, как её отключить.
— 2,5
Помогло бы решение, где вместо переключателя стояла бы кнопка, которую следует нажать непосредственно перед прошивкой. Но это тоже усложнение схемы...
Вообще, признаюсь, я не осилил саму идею UEFI, и не понимаю почему они вместо BIOS родили такой более сложный чем BIOS комбайн вместо упрощения. Можно ведь было просто выкинуть из биос весь легаси (как выкинули когда-то бейсик и поддержку магнитофона) и добавить проверку ЭЦП загрузчика в первых секторах диска, чтобы доверенная цепочка могла быть реализована.
По факту сейчас в виде UEFI мы имеем некий аналог ОС, который никто не заинтересован поддерживать в безопасном состоянии и который стал бОльшей дырой, в отличие от старого доброго биоса, который можно было просто защитить перемычкой или паролем от перезаписи.
А разве нельзя уже из EFLAGS извлечь IOPL и посмотреть в каком кольце защиты мы исполняемся? Вроде это всегда можно было и R/O доступ на EFLAGS не вызывает GPF.
Пишем простую прогу на ASM, которая вместо OS грузится и сообщает попала ли она в CPL0, переходит в protected mode и проверяет IDT, GDT, LDT (если есть)?
Если не попала в CPL0 то значит какой-то гипервизор висит и надо строниться такого железа.
А если кто-то умный задумает на все инструкции вызывать GPF и потом смотреть что исполнялось и пытаться подставить в возврат CPL0 так всё настолько будет тормозить, что таким железом никто не захочет пользоваться.
Поправьте меня, если я что упустил. Я изучал работу проца по замечательному четырёхтомнику от Intel i486.
Computrace работает следующим образом: при включении компьютера и перед запуском Windows выполняется файл autochk.exe, с которого начинается проверка логической целостности файловой системы. Создается бэкап autochk.exe, а оригинальный файл, в свою очередь, заменятся на модифицированный. При запуске модифицированного autochk.exe внедряется мини‑агент rpcnetp.exe и восстанавливается оригинальная версия autochk.exe. Задача мини‑агента rpcnetp.exe — обеспечение работы основного агента. В случаях, когда основной агент не работает, rpcnetp.exe пытается подключиться к Command and Control серверу издателя приложения Absolute Software для его скачивания и исполнения. Мини‑агент сначала дублируется, затем преобразуется в динамическую библиотеку DLL. Библиотека загружается в память, инициализирует службу работы с библиотеками svchost.exe и подгружается в него. Следующим запускается процесс работы с Internet Explorer и в него инжектируется DLL для связи через интернет. Готово, Computrace работает.
"Я извиняюсь" (с)
три раза перечитал.. но не понял...
Если все начинается до старта ОС:
Computrace работает следующим образом: при включении компьютера и перед запуском Windows выполняется файл autochk.exe,
то в какой среде выполняются EXE-шники?
Какие DLL-ки? какой svchost.exe? откуда выскочил Internet Explorer?
я, правда, не понимаю...
UEFI уязвимость видишь? А она есть