네트워크 보안 관리는 내부에 어떤 호스트들이 존재하는지 파악하는데서 출발합니다. 큰 범위에서는 방화벽을 이용하여 트래픽의 흐름을 제어하지만, 특정 세션이 정말 허용된 트래픽인지, 침입방지시스템에서 경보한 익스플로잇이 해당 호스트에 유효한 공격인지 식별하기 위해서는 자산에 대한 상세한 메타데이터가 필요합니다.
과거에는 자산 정보를 수작업으로 관리할 수 있었지만, 개인이 사용하는 모바일 장치가 증가하고 인터넷에 접근하는 기기의 종류가 늘어나면서 자동화된 자산 정보 구축이 중요해졌습니다. 최근의 네트워크 접근 제어 (NAC; Network Access Control) 솔루션들은 자산 정보의 자동 수집과 네트워크 접근 권한 제어를 수행하는데, 로그프레소는 별도의 NAC이 없는 경우에도 자산 프로파일링을 자동화할 수 있는 방법을 제공합니다. 그 중 하나는 DHCP 핑거프린팅입니다.
DHCP 프로토콜
아래의 스크린샷은 와이어샤크로 살펴본 DHCP 패킷 샘플입니다. 원본 PCAP 파일은 Chris Sanders 웹사이트에서 다운로드할 수 있습니다.
스크린샷에서 확인할 수 있듯이 각 DHCP 요청 패킷은 MAC, IP 주소 정보 뿐 아니라, 호스트 이름 (Client Identifier 옵션), 제조사 (Vendor class identifier) 정보를 포함하고 있습니다. 더 중요한 부분은 매개변수 요청 목록 (Parameter Request List) 옵션이 운영체제나 기기에 따라 조금씩 다르기 때문에, 일종의 지문처럼 활용할 수 있다는 사실입니다.
DHCP 핑거프린팅
로그프레소는 decodedhcp 커맨드를 이용해서 DHCP 패킷을 파싱할 수 있도록 지원합니다.
아래의 쿼리는 호스트 이름 추출 예시입니다. foreach 함수는 options 필드를 순회하면서 name이 HostName인 옵션을 찾아 BLOB 값을 decode 하여 호스트 이름 문자열로 복원합니다.
pcapfile dhcp_inlease_renewal.pcap | decodedhcp
| eval host_name = strjoin("", foreach(if(valueof(_1, "name") == "HostName", decode(valueof(_1, "value")), ""), options))
| eval host_name = if(len(host_name) > 0, host_name, null)
| fields client_ip, client_mac, host_name
아래의 쿼리는 DHCP 핑거프린트 룩업 DB를 이용하여 호스트의 운영체제를 식별하는 예시입니다.
pcapfile dhcp_inlease_renewal.pcap | decodedhcp
| eval host_name = strjoin("", foreach(if(valueof(_1, "name") == "HostName", decode(valueof(_1, "value")), ""), options))
| eval host_name = if(len(host_name) > 0, host_name, null)
| lookup dhcp_fingerprint fingerprint output category as os_category, vendor as os_vendor, family as os_family, description as os_name
| fields host_name, client_ip, client_mac, os_category, os_vendor, os_family, os_name, fingerprint
로그프레소에 내장된 DHCP 핑거프린트 룩업은 200개 이상의 핑거프린트를 포함하며 아래의 메타데이터를 제공합니다:
- category: 20종 이상의 장치 분류 (예: Desktop oriented operating system)
- vendor: 60종 이상의 제조사 (예: Microsoft Corporation)
- family: 90종 이상의 장치 유형 (예: Microsoft Windows NT)
- description: 운영체제/기기 이름 (예: Windows 7)
위의 예시는 PCAP 파일을 대상으로 한 쿼리이지만, 로그프레소는 풀 패킷 캡처 엔진을 내장하고 있으므로 실시간으로 DHCP 트래픽을 수집하여 자산 데이터베이스 구축을 자동화할 수 있습니다.