Хардварне Хакерство
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
JTAG
JTAG дозволяє виконувати сканування меж. Сканування меж аналізує певні електронні схеми, включаючи вбудовані клітини та регістри сканування для кожного контакту.
Стандарт JTAG визначає конкретні команди для проведення сканування меж, включаючи наступні:
- BYPASS дозволяє тестувати конкретний чіп без накладних витрат на проходження через інші чіпи.
- SAMPLE/PRELOAD бере зразок даних, що входять і виходять з пристрою, коли він працює в нормальному режимі.
- EXTEST встановлює та читає стани контактів.
Він також може підтримувати інші команди, такі як:
- IDCODE для ідентифікації пристрою
- INTEST для внутрішнього тестування пристрою
Ви можете натрапити на ці інструкції, коли використовуєте інструмент, такий як JTAGulator.
Порт доступу до тестування
Сканування меж включає тести чотирьохпровідного Порту доступу до тестування (TAP), загального призначення, який забезпечує доступ до функцій підтримки тестування JTAG, вбудованих у компонент. TAP використовує наступні п'ять сигналів:
- Вхід тактового сигналу тестування (TCK) TCK є тактовим сигналом, який визначає, як часто контролер TAP буде виконувати одну дію (іншими словами, переходити до наступного стану в автоматі станів).
- Вхід вибору режиму тестування (TMS) TMS контролює кінцевий автомат станів. На кожному тактовому імпульсі контролер JTAG TAP пристрою перевіряє напругу на контакті TMS. Якщо напруга нижча за певний поріг, сигнал вважається низьким і інтерпретується як 0, тоді як якщо напруга вища за певний поріг, сигнал вважається високим і інтерпретується як 1.
- Вхід даних тестування (TDI) TDI є контактом, який надсилає дані в чіп через клітини сканування. Кожен виробник відповідає за визначення протоколу зв'язку через цей контакт, оскільки JTAG цього не визначає.
- Вихід даних тестування (TDO) TDO є контактом, який надсилає дані з чіпа.
- Вхід скидання тестування (TRST) Додатковий TRST скидає кінцевий автомат станів в відомий хороший стан. Альтернативно, якщо TMS утримується на 1 протягом п'яти послідовних тактових циклів, це викликає скидання, так само, як і контакт TRST, тому TRST є необов'язковим.
Іноді ви зможете знайти ці контакти, позначені на PCB. В інших випадках вам може знадобитися знайти їх.
Ідентифікація контактів JTAG
Найшвидший, але найдорожчий спосіб виявлення портів JTAG - це використання JTAGulator, пристрою, створеного спеціально для цієї мети (хоча він також може виявляти UART виводи).
Він має 24 канали, які ви можете підключити до контактів плат. Потім він виконує BF-атаку всіх можливих комбінацій, надсилаючи команди сканування меж IDCODE та BYPASS. Якщо він отримує відповідь, він відображає канал, що відповідає кожному сигналу JTAG.
Дешевший, але набагато повільніший спосіб ідентифікації виводів JTAG - це використання JTAGenum, завантаженого на мікроконтролер, сумісний з Arduino.
Використовуючи JTAGenum, спочатку вам потрібно визначити контакти пристрою для проби, які ви будете використовувати для перерахунку. Вам потрібно буде посилатися на діаграму виводів пристрою, а потім підключити ці контакти до тестових точок на вашому цільовому пристрої.
Третій спосіб ідентифікації контактів JTAG - це огляд PCB на наявність одного з виводів. У деяких випадках PCB можуть зручно надавати інтерфейс Tag-Connect, що є чітким показником того, що плата також має роз'єм JTAG. Ви можете побачити, як виглядає цей інтерфейс на https://www.tag-connect.com/info/. Крім того, огляд технічних характеристик чіпсетів на PCB може виявити діаграми виводів, які вказують на інтерфейси JTAG.
SDW
SWD - це специфічний для ARM протокол, призначений для налагодження.
Інтерфейс SWD вимагає два контакти: двонаправлений SWDIO сигнал, який є еквівалентом контактів JTAG TDI та TDO, та тактовий сигнал SWCLK, який є еквівалентом TCK в JTAG. Багато пристроїв підтримують Порт налагодження серійного проводу або JTAG (SWJ-DP), комбінований інтерфейс JTAG та SWD, який дозволяє підключати або SWD, або JTAG зонд до цілі.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.