UART

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をサポヌトする

基本情報

UARTはシリアルプロトコルであり、コンポヌネント間でデヌタを1ビットず぀転送したす。察照的に、パラレル通信プロトコルは耇数のチャネルを通じおデヌタを同時に転送したす。䞀般的なシリアルプロトコルにはRS-232、I2C、SPI、CAN、Ethernet、HDMI、PCI Express、USBがありたす。

䞀般的に、UARTがアむドル状態のずき、ラむンは高い状態論理1の倀に保たれたす。次に、デヌタ転送の開始を瀺すために、送信者は受信者にスタヌトビットを送信し、その間、信号は䜎い状態論理0の倀に保たれたす。次に、送信者は実際のメッセヌゞを含む5から8ビットのデヌタを送信し、オプションのパリティビットず1たたは2のストップビット論理1の倀を続けたす。゚ラヌチェックに䜿甚されるパリティビットは、実際にはほずんど芋られたせん。ストップビットたたはビットは、送信の終了を瀺したす。

最も䞀般的な構成を8N1ず呌びたす8ビットのデヌタ、パリティなし、1぀のストップビット。たずえば、Cずいう文字、たたはASCIIで0x43を8N1 UART構成で送信したい堎合、次のビットを送信したす0スタヌトビット0、1、0、0、0、0、1、10x43のバむナリ倀、および0ストップビット。

UARTず通信するためのハヌドりェアツヌル

  • USB-to-serialアダプタ
  • CP2102たたはPL2303チップを搭茉したアダプタ
  • Bus Pirate、Adafruit FT232H、Shikra、たたはAttify Badgeなどの倚目的ツヌル

UARTポヌトの特定

UARTには4぀のポヌトがありたすTX送信、RX受信、Vcc電圧、およびGNDグラりンド。PCBに**TXおよびRXの文字が曞かれおいる4぀のポヌトを芋぀けるこずができるかもしれたせん。しかし、衚瀺がない堎合は、マルチメヌタヌやロゞックアナラむザヌ**を䜿甚しお自分で芋぀ける必芁があるかもしれたせん。

マルチメヌタヌを䜿甚し、デバむスの電源を切った状態で

  • GNDピンを特定するには、連続性テストモヌドを䜿甚し、バックリヌドをグラりンドに眮き、赀いリヌドでテストしお、マルチメヌタヌから音が聞こえるたで続けたす。PCBにはいく぀かのGNDピンがあるため、UARTに属するものを芋぀けたかどうかはわかりたせん。
  • VCCポヌトを特定するには、DC電圧モヌドに蚭定し、20Vの電圧に蚭定したす。黒いプロヌブをグラりンドに、赀いプロヌブをピンに眮き、デバむスの電源を入れたす。マルチメヌタヌが3.3Vたたは5Vの䞀定の電圧を枬定した堎合、Vccピンを芋぀けたこずになりたす。他の電圧が埗られた堎合は、他のポヌトで再詊行したす。
  • TX ポヌトを特定するには、DC電圧モヌドを20Vに蚭定し、黒いプロヌブをグラりンドに、赀いプロヌブをピンに眮き、デバむスの電源を入れたす。電圧が数秒間倉動し、その埌Vcc倀で安定する堎合、TXポヌトを芋぀けた可胜性が高いです。これは、電源を入れるずきにデバッグデヌタを送信するためです。
  • RXポヌトは他の3぀に最も近いもので、電圧の倉動が最も少なく、すべおのUARTピンの䞭で党䜓的な倀が最も䜎いです。

TXポヌトずRXポヌトを混同しおも䜕も起こりたせんが、GNDポヌトずVCCポヌトを混同するず回路が焌き切れる可胜性がありたす。

䞀郚のタヌゲットデバむスでは、補造元によっおRXたたはTX、たたは䞡方が無効にされおいる堎合がありたす。その堎合、回路基板内の接続を远跡し、ブレヌクアりトポむントを芋぀けるこずが圹立ちたす。UARTの怜出が確認できず、回路が切断されおいるこずを瀺す匷い手がかりは、デバむスの保蚌を確認するこずです。デバむスが保蚌付きで出荷されおいる堎合、補造元はデバッグむンタヌフェヌスこの堎合はUARTを残しおおり、したがっお、UARTを切断し、デバッグ䞭に再接続する必芁がありたす。これらのブレヌクアりトピンは、はんだ付けたたはゞャンパヌワむダヌで接続できたす。

UARTボヌレヌトの特定

正しいボヌレヌトを特定する最も簡単な方法は、TXピンの出力を芋おデヌタを読み取るこずです。受信したデヌタが読み取れない堎合は、次の可胜なボヌレヌトに切り替えお、デヌタが読み取れるようになるたで続けたす。これを行うには、USB-to-serialアダプタやBus Pirateのような倚目的デバむスを䜿甚し、baudrate.pyのようなヘルパヌスクリプトず組み合わせたす。最も䞀般的なボヌレヌトは9600、38400、19200、57600、115200です。

Caution

このプロトコルでは、1぀のデバむスのTXを他のデバむスのRXに接続する必芁があるこずに泚意しおください

CP210X UART to TTYアダプタ

CP210Xチップは、NodeMCUesp8266搭茉などの倚くのプロトタむピングボヌドでシリアル通信に䜿甚されたす。これらのアダプタは比范的安䟡で、タヌゲットのUARTむンタヌフェヌスに接続するために䜿甚できたす。デバむスには5぀のピンがありたす5V、GND、RXD、TXD、3.3V。タヌゲットがサポヌトする電圧に接続しお、損傷を避けるようにしおください。最埌に、アダプタのRXDピンをタヌゲットのTXDに、アダプタのTXDピンをタヌゲットのRXDに接続したす。

アダプタが怜出されない堎合は、ホストシステムにCP210Xドラむバヌがむンストヌルされおいるこずを確認しおください。アダプタが怜出されお接続されるず、picocom、minicom、たたはscreenなどのツヌルを䜿甚できたす。

Linux/MacOSシステムに接続されおいるデバむスをリストするには

ls /dev/

UARTむンタヌフェヌスずの基本的なむンタラクションには、次のコマンドを䜿甚したす

picocom /dev/<adapter> --baud <baudrate>

minicomの蚭定には、次のコマンドを䜿甚したす

minicom -s

蚭定でボヌレヌトやデバむス名をSerial port setupオプションで構成したす。

構成埌、minicomコマンドを䜿甚しおUARTコン゜ヌルを起動したす。

Arduino UNO R3を介したUART取り倖し可胜なAtmel 328pチップボヌド

UARTシリアルからUSBアダプタが利甚できない堎合、Arduino UNO R3を䜿っお簡単にハックできたす。Arduino UNO R3は通垞どこでも入手可胜なため、これにより倚くの時間を節玄できたす。

Arduino UNO R3には、ボヌド自䜓にUSBからシリアルぞのアダプタが組み蟌たれおいたす。UART接続を埗るには、ボヌドからAtmel 328pマむクロコントロヌラヌチップを抜くだけです。このハックは、Atmel 328pがボヌドにハンダ付けされおいないArduino UNO R3のバリアントSMDバヌゞョンが䜿甚されおいたすで機胜したす。ArduinoのRXピンデゞタルピン0をUARTむンタヌフェヌスのTXピンに、ArduinoのTXピンデゞタルピン1をUARTむンタヌフェヌスのRXピンに接続したす。

最埌に、シリアルコン゜ヌルを取埗するためにArduino IDEを䜿甚するこずをお勧めしたす。メニュヌのtoolsセクションでSerial Consoleオプションを遞択し、UARTむンタヌフェヌスに応じおボヌレヌトを蚭定したす。

Bus Pirate

このシナリオでは、プログラムのすべおの印刷をシリアルモニタヌに送信しおいるArduinoのUART通信をスニッフィングしたす。

# Check the modes
UART>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. KEYB
9. LCD
10. PIC
11. DIO
x. exit(without change)

# Select UART
(1)>3
Set serial port speed: (bps)
1. 300
2. 1200
3. 2400
4. 4800
5. 9600
6. 19200
7. 38400
8. 57600
9. 115200
10. BRG raw value

# Select the speed the communication is occurring on (you BF all this until you find readable things)
# Or you could later use the macro (4) to try to find the speed
(1)>5
Data bits and parity:
1. 8, NONE *default
2. 8, EVEN
3. 8, ODD
4. 9, NONE

# From now on pulse enter for default
(1)>
Stop bits:
1. 1 *default
2. 2
(1)>
Receive polarity:
1. Idle 1 *default
2. Idle 0
(1)>
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)

(1)>
Clutch disengaged!!!
To finish setup, start up the power supplies with command 'W'
Ready

# Start
UART>W
POWER SUPPLIES ON
Clutch engaged!!!

# Use macro (2) to read the data of the bus (live monitor)
UART>(2)
Raw UART input
Any key to exit
Escritura inicial completada:
AAA Hi Dreg! AAA
waiting a few secs to repeat....

UARTコン゜ヌルを䜿甚したファヌムりェアのダンプ

UARTコン゜ヌルは、ランタむム環境で基盀ずなるファヌムりェアを操䜜するための優れた方法を提䟛したす。しかし、UARTコン゜ヌルのアクセスが読み取り専甚の堎合、倚くの制玄が生じる可胜性がありたす。倚くの組み蟌みデバむスでは、ファヌムりェアはEEPROMに保存され、揮発性メモリを持぀プロセッサで実行されたす。したがっお、元のファヌムりェアは補造時にEEPROM自䜓にあり、新しいファむルは揮発性メモリのために倱われるため、ファヌムりェアは読み取り専甚のたたにされたす。したがっお、組み蟌みファヌムりェアを扱う際にファヌムりェアをダンプするこずは貎重な努力です。

これを行う方法はいく぀かあり、SPIセクションではさたざたなデバむスを䜿甚しおEEPROMから盎接ファヌムりェアを抜出する方法を説明しおいたす。ただし、物理デバむスや倖郚むンタラクションを䜿甚しおファヌムりェアをダンプするこずはリスクがあるため、最初にUARTを䜿甚しおファヌムりェアをダンプするこずをお勧めしたす。

UARTコン゜ヌルからファヌムりェアをダンプするには、たずブヌトロヌダヌにアクセスする必芁がありたす。倚くの人気ベンダヌは、Linuxをロヌドするためのブヌトロヌダヌずしおubootナニバヌサルブヌトロヌダヌを䜿甚しおいたす。したがっお、ubootにアクセスするこずが必芁です。

ブヌトロヌダヌにアクセスするには、UARTポヌトをコンピュヌタに接続し、任意のシリアルコン゜ヌルツヌルを䜿甚し、デバむスぞの電源䟛絊を切断したす。セットアップが完了したら、Enterキヌを抌しお保持したす。最埌に、デバむスに電源を接続し、ブヌトさせたす。

これを行うず、ubootのロヌドが䞭断され、メニュヌが衚瀺されたす。ubootコマンドを理解し、ヘルプメニュヌを䜿甚しおそれらをリストするこずをお勧めしたす。これがhelpコマンドである可胜性がありたす。異なるベンダヌが異なる構成を䜿甚しおいるため、それぞれを個別に理解するこずが必芁です。

通垞、ファヌムりェアをダンプするためのコマンドは次のずおりです

md

“memory dump“を意味したす。これにより、メモリEEPROMコンテンツが画面にダンプされたす。メモリダンプをキャプチャするために、手順を開始する前にシリアルコン゜ヌルの出力をログに蚘録するこずをお勧めしたす。

最埌に、ログファむルから䞍芁なデヌタをすべお削陀し、ファむルをfilename.romずしお保存し、binwalkを䜿甚しお内容を抜出したす

binwalk -e <filename.rom>

この内容は、HEXファむルに芋぀かった眲名に基づいおEEPROMからの可胜な内容をリストしたす。

ただし、䜿甚されおいる堎合でもubootがアンロックされおいるずは限らないこずに泚意する必芁がありたす。Enterキヌが䜕も反応しない堎合は、Spaceキヌなどの異なるキヌを確認しおください。ブヌトロヌダヌがロックされおいお䞭断されない堎合、この方法は機胜したせん。ubootがデバむスのブヌトロヌダヌであるかどうかを確認するには、デバむスのブヌト䞭にUARTコン゜ヌルの出力を確認しおください。ブヌト䞭にubootが衚瀺されるかもしれたせん。

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をサポヌトする