'kids'에 해당되는 글 2건

  1. 2009.07.21 해커의 수준 및 해킹 기법 분류
  2. 2009.02.26 LIDS(Linux Intrusion Detection System), KIDS(Kernel based IDS)
2009. 7. 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
2009. 2. 26. 10:33

LIDS(Linux Intrusion Detection System), KIDS(Kernel based IDS)

LIDS를 중심으로 정리한

 

Intrusion Detection System

 

  

1. IDS란 무엇인가?

 

 

“컴퓨터는 네트워크에 접속되는 순간 보안적 위협에 노출된다.”

 

 

ARPANET을 시작으로 전 세계적인 네트워크가 구성되고 이용의 범주가 넓어지면서 네트워크 보안이라는 부분은 마치 꼬리말처럼 우리를 따라다닌다.

 

특히 요즘처럼 인터넷을 통해 다양한 서비스들이 봇물처럼 쏟아져 나오는 시대에는 보안이라는 말의 의미는 우리에게 더욱 크게 작용한다. 그만큼 컴퓨터와 네트워크가 일반화되었고, 이들 둘은 이제는 떼어낼 수 없는 강한 결속력을 가지고 있기 때문이다.

 

컴퓨터는 네트워크에 접속하는 순간 보안적 위협에 노출되게 된다.

만약 누군가가 우리 서버에 침입해서 좋지 않은 행위를 했다고 생각해보자.

이것은 정말 기분 나쁜 일이 될 것이다.

 

이에 따라 당연히 보안 시스템의 필요성이 증가하게 되었고 VPN, Firewall, IDS 등의 다양한 형태의 보안 시스템들이 나타나게 되었다. 이 보안 시스템들 중에서 중요한 부분을 차지하고 있는 것 중의 하나가 바로 침입 탐지 시스템, 즉 IDS(Intrusion Detection System)이다.

 

침입탐지시스템(IDS : intrusion Detection System)은 로컬 네트워크나 단일 호스트에 위치하면서 네트워크와 시스템의 감시를 통해 외부로부터의 침입이나 불법적인 행위를 탐지해내고, 이에 대한 대응 방안을 세울 수 있게 해주는 역할을 한다. 최근의 IDS들은 침입에 대한 시도를 차단하는 역할을 제공하기도 한다.

 

 

2. IDS의 종류

 

IDS는 기본적으로 패턴 인식을 통한 침입 탐지 기법과 시스템의 비정상적인 동작을 감시하면서 침입을 탐지해내는 기법을 활용한다. 패턴 인식 기법은 패턴 인식시스템으로의 침입이 가능한 다양한 패턴들을 미리 인식 시켜 놓고, 네트워크를 소통하는 패킷 혹은 시스템의 로그 파일을 감시하면서 패턴에 일치하는지의 여부를 파악하는 형식을 취한다.

 

시스템의 비정상적인 작동을 통해 침입의 여부를 판단하는 방식은 시스템의 외부에서 뿐만 아니라 내부에서의 침입 시도 역시 탐지해 낼 수 있다는 장점이 존재하기에 역시 많이 활용되는 방식이다.

 

IDS는 위의 침입 탐지 기법을 어떻게 적용시키느냐에 따라 수많은 종류의 IDS가 존재하지만, 핵심적인 요소로 구분한다면 다음의 세 가지 정도로 구분할 수 있다.

 

네트워크 기반의 침입 탐지 시스템(NIDS: Network based Intrusion Detection System), 호스트 기반의 침입 탐지 시스템(HIDS: Host based Intrusion Detection System), 커널에 다양한 접근 계층을 둠으로써 침입을 탐지해내는 커널 기반의 침입 탐지 시스템(KIDS: Kernel based Intrusion Detection System)이 바로 그것이다. 이들은 각각 나름대로의 장단점 및 특성을 가지고 다양한 부분에서 널리 사용되고 있다.

 

 

2-1. NIDS(Network based Intrusion Detection System)

 

NIDS는 네트워크를 통해 전달되는 패킷을 모니터링 하면서 침입의 여부를 결정한다. 

이 시스템은 구현할 수 있는 방법이 쉽고, NIDS가 물려있는 모든 시스템들에 대해 작용할 수 있으며, 특정 운영체제에 의존적이지 않아서 현재 가장 인기가 많은 침입 탐지 시스템으로, 현재까지는 IDS의 주류를 이루고 있다.

 

 그러나, 소통하는 모든 패킷을 분석하기 때문에 네트워크의 속도가 느려지고, 알려지지 않은 패턴의 공격기법에는 속수무책으로 당하기 때문에 지속적으로 패턴 데이터베이스를 갱신 시켜 줘야 한다는 단점이 존재한다.

 

 

2-2. HIDS(Host based Intrusion Detection System)

 

HIDS는 주로 실시간으로 로그를 감시하면서, 또한 포트를 주시하면서 침입에 대한 여부를 결정한다.

HIDS역시 네트워크를 감시하지만 네트워크를 지나가는 전체적인 패킷이 아닌 HIDS가 설치된 시스템으로 들어오는 패킷에 대해서만 감사를 한다는 점에서 NIDS와 차이점을 가진다.

 

  HIDS는 해당 호스트의 네트워크를 감시하기 때문에 전체 네트워크의 속도 저하에는 영향을 미치지 않고, 호스트의 로그파일을 검사하기 때문에 정확한 탐지를 해낼 수 있으며, 무엇보다 내부 사용자의 행위 역시 감시할 수 있기 때문에 효과적인 시스템 감시가 이루어질 수 있다는 장점이 있다.

 

그러나, 주요 활동이 로그파일을 분석하는 것이고, 이것은 이미 침입이 발생한 이후에 파악할 수 있다는 문제점과 역시나 패턴을 꾸준히 갱신 해 주어야 하며, 호스트의 운영체제에 의존적이다. 그리고 IDS가 필요한 모든 시스템에 설치해야 한다는 단점이 존재한다.

 

 

 

2-3. KIDS(Kernel based Intrusion Detection System)

 

 

KIDS는 전통적인 IDS시스템들과는 달리 커널에 기반 한 IDS로 주로 리눅스를 기반으로 해서 개발이 활발하게 진행중이다. KIDS는 정해진 정책에 따라 운영체제의 핵심인 커널을 통해서 네트워크를 감시하고, 시스템의 비정상적인 동작의 여부를 감시한다. 만약, 정책에 어긋나는 행동을 했다면, 이를 탐지하고 알려주는 기능을 포함할 뿐만 아니라 파일 시스템과 민감한 프로세스들을 보호하기위해 능동적으로 대응한다.

 

  커널 기반의 IDS는 위와 같이 NIDS처럼 방화벽 바로 다음에 위치시킴으로써 IDS 센서로서 활용할 수 있으며, 단일 호스트에서도 활용할 수 있다.

 

또한, 가장 바탕이 되는 커널에서 정해진 정책에 따라 침입 여부를 결정하고, 파일시스템 및 프로세스 보호, 접근 권한에 대한 변경과 파일들에 대한 inode 변경 등을 통해 해당 시스템에 대한 파괴 행위 자체를 원천적으로 봉쇄하는 형태를 취하고, 무엇보다 패턴에 의존적이지 않기 때문에 IDS 관리에 대한 부분에 있어서는 매우 큰 장점을 가지고 있다.

 

하지만, 로그 메시지가 엄청나게 발생한다는 것과 고의와 실수에 대한 부분에 있어서 명확한 판단 기준을 가질 수 없다는 문제점과 운영체제에 매우 의존적이라는 문제점을 가지고 있다.

 

 

3. 무료이면서도 강력한 KIDS인 LIDS

 

리눅스 시스템에서 완벽한 보안이라는 것은 있을 수 없다. 다만 여러 가지 보안 관련 도구들을 활용하여 보안 위협을 최소화 시킬 수 있을 뿐이다. 실제 리눅스에서 활용할 수 있는 많은 훌륭한 보안 시스템들이 존재한다. 하지만 이들은 뛰어난 성능에도 불구하고 최소한 두 가지 문제에 있어서 만큼은 어쩔 수 없다.

 

3-1. 로컬에서의 위협!

 

누군가 나의 리눅스 시스템에 접근하여 root로 로그인을 했다고 생각해보자. 그렇다면 그 사람은 내 리눅스 시스템에서 무엇이든지 할 수 있다. 만약 여기서 나쁜 마음을 먹어버린다면..... 결과는 너무나도 자명하다.

 

 

3-2. 익스플로잇 등에 의해 공격자에게 root를 빼앗겼을 때의 위협!

 

리눅스는 공개되어 있다. 그래서 우리가 원하는 데로 변형이 가능하고, 만약 버그가 발견된다면 빠른 시간 안에 패치 될 수 있다. 이것은 곧 관리자가 해야 할 일이 많아지기 때문에 그만큼 부지런해야 한다는 것을 알려준다. 하지만 아무리 부지런하다 할지라도 인간인 이상 실수를 할 수 있고, 약간의 부주의로 공격자에게 root를 빼앗기게 된다면 그 시스템은 역시 공격자의 손아래에서 놀아나게 될 것이다.

 

 

하지만, LIDS가 설치된 리눅스 시스템에서는 심지어 root의 권한을 가지고 있다 하더라도 시스템을 제어하는데 한계가 있다. 그 한계라는 것은 리눅스 커널 패치를 통해 커널 차원에서 리눅스 시스템의 보안등급을 높여주고, LIDS관리 도구를 통해 정책을 세워 커널에 갱신 시켜줌으로써 규정할 수 있다. 이를 통해 매우 중요하고 민감한 내용이 들어있는 파일과 디렉토리에 특성을 부여하여 그것들을 보호할 수 있다.

 

또한 다른 침입 탐지 시스템들과 마찬가지로 누군가가 규정에 어긋나는 행동을 했을 때 관리자에게 바로 통보를 해준다. 심지어 SYN 스텔스 포트 스캔, half-open 스캔, Null 스캔 등도 탐지할 수 있다. 그리고 정책에 어긋나는 행동을 했을 때 사용자 콘솔을 닫아버릴 수도 있다. 이와 같이 LIDS는 리눅스 커널의 보안을 강화시켜주기 위해 커널에 새로운 Layer를 생성하고, 이를 활용하기 위한 정책을 세워 내외부로부터의 침입을 탐지해내고, 거기에 따른 능동적 대응을 해주는 커널기반의 침입 탐지 시스템을 말한다.

 

4. LIDS의 파일과 디렉토리 보호 방식

 

LIDS는 모두 다섯 가지의 파일 보호 방식을 제공한다. 이 보호 방식은 해당 파일이나 디렉토리가 어떠한 속성을 가지고 있는지, 어떻게 서로 의존되는지에 따라 각각 달리 설정된다.

이제 그 방식들에 대해 한 번 알아보겠다.

 

4-1. 접근거부(DENY)

 

만약 어떤 파일 혹은 디렉토리를 DENY로 설정해 둔다면 누구도 해당 파일 혹은 디렉토리에 접근할 수 없다. 여기서 접근할 수 없다는 말은 퍼미션 상의 문제 같은 것이 아니다. LIDS 시스템이 돌아가고 있는 상황 하에서는 그 파일은 없는 것으로 인식되는 것이다. 만약, ‘/etc/shadow’를 DENY로 설정해 두었다면, 이 파일은 ‘ls’ 혹은 ‘find’ 명령으로 아무리 찾아봐도 발견할 수 없다. 이것이 바로 LIDS의 첫 번째 보호 방식인 접근거부(DENY) 라는 것이다.

 

4-2. 읽기 전용(READ)

 

어떤 파일이 LIDS시스템에서 READ로 설정되었다는 것은 누구도 파일의 내용을 바꿀 수 없음을 의미한다. 이는 마치 ‘chattr +i’로 파일의 속성을 바꿔주는 것과 똑같은 역할을 한다. 차이점이 있다면 ‘chattr +i’ 같은 경우에는 ‘chattr –i’로 언제든지 그 속성을 바꿔줄 수 있지만 LIDS 시스템에서는 바꿀 수 없다.

 

4-3. 로그파일 보호(APPEND)

 

APPEND는 방식은 로그파일을 위한 특별한 보호 방식이다. APPEND로 설정된 로그 파일들은 지속적으로 라인이 증가하는 것(쓰기 모드)만 가능하지 파일 내의 내용을 삭제한다거나 줄이지 못한다. 이것은 누군가 시스템의 취약성을 타고 내부로 침입한 후 빠져나갈 때 로그파일에 남은 흔적을 절대 지우지 못하게 하는 기능을 가진다.

 

4-4. 쓰기 전용(WRITE)

 

WRITE라는 보호 방식은 말 그대로 쓰기 전용의 보호 방식이다. 그런데 이 보호방식은 다른 세 가지 방식들과는 달리 일반적으로 독자적으로 사용되지 않는다. 어떠한 주체에 대해 객체에 쓰기가 가능하도록 정의하는데 사용된다.

 

4-5. 퍼미션 무시(IGNORE)

 

Object에 걸려 있는 속성(Permission)을 무시한다. 이전에 걸려 있던 READ, APPEND, DENY등의 속성을 무시하게 된다.

 

5. 프로세스 보호

 

LIDS가 보호 할 수 있는 것은 디렉토리, 파일 등으로만 한정되는 것은 아니다. MBR영역을 포함한 파일시스템, 프로세스 등도 역시 보호할 수 있다. LIDS에서 제공하는 프로세스 보호 방식은 두 가지가 있다. 이제 그것에 대해 한 번 알아보자.

 

5-1. UN-killable process

 

이 보호 방식은 ‘/etc/lids/lids.conf’ 내에 들어있는 정책으로 설정하는 것이 아니라 ‘/etc/lids/lids.cap’ 내에 있는 시스템 속성으로 설정을 해 줄 수 있다. 이 보호방식으로 시스템을 설정해 주면 부모 프로세스가 init(pid=1)인 모든 프로세스를 보호하여 강제로 프로세스를 죽이지 못하게 만든다.

 

5-2. 프로세스 숨기기(Hidden process)

 

이 보호 방식은 민감한 프로세스에 설정 해주면 상당한 효과를 볼 수 있다. HIDDEN으로 설정해 둔 프로세스는 누군가 로그인을 해서 ‘ps’ 명령을 내려도 그 프로세스에 대한 정보는 절대 표시되지 않는다. 심지어, ‘/proc’ 디렉토리에도 그 정보가 남지 않게 된다.

 

6. 그 외의 기능들

 

위에 기술한 보호방식들 이외에도 LIDS는 추가적으로 몇가지 기능을 더 제공한다. 여기서 설명할 기능들은 일반적인 침입탐지 시스템(HIDS, NIDS)들에 포함되어있는 것도 있고, LIDS에서만 제공하는 기능도 있다. 어떤 것들이 있는지 한 번 알아보자.

 

6-1. 스캐너 탐지

 

누군가가 우리의 서버를 공격하기에 앞서 먼저 포트 스캐닝을 했다고 생각해보자. 일반적인 스캐 방법은 스캔 하는 즉시 서버의 로그파일에 그 흔적이 남게 되어있다. 하지만 SYN 스텔스 스캔, 스텔스 FIN 등과 같은 방법들은 흔적이 남지 않는다. 하지만 LIDS에는 커널 차원의 스캐너 탐지기가 있어 이런 방식의 포트 스캔 역시도 감지 해낸다.

 

6-2. 침입에 따른 반응(Hangup the Console)

 

일반적인 침입탐지 시스템들은 침입에 대한 탐지와 그 결과를 관리자에게 보내주는 역할 만을 가지고 있는 반면 LIDS는 그 기능들과 함께 능동적인 반응도 하게된다. 가장 대표적인 예가 사용자 세션을 닫아버리는 기능이다. 누군가 시스템에 침입해 정책에 어긋나는 행동을 한다면 LIDS는 그 사용자의 콘솔을 즉각적으로 닫아버리고, 그 내용을 경고 메시지의 형태로 관리자에게 보내준다.

 

6-3. 방화벽과의 연동을 통한 LIDS의 활용

 

LIDS는 이것만을 설치해서 사용하면 해당 호스트에서만 작용한다. 하지만, LIDS에는 이를 보완하기위한 강력한 기능이 한 가지 있는데, 바로 다른 방화벽 시스템과의 연동이 가능하다는 것이다. 이 기능을 활용하게 되면, NIDS처럼 IDS 센서로서의 역할을 하면서, 정책에 따르지 않는 내용들에 대해서는 바로 방화벽 차원에서의 차단과 같은 대응을 할 수 있다.

 

7. 정리하며

 

지금까지 IDS가 무엇이고, 종류가 어떻게 되고, 특히 LIDS에 대해 주로 특성과 기능성을 중심으로 정리해 보았다. 이 부분은 이전부터 관심을 가지고 봐왔던 부분이지만, 아직도 해결되어야 할 부분이 많다는 것을 다시 한 번 알게 되었다.

 

침입탐지의 중요성은 누구나 다 알고 있고, 그에 따라 수많은 종류의 제품들이 쏟아져 나오고 있으나 핵심이 되는 탐지 기법 자체는 기존의 테두리를 벗어나지 못하고 있다. 그리고 내부 사용자에 의한 공격이나 DoS, Ddos 등과 같은 공격기법에는 무용지물이 되어버리기 일쑤다. 뿐만 아니라 IDS 자체가 공격의 대상이 될 수 있다는 것 역시 큰 문제이다. 그나마 NIDS와 HIDS가 혼합된 형태가 가장 진보적이라 할 수 있겠지만, 문제점은 여전하다.

 

KIDS 같은 경우는 아직 연구 단계이고, 약간은 새로운 개념이기에 조금의 기대를 가지고는 있지만 아직은 기능성에 있어서 문제가 있다는 것을 부인할 수 없다. 특히 LIDS가 그렇다. IDS 센서로서 활용이 가능하다 하지만 일단 고유의 기능이 아니고, 제대로 돌아가는지조차 확인할 수 없다.

 

그럼에도 불구하고 여기서 다룬 이유는, 조금은 새로운 개념의 IDS를 소개하고 싶었고, 적어도 개인용 호스트에서는 매우 막강한 성능을 발휘할 수 있는 IDS를 공짜로 사용할 수 있었기 때문이다. 원래 리눅스에서의 설치와 활용법에 대해서 중점적으로 다루려 하였지만, 과제의 성격에 맞지 않을 것 같아서 소개만 하는 것으로 끝내고자 한다.

 

 

참고 사이트

 

1.  LIDS 공식 홈페이지 (http://www.lids.org)

2.  Security Focus (http://www.securityfocus.com)

3.  Linux Security (http://www.linuxsecurity.com)

4.  SANS (http://www.sans.org)

5.  그 외 다른 사이트들


출처 : http://blog.naver.com/cadline


Trackback 0 Comment 0