| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.221.165.190
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 php libc rand() эксплоит Windows Server 2008 FreeBSD Jail Elastix QIP Virtual chroot Limit kernel proc sysctl Tune freeBSD bridge Boot LiveCD Disk Bluetooth GEO game DirectX emulator Python Shell червь Conficker вирус троян лаборатория касперского пиратство Apple iPhone Microsoft twitter социальная сеть анонимность лицензия Open Source уязвимость MySQL база данных Закон Франция Пират Skype мобильный Deutsche Telekom хакер trend micro кибератака Германия робот Персональные данные Ноутбук Интернет китай цензура windows vista acer Linux патент браузер Firefox Internet Explorer Opera Safari Intel Oracle патч Банкомат IBM США Dell Ford MAC контроль Internet кибербезопасность приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 взлом Пентагон Украина Facebook Cisco Cloud Windows XP нетбук торрент музыка Биометрический Nokia Hardware Manager ФБР IP-адрес sms RSA java Google Captcha Symantec Спам Антивирус тест Anti-Malware Windows 7 операционная система windows провайдер авторское право rapidshare UNIX свиной грипп шантаж Дети ipod копирайт McAfee HTTPS icann студент Норвегия New York Times YouTube Warner Music КНДР Ubuntu AMD ATI касперский Россия РФ сервер хостинг Wi-Fi суд пароль блог фишинг одноклассники Медведев контрафакт мошенник sony Gps по JavaScript Хакеры Yahoo фас компьютер софт Минкомсвязи Сбой мошенничество Доктор ВЕб Вконтакте ie8 исходный код МВД фильтр порнография свобода слова казахстан Autodesk сисадмин Gmail кредитная карта LiveJournal шифрование Deep Purple банк HTML5 Нанотехнологии wikipedia выборы DNS bind KaZaA Android Basic атака Mac OS X домен ФСБ прокуратура уголовное дело ICQ Sophos Google Voice ошибка DARPA военные сайт турция конференция спамер Полиция Koobface Великобритания IRC белоруссия Грузия Bittorrent Европа Dr.WEB Linux Mint Билл Гейтс спецслужбы Royal Bank of Scotland смартфон Canonical F-Secure Symbian фильм Microsoft Office Новая Зеландия Adobe Австралия IDC Internet Explorer 9 iPad Ирландия поиск GOOGLE EARTH МТС Реклама слежка Mandriva BSD Zeus личные данные eset avast Avira G Data Software защита Defcon виртуализация dll LibreOffice Черный список BlackBerry индия Москва DVD социальные сети flash player paypal BitDefender email сертификат honda MasterCard Anonymous технологии IPv6 Ассанж Оптоволокно передача данных арест Fedora Samsung Иск Apache учетная запись iTunes исследование Cert Санкт-Петербург McDonald's SOPA PIPA Bioshock Infinite: Burial at Sea - ico Megaupload CES hotfile отчет приложение Инвестиции платформа DRM DDoS-атака роскомнадзор

Главная » Статьи » Общие Статьи

Еще одна аппаратная угроза или проникновение в SPD ROM №1

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

В ранее опубликованной статье "Проникновение в BIOS ROM" №1 и №2, были рассмотрены уязвимости, позволяющие вредоносным программам стереть или модифицировать содержимое микросхемы BIOS и таким образом, вывести из строя материнскую плату. Напомним, что такой сценарий возможен потому, что в качестве носителя BIOS используется микросхема электрически перепрограммируемого постоянного запоминающего устройства (Flash ROM), допускающая перезапись непосредственно в системе.

Как известно, микросхемы такого типа используются в современных компьютерах не только в качестве носителей BIOS. Практически все модули оперативной памяти (DIMM), начиная от PC66 SDRAM, содержат микросхему SPD (Serial Presence Detect), в которой хранятся параметры модуля. При старте, BIOS считывает содержимое SPD и таким образом определяет количество модулей DIMM, их расположение по разъемам, размер, архитектуру, быстродействие и другие параметры. В соответствии с прочитанной информацией выполняется инициализация контроллера памяти. Содержимое SPD также считывают диагностические утилиты и именно благодаря этому, они могут определить, память какого производителя установлена в компьютере.

Механизм доступа к SPD поддерживает не только чтение, но и перезапись содержимого микросхем. Именно в этом и состоит уязвимость, описанию которой посвящена данная статья. Материал проиллюстрирован исходными текстами программ, выполняющих чтение и запись SPD.

Технические подробности

В качестве устройства SPD, устанавливаемого на модулях памяти, используется микросхема 24C02 фирмы Atmel, детально описанная в [13], либо аналоги. Ее размер – 256 байт. Назначение каждого байта определяется стандартами, описанными в документах [14-18]. Для каждого типа памяти, от SDRAM до DDR3 используется свой стандарт на содержимое SPD. Отметим, что "классические" документы [14-18] нормируют использование младших 128 байт SPD. Старшие 128 байт (байты с адресами 128-255) резервируются для производителя модуля или компьютера. Один из вариантов их применения – хранение так называемых "оверклокерских профилей", то есть информации, необходимой при "разгоне" подсистемы памяти.

Доступ к микросхемам SPD осуществляется по 2-проводной последовательной шине SMBus (System Management Bus), детально описанной в [11-12]. Контроллер этой шины находится в составе "южного моста" чипсета. Примеры реализаций в [1-7]. Некоторые типы "южных мостов", например VIA VT82C586B, описанный в [5] вместо полноценного контроллера SMBus поддерживают только набор сигнальных линий, состояние которых можно считывать и устанавливать. При этом протокол шины реализуется программно.

Шина SMBus также используется для доступа к регистрам тактового генератора, некоторых видов термодатчиков и других устройств. Некоторые подробности ее функционирования рассмотрены в ранее опубликованной статье "Тактовый генератор и разгон" №1 и №2.

Механизм доступа к SPD

Рассмотрим последовательность действий, которую должна выполнить программа для чтения или записи микросхем SPD, находящихся на модулях памяти. Как было показано выше, доступ к ним осуществляется посредством контроллера System Management Bus. В каждом чипсете этот контроллер реализован по-разному, и, разумеется, в рамках одной статьи невозможно описать все варианты его реализации. Поэтому рассмотрим конкретный пример – чипсет Intel 845PE, использующий "южный мост" Intel ICH4 (82801DB), описанный в [2]. Используя документацию на микросхемы чипсета, например [1-7], заинтересованный читатель сможет самостоятельно разработать процедуры для поддержки других платформ, либо адаптировать приведенную процедуру, для реализаций, несущественно отличающихся от рассмотренной. Отметим, что в рассматриваемом чипсете (как и во многих других чипсетах) набор программно-доступных регистров контроллера SMBus содержит два блока регистров.

Первый блок - конфигурационные регистры, используемые для выделения системных ресурсов контроллеру (диапазон ввода-вывода, номер линии запроса на прерывание) и задания некоторых опций его функционирования. Эти регистры находятся в конфигурационном пространстве, подробности в [9-10]. Использование функций PCIBIOS для доступа к конфигурационному пространству описано в [8].

Второй блок – операционные регистры, непосредственно управляющие операциями чтения и записи на шине SMBus. Эти регистры находятся в пространстве ввода-вывода.

Для чтения SPD необходимо выполнить следующие действия.

1) Программирование конфигурационных регистров LPC Bridge. Локализуем в конфигурационном пространстве блок регистров с координатами Bus=0, Device=1Fh, Function=0. Это устройство LPC Bridge, входящее в состав "южного моста" Intel ICH4. Его идентификаторы: Vendor ID = 8086h, Device ID = 24C0h. В этом блоке, по адресу 00F2h расположен 8-битный регистр Function Disable Register. Бит 3 указанного регистра управляет разрешением доступа к конфигурационным регистрам контроллера SMBus: 0=доступ разрешен, 1=доступ запрещен. Устанавливаем указанный бит в "0", то есть, разрешаем доступ. Это необходимо, так как в некоторых платах, BIOS перед загрузкой ОС оставляет этот бит в состоянии "1" , при этом доступ к контроллеру SMBus по умолчанию запрещен. Подробности в [2].

2) Программирование конфигурационных регистров контроллера SMBus. Локализуем в конфигурационном пространстве блок регистров с координатами Bus=0, Device=1Fh, Function=3. Это устройство SMBus Controller, входящее в состав "южного моста" Intel ICH4. Его идентификаторы: Vendor ID = 8086h, Device ID = 24C3h. Назначаем диапазон портов ввода-вывода для контроллера SMBus, для этого записываем значение базового адреса диапазона в регистр SMB_BASE по адресу 0020h. В регистре Command Register, расположенном по адресу 0004h устанавливаем бит 0 (I/O Space Enable bit) в "1", что обеспечивает разрешение доступа к диапазону портов ввода-вывода контроллера SMBus. Разрешаем функционирование контроллера SMBus, для этого устанавливаем в "1" бит 0 регистра по адресу 0040h (это бит SMBus Host Enable регистра SMBus Host Configuration). Если BIOS, перед загрузкой ОС, оставил контроллер SMBus в разрешенном состоянии (это можно определить по состоянию разрешающих битов, описанных выше), программа не должна повторно выполнять его разрешение, в этом случае пропускаем данные действия. Подробности в [2].

3) Начинаем взаимодействие с контроллером SMBus через его диапазон портов ввода-вывода. Базовый адрес этого диапазона, присвоенный контроллеру на шаге 2, ниже обозначен как SMB_Base. Если контроллер уже был включен на момент запуска программы и шаг 2 был пропущен, то в качестве SMB_Base используем исходное значение базового адреса (установленное процедурой BIOS POST). Обнуляем статусные биты в регистре Host Status (SMB_Base+0) для подготовки контроллера к очередной операции. Биты этого регистра используют дисциплину Read/Write Clear, и обнуляются при записи "1" в них. Подробности в [2].

4) Передаем 8-битный адрес ячейки микросхемы SPD, которую требуется прочитать. Он записывается в регистр Host Command (SMB_Base+3). При выполнении транзакции на шине SMBus, значение этого регистра передается в поле Command. Подробности в [11-12].

5) Передаем 8-битный адрес микросхемы SPD, к которой выполняется обращение. Он записывается в регистр Transmit Slave Address (SMB_Base+4). При выполнении транзакции на шине SMBus, значение этого регистра передается в поле Slave Address. Формат адреса устройства: биты 7-4 при адресации SPD всегда равны 1010b. Биты 3-1 определяют номер микросхемы SPD для одного из восьми модулей DIMM: 000b=DIMM0 … 111b=DIMM7. Бит 0 определяет тип операции: 0=запись, 1=чтение.

Пример: для чтения SPD модуля DIMM2 необходимо установить 10100101b = A5h.

6) Запускаем выполнение транзакции, параметры которой были подготовлены на шагах 4 и 5. Для этого необходимо записать код операции в регистр Host Control (SMB_Base+2). В соответствии с документом [2], для запуска операции передачи байта используется код 01001000b = 48h. Отметим, что направление передачи байта (чтение или запись), определяется битом 0 регистра Transmit Slave Address, установленного на шаге 5.

7) После выполнения шага 6, контроллер SMBus начинает операцию чтения байта из SPD. Программа должна ожидать завершения операции. Опрашиваем состояние бита Host Busy, это бит 0 регистра Host Status (SMB_Base+0). По значению Host Busy=1 определяем момент начала операции, затем ожидаем Host Busy=0, то есть завершения операции. Отсутствие ожидаемого события в течение заданного интервала (около 50 мс) интерпретируется как ошибка – таймаут шины.

8) Считываем из регистра Host Data 0 (SMB_Base+5) байт, прочитанный из SPD. Его значение достоверно только при отсутствии ошибок.

9) Проверяем отсутствие ошибок. Для этого считываем регистр Host Status (SMB_Base+0) и анализируем статусные биты. Согласно документу [2], после успешного завершения транзакции, состояние битов 4-1 должно быть 0001b. Маскируем указанное битовое поле и проверяем его значение.

Процедура записи SPD

Большинство шагов этой процедуры аналогичны соответствующим шагам процедуры чтения SPD, описанной выше. Поэтому, чтобы избежать повторений, рассмотрим только различия.

На шаге 5, при передаче адреса микросхемы SPD, для операции чтения, бит 0 регистра Transmit Slave Address устанавливается в "1". Для операции записи он устанавливается в "0".

Между шагами 5 и 6 необходимо передать значение записываемого байта в регистр Host Data 0 (SMB_Base+5).

Шаг 8, на котором из контроллера считывается байт, прочитанный из SPD, для процедуры записи не выполняется.

После выполнения транзакции, микросхема 24C02 выполняет внутреннюю процедуру записи полученного байта в одну из 256 ячеек, адрес которой был передан на шаге 4. В соответствии с принципами функционирования Flash ROM, после завершения записи, информация не разрушается при снятии напряжения питания и для ее изменения нужна повторная запись. Подробности в [13].

(Продолжение следует)

Источники информации

Электронные документы, доступные на сайте developer.intel.com.

1) Intel 82371AB PCI-TO-ISA / IDE XCELERATOR (PIIX4) Datasheet. Order Number 290562-001.
2) Intel 82801DB I/O Controller Hub 4 (ICH4) Datasheet. Document Number 290744-001.
3) Intel I/O Controller Hub 6 (ICH6) Family Datasheet. Document Number 301473-001.

Электронные документы, доступные на сайте developer.amd.com.

4) AMD-8111 HyperTransport I/O Hub Data Sheet. Publication # 24674.

Электронные документы, доступные на сайте datasheetarchive.com.

(Информация на данном сайте более полная, чем на "родных" сайтах производителей указанных микросхем.)

5) VIA VT82C586B PIPC PCI Integrated Peripheral Controller. Для поиска документа набирать строку "VT82C586B".
6) VIA VT82C686A South Bridge Datasheet. Revision 1.54. Для поиска документа набирать строку "VT82C686".
7) VIA VT82C686B South Bridge Datasheet. Revision 1.71. Для поиска документа набирать строку "VT82C686".

Электронные документы, доступные на сайте pcisig.com.

Документы [9], [10] на сайте pcisig.com доступны только для членов PCI Special Interest Group. Воспользовавшись поисковыми системами, можно найти данные документы для свободной загрузки.

8) PCI BIOS Specification. Revision 2.1.
9) PCI Local Bus Specification. Revision 3.0.
10) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.

Электронные документы, доступные на сайте smbus.org.

11) System Management Bus (SMBus) Specification. Version 2.0.

Электронные документы, доступные на сайте semiconductors.philips.com.

12) The I2C-Bus Specification. Version 2.1.

Электронные документы, доступные на сайте atmel.com.

13) AT24C01A/02/04/08/16 2-Wire Serial CMOS E2PROM Data Sheet.

Электронные документы, доступные на сайте jedec.org.

14) JEDEC Standard No. 21-C. Page 4.1.2.5-1. Appendix E: Specific PD’s for Synchronous DRAM (SDRAM).
15) JEDEC Standard No. 21-C. Page 4.1.2.4-1. Appendix D: DDR Synchronous DRAM (DDR SDRAM). 16) JEDEC Standard No. 21-C Page 4.1.2.10-1. Appendix X: Serial Presence Detects for DDR2 SDRAM (Revision 1.2).
17) JEDEC Standard No. 21-C. Page 4.1.2.11-1. Appendix K: Serial Presence Detect (SPD) for DDR3 SDRAM Modules. SPD Revision 1.0.
18) DDR2 FB-DIMM SPD 1.0. Appendix X: Serial Presence Detect (SPD) for Fully Buffered DIMM (Revision 1.0).
19) JEDEC Standard No. 21-C. Page 4.5.4-1. 168-pin Unbuffered SDRAM DIMM family.
20) JEDEC Standard No. 21-C. Page 4.5.10-1. 184-pin Unbuffered DDR SDRAM DIMM family.
21) JEDEC Standard No. 21-C. Page 4.5.14-1. 240-pin Unbuffered and Registered DDR2 SDRAM DIMM family.
22) JEDEC Standard No. 21-C. Page 4.20.19-1. 240-pin PC3-6400/PC3-8500/PC3-10600/PC3-12800 DDR3 SDRAM Unbuffered DIMM Design Specification.

Книги

23) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование. Москва ТОО "ГРАНАЛ" 1993.
24) В.Г. Артюхов, А.А. Будняк. В.Ю. Лапий. С.М. Молявко, А.И. Петренко. Проектирование микропроцессорной электронно-вычислительной аппаратуры. Справочник. Киев "Тэхника" 1988.
25) К. Г. Самофалов, О.В. Викторов. Микропроцессоры. Библиотека инженера. Киев "Тэхника" 1989.
26) 2B ProGroup: В.А. Вегнер, А.Ю. Крутяков, В.В. Серегин, В.А. Сидоров, А.В. Спесивцев. Аппаратура персональных компьютеров и ее программирование. IBM PC/XT/AT и PS/2. Москва "Радио и связь" 1995.

Категория: Общие Статьи | Добавил: aka_kludge (06.03.2009)
Просмотров: 2128 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

22:50
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2025 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика