선릉역 1번 출구

System Hacking - Memory Layout 본문

Hacking & Security/Hacking

System Hacking - Memory Layout

choideu 2022. 12. 22. 23:09

환경 설정

http://old-releases.ubuntu.com/releases/18.04.1/ubuntu-18.04.1-desktop-amd64.iso

해당 페이지에서 Ubuntu-18.04.iso 파일 다운 후 VMware에 설치하기

 


컴퓨터 = CPU + 메모리(RAM) + 보조메모리(SSD)

CPU: 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고, ISA(instruction set architecture)에 따라 처리하고 연산의 결과를 다시 메모리에 적재

-> 결론: CPU의 동작과 메모리 사이에 밀접한 연관이 있음

 

if) 공격자가 메모리를 악의적으로 조작할 수 있다면?

조작된 메모리 값에 의해 CPU도 잘못된 동작이 가능함 -> 메모리를 오염시키는 취약점을 메모리 오염(Memory Corruption) 취약점이라고 부름

  • Stack Buffer Overflow
  • Off by One
  • Format String Bug
  • Double Free Bug
  • Use After Free

 

메모리

  • 코드 세그먼트
  • 데이터 세그먼트
  • BSS 세그먼트
  • 힙 세그먼트
  • 스택 세그먼트

출처: https://learn.dreamhack.io/52#4

1. 코드 세그먼트

실행 가능한 기계 코드가 위치하는 영역

프로그램이 동작하려면 코드를 실행할 수 있어야 하므로, 이 세그먼트에는 읽기 권한과 실행 권한이 부여됨

쓰기 권한의 경우 공격자가 악용할 가능성이 높아 현대 OS는 이 세그먼트에 쓰기 권한을 제거함

ex) c언어 컴파일 -> 어셈블리 -> 기계어로 변환되는데, 기계 코드가 코드 세그먼트에 위치하게 됨

 

2. 데이터 세그먼트

컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치함

CPU가 이 세그먼트의 데이터를 읽을 수 있어야하기 때문에 읽기 권한이 부여됨

쓰기 가능한 영역과 쓰기 불가능한 영역이 나눠짐

  • 쓰기 가능한 영역(=data segment): 프로그램이 실행되면서 값이 변하면 안되는 데이터
  • 쓰기 불가능한 영역(=rodata_read-only data): 전역 변수과 같이 프로그램이 실행되면서 값이 변할 수 있는 데이터

3. BSS 세그먼트(block started by symbol segment)

컴파일 시점에 값이 정해지지 않은 전역 변수가 위치, 이 세그먼트의 메모리 영역은 프로그램이 시작될 때 모두 0으로 값이 초기화됨

*이런 특성으로 인해 C 코드를 작성할 때 초기화되지 않은 전역 변수의 값은 0이 됨

*개발자가 선언만하고 초기화하지 않은 전역변수가 포함됨

읽기 권한 및 쓰기 권한이 부여됨

int bss_data; //초기화되지 않은 전역 변수

 

4. 스택 세그먼트

프로세스의 스택이 위치하는 영역

함수의 인자나, 지역 변수와  같은 임시 변수들이 실행중에 저장됨

스택 세그먼트는 스택 프레임이라는 단위로 사용(함수 호출 시 생성, 반환 시 해제)

CPU가 자유롭게 값을 읽고, 쓸 수 있어야 하므로 읽기와 쓰기 권한이 부여됨

 

5. 힙 세그먼트

힙 데이터가 위치하는 영역

스택과 마찬가지로 실행중에 동적으로 할당될 수 있음

malloc(), calloc()을 호출해서 할당받는 메모리가 이 세그먼트에 위치하게 됨

일반적으로 읽기와 쓰기 권한이 부여됨

'Hacking & Security > Hacking' 카테고리의 다른 글

System Hacking - gdb  (1) 2022.12.25
System Hacking - Computer Architecture  (0) 2022.12.24
Cobalt Strike란?  (0) 2022.12.22
[DVWA] CSRF  (0) 2022.11.30
[DVWA] Burp Suite를 사용한 Brute Force  (0) 2022.11.30
Comments