Network

[운영체제 취약점 이해 및 대응] 운영체제에 대한 이해

D4tai1 2019. 8. 29.

1. 운영체제에 대한 이해

1)  운영체제

 [1] 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원 (메모리, 프로세서, 입출력 장치, 정보, 네트워크 등)을 효율적으로 관리할 수  있도록 하는 프로그램의 집합입니다.

 [2] 악성코드는 운영체제의 취약점을 이용해서 공격할 수도 있습니다.

 

2) 운영체제 기능

 [1] UCI = User Command Interface(사용자 명령 인터페이스)

 [2]메모리 관리 (Memory Management)

  ▶ 프로그램을 실행할 때 프로그램 코드와 데이터를 저장하고 처리하기 위한 메모리 필요

  ▶ 프로그램의 메모리 요청에 대한 적합성 검증하고 메모리를 할당

  ▶ 할당된 메모리를 다른 프로그램이 접근하지 못하게 관리하고 보호, 사용 종료 후 회수

  ▶ 운영체제/시스템 해킹 할 때 메모리 관련 취약점을 매우 많이 이용함

 

※ 회사에 있는 내부 시스템을 장악했다면 내부 구성도를 알아야하고, 그러기 위해서는 ping을 때려야하고 1~254까지 때릴 수는 없으므로 스크립트로 만들어야 효율적입니다. 

언어를 사용할 수 있는 프로그램을 설치할 수는 없으므로 스크립트를 사용합니다.

 

※ 컨설턴트로 갔을 때

내부관리자는 보통 자신의 취약점을 알고 있습니다.

컨설턴트 입장에서 취약점이 하나도 나오지 않는 경우 보고하기 힘들수도 있고 

그래서 담당자와 잘 지내느 것이 중요하지요. 

취약점이 100개넘게 나온다고 100개 다 보고하면 경영진입장에서는 우리회사 보안담당자는 하는일이없나 이런식으로

할 수 있기 때문에 서로 협조를 하는 것이 좋습니다.

정책에 의해서 열린 것도 있으므로 ㅎ

 

 [3] 프로세스 관리 (Processor Management) 

  ▶ 악성코드는 프로그램의 취약점을 이용하고 그러기 때문에 인스트럭션을 이해하고 프로그램 구동의 원리를 이해하는 것이 중요

  ▶ 프로세서(CPU)가 프로그램을 실행하는 과정에서 프로그램 코드가 단계적으로 수행

  ▶ 프로그램 코드를 구성하는 명령어(인스트럭션, Instruction)을 체계적이고 효율적으로 실행되도록 작업 스케줄링(Job scheduling) 관리

 

 [4] 장치 관리 (Device Management) 

  ▶ 모니터, 키보드, 프린트, 하드 디스크, 네트워크 랜카드 등 시스템 내의 모든 장치 (Device)를 프로그램에 할당하거나 회수하는 기능 

  ▶ 하드웨어 취약점을 이용한 방법은 보통 커널구역에서 발생하고, 커널부분의 취약점은 크리티컬하기 때문에 문제가 크게 발생할 수 있음

 

 [5] 파일 관리 (File Management)

  ▶ 시스템 내의 파일과, 폴더에 사용자 별 접근 권한을 부여하고, 접근 권한에 따라 파일을 읽거나, 쓰거나, 실행할 수 있는 기능을 관리

  ▶ 공격자가 사용자 명령 인터페이스 기능을 획득하면, 파일 관리 기능을 통해 중요 파일을 열람하여 정보를 탈취해 나감.

  ▶ 유닉스/리눅스 계열과 같이 Multi-User 시스템이 기본인 경우에는 파일 관리가 잘못되었 을 경우, 일반 사용자가 중요 파일에 접근할 수 있는 등 접근 통제 취약점이 발생함.  
 

※ 나만의 운영체제를 만드는 것도 실력향상에 좋습니다.

모든 것을 구현하지는 못하더라도 어느정도의 기능은 구현하는 것도 좋지요.

 

 취약점이 Windows가 많은 이유는 Windows가 문제가 많은 것보다 많은 사람들이 쓰기 때문에 공격자들이 맥OS보다 Windows를 타겟으로 잡습니다.

 

 홈 IOT기기(임베디드)는 표준이 다르기 때문에 취약점도 다를 수 밖에 없지요.

예를 들어 프로토콜도 다 다르고 삼성꺼랑 LG꺼랑 통신도 되지 않습니다.

 

 데스트톱버전과 서버버전이 나누어진 이유는 데스크톱은 유저인터페이스를 좋게하기위해 돌아가는 서비스가 많습니다.

그러나 서버는 친절하지도 않고 서비스에 특화되었기 때문에 OS의 성능을 올리기 때문에 조금 더 안전합니다.

 

 앞으로는 우리소프트웨어를 구매하면 컴퓨터를 드립니다?

그만큼 하드웨어에 대한 가치가 낮아지고 있습니다.

소프트웨어의 가치는 올라가구요.

 

4) 시스템과 프로그램에 대한 이해: CPU와 메모리

 [1] CPU 

  ▶ 간단하게 0과 1을 입력받아서 처리

 

 [2] Memory

  ▶ 프로그램을 메모리에 적재합니다.

 

※ 요즘 다 64비트인데 32비트를 하는 이유?

오래된 것은 32비트인 것도 있으므로 다 알아야 합니다.

 

 32비트 운영체제인지, 64비트 운영체제인지 확인?

명령어를 사용해서 확인할 수 있습니다.

마우스로 할 수 있지만 스크립트로 처리할 수 있습니다.

알아야 하는 이유는..? 프로그램 설치할 때 32비트인지 64비트인지 알아야하죠?

 

 CTF와 현실에서 취약점을 찾는 것과는?

CTF를 잘한다고 실무를 잘하는 것은 아니지만 그래도 CTF를 하면 시야의 폭이 넓어집니다.

또한 CTF는 순위를 가려야하기 때문에 실제취약점을 찾는 것보다 어려운 경우가 많습니다.

 

 

 

2. 취약점에 대한 이해

1) 취약점과 익스플로잇

 [1] 취약점 : Vulnerability

  ▶ 취약점이란 사용자에게 허용된 권한 이상의 동작이나 정보 열람을 가능하게 하는 설 계상의 허점이나 결함을 말함.

  ▶ 취약점이 발생하는 이유: 프로그램은 사람이 만드는데, 개발자가 프로그램 개발 시 실 수를 하기 때문. 수백, 수천 명 이상이 검토하고 검토한 윈도우 및 리눅스도 여전히 취 약점이 발견되고 있음 
  ▶ 취약점을 연구하는 목적: 판매, 명예와 공부(돈벌려고), 불법적인 행위(돈벌려고), 군사적인 목적(돈벌려고)  


 [2] 익스플로잇 : Exploit

  ▶ 일반적으로 취약점이 발견되면 해당 취약점을 공격하여 원하는 코드를 실행하거나 특 정 목적을 달성하는 공격코드 또한 개발됨. 이런 공격코드를 Exploit(익스플로잇)이라고 부름   

  ▶ 취약점이 발견되고 패치가 이뤄지기 전까지 기간에 이뤄지는 공격을 “0-day(제로 데이) 공격” 이라고 함. 

  ▶ 원데이는 패치가 나왔으나 적용하기 전까지의 기간을 말하지요.

  ▶ 제로데이는 소수만 쓰지만 원데이는 많은 사람이 쓸 수 있기 때문에 원데이가 더 위험합니다.

  ▶ 업데이트가 나왔더라도 적용했다가 사내에 문제가 발생할 경우 손실이 크기 때문에 업데이트에 신중합니다.

  ▶ 침해사고사례를 알아놓으면 좋습니다.

 

https://www.cvedetails.com/

 

CVE security vulnerability database. Security vulnerabilities, exploits, references and more

www.cvedetails.com provides an easy to use web interface to CVE vulnerability data. You can browse for vendors, products and versions and view cve entries, vulnerabilities, related to them. You can view statistics about vendors, products and versions of pr

www.cvedetails.com

2) 취약점 유형

 [1] DoS(서비스 거부 공격)

  ▶ 일반적으로 네트워크 공격으로 알고 있지만 서비스를 실행하지 못하게(가용성을 파괴) 한다면 서비스 거부공격입니다.

   결국 프로그램의 취약점을 이용해서 서비스를 끌 경우에도 서비스거부공격입니다.

   예전에는 원래 느렸지만 요새는 속도가 빠르기 때문에 가용성에 민감하지요.

   네이버가 1분만 죽더라도 소송에 휘말릴 수 있습니다.

   DDOS는 불법도박사이트에서 많이 합니다. 

   경쟁업체를 죽이기 위해 해커에게 메일을 보내서...

 

 [2] Code Execution (코드 실행)

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

   보통 RCE(Remote Code Execution, 원격 코드 실행)으로 많이 불리기도 함.   
 
 [3] Overflow (오버플로우 취약점)

   프로그래머가 메모리 경계 값을 검사하지 않아, 공격자가 할당된 메모리 바운더리를 벗어나서 임의의 메모리에 접근할 수 있는 취약점

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

  ▶ Code Execution이랑 따로 분리한 이유는 취약점은 있지만 아직 코드를 실행하지는 못하는 것을 말합니다.
 
 [4] Memory Corruption (메모리 오염)

   메모리 관련 취약점으로, 메모리를 참조하는 부분에서 오류가 발생하는 취약점

   공격자는 메모리 오염 취약점을 이용해서 공격자가 원하는 명령어를 참조하도록 할 수 있음.  
 
 [5] Gain Information (정보 수집)

   시스템 정보나, 애플리케이션 정보 등 공격자에게 유리한 정보가 노출되는 취약점

   대표적인 경우로, 어플리케이션 버전 정보나, 시스템 경로 정보 등이 노출되는 것.   
 
 [6] Gain Privileges (권한 상승)

   낮은 권한을 가진 계정에서 높은 권한을 가진 계정으로 올라갈 수 있는 취약점

   대표적으로 리눅스/유닉스에서 일반 사용자 권한에서 root(최고 관리자) 권한으 로 올라갈 수 있는 취약점 
 
 [7] SQL Injection

SQL 쿼리문에 임의의 공격 코드를 삽입하여, 공격자가 원하는 SQL 구문을 실행 할 수 있는 취약점 –이 취약점으로 웹 페이지 로그인 우회, 다른 테이블 내용 열람 등이 가능함 
 
 [8] XSS : Cross Site Scripting (크로스 사이트 스크립팅)

   웹 사이트에 공격자가 악의적인 스크립트를 삽입하여, 사용자 쿠키/세션을 탈취하 거나, 사용자를 다른 사이트로 강제로 이동 시키는 등, 다양한 스크립트 태그를 통 해 웹 사이트 사용자를 공격하는 취약점.   
 
 [9] Directory Traversal (디렉터리 탐색 취약점)

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

 

 [10]HTTP Response Splitting : HTTP 응답 분할

   HTTP Request에 있는 매개변수가 HTTP Response에 포함되어 출력되는 경우, 매개변수 내 개행문자

   (CR: Carriage Return=%0D, LF: Line Feed=%0A)를 넣어서 응답을 분할함. 

   응답 메시지를 조작할 수 있어 악의적인 코드를 삽입하여 XSS 공격 등이 가능함.  
 
 [11] Bypass something

   사용자 인증 우회와 같은 시스템에서 구현된 통제를 우회하는 취약점.   
 
 [12] CSRF : Cross Site Request Forgery (크로스사이트 요청 위조)

   공격자가 웹 페이지에 악성코드를 삽입하여, 해당 페이지에 접속하는 사용자에게 임의의 행동을 하도록 유도하는 공격 
 
 [13] File Inclusion : 파일 포함

   로컬 파일 또는 원격지 파일을 불러와서 명령어를 실행할 수 있는 취약점 

 

 [14] 

https://www.exploit-db.com

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

[그림1] exploit-db.com에서 search EDB 

   Buffer overflow 취약점이고 D는 다운로드고, A는 취약한 어플리케이션, V에 체크된 것은 검증된 것을 말합니다.

 

 

3. 윈도우 시스템의 이해 및 보안

 

4. 리눅스/유닉스 시스템의 이해 및 보안

 

5. 윈도우 OS 취약점을 악용한 공격 사례

 

 

'Network' 카테고리의 다른 글

침해사고 접수처리 계획 수립  (0) 2019.08.22

댓글