NX & ASLR...

Fransis__·2023년 5월 11일
0

pwn

목록 보기
3/5

  1. ASLR (Address Space Layout Randomization)

    • 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법
    • 커널에서 지원하는 보호기법이며, cat /proc/sys/kernel/randomize_va_space로 확인할 수 있음
      • 0 : No ASLR
      • 1 : Conservative Randomization (stack, heap. lib, vdso, etc....)
      • 2 : Conservative Rand. + brk (1 + brk allocated space)
    • 특징
      • 코드 영역의 메인 함수를 제외한 다른 영역의 주소들이 바이너리 실헹될 때마다 변경됨
      • libc_base 주소 하위 12비트, printf 주소 하위 12비트 값은 변경 x
      • ASLR 적용시 리눅스에선 파일을 페이지 단위(12비트)로 임의 주소 매핑
        • 12비트 이하로는 주소 변경 x
      • libc_base와 printf의 offset은 항상 같음 (라이브러리 파일을 그대로 매핑함)
  2. NX (No-eXecute)

    • 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호 기법
      • 코드 영역에 쓰기 권한이 있으면 공격자가 코드 수정 가능
      • 스택, 데이터 영역에 실행 권한이 있으면 r2s 공격 시도 가능
    • NX가 적용된 바이너리엔 코드 영역 외에 실행 권한이 없고 꼭 필요한 권한만 부여
profile
_DM_S_1W_ | KH2P

0개의 댓글