JTAG
Reading time: 6 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na š¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter š¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
JTAGenum
JTAGenum ni chombo ambacho unaweza kupakia kwenye MCU inayofanana na Arduino au (kitaalamu) Raspberry Pi ili kujaribu pinouts za JTAG zisizojulikana na hata kuhesabu register za maagizo.
- Arduino: ung'anishe pini za kidijitali D2āD11 kwa hadi 10 za JTAG zinazoshukiwa/punkti za mtihani, na GND ya Arduino kwa GND ya lengo. Pata nguvu kwa lengo tofauti isipokuwa unajua reli ni salama. Prefer 3.3 V logic (mfano, Arduino Due) au tumia level shifter/resistors za mfululizo unapochunguza malengo ya 1.8ā3.3 V.
- Raspberry Pi: ujenzi wa Pi unatoa GPIO chache zinazoweza kutumika (hivyo skana ni polepole); angalia repo kwa ramani ya pini ya sasa na vikwazo.
Mara tu unapoflash, fungua monitor ya serial kwa 115200 baud na tuma h
kwa msaada. Mchakato wa kawaida:
l
pata loopbacks ili kuepuka positives za uwongor
geuza pullāups za ndani ikiwa inahitajikas
scan kwa TCK/TMS/TDI/TDO (na wakati mwingine TRST/SRST)y
bruteāforce IR kugundua opcodes zisizorekodiwax
snapshot ya boundaryāscan ya hali za pini
Ikiwa TAP halali imepatikana utaona mistari inayaanza na FOUND!
ikionyesha pini zilizogunduliwa.
Vidokezo
- Daima shiriki ardhi, na usiendeshe pini zisizojulikana juu ya Vtref ya lengo. Ikiwa una shaka, ongeza resistors za mfululizo 100ā470 Ī© kwenye pini za wagombea.
- Ikiwa kifaa kinatumia SWD/SWJ badala ya JTAG ya nyaya 4, JTAGenum huenda kisikugundue; jaribu zana za SWD au adapter inayounga mkono SWJāDP.
Uwindaji wa pini salama na usanidi wa vifaa
- Tambua Vtref na GND kwanza kwa kutumia multimeter. Adapta nyingi zinahitaji Vtref kuweka voltage ya I/O.
- Level shifting: pendelea level shifters za pande mbili zilizoundwa kwa ishara za pushāpull (michakato ya JTAG si wazi). Epuka level shifters za I2C za autoādirection kwa JTAG.
- Adapta zinazofaa: bodi za FT2232H/FT232H (mfano, Tigard), CMSISāDAP, JāLink, STāLINK (maalum kwa muuzaji), ESPāUSBāJTAG (juu ya ESP32āSx). Unganisha angalau TCK, TMS, TDI, TDO, GND na Vtref; hiari TRST na SRST.
Mawasiliano ya kwanza na OpenOCD (scan na IDCODE)
OpenOCD ni OSS ya deāfacto kwa JTAG/SWD. Kwa adapter inayounga mkono unaweza skana mnyororo na kusoma IDCODEs:
- Mfano wa jumla na JāLink:
openocd -f interface/jlink.cfg -c "transport select jtag; adapter speed 1000" \
-c "init; scan_chain; shutdown"
- ESP32āS3 iliyojumuishwa USBāJTAG (hakuna kipimo cha nje kinachohitajika):
openocd -f board/esp32s3-builtin.cfg -c "init; scan_chain; shutdown"
Notes
- Ikiwa unapata "sifuri/mmoja zote" IDCODE, angalia wiring, nguvu, Vtref, na kwamba bandari haijafungwa na fuses/option bytes.
- Tazama OpenOCD lowālevel
irscan
/drscan
kwa mwingiliano wa manual wa TAP unapofungua minyororo isiyojulikana.
Kusimamisha CPU na kutupa kumbukumbu/flash
Mara tu TAP inapokubaliwa na script ya lengo imechaguliwa, unaweza kusimamisha core na kutupa maeneo ya kumbukumbu au flash ya ndani. Mifano (badilisha lengo, anwani za msingi na saizi):
- Lengo la jumla baada ya kuanzisha:
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 (pendelea SBA inapopatikana):
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, programu au soma kupitia msaada wa OpenOCD:
openocd -f board/esp32s3-builtin.cfg \
-c "program_esp app.bin 0x10000 verify exit"
Tips
- Tumia
mdw/mdh/mdb
kuthibitisha kumbukumbu kabla ya dumps ndefu. - Kwa minyororo ya vifaa vingi, weka BYPASS kwenye visivyo lengo au tumia faili ya bodi inayofafanua TAP zote.
Hila za boundary-scan (EXTEST/SAMPLE)
Hata wakati ufikiaji wa debug wa CPU umefungwa, boundary-scan bado inaweza kuwa wazi. Kwa UrJTAG/OpenOCD unaweza:
- SAMPLE kuchukua picha za hali za pini wakati mfumo unafanya kazi (pata shughuli za basi, thibitisha ramani za pini).
- EXTEST kuendesha pini (kwa mfano, bit-bang mistari ya SPI flash ya nje kupitia MCU ili kuisoma bila mtandao ikiwa wiring ya bodi inaruhusu).
Mchakato wa chini wa UrJTAG na adapter ya FT2232x:
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>
Unahitaji kifaa BSDL ili kujua mpangilio wa bit za register za mipaka. Kuwa makini kwamba wauzaji wengine wanaweza kufunga seli za skana za mipaka katika uzalishaji.
Malengo ya kisasa na maelezo
- ESP32āS3/C3 inajumuisha daraja la USBāJTAG asilia; OpenOCD inaweza kuzungumza moja kwa moja kupitia USB bila kipimo cha nje. Ni rahisi sana kwa uchambuzi na dump.
- RISCāV debug (v0.13+) inasaidiwa sana na OpenOCD; pendelea SBA kwa ufikiaji wa kumbukumbu wakati kiini hakiwezi kusimamishwa kwa usalama.
- MCU nyingi zinafanya uthibitisho wa debug na hali za mzunguko wa maisha. Ikiwa JTAG inaonekana kufa lakini nguvu ni sahihi, kifaa kinaweza kuwa kimeunganishwa katika hali iliyofungwa au kinahitaji kipimo kilichothibitishwa.
Ulinzi na kuimarisha (kila unachoweza kutarajia kwenye vifaa halisi)
- Zima kabisa au fungia JTAG/SWD katika uzalishaji (mfano, STM32 RDP kiwango 2, ESP eFuses zinazozuia PAD JTAG, NXP/Nordic APPROTECT/DPAP).
- Hitaji uthibitisho wa debug (ARMv8.2āA ADIv6 Debug Authentication, changamoto-ujibu inayosimamiwa na OEM) huku ukihifadhi ufikiaji wa uzalishaji.
- Usipange pad za majaribio rahisi; ficha vias za majaribio, ondoa/jaza upinzani ili kutenga TAP, tumia viunganishi vyenye ufunguo au vifaa vya pogoāpin.
- Kufunga lock ya debug wakati wa kuwasha: funga TAP nyuma ya ROM ya mapema inayolazimisha boot salama.
Marejeleo
- OpenOCD Userās Guide ā JTAG Commands and configuration. https://openocd.org/doc-release/html/JTAG-Commands.html
- Espressif ESP32āS3 JTAG debugging (USBāJTAG, OpenOCD usage). https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/jtag-debugging/
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na š¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter š¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.