[Dreamhack - System Hacking] STAGE 2 : Linux Memory Layout

eunee22·2023년 7월 1일

Dreamhack/SystemHacking

목록 보기
3/12
  • CPU의 동작과 메모리 사이에는 밀접한 연관이 있다
  • 메모리 오염 취약점(Memory Corruption)
    • 공격자가 메모리를 악의적으로 조작하여 CPU가 잘못된 동작을 하도록 하는 것

리눅스 프로세스 메모리 구조

  • 세그먼트(Segment) : 메모리를 적재되는 데이터의 용도별로 나눈 것
    • 각 용도에 맞는 적절한 권한 부여 가능

1. 코드 세그먼트 = 텍스트 세그먼트

  • 실행 가능한 기계어 코드가 위치하는 영역
  • r, x 권한 부여
    • 프로그램이 동작하기 위해

2. 데이터 세그먼트

  • 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수 위치
  • 기본적으로 r 권한 부여
  • w 권한 유무에 따라 분류
    • data 세그먼트 : w 권한이 있는 세그먼트
      • 프로그램이 실행 시 가변적인 데이터들이 위치
      • ex) 전역 변수
    • ro(read only)data 세그먼트 : w 권한이 없는 세그먼트
      • 프로그램 실행 시 값이 변하면 안되는 데이터들이 위치
      • ex) 전역 상수

3. BSS 세그먼트 (Block Started By Symbol)

  • 컴파일 시점에 값이 정해지지 않은 전역 변수가 위치
    • 선언만 하고 초기화 하지 않은 전역 변수
    • 프로그램 시작 시 모두 0으로 초기화
  • r, w 권한 부여

4. 스택 세그먼트

  • 프로세스의 스택이 위치
  • 임시 변수들이 실행 중 저장
    • 함수의 인자, 지역변수
  • 스택 프레임의 단위로 사용
    • 함수 호출 시 생성 반환 시 해제
  • 스택은 기존보다 낮은 주소로 확장
    • 사용자의 입력 등 여러 요인에 영향을 받으므로
  • r, w 권한 부여

5. 힙 세그먼트

  • 힙 데이터가 위치
  • 실행 중 동적 할당 (=스택)
  • 스택 세그먼트와 반대 방향으로 확장
  • r, w 권한 부여
  • malloc() calloc() 등 호출시 힙 세그먼트에 메모리가 위치
profile
보안 공부하는 대학교 4학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글