SPI

Support HackTricks

基本情報

SPI(シリアルペリフェラルインターフェース)は、IC(集積回路)間の短距離通信に使用される同期シリアル通信プロトコルです。SPI通信プロトコルは、クロックとチップセレクト信号によって調整されるマスター-スレーブアーキテクチャを利用します。マスター-スレーブアーキテクチャは、EEPROM、センサー、制御デバイスなどの外部周辺機器を管理するマスター(通常はマイクロプロセッサ)で構成され、これらはスレーブと見なされます。

複数のスレーブがマスターに接続できますが、スレーブ同士は通信できません。スレーブは、クロックとチップセレクトの2つのピンによって管理されます。SPIは同期通信プロトコルであるため、入力ピンと出力ピンはクロック信号に従います。チップセレクトは、マスターがスレーブを選択して相互作用するために使用されます。チップセレクトが高いと、スレーブデバイスは選択されず、低いと、チップが選択され、マスターがスレーブと相互作用します。

MOSI(マスターアウト、スレーブイン)とMISO(マスターイン、スレーブアウト)は、データの送信と受信を担当します。データは、MOSIピンを通じてスレーブデバイスに送信され、チップセレクトが低く保たれます。入力データには、スレーブデバイスベンダーのデータシートに従った命令、メモリアドレス、またはデータが含まれます。有効な入力があると、MISOピンはマスターにデータを送信します。出力データは、入力が終了した次のクロックサイクルで送信されます。MISOピンは、データが完全に送信されるまで、またはマスターがチップセレクトピンを高く設定するまでデータを送信します(その場合、スレーブは送信を停止し、マスターはその後のクロックサイクルで聞き取らなくなります)。

EEPROMからのファームウェアのダンプ

ファームウェアのダンプは、ファームウェアを分析し、脆弱性を見つけるのに役立ちます。多くの場合、ファームウェアはインターネット上で入手できないか、モデル番号、バージョンなどの要因の変動により無関係です。したがって、物理デバイスから直接ファームウェアを抽出することは、脅威を特定する際に役立ちます。

シリアルコンソールを取得することは役立ちますが、ファイルが読み取り専用であることがよくあります。これにより、さまざまな理由から分析が制約されます。たとえば、パッケージを送受信するために必要なツールがファームウェアに存在しない場合があります。したがって、バイナリを抽出して逆アセンブルすることは実行可能ではありません。したがって、システムにファームウェア全体をダンプし、分析のためにバイナリを抽出することは非常に役立ちます。

また、レッドチーミング中やデバイスへの物理アクセスを取得する際に、ファームウェアをダンプすることでファイルを変更したり、悪意のあるファイルを注入したりして、それをメモリに再フラッシュすることができ、デバイスにバックドアを埋め込むのに役立ちます。したがって、ファームウェアのダンプによって解放される可能性は無数にあります。

CH341A EEPROMプログラマーおよびリーダー

このデバイスは、EEPROMからファームウェアをダンプし、ファームウェアファイルで再フラッシュするための手頃なツールです。これは、コンピュータのBIOSチップ(実際にはEEPROM)で作業するための人気の選択肢です。このデバイスはUSB経由で接続され、開始するために最小限のツールが必要です。また、通常は迅速に作業を完了するため、物理デバイスへのアクセスにも役立ちます。

EEPROMメモリをCH341aプログラマーに接続し、デバイスをコンピュータに接続します。デバイスが検出されない場合は、コンピュータにドライバーをインストールしてみてください。また、EEPROMが正しい向きで接続されていることを確認してください(通常、VCCピンをUSBコネクタに対して逆向きに配置します)。そうしないと、ソフトウェアがチップを検出できません。必要に応じて図を参照してください:

最後に、flashrom、G-Flash(GUI)などのソフトウェアを使用してファームウェアをダンプします。G-Flashは、最小限のGUIツールで、迅速でEEPROMを自動的に検出します。これは、ファームウェアを迅速に抽出する必要がある場合に役立ち、文書をあまりいじることなく使用できます。

ファームウェアをダンプした後、バイナリファイルの分析を行うことができます。strings、hexdump、xxd、binwalkなどのツールを使用して、ファームウェアやファイルシステム全体に関する多くの情報を抽出できます。

ファームウェアからの内容を抽出するには、binwalkを使用できます。Binwalkは、16進数の署名を分析し、バイナリファイル内のファイルを特定し、それらを抽出することができます。

binwalk -e <filename>

The can be .bin or .rom as per the tools and configurations used.

ファームウェアの抽出は繊細なプロセスであり、多くの忍耐が必要です。取り扱いを誤ると、ファームウェアが破損したり、完全に消去されてデバイスが使用できなくなる可能性があります。ファームウェアを抽出する前に、特定のデバイスを研究することをお勧めします。

Bus Pirate + flashrom

Pirate BusのPINOUTがSPIに接続するためのMOSIおよびMISOのピンを示していても、いくつかのSPIはピンをDIおよびDOとして示す場合があります。MOSI -> DI, MISO -> DO

WindowsまたはLinuxでは、プログラムflashromを使用して、次のようにフラッシュメモリの内容をダンプできます:

# In this command we are indicating:
# -VV Verbose
# -c <chip> The chip (if you know it better, if not, don'tindicate it and the program might be able to find it)
# -p <programmer> In this case how to contact th chip via the Bus Pirate
# -r <file> Image to save in the filesystem
flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img
HackTricksをサポートする

Last updated