Перейти к содержанию
    

Удаленно. Прошивка PCIe (или M.2) платы для DMA. Аналог PCILeech

Есть 2 ПК. Оба на Windows 10. Один назовем целевой, другой атакующим. Хочется с атакующего ПК послать команду и получить дамп оперативной памяти целевого. Такое функционал обычно называют DMA атакой и для него используют PCIe разъем (ну или M.2).


Если кратко - нужно решение аналогичное PCILeech - https://github.com/ufrisk/pcileech. Проблема PCILeech в том, что там предлагаются прошивки для таких плат, которые сейчас не купить.


Если не кратко, то что в итоге хочется получить:

  • Бюджетная и доступная плата, вставляется в PCIe или M.2 слот целевого ПК. Очень желательно, чтобы ее стоимость укладывалась в 150$
  • Также плата подсоединяется к атакующему ПК по USB (я другого варианта не придумал, так что опционально). Этот разъем универсален, и обладает достаточной скоростью для выкачки дампа памяти
  • Плата прошивается, чтобы принимать сигнал от атакующего ПК на выкачку памяти. Дополнительно нужна возможность менять основные идентификаторы платы для целевого ПК (по типу VID PID), чтобы плата определялась реальным устройством
  • Работа с платой по следующему сценарию. Атакующий ПК шлет сигнал, плата, получив сигнал, начинает отправку на атакующий ПК дампа оперативной памяти целевого ПК. Получив весь дамп, атакующий снова шлет сигнал и так далее в цикле

В идеале итоговое решение должно представлять собой софтверно-хардверный сетап, который не требует дополнительной пайки при "сборке". То есть лучший вариант - это устройство, которое доступно к продаже, и прошивка для него.
Примером может быть тот же Screamer M.2 в тандеме с PCILeech (https://github.com/ufrisk/pcileech-fpga/tree/master/ScreamerM2), либо статья на Хабре, где на основе SATA контроллера получили похожий функционал (https://habr.com/ru/post/532672/). Единственное, что не удалось в статье - передать дамп памяти целиком на атакующий ПК и предлагается его анализ проводить внутри самого контроллера.

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

Телеграм для связи: @jurikmazurik

Изменено пользователем FlashPlayer13

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

USB точно надо? Вот навскидку дешевле сотки и 4 оптики, правда плату сам не пользовал

https://aliexpress.ru/item/4001072461753.html?item_id=4001072461753&sku_id=12000024008939311&spm=a2g2w.productlist.0.0.d74a284efXi5vk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

USB не обязательно. Мне бы только понять по какому каналу можно передать данные на атакующий ПК. Свяжемся в ТГ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

через оптику.  там их 4 под sfp. я в тг не умею, [email protected]

 

Изменено пользователем mnovikov2000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, FlashPlayer13 said:

USB не обязательно. Мне бы только понять по какому каналу можно передать данные на атакующий ПК.

можно через тот же pcie, симметрично, так сказать.

взять две одинаковые платы https://github.com/dukelec/cdpga/tree/master/cdpga_p и соединить друг с другом, а кто именно там кого "атакует" потом решить :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А прикольная платка. Единственно, на воздух разъем мелкий нескоростной, если штука на стол можно попробовать шлейфом подколхозить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то же, что и с указаной выше ScreamerM2, только вместо моста FT601 в usb там просто lvds наружу. если их соединить со второй такой же платой получится не USB3->PCIe, а PCIe-> PCIe.

там io выведено не много, но можно впринципе в какую-нибудь готовую плату usb моста типа UMFT600 c 16ти битным ft600 или fx3 от кипариса, получится то же самое что ScreamerM2 только чуть-чуть медленнее, через 16бит шину больше 200МБ/c не пролезет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Каков диапазон бюджета? ;). Просто при пожелании, чтобы стоимость платы укладывалась в $150,

трудно ожидать оплаты работы существенно выше этой суммы. А чтобы использовать озвученные

платы типа - https://github.com/dukelec/cdpga/tree/master/cdpga_p или

https://aliexpress.ru/item/4001072461753.html?item_id=4001072461753&sku_id=12000024008939311&spm=a2g2w.productlist.0.0.d74a284efXi5vk 

Как то головой поработать придется. Не хотелось бы за $150 это делать ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/6/2021 at 10:24 PM, Lagman said:

Включат iommu и деньги были потрачены зря.:acute:

вот тоже хотелось спросить - а оно в современных BIOS-ах не включено "по дефолту"?

ну просто какая-то дыра во всех там виртуализациях и пр. удивительно, если такое осталось со старых добрых IBM PC XT :)

сам я в современных ПК не понимаю - а наоборот сам интересуюсь 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, yes said:

вот тоже хотелось спросить - а оно в современных BIOS-ах не включено "по дефолту"?

Это еще зависит от типа и поддержки ОС. Вроде читал что по умолчанию поддержку IOMMU только в WIn10 включили.  
В Linux давно есть поддержка IOMMU но тоже вроде по умолчанию она выключена и надо включать при конфигурации.    

На PC всерьез проблемами контроля доступа к памяти через DMA озаботились лишь относительно недавно когда наружу начали выводить интерфейсы типа Thunderbolt и PCIe.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, RobFPGA said:

Это еще зависит от типа и поддержки ОС.

off:

я не очень в этом разбираюсь - мне казалось что BIOS (как нынче его называют UEFI) запускает ОСы уже в виртуальных машинах и для доступа к реальному железу используется всякие защищенные (криптография) сервисы - secure boot и т.п.

мои знакомые делали поддержку uefi в линукс ядре в 200х и что то там было под NDA и вообще непонятно мне как оно совместимо с опенсорсом. предполагаю, что процессор, который бутит систему это не главный цпу, а какое-то встроенное в чипсет little ядро (даже не знаю как аналог армовского литлбиг называется для х86)

какие-то популярные статьи пишутся по-моему журналамерами и сомневаюсь в правдоподобности описания, а разбираться по настоящему нет у меня таких задач и времени. но интересно было бы иметь "общее" понимание

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, yes said:

но интересно было бы иметь "общее" понимание

Когда то на Хабре был цикл статей (1 2) посвященный разбору UEFI и  непосредственно этапам начальной загрузки.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...