호스트 기반 침입 탐지 시스템

호스트 기반 침입 탐지 시스템(Host-based Intrusion Detection System, HIDS)은 침입 탐지 시스템의 특별한 종류로서, 컴퓨터 시스템의 내부를 감시하고 분석하는 데 더 중점을 둔다. 네트워크 침입 탐지 시스템(NIDS)과 같은 외부 인터페이스에 중점을 두는 시스템과는 구별된다. HIDS는 컴퓨터 시스템의 동작이나 상태를 모두 감시하거나 부분적으로 감시한다. NIDS가 네트워크 패킷을 검사하는 것처럼, HIDS는 프로그램이 접근하는 리소스를 탐지하여 워드 프로세서 같은 프로그램이 시스템 비밀번호 데이터베이스를 수정할 수 없게 하는 방식으로 동작할 수 있다. 이와 비슷하게 HIDS는 시스템의 상태를 확인하여 램이나 파일 시스템 등에 존재하는 시스템의 상태 정보에 기대했던 내용이 있는지 여부를 검사하는 방식으로 동작할 수 있다. HIDS를 운영 체제의 보안 정책을 우회하는 무언가를 감시하는 에이전트라고 생각할 수 있다. 많은 컴퓨터 사용자들이 바이러스 검사 소프트웨어 패키지의 형태로 시스템의 동작을 감시하는 도구들과 마주하고 있다. 이러한 검사 프로그램들은 시스템의 상태를 감시하기는 하지만, 대부분의 실행시간을 누가 어떤 일을 하고 있는지와 프로그램이 리소스에 접근할 수 있는지 없는지 여부를 조사하는 데 사용한다. 기능 면에서 많은 도구들이 서로 중첩되기 때문에, 여기서 이 부분은 명확하지 않다. 성공적인 침입자(해커)들은 일반적으로 그들이 한 행동에 대한 흔적을 남긴다. (사실 그러한 침입자들은 종종 자신이 공격한 시스템을 소유하고 싶어하며, 시스템에 다시 접근할 수 있게 하는 소프트웨어를 설치한다.) HIDS는 이 원리를 이용한다. 이론적으로 컴퓨터 사용자는 그러한 어떠한 변경사항도 탐지가 가능하며, HIDS는 단지 이 작업을 수행하여 결과를 보고하는 것이다. 이상적으로 HIDS는 NIDS와 함께 동작하며, NIDS로부터 통과된 것들에 대해 HIDS가 찾게 된다. 아이러니하게도 컴퓨터에 성공적으로 침투한 침입자들은 그들이 침입한 시스템을 보호하기 위해 최고의 보안 기술을 바로 시스템에 적용한다. 오직 그들이 설치한 백도어만 열려있게 된다. 그래서 다른 침입자들이 컴퓨터에 침입할 수 없도록 한다.(크래커들은 경쟁적인 집단이다.) 다시 또 누군가는 그러한 변경 사항을 발견하고 학습할 수 있다. 일반적으로 HIDS는 감시해야 하는 시스템 오브젝트들에 대한 데이터베이스(오브젝트 데이터베이스)를 사용한다. 보통은 (꼭 그런것은 아니지만) 파일 시스템 오브젝트들에 대한 데이터베이스가 된다. HIDS는 또한 메모리의 적절한 영역이 변경되지 않았는지를 검사할 수 있다. 예를 들어 리눅스에서의 시스템 콜 테이블이나, 윈도우에서의 다양한 vtable 구조체를 검사할 수 있다. HIDS는 보통 감시해야 하는 오브젝트들의 속성(권한, 크기, 변경된 날짜)을 기억한다. 만약 오브젝트들에 내용이 있다면 아마도 특정 형식(MD5 해시 또는 기타 유사한 해시)의 체크섬을 만들 것이다. 이 정보는 나중에 비교되기 위해 데이터베이스(체크섬 데이터베이스)에 저장된다. MD5 해시가 일치한다고 해서 해당 파일이 침입자 또는 권한 없는 사용자에 의해 변경되지 않았다는 것을 완전하게 보장하지 않는다는 사실에 주의해야 한다. 2004년도 연구에서 그러한 상황이 발생할 확률이 일반적으로 희망했던 수치를 초과할 수 있다는 주장이 제기되었다. (그러나 여전히 논쟁중에 있다.) 프로그램이 설치될 때 또는 감시되는 오브젝트들이 정당하게 변경될 때마다 HIDS는 관련된 오브젝트들을 스캐닝하여 체크섬 데이터베이스를 반드시 초기화해야 한다. 컴퓨터 보안 담당자들은 이 과정을 엄격하게 통제해야 하는데, 이는 침입자들에 의해 해당 데이터베이스가 무단으로 수정되는 상황을 예방한다. 그러한 초기화는 따라서 매우 많은 시간이 걸리며 암호화의 방법으로 각각의 감시되는 오브젝트와 체크섬 데이터베이스 또는 그 이상의 것을 잠그는 작업이 포함된다. 이런 이유로, HIDS 제작사들은 보통 체크섬 데이터베이스가 자주 업데이트되지 않도록 오브젝트 데이터베이스를 구축한다. 컴퓨터 시스템은 일반적으로 수시로 변경되는 많은 오브젝트들을 갖고 있다. 그러한 오브젝트를 침입자가 조작하려고 시도할 수 있으며, 따라서 HIDS는 그러한 오브젝트를 감시해야 한다. 그러나 수시로 변경되는 오브젝트에 체크섬을 사용하는 것은 적합하지 않다. 이 문제를 극복하기 위해 HIDS는 수정되는 파일의 속성을 감시하거나, 마지막으로 확인하였을 때보다 크기가 줄어든 로그 파일을 검사하는 등의 다양한 탐지 기술을 도입하여 사용하고 있다. 시스템 관리자가 적합한 오브젝트 데이터베이스를 구축하고, 체크섬 데이터베이스를 초기화하였다면, HIDS는 감시되는 오브젝트들을 정기적으로 스캔하여 문제있는 것으로 보이는 모든 사항을 보고하게 된다. 보고는 로그 파일이나 이메일, 기타 유사한 형식이 될 수 있다. HIDS는 보통 오브젝트 데이터베이스와 체크섬 데이터베이스 그리고 HIDS의 보고 내용이 무단으로 변경되지 않도록 예방하기 위해 가능한 모든 수단을 사용한다. 그러나 만약 침입자가 HIDS에 의해 감시되는 오브젝트를 조작하는 데 성공했다면, 그리고 보안 관리자가 적절한 예방 조치를 취하지 않았다면, 침입자가 HIDS 자체를 조작하는 것을 막을 수 없게 된다. 예를 들어 많은 웜과 컴퓨터 바이러스들은 안티 바이러스 툴에 대한 무력화를 시도한다. 유감스럽게도 그러한 많은 시도들이 성공된다. 암호화 기술과는 별개로, HIDS는 관리자가 데이터베이스를 CD-ROM 또는 기타 읽기 전용의 장치들(데이터베이스를 자주 업데이트할 수 없도록 하는 또 다른 요인)에 저장하거나 시스템 외부의 메모리에 저장하도록 허용하기도 한다. 이와 비슷한 형태로 HIDS는 종종 로그를 시스템 외부로 즉시 보내기도 하는데, 이 작업은 "Transmit"으로만 연결된 시리얼 포트같은 단방향 통신 채널을 통해 이루어진다. 누군가는 신뢰 플랫폼 모듈(trusted platform module, TPM)이 HIDS의 한 종류를 포함한다고 주장할 수 있다. 비록 TPM의 범위가 HIDS의 그것과 많은 면에서 다르긴 하지만, 기본적으로 TPM은 누가 또는 무엇이 컴퓨터의 일부를 무단으로 수정했는지 여부를 식별할 수 있는 수단을 제공한다. 설계측면에서 TPM은 CPU 이외의 하드웨어에 의존하여, (적어도 지금 이 시점까지는) 궁극적인 호스트 기반 침입 탐지를 제공한다. 따라서 TPM은 침입자가 오브젝트 데이터베이스와 체크섬 데이터베이스를 더욱 더 조작하기 어렵게 만든다. 침입 탐지 시스템 네트워크 침입 탐지 시스템 (영어) OSSEC - 오픈 소스 HIDS (영어) md5deep - 오픈 소스 HIDS (영어) Aide - 오픈 소스 HIDS (영어) Samhain - 오픈 소스 HIDS (영어) Snort - 오픈 소스 NIDS (영어) OpenHIDS - Windows NT/2000/XP/2003 시스템용 오픈 소스 HIDS (영어) serverM - Linux/Mac OS X 용 오픈 소스 HIDS