Pull to refresh

Comments 106

думаю антивирусы научатся убирать эту заразу от туда тем же способом что она туда и проникла.
если, конечно, вредоносный код в БИОС, проникнув в ядро ОС, даст им запуститься )
тут дело в другом, почему вредоносный код нельзя выбить перепрошивкой?
Потому что прошивается не вся память, а только тот размер, который нужен. Например биос занимает 4 Мб, а микросхема на 8Мб — еще есть 4 Мб для вируса :)
Ага, только предварительно микросхема очищается (включая бутблок).
Какая польза от этого кода, в следующих мегобайтах, если на него нет ссылок и код биоса адекватно завершён?
А что, эта зараза не сможет до завершения своего записать некий код в ОЗУ или на НЖМД?
Вероятно, не до конца полно высказал мысль. Если биос перепрошить, то данный код будет полностью ограждён от выполняемого кода биос. А следовательно и не сможет ничего сделать (хотя фактически, компьютер будет по прежнему заражён).
Так ведь первые три байта биоса можно поменять, вставив туда инструкцию jmp на тело вируса. Биос вместе с вирусом будет загружен в ОП компьютера, управление сразу передастся вирусу, он сделает своё чёрное дело, перезапишет в ОП эти три байта на настоящие и передаст управление Биосу. Всё просто и работает на всех версиях биоса. Различие между версиями может быть только в том, по какому адресу загружается Биос и сколько места он занимает в ПЗУ.
После перепрошивки jmp сбросится, ибо затрется новыми инструкциями, но вредоносный код останется. Соглашусь с ryukzak: фактически BIOS заражен, но ссылок на него не будет и код не выполнится.
Ну это-то и логично как раз. А особенность представленной работы как раз и заключается в реализации того, что биос остается зараженным даже после перепрошивки. Это ведь больше всего и поразило участников конференции. Само внедрение кода в биос по сути не является чем-то необычным.
В первом посте у меня было небольшое примечание, «код биоса адекватно завершён». Скорей всего именно в этом и заключается лазейка. (к примеру завершение кода биоса заполнено NOP, по которым пробегается процессор после обработки биоса) Но это именно косяк самого биоса.
Это такое… Не вижу самой главной и ожидаемой ссылки :))
насколько я понял, если зараза проникнет, то антивирусы ей уже не страшны. она сможет их отключить и вообще сделать что угодно.
Биос заражать умеют вот уже лет 15. И вирусы под это дело писались сотнями в своё время. Даже в книжках для чайников-вирусологов это описывалос. Но сейчас никому это нафиг не нужно.
Очень интересно. Полный доступ к машине пользователя никому не нужен? Возможно биос умели «убивать», но вот помещать в него свой код, такого не было. Если я не ошибаюсь конечно.
было, примерно год назад читал об этом
Было и не раз.
Я даже когда-то видел в продаже, не вирус и не троян, а просто лоадер, позволял обходить антивирусы и файрволы и запускать произвольный файлы. Правда его быстро сняли, потому как багов было немерено, и не на всех платформах работал.
Ссылки! Можно, пожалуйста, ссылки! Всем чертовски интересно!
Ну есть он и что? Вам надо будет найти жесткий диск с ОС, дальше найти ее ядро и попатчить. Т.е. универсальный вирус вам сделать не удастся. Как собственно и просто так что-то записать в BIOS. Для записи в BIOS требуются административные права, а если они у вас есть, то лезть в BIOS уже особого резона нет. Проще говоря такой вирус написать напорядок сложнее чем вирус под Windows и он будет далеко не везде работать как надо.
Маленькое уточнение: универсальная мультиплатформенность — это не главное требование к вирусу, и никогда таковой не была. Для вируса более чем достаточно работать на двух-трех наиболее массовых програмных платформах (например WinXP/Vista/7, что даст сразу 70-80% десктопных машин). Вирмейкеры — они суровые прагматики, и что-то мне подсказывает, что они сильно плакать не будут от того, что их детище не будет умеет заражать всякую «экзотику» (с точки зрения массового десктопа) например *nix или скажем всякие старенькие Win95.
Тем более, если опять-таки, если рассмотреть работу вируса как совокупность отдельных фаз его работы, то для того чтобы осуществить фазу «закрепление в системе» (в данном случае это «прошить код в биос»), вирусу (либо отдельной ее части) нужно сначала успешно миновать фазу «проникновение в систему» (т.е. вообще каким-то образом запустить одну из своих частей на заражаемом компе).
Согласитесь, выглядел бы очень странным факт внезапного заражения биоса машины которая всегда работала под FreeBSD да еще и вирусом который не знает что такое FreeBSD и как с ней работать.
Да, к тому-же, в настоящий момент времени, по экономическим соображениям разрабатывать «вирусы специально под юниксы» просто безперспективно, так как затраты по человеко-часам солидные а выхлох-почти ноль (бессмысленно вкладывать кучу сил и средств для того чтобы поиметь доли процента машин, когда можно вложить ровно столько же сил и получить 80%). Так что в ближайшие годы пользователи Linux могут легко отпустить параноидальные мысли «а вдруг у меня в биосе сидит злобный вирус».
Спасибо капитан очевидность!
Думаю, новость опередила своё время. Дней эдак на шесть :)
не улавливаю вашу мысль…
Капитан Очевидность сообщает: через чуть более чем 6 дней первое апреля. Так-то!
если бы :( — news.ferra.ru/hard/2009/03/25/85306/
UFO just landed and posted this here
Как бы я не это же намекал :)
Что-то мне не верится, что в CMOS-память BIOS можно поместить целый гипервизор, который будет управлять ОС и отключать антивирус. Статья отдает желтизной.
cansecwest.com/speakers.html — сайт конференции, список спикеров с описанием докладов. Anibal Sacco & Alfredo Ortega — Persistent BIOS Infection.
Зачем в CMOS? Сейчас на большинстве материнок BIOS во флэш-памяти хранится. Другой вопрос, что в случае чего изготовители материнок начнут опять ставить джамперы для аппаратной блокировки записи.
Они их ставят. На части материнских плат есть.
И много ли их? На массовых асусовских, гигабайтовских и MSIшных мне такие джамперы года два уже не попадались точно. Только всякие сомнительные фичи вроде dual bios, и те не везде.
Сейчас уже меньше. Но там как бе есть отдельный код который запускается для апдейта. У меня есть подозрение, что он отдельно зашит и в rom. Если есть опасения насчет вируса можно навернуть весь флеш и потом загрузиться со второго. Ну или запустится апрдейтилка.
Так что проблема получения неубиваемого вируса, надумана.
Эй, ты украл мой аватар!
vadimbelyaev не крал аватар.
vadimbelyaev сам внезапно нарисовал его 12 ноября 2008 года под впечатлением топика о новой странице 404 на Хабре.
vadimbelyaev рад видеть коллегу.
vadimbelyaev хочет отметить, что мозговой слизень artch нарисован лучше и заметнее.
Вспомните про Blue Pill, и учтите, что ваш код выполняется, начиная со старта компьютера.
чуть выше кинул линк на сайт конференции, а конкретно по докладу например тут.
Желтизной отдает вот эта фраза:

Самое интересное то, что никакое удаление данных не поможет вылечить машину, даже после перепрошивки BIOS (!) она остается зараженной !
ну просто я немного был поражен этим, поэтому получилось в таком стиле.
мне кажется размер flash BIOS больше чем сам BIOS.
При перепрошивке прошивается только то что есть реальный BIOS, а вирус лежит в конце flash и остается там.
Вполне возможно…
И что? Лежи он себе там, если нет способа его активировать. Он и на винте может лежать, удаленный. Чисто желтизна.
То что вы не имеете представления о его работе не значит что такого не может быть. Я к сожалению также не имею представления, ибо подробностей с конференции найти не удалось.
Для того, чтобы загрузить модуль БИОСа необходимо модифицировать бут ром. А бутром при прошивке также перезаписывается, так что человек прав.
Смотря как перешивать. Если вытащить из материнки флэшку с BIOS и перешить на другой машине программатором — не выживет зараза. Если перешивать штатным образом — с загрузочного диска или встроенными процедурами самого BIOS (некоторые сейчас шибко умные, аж файлы выбирать с произвольного устройства позволяют) — зараза никуда не денется, т.к. неминуемо будет запущена из того же BIOS _перед_ попыткой прошивки.
Кстати да, кто мешает в момент перепрошивки модифицировать новую прошивку.
Мешает то, что как правило код который осуществляет прошивку живет отдельно и запускается только в тот момент когда в биосе мусор.
Что прям вот так во все БИОСы и проникает? Тут чтобы в шадоу мемори что-нить добавить нужно полистать модель-специфичную макулатурку, а тут прям совсем…
Это просто ужасно. Всё, что Вы написали, всё, что написано в статье на threatpost, как мне кажется, вполне осуществимо.
Однако, и статья, и Ваш пост, похоже, опускают некоторые детали. А дьявол здесь именно в деталях.

Давайте подумаем. Авторы вируса говорят:
We can patch a driver to drop a fully working rootkit.

а потом ещё говорят, что
We're executing 32-bit code in ring zero.

Однако, авторы указывают на то, что
Sacco and Ortega stressed that in order to execute the attacks, you need either root privileges or physical access to the machine in question


Напрашивается вывод, что они сумели написать клёвый драйвер, который, при установке записывает в BIOS вредоносный код. Там этот код селится и заводит семью. В принципе, ничего особо нового.
Однако, они сумели провернуть это из-под VMware, что, в общем, тоже не ново, но очень клёво.
Более того, они сумели контроллировать машину. Увы, статья не уточняет, что именно они умеют делать. Одно дело каждые 20 минут слать нажатия клавиш ":" и ")", а другое слать на секретный адрес key log.

Знаете, иногда, при установке драйвера винда говорит что-то вроде «А-а-а! Это левый драйвер, лучше нажми СТОП, юзернейм»? Есть подозрение, что вирус из статьи можно подхватить лишь нажав «продолжить установку неизвестного драйвера».

Вот такой анализ. Кстати, спасибо за отличную иллюстрацию: хочется надеяться, что MacBook Pro на фото к статье про уязвимость винды это как бы намёк.

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

А то, что это заработает далеко не на каждом биосе — ещё одна деталь, которую упустили.
> Знаете, иногда, при установке драйвера винда говорит что-то вроде «А-а-а! Это левый драйвер, лучше нажми СТОП, юзернейм»? Есть подозрение, что вирус из статьи можно подхватить лишь нажав «продолжить установку неизвестного драйвера».

Я думаю они изыщут способ установки драйвера без GUI-диалогов

И есть проблема уцязвимости сторонних драйверов, то есть из за индусорукости разрабюочтика драйвер может открывать доступ к ядру в userspace. Напрмер есть драйвера позволяющие обращаться к произворльному порту.
Я думаю они изыщут способ установки драйвера без GUI-диалогов

А я думаю что не изыщут.
ну вообще в биосе маловато места под полноценный вирус. насколько я понял из туманных объяснений они делают в биосе небольшой патч (возможно дополнительное специфичное прерывание) которое позволяет их драйверу работать в нулевом кольце защиты с максимальными привилегиями так что антивирус, который контролирует все что пытается работать с аналогичными привелегиями на уровне ОС ничего не может сделать, для антивируса работа этого руткита выглядит как работа какого то реального системного устройства. Я так полагаю что переформатирование винта все таки удалит сам вирусный код, биос останется патченным но это никак не будет проявляться. А потом биос можно перепрошить.
А то что вирус не удаляется при перепрошивке биоса это конечно невозможно, просто биос заново патчится при новой загрузке инфицированной ОС или этого драйвера (как я понял из их объяснения что «We can reinfect the BIOS every time it reboots»).
Совершенно верно. Наверняка это reinfect, который для пущего страху назвали как «Неудаляемый!!111»
Мне вспомнились вещи Сергея Лукьяненко — почти Оружие второго поколения.
UFO just landed and posted this here
не принимает только x64
UFO just landed and posted this here
а вот x64 вообще не грузят драйвера уровня ядра, которые не подписаны.
Недавно решил с USB-WiFi-адаптера (DWA-110) инет раздавать на две машины, ну соответственно нужно, чтобы он стал Access Point. Родные дрова Ralink это умеют, а дрова D-Link'а — нет. Точнее, D-Link решил, что девайсу за 700 рублей работать в режиме AP никак нельзя — ну и выкинули из драйверов соответствующий функционал… :) Ralink же тоже не лыком шиты, и в их драйвере (да, прям в .sys) есть список VID/PID, для которых он готов работать.

Таблицу VID/PID нашёл и поправил быстро, ещё часа три убил на поиск инфы о том, как подписать драйвер, выкачивание WDK и собственно подписывание и включение TestSigning в Win7 :)
UFO just landed and posted this here
> 2 — Не принимает не подписанные драйвера

Это можно обойти 1) уязвимостью/недоработкой в подписанном драйвере 2) подписанным драйвером который загружает произвольный драйвер (например в целях отладки, хехехе). Каким то чувакам удалось например зарегистриовать левую фирму и получить подпись на драйвер загружающий любой другой драйврер (уже без подписи), правда это было год-2 назад

Кроме того, язвимым может быть системный процесс или служба с высокими привилегиями (этот про обход UAC).
1) уязвимостью/недоработкой в подписанном драйвере
2) подписанным драйвером который загружает произвольный драйвер (например в целях отладки, хехехе).

Слишком много телодвижений прийдется делать.

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

Если у вас включен UAC и вы работаете под обычным пользователем у вас таких привелегий нет. Основная проблема безопасности дл Windows Vista была в том, что пользователь практически всегда работал под учетной записью имеющие права администратора. Наконец-то в Vista это отломали и добавили UAC для эскалации привелегий. Это позволило радикально решить проблему с вирусами.
На случай UAC есть вариант с предложением установки кодека.
Это уже соц. инженерия и требует вмешательства пользователя. К тому же мне сильно интересно как вы подмените стандартный диалог UAC для драйвера? :)
Опишу на сайте процесс установки и что где нажать. Этот трюк прокатывает.
Это как раз и есть соц инженерия. Она требует вмешательства человека и к уязвимостям системы никакого отношения не имеет :)
хм… а почему в блог «я умный»?
Ну это нужно быть дебилом чтоб ставить драйверы скаченные НЕ с офф сайта!!!
Порой нет офф. сайта.

Смотрим драйвера для доступа к прошивке Sony Ericsson (уверен, что есть и другие), драйвера типа тех, что устанавливают Alcohol 120% и Daemon Tools и ещё куча других.
Для SE есть софт на оффсайте. Для alcohol 120% и daemon tools есть тоже офф. сайты.

А вообще отсутствие репозитариев для винды это большой минус
вово. щас порой хрен найдешь рабочие дрова под что-нибудь на ноуте на ХР, когда висту сносишь. Умельцы и спасают.
Отличная ссылка!
Сразу становится понятно, что они придумали.

Вкратце:
1. BIOS машины инфицируют загрузчиком
2. Специальный код запускаемый из операционной системы обращается к инфицированному сервису из BIOS и передает ему код который надо выполнить с правами ядра.

В презентации авторы пишут, что программа для выполнения своего кода на машине с зараженным BIOS представляет код из ста строк на питоне!

Кстати инфицируется BIOS виртуальной машины а не машины на которой она запущена.

Ни одна современная ОС не позволит вам выполнять 16-ти битное прерывания БИОС. Как они конкретно реализовали выполнение нужного кода в ring0?
Как вариант делать то же что CoreBoot т.е переводить систему в 32-битный режим при загрузке BIOS. И скажем, установить обработчик прерывания от таймера который будет проверять установлено ли нужное нам прерывание и его подменять.
Спасибо за ссылку.

Наверное, надо эту презентацию слушать. Какое-то странное впечатление складывается: первые страниц 15 общеизвестные факты. Потом чуть-чуть про то, как это реализованно. Очень в общих чертах.

Впрочем, я уверен, что с этими ребятами очень интересно пообщаться.
«Конференции по трусам» там не проводилось заодно?
Сферический конь в вакууме. Перешивка БИОСа настолько платформозависима, что охватить бОльшой парк машин попросту не удастся. Цитата
BIOS update procedure depends on South-Bridge and chip
used.
CoreBOOT project provides a generic BIOS flashing tool:
flashrom, that supports most motherboard/chip combination.


CoreBoot — это линукс БИОС. Так что, мимо кассы.

И что интересно они будут делать из БИОСа? 16 битный прерывания БИОС по моему недоступны не из одной ОС. Они разве что могут прописаться в SMRAM и к примеру снифить обращение к IO портам, а также снифить или блокировать комманды к ATA контроллеру. А толку?:)
они использовали прерывания от видеокарты (VGA)
грубо говоря, устанавливаем какие-то параметры экрана и делаем printf шеллкода, после чего умный обработчик распознает его и выполняет))

CoreBoot это для примера, типа такое уже есть)))
Они делают проще:
снимают дамп текущего BIOS, ищут по шаблону процедуру для распаковки модулей,
патчат, пересчитывают хэш и прошивают обратно
Так что все универсально))
Опять же. Если это не стандартный VESA драйвер, никто это прерывание не использует %)

Дамп они могут легко снять, потому как он замаплен в физическую память, а прошивать уже нужно знать как (железнозависимо). Если прописать новый образ БИОС в тот же кусок памяти, где замаплен текущий — ничего не произойдет.
Кстати, так как работа с диском, как и с другим стандартным оборудованием, идет через BIOS то можно подменить, или модифицировать какой-либо файл, ну а дальше делать что угодно)))
Модифицировать можно на этапе вызова загрузчика или подгрузки ядра ОС, далее вся работа с диском работает без прерываний БИОСа.
Ибо нефиг пользоваться допотопными решениями. EFI.
Вот как раз EFI может сыграть злую шутку. Если БИОС очень примитивен, и работу с ним ОС ведет только на этапе инициализации. Далее вызвать код БИОС очень проблематично, разве что повесить обработчик на какое-то NMI и инициировать его в ядре ОС (чтобы передать управление обработчику BIOS), но это очень сложно и не практично (сложно программировать).

А EFI и EFi services — практически полноценный гипервайзор. Если туда попасть — можно делать все что угодно :)
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Вообще говоря операционная система переходит из реального режима (в котором работает BIOS) в защищенный и инициализирует все устройства по новой. Так что запретить перепрошивку 100% гарантией можно только аппаратно (перемычкой) :)
Слушайте Столмена, он всегда говорил, что проприетарные BIOSы до добра не доведут…
Как раз хваленый CoreBoot — в девичестве Linux Bios обеспечивает единный API для перешивки микросхемы, что значительно облегчает задачу его заражения :)
А также вылечивания. ;)
Я уже представил, как мой любимый бесплатный Avast будет лечить БИОСы — как и все другие файлы, удалением :)
Вспоминая гиммор с перепрошивкой биоса, задаюсь вопросом, почему по такой же технологии нельзя делать полезные манипуляции с ним. А то все эти загрузки с дискет и т.п…
В журнале «Хакер» мы писали о этом в 2005 году.
Обязательно сообщите об этом участникам конференции! А то они и не догадываются, что в России уже давно все открыли!
Sign up to leave a comment.

Articles

Change theme settings