Tcache Bin Attack

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

Basic Information

Tcache bin์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์ด ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”:

Bins & Memory Allocations

์šฐ์„ , Tcache๋Š” Glibc ๋ฒ„์ „ 2.26์—์„œ ๋„์ž…๋˜์—ˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.

Tcache attack(๋˜๋Š” Tcache poisoning)์€ guyinatuxido ํŽ˜์ด์ง€์—์„œ ์ œ์•ˆ๋œ ๊ฒƒ์œผ๋กœ, ๋ชฉํ‘œ๋Š” ํ•ด์ œ๋œ ์ฒญํฌ ๋‚ด์˜ ๋นˆ์—์„œ ๋‹ค์Œ ์ฒญํฌ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ž„์˜์˜ ์ฃผ์†Œ๋กœ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์œผ๋กœ, ์ดํ›„ ํŠน์ • ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํฌ์ธํ„ฐ๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์–ธ๊ธ‰๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค: malloc(): unaligned tcache chunk detected. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ํฌ์ธํ„ฐ์— ์ฃผ์†Œ๋ฅผ ์“ธ ๋•Œ ์ •๋ ฌ๋œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ์ด์ง„ ํŒŒ์ผ์„ ์ถฉ๋ถ„ํžˆ ์‹คํ–‰ํ•˜์—ฌ ์ž‘์„ฑ๋œ ์ฃผ์†Œ๊ฐ€ ์‹ค์ œ๋กœ ์ •๋ ฌ๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

Tcache indexes attack

์ผ๋ฐ˜์ ์œผ๋กœ ํž™์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ tcache ๋‚ด ์ธ๋ฑ์Šค๋‹น ์ฒญํฌ ์ˆ˜์™€ ๊ฐ tcache ์ธ๋ฑ์Šค์˜ ํ—ค๋“œ ์ฒญํฌ ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒญํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ์ด ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์–ด๋–ค ์ธ๋ฑ์Šค์˜ ํ—ค๋“œ ์ฒญํฌ๋ฅผ ์›ํ•˜๋Š” ์ฃผ์†Œ(์˜ˆ: __malloc_hook)๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ดํ›„ ์ธ๋ฑ์Šค ํฌ๊ธฐ์˜ ์ฒญํฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์ด ๊ฒฝ์šฐ __malloc_hook์˜ ๋‚ด์šฉ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Examples

  • CTF https://guyinatuxedo.github.io/29-tcache/dcquals19_babyheap/index.html
  • Libc info leak: tcaches๋ฅผ ์ฑ„์šฐ๊ณ , ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ์— ์ฒญํฌ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, tcache๋ฅผ ๋น„์šฐ๊ณ  ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋นˆ์—์„œ ์ฒญํฌ๋ฅผ ๋‹ค์‹œ ํ• ๋‹นํ•˜์—ฌ ์ฒซ 8B๋งŒ ๋ฎ์–ด์“ฐ๊ณ , ์ฒญํฌ์˜ ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ libc์—์„œ ๊ทธ๋Œ€๋กœ ๋‘์–ด ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • Tcache attack: ์ด ์ด์ง„ ํŒŒ์ผ์€ 1B ํž™ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์•…์šฉํ•˜์—ฌ ํ• ๋‹น๋œ ์ฒญํฌ์˜ ํฌ๊ธฐ ํ—ค๋”๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋” ํฌ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ฒญํฌ๋ฅผ ํ•ด์ œํ•˜๊ณ , ๊ฐ€์งœ ํฌ๊ธฐ์˜ ์ฒญํฌ tcache์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๊ฐ€์งœ ํฌ๊ธฐ๋กœ ์ฒญํฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉด ์ด์ „ ์ฒญํฌ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉฐ ์ด ์ฒญํฌ๋Š” ์‹ค์ œ๋กœ ๋” ์ž‘์•˜๋˜ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‹ค์Œ ์ฒญํฌ๋ฅผ ๋ฎ์–ด์“ธ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    ์ด๋ฅผ ์•…์šฉํ•˜์—ฌ ๋‹ค์Œ ์ฒญํฌ์˜ FD ํฌ์ธํ„ฐ๋ฅผ **malloc_hook**๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฎ์–ด์”๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์ฒซ ๋ฒˆ์งธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ์ˆ˜์ •ํ•œ ์ •๋‹นํ•œ ํฌ์ธํ„ฐ์ด๊ณ , ๋‘ ๋ฒˆ์งธ ํ• ๋‹น์€ **malloc_hook**์— ์žˆ๋Š” ์ฒญํฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ one gadget๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CTF https://guyinatuxedo.github.io/29-tcache/plaid19_cpp/index.html
  • Libc info leak: ์‚ฌ์šฉ ํ›„ ํ•ด์ œ์™€ ์ด์ค‘ ํ•ด์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ ์ €์ž๋Š” ์ž‘์€ ๋นˆ์— ๋ฐฐ์น˜๋œ ์ฒญํฌ์˜ ์ฃผ์†Œ๋ฅผ ์ฝ์–ด libc์˜ ์ฃผ์†Œ๋ฅผ ์œ ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค(์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋นˆ์—์„œ ์œ ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ž‘์€ ๋นˆ์—์„œ).
  • Tcache attack: Tcache๋Š” ์ด์ค‘ ํ•ด์ œ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ฒญํฌ๊ฐ€ ๋‘ ๋ฒˆ ํ•ด์ œ๋˜๋ฏ€๋กœ Tcache ๋‚ด์—์„œ ์ฒญํฌ๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ• ๋‹น๋˜๊ณ , FD ํฌ์ธํ„ฐ๊ฐ€ free hook์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์ˆ˜์ •๋œ ํ›„ ๋‹ค์‹œ ํ• ๋‹น๋˜์–ด ๋ฆฌ์ŠคํŠธ์˜ ๋‹ค์Œ ์ฒญํฌ๊ฐ€ free hook์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๊ฒƒ๋„ ํ• ๋‹น๋˜์–ด system์˜ ์ฃผ์†Œ๋ฅผ ์—ฌ๊ธฐ์— ์“ธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ "/bin/sh"๋ฅผ ํฌํ•จํ•˜๋Š” malloc์ด ํ•ด์ œ๋  ๋•Œ ์…ธ์„ ์–ป์Šต๋‹ˆ๋‹ค.
  • CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps0/index.html
  • ์—ฌ๊ธฐ์„œ ์ฃผ์š” ์ทจ์•ฝ์ ์€ ์˜คํ”„์…‹์„ ์ง€์ •ํ•˜์—ฌ ํž™์˜ **์–ด๋–ค ์ฃผ์†Œ๋“  free**ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค.
  • Tcache indexes attack: tcache ์ฒญํฌ(์ฒญํฌ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ฒญํฌ) ๋‚ด์— ์ €์žฅ๋  ๋•Œ ๊ฐ’์ด 0x100์ธ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํฌ๊ธฐ์˜ ์ฒญํฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” tcache๊ฐ€ ๊ฐ ๋นˆ์˜ ์ฒญํฌ ์ˆ˜๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ”์ดํŠธ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ํŠน์ • ์ธ๋ฑ์Šค์˜ ์ฒญํฌ๊ฐ€ 0x100 ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๊ฐ’์€ 0x100 ํฌ๊ธฐ์˜ ์ฒญํฌ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ด ์ฃผ์†Œ๋ฅผ freeํ•˜์—ฌ tcache์˜ 0x100 ํฌ๊ธฐ ์ฒญํฌ ์ธ๋ฑ์Šค์— ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ 0x100 ํฌ๊ธฐ์˜ ์ฒญํฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉด, ์ด์ „ ์ฃผ์†Œ๊ฐ€ ์ฒญํฌ๋กœ ๋ฐ˜ํ™˜๋˜์–ด ๋‹ค๋ฅธ tcache ์ธ๋ฑ์Šค๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ ์ค‘ ํ•˜๋‚˜์— malloc hook์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ณ  ํ•ด๋‹น ์ธ๋ฑ์Šค ํฌ๊ธฐ์˜ ์ฒญํฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉด calloc hook์— ์ฒญํฌ๊ฐ€ ํ• ๋‹น๋˜์–ด one gadget๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์…ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps1/index.html
  • ์ด์ „๊ณผ ๋™์ผํ•œ ์ทจ์•ฝ์ ์— ์ถ”๊ฐ€ ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Tcache indexes attack: ์ด์ „๊ณผ ์œ ์‚ฌํ•œ ๊ณต๊ฒฉ์ด์ง€๋งŒ tcache ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒญํฌ๋ฅผ ํ•ด์ œํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ๊ฐ€ ํ•ด๋‹น ํฌ๊ธฐ์˜ tcache ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€๋˜๋„๋ก ํ•˜์—ฌ ํ•ด๋‹น ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•˜๊ณ  tcache ์ฒญํฌ ์ •๋ณด๋ฅผ ์ฒญํฌ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด free hook์„ ์ธ๋ฑ์Šค์˜ ์ฃผ์†Œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ํ• ๋‹นํ•˜์—ฌ ๊ทธ ์œ„์— one gadget๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Math Door. HTB Cyber Apocalypse CTF 2023
  • fd ํฌ์ธํ„ฐ์— ์ˆซ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ Write After Free.
  • ์ด ๋„์ „ ๊ณผ์ œ์—์„œ๋Š” ๋งŽ์€ heap feng-shui๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Tcache์˜ ํ—ค๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • stdout๋ฅผ ํ†ตํ•œ Glibc leak (FSOP).
  • ์ž„์˜์˜ ์“ฐ๊ธฐ ์›์‹œ๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ Tcache poisoning.

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