1강 시스템 해킹이란?
1.1
해킹 : 컴퓨터의 하드웨어, 소프트웨어, 네트워크, 웹사이트 등 각종 정보 체계서 주어진 권한 이상을 얻거나 의도치 않은 동작을 일으키는 행위를 의미 (컴퓨터 보안)
- 엄연히 논리와 규칙을 따르며, 그 원리를 살펴본다면 이해 가능
- 단순히 규칙을 창조적으로 활용해 의도치 않은 결과를 얻어내는 일련의 행위
분류
- 웹 사이트를 공격하는 웹 해킹
- 컴퓨터와 컴퓨터가 연결되는 네트워크를 공격하는 네트워크 해킹
- 프로그램의 약점을 공격하는 시스템 해킹 등
1.2
소프트웨어 버그 :프로그램이 잘못된 결과를 내거나, 오류를 발생하는 등 의도치 않은 동작을 수행하게 되는 문제
- 프로그래머가 의도하지 않은 동작을 수행하는 소프트웨어 버그(Bug)가 가장 상위
- 보안에 영향을 미치는 버그를 소프트웨어 취약점(Vulnerability)
소프트웨어 취약점 : 공격자가 주어진 권한 이상을 획득하거나 프로그래머가 의도하지 않은 동작을 수행할 수 있도록 하는 소프트웨어 버그
익스플로잇 가능 취약점(Exploitable Vulnerability) : 소프트웨어 취약점을 이용해 공격자가 의도한 동작을 수행할 수 있는 버그
익스플로잇(악용) : 취약점을 이용해 공격자가 의도한 동작을 수행하게 하는 코드 혹은 이를 이용한 공격 행위
(안정적으로) 익스플로잇 가능한 취약점(Reliably Exploitable Vulnerability) : 익스가 가능한 취약점 중 높은 확률로 공격에 성공할 수 있는 버그
Attack Vector(공격 벡터) : 소프트웨어와 공격자가 상호 작용(사용자의 입력 등)에서 소프트웨어 취약점의 발생 장소
- 이러한 집합을 Attack Surface
취약점
- C와 같은 저수준 언어에서 메모리를 조작해 공격하는 메모리 커럽션 취약점
- Buffer Overflow(BOF) : 프로그래머가 할당한 크기의 버퍼보다 더 큰 데이터를 입력받아 메모리의 다른 영역을 오염시킬 수 있는 취약점
- Out-Of-Boundary(OOB) : 버퍼의 길이 범위를 벗어나는 곳의 데이터에 접근할 수 있는 취약점
- Off-by-one : 경계 검사에서 하나 더 많은 값을 쓸 수 있을 때 발생하는 취약점
- Format String Bug(FSB) : printf나 sprintf와 같은 함수에서 포맷 스트링 문자열을 올바르게 사용하지 못했을 때 발생하는 취약점
- Double Free / Use-After-Free(UAF) : 동적 할당된 메모리를 정확히 관리하지 못했을 때 발생하는 취약점
- Double Free : 이미 해제된 메모리를 다시 한번 해제하려 하는 것
- Use-After-Free : 해제된 메모리에 접근해 이를 사용하려 하는 것
- 메모리 조작 필요 없이 공격할 수 있는 로지컬 취약점
- Command Injection : 사용자의 입력을 셸에 전달해 실행할 때 정확한 검사를 실행하지 않아 발생하는 취약점
- Race Condition (보안 취약점으로서) : 여러 스레드나 프로세스의 자원 관리를 정확히 수행하지 못해 발생하는 취약점 (발생 원인과 공격 방법에 따라 메모리 커럽션 취약점 될 수 있음)
- Path Traversal : 프로그래머가 가정한 디렉토리를 벗어나 외부에 존재하는 파일에 접근할 수 있는 취약점(주로 "../" 등의 경로 문자를 검사하지 않아 발생)
1.3
보호기법(Mitigation)으로 취약점을 통한 공격을 어렵게 만든다.
ex) 스택 버퍼 오버플로우에 대한 보호기법 중 하나인
Stack Smashing Protectort(SSP) : 버퍼 뒤에 랜덤한 값을 넣어두고, 값을 특정 시점에 검사해 버퍼 오버플로우가 발생하는지 탐지
→ 이로 인해 공격자는 프로그램에서 버퍼 오버플로우 취약점을 발견해도 공격하기 어려움
'공부 > 보안' 카테고리의 다른 글
[dreamhack] System Exploitation 3강 (0) | 2021.03.07 |
---|---|
나 보려고 정리해두는 gdb 명령어 (0) | 2021.03.07 |
[dreamhack] System Exploitation 2강 (0) | 2021.03.06 |
[pwnable.kr] - collision (0) | 2021.03.01 |
[pwnable.kr] fd (0) | 2021.02.26 |