ハードウェアハッキング

Reading time: 8 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

JTAG

JTAGは境界スキャンを実行することを可能にします。境界スキャンは、埋め込まれた境界スキャンセルや各ピンのレジスタを含む特定の回路を分析します。

JTAG標準は、以下を含む境界スキャンを実施するための特定のコマンドを定義しています:

  • BYPASSは、他のチップを通過するオーバーヘッドなしで特定のチップをテストすることを可能にします。
  • SAMPLE/PRELOADは、デバイスが通常の動作モードにあるときに出入りするデータのサンプルを取得します。
  • EXTESTは、ピンの状態を設定および読み取ります。

他にも以下のようなコマンドをサポートすることができます:

  • IDCODEはデバイスを識別するためのもの
  • INTESTはデバイスの内部テスト用

JTAGulatorのようなツールを使用すると、これらの命令に出くわすことがあります。

テストアクセスポート

境界スキャンには、一般的なポートであるテストアクセスポート(TAP)の4線テストが含まれ、コンポーネントに組み込まれたJTAGテストサポート機能へのアクセスを提供します。TAPは以下の5つの信号を使用します:

  • テストクロック入力(TCK) TCKは、TAPコントローラーが単一のアクションを実行する頻度を定義するクロックです(言い換えれば、状態機械の次の状態にジャンプします)。
  • テストモード選択(TMS)入力 TMSは有限状態機械を制御します。クロックの各ビートで、デバイスのJTAG TAPコントローラーはTMSピンの電圧をチェックします。電圧が特定の閾値を下回ると、信号は低と見なされ0として解釈され、電圧が特定の閾値を上回ると、信号は高と見なされ1として解釈されます。
  • テストデータ入力(TDI) TDIは、スキャンセルを通じてチップにデータを送信するピンです。JTAGはこのピンを介した通信プロトコルを定義していないため、各ベンダーがこのプロトコルを定義する責任があります。
  • テストデータ出力(TDO) TDOは、チップからデータを送信するピンです。
  • テストリセット(TRST)入力 オプションのTRSTは、有限状態機械を既知の良好な状態にリセットします。代わりに、TMSが5回連続して1に保持されると、TRSTピンと同様にリセットが呼び出されるため、TRSTはオプションです。

時には、PCBにマークされたこれらのピンを見つけることができるでしょう。他の場合には、それらを見つける必要があるかもしれません。

JTAGピンの特定

JTAGポートを検出する最も速いが最も高価な方法は、JTAGulatorを使用することです。このデバイスはこの目的のために特別に作成されました(ただし、UARTピンアウトも検出できます)。

それは、ボードのピンに接続できる24チャンネルを持っています。次に、すべての可能な組み合わせのIDCODEおよびBYPASS境界スキャンコマンドを送信するBF攻撃を実行します。応答を受け取ると、各JTAG信号に対応するチャンネルを表示します。

より安価ですが、はるかに遅いJTAGピンアウトを特定する方法は、Arduino互換のマイクロコントローラーにロードされたJTAGenumを使用することです。

JTAGenumを使用する場合、最初に列挙に使用するプロービングデバイスのピンを定義する必要があります。デバイスのピンアウト図を参照し、これらのピンをターゲットデバイスのテストポイントに接続する必要があります。

JTAGピンを特定する第三の方法は、PCBを検査してピンアウトの1つを探すことです。場合によっては、PCBが便利にTag-Connectインターフェースを提供していることがあり、これはボードにJTAGコネクタがある明確な指標です。そのインターフェースがどのように見えるかはhttps://www.tag-connect.com/info/で確認できます。さらに、PCB上のチップセットのデータシートを検査することで、JTAGインターフェースを指し示すピンアウト図が明らかになるかもしれません。

SDW

SWDはデバッグ用に設計されたARM特有のプロトコルです。

SWDインターフェースは2つのピンを必要とします:双方向のSWDIO信号、これはJTAGのTDIおよびTDOピンとクロックに相当し、SWCLKはJTAGのTCKに相当します。多くのデバイスは、ターゲットにSWDまたはJTAGプローブを接続できる**シリアルワイヤまたはJTAGデバッグポート(SWJ-DP)**をサポートしています。

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする