상세 컨텐츠

본문 제목

악성코드가 악용하는 DNS Tunneling 기술 분석

국내외 보안동향

by 알약(Alyac) 2017. 8. 22. 16:51

본문

해커들은 DNS 프로토콜을 이용하여 호스트 정보를 전달하며, 서버에서 명령어를 내려받습니다. 이렇게 DNS 프로토콜을 악용하여 통신하는 기술을 DNS Tunneling이라고 부릅니다. 



DNS 특징


이 세상에는 많은 도메인들이 존재하며 그 변화 속도도 매우 빠르기 때문에, 적은양의 서버로는 수많은 요청에 응답할 수 없습니다. 그렇기 때문에, 지금의 DNS 체계는 분산식으로 구성되어 있으며, 데이터들을 각기 다른 서버에 분산 저장합니다. 

분산형 DNS는 다음과 같은 특징을 가지고 있습니다. 


1) 클라이언트는 일반적으로 1~2개의 DNS 서버를 할당받으며, 해당 서버들 중에서 모든 DNS 쿼리 결과를 얻을 수 있기 때문에 다른 DNS 서버들과 통신을 할 필요가 없습니다. 


이러한 DNS 서버를 DNS resolver라 부르며, DNS resolver는 로컬캐시와 다른 DNS 서버 상에서 DNS 데이터를 획득하기 위해 시도하며, 해당 시도는 결과 반환이나 실패 될때까지 진행됩니다. 그 후 결과를 사용자에게 반환해 줍니다. 


일반적으로 사용되는 DNS resolver에는 구글의 8.8.8.8, 8.8.4.4등이 있습니다. 이러한 서버들의 주소 역시 해당 악성코드에 포함되어 있었습니다. 



2) DNS 서버가 데이터를 검색할 때, 일반적으로 Iterative query method 를 사용하며, "루트 도메인 서버"부터 가장 마지막에 위치까지 반복적으로 검색합니다. 


test.domain.com을 예로 들어보겠습니다.


우선 .com 도메인의 네임서버를 검색합니다(NS레코드).

그 후, NS레코드과 매칭되는 도메인 서버에서 domain.com 도메인 서버를 검색합니다. 

그 후 다시 해당 도메인에서 A레코드를 갖고있는 test.domain.com을 발견하고, 레코드 중에서 실제 IP주소를 확인하여 사용자에게 반환해 줍니다. 


일반적으로 홈페이지 소유자들은 도메인을 등록한 후 지정된 도메인에 대응하는 NS서버를 지정하게 됩니다. 만약 악성코드 제작자들이 자신들의 서버를 도메인서버로 설정하였다면, 모든 서브도메인의 DNS request를 처리할 수 있게 됩니다. 또한 악성코드는 감염 PC의 정보를 인코딩 후 서브도메인의 문자열 중에 숨길수 있으며, DNS request중 서브도메인의 부분을 이용하여 필터링을 진행할 수도 있습니다. 



3) DNS 프로토콜 형식에는, NS 레코드 및 A레코드 이외에 다음과 같은 레코드들도 포함되어 있습니다. 


AAAA레코드 : 도메인과 매칭되는 서버의 IPv6주소

CNAME레코드 :  해당 레코드가 또 다른 도메인을 가르킬 수 있도록 함

MX레코드 : 지정된 도메인 하위의 메일 서버

TXT 레코드 : 관리자가 설정한 임의의 정보를 저장할 수 있음



DNS Tunneling 장점


1) 전 세계 감염자들의 DNS Request를 얻을 수 있습니다.


2) 감염자들이 요청한 모든 Request에 응답을 할 필요가 없습니다.


3) 감염자의 PC가 특정 DNS 서버를 지정하지 않고 일반적인 DNS 프로토콜을 사용한다면 쉽게 발견되기 어렵고, 패킷 중 목적지 IP 혹은 프로토콜 내용을 통하여 차단하기도 어려습니다.


4) 도메인서버만 설정해 주면 이외의 서버가 해당 도메인의 다른 request에 대한 응답에 대해 상관할 필요가 없습니다. 





참고 : 

http://inside-out.xyz/technology/how-dns-tunneling-works.html

https://www.plixer.com/blog/network-security-forensics/what-is-dns-tunneling/

http://totaluptime.com/what-is-dns-tunneling/



관련글 더보기

댓글 영역