Старт в программировании
Старт в программировании (2019)
Сентябрь 2, 2019
Мысли по рынку криптовалют
Мысли по рынку на 03.09.2019
Сентябрь 3, 2019
Показать все
Proxmark3 rdv4: оживляем "кирпич"

Постараюсь принести пользу этому замечательному ресурсу практической статьей.

Сравнительно недавно стал пользователем Proxmark3 rdv4 для тестирования СКУД — блестящего инструмента при проведении выездного пентеста, включающего преодоление физического периметра. Далее для краткости изложения буду его называть pm3

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

Шаг 1. Скачиваем и устанавливаем нужное ПО на ПК.

Совет 1. Доказано на практике (и не только мной), что вероятность получить «кирпич» близка к 100%. Но все поправимо!
Совет 2. Именно для rdv4 используйте или стандартную прошивку, или rfidresearchgroup. Важно!!! Не пробуйте ставить прошвку от айсмана. Во-первых получите кирпич. А даже если нет — часть методов не будет работать. Вторая рекомендованная мной прошивка от RfidResearchGroup сделана на ее основе и с участием разработчика.

Родная прошивка: Proxmark/proxmark3
Прошивка RfidResearchGroup RfidResearchGroup/proxmark3

В качестве рабочей машинки я использую ноутбук с Ubuntu 18.04. Соответственно, процесс установки ПО на комп описывать не буду — это максимально корректно и подробно описано у RfidResearchGroup по ссылке выше.

Шаг 2. Прошивка Proxmark3

После компиляции файлов на ПК вы дожны прошить сам pm3. Подразумевается, что это должно делаться автоматически вот этой командой:

client/proxmark3-flasher /dev/ttyACM0 -b bootrom/obj/bootrom.elf armsrc/obj/fullimage.elf

Где bootrom.elf — загрузчик pm3, а fullimage.elf — основная прошивка.
Помните, то оба файла генерируются при компиляции.

Если процесс прошел успешно, поздравляю! Перезагрузите pm3 и пользуйтесь. Если нет, то начинаем разбираться.

Вариант 1. Ошибка в основной прошивке.

В данном случае все довольно просто и ситуация хорошо описано в мануалах. ПО якобы не видит pm3 и он не работает. Поскольку загрузчик в порядке, мы должны включить pm3 в «сервисном режиме» — с зажатой кнопкой.
После этого снова накатываем прошивку (лучше другую :) )

Вариант 2. Ошибка загрузчика.

Вот это уже проблемка. Вы получили классический «кирпич», который будем исправлять программированием через интерфейс JTAG.

Перелопатив туеву хучу официальных и неофициальных мануалов, комментариев на форумах и проч. предлагаю САМЫЙ простой и эффективный способ.

Шаг 3. Исправляем загрузчик через JTAG

Нам понадобятся сам pm3, любой Raspberry Pi и 5 проводков для соединения пинов Raspberry с разъемами pm3.

Да, я читал про программаторы Segger, BusPirate, The Shikra… и даже купил некоторые… Забудьте. Ничего кроме проблем по совершенно непонятныс причинам. Если вы пентестер, то почти наверняка у вас есть Raspberry. Все остальное — пустая трата времени и денег с непонятным результатом. Не повторяйте моих ошибок. Мауналы подвирают, прверено на личном опыте.

Важно! Пины на pm3 — очень маленькие дырочки. В моем комплекте и в ближайших «радиотеталях» не оказалось ничего подходящего. Найти такие коннекторы или «крокодильчики» быстро — не самая простая задача. К слову, на lab401 продается переходник за 35 евро. За эти деньги можно плюноуть и купить с Китая pm3 rdv3. Поэтому обошелся простой «скруткой». Будьте внимательны, чтобы не перехлестнуть оголенные провода.

Берем Rasperry Pi и ставим на него дополнительные пакеты и библиотеку Openocd

cd ~
sudo apt-get update
sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev
git clone http://openocd.zylin.com/openocd
cd openocd
./bootstrap
./configure --enable-sysfsgpio --enable-bcm2835gpio
make
sudo make install
sudo cp -r tcl/ /usr/share/openocd

После подготовки rpi нужно соединить пины с pm3. Для моего Rpi3 model B v 1.2 правильная именно такая. Везде пишут, что в других моделях rpi распиновка такая же, но я бы не верил на слово, так как сам помучился с такими «советами».
Нам нужны только эти пины:
14 — Grnd
22 — TMS
19 — TDI
21 — TDO
23 — TCK

ВАЖНО!!! Питание (разъём 3.3v на pm3) НЕ ТРОГАЕМ вообще. Используйте ТОЛЬКО штатное, подключив pm3 через кабель к usb-порту или зарядному устройству. Поверьте, это проще и значительно безопаснее.

Если есть желание, чуть подробнее можете прочитать в этой статье: Raspberry Pi and OpenOCD

Proxmark3 rdv4: оживляем "кирпич" 1

Итак, теперь мы готовы к прошивке.

В директории /usr/share/openocd/scripts/target/ создайте файл конфигурации с названием at91sam7s512-buspirate.cfg.
В него запишите код, рекомендованный производителем pm3

Теперь скопируйте на rpi два файла:
Прошивка загрузчика, который обычно находится тут: proxmark3//bootrom/obj/bootrom.elf
Прошивка платы, обычно она находится тут: proxmark3/armsrc/obj/fullimage.elf

Итак, запускаем openocd

cd /usr/share/openocd/scripts/target/

sudo openocd -f at91sam7s512-buspirate.cfg

В другом окне терминала подключяемся по telnet и прошиваем:

telnet 127.0.0.1 4444

halt
flash erase_sector 0 0 15
flash erase_sector 1 0 15
flash ПУТЬ ДО ПРОШИВКИ/fullimage.elf
flash ПУТЬ ДО ПРОШИВКИ/bootrom.elf
exit

Все! Теперь ваш pm3 полностью работоспособен, нужно только перезагрузить.

Таким образом можно залить любую прошивку и это ГОРАЗДО стабильнее работает, нежели штатным средствами.

Вкратце все, успехов!

Напоследок

Делайте все выспавшимся, на трезвую голову и без тремора рук. Последствия неверного соединения неизвестны и могут привести к повреждению микросхем.

0

Автор публикации

не в сети 5 дней

Александр Никитюк

14
Комментарии: 11Публикации: 151Регистрация: 17-05-2019
ПОДЕЛИСЬ С ДРУЗЬЯМИ

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

пятнадцать + восемь =

Авторизация
*
*

один × пять =

Регистрация
*
*
*
Пароль не введен
*

12 + восемнадцать =

Генерация пароля

девятнадцать + восемнадцать =