'시스템'에 해당되는 글 4건

  1. 2010.02.17 SystemExplorer 이용한 윈도우 서버 성능 측정 (1)
  2. 2009.08.06 공개 시스템 모니터링 툴 zabbix
  3. 2009.07.21 해커의 수준 및 해킹 기법 분류
2010.02.17 13:01

SystemExplorer 이용한 윈도우 서버 성능 측정


작성자 : 넥스트라인 고객기술지원부 지국현 주임
작성일 : 2009년 6월 29일

* 해당 문서는 windows 2003 standard 를 기본으로 작성하였습니다.
이 프로그램은 서버 시스템을 전반적인 부분에서 분석하고 모니터링하기 위한 툴입니다.
시스템에 리소스 상태나 프로세스들에 대한 매우 자세한 사항들은 침해사고시에 매우 유용하게 사용될수
있습니다. 그러나, 너무나도 많은 기능과 정보량으로 분석이 어려울수도 있으므로,
가급적 중요한 리소스부분과 프로세스, 서비스부분을 위주로 살펴보시면 어렵지 않게 시스템 분석이
가능합니다.

첨부된 파일 SystemExplorerSetup.exe (2.0.9) 의 프로그램을 서버상에 설치합니다.
설치는 디폴트로 설치하시면 됩니다.

* 위의 버전 말고 다른 버전을 설치하여 사용하시려면 아래의 홈페이지를이용하시면 됩니다.
http://systemexplorer.mistergroup.org/

* System Explorer 프로그램은 윈도우 자체에서 지원하는 [작업관리자]보다 더많은 기능을 지원하므로
서버상의 부하량, 현재 가동되고있는 프로그램 등을 확인하기가 더욱 쉬우며 모니터링하실 경우에도
유용하게 사용 하실 수 있습니다.

- 많은 기능이 있으나 기본적으로 서버 운영상에 사용되는 기능을 나열한 것입니다.

* 설치를 완료하시면 System Explorer 아이콘이 바탕화면에 생성됩니다.
해당 아이콘을 실행시키면 아래와 같은 창이 올라오는데 한글모드로 전환합니다.


아래와 같이 한글모드로 다시 실행이 이루어 집니다.

1. 서버 상의 전체적인 CPU및 메모리 사용량을 체크하시려면 [모니터링]-[성능]에서 확인할 수
있으며 아래의 그림과 같이 현재 물리적인 메모리가 대략적으로 261M이며 149M정도를 사용중인
것을 확인 하실 수 있습니다.
(서버상의 부하가 있는지 먼저 확인하실 때 사용하시면 됩니다.)

2. 어떤 프로세서에서 부하가 걸리는지 자세히 확인하시려면 [모니터링]-[프로세서]에서
확인 하실 수 있습니다.
(CPU및 메모리 사용량을 확인하실 수 있습니다.)

3. 해당 프로세서를 클리하시면 아래의 그림과 같이 실행 파일이 어느 경로에서 실행이
이루어지고 있는지 자세하게 표시가 이루어지며 해당 프로세서 마우스 우클릭하시면
의심가는 프로세스의 보안상태를 확인하실 수가 있습니다.
- 참고사항으로 현재의 창에서 해당프로세서 선택후 마우스 우클릭을 하시면 [작업관리자]
와 같이 해당 프로세서를 종료 또는 시작, 재가동을 할 수 있지만 잘못 종료하시게되면 서버가
다운 될 수 있으니 이점 참고하여 주시기 바랍니다.

4. 전체적으로 서비스되고 있는 프로세스 및 부팅시 자동으로 가동이 이루어지는지를 자세히
확인하시려면 [자동실행]-[서비스]에서 확인 하실 수 있으며 [모니터링]-[프로세서]와
달리 홈페이지 운영시 사용되는 인터넷 정보서비스 관리, 윈도우 미디어, ms-sql 데몬 등을 확인
하실 수 있습니다.
(위의 [모니터링]-[프로세서]의 기능과 같이 해당 프로세서를 클릭하시면 실행 파일이 어느 경로에서
실행이 이루어지고 있는지 자세하게 표시가 이루어 집니다.)

6. 위의 설명과 같이 [내컴퓨터]-[속성]-[관리]-[서비스] 으로 번거롭게 들어가지 않아도
시스템 익스플로어 프로그램에서 확인 하실 수 있으며 아래의 그림과 같이 [관리도구]기능이
있어 시스템 익스플로어에서 직접 작동하시어 확인하실 수 있습니다.

서버상의 부하가 많이 일어나거나 어느 데몬에서 많은 부하가 일어나고 있는지 확인하시려면
위의 설명을 참조하여 확인하여 보시기 바랍니다.

이외에도 시스템상에 설치된 프로그램을 확인 및 제거기능, 서비스 중지 및 시작,
드라이버 제거 및 사용중지 등의 시스템의 관리기능을 이 프로그램에서 대부분을
사용하실 수 있습니다.


출처 : http://nextline.net

Trackback 0 Comment 1
  1. Favicon of http://blog.azki.org 아즈키 2010.02.17 16:32 address edit & del reply

    와. 상당히 좋은 어플이네요.
    게다가 무료라니. 사용해보고 쭉 써야겠네요. 요거 참 좋네요.
    좋은 정보 감사합니다

2009.08.06 17:25

공개 시스템 모니터링 툴 zabbix

목적

  1. 공개 시스템 모니터링 툴은 zabbix를 설치하고 운용한다.
  2. 장점과 단점을 확인한다.
  3. 개선시킬 여지가 있는지 확인한다.
  4. QOS 시스템에 zabbix의 전부, 혹은 일부를 사용할 수 있을 것인가.

설치

소스를 컴파일해서 설치하기로 했다.
zabbix는 snmp를 지원하며, 동시에 독립적인 Agent도 가지고 있다. 이 Agent를 이용하면, SNMP로는 얻기 힘든 자세한 시스템 정보들을 얻어낼 수 있다. 다음과 같은 방식으로 컴파일 했다. agent방식을 사용하며, DB로 mysql를 지원하도록 컴파일했다.
# ./configure --enable-server --enable-agent --with-sqlite3 --with-mysql 
# make 
# sudo make install 

APM 환경 설정

zabbix는 APM 환경을 필요로 한다. 또한 PHP의 경우 다음과 같은 기능을 지원해야 한다.
  • mysql, oracle, postgresql 중 하나
  • gdlib
  • BC math support
yundream은 다음과 같은 옵션으로 php를 컴파일 했다.
./configure --prefix=/usr/local/php  --with-config-file-path=/usr/local/apache/conf \ 
--with-apxs2=/usr/local/apache/bin/apxs --with-charset=utf8 --with-language=korean --enable-sqlite-utf8 \ 
--with-png-dir --with-jpeg-dir --enable-bcmath --with-gd --with-mysql
이외에 zabbix는 다음과 같은 php환경설정을 필요로 한다. php.int를 변경하도록 하자.
max_execution_time = 300 
date.timezone = ROK  

DB 설정

zabbix-1.4.1/create/schema 디렉토리에 zabbix가 사용할 데이터베이스의 schema 가 정의되어 있다. 다음과 같이 mysql를 위한 데이터베이스와 테이블을 생성했다.
# mysql -u root  
mysql> create database zabbix; 
mysql> grant all on zabbix.* to zabbix@localhost identified by '<some password for zabbix>'; 
mysql> flush privileges; 
mysql> quit 

# mysql -u root -p zabbix < mysql.sql 

웹 Frontends 복사

zabbix 디렉토리의 frontends/php 에 웹 인터페이스를 위한 php/html 파일들이 있다. 웹서버가 엑세스할 수 있는 디렉토리로 카피하도록 한다.

setup

APM 환경이 잘 구축되어 있고, php.ini가 제대로 설정되어 있다면, setup에 문제는 발생하지 않을 것이다. 웹서버를 가동시킨뒤에, 페이지에 접근하면 setup과정이 시작된다.

Login

setup이 끝났다면, 웹 인터페이스를 통해서 로그인 할 수 있다. 초기 아이디는 Admin이며 패스워드는 설정되어 있지 않다.



출처 : http://www.joinc.co.kr/modules/moniwiki

Trackback 0 Comment 0
2009.07.21 10:05

해커의 수준 및 해킹 기법 분류


. Wizard 해킹 수행 코드 작성 가능

앞서 언급한 바와 같이 해킹 수행 코드 작성 가능이란 의미는 난이도가 낮은 간단한 취약점을 이용하는 해킹 수행 코드 뿐만 아니라 버퍼 오버플로 공격이나 포맷 스트링 공격 등과 같은 프로그래밍 상의 오류를 이용한 공격과, 각종 프로토콜 상의 문제점을 이용한 해킹 수행 코드를 작성할 수 있는 경우를 의미한다. 이렇게 해킹 수행 코드를 직접 작성하여 해킹할 수 있는 수준의 해커를 Wizard라고 부르도록 한다. 해킹 수행 코드를 작성할 수 있는 수준의 해커는 다음의 2가지 수준으로 나누어 볼 수 있다.

Nemesis - 새로운 취약점을 발견하고 그에 대한 해킹 수행 코드 작성 가능

새로운 취약점을 발견하고 그에 대한 해킹 수행 코드를 만들 수 있는 해커는 최고 수준의 해커라고 볼 수 있다. 이 수준의 해커는 자동화, 에이전트화, 은닉화, 분산화된 해킹 도구를 제작할 수 있는 능력을 가지고 있으며, 시스템에서 수행되는 여러 작업간의 유기적인 문제를 이해하고 있다. 다른 수준의 해커들과 구별되는 가장 큰 특징은 창의적인 생각을 할 수 있고, 문제가 생기면 스스로 해결책을 찾아나갈 수 있는 능력이 있다는 것이다. 이 수준의 해커를 Nemesis라고 부르도록 한다. Nemesis라는 것의 원래 의미는 고대 그리스 신화에 나오는 여신의 이름으로, 악한 짓을 저지르거나 오만한 행동을 하는 인간이나 신을 처벌하는 복수의 여신이다.

Expert - 기존에 발견된 취약점에 대한 해킹 수행 코드 작성 가능

기존에 발견된 취약점에 대한 해킹 수행 코드를 작성할 수 있는 해커는 여러 OS에 대해 각각의 시스템 구조를 자세하게 이해하고 있으며, 복잡한 네트워크 프로그래밍이 가능하고, 시스템에서 제공하는 서비스 및 각종 프로토콜과 프로그램 등의 구조적인 문제를 이해하고 분석할 수 있는 능력이 있다. 이 수준의 해커를 Expert라고 부르도록 한다.

. Guru - 해킹 수행 코드의 수정 사용 가능

발표된 해킹 수행 코드를 수정하여 해킹하고자 하는 시스템에 적용할 수 있고, 이를 통해 해킹 성공률을 높일 수 있는 수준의 해커를 Guru라고 부르도록 한다. 이 수준의 해커들은 이미 발표된 해킹 수행 코드를 해킹하려는 시스템에 적용 가능하도록 수정하여 해킹 성공률을 상당히 높일 수 있는 수준인가, 성공을 위해 해킹 수행 코드를 변경시키더라도 성공확률이 높지 않은 수준인가에 따라 2가지 수준으로 나누어 볼 수 있다.

Experienced Technician - 발표된 Exploit Code 수정으로 해킹 가능 수준

이 수준의 해커는 기 발표된 해킹 수행 코드를 해킹하려는 시스템에 적용되도록 수정하여 해킹에 성공할 수 있는 수준의 해커를 의미한다. 이 수준의 해커는 여러 가지 운영체제에 대한 낮은 수준의 시스템 구조를 이해하고 있으며 각종 프로토콜을 이해하고 있다. 또한 어느 정도 수준의 네트워크 프로그래밍이 가능한 수준으로 해킹 수행 코드자체를 이해하고 각각의 코드들이 어떤 동작을 하는지 알고 있다. 만약 원하는 해킹 대상 시스템에 기존에 발표된 취약점이 존재하고, 이에 대한 해킹 수행 코드가 존재한다면 해킹이 가능하다. 이 수준의 해커를 Experienced Technician이라고 부르도록 한다.

Technician - 발표된 해킹 수행 코드를 수정하더라도 해킹 성공률이 낮은 수준

이 수준의 해커는 해킹하고자 하는 시스템에 해킹 수행 코드를 적용하기 위해 몇 가지 간단한 내용을 수정하지만 해킹 성공 가능성은 매우 희박한 수준이다. 비록 해킹 대상 시스템에 대한 취약점 점검을 통해 어떤 취약점이 있는지 확인하고, 해당 취약점에 대한 해킹 수행 코드를 찾을 수 있는 능력은 있지만, 만약 얻은 해킹 수행 코드가 해킹하려는 시스템에 정확히 일치하는 것이 아니면 해킹에 성공할 확률이 낮은 해커이다. 그러나 이러한 수준의 해커는 일반적인 시스템 프로그래밍이 가능하고 대부분의 해킹기법을 이해하고 있다. 그리고, 시스템 설정과 관련된 간단한 취약점을 이용하여 해킹이 가능하며, 기본적인 시스템 구조를 이해하고 있고, 간단한 네트워크 프로그래밍이 가능한 능력을 가지고 있다. 이러한 수준의 해커를 Technician이라고 부르도록 한다. 해킹 기법을 연구해본 사람은 알 수 있겠지만, 해킹 기법을 이해하는 것과 그 해킹 기법을 이용하여 실제 해킹에 성공하는 것은 크게 다르다.

. Script Kiddie - 해킹 수행 코드 및 해킹 프로그램의 단순 사용

발표된 해킹 수행 코드나 각종 해킹관련 사이트에서 얻을 수 있는 각종 프로그램을 단순히 사용하는 수준의 해커를 말한다. 물론 이 수준의 해커는 해커라고 불리지 않는다. 대부분 크래커라고 불리거나 과거 분류에 따라 스크립트 키디(script kiddie), 혹은 워너비(want to be, wannabe, 해커가 되고 싶은 사람)라고 불린다[4]. 본 문서에서는 이와 같이 이미 알려진 간단한 시스템 설정 문제나 소프트웨어 자체의 취약점을 이용하거나, 기 발표된 해킹 프로그램을 아무런 수정 없이 사용하는 수준의 사람을 Script kiddie라고 부르도록 한다.

Scripter - 발표된 해킹 수행 코드를 수정 없이 그대로 사용하는 수준

이 수준의 해커는 획득한 해킹 수행 코드를 수정 없이 실행하거나, 단순한 스크립트들을 수행시키는데, 이러한 수준의 해커는 해커라고 불리지 않는다. 이들은 획득하게 되는 각종 GUI 형태 및 UNIX 기반 해킹 프로그램을 단순히 설치하여 실행할 뿐이다. 기존에 알려져 있는 시스템이나 각종 서비스의 취약점에 대해 여러 명령어들을 이용하거나 웹 브라우저 상의 단순한 코드 조작으로 해킹할 수 있는 능력은 있으나, 해킹 수행 코드 자체를 이해하지는 못한다. 이러한 수준의 해커를 Scripter라고 부르도록 한다. 물론 이 수준의 해커 역시 해킹 수행 코드가 적용될 수 있는 시스템에 대한 해킹을 시도하는 경우에는 해킹이 가능하다.

Newbie –각종 해킹 프로그램 및 단순한 Unix 명령 사용 가능 수준

이 수준의 해커는 해킹 수행 코드라는 것이 무엇인지 이해하지 못하는 수준으로 해킹 사이트 등에서 얻어낸 각종 해킹 프로그램을 단순히 사용하는 수준이다. 이제 막 해킹 기법을 익히기 시작한 이들은 Unix시스템을 사용해본 경험이 있고, 몇몇 시스템 명령어를 사용할 수 있으며, 네트워크와 시스템에 대한 약간의 지식을 가지고 있지만 해킹에 적용시킬 능력은 없다. 사용하는 명령어 자체에 대한 이해 역시 부족하다. 대부분 GUI 형태의 해킹 프로그램을 사용한다. 이러한 수준의 해커를 Newbie라고 부르도록 한다. Newbie는 초보, 신참을 의미한다.

Kids - GUI 형태의 해킹 프로그램을 단순히 사용하는 수준

이 수준의 사람은 DoS 프로그램이나 패스워드 크랙 도구만 있으면 모든 사이트를 해킹할 수 있다고 생각하는 사람으로, 네트워크나 시스템에 대한 지식이 전무하며, 단순히 얻게 된 해킹 프로그램을 설치하여 실행해 본다. 또한 이런 류의 사람이 사용하는 프로그램은 GUI형태의 해킹 프로그램으로, PC방 등에 트로이잔 형태의 프로그램을 설치하고 해킹에 성공했다고 생각하는 사람이다. 해킹과 관련된 지식이 전무한 상태이다. 이러한 수준의 해커를 Kids라고 부르도록 한다.

현재 활동중인 거의 대부분의 해커들이 Technician 수준을 벗어나지 못한다. 이는 Gilbert Alaverdian의 분류에서도 언급된 Developed Kiddie 수준으로 이들은 단순히 발표된 해킹 수행 코드의 작은 수정을 통해 해킹에 종종 성공하기도 하는 수준이다. 매스컴을 통해 보고되는 거의 대부분의 해킹 사건들은 이 수준의 해커에 의해 시도되는 사건들이다.


1. 해킹 기법 및 수준 분류의 기준
 

. 해킹 기법 분류의 기준

해킹 기법들은 현재 알려져 있는 여러 해킹 기법들의 동작방식이나 목표, 사용하는 취약점 등을 기준으로 하여 분류하도록 한다. 적용되는 분류 기준의 우선 순위를 다음과 같이 정의한다.

- 기준 1: 공격의 목적

- 기준 2: 사용하는 취약점의 종류

- 기준 3: 일련의 해킹 과정에 포함될 수 있는 여러 방법

공격의 목적으로는 특정 권한 획득, 정보수집, 서비스 거부 공격(시스템 마비) 등이 있을 수 있고, 해킹에 사용되는 취약점의 종류로는 시스템 및 서비스 설정과 관련된 취약점, 프로그램 상의 오류로 인한 취약점, 각종 프로토콜 상의 취약점 등이 있을 수 있다. 그리고 일련의 해킹 과정에 포함될 수 있는 여러 방법으로는 악성 코드, 기타 여러 방법이 포함될 수 있다.

실제로 해킹 기법을 분류할 때, 하나의 해킹 기법은 여러 해킹 분류에 포함되어 질 수 있다. 예를 들어, 분산 서비스 거부 공격의 경우에는 프로토콜 상의 문제점을 이용하여 공격을 수행하게 되는 것이 대부분인데, 이 경우 사용하는 취약점의 종류에 따른 분류와 공격의 목적에 따른 분류에 포함될 수 있다. 또한 정보 수집에 이용되는 Banner Grabbing의 경우에는 시스템 설정과 관련된 취약점을 이용하여 정보 수집을 하게 되므로 2가지 분야에 포함되어 질 수 있다. 이러한 경우, 우선 순위에 따라 해킹 기법을 분류하도록 한다.

현재 대부분의 해킹 기법들은 해킹 대상 시스템의 특정 권한(루트 혹은 특정 사용자 권한)을 얻는 데 사용되어지는 기법들이다. 따라서 많은 해킹 기법들이 특정 권한 획득 분류에 포함되어 지게 되는데, 이런 경우 그 분류의 효율성이 매우 떨어지게 되므로 기준 1에서 특정 권한 획득으로 분류되는 해킹 기법에 대해서는 기준 2를 적용하여 다시 재 분류하도록 한다. 또한 프로토콜의 취약점을 이용한 정보수집, 예를 들어 패킷 훔쳐보기(packet sniffing) 등은 정보 수집의 목적보다는 프로토콜 취약점을 이용한 해킹에 더 큰 비중이 있다고 판단하여 프로토콜 취약점을 이용한 해킹 분류에 포함시키도록 한다. 따라서, 본 문서에서는 서비스 거부 공격, 정보 수집, 시스템 및 서비스 설정 취약점, 프로그램 상의 취약점, 프로토콜 상의 취약점, 악성 코드, 기타의 총 7가지 분류를 사용하도록 한다.

이와 같이 분류하게 되면 앞서 II장에서 설명한 기존의 분류기법과 약간의 차이를 보이게 된다. 기존의 버퍼 오버플로 취약점은 다른 여러 프로그래밍 상의 오류 및 프로그램 자체의 문제점을 이용하는 해킹 기법에 포함되어 삭제되고, 사용자 도용 해킹 방법은 특정 권한을 획득하기 위한 해킹 기법으로 분류되어 사용자 도용 해킹 방법들의 특징에 따라 여러 해킹 기법으로 분산된다. 또한 사회 공학 방법은 특정 권한을 얻기 위한 해킹 기법이지만 특별한 시스템, 프로그램, 혹은 기타 프로토콜의 취약점을 이용하는 것이 아니기 때문에 기타에 포함된다

. 해킹 기법 수준 분류의 기준

해킹 기법에 수준을 부여하기 전에 먼저 해킹 기법에 대한 수준을 부여하는 것의 목적은 앞서 언급했던 내부망의 보안성 평가의 기초가 되기 위한 작업이라는 것을 다시 한번 강조한다. 따라서 해킹 기법 수준 분류는 이미 정의한 해커의 수준 분류와 호환성을 유지하여야 하므로 해킹 기법 수준 분류 역시 총 7개의 레벨로 분류하도록 하고, 다음과 같은 기준을 바탕으로 해킹 기법에 대한 수준 분류를 시도한다.

- 기준 1: 해킹 기법의 수준은 어느 레벨의 해커가 사용할 수 있는 가에 따라 결정

- 기준 2: 프로그램을 이용하여 높은 수준의 해킹 기법을 사용하는 경우는 해당 프로그램에 적용된 해킹 기법의 수준을 이용하여 수준 분류

이와 같은 기준을 사용하는 이유는 첫째, 해커의 수준 분류와 호환되도록 분류하기 위해서 이고, 둘째 비록 낮은 수준의 해커라 할지라도 높은 수준의 해커에 의해 제작된 높은 기술 수준의 해킹 기법을 사용할 수 있는데, 이런 경우 해당 해킹 기법을 낮은 수준의 해킹 기법으로 분류해서는 안되기 때문이다. 레벨 7의 경우, 이미 알려져 있는 해킹 기법은 레벨 6의 해커에 의해서도 쉽게 사용되어질 수 있으므로, 현재 알려져 있는 레벨 7에 포함되는 해킹 기법은 없다고 판단했다.

해킹 프로그램을 이용하여 해킹하는 경우에 대해서는 악성코드 분류에서 유명한 몇몇 해킹 프로그램들에 대해 프로그램 자체의 수준 분류를 한다. 해킹 프로그램을 사용할 수 있는 해커의 수준과 관련된 보다 자세한 내용은 생략한다.

2. 해킹 기법 및 수준 분류

. 시스템 및 서비스 설정 취약점

이 분류에는 시스템 및 시스템에서 제공하는 각종 서비스의 설정과 관련된 취약점을 이용한 해킹 기법이 포함된다. 시스템 및 서비스 설정 문제를 이용한 해킹은 그 수준이 그리 높지 않은 경우가 대부분이다. 이는 일반적인 시스템 보안 취약점 분석도구를 이용하여 발견할 수 있고, 해킹을 위해 특별한 해킹 수행 코드가 필요 없는 경우가 대부분이기 때문이다.

본 분류에서는 레벨 3에는 파일 시스템의 쓰기 권한 취약점을 이용하는 경우와, suid 프로그램 관리상의 문제를 이용하는 경우, 환경 변수를 이용하는 경우가 포함된다. 이는 시스템 명령어들을 사용할 수 있고, 이를 이용하여 시스템 설정들을 확인할 수 있는 경우 해킹에 쉽게 적용시킬 수 있는 방법들이다. 레벨 4에는 r-series 프로그램의 설정 문제, ftp, nfs/nis, dns, sendmail, http 서버 설정 문제, X윈도 설정 및 인증 문제, 기타 데몬의 권한 설정 및 쉘 수행 가능 여부를 포함시켰다. r-series 프로그램이라는 것은 rlogin 과 같이 알파벳 r로 시작하는 각종 프로그램들을 의미한다. 이는 특별한 인증과정 없이 다른 시스템에 접속할 수 있기 때문에 잘못된 설정으로 인해 간단히 해킹당할 수 있다. 패스워드 암호방식을 이해하여 간단한 프로그램을 작성할 수 있어야 패스워드 크래킹이 가능하므로 패스워드 크래킹 역시 레벨4에 포함시킨다. 패스워드 크래킹은 패스워드 설정 시 취약한 패스워드를 사용하는 경우에 발생할 수 있기 때문에 본 분류에 포함시켰다. 그 외에 각종 서비스들에 대한 설정 문제를 이용한 해킹은 해당 서비스에 대한 충분한 지식이 필요하기 때문에 레벨 4에 포함시켰다.

. 프로그램 상의 취약점

프로그램 상의 취약점에는 프로그래밍 상의 보안 오류와 프로그램 동작 상의 보안 오류로 인하여 발생하는 취약점이 있을 수 있다. 후자의 경우에는 프로그램 단독으로 문제가 일어나는 경우도 있지만 여러 프로그램이 동시에 수행될 경우에 문제가 발생하는 경우도 있다. 프로그램 동작 상의 오류로 인한 문제는 특정 프로그램에 대한 문제로 권고문의 형태로 알려지고 패치가 가능하게 된다.

프로그램 오류를 이용한 기법은 해킹의 핵심이라고 할 수 있는데, 본 분류에는 레벨 3에 CGI/JAVA 스크립트 취약점, ASP, PHP 스크립트 취약점을 포함시켰다. 각종 스크립트 언어의 취약점은 기본적으로 각종 소스 파일들을 읽을 수 있는 능력이 있어야 하기 때문이다. 일반적으로 각종 스크립트의 취약점들은 스크립트 자체의 문제만으로 해킹에 이용되는 경우 보다는 다른 해킹 기법과 연관되어 이용되는 경우가 대부분이다. 레벨 4에는 버퍼 오버플로 공격, 힙 오버플로 공격, Race Condition을 포함시켰다. 이는 가장 기본적이면서도 가장 널리 사용되는 해킹 기법들이다. 이러한 해킹 기법을 익히고 이해하는 것과 실제 해킹 수행 코드를 작성할 수 있는 수준은 확연히 다르다. 여기서는 이러한 해킹 기법을 이해하고 간단한 해킹 수행 코드를 이해할 수 있는 수준으로 판단하고 레벨 4를 부여하였다. 레벨 5에는 Win32 버퍼 오버플로, 포맷 스트링 공격, OMEGA 프로젝트, Frame Pointer 오버플로 공격을 포함시켰다. 이는 기존에 알려져 있는 해킹 기법과 그 수준 차이는 크게 나지 않지만 널리 알려지지 않아 일반적인 버퍼 오버플로 해킹 기법보다 이해하기가 어려운 해킹 기법들이기 때문이다. 포맷 스트링 공격이나 Frame Pointer 오버플로 공격의 경우에는 최근 널리 활용되기도 하는 공격기법이다. 이 수준의 해커들은 위 해킹기법에 대한 이해뿐만 아니라 이를 이용한 해킹 수행 코드를 이용하여 실제 해킹을 수행할 수 있는 수준이다. 레벨 6에는 프로그램 설계 상의 보안 문제, 각종 보안 강화도구 회피, Shared Library Redirection, 종료되지 않은 인접 메모리를 이용한 오버플로 해킹 기법을 포함 시켰다. 레벨 6에 해당하는 해킹 기법은 프로그램 설계 상의 보안 문제를 활용할 수 있는 수준의 해킹 기법으로 프로그램의 흐름을 파악하고 취약점을 이해할 수 있는 능력이 있어야 한다. 또한 보안 강화도구 회피 기법은 각종 보안 강화 프로그램들의 동작방식을 이해하고 있어야 하므로 레벨 6에 포함시켰다.

. 프로토콜 취약점

프로토콜의 취약점이란 TCP/IP뿐만 아니라 각종 인터넷 프로토콜(ICMP, ARP, RARP, UDP 등등)의 설계 상의 취약점을 말한다.

프로토콜의 취약점을 이용하는 경우 해커는 각종 프로토콜 자체를 이해하고 있어야 한다. 따라서 다른 해킹 기법보다 높은 수준이 된다. 일반적으로 프로토콜 취약점을 이용한 해킹은 기 작성된 해킹 프로그램을 이용하는 경우가 대부분이다.

본 분류에서 레벨 4에는 Packet Sniffing, Connection Reset(ICMP)을 포함 시켰는데, 이 해킹 기법은 단순한 네트워크 프로토콜 상의 취약점을 이용하는 것으로 특별한 능력이 필요한 것은 아니기 때문이다. 즉, 네트워크 상에서 다른 호스트로 전송되는 패킷을 수집하여 확인하거나 전송되는 패킷에 대해 reset 패킷을 전송하는 것 만으로 수행 가능한 해킹 기법이기 때문이다. 레벨 5에는 IP Spoofing 을 포함 시켰는데, IP Spoofing은 전송되는 패킷의 헤더 부분의 IP 주소만을 변경시키는 것이 아니라 통신하고자 하는 대상 시스템의 SYN 번호를 guessing하는 것이 필요하기 때문이다. 레벨 6에는 Session Hijacking, Packet Redirection(ICMP), Routing Table 변경, ARP를 이용한 MAC Address 조작, Port Redirection을 포함시켰다. 이는 각종 프로토콜에 대한 구조적인 문제를 완벽히 이해해야 하고 상당한 수준의 네트워크 프로그래밍이 가능해야 하기 때문이다.

. 정보 수집

정보 수집이라는 것은 취약점 분석 도구 혹은 시스템 명령어 등을 이용하여 해킹하고자 하는 시스템에 대한 정보를 수집하는 행위를 말한다. 최근 보고되는 대부분의 해킹 시도가 정보 수집과 관련된 것이다(<표 2> 참조)[5].


일반적으로 정보 수집에 활용되는 도구로는 각종 취약점 전체를 확인해 주는 취약점 분석 도구뿐만 아니라 단순히 특정 취약점이나 포트만을 검색하는 도구들도 존재한다. 최근에 가장 많이 사용되는 프로그램으로는 nmap과 nessus등이 있다. 최근에는 취약점 점검 방법의 다양화로 인해 IDS와 같은 보안 강화도구 조차 취약점 점검을 당하고 있다는 것을 탐지하지 못하는 경우가 발생하기도 한다.

정보 수집이라는 것은 시스템에 침투하고 시스템 내부에서 일정 권한을 얻어내는 일반적인 해킹 기법은 아니다. 그러나 최근에는 시스템의 취약점을 수집하는 정보수집 자체도 해킹의 일부로 판단하고 해킹으로 구분하고 있다. 낮은 수준의 해커라도 다양한 보안 스캐너를 인터넷 상에서 쉽게 얻어 사용할 수 있다. 물론, 일반적으로 해킹을 하려하는 높은 수준의 해커들 역시 정보 수집을 위해 기 제작된 보안 스캐너를 그대로 사용하는 경우가 많은데, 이는 빠르고 정확하며 손쉽게 사용할 수 있기 때문이다. 특히 nessus나 nmap의 경우에는 decoy scan, stealth scan등을 구현하여 사용할 수 있게 함으로써 비록 낮은 수준의 해커라 하더라도 높은 수준의 정보 수집 기술을 사용할 수 있는 상황이다.

정보 수집과 관련된 해킹 기법에 대해 단순 포트 스캔, 간단한 시스템 명령을 이용한 정보수집은 레벨 2에 포함시켰다. 단순 포트 스캔이라는 것은 해당 포트로 접근을 시도하여 포트가 열려있는가를 확인하는 작업으로 이는 정상적인 행위로 받아들여지게 되므로 IDS등에 로그가 남지 않게 된다. 물론 이러한 방법은 시스템 자체의 로그에는 기록되게 된다. 이 기법은 간단한 시스템 명령어인 ping, traceroute 등의 명령을 이용하여 정보를 수집하게 된다. 레벨 3에는 복잡한 시스템 명령을 이용한 정보수집, 각종 서비스에서 제공하는 명령을 통한 정보 수집, Banner Grabbing을 포함시켰다. 시스템 명령을 자세히 알고 있는 경우에는 각종 보안 스캐너를 이용하지 않더라도 포트 스캔이나 취약점을 확인할 수 있다. 이런 경우에 활용되는 명령으로는 rpcinfo, showmount 등이 있다. 레벨 4에는 Finger Printing, SNMP를 이용한 정보 수집을 포함 시켰는데, 이 경우는 telnet, ftp, http 등 각종 서비스에서 제공하는 각종 메시지를 확인함으로써 정보를 확인하는 경우와, SNMP를 이용하여 정보를 얻어내는 경우이다. 특히 SNMP를 이용하는 경우에는 시스템 설정에 따라 해당 시스템에서 현재 수행되고 있는 모든 process들에 대한 정보도 얻을 수 있다. 레벨 6의 경우에는 Combined Scan/Distributed Scan/Stealth Scan/Decoy Scan, TCP/IP 스택을 이용한 스캔을 포함시켰다. 최근 발표되고 있는 각종 IDS들이 해당 네트워크에 대한 스캔 공격을 탐지하고 있다. 그러나 레벨 6에 포함되어 있는 기법을 사용하는 경우 효과적으로 탐지하지 못하게 된다.

. 서비스 거부 공격

최근 들어 가장 큰 문제가 되고 있는 해킹 기법 중의 하나가 서비스 거부 공격이다. 특히 분산 서비스 거부 공격의 경우에는 그 피해 정도가 매우 크기 때문에, 많은 보안 관련 업체들이 관심을 가지고 해결하려는 부분이다. 서비스 거부 공격이란 간단히 말해서 시스템이 정상적으로 동작하지 않도록 만드는 공격 기법으로 시스템의 관리자 권한을 얻기 위해 시도되는 일반적인 해킹과는 차이가 있다.

특히 문제가 되는 것은 네트워크를 통하여 원격지에서 시스템이 정상적으로 동작하지 않도록 공격하는 경우인데, 이런 경우에는 공격 대상 시스템뿐만 아니라 공격 대상과 같은 네트워크 상에 있는 다른 시스템에도 피해를 줄 수 있기 때문에 더 큰 문제가 되고 있다.

본 분류의 레벨 3에는 간단한 프로그래밍으로 수행할 수 있는 로컬 시스템 상에서의 서비스 거부 공격을 포함시켰는데, 이는 비교적 쉬운 공격 방법으로, 디스크 채우기, 메모리 고갈 시키기, 프로세스 무한 생성 등이 있다. 레벨 4에는 SYN Flooding/Ping Flooding, Mail Storm, Java Applet Attack/UDP Storm를 포함시켰다. 이 레벨은 TCP/IP, ICMP 등의 각종 프로토콜을 이해하고 있는 경우에만 사용할 수 있는 방법이지만, 그 난이도가 그리 높지 않은 방법이다. 레벨 5의 경우에는 Tear Drop, 일반 DDoS, Smurfing을 포함시켰는데, Tear Drop의 경우는 IP Fragmentation 기법에 대한 이해가 필요하고, 일반 DDoS의 경우 에이전트 형태의 백도어를 설치하는 것과 같은 수준의 기술이 필요하기 때문이다. 레벨 6에는 암호화된 DDoS를 포함시켰는데, 실제로 암호화된 DDoS는 거의 모든 해킹 기법이 포함되어 있다고 볼 수 있기 때문이다.

. 악성 코드

악성 코드에는 바이러스, 트로이잔, 백도어 등이 포함되고, 여러 해킹 기법이 포함되어 스스로 시스템을 해킹하고 자기복제를 실시하는 웜 역시 악성 코드에 포함된다. 본 문서에서는 주로 백도어와 트로이잔에 대해서 설명하도록 한다. 웜의 경우에는 웜 자체의 기술 수준이 매우 높기 때문에 단순히 높은 수준으로 분류하도록 하기 위함이며, 바이러스에 대해서는 실제로 해킹과는 거리가 있기 때문이다. 본 분류에서 바이러스와 관련된 내용에 대해서는 안철수 바이러스 연구소에서 분류한 바이러스 분류안을 이용하여 수준을 분류한다[6,7].

최근에는 트로이잔이나 백도어에 매우 다양화되고 고도의 기술이 포함되어지고 있다. 뿐만 아니라 일반 초보 해커들 조차 쉽게 사용할 수 있을 만큼 간단하고 편리한 사용자 인터페이스를 갖춘 프로그램들이 발표되고 있다.

레벨 3의 경우에는 인터넷 서비스를 이용한 루트 권한의 shell bind, 파일 및 부트 바이러스를 포함시켰다. 인터넷 서비스를 이용한 루트 권한의 shell bind의 경우에는 일단 로컬 시스템 내부에서 루트 권한을 얻은 후에 inetd.conf 파일을 조작하여 루트 권한의 shell을 bind시키는 것으로 매우 간단한 일이다. 레벨 4에는 단순한 백도어 프로그램과 암호화 바이러스를 포함시킨다. 단순 백도어 프로그램이란 각종 시스템 프로그램에서 특정 ID와 패스워드를 입력하는 경우 루트 권한의 쉘을 실행시키도록 만든 것이다. 그러나 이러한 백도어는 파일 크기와 생성 일시가 원본 파일과는 다르기 때문에 쉽게 찾아 낼 수 있는 백도어 이다. 레벨 5에는 은폐형 바이러스, 매크로 바이러스와 원본과 동일한 크기와 생성 일시를 갖는 백도어를 포함시켰다. 레벨 6에는 Raw Socket을 이용한 shell bind, 에이전트형 백도어, Reverse telnet, ssh, 커널 레벨 백도어, Stealth Backdoor, 각종 웜, 다형성 바이러스를 포함시켰다. Raw Socket을 이용하여 shell을 bind시키는 경우에는 시스템 명령(netstat 등)을 통해 시스템에 연결되어 있는 커넥션을 확인할 수 없게 된다. 커널 레벨 백도어의 경우도 기존의 백도어 확인 프로그램을 이용하여 존재여부를 확인하는 것이 매우 어려워진다. 이에 위 백도어 기술들을 레벨 6에 포함시킨다. 그리고 윈도용 각종 트로이잔 프로그램(Back Orifice, Sub7 등)을 레벨 6에 포함시킨다.

. 기타(사용자 도용)

~까지 설명된 분류에 포함되지 않지만 해커의 수준을 측정하는 데 유용한 몇가지 해킹 기법들을 이 분류에 포함시켰다. 본 분류에서는 레벨 3에 일부 로그 삭제를 포함 시켰는데, 이는 시스템에 기록되는 각종 로그 기록이 어느 위치에 저장되는지를 알지 못하는 수준이기 때문이다. 레벨 4에 간단한 암호화 알고리즘의 decryption과 모든 로그 삭제를 포함시켰는데, 로그가 기록되는 모든 파일을 삭제함으로써 로그 삭제가 이루어진 것을 시스템 관리자가 확인할 수 있게 되는 수준이기 때문이다. 레벨 5에는 사회공학적인 방법과 패스워드 추측, 레벨 6에는 다른 로그에 영향 없이 자신의 흔적 제거를 포함시켰다. 로그가 기록되는 파일 내에서 해커 자신과 관련된 로그 기록만 삭제하는 것으로 시스템 관리자는 아무런 흔적도 찾을 수 없게 된다.

출처 : [기타] 인터넷 : 최양서* 서동일** 손승원***(해커 및 해킹 기법 수준 분류)


Trackback 0 Comment 0