네트워크/네트워크 보안

DNS공격

비니화이팅 2017. 2. 8. 02:10

DNS 취약점

- DNS는 같은 질의에 대한 응답이라도 먼저 온 응답만을 수용하고 실제 응답이라도 다음에 온 응답은 거부

- DNS는 초기에 보안을 고려하지 않고 설계된 프로토콜

-> 서비스거부 취약점(DDOS), 프로그램 취약점, 스푸핑

 

서비스거부 (DDOS)

: 공격자가 불필요한 질의를 대량으로 발생시켜 목표 네임서버가 해당 질의를  처리하는 동안 다른 정상 서비스 요청에대해서 응답 못함

 

프로그램 취약점

: 네임서버 프로그램 버그에 의한 취약점을 의미

이 취약점에 의해서 네임서버 프로그램이 중지되거나 시스템 전체가 장악될 수 있음

(현재는 수정용 패치 프로그램 만들어지고 있음)


스푸핑

: 네임서버가 주고받는 정보를 공격자가 임의로 조작하여 인터넷상에 퍼뜨림

(경우에 따라서 공격 받았는지 여부가 발견되기 어려워서 피해가 커질 수 있음)

-> 이게 가장 위험한 취약점

    => 특정 도메인네임이 공격자에 의해 변조되어서 해당 사이트가 아닌 악의의 공격자가 실제 사이트와 동일하게 제작한 가짜 사이트에 들어가서 별다른 의심없이 로그인 하여 개인정보 노출

      (사이트클론, 키로거)

 

DNS Spoofing (공격대상 클라이언트)

attackerDNS Querysniffing 하여 transcation ID, local port, 네임서버 주소(IP)를 알아냄

(DNS는 자신의 질의에 대해 어떠한 패킷이 자신의 질의에 대한 응답해킷인지 transcation ID, local port, 네임서버

주소(IP) 를 보고 판단함)

(질의할 때 발급한 transcation ID와 응답할때의 transcation ID는 같아야함)

(transcation ID tcpdump port 53 명령또는 dig 명령으로 확인 가능) tcpdump명령 = 패킷분석기

attacker는 로컬에 존재하여 DNS server보다 빨리 응답이 가능

clientDNS Qurey를 보낸후 먼저 도착한 응답(attacker의 응답)을 수용

(스니핑 -> 스니퍼를 이용하여 네트워크상의 데이터를 도청하는 행위)

 

DNS Spoofing 실습

attacker(웹서버(Kali)) 192.168.0.20

victim(내핸드폰) 192.168.0.21

Gateway 192.168.0.1

 

1. 웹서비스 시작

/var/www/html/index.html파일을 attack이라는 문구가 뜨게 수정하고 apache2 시작


2. arpspoof 툴로 arpspoofing 공격

(victimarp캐시 감염->핸드폰의 인터넷이 안됨

게이트웨이에 갈 패킷이 attacker에게 가고 있기 때문)

 

3. fragrouter 툴로 포워딩

 

4. 감염시킬 주소와 도메인 파일 작성

나는 /dns 로 만들었음

 

5. dnsspoof툴로 dnsspoofing 공격 진행

 

6. 결과확인

www.daum.net 에 접속했을 때 attack이라는 문구가 뜨는 것을 확인

attackersetoolkit (사이트클론, 키로거 사용 툴) 을 이용하여 attackerpc를 피싱사이트 서버로 만들면 여러가지 정보를 훔칠 수 있을 거라 생각함

 

 

DNS 캐시 포이즈닝 (공격대상 DNS Server)

- 말 그대로 DNS 캐시를 조작

- 공격 성공률을 높이기 위해 birthday attack 기법 적용

- DNS 스푸핑과 마찬가지로 attackerDNS Querysniffing 하여 transcation ID, local port, 네임서버 주소 알아내야함

1. Atacker는 DNS에게 도메인을 요청

2. 또 다시 Atacker가 Authoritative DNS서버로 가장하여 도메인에 대한 위조된 응답패킷을 Recurisive DNS서버에게 발송

3. 공격자가 전송한 도메인에 대한 위조된 응답패킷을 Authoritative DNS가 전송한 정상적인 응답으로 오인하여 받아들이고 Recurisive DNS서버는 해당 도메인에 대한 위조된 주소를 캐시에 저장

4. 사용자가 해당 도메인 요청시 Recurisive DNS서버는 캐시에 저장된 위조된 주소를 응답

 

내 생각

-> dns 는 먼저 온 응답만을 먼저 수용하기 때문에 dns 스푸핑dns 캐시 포이즈닝이 가능하고, 암호화가 되어있지 않기 때문에 attacker는 쉽게 스니핑이 가능하여 질의에 대한 응답이 가능하다. transcation ID, local port, IP 뿐만 아니라 강력한 인증이 될만한 것이 필요하고 패킷 암호화를 통하여 attacker가 스니핑하기 어렵게 만들면 피해를 줄 일 수 있다고 생각한다.