버퍼 오버 플로우 공격과 DEP | |||
| |||
최근에 Windows 2003에서 SP1으로 업그래이드 한 후 언제가 비슷한 문제를 겪은 분이 DEP 관련 문제를 언급한 적이 있어서, DEP 설정 옵션에서 메모리실행체크를 하지 않도록 서버를 등록해 보았다. 버퍼 오버플로우(Buffer Overflow) 동작원리 위에서 언급한 것처럼 정상적인 프로그램이라면 데이터 영역에서 자신을 실행하지 않는다. 우리가 알고 있는 버퍼 오버플로우 공격은 모두 이와 같이 코드 영역을 넘어 데이터 영역까지 과도하게 침범하여 코드를 실행하게 만드는 행위를 말한다. 즉, 버퍼 오버플로우를 발생시키고 스택(Stack)에서 발생하는 리턴 어드레스(Return Address)를 수정하여 자신이 원하는 코드(프로세스)가 실행되게 하는 것이다. 버퍼 오버 플로우의 다른 하나인 힙 오버플로우(Heap Overflow)의 경우 한 함수내에서 혹은 다른 곳의 함수에서 원래 프로그램이 가르키고 있는 포인터 영역을 바꿔서 공격하는 것이다. 이는 힙(Heap)이 응용 프로그램에서 직접 메모리 영역을 할당하기 때문이다. 일반적으로 버퍼 오버플로우라고 일컬어지는 공격은 전자의 스택 오버플로우(Stack Overflow)가 주를 이룬다. 힙 오버플로우(Heap Overflow)는 응용 프로그램이 직접 메모리 영역을 할당하므로 메모리 주소가 매번 다르기 때문에 효과적으로 사용되기에는 어려운 공격방법이다. 버퍼 오버 플로우 공격의 가장 큰 위험성은 원격에서 대상 시스템을 공격하여 모든 제어권(악성코드와 같은 임의의 프로그램 수행 등)을 탈취할 수도 있다는 점에서 위험한 공격방법으로 알려져 있다.
윈도우 XP SP2의 데이터 실행 방지 (Data Execution Prevention) 소개 데이터 실행 방지(Data Execution Prevention, 이하 DEP)는 스택 & 힙 영역에 대해 보호하는 기능을 일컫는다. 그렇다면 왜 윈도우는 이러한 기능을 지원하게 된 것일까? 그 답은 윈도우 보안 취약점을 조금이라도 관심있게 본 사용자들이라면 쉽게 알 수 있다. 윈도우 취약점 중 버퍼 오버플로우를 일으켜 원격에서 상대방 시스템의 제어권을 획득하는 취약점의 비중은 상당히 높다. 외신에 따르면 최근 2년간의 윈도우 보안패치의 50%는 버퍼 오버플로우를 해결하기 위한 패치였다고 한다. 또한 어떤 자료에서는 이 취약점만 해결하여도 개인 및 기업들이 이를 이용한 악성코드로부터 피해를 예방 및 복구하기 위해서 드는 천문학적인 수치의 비용을 절감할 수 있을 것이라는 추론도 있었다. 그렇다면 이 좋은 기능은 모든 윈도우에서 지원이 되는 것일까? 아쉽지만 (윈도우 계열 중) 우리가 많이 사용하는 다음의 OS들부터 이 기능이 디폴트로 포함되어 동작되고 있다. 바로 윈도우 XP SP2와 윈도우 서버 2003 SP1에 그 기능이 적용되어 있다. 해당 OS를 사용하는 사용자들도 겉으로 보이는 윈도우 방화벽 및 팝업 차단기능 이외에 이러한 기능이 있다는 사실을 아는 사용자들은 매우 드물 것이다. 또한 중요한 것은 이 기능이 완벽히 동작하기 위해서는 위 OS들은 필수이기도 하지만 아울러 No Execute (이하 NX) 또는 Enhanced Virus Protection (이하 EVP) 기능이 명시된 마이크로프로세서(이하 CPU)와 함께 사용되어야만 완벽한 기능을 발휘할 수 있다. 물론 이러한 CPU가 없어도 DEP가 지원되는 위 OS들에서 부족하지만 소프트웨어적으로 본 기능을 수행해주고 있다. 윈도우 XP SP2 에서 DEP 기능은 아래와 같이 설정될 수 있다. [그림2]를 참고한다. 1) 시작 -> 제어판을 차례로 클릭한 다음 '시스템'을 두 번 클릭한다.
윈도우 XP SP2는 기본으로 윈도우의 중요 프로세스 및 서비스들에 대해서 DEP로 보호하고 있다. 사용자는 옵션에서 윈도우의 중요 프로세스 및 서비스들을 포함한 모든 프로세스 및 서비스들도 DEP로 부터 보호할 수 있도록 배려해 두었다. 대부분의 악성코드가 이용하는 버퍼 오버플로우 취약점 공격은 윈도우 중요 프로세스 및 서비스들에서 이루어지므로 사용자가 별도로 설정하지 않아도 기본적으로 보호를 받고 있는 것이다. 한편으로 앞서 얘기한 내용처럼 DEP와 호환성 문제를 일으킬 수 있는 응용 프로그램 및 드라이버들을 위해서 DEP 로 부터 제외 될 수 있는 별도의 옵션도 마련해두고 있다.
버퍼 오버플로우 동작원리에서도 얘기한 것처럼 버퍼 오버플로우를 발생하는 악의적인 코드들은 데이터 페이지에서 자신의 코드를 실행하려고 한다. 이것을 DEP 또는 NX, EVP가 이를 감지하고 해당 코드를 실행할 수 없도록 예외처리를 한 후 종료시켜 버린다. 즉, DEP는 NX, EVP 기능 지원의 CPU를 이용해 임의의 코드가 특정 메모리 영역에서 실행되지 못하도록 하는 (읽기전용) 속성을 부여한다. DEP 기능은 가상 메모리 페이지별로 작동하며 대부분의 경우 Page Table Enrty(이하 PTE)의 비트를 변경하여 메모리 페이지에 표시해 둔다. 이 기능이 선행되기 위한 조건으로 Physical Address Extension(이하 PAE) 모드에서 프로세서가 실행되어야만 한다. DEP의 실제 하드웨어적 구현과 가상 메모리 페이지 표시 방식은 프로세스 아키텍처(32Bit/64Bit)에 따라 다르다. 그러나 DEP를 지원하는 CPU 들은 적절한 특성 집합으로 표시된 페이지로부터 코드가 실행되는 경우 예외 처리하는 기능을 가지고 있다. [그림3]은 EVP 지원 CPU와 윈도우 XP SP2에서 NX 데모 프로그램을 실행한 결과이다.
실행 방지 기능의 가장 중요한 점은 스택 & 힙의 데이터 페이지로부터의 코드 실행을 금지한다는 점이다. 정상적인 시스템에서 코드는 일반적으로 기본 힙 및 스택으로부터 실행되지 않는다. DEP는 이러한 위치로부터 실행되는 코드를 탐지하여 실행이 이루어지면 예외 처리하며 예외 사항이 처리되지 않으면 그 프로세스는 종료한다. 이와 같이 종료된 응용 프로그램은 다음의 레지스트리 값에 기록된다.
- NoExecute : (커널 및 유저모드에 대한) DEP 기능 활성 / PAE 지원시
다음과 같은 CPU 제조사들과 운영체제 제작사들이 DEP 기능 지원을 밝히고 있다. 여기서는 x86 호환 CPU에 한정한다.
역시 작년 윈도우 XP SP2 공개로 인하여 Intel의 경우 올해들어 부쩍 NX 기능이 포함된 J타입의 다양한 클럭수를 가진 프레스캇 코어의 펜티엄 4 CPU를 공급하고 있다. DEP 기능이 포함된 CPU를 뒷받침해주는 운영체제로는 다음과 같다.
DEP 기능을 두고 혹자는 안티 바이러스 프로그램처럼 이 기능이 모든 악성코드 유형 (바이러스, 웜, 트로이목마)을 막아 줄 것이라고 믿는 사용자들이 많다. 특히 매스컴을 통해서 알려진 이 기능은 과장된 면이 없지 않아 있기 때문이다. 마치 이 기능이 포함된 CPU와 운영체제를 사용하면 더 이상 악성코드에 감염되지 않는다는 뉘앙스를 풍기는 기사를 필자는 여러 번 보았다. 이것은 사실이 아니다. DEP 기능은 버퍼 오버플로우를 일으키는 공격에 대해서만 효과적인 차단을 할 뿐이다. 즉, 데이터 영역에서 실행되려는 코드를 감시할 뿐이다. 감염된 파일을 모르고 실행하여 바이러스에 감염되거나, 메일을 통한 이메일 웜의 감염, 메신저나 P2P 등으로 다운로드 한 파일이 백도어인 경우 DEP는 아무런 대응이 되지 못한다. 물론 로컬에서 실행되는 임의의 프로그램이 버퍼 오버플로우를 발생한다면 그것이 악성이든 정상적이든 차단은 된다. 요즘 보안위협을 두고 복합적인 위협이라고 표현한다. 더 이상 하나의 보안 프로그램만으로는 효과적인 대응을 하지 못한다는 것이다. 과거 안티 바이러스 하나에만 의존했던 것과 달리 이제는 개인 방화벽 프로그램과 안티 스파이웨어 제품들도 가지고 있어야만 안전하다고 얘기한다. DEP 기능이 전혀 새로운 방식으로 버퍼 오버플로우를 막는 기술이 아니다. 일부 외산 안티 바이러스 제품 중에서도 버퍼 오버 플로우를 방지하는 기능이 포함된 것이 있고 또한 리눅스 제품 중에서도 이와 같은 제품들이 존재했었다. 최근 들어 CPU 제조사, 운영체제작사, 네트워크 장비 제작사 또는 메인보드 칩셋 제조사들마저도 보안에 대한 인식을 달리하여 자사의 제품에 보안기능을 추가하려고 하거나 추가한 제품들을 선보이고 있다. 그래픽 카드로 유명한 nVIDIA 경우 재작년부터 nForce 3라는 메인보드의 칩셋에 하드웨어형 방화벽(NV Secure Networking Processor)을 탑재하였다. Intel 경우 차기 CPU에서는 '라그란데'라고 알려진 보안기술을 탑재할 예정이라고 한다. 과거에는 이러한 업체들이 보안에 대해서 무관심 했거나 소홀한 점이 많았다. 하지만 복합위협으로 대변되는 최근 상황에서 서로 유대관계를 가지고 대응하지 않으면 안되는 상황으로 인해 업체들의 이러한 노력은 큰 시너지 효과를 가져오게 되었고 이러한 첫번째 결과가 바로 DEP 기능이 아닐까 조심스레 추정해 본다. Tags: DEP WinGate win2003 winxp 윈도우즈 | |||
| |||
| |||
로그인을 하시면 댓글을 등록 할 수 있습니다. |
SIMILAR POSTS DEP 기능 비활성화 |
OTHER POSTS IN THE SAME CATEGORY CD, 플로피등의 디스크 삽입 자동 판단루틴 |