JTAG
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
JTAGenum
JTAGenum์ Arduino ํธํ MCU ๋๋ (์คํ์ ์ผ๋ก) Raspberry Pi์ ๋ก๋ํ์ฌ ์๋ ค์ง์ง ์์ JTAG ํ ๋ฐฐ์น๋ฅผ ๋ฌด์ฐจ๋ณ ๋์ ํ๊ณ ์ฌ์ง์ด ๋ช ๋ น ๋ ์ง์คํฐ๋ฅผ ์ด๊ฑฐํ ์ ์๋ ๋๊ตฌ์ ๋๋ค.
- Arduino: ๋์งํธ ํ D2โD11์ ์ต๋ 10๊ฐ์ ์์ฌ๋๋ JTAG ํจ๋/ํ ์คํธ ํฌ์ธํธ์ ์ฐ๊ฒฐํ๊ณ , Arduino GND๋ฅผ ํ๊ฒ GND์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ ์ผ์ด ์์ ํ๋ค๋ ๊ฒ์ ๋ชจ๋ฅด๋ ํ ํ๊ฒ์ ์ ์์ ๋ณ๋๋ก ๊ณต๊ธํ์ญ์์ค. 3.3 V ๋ก์ง์ ์ ํธํ๊ฑฐ๋ (์: Arduino Due) 1.8โ3.3 V ํ๊ฒ์ ํ๋ก๋นํ ๋ ๋ ๋ฒจ ์ํํฐ/์ง๋ ฌ ์ ํญ๊ธฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- Raspberry Pi: Pi ๋น๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ GPIO๊ฐ ์ ์ด (์ค์บ ์๋๊ฐ ๋๋ฆผ) ํ์ฌ ํ ๋งต๊ณผ ์ ์ฝ ์ฌํญ์ ๋ ํฌ๋ฅผ ํ์ธํ์ญ์์ค.
ํ๋์๊ฐ ์๋ฃ๋๋ฉด 115200 ๋ณด๋์์ ์๋ฆฌ์ผ ๋ชจ๋ํฐ๋ฅผ ์ด๊ณ h๋ฅผ ๋ณด๋ด ๋์์ ์์ฒญํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํ๋ฆ:
l๋ฃจํ๋ฐฑ์ ์ฐพ์ ์๋ชป๋ ๊ธ์ ๊ฒฐ๊ณผ๋ฅผ ํผํฉ๋๋ค.rํ์ ์ ๋ด๋ถ ํ์ ์ ์ ํํฉ๋๋ค.sTCK/TMS/TDI/TDO (๋๋๋ก TRST/SRST)๋ฅผ ์ค์บํฉ๋๋ค.y๋ฌธ์ํ๋์ง ์์ ์ฐ์ฐ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์ํด IR์ ๋ฌด์ฐจ๋ณ ๋์ ํฉ๋๋ค.xํ ์ํ์ ๊ฒฝ๊ณ ์ค์บ ์ค๋ ์ท์ ์์ฑํฉ๋๋ค.
.png)
.png)
.png)
์ ํจํ TAP์ด ๋ฐ๊ฒฌ๋๋ฉด FOUND!๋ก ์์ํ๋ ์ค์ด ํ์๋์ด ๋ฐ๊ฒฌ๋ ํ์ ๋ํ๋
๋๋ค.
ํ
- ํญ์ ์ ์ง๋ฅผ ๊ณต์ ํ๊ณ , ์๋ ค์ง์ง ์์ ํ์ ํ๊ฒ Vtref ์ด์์ผ๋ก ๊ตฌ๋ํ์ง ๋ง์ญ์์ค. ์์ฌ์ค๋ฌ์ด ๊ฒฝ์ฐ ํ๋ณด ํ์ 100โ470 ฮฉ ์ง๋ ฌ ์ ํญ๊ธฐ๋ฅผ ์ถ๊ฐํ์ญ์์ค.
- ์ฅ์น๊ฐ 4์ JTAG ๋์ SWD/SWJ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ JTAGenum์ด ์ด๋ฅผ ๊ฐ์งํ์ง ๋ชปํ ์ ์์ต๋๋ค. SWD ๋๊ตฌ๋ SWJ-DP๋ฅผ ์ง์ํ๋ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํด ๋ณด์ญ์์ค.
Safer pin hunting and hardware setup
- ๋ฉํฐ๋ฏธํฐ๋ก ๋จผ์ Vtref์ GND๋ฅผ ์๋ณํฉ๋๋ค. ๋ง์ ์ด๋ํฐ๋ I/O ์ ์์ ์ค์ ํ๊ธฐ ์ํด Vtref๊ฐ ํ์ํฉ๋๋ค.
- ๋ ๋ฒจ ์ํํ : ํธ์-ํ ์ ํธ๋ฅผ ์ํด ์ค๊ณ๋ ์๋ฐฉํฅ ๋ ๋ฒจ ์ํํฐ๋ฅผ ์ ํธํฉ๋๋ค (JTAG ๋ผ์ธ์ ์คํ ๋๋ ์ธ์ด ์๋๋๋ค). JTAG์ ๋ํด ์๋ ๋ฐฉํฅ I2C ์ํํฐ๋ ํผํ์ญ์์ค.
- ์ ์ฉํ ์ด๋ํฐ: FT2232H/FT232H ๋ณด๋ (์: Tigard), CMSIS-DAP, J-Link, ST-LINK (๋ฒค๋ ํน์ ), ESP-USB-JTAG (ESP32-Sx์์). ์ต์ํ TCK, TMS, TDI, TDO, GND ๋ฐ Vtref๋ฅผ ์ฐ๊ฒฐํ์ญ์์ค; ์ ํ์ ์ผ๋ก TRST ๋ฐ SRST๋ฅผ ์ถ๊ฐํ์ญ์์ค.
First contact with OpenOCD (scan and IDCODE)
OpenOCD๋ JTAG/SWD๋ฅผ ์ํ ์ฌ์ค์์ OSS์ ๋๋ค. ์ง์๋๋ ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒด์ธ์ ์ค์บํ๊ณ IDCODE๋ฅผ ์ฝ์ ์ ์์ต๋๋ค:
- J-Link๋ฅผ ์ฌ์ฉํ ์ผ๋ฐ์ ์ธ ์:
openocd -f interface/jlink.cfg -c "transport select jtag; adapter speed 1000" \
-c "init; scan_chain; shutdown"
- ESP32โS3 ๋ด์ฅ USBโJTAG (์ธ๋ถ ํ๋ก๋ธ ํ์ ์์):
openocd -f board/esp32s3-builtin.cfg -c "init; scan_chain; shutdown"
Notes
- โ๋ชจ๋ 1/0โ IDCODE๋ฅผ ๋ฐ์ผ๋ฉด, ๋ฐฐ์ , ์ ์, Vtref๋ฅผ ํ์ธํ๊ณ ํฌํธ๊ฐ ํจ์ฆ/์ต์ ๋ฐ์ดํธ์ ์ํด ์ ๊ฒจ ์์ง ์์์ง ํ์ธํ์ธ์.
- ์ ์ ์๋ ์ฒด์ธ์ ์ฌ๋ฆด ๋ ์๋ TAP ์ํธ์์ฉ์ ์ํด OpenOCD ์ ์์ค
irscan/drscan์ ์ฐธ์กฐํ์ธ์.
CPU ์ ์ง ๋ฐ ๋ฉ๋ชจ๋ฆฌ/ํ๋์ ๋คํ
TAP์ด ์ธ์๋๊ณ ๋์ ์คํฌ๋ฆฝํธ๊ฐ ์ ํ๋๋ฉด, ์ฝ์ด๋ฅผ ์ ์ง์ํค๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ญ ๋๋ ๋ด๋ถ ํ๋์๋ฅผ ๋คํํ ์ ์์ต๋๋ค. ์์ (๋์, ๊ธฐ๋ณธ ์ฃผ์ ๋ฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ธ์):
- ์ด๊ธฐํ ํ ์ผ๋ฐ ๋์:
openocd -f interface/jlink.cfg -f target/stm32f1x.cfg \
-c "init; reset halt; mdw 0x08000000 4; dump_image flash.bin 0x08000000 0x00100000; shutdown"
- RISCโV SoC (๊ฐ๋ฅํ ๋ SBA๋ฅผ ์ ํธ):
openocd -f interface/ftdi/ft232h.cfg -f target/riscv.cfg \
-c "init; riscv set_prefer_sba on; halt; dump_image sram.bin 0x80000000 0x20000; shutdown"
- ESP32โS3, OpenOCD ํฌํผ๋ฅผ ํตํด ํ๋ก๊ทธ๋๋ฐํ๊ฑฐ๋ ์ฝ๊ธฐ:
openocd -f board/esp32s3-builtin.cfg \
-c "program_esp app.bin 0x10000 verify exit"
Tips
mdw/mdh/mdb๋ฅผ ์ฌ์ฉํ์ฌ ๊ธด ๋คํ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒํ์ธ์.- ๋ค์ค ์ฅ์น ์ฒด์ธ์ ๊ฒฝ์ฐ, ๋น๋์ ์ฅ์น์์ BYPASS๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ชจ๋ TAP์ ์ ์ํ๋ ๋ณด๋ ํ์ผ์ ์ฌ์ฉํ์ธ์.
๊ฒฝ๊ณ ์ค์บ ํธ๋ฆญ (EXTEST/SAMPLE)
CPU ๋๋ฒ๊ทธ ์ ๊ทผ์ด ์ ๊ฒจ ์์ด๋ ๊ฒฝ๊ณ ์ค์บ์ด ์ฌ์ ํ ๋ ธ์ถ๋ ์ ์์ต๋๋ค. UrJTAG/OpenOCD๋ฅผ ์ฌ์ฉํ์ฌ:
- ์์คํ ์ด ์คํ๋๋ ๋์ ํ ์ํ๋ฅผ ์ค๋ ์ทํ๊ธฐ ์ํด SAMPLE์ ์ฌ์ฉํ์ธ์ (๋ฒ์ค ํ๋ ์ฐพ๊ธฐ, ํ ๋งคํ ํ์ธ).
- ํ์ ๊ตฌ๋ํ๊ธฐ ์ํด EXTEST๋ฅผ ์ฌ์ฉํ์ธ์ (์: ๋ณด๋ ๋ฐฐ์ ์ด ํ์ฉํ๋ ๊ฒฝ์ฐ MCU๋ฅผ ํตํด ์ธ๋ถ SPI ํ๋์ ๋ผ์ธ์ ๋นํธ ๋ฑ ํนํ์ฌ ์คํ๋ผ์ธ์์ ์ฝ๊ธฐ).
FT2232x ์ด๋ํฐ๋ฅผ ์ฌ์ฉํ ์ต์ UrJTAG ํ๋ฆ:
jtag> cable ft2232 vid=0x0403 pid=0x6010 interface=1
jtag> frequency 100000
jtag> detect
jtag> bsdl path /path/to/bsdl/files
jtag> instruction EXTEST
jtag> shift ir
jtag> dr <bit pattern for boundary register>
์ฅ์น BSDL์ด ํ์ํ์ฌ ๊ฒฝ๊ณ ๋ ์ง์คํฐ ๋นํธ ์์๋ฅผ ์์์ผ ํฉ๋๋ค. ์ผ๋ถ ๊ณต๊ธ์ ์ฒด๋ ์์ฐ ์ค์ ๊ฒฝ๊ณ ์ค์บ ์ ์ ์ ๊ธ ์ ์์ต๋๋ค.
ํ๋ ๋์ ๋ฐ ์ฃผ์ ์ฌํญ
- ESP32โS3/C3๋ ๋ค์ดํฐ๋ธ USBโJTAG ๋ธ๋ฆฌ์ง๋ฅผ ํฌํจํฉ๋๋ค. OpenOCD๋ ์ธ๋ถ ํ๋ก๋ธ ์์ด USB๋ฅผ ํตํด ์ง์ ํต์ ํ ์ ์์ต๋๋ค. ๊ธด๊ธ ์ํฉ ๋ฐ ๋คํ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
- RISCโV ๋๋ฒ๊ทธ(v0.13+)๋ OpenOCD์์ ๋๋ฆฌ ์ง์๋ฉ๋๋ค. ์ฝ์ด๋ฅผ ์์ ํ๊ฒ ์ค์งํ ์ ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ํด SBA๋ฅผ ์ ํธํฉ๋๋ค.
- ๋ง์ MCU๊ฐ ๋๋ฒ๊ทธ ์ธ์ฆ ๋ฐ ์์ ์ฃผ๊ธฐ ์ํ๋ฅผ ๊ตฌํํฉ๋๋ค. JTAG๊ฐ ์ฃฝ์ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ ์์ด ์ฌ๋ฐ๋ฅธ ๊ฒฝ์ฐ, ์ฅ์น๊ฐ ๋ซํ ์ํ๋ก ํจ์ฆ๊ฐ ๊ฑธ๋ ธ๊ฑฐ๋ ์ธ์ฆ๋ ํ๋ก๋ธ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
๋ฐฉ์ด ๋ฐ ๊ฐํ(์ค์ ์ฅ์น์์ ๊ธฐ๋ํ ์ ์๋ ๊ฒ)
- ์์ฐ ์ค JTAG/SWD๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋นํ์ฑํํ๊ฑฐ๋ ์ ๊ธ๋๋ค(์: STM32 RDP ๋ ๋ฒจ 2, PAD JTAG๋ฅผ ๋นํ์ฑํํ๋ ESP eFuses, NXP/Nordic APPROTECT/DPAP).
- ์ ์กฐ ์ ๊ทผ์ ์ ์งํ๋ฉด์ ์ธ์ฆ๋ ๋๋ฒ๊ทธ(ARMv8.2โA ADIv6 ๋๋ฒ๊ทธ ์ธ์ฆ, OEM ๊ด๋ฆฌ ์ฑ๋ฆฐ์ง-์๋ต)๋ฅผ ์๊ตฌํฉ๋๋ค.
- ์ฌ์ด ํ ์คํธ ํจ๋๋ฅผ ๋ผ์ฐํ ํ์ง ๋ง์ญ์์ค; ํ ์คํธ ๋น์๋ฅผ ๋ฌป๊ณ , TAP์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ์ ํญ์ ์ ๊ฑฐ/๋ฐฐ์นํ๋ฉฐ, ํค๊ฐ ์๋ ์ปค๋ฅํฐ ๋๋ ํฌ๊ณ ํ ๊ณ ์ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ ์ ์ผ๊ธฐ ๋๋ฒ๊ทธ ์ ๊ธ: ์ด๊ธฐ ROM ๋ค์ TAP์ ๊ฒ์ดํธํ์ฌ ๋ณด์ ๋ถํ ์ ๊ฐ์ ํฉ๋๋ค.
์ฐธ์กฐ
- OpenOCD ์ฌ์ฉ์ ๊ฐ์ด๋ โ JTAG ๋ช ๋ น ๋ฐ ๊ตฌ์ฑ. https://openocd.org/doc-release/html/JTAG-Commands.html
- Espressif ESP32โS3 JTAG ๋๋ฒ๊น (USBโJTAG, OpenOCD ์ฌ์ฉ). https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/jtag-debugging/
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


