DNS Amplification attack은 DNS reflector attack이라고도 불리며, 공격을 확대(Amplify, 증폭/확대)하기 위해 DNS 서버들을 이용한 정교화된 DoS 공격이다. DNS(Domain Name System / Domain Name Server)란 쉽게 도메인 이름을 컴퓨터가 처리할 수 있는 IP주소를 반환해 주는 중계자라고 생각하면 된다. 이번 6.25 DDoS에서 사용된 DNS 증폭 DRDoS공격을 알아보도록 하자.
# DRDoS (분산 반사 서비스 거부 공격, distributed reflector denial of service)
공격자에게 실제 출발지를 숨기는 것은 매우 중요한 일이다. 위 그림은 분산 반사 서비스 거부 공격(DRDoS, distributed reflector denial of service)이라 불리는 대역폭(bandwidth) 공격의 한 종류이다. 이 공격은 공격 대상(Victim)에게 공격 트래픽을 보낼 때 라우터나 웹서버와 같은 제 3자(third party)를 이용하여 출발지가 어디인지 애매하게 만드는데 그 목적이 있다. 이때 공격에 활용되는 제 3자를 Reflector 라고 한다. 들어오는 패킷에 응답하는 모든 장비들은 잠재적인 reflector가 될 수 있다.
DRDoS 공격은 3단계로 구성된다. 첫 단계는 일반적으로 생각할 수 있는 전형적인 DDoS 공격과 유사하다. 하지만 두번째 단계는 일정한 좀비에 대한 제어권을 얻은 후 좀비들이 공격대상에 직접 공격 트래픽을 보내는 것 대신, 좀비들은 출발지 IP 주소를 Victim의 IP로 변조하여 Reflector에 트래픽을 보낸다. 그리고 세번째 단계는 Reflector 가 공격대상(victim)에게 응답 트래픽을 보내도록 함으로써 DRDoS 공격을 구성하게 되는 것이다.
전형적인 DDoS 공격과 비교해볼 때 DRDoS공격에서의 트래픽은 써드파티 이용으로 더 분산된다고 할 수 있다. 공격 트래픽을 더 분산시키는 이유는 확인하기 어렵게 만들기 위함이다. 게다가 공격을 당한 Victim 서버 입장에서 보면 들어오는 IP 주소는 정상적인 써드파티이기 때문에 출발지 주소를 역추적하는것이 극도로 어렵게 된다. 마지막으로 Paxson(2001)과 Gibson(2002)이 언급한 바에 따르면 DRDoS공격은 공격 트래픽을 증대시키며 보다 강력하게 만드는 데 그 의의가 있다고 한다.
참고로, 이 공격은 2002년 1월에 한 보안 연구 웹 사이트가 다운된것으로 처음 발견되었고 이후 확산되어 해외에서 여러차례 관련 공격이 보고된 바 있다.
# DNS Amplification attack ( DNS 증폭 공격)
다음은 DNS를 이용한 DRDoS 공격이다. 이 공격은 앞으로 DNS 증폭 공격으로 하겠다.
아래 동영상에서 공격 과정을 보다 쉽고 간단하게 이해할 수 있을 것이다.
즉, 위에서 설명한 DRDoS에서 Reflector 역할을 하는것이 DNS 서버인 셈이다.
공격과정을 다시 설명하자면, 사용자 PC에서 DNS 서버로 도메인의 IP 주소를 얻기 위해 DNS query 를 전송했을 때, 해당 DNS 서버가 정보를 가지고 있지 않은 경우 상위 DNS Root name 서버에 물어보게 된다. 이때 상위 서버는 하위 DNS 서버들에게 정보가 있는지 요청한다. 이 과정에서 공격자는 공격하고자 하는 서버(Victim)의 IP를 출발지 주소로 설정하여 DNS 서버에 쿼리를 날리면, 그 응답(DNS reply)이 모두 공격 대상(Victim)으로 되돌아 가게 된다. 그리고 공격자는 공격을 증대시키기 위해 도메인에 순차적으로 숫자를 붙여 여러 하위 DNS request query를 생성하고 그에 대한 응답이 전부 Victim으로 향하도록 공격을 설정하는 것이다.
여기에서 문제의 주 원인은 "인증"절차가 없기 때문이다.
DNS는 역트리 구조 시스템이다. 재귀(Recursion) 절차가 일어나면서 하나의 위임 체인을 따르게 된다. 서버에서 도메인 이름을 찾을 때까지 Root zone에서 시작해서 하위 서버로 계속해서 질의가 이루어지게 된다. 재귀 네임 서버는 요청자를 대신해서 주어진 이름을 해석하기 위해 여러 인가된 네임 서버에 연결한다. 재귀 네임서버는 SMTP 릴레이나 웹 프록시와 유사하다고 볼 수 있다. 모든 메시지를 클라이언트로 부터 받고 필요에 의해 다른 서버로 이를 전달한다.
이상적으로는 이런 재귀 네임 서버들은 로컬이나 인증된 클라이언트로에서 온 쿼리만 받아야 한다. 불행히도 많은 재귀 네임 서버들은 원천지와 상관없이 모든 DNS 쿼리를 받는다. 게다가 많은 DNS 들이 재귀(Recursive)가 기본적으로 설정되어 있는데, 심지어 인증된 데이터만 받도록 되어있는 서버에서도 마찬가지다. 이와 같은 네임 서버를 오픈 리졸버 (open resolver)라고 한다. 2006년 ShmooCon에서 발표한 Dan Kaminsky와 Mike Schiffman 에 따르면 오픈 리졸버는 580,000개 정도 존재한다고 한다.
따라서 이러한 공격을 방지하기 위해선 관리자들은 DNS 서버에서 재귀를 할 수 없도록 설정하는 것이 중요하다.
자세한 내용은 2006년 DEFCON14 에서 이 공격 관련 발표 내용을 참고하세요 :)
# 6.25 DNS 증폭 공격 패킷 특징
안랩 ASEC 블로그 (http://asec.ahnlab.com/951 ) 에서 말하고 있는 이번 공격 패킷의 특징은 아래와 같다.
정상적인 DNS 요청과 달리 이런 방법을 이용하는 것은 적은 봇넷으로도 공격 효과를 증대시키기 위함이다. 네트워크 지연을 위해 보다 큰 데이터로 패킷을 채우는 것도 이런 공격의 특징으로 볼 수 있다. 같은 맥락으로 원래 DNS 쿼리 응답은 쿼리와 응답을 포함해야 하므로 클 수 밖에 없다. 그런데 여기에 여러형태의 RR(Resource Records)를 포함 하여 크기를 더 늘릴 수 있다. RR 종류와 그 의미는 아래와 같다.
TXT RR : 관리자가 임의의 코드를 DNS 레코드에 삽입
A RR : 호스트 이름과 32비트 IP주소를 매핑
SOA RR : 인터넷 도메인의 주 소스 이름과 다른 연관 정보를 제공
예를 들어 60 바이트 EDNS 쿼리를 받는 경우, 다음과 같은 크기의 응답 레코드 생성이 가능하다.
122 바이트 A 리소스 레코드 / 4000 바이트 TXT 리소스 레코드 / 222 바이트 SOA 레코드
# 참고 자료
- http://ww2.cs.mu.oz.au/~tpeng/p1-peng.pdf
Survey of Network-Based Defense Mechanisms Countering the DoS and DDoS Problems
TAO PENG, CHRISTOPHER LECKIE, and KOTAGIRI RAMAMOHANARAO
Department of Computer Science and Software Engineering, The University of Melbourne, Australia
ACM Computing Surveys, Vol. 39, No. 1, Article 3, Publication date: April 2007.
- DEFCON14 DNS Amplification Attack
발표자료 : http://www.defcon.org/images/defcon-14/dc-14-presentations/DC-14-Vaughn.pdf
상세 내용 : http://www.isotf.org/news/DNS-Amplification-Attacks.pdf
'Network' 카테고리의 다른 글
와이어샤크 명령어로 실행하기 (0) | 2013.06.27 |
---|---|
loopback 스니핑 (0) | 2013.04.24 |
Mobile Sniffing (0) | 2013.01.21 |
Wireshark - pcapng (1) | 2012.11.05 |
MAC address OUI lookup by python (0) | 2012.09.18 |