Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
24
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Более дешевый, но гораздо более медленный способ определения

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

распиновки JTAG – использование утилиты JTAGenum (https://github.f-x chan

 

.c

 

 

.

 

 

 

 

 

 

 

 

 

p

d

 

 

 

 

e

 

 

 

 

 

 

 

g

 

 

 

com/cyphunk/JTAGenum/),загруженнойнаArduino-совместимыймикро- контроллер, например на модули STM32F103 Black/Blue Pill, атаку на которые мы опишем в разделе «Взлом устройства с помощью UART иSWD».ИспользуяJTAGenum,высначаладолжныопределитьконтак- ты зондирующего устройства,которое будете использоватьдля пере- числения.Например,для модуля STM32 Blue Pill мы выбрали следую- щие контакты (но вы можете их изменить):

#elif

defined(STM32)

// STM32 bluepill,

byte

pins[] =

{ 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17, 18 , 19 , 21 , 22 };

 

 

 

Вам нужно будет обратиться к схеме выводов устройства,а затем со- единитьэтиконтакты сконтрольнымиточками нацелевом устройстве.

Затем нужно прошить код JTAGenum Arduino (https://github.com/cyphunk/

JTAGenum/blob/master/JTAGenum.ino/)наустройствеисвязатьсяснимчерез последовательный порт (командаs просканирует комбинации JTAG).

Третий способ идентифицировать контакты JTAG – проверить пе- чатную плату на наличие одного из разъемов,показанных на рис.7.8. В некоторых случаях печатные платы могут удобно предоставлять интерфейс Tag-Connect, что ясно указывает на то, что на плате также есть разъем JTAG. Вы можете увидеть, как выглядит этот интерфейс,

на странице https://www.tag-connect.com/info/. Кроме того, проверка та-

блиц наборов микросхем на печатной плате может выявить схемы распиновки, указывающие на интерфейсы JTAG.

Рис.7.8.Обнаружение любого из этих контактных интерфейсов на печатной плате определенного производителя (ARM,STMicroelectronics или Infineon для OCDS) –надежный признак того,что вы имеете дело с разъемом JTAG

Взлом устройства с помощью UART и SWD

В этом разделе мы воспользуемся портами UART и SWD микроконт­ роллера, чтобы получить данные из памяти устройства и обойти процедуру аутентификации прошитой программы. Для атаки на устройство будем использоватьдва инструмента: программатор mini ST-Link и адаптер USB-UART.

Уязвимости портов UART,JTAG и SWD  203

 

 

 

 

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

 

 

 

 

Программатор mini ST-Link (рис. 7.9) позволяет нам ствовать с целевым устройством через SWD.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

взаимодей-

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.7.9.Программатор mini ST-Link V2 позволяет взаимодействовать с ядрами STM32 через SWD

Адаптер USB-UART (рис. 7.10) позволяет связываться с выводами UART устройства через USB-порт нашего компьютера. Этот адаптер представляет собой устройство транзисторно-транзисторной логики (TTL),т.е.он использует напряжения 0 и 5 В для представления логи- ческих уровней 0 и 1 соответственно. Многие адаптеры используют микросхему FT232R, и вы можете легко найти ее, если поищете в ин- тернете адаптеры USB для последовательного порта.

Рис.7.10.Адаптер USB-UART (TTL),который может переключаться между рабочими напряжениями 5 и 3,3 В

Вам понадобится как минимум десять проводов-перемычек, чтобы соединить устройства между собой. Также рекомендуем приобрести макетную плату, на которой можно надежно установить модуль Black Pill. У вас должна быть возможность приобрести эти аппаратные ком- поненты в интернете. Мы специально выбрали компоненты, исполь- зуемые здесь, потому что их легко найти и они недороги. Но если вам нужна альтернатива программатору ST-Link, можете использовать Bus Blaster,авкачествеальтернативыадаптеруUSB-UART–платуBusPirate.

204  Глава 7

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Что касается программного обеспечения, мы будем использовать

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

Arduino для кодирования программы аутентификации, которую мыdf-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

атакуем; для отладки подойдет OpenOCD с GDB. В следующих разде- лах показано, как настроить эту среду тестирования и отладки.

Целевое устройство STM32F103C8T6 (Black Pill)

STM32F103xx – очень популярное семейство недорогих микрокон- троллеров, используемых во множестве приложений на промыш- ленных, медицинских и потребительских рынках. Такой микрокон- троллер имеет 32-разрядное ядро RISC ARM Cortex-M3, работающее на частоте 72 МГц, флеш-память объемом до 1 МБ, статическую па- мять с произвольным доступом (SRAM) объемом до 96 КБ и широкий спектр устройств ввода/вывода и периферийных устройств.

Две версии этого устройства известны как Blue Pill и Black Pill (в за- висимости от цвета платы). Мы будем использовать Black Pill (STM- 32F103C8T6) в качестве целевого устройства. Основное различие между двумя версиями заключается в том, что Black Pill потребляет меньше энергии и прочнее, чем Blue Pill. Устройство можно купить в интернет-магазинах. Рекомендуем заказать плату с предваритель- но распаянными гребенчатыми разъемами и прошитым загрузчиком Arduino:таким образом,вам не придется паятьразъемы,и вы сможе- те использовать устройство напрямую через USB.Но в этом упражне- нии мы покажем, как загрузить программу для Black Pill без загруз-

чика Arduino.

  ПРЕДУПРЕЖДЕНИЕ    Мы выбрали Black Pill, потому что столкнулись с некоторыми проблемами при использовании Blue Pill с интерфейсом UART. Настоятельно рекомендуем взять для эксперимента именно Black Pill вместо более дешевой версии Blue Pill.

На рис. 7.11 показано расположение выводов устройства. Обратите внимание,что не все контакты устойчивы к напряжению 5 В,поэтому мы не будем превышать 3,3 В. Если хотите узнать больше о внутрен- нем устройстве микроконтроллера STM32 в целом, вот очень хоро-

ший справочник: https://www.rlocman.ru/forum/showthread.php?t=22505.

Убедитесь,чтовынеподключаетевыход5Вникодномуизконтак- тов 3,3 В, иначе вы, скорее всего, выведете Black Pill из строя.

Настройка среды отладки

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

Уязвимости портов UART,JTAG и SWD  205

 

 

 

 

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

 

 

плату Arduino и монитор последовательного порта для отображения

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

вывода с оборудования.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Рис.7.11.Расположение выводов STM32F103C8T6 (Black Pill)

Установка среды Arduino

ВыможетезагрузитьпоследнююверсиюIDEArduinoпоссылкеhttps:// www.arduino.cc/en/Main/Software/. В нашем примере используется вер- сия 1.8.9 в Ubuntu 18.04.3 LTS, но какая операционная система у вас, значения не имеет. В Linux загрузите пакет вручную и следуйте ин-

струкциям на веб-странице https://www.arduino.cc/en/guide/linux/.Кроме того, если вы используете дистрибутив на основе Debian, например Kali или Ubuntu, после ввода следующей команды в терминале будет установлено все, что вам нужно:

# apt-get install arduino

После установки IDE загрузите последние файлы ядра Arduino STM32 с GitHub,поместите их в папку оборудования в каталоге Ardu- ino sketches и запустите сценарий установки правил udev.

$ wget https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip $ unzip master.zip

$ cp -r Arduino_STM32-master /home/ithilgore/Arduino/hardware/

206  Глава 7

 

 

 

 

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

 

 

$ cd /home/ithilgore/Arduino/hardware/Arduino_STM 32-master/tools/linux

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

m

$ ./install.sh

w Click

 

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

e

 

 

 

 

p

df

-

 

 

 

g

.c

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

x cha

 

 

 

 

 

Убедитесь, что вы заменили имя пользователя после /home/ ис- пользуемым вами именем пользователя. Если папки hardware не су- ществует, создайте ее. Чтобы узнать, где сохранены эскизы Arduino, запустите Arduino IDE, введя arduino в терминале или щелкнув зна- чок Arduino на рабочем столе. Затем выполните команды File > Pref- erences (Файл > Настройки) и укажите путь к файлу в поле Sketch- book location (Расположение папки файлов). В нашем примере это

/home/<ithilgore>/Arduino.

Вам также потребуется установить 32-разрядную версию libusb-1.0 следующим образом (потому что утилита st-link,которая поставляет- ся вместе с Arduino STM32, нуждается в ней):

$ sudo apt-get install libusb-1.0-0:i386

Кроме того, установите платы Arduino SAM (Cortex-M3). Это ядра микроконтроллера Cortex-M3. Ядра – это низкоуровневые API, ко- торые делают определенные микроконтроллеры совместимыми с вашей Arduino IDE. Вы можете установить их внутри­ Arduino IDE, щелкнув Tools > Board > Boards Manager (Инструменты > Плата > Менеджер плат). Затем найдите SAM Boards (Платы SAM). Нажми- те Install (Установить) на появившейся панели Arduino SAM Boards (32-битная ARM Cortex-M3). Мы использовали версию 1.6.12.

Последние инструкции по установке Arduino STM32 можно найти по адресу https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation/.

Установка OpenOCD

OpenOCD–бесплатныйинструментдлятестированиясоткрытымис- ходным кодом, который обеспечивает доступ JTAG и SWD через GDB к системам ARM, MIPS и RISC-V. Мы будем использовать его для от- ладки Black Pill.Чтобы установить его в вашей системе Linux,введите следующие команды:

$ sudo apt-get install libtool autoconf texinfo libusb-dev libftdi-dev libusb-1.0 $ git clone git://git.code.sf.net/p/openocd/code openocd

$ cd openocd $ ./bootstrap

$ ./configure --enable-maintainer-mode --disable-werror --enable-buspirate --enable-ftdi $ make

$ sudo make install

Обратите внимание, что вы также устанавливаете libusb-1.0, ко- торый потребуется для включения поддержки для устройств Future Technology Devices International (FTDI). Затем скомпилируйте Ope-

Уязвимости портов UART,JTAG и SWD  207