
수동 DNS 설정에서 사용하기 위해 모든 DNS 서버 응답을 기록하는 네트워크 스니퍼
사건 처리, 네트워크 보안 모니터링(NSM) 및 일반 디지털 포렌식을 지원하기 위해 DNS 레코드를 수동적으로 수집하는 도구입니다.
PassiveDNS는 인터페이스에서 트래픽을 스니핑하거나 pcap 파일을 읽어 DNS 서버 응답을 로그 파일로 출력합니다. PassiveDNS는 중복된 DNS 응답을 메모리 내에서 캐시/집계하여 DNS 응답의 핵심을 잃지 않으면서 로그 파일의 데이터 양을 제한할 수 있습니다.
로그 파일(/var/log/passivedns.log)에서 버전 1.0.0 ~ 현재까지의 예제 출력:
#timestamp||dns-client ||dns-server||RR class||Query||Query Type||Answer||TTL||Count 1322849924.408856||10.1.1.1||8.8.8.8||IN||upload.youtube.com.||A||74.125.43.117||46587||5 1322849924.408857||10.1.1.1||8.8.8.8||IN||upload.youtube.com.||A||74.125.43.116||420509||5 1322849924.408858||10.1.1.1||8.8.8.8||IN||www.adobe.com.||CNAME||www.wip4.adobe.com.||43200||8 1322849924.408859||10.1.1.1||8.8.8.8||IN||www.adobe.com.||A||193.104.215.61||43200||8 1322849924.408860||10.1.1.1||8.8.8.8||IN||i1.ytimg.com.||CNAME||ytimg.l.google.com.||43200||3 1322849924.408861||10.1.1.1||8.8.8.8||IN||clients1.google.com.||A||173.194.32.3||43200||2
PassiveDNS는 IPv4 및 IPv6 트래픽에서 작동하며 TCP 및 UDP를 통한 DNS 트래픽을 파싱합니다.
PassiveDNS는 어떻게 사용될 수 있나요?
일반적인 사용 사례:
사건 작업 시 도메인 또는 IP 이력을 검색합니다. 예제: 회사에 악성코드가 bad.twittertoday.com과 통신하고 있습니다. 현재 시점에서 도메인은 202.29.94.200으로 해석되고 있습니다. 플로우 데이터를 검색하여 해당 IP와 통신하는 클라이언트를 찾아 조치합니다. 플로우 데이터를 살펴보면 클라이언트가 처음으로 해당 IP와 통신한 날짜와 시간을 발견하고, 이를 감염 시점으로 결론짓습니다...
하지만 PassiveDNS 데이터를 사용하여 도메인을 조회하면 다음과 같은 이력을 얻을 수 있습니다:
2011-12-01 | 2011-12-11 | A | 60 | bad.twittertoday.com | 71.51.115.11 2011-12-11 | 2011-12-18 | A | 60 | bad.twittertoday.com | 127.0.0.1 2011-12-18 | 2012-01-14 | A | 60 | bad.twittertoday.com | 202.29.94.200
돌아가서 플로우 데이터에서 71.51.115.11을 검색하면 FirstSeen 데이터 시점으로의 트래픽을 찾을 수 있으며, 처음에 감염된 추가 클라이언트도 발견할 수 있습니다(처음 실행 시 202.29.94.200 IP만을 보고 모든 클라이언트를 조치/확인하지 못한 것입니다). 처음 실행에서 놓친 클라이언트를 포렌식하면 다른 악성코드를 다운로드하고 초기 악성코드를 삭제했음을 알 수 있으며, 이것이 202.29.94.200으로의 플로우를 보지 못한 이유입니다. 새로운 악성코드는 조사해야 할 새로운 도메인과 IP를 제공합니다.
악성 C&C 트래픽이 포트 80의 IP로 향하고 있다는 징후가 있다고 가정해 봅시다. 의심되는 악성코드가 사용하는 도메인은 cc.twittertoday.com입니다. 플로우 데이터를 검색하면 많은 클라이언트가 해당 IP와 통신하는 것이 드러나며, 회사 전체가 감염되었다고 생각할 수 있습니다. PassiveDNS DB를 빠르게 검색하면 해당 IP가 300개 이상의 웹사이트를 호스팅하고 있으며, 그중에는 직원들이 매일 합법적으로 방문할 것으로 예상되는 익숙한 웹사이트가 있을 수도 있습니다. PassiveDNS DB를 검색해도 해당 도메인에 대한 히트가 없으면, 네트워크에 해당 도메인과 통신하는 악성코드가 없다는 의미이길 바랍니다.
*.twittertoday.com이 악성코드에 자주 사용되며 서브도메인이 무작위로 변경된다는 것을 알고 있습니다. 많은 사람들이 IDS/IPS에 이러한 도메인에 대한 규칙을 두어 시스템의 불필요한 자원을 소모합니다. 감시할 도메인 및 서브도메인의 정규식 목록을 사전에 로드한 스크립트를 가지고 있다가, 해당 패턴이 발견되면 알림을 받도록 하면 도메인 기반 위협에 대한 훨씬 더 나은 탐지가 가능합니다.
또한, 새로 등장한 모든 최상위 도메인에 대해 whois 조회를 수행하고, whois 정보를 알려진 악성 정보(도메인 등록자 이름이나 회사, 전화/팩스 번호, 주소 등) 목록과 상관 분석하여 점수를 산출하고, 그 점수가 충분히 높으면 사용자에게 알림을 트리거할 수도 있습니다.
질문, 제안, 칭찬 또는 비판은 언제나 환영합니다 :)
PassiveDNS가 악성코드 및 그 조작자와 싸우는 새로운 도구가 되길 바랍니다...
(c)2011-2020 - Edward Bjarte Fjellskål