침입 위협을 크게 줄여주는 간단한 점검 방법들
[보안뉴스 문가용] 클라이언트 기기와 로컬 리커시브 리졸버 간의 DNS 트래픽을 관찰함으로써 네트워크에 봇넷이 존재하고 있는지 아닌지를 판별하는 게 가능하다. 잘 알려진 이야기다. 문제는 ‘어떻게?’이다. 이미 가지고 있는 보안 시스템과 네임 리졸버를 사용해서 DNS 트래픽을 잘 관찰하는 법에 대해서 알아보자.
▲ 깨끗해 보여? 아니야, 더 잘 봐.
방화벽
가장 흔하고 널리 알려진 방화 시스템인 방화벽부터 이야기해보자. 방화벽을 통해 사용자가 IP 스푸핑을 막을 수 있는 여러 가지 규칙을 정할 수 있다. 배정된 숫자 범위 밖에 있는 IP 주소로부터 오는 DNS 쿼리를 차단하는 규칙은 필수다. 그래야만 디도스 공격 시 네임 리졸버를 공격할 수 없게 된다.
다음으로는 바이트 패턴이 의심스럽거나 변칙적인 DNS 트래픽을 발견했을 경우 DNS 트래픽을 감시할 수 있는 기능을 활성화시킨다. 그래야 네임 서버 소프트웨어 취약점을 공격할 수 없게 된다. 대중적인 방화벽 제품에서 이런 기능을 어떻게 설정하는지는 인터넷에서 얼마든지 찾을 수 있다. 팔로알토 네트웍스, 시스코 시스템즈, 워치가드, 소닉월 등으로도 특정 DNS 트래픽을 막을 수 있다.
침입 감지 시스템
스노트(Snort), 수리카타(Suricata), 오섹(OSSEC) 중 무엇을 사용하든 허가되지 않은 클라이언트로부터 DNS 요청이 들어왔을 경우 이를 보고하도록 규칙을 정할 수 있다. NXDOMAIN 응답, 짧은 TTL이 있는 리소스 기록을 포함한 응답, TCP를 활용한 DNS 쿼리, 비표준 포트로 가는 DNS 쿼리, 비정상적으로 큰 DNS 응답 등을 보고하거나 셀 수 있도록 규칙을 만들 수도 있다. 방화벽의 침입 방지 서비스는 가장 간단하고 널리 사용되고 있는 허가/거부 규칙이 된다.
트래픽 분석기
수동적인 트래픽 분석은 멀웨어 트래픽을 미리 감지하는 데에 굉장히 유용할 수 있다. 클라이언트와 리졸버 사이에 있는 DNS 트래픽을 캡처하고 필터링해서 PCAP 파일에 저장한다. 특별히 관심을 가지고 있고 수사를 진행 중에 있는 의심 행위의 PCAP을 검색하는 스크립트를 만들거나 PCAP 파일을 곧바로 SQL 쿼리 처리하는 PacketQ를 사용한다. 이때 클라이언트가 리졸버나 비표준 포트를 사용할 수 없도록 꼭 막아야 한다.
수동적인 DNS 복사
리졸버에 있는 센서를 활용해 모든 DNS 처리 과정이 전부 들어있는 데이터베이스를 만든다. 분석 과정 중에 수동적인 DNS 데이터를 포함시키면 멀웨어 도메인을 찾아내는 데에 유용할 수 있다. 특히 DGA 알고리즘을 사용한 멀웨어의 경우는 더 그렇다. 팔로알토 네트워스의 방화벽이나 수리카타를 사용하는 보안 관리 시스템은 수동적인 DNS와 IPS를 짝지어 악성 도메인을 차단하는 보안 시스템의 한 예다.
리졸버의 로그
로컬 리졸버에 있는 로그는 DNS 트래픽을 수사하는 데에 있어 가장 확실할 수 있는 데이터 소스다. 로깅 기능이 활성화되어 있는 상태에서는 스플렁크(Splunk)에 겟와치리스트(getwatchlist)나 OSSEC을 활용해 DNS 서버 로그를 수집할 수 있다. 또한 잘 알려진 악성 도메인을 적극적으로 찾아 나설 수도 있게 된다.
당연한 이야기지만 DNS 트래픽 감시 및 분석 방법은 이것보다 훨씬 다양하고 그 수도 방대하다. 이 다섯 가지는 ‘간단하다’는 것이 장점이고 그렇기 때문에 서로 상호보완이 필요할 수도 있다. 이를 응용하여 필자가 모르는 더 많은 방법을 개발하는 것도 가능할 것으로 본다. 글 : 데이브 피시텔로(Dave Piscitello)
ⓒDARKReading
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>