해커들은 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/
파일리스 암호화 화폐 채굴 프로그램인 CoinMiner, 확산을 위해 NSA EternalBlue 익스플로잇 사용해 (0) | 2017.08.23 |
---|---|
중국 광고 SDK와 연결 된 안드로이드 스파이웨어 발견 (0) | 2017.08.23 |
가상화폐 거래소 Enigma, 해킹으로 47만달러 가치의 이더리움 도난당해 (2) | 2017.08.22 |
USB를 사용하여 근접해 있는 USB 포트의 데이터 탈취하는 방법 (0) | 2017.08.21 |
안드로이드 악성코드, 뱅킹앱이 아닌 카드 지불을 요구하는 일반 앱들을 노려 (0) | 2017.08.21 |
댓글 영역