가. 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에는 다른 로그에 영향 없이 자신의 흔적 제거를 포함시켰다. 로그가 기록되는 파일 내에서 해커 자신과 관련된 로그 기록만 삭제하는 것으로 시스템 관리자는 아무런 흔적도 찾을 수 없게 된다.
출처 : [기타] 인터넷 : 최양서* 서동일** 손승원***(해커 및 해킹 기법 수준 분류)
댓글