프롤로그
화이트햇 하면서, 스택오버플로우랑 카나리 기법 공부하고, 따로 정리는 안 하였다.
NX
No-eXecute(NX) : 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호 기법.
메모리 영역에 대해 쓰기 권한과 실행 권한이 함께 있으면 시스템이 취약해 지기 쉽다.
그래서 CPU가 NX를 지원하면, 컴퍼알러 옵션을 통해 바이너리에 NX를 적용할 수 있고, NX가 적용된 바이너리는 실행될 때 각 메모리 영역에 필요한 권한만을 부여받는다.
어떤 보호 기법이 적용되었는지 확인하려면
checksec 파일
를 쓰면 보호 기법이 나온다
$ checksec ./nx
[*] '/home/dreamhack/nx'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
NX는 여러개로 불리는데, XD(eXecute Disable), AMD는 NX, 윈도우는 DEP(Data Execution Prevention), ARM에서는 XN(eXecute Never)라고 말한다.
ASLR
ASLR(Address Space Layout Randomization) : 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법
$ cat /proc/sys/kernel/randomize_va_space
2
밑에 숫자가 0 : ASLR 적용되지 않음
1 : 스택, 힙 라이브러리, vdso 등
2. (1) + brk 로 할당된 영역
ASLR 가 적용이 되면...
main함수를 제외한 다른 영역의 주소들은 실행할 때마다 변경된다. 그래서 주소 예측하기 힘든다.
결론
NX : 스택, 힙, 데이터 영역에 실행권한이 제거 된다
ASLR : 할당되는 주소가 계속 변경
그러나 바이너리의 코드가 존재하는 영역은 여전히 실행권한이 존재하고, 할당되는 주소도 고정
RTL(Return - to - Libc)과 ROP(Return Oriented Programming) 로 우회가능.
'보안 스터디 > 시스템 해킹' 카테고리의 다른 글
[드림핵/시스템 해킹] Exploit Tech: Return to Library (0) | 2024.04.26 |
---|---|
[드림핵/시스템해킹] Background: Library - Static Link vs. Dynamic Link (0) | 2024.04.26 |
[드림핵/워게임] shell_basic (포너블/시스템해킹) (1) | 2024.01.27 |
[드림핵/시스템해킹] Exploit Tech: Shellcode -2 (0) | 2023.12.31 |
[드림핵/시스템해킹] Exploit Tech: Shellcode -1 (1) | 2023.12.31 |