본문 바로가기
해킹/시스템해킹

시스템 해킹 기초

by 맑은청이 2020. 8. 1.
728x90
반응형

취약점의 분류 

익스플로잇이란 사전적으로 악용, 취약점을 이용해 공격자가 의도한 동작을 수행하게 하는 코드 혹은 이를 이용한 공격 행위를 의미

 

소프트웨어 버그(Bug) : 프로그래머가 의도하지 않은 동작을 수행

 

소프트웨어 취약점(Vulnerablility) : 소프트웨어 버그 중 보안에 영향을 미칠 수 있는 버그 

 

익스플로잇 가능한 취약점(Exploitable) : 소프트웨어 취약점 중 공격자가 의도한 동작을 수행할 수 있는 버그

그러나 익스플로잇이 가능하다고 해서 익스플로잇을 항상 안정적으로 성공할 수 있지는 않음.

보안 취약점에서 익스플로잇 확률은 위험성을 평가하는 중요한 요소 중 하나, 이게 높을수록 무기화 되어 사용하기 유용, 공격 탐지될 확률 줄어듦.

 

안정적으로 익스플로잇 가능한 취약점(Reliably Exploitable Vulnerability) : 매우 높은 확률로 공격에 성공할 수 있는 버그

 

 

Attack Vector : 공격자가 소프트웨어와 상호 작용할 수 있는 곳

Attack Surface : Attack Vector 들의 집합

 

unreachable code 영역에 심각한 보안 취약점이 있더라도 보안 취약점이라고 할 수 없음

 

 

 

취약점의 종류 

메모리 커렵션 취약점 

저수준 언어에서 메모리 조작해 공격하는 메모리 커럽션 취약점 메모리를 조작할 필요 없이 공격할 수 있는 로지컬 취약점  

 

- Buffer Overflow(BOF)

- Out-Of-Boundary(OOB)

- Off-by-one

- Format String Bug(FSB)

- Double Free/Use-After-Free(UAF)

- etc

 

 

Buffer Overflow(BOF)

: 메모리 커럽션 취약점 중 가장 대표적인 취약점,

프로그래머가 할당한 크기의 버퍼보다 큰 데이터 입력을 받아 메모리의 다른 영역을 오염시킬 수 있음

 

Out-Of-Boundary (OOB)

: 버퍼의 길이 범위를 벗어나는 곳의 데이터에 접근할 수 있는 취약점

브라우저와 같은 대규모 최신 소프트웨어에서도 자주 발견되는 취약점

 

Off-by-one

: 경계검사에서 하나! 더 많은 값을 쓸 수 있을 때 발생하는 취약점

32바이트 크기의 버퍼에 인덱스 32로 접근, 반복문 순회 때 자주 발생

 

Format String Bug (FSB)

: printf같은 포맷 스트링 문자열을 올바르게 사용하지 못해 발생하는 취약점

최신 컴파일러로 잘 발생하지 않게 됨

 

Double Free/ Use-After-Free

: 동적 할당된 메모리를 정확히 관리하지 못했을 때 발생하는 취약점

이미 해제된 메모리 다시 해제, 해제된 메모리에 접근해 사용

 

 

로지컬 버그 취약점

메모리 커럽션 취약점과 달리 메모리 구조를 이용해 공격할 필요가 없음.

익스플로잇 작성이 상대적으로 간단.

 

- Command Injection

- Race Condition 

- Path Traversal

- etc

 

 

Command Injection

: 사용자의 입력을 셸에 전달해 실행할 때 정확한 검사를 실행하지 않아 발생하는 취약점

익스플로잇 안 어려움

 

Race Condition

: 여러 스레드나 프로세스의 자원 관리를 정확히 수행하지 못해 데이터가 오염

메모리 커럽션 취약점 또는 로지컬 취약점

 

Path Traversal

: 프로그래머가 가정한 디렉토리를 벗어나 외부에 존재하는 파일에 접근할 수 있는 취약점

"../"와 같은 경로 문자 검사 안해서 발생

 

 

보호기법 (Mitigation) 을 통해 이러한 취약점을 방어

728x90
반응형