본문 바로가기

study/OS&System Security

취약점에 대한 이해

728x90

 

* 버그 VS 취약점 VS 익스플로잇 

- 버그: 개발자가 의도하지않은 결과

- 취약점: 버그 중에서 보안상의 문제들

- 익스플로잇: 취약점 공격

 

1. 취약점과 익스플로잇

취약점(Vulnerability)이 발생하는 이유: 프로그램은 사람이 만드는데, 개발자가 프로그램 개발 시 실수를 하기 때문이다. 

- 취약점을 연구하는 목적은 판매, 명예, 공부, 불법행위, 군사목적 등 다양하다. 

- 취약점이 발견되고 패치가 발표되기 전까지의 기간에 이뤄지는 공격을 "0-day(제로데이)"라고 한다.

 

이러한 취약점을 이용해서 원하는 코드를 실행하거나 특정 목적을 달성하는 공격 코드를 익스플로잇(exploit)이라고 부른다. 

 

<제로데이/원데이 차이 링크 삽입 

 

2. 취약점 유형

취약점들을 관리하기위해 대표적으로 CVE(미국), KVE(한국)가 있다. 

CVE는 공개적으로 알려진 컴퓨터 보안 결함 목록이며, 전문가들이 취약점들에 우선순위를 지정하고 해결하기위해 관리되는 목록이다. 

 

- DoS(서비스 거부 공격)

보안의 3요소(기밀성, 무결성, 가용성) 중 가용성을 침해하는 행위로, 서비스를 정상적으로 운영하지못하도록 만든다.

 

- Code Execution(코드실행)

운영체제에 있는 명령어 해석기(cmd.exe, /bin/sh)를 통해 특정 명령어를 실행할 수 있는 공격이다.

보통 RCE(remote code execution, 원격코드실행) 이라고 부른다. 

 

- Overflow(오버플로우 취약점)

공격자가 할당된 메모리 바운더리를 벗어나서 임의의 메모리에 접근할 수 있는 취약점이다. 

보통 오버플로우 취약점을 이용해서 코드 실행 또는 DoS, 정보 획득 등이 이루어진다. 

 

- Memory Corruption(메모리 오염)

공격자는 메모리오염 취약점을 이요해서 공격자가 원하는 명령어를 참조하도록 할 수 있다. 

 

- Gain Information

시스템 경로 정보, 어플리케이션 버전 정보 등 공격자에게 유리한 정보가 노출되는 취약점이다. 

 

- Gain Privileges

리눅스/유닉스에서 일반 사용자 권한> root(최고 관리자) 권한으로 올라갈 수 있는 취약점이다. 

 

<웹 취약점>

- SQL injection 

SQL query문에 임의의 공격 코드를 삽입하여 공격자가 원하는 sql 구문을 실행한다. 

이 취약점으로 웹 페이지 로그인 우회, 다른 테이블 내용 열람 등이 가능해진다. 

 

- XSS: cross site scripting

웹 사이트에 공격자가 악의적인 스크립트를 삽입하여 사용자 쿠키/세션을 탈취하거나, 사용자를 다른 사이트로 강제이동시키는 등 다양한 스크립트 태그를 통해 웹 사이트 사용자를 공격한다. 

 

- Directiory traversal (디렉터리 탐색 취약점)

웹 사이트에서 정상적으로 접근하기 어려운 시스템 내부에 있는 설정 파일, 웹 소스 파일들을 강제로 내려받을 수 있는 취약점이다.  

 

- HTTP Response Splitting(HTTP응답 분할)

HTTP request에 있는 매개변수가 HTTP response에 포함되어 출력되는 경우, 매개변수 내 개행몬자를 넣어 응답을 분할한다. 이를 통해 응답 메시지를 조작할 수 있어 악의적인 코드 삽입이 가능해진다. > XSS공격 가능

 

- Bypass something

사용자 인증 우회와 같은 시스템에서 구현된 통제를 우회하는 취약점이다.

 

- CSRF: cross site request forgery 크로스 사이트 요청 위조

공격자가 웹 페이지에 악성코드를 삽입, 해당 페이지에 접속하는 사용자에게 임의의 행동을 하도록 유도한다.

 

- File inclusion

로컬 파일 또는 원격지 파일을 불러와서 명령어를 실행한다.

 

3. 취약점에 대한 이해 (shell code)

- Shell: 유닉스/리눅스에서는 /bin/sh 명령어, 윈도우는 cmd.exe 로 실행된다. 

- Shell Code : shell을 실행하는 기계어 코드이다. execve("/bin/sh", NULL, NULL)함수. 

 

4. exploit 정보 

익스플로잇 공개 사이트 : http://exploit-db.com

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

 

728x90
반응형

'study > OS&System Security' 카테고리의 다른 글

1-2. 리눅스 시스템, bash shell  (0) 2020.10.11
1. 리눅스 시스템  (0) 2020.10.11
시스템 보안이란?  (0) 2020.10.05
윈도우 시스템  (0) 2020.09.16
[리눅스 서버 보안]  (2) 2019.10.09