Статья Proxmark3 как написать свой вариант автономного режима

A

art445

Green Team
26.12.2019
19
16
Купил себе китайский proxmark3 easy вот играюсь. Для начала я его маленько модифицировал аккумулятор приделал 150 млач хватает на 3 часа непрерывной эмуляции. Еще штекер приделал для перепрошивки.

Безымянный1.jpg
20200102_102603.jpg


Но меня не устраивало что в автономном режиме у него мало фукционала и чтобы сменить режим нужно перепрошивать чип. Вот я накал себе standalone mode который эмулирует все типы карт которые у меня есть т.е. Mifare HID EM410.

Сделать это в принципе не очень сложно. Я юзаю релиз отсюда " " там есть скелетон и объяснялка как им пользоваться и как подключать. Кому интересно то что получилось на сегодняшний момент - можете посмотреть тут . Че-то официальный форум у меня перестал показываться, но там я не нашел то что нужно вот пришлось самому шустрить:) Вообщем интересная игрушка. Я редактирую код прошивки в Эклипсе и прошиваю J-flash lite 6.60c. Можете сделать себе любой автономный режим - на вашу потребу.

Вот стало мне интересно записать взаимодействие EMV карты с терминалом при бесконтактном платеже. Все оказалось очень просто.
Установил я себе на смарт RFID tools, подключил к смарту pm3 набрал команду hf 14a sniff, приложил карту к pm3 прислонил все это к терминалу. Сначала загорается зеленый глаз - типа началась запись, когда начинается взаимодействие с терминалом начинает гореть красный глаз, кнопка завершает запись. После завершения записи набираю команду hf14a list. Смарт приложение все пишет в лог файл. Потом подключаю смарт к компу и скачиваю файл proxmark3.txt, а там все что меня интересовало - APDU команды которыми обменивается карта с терминалом. Лог немного нужно подправить - убрать контрольные суммы. Например pm3 записывает

2458928 | 2480912 | Rdr |02 00 a4 04 00 0b a0 00 00 03 97 43 49 44 5f 01 00 05 65
2506100 | 2511988 | Tag |02 6a 82 93 2f

что означает

-> 00 a4 04 00 0b a0 00 00 03 97 43 49 44 5f 01 00
<- 6a 82

Меня притомил гемор с ОТГ перходниками я решил это дело упростить вот что получилось

Безымянный2.jpg


может не очень эстетично зато практично;)

Кому интересно, к китайскому ПМ3, довольно просто, можно добавить 4 кнопки. Это очень удобно для автономного режима. Нужно придумать только дизайн поминиатюрней.

1. на картинке 6 точек для SPI интерфейса

20200127_222151.jpg


2. припаиваем к ним проводочки

20200128_210333.jpg


3. делаем маленькую клаву и подсоединяем

20200207_130441.jpg


Я перед обработчиком кнопок вызываю на всякий случай DisableSpi(), пока никаких глюков в работе ПМ3, в связи с этим новшеством, не обнаружилось.

SPI используется только для конфигурации FPGA и при каждой установке конфигурации вызывается SetupSpi так что теоретически глюков не должно быть. Но хз. всякое бывает :)

(под алюминевым кожушком акккумулятор с зарякой)
 
A

art445

Green Team
26.12.2019
19
16
окультурил кнопки теперь это выглядит так:
20200210_164448.jpg
кто захочет добавить кнопки - там резисторы 4,7 ком, один контакт каждой кнопки на минус, второй через резистор на плюс к контактам - MISO, MOSI,PA1, CK - припаивается провод от места соединения кнопки и резистора.


Написал код для автономного режима. Тут лежит модифицированный последний код от айсмена. ( исходник + бинарик прошивки и бинарик клиента )
Если есть желание изменить прошивку то там лежит проект Eclipse. Нужно установить ProxSpace и в Eclipse указать ссылку на него.
Пока много разных вопросов - например как устанавливать диапазон при брутфорсе, еще какая-то хрень с клонирванием HID универсальный копировальщик копирует HID на мои болванки а ПМ3 не хочет.

вот описание того что есть сейчас:
модуль для автономного режима для китайского ПМ3 с добавлеными 4 кнопками
код предполагает возможность вызова 15 функций - сейчас используется 9
1 EM410read_emu - читает симулирует карты EM410
2 EM410read_clone - читает клонирует карты EM410 на болванку
3 Iso14443a_read_emu - читает симулирует карты 14443а
4 Iso14443a_read_clone - читает клонирует карты 14443а на болванку
5 HIDread_emu - читает симулирует карты HID
6 HIDread_clone - читает клонирует карты HID на болванку (тут какая-то лажа с болванками)
7 EM410Brute - автоматически симулирует ИД EM410B карт в заданном диапазоне
8 HIDBrute - автоматически симулирует ИД HID карт в заданном диапазоне
9 Iso14443aBrute - автоматически симулирует ИД 14443а карт в заданном диапазоне
10-15 - можно добавить еще что-то

работает это так:
есть 4 добавленные кнопки, одна заводская кнопка и 4 светодиода
- переход в автономный режим происходит как обычно

находясь в автономном режиме дополнительные кнопки работаю
- нажатие 1 зажигает светодиод А, повторное нажатие выключает светодиод А (индекс = 1)
- нажатие 2 зажигает светодиод В, повторное нажатие выключает светодиод В (индекс = 2)
- нажатие 3 зажигает светодиод C, повторное нажатие выключает светодиод C (индекс = 4)
- нажатие 3 зажигает светодиод D, повторное нажатие выключает светодиод D (индекс = 8)

вся эта светомузыка нужна для установки внутреннего индекса ( от 1 до 15) для выбора функции
например:
- если горит диод А то индекс равен 1
- если горит диод B то индекс равен 2
- если горит диод А+B то индекс равен 1+2
- если горит диод C то индекс равен 4
- если горит диод А+C то индекс равен 4+1
- если горит диод B+C то индекс равен 4+2
- если горит диод А+B+C то индекс равен 1+2+4
- если горит диод D то индекс равен 8
- если горит диод D+A то индекс равен 8+1
для удобства возле кнопок можно наклеить цифры 1,2,4,8

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

по моему ничего сложного нет
 
  • Нравится
Реакции: The Codeby
Ondrik8

Ondrik8

prodigy
08.11.2016
1 038
3 019
ну так то пикольно))


на сколько я помню, при длинном нажатии он переходит в режим считывания карты а потом при одном последующим нажатии ее воспроизведение, ранее записанной карты
+ для PM3 имеется андройд приложения, что позволяет просто подключить и юзать как удобно, по мне)
+ дядя Мороз Iceman создал под нее скрипты которые можно, настроить на автономный режим это при условии что к PM3 докупить аккум. по сути там одной кнопки вполне хватает)
 
A

art445

Green Team
26.12.2019
19
16
по сути там одной кнопки вполне хватает)
моя цель сделать автономный режим который объединяет все известные варианты сразу. Насколько мне известно, дядя Мороз Iceman не предусмотрел указывать параметры через запятую ( STANDALONE=LF_SAMYRUN ). И если нужен другой вариант STANDALONE, то нужно перепрошивать девайс. Что касается скриптов, то для их запуска нужен клиент, а это уже не автономный режим. Если подключать мобильник большой надобности в батарейке нет. Кстати есть прикольная тема - если в подключить батарейку в то время когда ПМ3 подключен к компу и быстренько отключить комп, то память не обнуляется . Например если в атономном режиме насобирать инфу, а потом подключить комп и быстренько отключить батарейку, то получим тот же эффект, что и с внешней флэш памятью.
 
  • Нравится
Реакции: Ondrik8
LocalForm

LocalForm

New member
07.02.2020
1
0
Интересная статья
 
Z

zheki444

Member
28.12.2017
5
2
Сказать что это Круто, ничего не сказать - это Божественно!
Спасибо за труды,обязательно буду смотреть за дальнейшим развитием проекта!!
 
A

art445

Green Team
26.12.2019
19
16
Углубляя тему с передачей данных между автономным и онлайн режимами.

Проверено, что можно в автономном режиме снифить 14а карту, потом подключиться к компу и прочитать то что наснифил. Можно устанавливать параметры для брутфорса в онлайн режиме, а бурфорсить в автономном режиме. Я маленько расширил интерфейс для HW команды на клиенте и ПМ3. Добавил буфер для пересылки данных, и команды set, get, cln = установить, прочитать, стереть .

онлайн выглядит это так:
[usb] pm3 --> hw artext set test argument string
#db# CMD_ARTEXT server side SET data = set test argument string
[usb] pm3 --> hw artext get
#db# CMD_ARTEXT server side GET data = test argument string
[usb] pm3 --> hw artext cln
#db# CMD_ARTEXT server side clean buffer
[usb] pm3 --> hw artext get
#db# CMD_ARTEXT server side GET data =
[usb] pm3 -->

в автономном режиме просто читаем/пишем буфер "stdbuff.Bytes" размер буфера 512 байт.
 
  • Нравится
Реакции: The Codeby
Dkey

Dkey

Member
01.02.2018
11
1
я правильно понимаю что в связке с walrus это очень удобно?
 
A

art445

Green Team
26.12.2019
19
16
Бесспорно я стремлюсь к удобству использования ПМ3, но в автономном режиме т.е. без каких-либо клиентских устройств типа компа или мобильника. Если подключать мобильное приложение или комп, то хватит и одной кнопки.
Дополнительные кнопки и буферы обмена нужны только для удобства использования ПМ3 без мобильника или компа. Комп в этом смысле нужен только для слива логов автономной работы ПМ3. Например, если есть желание незаметно скопировать карту и потом ее эмулировать или клонировать, то это сделать проще без пристегнутого компа или мобильника, ПМ3 можно держать в руке почти незаметно.

Насчет приложения walrus - я им не пользовался. Но думаю, что большого удобства дополнительные кнопки тебе не добавят.
 
  • Нравится
Реакции: Ondrik8
S

Saint999

New member
18.10.2017
2
0
Братцы а скажите насчёт брутфорса proxmark3 какие виды считывателей можно боутфорсить? Если нет карты может ли с помощью проксмарка произвести брутфорс на считыватель?
 
A

art445

Green Team
26.12.2019
19
16
Братцы а скажите насчёт брутфорса proxmark3 какие виды считывателей можно боутфорсить? Если нет карты может ли с помощью проксмарка произвести брутфорс на считыватель?
Я проверял свой код для брутфорса EM410 это 125 кгц карты которые не HID. Ставил начальное значение ИД карты на 2000 меньше того который открывает замок, запускаю перебор, прикладываю ПМ3 к считывателю и через небольшое время замок открывается. ИД который открывает замок 0300822734. Вот прикинь если ты его не знаешь и будешь перебирать с единицы до 0300822734, это займет время. Я сделал код который также перебирает HID и MF classik, но пока не проверял на считывателях только на универсальном копировальщике.
Так что если нет карты то подобрать ИД можно, но сколько это займет времени сказать трудно. Я думаю, что скорее всего можно брутфорсить любой считыватель, если контролер доступа не отслеживает этот вид атаки.
 
S

Saint999

New member
18.10.2017
2
0
А какие команды используешь для брутфорса на разные виды карт?
 
A

art445

Green Team
26.12.2019
19
16
А какие команды используешь для брутфорса на разные виды карт?

Для низкочастотных карт использую функцию SimulateTagLowFrequencyEx. Для МФ получаю данные со считывателя функцией GetIso14443aCommandFromReader, отвечаю функцией EmSendCmd, имитируется SELECT CARD. Это рассчитано на контролеры которые проверяют только ИД карты.
 
A

art445

Green Team
26.12.2019
19
16
Медленно все это движется к финалу. Вот ссылка на хелп файл, для тех кто захочет повторить тоже самое или понять как это работает. Код осталось еще маленько допилить., но принципиально ничего не добавиться. Если кто-то прочитает хедп файл , то просьба указать на текст который плохо понимается.
 
A

art445

Green Team
26.12.2019
19
16
Ну вот и все. Вот окончательный вариант.
Тут есть.
- модифицированный исходник аля гитхаб в смысле можете собрать сами также как и скачанный с гитхаба.
- бинарики прошивки для загрузчика и для jtag
- бинарик клиента
- хелп файл окончательная версия

в приципе, кто хочет может добавить еще 5 функций не меняя интерфейс.
У всего есть начало и конец - пора заняться чем-нибудь другим :)
 
Мы в соцсетях: