WWW2Exec - .dtors & .fini_array

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

.dtors

Caution

์š”์ฆ˜์€ .dtors ์„น์…˜์ด ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค!

์†Œ๋ฉธ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค ( main ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋œ ํ›„).
์ด ํ•จ์ˆ˜๋“ค์˜ ์ฃผ์†Œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ .dtors ์„น์…˜์— ์ €์žฅ๋˜๋ฉฐ, ๋”ฐ๋ผ์„œ **__DTOR_END__**์— shellcode์˜ ์ฃผ์†Œ๋ฅผ ์“ฐ๊ธฐ์— ์„ฑ๊ณตํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ๊ทธ๊ฒƒ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์˜ ์ฃผ์†Œ๋ฅผ ์–ป์œผ๋ ค๋ฉด:

objdump -s -j .dtors /exec
rabin -s /exec | grep โ€œ__DTORโ€

๋ณดํ†ต DTOR ๋งˆ์ปค๋Š” ffffffff๊ณผ 00000000 ๊ฐ’ ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฐ’๋“ค๋งŒ ๋ณด์ธ๋‹ค๋ฉด ๋“ฑ๋ก๋œ ํ•จ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ **00000000**์„ ์‹คํ–‰ํ•  shellcode์˜ ์ฃผ์†Œ๋กœ ๋ฎ์–ด์”Œ์šฐ์„ธ์š”.

Warning

๋ฌผ๋ก , ๋จผ์ € shellcode๋ฅผ ์ €์žฅํ•  ์žฅ์†Œ๋ฅผ ์ฐพ์•„์•ผ ๋‚˜์ค‘์— ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.fini_array

๋ณธ์งˆ์ ์œผ๋กœ ์ด๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋  ํ•จ์ˆ˜๋“ค๋กœ ๊ตฌ์„ฑ๋œ ๊ตฌ์กฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด๋Š” **.dtors**์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ๋กœ ์ ํ”„ํ•˜์—ฌ shellcode๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ์ทจ์•ฝ์ ์„ ๋‘ ๋ฒˆ์งธ๋กœ ์•…์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ main์œผ๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

objdump -s -j .fini_array ./greeting

./greeting:     file format elf32-i386

Contents of section .fini_array:
8049934 a0850408

#Put your address in 0x8049934

**.fini_array**์—์„œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋‹ค์Œ ํ•จ์ˆ˜๋กœ ์ด๋™ํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ(์˜์›ํ•œ ๋ฃจํ”„ ๋ฐฉ์ง€), ์—ฌ๊ธฐ ๋ฐฐ์น˜๋œ ํ•จ์ˆ˜๋Š” 1ํšŒ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

.fini_array์˜ ํ•ญ๋ชฉ์€ ์—ญ์ˆœ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜์›ํ•œ ๋ฃจํ”„

.fini_array๋ฅผ ์•…์šฉํ•˜์—ฌ ์˜์›ํ•œ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์„œ ์ˆ˜ํ–‰๋œ ์ž‘์—…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: **.fini_array**์— ์ตœ์†Œ 2๊ฐœ์˜ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ:

  • ์ฒซ ๋ฒˆ์งธ ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ทจ์•ฝํ•œ ์ž„์˜ ์“ฐ๊ธฐ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ, **__libc_csu_fini**์— ์˜ํ•ด ์ €์žฅ๋œ ์Šคํƒ์˜ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  **__libc_csu_fini**์˜ ์ฃผ์†Œ๋ฅผ ๊ทธ๊ณณ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด **__libc_csu_fini**๊ฐ€ ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜์—ฌ .fini_array ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ์ทจ์•ฝํ•œ WWW ํ•จ์ˆ˜๋ฅผ 2๋ฒˆ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค: ํ•˜๋‚˜๋Š” ์ž„์˜ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์Šคํƒ์—์„œ **__libc_csu_fini**์˜ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ๋ฎ์–ด์“ฐ๊ณ  ์ž์‹ ์„ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

Caution

Full RELRO, ์„น์…˜ **.fini_array**๋Š” ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” [Partial RELRO]๊ฐ€ ์žˆ์–ด๋„ ์„น์…˜ **.fini_array**๋Š” ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

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