맨땅에 코딩
취약점 분석 - 컴퓨터 구조 II 본문
*화이트햇 스쿨 2기에서 이수한 이론교육 내용을 바탕으로 작성되었습니다.
1. 컴퓨터의 기본 구조
컴퓨터 언어
- 단위와 용어
1. Human language(C)
2. Assembly
3. byte
4. bit (Binary)
- 컴퓨터가 이해할 수 있는 언어 체계가 있음
- 번역기가 필요함
- 외국어 배우듯이 배우면 됨
어셈블리 언어 기초
- 사람이 해석할 수 있는 가장 낮은 수준의 컴퓨터 언어
- 내 프로그램을 컴퓨터가 처리하는 수준으로 해석
- 번역이 필요함
API
- 컴퓨터나 컴퓨터 프로그램 사이의 연결
- 내가 구현하지 않아도 기능을 사용할 수 있음
- 대신 서로 잘 알려줘야 함
컴파일과 링킹
- 소스코드를 기계어로 만듦
- 기계어들을 잘 연결함
- 외부 코드도 잘 연결함
2. 컴퓨터 메모리 구조
포인터
- 메모리 공간마다 주소가 있음
- 메모리 공간에 값이 들어감
- 메모리 공간 주소를 담고 있는 것이 포인터
스택
- 지역 변수를 사용할 때 메모리는 스택 구조를 사용함
- 스택은 First In, Last Out 구조임
- push와 pop을 이용해서 스택에서 넣고 뺌
스택 프레임
- 변수를 할당하고 함수로 넘길 때 스택을 사용함
- 변수를 관리하기 위해 스택 프레임을 사용함
- 스택에 함수를 호출한 뒤 돌아올 주소도 저장함
함수 호출 규약
- cdecl
- 함수 밖에서 스택을 정리
- 사용자 함수
- stdcall
- 함수 안에서 스택을 정리하고 리턴
- Win32 API
- fastcall
- 함수 안에서 스택을 정리
- 스택이 아닌 레지스터로 파라미터 전달
- 64bit 시스템
- 함수를 호출할 때 약속이 있음
- 데이터를 전달하고 메모리 공간을 만들 때 어떻게 할지에 대한 약속임
- 주로 데이터 흐름에서 취약점이 발생하기 때문에 잘 알아두면 좋음
가상 메모리
- 프로그램 마다 가상 메모리가 있음
- 사용자가 고민하지 않아도 되어서 편리함
- 메모리를 할당하는 규칙이 있음
시스템 해킹 기초
- 소프트웨어 보안 취약점
- Stack Based Buffer Overflow
- Heap Based Buffer Overflow
- Integer Overflow
- Format String Bug
- User After Free
- Double Free
- Race Condition
- 버그를 이용해서 시스템 해킹을 함
- 경계를 넘어 넘치게 되어 오버플로우가 발생함
- 프로그램 흐름을 바꿀 수 있음
'화이트햇 스쿨 2기 > 이론교육' 카테고리의 다른 글
침해대응/위협/포렌식 - 리버스 엔지니어링 (0) | 2025.02.13 |
---|---|
취약점 분석 - 시스템 해킹 원리 (0) | 2025.02.13 |
취약점 분석 - 어셈블리 언어 (0) | 2025.02.13 |
취약점 분석 - 웹해킹 원리 (0) | 2025.01.29 |
공통 - 최신 보안 동향 (0) | 2025.01.14 |