SPI

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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

SPI (Serial Peripheral Interface)๋Š” IC(์ง‘์  ํšŒ๋กœ) ๊ฐ„์˜ ๋‹จ๊ฑฐ๋ฆฌ ํ†ต์‹ ์„ ์œ„ํ•ด ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™๊ธฐ์‹ ์ง๋ ฌ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. SPI ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์€ ํด๋Ÿญ ๋ฐ ์นฉ ์„ ํƒ ์‹ ํ˜ธ์— ์˜ํ•ด ์กฐ์ •๋˜๋Š” ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ์•„ํ‚คํ…์ฒ˜๋Š” EEPROM, ์„ผ์„œ, ์ œ์–ด ์žฅ์น˜ ๋“ฑ๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ์ฃผ๋ณ€ ์žฅ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋งˆ์Šคํ„ฐ(์ผ๋ฐ˜์ ์œผ๋กœ ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ)๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ด๋“ค์€ ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€ ๋งˆ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์Šฌ๋ ˆ์ด๋ธŒ๋ผ๋ฆฌ๋Š” ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šฌ๋ ˆ์ด๋ธŒ๋Š” ํด๋Ÿญ ๋ฐ ์นฉ ์„ ํƒ์˜ ๋‘ ํ•€์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. SPI๋Š” ๋™๊ธฐ์‹ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋ฏ€๋กœ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ํ•€์€ ํด๋Ÿญ ์‹ ํ˜ธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์นฉ ์„ ํƒ์€ ๋งˆ์Šคํ„ฐ๊ฐ€ ์Šฌ๋ ˆ์ด๋ธŒ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์นฉ ์„ ํƒ์ด ๋†’์„ ๋•Œ ์Šฌ๋ ˆ์ด๋ธŒ ์žฅ์น˜๋Š” ์„ ํƒ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋‚ฎ์„ ๋•Œ๋Š” ์นฉ์ด ์„ ํƒ๋˜์–ด ๋งˆ์Šคํ„ฐ๊ฐ€ ์Šฌ๋ ˆ์ด๋ธŒ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

MOSI (Master Out, Slave In) ๋ฐ MISO (Master In, Slave Out)๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ์ˆ˜์‹ ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” MOSI ํ•€์„ ํ†ตํ•ด ์Šฌ๋ ˆ์ด๋ธŒ ์žฅ์น˜๋กœ ์ „์†ก๋˜๋ฉฐ, ์ด๋•Œ ์นฉ ์„ ํƒ์€ ๋‚ฎ๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ์Šฌ๋ ˆ์ด๋ธŒ ์žฅ์น˜ ๊ณต๊ธ‰์—…์ฒด์˜ ๋ฐ์ดํ„ฐ ์‹œํŠธ์— ๋”ฐ๋ผ ๋ช…๋ น, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ž…๋ ฅ์ด ์žˆ์„ ๊ฒฝ์šฐ, MISO ํ•€์€ ๋งˆ์Šคํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ์ž…๋ ฅ์ด ๋๋‚œ ๋‹ค์Œ ํด๋Ÿญ ์ฃผ๊ธฐ์—์„œ ์ •ํ™•ํžˆ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. MISO ํ•€์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํžˆ ์ „์†ก๋˜๊ฑฐ๋‚˜ ๋งˆ์Šคํ„ฐ๊ฐ€ ์นฉ ์„ ํƒ ํ•€์„ ๋†’๊ฒŒ ์„ค์ •ํ•  ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ์Šฌ๋ ˆ์ด๋ธŒ๋Š” ์ „์†ก์„ ์ค‘์ง€ํ•˜๊ณ  ๋งˆ์Šคํ„ฐ๋Š” ๊ทธ ์ดํ›„์˜ ํด๋Ÿญ ์ฃผ๊ธฐ์—์„œ ๋“ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

EEPROM์—์„œ ํŽŒ์›จ์–ด ๋คํ”„ํ•˜๊ธฐ

ํŽŒ์›จ์–ด ๋คํ”„๋Š” ํŽŒ์›จ์–ด๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ทธ ์•ˆ์˜ ์ทจ์•ฝ์ ์„ ์ฐพ๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…์ข… ํŽŒ์›จ์–ด๋Š” ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ชจ๋ธ ๋ฒˆํ˜ธ, ๋ฒ„์ „ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์š”์ธ์œผ๋กœ ์ธํ•ด ๊ด€๋ จ์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌผ๋ฆฌ์  ์žฅ์น˜์—์„œ ์ง์ ‘ ํŽŒ์›จ์–ด๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์œ„ํ˜‘์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง๋ ฌ ์ฝ˜์†”์„ ์–ป๋Š” ๊ฒƒ์€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ข…์ข… ํŒŒ์ผ์ด ์ฝ๊ธฐ ์ „์šฉ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ถ„์„์„ ์ œ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒจํ‚ค์ง€๋ฅผ ์ „์†กํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๊ฐ€ ํŽŒ์›จ์–ด์— ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ง„ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜์—ฌ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋งํ•˜๋Š” ๊ฒƒ์€ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์— ์ „์ฒด ํŽŒ์›จ์–ด๋ฅผ ๋คํ”„ํ•˜๊ณ  ๋ถ„์„์„ ์œ„ํ•ด ์ด์ง„ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋ ˆ๋“œ ํŒ€ ํ™œ๋™ ์ค‘ ์žฅ์น˜์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋•Œ, ํŽŒ์›จ์–ด๋ฅผ ๋คํ”„ํ•˜๋ฉด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์•…์„ฑ ํŒŒ์ผ์„ ์ฃผ์ž…ํ•œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค์‹œ ํ”Œ๋ž˜์‹œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์žฅ์น˜์— ๋ฐฑ๋„์–ด๋ฅผ ์‹ฌ๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŽŒ์›จ์–ด ๋คํ”„๋ฅผ ํ†ตํ•ด ์ž ๊ธˆ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋งŽ์€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

CH341A EEPROM ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋ฐ ๋ฆฌ๋”

์ด ์žฅ์น˜๋Š” EEPROM์—์„œ ํŽŒ์›จ์–ด๋ฅผ ๋คํ”„ํ•˜๊ณ  ํŽŒ์›จ์–ด ํŒŒ์ผ๋กœ ๋‹ค์‹œ ํ”Œ๋ž˜์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ €๋ ดํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ BIOS ์นฉ(๋‹จ์ˆœํžˆ EEPROM์ž„) ์ž‘์—…์— ์ธ๊ธฐ ์žˆ๋Š” ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์ด ์žฅ์น˜๋Š” USB๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋ฉฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ตœ์†Œํ•œ์˜ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒํ•˜๋ฏ€๋กœ ๋ฌผ๋ฆฌ์  ์žฅ์น˜ ์ ‘๊ทผ์—๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

drawing

CH341a ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ EEPROM ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์žฅ์น˜๋ฅผ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์žฅ์น˜๊ฐ€ ๊ฐ์ง€๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ปดํ“จํ„ฐ์— ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋˜ํ•œ EEPROM์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค(์ผ๋ฐ˜์ ์œผ๋กœ VCC ํ•€์„ USB ์ปค๋„ฅํ„ฐ์™€ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜) ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์นฉ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”์‹œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค:

drawing drawing

๋งˆ์ง€๋ง‰์œผ๋กœ flashrom, G-Flash (GUI) ๋“ฑ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽŒ์›จ์–ด๋ฅผ ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค. G-Flash๋Š” ์ตœ์†Œํ•œ์˜ GUI ๋„๊ตฌ๋กœ ๋น ๋ฅด๋ฉฐ EEPROM์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŽŒ์›จ์–ด๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ถ”์ถœํ•ด์•ผ ํ•  ๋•Œ, ๋ฌธ์„œ์™€ ๋งŽ์€ ์กฐ์ž‘ ์—†์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

drawing

ํŽŒ์›จ์–ด๋ฅผ ๋คํ”„ํ•œ ํ›„, ์ด์ง„ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. strings, hexdump, xxd, binwalk ๋“ฑ์˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽŒ์›จ์–ด ๋ฐ ์ „์ฒด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋งŽ์€ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽŒ์›จ์–ด์—์„œ ๋‚ด์šฉ์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด binwalk๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Binwalk๋Š” ํ—ฅ์‚ฌ ์„œ๋ช…์„ ๋ถ„์„ํ•˜๊ณ  ์ด์ง„ ํŒŒ์ผ์—์„œ ํŒŒ์ผ์„ ์‹๋ณ„ํ•˜๋ฉฐ ์ด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

binwalk -e <filename>

์ด๊ฒƒ์€ ์‚ฌ์šฉ๋œ ๋„๊ตฌ์™€ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ .bin ๋˜๋Š” .rom์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Caution

ํŽŒ์›จ์–ด ์ถ”์ถœ์€ ์„ฌ์„ธํ•œ ๊ณผ์ •์ด๋ฉฐ ๋งŽ์€ ์ธ๋‚ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป ๋‹ค๋ฃจ๋ฉด ํŽŒ์›จ์–ด๊ฐ€ ์†์ƒ๋˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ง€์›Œ์ ธ ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽŒ์›จ์–ด๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์ „์— ํŠน์ • ์žฅ์น˜๋ฅผ ์—ฐ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

Bus Pirate + flashrom

Pirate Bus์˜ ํ•€ ๋ฐฐ์น˜๊ฐ€ 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

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 ์ง€์›ํ•˜๊ธฐ