728x90
ํฌ๋๋ธ
ํฌ๋๋ธ(Pwnable)
- ์์คํ ํดํน: ์ด์์ฒด์ ๋ ์ํํธ์จ์ด, ํ๋์จ์ด์ ๋ด์ฌ๋ ๋ณด์ ์ทจ์ฝ์ ์ ํดํนํ๋ ๊ฒ
< ํฌ๋๋ธ์ ๋ชฉํ >
- ๊ถ๋ฆฌ์ ๊ถํ ํ์ทจ → ์์ ๋ฐ๋ด๋ ๊ฒ
- ๋ณดํต ์ผ๋ฐ ์ ์ ์ ์๊ฒฉ์ด ์ฃผ์ด์ง๋๋ฐ, ํฌ๋๋ธ์ ์ฌ๋ฌ ๊ฐ์ง ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ ํ์ฉํ์ฌ ๊ถ๋ฆฌ์ ์๊ฒฉ์ ๋บ๋ ์ ์ฐจ
- ๊ถ๋ฆฌ์ ๊ถํ์ ์ป๊ธฐ ์ํด ๋๊ฐ ์ฌ์ฉํ๋ ํจ์: 'system("/bin/sh")', 'execve("/bin/sh")'
- ๊ถ๋ฆฌ์ ๊ถํ์ ์ป๊ธฐ ์ํด ์์ ์ด์ด์ผ ํ๊ณ , ์์ ์ฌ๋ ํจ์๋ค์ด ํ์ํ๋ค
- ์ด๊ฑธ ๋ฐ์ดํธ ์ฝ๋๋ก ์ฎ๊ธด ๊ฒ์ด ์์ฝ๋
- ์์ฝ๋(Shell Code): ์์ ํฌ๊ธฐ์ ์ฝ๋๋ก ์ํํธ์จ์ด ์ทจ์ฝ์ ์ด์ฉ์ ์ํ ๋ด์ฉ๋ถ์ ์ฌ์ฉ๋จ
ํฌ๋๋ธ ๊ณผ์
[ ๊ธฐ๋ณธ : ๊ถ๋ฆฌ์ ๊ถํ ํ์ทจ ]
- ํ๋ก๊ทธ๋จ ์ทจ์ฝ์ ๋ฐ๊ฒฌ
- ์ทจ์ฝ์ ๊ธฐ๋ฐ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค ์์ฑ
- ๊ณต๊ฒฉ ์๋๋ฆฌ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ํ์ํ ์ ๋ณด ์์ง ๋ฐ ๊ณต๊ฒฉ
- ๊ณต๊ฒฉ ์ฑ๊ณต ํ ๊ถํ์ ํ์ทจํ๊ฑฐ๋ ์ํ๋ ์ ๋ณด GET
์ ์ ์ง์
- C์ธ์ด ํด์ ๋ฅ๋ ฅ
- ์ฝ๋๋ฅผ ๋ณด๊ณ ์ทจ์ฝ์ ์ด ์๋ ํจ์๋ฅผ ์ฐพ์์ผ ํจ
- ํ๋ก๊ทธ๋จ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (๋ฆฌ๋
์ค ์ค์ฌ์ผ๋ก!)
- ์คํ, ํ, SFP, RET ๋ฑ
- ๋ฆฌ๋
์ค ์ง์
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ๋ ์ค์ CLI ํ๊ฒฝ์์ ์งํ๋จ
- FTZ Trainer & HackTheBo๋ก ์ตํ ์ ์๋ค
- ๋ฆฌ๋ฒ์ฑ ๋ฅ๋ ฅ
- ์์ฝ๋(Shell code)
์ด์ ๋ธ๋ฆฌ์ด
ํด ์ค์น
< x64dbg ์ค์น >
- x64dbg: ๋์ ๋ถ์ ๋๊ตฌ, ๋๋ฒ๊ฑฐ
- OllyDbg, ImmunityDbg ๋ฑ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ๋๋ฒ๊ฑฐ ์ฌ์ฉํ์ ๋ ๋์ง๋ง 64bit ํ์ผ์ด ์ด๋ฆฌ๋์ง ํ์ธํ๊ธฐ
- https://github.com/x64dbg/x64dbg/releases
Releases · x64dbg/x64dbg
An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. - x64dbg/x64dbg
github.com
- ์์ถ ํด์ ํ ํด๋ - release - x96dbg.exe ์คํ
- ์ค์นํ๊ณ ๋๋ฉด x32dbg(32bit ์ ์ฉ), x64dbg(64bit ์ ์ฉ) ๊ฐ๊ฐ ์ด์ฉ ๊ฐ๋ฅ
< IDA ์ค์น >
- IDA: ์ ์ ๋ถ์ ๋๊ตฌ, ๋์ค์ด์
๋ธ๋ฌ
- IDA Pro ๋์ ๋ฌด๋ฃ์ธ IDA Free๋ฅผ ์ค์น
- https://hex-rays.com/ida-free/#download
IDA Free
IDA Free The free binary code analysis tool to kickstart your reverse engineering experience.
hex-rays.com
- ์์ ์ ํ๊ฒฝ์ ๋ง๊ฒ ๋ค์ด๋ก๋, ๋ค์ด ๋ฐ์ exe ํ์ผ ์คํํ์ฌ ์ค์น
- ์ค์น ํ ํด๋น ํด๋(IDA Freeware 8.1) - ida64.exe ์คํ
์ด์ ๋ธ๋ฆฌ์ด
< ์ด์ ๋ธ๋ฆฌ์ด๋? >
- ์์คํ ํดํน: ์ํํธ์จ์ด์์ ๋ฐ๊ฒฌํ ์ทจ์ฝ์ ์ผ๋ก ๊ถํ์ ํ์ทจํ๊ฑฐ๋ ์๋ํ์ง ์์ ํ์๋ฅผ ์ผ์ผํค๋ ๊ฒ
- ์ํํธ์จ์ด: ์ปดํจํฐ์ ์ธ์ด(๊ธฐ๊ณ์ด)๋ก ๊ตฌ์ฑ
< x86-64 ๊ธฐ๋ณธ ๊ตฌ์กฐ >
< ๋ฐ์ดํฐ ์ด๋ - ์ด๋ค ๊ฐ์ ๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฎ๊ธฐ๋๋ก ์ง์ >
< ์ฐ์ ์ฐ์ฐ - ๋ง์ , ๋บ์ , ๊ณฑ์ , ๋๋์ ์ฐ์ฐ์ ์ง์ >
< ๋ ผ๋ฆฌ ์ฐ์ฐ - and, or, xor, neg ๋ฑ์ ๋นํธ ์ฐ์ฐ ์ง์ >
< ๋น๊ต - ๋ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋น๊ตํ๊ณ ํ๋๊ทธ๋ฅผ ์ค์ >
< ๋ถ๊ธฐ - rip๋ฅผ ์ด๋์์ผ ์คํ ํ๋ฆ์ ์ ์ด >
< ์คํ - ์คํ ์กฐ์ >
< ์คํ >
- LIFO (Last in First Out), ์ฆ ๋์ค์ ๋ค์ด์จ ๊ฒ์ด ๋จผ์ ๋๊ฐ๋ค.
- ์คํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ push, ์คํ์์ ๊ฐ์ ์ถ์ถํ๋ ๊ฒ์ POP์ด๋ผ๊ณ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก top์ผ๋ก ๋ช ๋ช ๋๋ ๊ณณ์ด ํ์ฌ ์คํ ํฌ์ธํฐ๊ฐ ์ฌ์ฉ๋๋ค.
- Push ๋ ๋๋ง๋ค ์คํ ํฌ์ธํฐ๊ฐ ํ๋์ฉ ๊ฐ์๋๊ณ , Pop์ด ๋ ๋๋ง๋ค ์คํ ํฌ์ธํฐ๊ฐ ํ๋์ฉ ์ฆ๊ฐ๋๋ค.
< ํ๋ก์์ - ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ฝ๋ ์กฐ๊ฐ >
์์คํ ์ฝ
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ๋ฐ๊ธฐ ์ํด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ
→ ์ ์ ๋ชจ๋์ ์ปค๋๋ชจ๋ ์ฌ์ด์์ ์๋
์ ธ (Shell)
์ด์์ฒด์
์ด์์ฒด์ ๋?
- ์ด์์ฒด์ (Operating System, OS) : ์ปดํจํฐ ์์คํ ์์ ํ๋์จ์ด์ ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์ธํฐํ์ด์ค ์ญํ ์ ํ๋ฉฐ, ์ปดํจํฐ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์์คํ ์ํํธ์จ์ด
- ์ด์์ฒด์ ๋ ์ปดํจํฐ ๋ถํ ๊ณผ ํจ๊ป ์์๋๋ฉฐ, ์์คํ ์์์ ํ ๋น๊ณผ ๊ด๋ฆฌ, ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ, ์ฌ์ฉ์์ ํ๋์จ์ด ๊ฐ์ ์ธํฐํ์ด์ค ๋ฑ์ ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ด์์ฒด์ ์ ๊ธฐ๋ฅ
- ํ๋ก์ธ์ค ๊ด๋ฆฌ(Process Management): ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ์ ๊ด๋ฆฌํ๊ณ , ํ๋ก์ธ์ค ๊ฐ์ ์์ ๊ณต์ ๋ฐ ์ถฉ๋ ๋ฐฉ์ง
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(Memory Management): ์์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ ๋น, ํ์ ๋ฐ ๋ณดํธ๋ฅผ ์ ๊ณต
- ํ์ผ ์์คํ ๊ด๋ฆฌ(File System Management): ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ์ ์์ฑ, ์ญ์ ๋ฐ ๊ด๋ฆฌ
- ์ ์ถ๋ ฅ ์ฅ์น ๊ด๋ฆฌ(I/O Device Management): ์ ์ถ๋ ฅ ์ฅ์น์์ ์ธํฐํ์ด์ค ์ ๊ณต ๋ฐ ๊ด๋ฆฌ
- ๋ณด์(Security): ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ, ์์คํ ์์ ๋ณดํธ
- ๋คํธ์ํน(Networking): ๋คํธ์ํฌ๋ฅผ ํตํ ํต์ ์ง์
→ ์ด์์ฒด์ ๋ ์ฌ์ฉ์์ ์ปดํจํฐ ํ๋์จ์ด ๊ฐ์ ์ธํฐํ์ด์ค ์ญํ ์ ์ํํ๋ฏ๋ก, ์ฌ์ฉ์์ ํ๋์จ์ด ์ฌ์ด์ ์ง์ ์ ์ธ ์ํธ์์ฉ ์์ด๋ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด ์ค๋ค.
์ ธ(Shell)
- ์ด์์ฒด์ ์์ ์ฌ์ฉ์์ ์ปดํจํฐ ํ๋์จ์ด ์ฌ์ด๋ฅผ ์ค๊ณํด ์ฃผ๋ ์ธํฐํ์ด์ค
- ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ช ๋ น์ด๋ฅผ ์ด์์ฒด์ ์์ ์ดํดํ ์ ์๋ ํ์์ผ๋ก ๋ณํํ๊ณ , ์ปดํจํฐ ํ๋์จ์ด๋ฅผ ์ด์ฉํด ๋ช ๋ น์ ์คํ์์ผ ์ฃผ๋ ์ญํ ์ ์ํ
- ๋ช ๋ น์ด ํด์๊ธฐ(interpreter)์ ์ฐ๊ด๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์ฌ์ฉ์์ ์ด์์ฒด์ ๊ฐ์ ๋ํ๋ฅผ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
- ํฐ๋ฏธ๋ ์ฐฝ์์ ์คํ๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ช ๋ น์ ํด์ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ช ๋ น์ด ํด์๊ธฐ์ ํจ๊ป ์ ๊ณตํ๋ค.
- Bourne Shell(sh), C shell(csh), Korn shell(ksh), Bourne-Again shell(bash)๊ฐ ๋ํ์
์ปค๋(kernel)
์ ธ ์ฝ๋
์ ธ ์ฝ๋(Shell code)์ ๊ฐ๋
- ์ ธ ์คํฌ๋ฆฝํธ(Shell Script)๋ก ์์ฑ๋ ์์ ํ๋ก๊ทธ๋จ
- ์
ธ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ์์ฑ๋๋ฉฐ, ์
ธ์์ ์คํ๋๋ ๋ช
๋ น์ด๋ค์ ์ํ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ฌ์ฉ์๋ ํฐ๋ฏธ๋์์ ์ผ๋ จ์ ๋ช ๋ น์ด๋ฅผ ํ ๋ฒ์ ์คํํ ์ ์๋ค!
ํฌ๋๋ธ์์์ ์ ธ ์ฝ๋
- ์์คํ ํดํน์ ๋ชฉํ : ๊ด๋ฆฌ์ ๊ถํ ์ป๊ธฐ == ๊ด๋ฆฌ์์ ์ ธ์ ์ป๋ ๊ฒ!
- ๊ด๋ฆฌ์ ๊ถํ์ ์ป๊ธฐ ์ํด ๊ด๋ฆฌ์์ ๊ถํ์ ๊ฐ์ง ์
ธ์ ์ด์ด์ผ ํ๊ณ , ์ด๋ฌํ ์
ธ์ ์ด๊ธฐ ์ํด์๋ ํจ์๋ค์ด ํ์ํ๋ค
- ํด๋น ํจ์๋ค์ ๋ฐ์ดํธ ์ฝ๋๋ก ์ฎ๊ธด ๊ฒ์ด ์ ธ ์ฝ๋์ด๋ค
- ์์ ํฌ๊ธฐ์ ์ฝ๋๋ก ์ํํธ์จ์ด ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ๊ด๋ฆฌ์ ๊ถํ์ ํ์ทจํ๊ธฐ ์ํด ์ฌ์ฉ๋จ
- ์ ธ ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ๋ธ๋ฆฌ์ด๋ก ์์ฑ๋ ํ ๊ธฐ๊ณ์ด๋ก ๋ณ๊ฒฝ๋จ
์ ธ์ฝ๋(Shell code) ์์
execve ์ ธ์ฝ๋
- ์์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์
ธ์ฝ๋(์ผ๋ฐ์ ์ธ ์
ธ์ฝ๋)
- ์ต์ ์ ๋ฆฌ๋ ์ค๋ ๋๋ถ๋ถ sh, bash๋ฅผ ๊ธฐ๋ณธ ์ ธ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ์ง๊ณ ์์
- ๋ฆฌ๋
์ค์ ๊ธฐ๋ณธ ์คํ ํ๋ก๊ทธ๋จ๋ค์ /bin/ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋์ด ์์
- sh ์ ธ๋ ์ฌ๊ธฐ์ ์ ์ฅ
'E-COPS > 14th ๋น๊ธฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. ๋์งํธ ํฌ๋ ์ (2) | 2024.09.12 |
---|---|
3. ์ํธ (2) | 2024.09.07 |
2. ๋คํธ์ํฌ ๋ณด์ (2) | 2024.09.01 |
1. ์น ๋ณด์ (0) | 2024.08.29 |