본문 바로가기
정보보호 (Security)

Solutions- Virtual PC로 Honeypot을 만들자

by 날으는물고기 2009. 2. 11.

Solutions- Virtual PC로 Honeypot을 만들자

공격자가 올 것이다.

(역자주 : 허니팟 - 실제로 자료를 가진 호스트인것 처럼 침입자를 속이는 최신 침입탐지기법으로 허니팟 시스템을 이용하면, 공격하거나 침입하는 해커를 유인할 수 있음)

허니팟(Honeypot)은 잠재적 공격자에 대한 조기 경고 제공, 보안 전략의 결점 파악, 그리고 조직 전체의 보안 의식을 향상시키기 위해 점차 사용되고 있다. 허니팟은 웹 서버, 메일 서버, 데이터베이스 서버, 응용 프로그램 서버, 그리고 방화벽까지도 포함하는 다양한 내, 외부 장비를 시뮬레이트할 수 있다. 소프트웨어 개발 관리자인 필자는 팀에서 개발한 방어해야할 소프트웨어와 운영체제의 취약점을 알기 위해 정기적으로 허니팟을 사용한다.

허니팟의 설치와 운영에는 네트워크 툴과 컴퓨터 법률 수사에 대한 몇몇 전문가뿐만 아니라 법적 고려 사항도 포함된다. 필자가 소개하는 허니팟에 대한 설치와 운영은, 법적, 도덕적 이슈와 네트워킹과 컴퓨터 과학수사에 대해 어느정도 지식이 있다고 가정한다. 필자는 종종 허니팟을 만들기 위해 Microsoft Virtual PC 2004를 이용한다. 비록 많은 사람들이 Virtual PC보다 VMware가 성능이 더 낫다고 주장하지만 필자는 좀더 나은 가격(Virtual PC는 129불, VMWare는 199불)에 더 나은 이유를 두고 싶다.

[그림 1] 일반적인 허니팟 배포

[그림 2] 두 개의 네트워크 카드 사용

하드웨어와 운영체제의 선택

허니팟 하드웨어 요구 사항의 첫째 고려 사항은 실행하려는 동시 가상 세션의 숫자이다. 일반적으로 한 세션만 필요한 독립 허니팟은 DMZ 방어 시험이나 잠재적 공격에 대한 경고 정보를 미리 모으는 경우엔 충분하다. 그러나 만약 당신의 목적이 내부 전체 네트워크의 보안을 테스트하려고 한다면 당신은 [그림 1]에서 보여지는 다수의 동시 가상 세션이 요구되는 허니넷(Honeynet)이 필요할 것이다.

한 컴퓨터에서 실행되는 동시 가상 세션의 숫자는 시스템 CPU 성능과 메모리에 제한을 받는다. Virtual PC는 1GHz 또는 그 이상의 CPU와 CD-ROM 드라이브를 가진 윈도우 XP 프로페셔널과 윈도우 2000 프로페셔널 시스템에서 실행된다. 일반적으로 가상 세션당 32메가 ~ 256메가의 메모리와 50메가 ~ 4기가바이트의 디스크 공간이 시스템 필요하다. 따라서, 4~5개의 동시 가상 세션을 실행하기 위해 1기가 메모리와 40기가 하드 드라이브를 가진 3GHz 또는 그이상의 펜티엄 4 프로세서(P4)가 필요할 수 있다.

당신은 두개의 네트워크 카드가 필요할 것이다. 당신의 가상 세션은 물리적 네트워크 카드를 가지지 않으므로 호스트와 첫번째 물리적 네트워크 카드를 공유할 필요가 있을 것이다. 공유를 하기 위해 Virtual PC는 가상 네트워크 아답터에 대한 장치 드라이버를 제공한다. 허니팟 설치는 또한 호스트에 Virtual PC 드라이버와 같은, 입출입 패킷을 거부 또는 수정할 네트워크-레벨 장치 드라이버를 구현하기 위해 추가 소프트웨어(예를 들어 데스크탑 방화벽, 네트워크 모니터)를 설치해야 한다. 결론적으로 허니팟으로 들어오고 나가는 트래픽의 정확한 패킷 추적을 위해서는 두번째 네트워크 카드로부터 트래픽을 캡쳐하는 것이 가장 좋다. [그림 2]와 같이 당신은 허브에 두번째 네트워크 카드를 꽂고, DMZ(Demilitarized Zone) 네트워크의 공인 주소로 첫번째 인터페이스를 설정한다. 그리고 DMZ 네트워크(라우팅 되지 않는 주소가 가장 이상적임)가 아닌 사설 주소로 두번째 인터페이스를 설정한다. 당신은 두번째 네트워크 아답터를 첫번째 아답타로부터 들어오는 트래픽을 살펴 보기 위한 Promiscuous 모드로 설정한다.

필자는 또한 읽기 전용 미디어에 법적 데이터를 보관하기 위해 DVD-RW 드라이브를 권장한다. 가상 허니팟을 설치하기 전, 필자는 차후 법적 분석을 위한 증거를 보관하기 위해, 하드 디스크의 이미지를 복사하는데 많은 시간을 보내야 했다. 하드 디스크와 메모리의 내용이 호스트 컴퓨터의 물리적 드라이브내 파일로만 존재하므로(파일 이외는 없음), 가상 세계에서 이러한 작업은 간단해질 수 있다. 만약 당신이 동적 가상 디스크를 만든다고 하였다면, 가상 디스크의 파일은 거의 대부분의 윈도우 운영체제에서 평균 3기가~4기가정도 일것이다. 그러므로, 읽기 전용 미디어에 이 데이터를 보관하려면, 당신은 DVD-RW 드라이브를 원할 것이다.

마지막으로, 호스트 시스템의 운영체제를 선택해야 한다. Virtual PC 2004는 윈도우 XP 프로페셔널과 윈도우 2000만 지원한다. 그러나 실제로 윈도우 서버 2003(비록 설치시 경고는 나타나지만)에서도 실행할 수 있다. 운영체제 선택의 첫번째 고려사항은 보안을 위한 레벨이다. 허니팟 호스트는 공인 네트워크에 연결될 것이므로, 방호 호스트(Bastion Host)로 보안 강화하는 것이 필수적이다. 비록 세가지 운영체제 모두가 보안을 강화하기에 적당하지만, 필자는 추가 보안 기능을 제공하는 호스트 플랫폼으로, 윈도우 2000위에 윈도우 2003이나 XP를 권장한다.

호스트 설정

[그림 1]과 같이 방호 호스트로서, 방화벽이나 라우터에 의해 인터넷으로부터 한단계 지켜지는 허니팟일지더라도 보안을 강화할 필요가 있다. 당신이 수집하는 데이터의 신뢰를 얻기 위해, 당신은 내외부 침입으로부터 당신의 허니팟이 안전한지 확인해야 한다. 최소한, 당신은 모든 보안 패치의 적용, 스테이트풀(Stateful) 방화벽의 설치, 보안 정책의 설정, 감사의 사용, 제한된 계정 권한, 그리고 불필요한 모든 네트워크 서비스를 중지시켜야 한다. 만약 당신이 시스템의 보안 강화에 친숙하지 않다면, 필자는 NSA(National Security Agency) 보안 구성 가이드의 참고를 권장한다. (이 가이드를 찾기 위한 정보는 Learning Path 박스를 살펴보자.) 한가지 마지막 팁: 보안 강화 작업은 침입 테스트없이는 완료되지 않는다. Nmap이나 두가지 이상의 취약점 스캐너와 같은 보안 툴을 이용하여, 공인 네트워크에 시스템을 연결하기 전 발견되는 이슈를 수정했는지 확인한다. 이 기사에서 언급하는 Nmap과 다른 툴에 대한 정보를 얻기 위해서는 [표 1]을 살펴보라.

[표 1] 허니팟 도구

만약 당신이 허니팟으로부터 수집된 증거를 기소의 목적으로 사용할 것이라면 호스트 보안을 계획하는 동안 이를 상기해야 한다. 법정으로부터 증거 요구를 처리하기 위하여 주의깊게 모든 보안 측정을 고려하고, 문서화할 필요가 있다. 특히 서로서로 기록을 남기는 호스트와 가상 세션의 가능성에 주의를 기울여야 한다.

호스트의 보안을 강화한 후, 작업에 필요하고, 허니팟의 차후 법률적 분석을 위한 추가 응용 프로그램과 유틸리티를 설치하고 싶을 것이다. 최소한, 당신은 IDS(Intrusion Detection System)와 네트워크 모니터, 침입-테스팅 툴, 그리고 과학적 분석 툴이 필요할 것이다.

IDS는 가상 세션으로 가능한 침투의 고급 경고를 제공한다. 당신은 다양한 IDS 유형을 선택할 수 있다. 일반적으로 Snort와 같은 모든 호스트 기반 IDS가 사용가능하다. 비록, 기본적인 규칙과 사인으로 IDS를 실행할 수 있지만, 잘못된 경고의 감소와 허니팟 사용량과 구축을 더욱 반영할 수 있는 규칙을 생성하고자 할 것이다. IDS 가 가상 세션으로 들어오고 나가는 모든 트래칙을 캡쳐하기 위해, 첫번째로부터 트래픽을 듣기 위해 두번째 잠복 네트워크 카드의 사용을 설정해야 한다.

당신은 또한 잠재적인 공격과 개조된 기존 공격을 알아내기 위해 네트워크 모니터가 필요할 것이다. 필자는 항상 허니팟이 실제 가동에서부터 오프라인이 될때까지, 호스트와 가상 세션의 모든 인바운드와 아웃바운드 트래픽을 캡쳐한다. 패킷 추적을 살펴보기 위해 많은 시간이 필요하므로, 당신이 선호하는 모니터를 설치한다. 비록 윈도우의 많은 버전에서 추가적인 네트워크 모니터링 툴이 제공되지만, 이는 제한적이고, 트래픽내에 세션을 분석하기 위해 사용하는 것은 매우 난해하다. 만약 당신이 특정 네트워크 모니터와 친숙하지 않다면, Ethereal의 사용을 고려해보자.

침입 테스팅 도구로 필자는 일반적으로 윈도우 서버 2003 리소스 킷 도구, 마이크로소프트 윈도우 시큐리티 리소스 킷 CD-ROM, 그리고 Sysinternals로부터 유틸리티를 선택하고 설치한다. 필자는 또한 적어도 하나의 취약점 스캐너와 Nmap을 설치한다. 과학적 분석 도구로 필자는 헥스 편집기와 두가지 리소스킷의 유틸리티를 사용한다. 필자는 또한 허니팟으로부터 증거를 모으고 분석하기 위한 특정 유틸리티의 모음을 기록하고 있다.

가상 세션의 생성

Virtual PC를 설치하는 데는 시간이 많이 걸리지 않는다. 응용 프로그램은 적은 옵션을 가지고 있으므로, 가상 세션을 설정하고 설치하는데, 설치 시간의 대부분을 소비한다. 간단한 마법사가 메모리의 설정, 3개까지의 하드 드라이브, 4개까지의 네트워크 카드, 그리고 COM 포트, 패러럴 포트, 그리고 사운드 카드의 설정을 시켜준다. [그림 3]은 가상 세션의 설정 패널을 보여준다.

그리고 Linked-to-physical와 같은 가상 하드 디스크의 4가지 유형을 제공한다. 물리 디스크에 만들어진 한개의 파일은 4가지중 한가지로 만들어진다. Dynamic 드라이브는 호스트 OS에 의해 필요한 만큼 확장된다. Fixed-Size 디스크는 생성후 당신이 수정할 수 있는, 사용 공간량을 미리 정의한다. Differencing 디스크는 디스크를 기본 이미지로부터 바뀐 내용만 저장할 수 있게 해준다. Linked-to-physical 디스크는 마운트되지 않은 물리 디스크에 당신의 가상 디스크를 설치할 수 있게 해준다.

[그림 3] 가상PC 설정 화면

각 옵션은 허니팟 설정에 장단점을 가진다. Linked-to-physical 디스크는 호스트로부터 상호-기록 가능성을 높히지만, 증거 보안을 위하여 이동가능한 드라이브 사용을 계획할 경우 이상적이다. Differencing 디스크는 기본 드라이브 이미지에 더하여, 변경 내용을 합쳐주고, 찾아주지만, 바이러니-레벨의 과학적 분석을 하는데는 다소 복잡하다. Dynamic 드라이브는 호스트의 디스크 사용량을 줄이는데 편리함을 제공하고, 가상 세션의 필요성에 기반하여 동적으로 확장해 주지만, 디스크의 외관상 크기를 제어하지는 못한다. Fixed-Size 드라이브는 호스트의 물리 디스크에 공간을 미리-할당하기 위해 필요하다. 만약 당신이 너무 작은 공간을 할당하거나, 너무 많은 공간을 할당하여 공간을 낭비한다면, 문제가 될 수 있다. 그러나, 디스크의 보이는 용량을 제어할 수 있게 해준다. 모든 디스크 옵션은 디스크에 가한 변경을 일괄 처리할 수 있는 Undo Disks(별도의 파일내에 변경 내용을 저장하고 세션의 마지막에 변경을 처리할 것인지 롤백할 것인지를 결정할 수 있다.)를 지원한다. 만약 당신이 어떤 유형의 디스크를 선택할지 모른다면, Dynamic 드라이브를 사용하고, 과학적 분석에 복잡성을 더하는 undo disks를 사용하지 않는다.

디스크 선택에 개의치 않고, 호스트의 물리 디스크가 가상 디스크로 인해 낭비되는 것을 막기 위해, 사용전 가상 디스크의 용량을 줄이는데 시간이 필요하다. 디스크를 지우기 위해, Disk-Wiping 유틸리티가 포함된 부팅 가능한 플로피 디스크나 CD-ROM을 먼저 만든다. 다른 방법으로는 부팅 가능한 플로피나 CD-ROM 이미지를 만든 후, 가상 세션에서 이를 로딩한다. OS를 부팅한 후, 당신은 Disk-Wiping 유틸리티를 실행할 수 있다. 프리웨어인 Active@ KillDisk 유틸리티는 가상 세션을 부팅할 때 사용할 수 있는 부팅가능한 ISO(International Organization for Standardization) 이미지를 포함하고 있다.

비록 Virtual PC는 NAT(Network Address translation)를 통한 공유 네트워킹, 물리적 네트워크 아답터의 공유, 루프백 아답터의 사용과 같은 세가지 유형의 네트워크 연결을 제공한다. 호스트에서 가상 세션이 외부에 대한 처리를 할 필요가 있으므로 허니팟은 물리적 네트워크 아답타의 공유만 사용가능하다. 원래 Virtual PC 네트워크 아답타는 허브에 연결된 것처럼 동작하게 되어져 있다. 만약 앞서 언급한 것처럼 두개의 네트워크 카드를 사용한다면, 당신은 가상 세션을 공유하기 위해 첫번째 네트워크 카드만 선택해야 한다.

기본적으로 가상 세션은 호스트의 CD-ROM과 플로피 드라이브를 공유한다. 그래서, 만약 CD-ROM이나 플로피 디스크를 호스트 드라이브에 넣으면, 가상 세션에서도 이를 볼 수 있다. 물리적 CD-ROM이 가상 세션내에 보이지 않게 하려면, 필자는 가상 CD-ROM 드라이브내 로딩되는 ISO 이미지를 남겨둔다.

당신의 허니팟 생성

허니팟의 생성은 각 가상 시스템의 기본 OS 설치, 각 가상 시스템의 프로필 설정, 프로필을 확인하기 위한 테스트의 실행, 가상 세션의 백업의 순서가 필요하다. 당신은 외부 감염의 모든 가능성을 제거하기 위해, 고립된 사설 네트워크에서 이러한 작업을 진행해야 한다. 게다가, 필자는 각 가상 세션을 설치하는 동안, 자세한 문서의 작성을 강력히 권장한다. 이 업무는 허니팟의 정확한 기록을 가질 수 있게 해주고, 차후, 보안상 문제가 된 가상 시스템의 과학적 분석을 할 때 도움을 준다.

가상 시스템의 프로필은 OS의 설치와 서드-파티 소프트웨어, 특정 서비스의 노출을 포함한 특정 구성이다. 예를 들어, 웹 서버 팜내 취약점을 테스트하려면, IIS를 IIS Lockdown 툴과 TCP 80과 443을 제외한 모든 포트를 막아놓은 패킷 필터 설정을 한다. 이를 내장한 윈도우 2000 서버내 마이크로소프트 IIS 5.0 웹 서버를 미러한 프로필을 설정한다. 기본 프로필로서, 이 가상 세션을 저장할 수 있다. 그리고 허니팟 테스트를 좀더 하기 위하여 알려진 취약점을 추가, 제거한 다양한 프로필을 생성할 수 있다.

Virtual PC내 기본 운영 체제 설치는 간단하나, 시간이 많이 걸린다. 가상 세션의 설정후, 당신은 설치하고자 하는 운영체제의 부팅 가능한 CD-ROM이나 ISO 이미지를 넣고, 기본 설치를 실행한다. 불행하게도, Virtual PC내 운영체제의 설치는 매우 느리다. 호스트 OS로 윈도우 2003의 설치는 20분 정도밖에 안걸리나, 가상 머신내에 이를 설치할 때는 4시간 이상이 걸린다. 필자는 호스트와 가상 세션사이에 CPU를 어떻게 공유할지에 대한 기본 옵션을 변경해 보았지만, 설치 시간내 차이를 느낄 수 있을 정도의 변화가 있는 것같지는 않았따. 다행하게도, 한번 설치한 이후, 게스트 운영체제는 매우 잘 동작한다.

그다음, 필요한 프로필로 각 가상 세션을 설정한다. 이 순서는 운영체제의 설정, 필요한 컴포넌트의 설치, 시스템 보안 설정, 필요 서비스 팩과 패치의 적용, 그리고 실행하고자 하는 서드-파티 소프트웨어의 설치를 포함한다. 만약 웹서버와 같이, 외부에서 사용 가능한 서버를 계획한다면, 서비스가 허니팟이라는 사실을 숨기도록 설정하여야 한다. 예를 들어 컨텐츠가 이를 운영하는 조직과 연관되지 않거나 다소 오래된 웹 서버는 잠재된 공격자의 의심을 받거나, 흥미를 떨어뜨릴 것이다.

당신의 시스템을 감출 때, 합법이지만, 몇가지 도덕적 질문을 유발할 유인(Enticement)의 의미와 불법인 함정(Entrapment)에 대해서 잘 알고 있어야 한다. 당신의 DMZ내 익명의 허니팟 웹 서버를 운영하는 것은 찾아올 내부 공격자를 유인한다. 그러나 웹 서버의 존재와 내부 컨텐츠를 잠재적 공격자에게 이메일 메세지로 보내는 것은 함정이 될 수 있다. 법률 전문가가 허니팟의 함정을 책임질 수 있다는 것에 대해 납득하지 않더라도 당신은 이 주제에 대해 공부해야만 한다. (시작하기 위한 몇가지 장소가 Learning Path 박스에 있다.) 많은 전문가는 사용자는 허가받아야 하며, 모니터링 되고 있다는 배너를 내부 허니팟이 보여줘야 한다고 권장한다.

각 가상 세션을 설정하는 일부분으로, 필요한 증거를 제공하기 위한 설정을 했는지 확인해야 한다. 비록 당신은 몇몇 증거(예를 들어, 네트워크 트래픽)을 가상 세션의 밖에서 모을 수 있지만, 최고의 법적 증거 중 일부는 가상 세션의 보안 위협에서 온다. 필자는 항상 모든 로그인/로그아웃, 프로세스, 계정 관리, 그리고 정책 이벤트에 대한 로깅을 켜놓고, 이벤트 로그의 크기를 증가시켜 놓는다.

그후, 의도한 데로 동작하는지 확인하기 위해, 각 가상 시스템의 내, 외부 프로필을 테스트해야 한다. 예를 들어, 만약 당신이 인바운드 TCP 트래픽 포트 80만 허가하는 데스크탑 방화벽을 내장한 웹 서버를 공개하길 원한다면, 당신이 프로필을 정확하게 설정했는지 확인하기 위해, 침입-테스팅 도구를 사용해야 한다. 가상 세션 외부 프로필중 일반적인 관점은 거의 발견되지 않을 것이다. 불행하게도, 가상 세션의 내부 프로필에 대해서는 동일하게 말할 수 없다. Virtual PC는 하드웨어를 에뮬레이션하므로, 가상 세션은 일반적 드라이버로 설치된다. 그래서, 공격자는 세션이 가상이라는 사실에 대해서 매우 빠르게 발견할 수 있다. 당신은 VMWare 세션에서도 한가지를 제외하고는, 동일한 문제를 더 많이 발견할 수 있다. Virtual PC에서, 하드 디스크는 Virtual HD라는 설명을 가진다. 이 설명은 숨길 수 없다. 좋은 뉴스는 지난 2년동안 가상화의 빠른 채택이 가상 세션이 일반적이게 하였고, 공격자에게 의심을 덜 받게 되었다.

가상 세션 설정의 마지막 단계는 각 세션의 백업을 만드는 것이다. 당신은 세가지 이유로 인해 이를 해야만 한다. 첫번째, 세션의 설치와 설정은 많은 노력이 필요하고, 깔끔한 백업은 이러한 노고를 잃지 않게 한다. 두번째, 시스템이 보안상 위협에 빠졌을 때, 당신은 보안 위협전의 상태와 비교, 분석을 위해 되돌릴 수 있게 한다. 마지막으로 당신은 종종, 추가 증거의 수집을 위해 특정 가상 세션의 설정을 조금 바꾸길 원할 수 있다. 이 경우 백업이 특정 변경을 하기 위한, 기본 설정으로 빠르게 돌아가게 한다.

실제 상황으로 가자

당신은 허니팟을 실제 상황으로 옮기기 위한 준비를 거의 다했지만, 옮기기 전, 당신은 세션 설정을 마지막에 리뷰해야하며 세션의 증거 스냅샷을 찍어야 하고, 호스트에서 증거 수집을 시작해야 한다. 필자는 보통 마지막 설정내 일관성과 무결성을 확인하기 위해 이 단계에서 체크리스트를 이용하여 작업을 한다.

설정을 리뷰하기 위해, 가상 세션을 시작하고 적절한 설정을 했는지 확인차, 개개별의 수동 리허설을 해본다. 만약 당신이 허니넷을 운영한다면, 네트워크 설정을 확인한다. 각 세션별로, 각 장치의 내,외부 프로필을 확인하고, 증거를 수집하고 보관하기 위해 각 가상 세션이 적절히 설치되었는지 확인하는 표본 추출 검사를 한다.

필자는 항상 각 가상 세션이 실제 상황으로 가기 전, 설정의 스냅샷을 저장한다. 시스템이 보안상 공격을 받은 후, 변경 사항을 파악하기 위해 사용하는 베이스라인을 만들기 위함이다. 비록 UNIX에서 시스템 설정의 스냅샷을 찍기 위한 몇몇 좋은 유틸리티가 있지만, 윈도우에는 유틸리티가 매우 적다. 만약 당신이 설정 스냅샷을 찍기위한 도구가 없다면, 필자는 수동 작업을 하라고 권장한다. 특히, 파일의 체크섬과 프로세스(현재 로딩된 모듈 포함), 서비스, 장치 드라이버, 레지스트리 엔트리, 열린 포트, 이벤트 로그, 그리고 실행하는 응용 프로그램에 해당하는 증거 스냅샷을 찍자. 파일의 체크섬을 확인과 OS 설정의 스냅샷을 찍기 위한 유틸리티를 Sysinternals와 같은 쉐어웨어 웹사이트나 마이크로소프트 시큐리티 리소스킷 CD-ROM에서 찾을 수 있다. 일정 시간 후, 스크립트를 생성하여 이러한 프로세스를 자동화할 수 있다. 필자는 작동하는 시스템에 대한 많은 정보를 저장할 뿐아니라, 두가지 스냅샷의 차이점을 찾아내는 Snapshot이라고 부르는 명령어-라인 유틸리티를 작성하였다. (예를 들어 시스템이 보안위협을 받기 전과 후) 잠시 후, Snapshot에 대해 조금더 알아보겠다.

실제 상황으로 가기 전, 마지막 단계는 호스트에서 증거 수집을 시작하는 것이다. 최소, 당신은 네트워크 모니터와 IDS를 시작해야한다. 필자는 실제 상황으로 가기전, 먼저 실행된 허니팟에 대한 특정 증거를 리뷰하고 파일링하기 위해 만들어 놓은 패킷 추적 모니터링과 IDS 로그를 지운다. 이제, 당신의 호스트를 DMZ에 연결하고 허니팟을 실제 상황에 올릴 시간이 되었다.

공격 파악

허니팟이 가동되고, 당신의 목표는 공격의 증거를 충분히 수집하도록 장시간 이를 동작시키는 것이지만, 다른 공격에 사용되도록 위험에 빠뜨리는 것은 아니다. 허니팟을 공격하기 위한 시간의 양은 그의 장소, 인지 값, 그리고 가상 세션의 보안 레벨에 따라 다르다. DMZ 허니팟의 경우, 필자는 자동화 시도(예를 들어 웜)가 시스템 시작후 1분이내, 지능화 시도는 몇일 이내 시작됨을 발견하였다.

허니팟이 실제상황에 있는 동안, 필자는 가상 세션과 호스트에 대해 모두 주의깊게 살펴 보았다. 일반적으로 체크리스트에 따라 일하였으며, 무결성과 일관성을 확인하기 위해 매일 또는 2일마다 이를 확인하였다. 가능성있는 공격애 대한 징후 확인을 위해 호스트에서 IDS 경고의 목록을 통해 작업을 시작하였다. IDS는 초기 경고를 제공하는 많은 작업을 할 것이지만, IDS가 상당수 잘못 인지할 수 있기 때문에, 당신은 공격을 발견하기 위한 유일한 메커니즘으로 의존하지는 않아야 한다. 그러나 일반적으로, IDS는 대부분 일반적인 공격은 잡아낼 것이고, 특정 공격을 조사하는 좋은 시작 지점을 제공할 것이다.

이후, 필자는 가능성있는 공격을 파악하기 위해 호스트가 실행하는 네트워크 모니터에서 패킷 추적을 살펴본다. 필자는 일반적으로 특정 가상 세션에서 나간 트래픽만 보여주도록 패킷을 필터링하곤 한다. 아웃바운드 트래픽내에 나타내는 개개별 의심가는 세션을 살펴보기 위한 출발점으로써 이러한 패킷을 사용한다.

다음 순서는 호스트에서 허니팟 자체로 이동한다. 가상 머신으로의 장소 이동에서, 당신은 증거를 손상시키지 않도록 주의해야 한다. 필자는 일반적으로 이벤트 로그(특히 보안 로그), 활성화 포트, 그리고 허니팟이 실행하는 다른 응용 프로그램의 로그를 살펴본다. 필자는 허니팟 그 자체에서의 시간을 최소화하려고 하지만, 잠깐의 리뷰는 필자에게 손상된 시스템을 발견하기 위한 안전한 마지막 그물을 준다.

증거 수집

만약 당신의 허니팟이 보안상 공격을 받았다면, 시스템의 과학적 분석을 할 시간이 된 것이다. 바로 호스트 시스템을 끄지 않는다. 당신의 수집 순서가 증거를 보안 위협하지 않았거나, 다른 시스템이 위험에 빠뜨리지 않았다는 것을 확인할 필요가 있다. 만약 당신이 허니팟에서 수집한 증거를 법정에서 사용할 것이라면, 당신은 당신의 대응과 수집 순서에 관련된 법적 이슈에 대해 잘 알아야 한다(불행하게도 이러한 법적인 이슈에 대한 토론은 이 기사 영역 밖이다).

허니팟의 법적인 분석 프로세스는 3가지 기본 순서를 가진다. 손실되는 증거의 수집, 시스템의 백업, 남아있고, 손실되지 않는 증거의 수집과 분석이다. 이러한 순서를 통하여, 모든 당신의 작업과 결과가 문서화된다. 이러한 문서화는 차후 허니팟의 특정 실행상태로 빠르게 되돌아 갈 수 있게 하고, 일정 시간동안 순서에 대한 작업과 수집을 개선하도록 해 줄 것이다.

손실되는 증거란 허니팟이 동작하는 동안에만 수집할 수 있는 증거이다. 시스템이 꺼질 경우, 수정될 수 있는, 메모리 덤프에서부터 원격 호스트로의 네트워크 연결 등 모든 것을 포함하기 때문이다. 당신은 손실되는 증거를 수집하기 위한 책임이 증거에 대한 수집이 증거를 손상하였다는 현실성보다 불리하게 작용해야만 한다. 물리적 시스템의 기존 허니팟과는 달리, 가상 허니팟은 세션을 끄고, 상태를 저장하고, 차후 해당 상태로 돌아오는 옵션을 제공한다. 그 결과 필자는, 필요한 거의 모든 증거가 백업 세션(비록 특별한 경우, 그의 실행에 대한 더 많은 이해를 위해 필요한 실행 프로세스에 디버거를 붙이곤 한다.)으로부터 복구할 수 있기 때문에, 시스템이 공격받은 후, 가상 세션에서 증거를 좀처럼 바로 수집하지 않는다.

다음 단계는 증거 보존을 위해 가상 시스템을 백업하는 것이다. 이를 하기 위해, Action 메뉴내 Close를 선택하고, Save State를 선택하여 가상 세션을 닫는다. Saving State는 세션을 닫고, 두개의 파일을 업데이트한다. 하나는 현재 하드 디스크의 내용을 가지는 것과 다른 하나는 현재의 시스템 상태를 가지는 것이다.(가상 세션의 메모리 내용 포함) 상태 파일의 크기는 가상 시스템에서 상요하는 메모리의 양에 따라 다양하나, 일반적으로 50MB ~ 80MB정도이다. 세션이 닫힌 후, 세션에 대한 파일의 사본을 만든다. 가장 좋은 방법은 읽기-전용 미디어를 만드는 것이다. 당신은 또한 호스트에서 동작하는 모든 증거 수집기(예를 들어, IDS와 네트워크 모니터)에서 증거를 저장하고 중지하길 원할 수 있다.

이제 실제 작업을 시작한다. 어떻게 시스템이 공격받았는지 증거를 찾고, 운이 좋다면, 누가 했는지도 찾을 수 있다. 이를 하기 위해서는 세션을 다시 시작하여야 한다. 허니팟은 가상 시스템에 있기 때문에, 세션의 시작은 끄기전 정확한 시스템 실행 상태로 되돌려 준다. 이 시점에서, 증거를 찾기 위해, 시스템의 내부마다 주의깊은 조사를 해야한다. 이 작업은 시간이 매우 오래걸리며, 업무량이 많을 수 있다. 그래서, 당신은 이를 스크립트와 유틸리티를 사용하여 거의 대부분을 자동화할 필요가 있다. 필자의 Snapshot 유틸리티는 이경우 특히 편리하다. 필자는 공격받은 시스템의 스냅샷을 찍고, 가상 세션에서 호스트로 이동하여, 처음에 시스템이 온라인되기 전에 찍은 스냅샷과 비교한다. 유틸리티는 파일, 레지스트리 엔트리, 특정 프로세스에서 불러들인 모듈까지도 정확히 발견한다. Snapshot을 사용하여, 범죄 현상 여기저기서 필자의 방향을 쫒고, 그 방향내 증거를 수집하고, 공격의 포괄적 상황을 알 수 있다.

공격받은 가상 세션에서 증거를 모으기 위한 옵션은 일반 시스템에서와 동일하다. 한가지 추가할 사항으로, 당신은 가상 세션과 호스트간 좀더 타이트한 연동을 제공하기 위해, Virtual PC Addtions을 가상 세션내에 설치할 수 있다. 소프트웨어의 기능은 폴더 공유, 클립보드 공유, 시간 동기화와 호스트와 게스트간 드래그앤 드랍 지원등을 포함한다. Virtual PC Addtions의 단점은 시스템이 가상이라는 사실을 드러내주지만, 시스템이 공격받은 후에 소프트웨어를 설치한다면, 이러한 단점은 적은 고려 대상이다.

기술적인 면 뒤로..

만약 당신이 허니팟을 설치하고 운영할 계획이라면 이 주제와 관련된 법적, 도덕적, 기술적 이슈에 대해 잘 알아야 한다. 허니팟은 보안 커뮤니티에서 관심 높은 주제이므로, 당신은 이에 대해 많은 정보를 찾을 수 있다. 허니팟의 운영을 허가하기 전에, 당신은 명확하고 잘 정의된 목적을 가지고 있어야 하며, 허니팟으로 할 수 있는 부분에 대해 이해할 시간을 투자해야 할 것이다.

Virtual PC. 비록 허니팟으로 사용하기에 그리 잘 디자이닝된 것은 아니지만, 적절한 가격에 유연한 기능들을 제공한다. 필자는 당신의 첫번째 허니팟을 운영하기 위해 이를 강력 추천하는 바이다.

Project Snapshot: HOW TO
문제: 당신의 DMZ 장비(예를 들어, 웹 서버, 메일 서버)의 보안을 테스트하고, 잠재적 공격에 대한 조기 경고를 수집하고, 공격자가 사용하는 기술에 대해 숙지하기 위해, Virtual PC 2004로 동작하는 허니팟을 설치
필요 사항: 적어도 1GHz 펜티엄 3 프로세서(P3), 512메가의 메모리, 50GB 하드 디스크, CD-ROM 드라이브, 그리고 2개의 NIC을 가진 컴퓨터. Virtual PC의 라이센스 또는 평가 버전, 호스트와 게스트 운영 체제의 라이센스, 그리고 분류된 보안 도구(방화벽, IDS, 네트워크 모니터, 그리고 헥스 에디터와 포트 모니터와 같은 다른 유틸리티)

난이도 : 4/5
작업 순서:

  1. 호스트 시스템에 대한 적절한 하드웨어와 운영체제를 선택한다.
  2. 호스트의 보안을 강화하고 보안 도구를 설치한다.
  3. Virtual PC를 설치한다.
  4. 가상 세션을 설치하고 설정한다.
  5. 당신의 허니팟을 실제상황에 올린다.
  6. 침입을 탐지한다.
  7. 허니팟으로부터 법적 증거를 수집하고 분석한다.

출처 : technet.microsoft.com
728x90

댓글