DNS (Domain Name System) 관련 공격 및 대응
1. DNS 스푸핑
2. DNS Cache Poisoning
3. DNS DrDoS
DNS 스푸핑(Spoofing) 공격
1. 스니핑을 이용한 DNS 스푸핑
1] 요약 : 희생자에게 전달되는 DNS 응답(IP주소)을 조작
2] 공격 방법
- 희생자가 DNS 질의를 수행하면 공격자가 이를 스니핑하고 있다가 정상 응답보다 빠르게 희생자에게 조작된 IP 정보가 담긴 DNS 응답을 보내 정상 주소(URL)를 입력하더라도 조작된 주소로 접속하게 하는 공격 기법
- 조작된 응답 이후에 도착한 정상 응답은 먼저 수신한 응답을 신뢰하는 특성으로 폐기
3] 대응책
- 사전에 스니핑이 되어야 되기 때문에 스니핑 탐지 및 차단
- 중요한 사이트의 IP 주소에 대해서는 DNS 질의보다 우선순위가 높은 hosts 파일에 등록해서 관리
2. DNS 캐시 포이즈닝 (Cache Poisoning)
1] 요약 : DNS 서버의 캐시(Cache) 정보를 조작하여 희생자가 의도하지 않은 주소로 접속하게 공격하는 공격
* 파밍 공격에 사용된다.
2] DNS 캐시 원리
- DNS 서버는 상위 서버에게 빈번하게 반복적인 질의 (Iterative Query)를 요청하여 부하 발생을 막기 위해 캐시(Cache)를 사용한다. 이 캐시는 TTL(Time To Live) 동안만 유지된다.
- DNS 서버 자체를 공격하는 것이기에 DNS 캐시 정보가 일정 시간(TTL) 유지되는 동안 해당 서버에 접근하는 다수의 사용자들이 DNS 응답을 수신하게 된다.
3] 공격 방법
1. 공격자가 공격 대상의 DNS 서버에 조작할 도메인에 대해서 존재하지 않는 서브도메인 주소로 Recursive 질의를 다수 보낸다. 예를 들어서 q001.bankofamerica.com
2. DNS 서버는 질의에 대한 IP 주소가 없기 때문에 bankofamerica.com에 질의를 함으로써 반복적인 질의(Recursive Query)를 수행한다.
3. bankofamerica.com 네임서버에서 NXDOMAIN이라는 응답이 오기 전, 공격자는 www.bankofamerica.com의 IP주소를 공격자가 원하는 IP주소 조작한 수많은 응답을 DNS 서버에 보낸다.
4. DNS 서버는 조작된 응답을 받아들이고, 캐시에 저장한다.
5. 일반 사용자들이 DNS 서버에 www.bankofamerica.com의 IP 주소에 대해 질의를 한다.
6. DNS 서버는 조작된 IP주소를 응답해준다.
7. 일반 사용자들은 진짜 Bank of America 웹사이트와 비슷한 조작된 주소로 접속하게 된다.
4] 대응책
- 네임서버의 소프트웨어를 최신 버전 상태로 유지
- 도메인 관리용 DNS 서버는 재귀적 질의를 허용하지 않도록 설정하고, 제한된 사용자가 사용하는 Recursive DNS 서버라면 해당 사용자로 제한해서 허용하도록 한다.
[재귀적 질의(Recursive Query) 제한하는 방법 (/etc/named.conf) 활용]
allow-recursion 설정
DNS 서버는 기본 설정으로 모든 IP에 대해서 재귀적 질의를 허용한다.
- 모든 재귀적 질의 차단 : allow-recursion {none;}; 으로 설정하거나 recursion no로 설정
- 제한된 사용자만 사용 : allow-recursion {IP 또는 IP대역;}; 또는 별도의 acl (access control list)를 정의
- DNSSEC 기술 활용
- IETF에 의해 2005년 완성된 국제표준기술로, 데이터 위변조 공격에 취약한 DNS의 문제점을 근본적으로 보안 개선하기 위함.
- DNS대체하는 것이 아니라, 기존의 DNS에 공개키 암호화 방식의 보안 기능을 추가 부여하여 DNS의 보안성을 대폭 강화
DNS를 활용한 증폭 DrDoS
1. DrDOS 정의
1] 정의
: 출발지 IP를 공격 대상의 IP로 위조한 후 다수의 반사 서버에 요청하면 공격 대상은 반사 서버로부터 대량의 응답을 받아 서비스 거부 상태가 된다.
2. DNS DrDos 과정
1] 공격 과정
1. 우선, Source IP주소를 희생자(Victim)의 IP주소로 스푸핑을 합니다.
2. 공격자는 DNS 서버(open 된 resolving DNS)에 any 또는 txt와 같은 요청에 비해 응답의 크기가 큰 쿼리(query)를 보냅니다.
3. DNS 서버는 query에 대한 응답을 희생자에게 보냅니다.
4. 그 결과, 희생자는 매우 큰 사이즈의 응답을 받게 됩니다.
2] 공격 효과
- 공격자 입장에서, 작은 크기의 패킷을 큰 사이즈의 패킷으로 증폭하여 공격하는 효율적인 공격 방법이며, ☞ 증폭 DoS 공격
- 공격에 사용된 DNS 서버의 입장에서는, 정상적인 서비스에 대한 응답이므로 공격에 사용이 되는지 판별이 어려우며,
- 공격 대상이된 서버 또한, 일반적인 서비스에 대한 응답이여서 바로 공격이라고 판별이 어려움.
3. DNS DrDos 방어 방법
1] 포트 기반의 ACL 차단
- DNS의 경우 UDP를 사용하기 때문에 protocol 기반의 ACL은 적용하기 힘들다
- 공격 트래픽이 DNS 서버에서 응답 패킷이므로 소스 포트는 53, 응답 포트는 53 또는 1024 이상의 랜덤 포트가 된다. 따라서 소스 포트가 53/udp인 inbound 트래픽을 차단하는 ACL 적용
2] 공격 IP는 resolving이 허용된 DNS 서버에서 지속적인 공격 트라픽이 유발되므로 ratelimit를 적용하여, 한 소스 IP에서의 inbound 트래픽을 제한하도록 한다.
3] 수십~수백Gbps의 충분한 대역폭이 없다면 KISA 대피소 서비스를 활용하거나 Anycast 등의 대응이 가능한 Cloud 기반의 서비스를 이용
참조 :
http://m.dailysecu.com/?mod=news&act=ampArticleView&idxno=4465
https://en.m.wikipedia.org/wiki/Denial-of-service_attack#Reflected_.2F_spoofed_attack