์คํ ์นด๋๋ฆฌ
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์คํ๊ฐ๋์ ์คํ์ด๋
์คํ๊ฐ๋๋ EIP (Extended Instruction Pointer) ์์ ์นด๋๋ฆฌ๋ก ์๋ ค์ง ํน๋ณํ ๊ฐ์ ์ฝ์
ํฉ๋๋ค. ์ด ๊ฐ์ 0x000aff0d๋ก, ๋, ์ค ๋ฐ๊ฟ, EOF, ์บ๋ฆฌ์ง ๋ฆฌํด์ ๋ํ๋ด์ด ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๊ทธ๋ฌ๋ recv(), memcpy(), read(), bcopy()์ ๊ฐ์ ํจ์๋ ์ฌ์ ํ ์ทจ์ฝํ๋ฉฐ, **EBP (Base Pointer)**๋ฅผ ๋ณดํธํ์ง ์์ต๋๋ค.
์คํ์ด๋๋ ๊ธ๋ก๋ฒ ๋ฆฌํด ์คํ์ ์ ์งํ์ฌ ๋ชจ๋ ๋ฆฌํด ์ฃผ์(EIPs)๋ฅผ ์ ์ฅํจ์ผ๋ก์จ ์คํ๊ฐ๋๋ณด๋ค ๋ ์ ๊ตํ ์ ๊ทผ ๋ฐฉ์์ ์ทจํฉ๋๋ค. ์ด ์ค์ ์ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋๋ผ๋ ํด๋ฅผ ๋ผ์น์ง ์๋๋ก ํ๋ฉฐ, ์ ์ฅ๋ ๋ฆฌํด ์ฃผ์์ ์ค์ ๋ฆฌํด ์ฃผ์๋ฅผ ๋น๊ตํ์ฌ ์ค๋ฒํ๋ก์ฐ ๋ฐ์์ ๊ฐ์งํ ์ ์๊ฒ ํฉ๋๋ค. ๋ํ, ์คํ์ด๋๋ ๋ฆฌํด ์ฃผ์๊ฐ ์์ ๋ฐ์ดํฐ ๊ณต๊ฐ ์ธ๋ถ๋ฅผ ๊ฐ๋ฆฌํค๋์ง ๊ฐ์งํ๊ธฐ ์ํด ๊ฒฝ๊ณ ๊ฐ๊ณผ ๋น๊ตํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ณดํธ๋ Return-to-libc, ROP (Return-Oriented Programming) ๋๋ ret2ret์ ๊ฐ์ ๊ธฐ์ ์ ํตํด ์ฐํ๋ ์ ์์ด, ์คํ์ด๋๊ฐ ์ง์ญ ๋ณ์๋ฅผ ๋ณดํธํ์ง ์์์ ๋ํ๋ ๋๋ค.
์คํ ์ค๋งค์ ํ๋กํ
ํฐ (ProPolice) -fstack-protector:
์ด ๋ฉ์ปค๋์ฆ์ EBP ์์ ์นด๋๋ฆฌ๋ฅผ ๋ฐฐ์นํ๊ณ , ์ง์ญ ๋ณ์๋ฅผ ์ฌ์กฐ์งํ์ฌ ๋ฒํผ๋ฅผ ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์์น์์ผ ๋ค๋ฅธ ๋ณ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํฉ๋๋ค. ๋ํ, ์ง์ญ ๋ณ์ ์์ ์คํ์ ์ ๋ฌ๋ ์ธ์๋ฅผ ์์ ํ๊ฒ ๋ณต์ฌํ๊ณ ์ด ๋ณต์ฌ๋ณธ์ ์ธ์๋ก ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ 8๊ฐ ๋ฏธ๋ง์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ด๋ ์ฌ์ฉ์์ ๊ตฌ์กฐ ๋ด์ ๋ฒํผ๋ ๋ณดํธํ์ง ์์ต๋๋ค.
์นด๋๋ฆฌ๋ /dev/urandom์์ ํ์๋ ๋๋ค ์ซ์์ด๊ฑฐ๋ ๊ธฐ๋ณธ๊ฐ 0xff0a0000์
๋๋ค. ์ด๋ **TLS (Thread Local Storage)**์ ์ ์ฅ๋์ด, ์ค๋ ๋ ๊ฐ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์ค๋ ๋๋ณ ๊ธ๋ก๋ฒ ๋๋ ์ ์ ๋ณ์๋ฅผ ๊ฐ์ง ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ๋ณ์๋ ์ฒ์์ ๋ถ๋ชจ ํ๋ก์ธ์ค์์ ๋ณต์ฌ๋๋ฉฐ, ์์ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ๋ ํ์ ์๊ฒ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ fork()๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์นด๋๋ฆฌ๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด ๋ชจ๋ ํ๋ก์ธ์ค(๋ถ๋ชจ ๋ฐ ์์)๊ฐ ๋์ผํ ์นด๋๋ฆฌ๋ฅผ ๊ณต์ ํ๊ฒ ๋์ด ์ทจ์ฝํด์ง๋๋ค. i386 ์ํคํ
์ฒ์์๋ ์นด๋๋ฆฌ๊ฐ gs:0x14์ ์ ์ฅ๋๊ณ , x86_64์์๋ fs:0x28์ ์ ์ฅ๋ฉ๋๋ค.
์ด ์ง์ญ ๋ณดํธ๋ ๊ณต๊ฒฉ์ ์ทจ์ฝํ ๋ฒํผ๊ฐ ์๋ ํจ์๋ฅผ ์๋ณํ๊ณ ์ด๋ฌํ ํจ์์ ์์ ๋ถ๋ถ์ ์นด๋๋ฆฌ๋ฅผ ๋ฐฐ์นํ๋ ์ฝ๋๋ฅผ ์ฃผ์ ํ๋ฉฐ, ๋ ๋ถ๋ถ์์ ๊ทธ ๋ฌด๊ฒฐ์ฑ์ ํ์ธํฉ๋๋ค.
์น ์๋ฒ๊ฐ fork()๋ฅผ ์ฌ์ฉํ ๋, ์นด๋๋ฆฌ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ถ์ธกํ๋ ๋ฌด์ฐจ๋ณ ๋์
๊ณต๊ฒฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ทธ๋ฌ๋ fork() ํ์ execve()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ฎ์ด์ฐ์ฌ์ ธ ๊ณต๊ฒฉ์ด ๋ฌดํจํ๋ฉ๋๋ค. vfork()๋ ์์ ํ๋ก์ธ์ค๊ฐ ์ฐ๊ธฐ๋ฅผ ์๋ํ ๋๊น์ง ์ค๋ณต ์์ด ์คํํ ์ ์๊ฒ ํ์ฌ, ๊ทธ ์์ ์ ์ค๋ณต์ด ์์ฑ๋๋ฉฐ ํ๋ก์ธ์ค ์์ฑ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ์ ๋ํ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
๊ธธ์ด
x64 ๋ฐ์ด๋๋ฆฌ์์ ์นด๋๋ฆฌ ์ฟ ํค๋ 0x8 ๋ฐ์ดํธ ์ฟผ๋์๋์
๋๋ค. ์ฒซ 7๋ฐ์ดํธ๋ ๋๋ค์ด๊ณ ๋ง์ง๋ง ๋ฐ์ดํธ๋ ๋ ๋ฐ์ดํธ์
๋๋ค.
x86 ๋ฐ์ด๋๋ฆฌ์์ ์นด๋๋ฆฌ ์ฟ ํค๋ 0x4 ๋ฐ์ดํธ ๋๋ธ์๋์
๋๋ค. ์ฒซ 3๋ฐ์ดํธ๋ ๋๋ค์ด๊ณ ๋ง์ง๋ง ๋ฐ์ดํธ๋ ๋ ๋ฐ์ดํธ์
๋๋ค.
Caution
๋ ์นด๋๋ฆฌ์ ๊ฐ์ฅ ๋ฎ์ ์ ํจ ๋ฐ์ดํธ๋ ๋ ๋ฐ์ดํธ์ ๋๋ค. ์ด๋ ์คํ์์ ๋ฎ์ ์ฃผ์์์ ์ค๋ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ์ฝ๋ ํจ์๋ ์ด๋ฅผ ์ฝ๊ธฐ ์ ์ ๋ฉ์ถ ๊ฒ์ ๋๋ค.
์ฐํ ๋ฐฉ๋ฒ
์นด๋๋ฆฌ๋ฅผ ์ ์ถํ ํ ์์ ์ ๊ฐ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ(์: ๋ฒํผ ์ค๋ฒํ๋ก์ฐ).
- ์์ ํ๋ก์ธ์ค์์ ์นด๋๋ฆฌ๊ฐ ํฌํฌ๋ ๊ฒฝ์ฐ ํ ๋ฒ์ ํ ๋ฐ์ดํธ์ฉ ๋ฌด์ฐจ๋ณ ๋์ ์ด ๊ฐ๋ฅํ ์ ์์ต๋๋ค:
BF Forked & Threaded Stack Canaries
- ๋ฐ์ด๋๋ฆฌ์ ํฅ๋ฏธ๋ก์ด ์ ์ถ ๋๋ ์์ ์ฝ๊ธฐ ์ทจ์ฝ์ ์ด ์๋ ๊ฒฝ์ฐ ์ ์ถํ ์ ์์ต๋๋ค:
- ์คํ์ ์ ์ฅ๋ ํฌ์ธํฐ ๋ฎ์ด์ฐ๊ธฐ
์คํ ์ค๋ฒํ๋ก์ฐ์ ์ทจ์ฝํ ์คํ์ ๋ฌธ์์ด์ด๋ ํจ์์ ์ฃผ์๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ๋ฎ์ด์จ์ ์นด๋๋ฆฌ์ ๋๋ฌํ์ง ์๊ณ ๋ ์ทจ์ฝ์ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ํ์ธํ์ธ์:
- ๋ง์คํฐ์ ์ค๋ ๋ ์นด๋๋ฆฌ ๋ชจ๋ ์์ ํ๊ธฐ
์นด๋๋ฆฌ๋ก ๋ณดํธ๋ ์ค๋ ๋ ํจ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋์ ๋ง์คํฐ ์นด๋๋ฆฌ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ ๊ฐ์ ๋์ผํ ์นด๋๋ฆฌ(์์ ๋์์ง๋ง)๊ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ํ ์กฐ์น๋ ๋ฌด์ฉ์ง๋ฌผ์ด ๋ฉ๋๋ค.
๊ฒ๋ค๊ฐ, ์นด๋๋ฆฌ๋ก ๋ณดํธ๋ ์ค๋ ๋ ํจ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ TLS์ ์ ์ฅ๋ ๋ง์คํฐ ์นด๋๋ฆฌ๋ฅผ ์์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ ๋์ ์คํ์์ bof๋ฅผ ํตํด TLS๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋๋ฌํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ ๊ฐ์ ๋์ผํ ์นด๋๋ฆฌ(์์ ๋์์ง๋ง)๊ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ํ ์กฐ์น๋ ๋ฌด์ฉ์ง๋ฌผ์ด ๋ฉ๋๋ค.
์ด ๊ณต๊ฒฉ์ ๋ค์์ ๊ธ์์ ์ํ๋ฉ๋๋ค: http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads
๋ํ https://www.slideshare.net/codeblue_jp/master-canary-forging-by-yuki-koike-code-blue-2015์์์ ๋ฐํ๋ฅผ ํ์ธํ์ธ์. ์ด ๋ฐํ์์๋ ์ผ๋ฐ์ ์ผ๋ก TLS๊ฐ **mmap**์ ์ํด ์ ์ฅ๋๋ฉฐ, ์ค๋ ๋์ ์คํ์ด ์์ฑ๋ ๋๋ mmap์ ์ํด ์์ฑ๋๋ค๊ณ ์ธ๊ธํฉ๋๋ค. ์ด๋ ์ด์ ๊ธ์์ ๋ณด์ฌ์ค ๊ฒ์ฒ๋ผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
__stack_chk_fail์ GOT ํญ๋ชฉ ์์ ํ๊ธฐ
๋ฐ์ด๋๋ฆฌ์ Partial RELRO๊ฐ ์๋ ๊ฒฝ์ฐ, __stack_chk_fail์ GOT ํญ๋ชฉ์ ํ๋ก๊ทธ๋จ์ด ์นด๋๋ฆฌ๊ฐ ์์ ๋๋๋ผ๋ ์ฐจ๋จํ์ง ์๋ ๋๋ฏธ ํจ์๋ก ์์ ํ๊ธฐ ์ํด ์์ ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๊ณต๊ฒฉ์ ๋ค์์ ๊ธ์์ ์ํ๋ฉ๋๋ค: https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/
์ฐธ๊ณ ๋ฌธํ
- https://guyinatuxedo.github.io/7.1-mitigation_canary/index.html
- http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads
- https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/
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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


