DNS(Domain Name Service)
DNS는 URL을 IP로 변환하여 사용자가 원하는 사이트, 서비스에 접속할 수 있도록 해주는 서비스이다. 만약 우리가 DNS를 사용하지 않는 다면 네이버, 구글, 다음 등의 사이트를 접근할 때 IP 주소를 입력하여 접속해야할 것이다. 우리에게 친숙한 www.naver.com 의 형태가 아닌 https://125.209.222.142/ 의 형태로 접근해야 할 것이다.
이러한 DNS는 우리 시스템에 있는 hosts 파일을 검사하고 로컬 DNS, Root Domain Server, Top Level, Second Level, Subdomains 의 순서로 URL과 IP 정보가 들어있는 각 서버들을 참조하여 URL을 통해 사이트, 서비스에 접근할 수 있도록 해준다. 처음 접속하는 DNS의 경우 Local DNS에 없을 것이고 Local DNS는 상위 서버에서 하위 서버로 접근하려는 URL에 대한 정보를 요청하는 과정을 반복하여 사용자가 요청한 URL에 대한 IP를 찾아내고 찾아낸 IP를 다음에는 빠르게 접근하기 위해 Local DNS에 등록하여 다음 접속은 빠르게 한다.
또한, 앞에 언급한 hosts 파일을 참조하는데 hosts파일은 사용자의 PC에 저장된 파일로 URL에 대한 IP가 매핑되어 있는 파일이다. 해당 파일을 참조하여 Local DNS Server에 접근하지 않아도 빠르게 해당 사이트로 접근할 수 있지만, 만약 hosts 파일이 URL과 IP가 잘못 매핑되어 있거나 공격자에 의하여 다른 사이트로 매핑되어 있다면 악용될 우려가 있으며 원하는 사이트에 접근할 수 없을 수도 있다. 또한, 공격자에 의해 변경된 경우 공격자의 피싱사이트 등에 접근하여 악의적인 행위에 노출될 수도 있다.
윈도우 PC의 경우 hosts파일은 'C:\Windows\System32\drivers\etc\hosts'에 있다.
MAC OS X의 경우 hosts 파일은 '/etc/hosts'에 있다.
리눅스 우분투의 경우도 Mac OS X와 마찬가지로 '/etc/hosts'에 위치해 있다.
DNS 증폭 공격
이러한 DNS는 쿼리문을 사용하여 DNS에 대한 정보(레코드)를 요청할 수 있다. DNS 레코드의 종류는 다음과 같다.
A(Address) | 단일 호스트 이름에 해당하는 IP 주소가 여러 개 있을 수 있으며 각각의 동일한 IP 주소에 해당하는 여러 개의 호스트 이름이 있을 수 있다. A는 호스트의 이름을 IPv4 주소로 매핑하는 역할을 한다. |
AAAA(IPv6 Address) | 호스트 이름을 IPv6로 매핑한다. |
PTR(Pointer) | 특수 이름이 도메인의 일부 다른 위치를 가리킬 수 있다. 인터넷 주소의 PTR 레코드는 정확히 한 개만 있어야 한다. 즉, 도메인 주소가 연결된 IP를 가리키는 것이 아닌 포인터와 같이 다른 주소를 가리켜 매핑된다. |
NS(Name Server) | 도메인에는 해당 이름의 서비스 레코드가 적어도 한 개 이상 있어야 하며 DNS 서버를 가리킨다. |
MX(Mail Exchanger) | 도메인 이름으로 보낸 메일을 받도록 하는 목록을 지정한다. |
CNAME(Canonical Name) | 호스트의 다른 이름을 정의하는데 사용된다. |
SOA(Start of Authority) | 도메인에 대한 권한을 갖는 서버를 표시한다. 도메인에서 가장 큰 권하을 부여받은 호스트를 선언한다. |
Any(ALL) | 위의 모든 레코드를 표시한다. |
DNS 증폭 공격은 필요한 쿼리만 받게 설정된 Type을 Any로 설정하여 위의 모든 레코드를 요청한다. 이렇게 되면 패킷의 크기가 커지게 되며 트래픽을 유발하여 DNS 서버는 위의 모든 레코드를 응답하게 된다. 이점을 이용하여 공격자는 Any type에 대한 요청을 할 때 요청 IP를 조작하여 공격 대상의 IP로 설정하고 여러 DNS 서버에 쿼리를 요청한다. 이렇게 되면 DNS 서버들은 응답을 공격 대상에게 모두 전송하여 대량의 트래픽이 발생하고 공격 대상은 DoS 공격에 당하게 된다.
DNS 싱크홀(SinkHole)
DNS 싱크홀은 KISA(한국 인터넷 진흥원)에서 제공하는 서비스이다. 해당 서비스는 악성 봇에 감염된 PC를 공격자가 조종하지 못하도록 악성 봇과 공격자의 명령을 차단하는 서비스이다. 자체 DNS 서비스를 운영하는 민간기관을 대상으로 제공하는 서비스로 KISA 홈페이지에서 신청할 수 있다.
악성봇이 해커의 명령/제어 서버에 연결을 시도할 때 KISA 싱크홀 서버로 우회 접속하도록 하여, 해커의 악의적인 명령을 전달하지 못하도록 한다. 즉, 악성 봇에 해커의 IP 로 접근하려고 할 때 매핑된 IP를 공격자의 IP가 아닌 싱크홀 서버로 변경하는 것이다. 과정은 다음과 같다.
해당 서비스를 이용하여 DNS, 악성 봇을 이용한 공격을 예방할 수 있으면 좋겠다.
DNS 싱크홀 | 보안서비스 - KISA 인터넷 보호나라&KrCERT
'Network, Security' 카테고리의 다른 글
SET(Secure Electronic Transaction) (0) | 2021.02.06 |
---|---|
크리덴셜 스터핑(Credential Stuffing) (0) | 2021.02.05 |
EDR(Endpoint Detection & Response)과 안티바이러스 차이점 (0) | 2021.02.01 |
E-mail 보안 기법 (0) | 2021.01.30 |
도커 탈출로 이용 가능한 MS Azure 취약점 (0) | 2021.01.30 |