dig 활용방법 가이드

리눅스/DNS|2015. 1. 26. 17:32
반응형

첨부파일 참조

 

[출처]  한국인터넷정보센터 | IP주소관리팀


dig_활용방법_가이드.pdf


반응형

댓글()

[칼럼] DNS Cache Poisoning

리눅스/DNS|2015. 1. 26. 17:31
반응형

안녕하세요^^ DNS Cache Poisoning에 대해 궁금해서 질문 올립니다.

DNS Cache를 잘못된 주소로 바꿔서 사용자가 DNS Query를 했을 때

잘못된 IP 주소로 응답하여 실제 원하는 웹 사이트가 아닌 공격자가 의도

하는 잘못된 웹사이트가 나오게 하는 것이라고 읽었습니다.

 

여기서 궁금한 점이

 

질문1)희생자 DNS Server가 공격자 DNS Server에게 Query를

하게 하느냐입니다. 설명이 나오긴 했었는데 이해하기 어려워서요 ^^

 

질문2)공격자 DNS Server가 잘못된 IP 주소를 응답한다고 하는데

단순히 DNS Server 안에 있는 레코드를 공격자가 원하는 IP 주소를

적어주면 되는 건가요?

 

안녕하세요. SecurityPlus입니다.

 

DNS Cache Poisoning은 recursion(순환질의)이 허용하도록 잘못된 구성된 DNS 혹은 취약한 버젼의 DNS에 대해 가능한 공격입니다.

 

먼저, 첫번째 질문은 희생자 DNS Server가 공격자 DNS Server에게 Query를 어떻게 하는가라는 질문은 상세한 공격 방식에 대한

설명으로 대신하도록 하겠습니다.

 

먼저, 공격자는 DNS Server를 준비하고, 주로 메일 시스템을 이용하여

공격할 목표 DNS 서버(vul.dns.com)에 속한 시스템 내의 존재하지 않는 사용자에게 공격자의 도메인(crack.dns.com)이

포함된 사용자 메일 계정(test@crack.dns.com)으로 메일을 보내거나,

공격자 도메인 상의 이미지 링크가 포함된 메일을 공격할 목표 DNS 서버에 속한 시스템

내의 사용자에게 메일을 보냅니다.

 

이러한 시도를 통해 메일을 받은 시스템이 해당 DNS의 캐쉬 서버에 공격자의 도메인(crack.dns.com)을

질의하도록 합니다.

 

그러나, 희생자의 DNS 캐쉬 서버 내에는 공격자의 도메인 정보가 없으므로 공격자의 도메인을 공격자의

DNS Server에게 질의를 하게 됩니다.

 

그럼, 공격자의 DNS Server에서는 공격자의 도메인과 IP 정보(crack.dns.com|211.211.24.240)를 주면서

Additional Resolution Record, 즉 추가적인 다른 도메인과 IP 정보(물론, 악의적인)를 제공(www.microsoft.com:211.211.24.239)합니다.

 

이때, 희생자의 DNS 캐쉬 서버는 공격자의 DNS Server가 추가적으로 전해준 악의적인 정보(www.microsoft.com:211.211.24.239)

TTL 시간동안 캐싱하고 있으며, TTL 시간 동안 해당 DNS 캐쉬 서버를 바라 보고 있는 사용자가

www.microsoft.com 을 질의하면 정상적인 IP 대신 악의적인 IP로 응답하고, 사용자는 잘못된 IP로

접속하게 됩니다.

 

두 번째 질문은 공격자 DNS Server가 잘못된 IP 주소를 응답한다고 하는데 단순히 DNS Server 안에 있는 레코드를 공격자가 원하는 IP 주소를 적어주면 되는 건가요? 라는 질문에 대해 답변 드리도록 하겠습니다.

 

두 번째 질문은 위에서 설명드린 공격 방식으로도 이해가 되겠으나, DNS 패킷을 조작해서 공격하는 방식으로 셜명 드리겠습니다.

위 공격법 이외에 DNS 패킷을 조작하여 공격하는 방식을 이용할 때에는 위의 복잡한 과정 없이 희생자 DNS 서버에 악의적인 도메인과

IP 정보를 마치 응답한 것처럼 속여서 응답 패킷을 보내는 것으로

 

이 때,  관건은 DNS 응답 패킷에 있어서, 질의에 대한 응답을 식별하기 위한 16bit의 ID를 사용하고 있어, 응답 Port와 해당 ID를 추측

해야 하는 어려움이 있습니다.

 

그러나, 이를 이용하여 직접적인 악의적 DNS 응답으로 공격이 이뤄질 수도 있습니다.

 

따라서, 단순히 DNS 서버 안에 공격자가 원하는 IP 주소를 적기는 만만치 않죠....^^a

 

그럼, 참고하시기 바랍니다.

 

안녕히 계세요.

 

 

[출처] PowerComputing OF BlueStorm | BlueStorm ( http://blog.naver.com/lemonaroma98/60022468542 )

반응형

댓글()

DNS 운용시 알아 두면 좋은 것

리눅스/DNS|2015. 1. 26. 17:31
반응형

1. 버전 알아 내기와 감추기

   1) 로컬 서버에서 확인

       # named -v

   2) nslookup 이용

       # nslookup

       > server kns.kornet.net
       Default Server:  kns.kornet.net
       Address:  168.126.63.1

       > set class=chaos
       > set type=txt
       > version.bind
       Server:  kns.kornet.net
       Address:  168.126.63.1

       VERSION.BIND    text = "Cyber World Leader Kornet!"
       >

       * 보통 보안을 위해서 위와 같이 변경을 합니다.

   3) dig 이용

       # dig @kns.kornet.net txt chaos version.bind

       ; <<>> DiG 8.3 <<>> @kns.kornet.net txt chaos version.bind
       ; (1 server found)
       ;; res options: init recurs defnam dnsrch
       ;; got answer:
       ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44330
       ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
       ;; QUERY SECTION:
       ;;      version.bind, type = TXT, class = CHAOS

       ;; ANSWER SECTION:
       VERSION.BIND.           0S CHAOS TXT    "Cyber World Leader Kornet!"

       ;; Total query time: 1 msec
       ;; FROM: ns.telate.com to SERVER: 168.126.63.1
       ;; WHEN: Tue Jun  7 14:39:20 2005
       ;; MSG SIZE  sent: 30  rcvd: 81
   4) 버전 감추기

       - named.conf 파일에 아래와 같이 넣어 줍니다.

          options { version "x.x.x"; }

          // 이렇게 하면 버전 정보가 x.x.x 로 출력 됨.

 

2. DNS 캐시

   1) rndc 또는 ndc(bind8) 명령으로 캐시 내용을 추출함.

       # ndc dumpdb

       이후 named_dump.db 파일을 열어서 확인 함.

   2) 윈도우 OS에서 확인

       c:> ipconfig /displaydns  --> 캐시 내용이 출력됨.

       c:> ipconfig /flushdns  --> 캐시를 초기화 함.

       * 윈도우가 멍청해서 가끔 잘못된 dns lookup을 할 경우가 있음으로 위의 명령을

          활용하면 유용합니다.

 

3. BIND에서 보안 옵션들

    1) recursion 방지

        named.conf 에  options { allow-recursion { 172.0.0.1; 192.168.0.0/24; };}; 추가 하면

        해당 네트워크나 IP에서만 recursion 커리를 할 수 있음.

        * recursion 을 막아 두면 해당 도메인에 대한 네임서버만 쿼리에 대하여 리스폰스 합니다.

    2) 존트랜스퍼 방지

        named.conf 에 options { allow-transfer { 192.168.0.1; }; }; 추가 하여

        slave 네임서버만 zone transfer를 할 수 있도록 함.

        * bind가 기본값이 zone transfer 가 되도록 되어 있음으로 slave서버가 없다면

          options { allow-transfer ( none; }; };  으로 셋팅 하시기 바랍니다.

    3) zone transfer 되는지 확인하기

         # dig @ns.test.co.kr test.co.kr axfr

         # nslookup

         > server ns.test.co.kr

         > ls -t test.co.kr
         [ns.test.co.kr]
         *** Can't list domain telate.com: Unspecified error
         >

         * 보통 위와 같이 나오면 zone transfer 되지 않는 것임

           (zone transfer 는 TCP에서 동작 함)

 

4.  dig 유틸리티 사용

   1) 기본 사용법

        dig [@server] domain [<query-type>] [<query-class>] [+<query-option>]
             [-<dig-option>] [%comment]

          - @server : 네임서버 주소 기본값은 /etc/resolv.conf 값

          - domain : 질의 하고자 하는 도메인 ( . 을 사용 하면 root 도메인, -x 역도메인)

          - query-type

              a : network address

              any :  모든 정보 커리 함

              mx : mail exchanger

              soa : zone 파일 등록 정보

              hinfo : 호스트 정보

              axfr : zone transfer

              txt : text 형태

          - query-class

              in : Internet class domain
              any : all/any class information

          - +query-option

              +tree : 계층 구조를 알 수 있음.

              +multiline : zone 파일 설정 그대로 보여 줌

              +vc  : TCP로 쿼리를 함.

           * 기타 man 도움말을 활용 하기 바람.

    2) 응용 예

       - root 네임서버 알아 내기

          # dig @a.root-server.net. . ns

       - 국내 kr 네임서버 알아 내기

          # dig @a.root-server.net. kr. ns

       - zone transfoer 되는지 확인하기

          # dig @ns.test.co.kr test.co.kr axfr

       - bind 버전 알아 내기

          # dig @kns.kornet.net txt chaos version.bind

       - 역도메인 알아 내기

          # dig -x 192.168.0.1

       - soa 정보 보기

          # dig test.co.kr soa +multiline

        - 네임 서버로 부터 응답을 찾아 오는 과정 보기

          # dig test.co.kr +tree

 

5. dnstop 유틸리티 사용

    # dnstop -s fxp0    --> 여기서 fxp0 는 NIC장치명 (리눅스에서는 eth0)

     1 new queries, 94 total queries                   Tue Jun  7 14:54:40 2005

     SLD                           count      %
     -------------------- --------- ------
     co.kr                          78   83.0
     floweris.com                 5    5.3
     daejeonflower.com        2    2.1
     tongdaemun-flower.co   2    2.1
     thru-the.net                  2    2.1
     hyoksung.com              1    1.1
     hanmin.net                   1    1.1
     ultradns.org                 1   1.1
     ultradns.net                 1    1.1
     gunchi.org                   1    1.1

 

6. zone 파일 오류 찾기

   -  bind를 디버깅 모드로 실행
       # named -d 1 &
       named.run 파일에 관련 디버깅 메시지가 기록됨

       이 파일을 분석하면 대부분의 문법 오류 등을 찾을 수 있음.

 

 

작성 : 마그마(필명) putter@naver.com

 
 


반응형

댓글()

IP로 리버스 도메인 등록서버 확인하기

리눅스/DNS|2015. 1. 26. 17:31
반응형

# dig -x 211.110.10.126 +trace

 

위처럼 해당 IP로 질의해보면 최종적으로 어느 서버에 리버스도메인을 등록해야하는지 나옵니다.

반응형

댓글()

CNAME, SRV 레코드 등록 형식

리눅스/DNS|2015. 1. 26. 17:30
반응형

CNAME 형식

hello IN CNAME hi.sysdocu.com.

 

 

SRV 레코드 형식

_sipfederationtls._tcp.sysdocu.com. 60 IN SRV 10 2 5002 federation.messenger.msn.com.

 

10 : 우선순위

2 : 무게

5002 : 포트

반응형

댓글()

2차 네임서버 구축 (존 트랜스퍼)

리눅스/DNS|2015. 1. 26. 17:30
반응형

1차 네임서버에서

/etc/named.conf 내용중...
options { } 안에 allow-transfer  { 2차네임서버IP; }; 를 넣습니다.

/etc/named.rfc1912.zones 내용중...
zone "sysdocu.com" IN {
    type master;
    file "sysdocu.com.zone";
    allow-update { 2차네임서버IP; }; 를 넣습니다.
};


2차 네임서버에서

/etc/named.conf 내용중...
options { } 안에 allow-transfer  { 1차네임서버IP; }; 를 넣습니다.

 

/etc/named.rfc1912.zones 내용중...
zone "sysdocu.com" IN {
    type slave;
    masters { 1차네임서버IP; }; 를 넣습니다.
    file "sysdocu.com.zone";
};

/var/named/chroot/var/named 디렉토리 퍼미션 조정
> named 사용자가 쓸수 있게 합니다. (아래 예에서는 그룹으로 허용)
# chmod 770 /var/named/chroot/var/named

반응형

댓글()

리버스 도메인의 이해와 등록 방법

리눅스/DNS|2015. 1. 26. 17:30
반응형

http://cafe.naver.com/dnspro.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=7966

반응형

'리눅스 > DNS' 카테고리의 다른 글

CNAME, SRV 레코드 등록 형식  (0) 2015.01.26
2차 네임서버 구축 (존 트랜스퍼)  (0) 2015.01.26
CNAME 사용  (0) 2015.01.26
KRNIC 의 .kr 네임서버 업데이트 시간  (0) 2015.01.26
BIND 9.3.x 외부에서 질의 안될때  (0) 2015.01.26

댓글()

CNAME 사용

리눅스/DNS|2015. 1. 26. 17:29
반응형

zone 파일 수정

[형식]
호스트      IN              CNAME   목적지 주소.

[예]
start           IN              CNAME   ghs.google.com.      <- zone파일내에 도메인을 적을 경우 항상 뒤에 . 을 잊지말것
mail            IN              CNAME   ghs.google.com.
title            IN              CNAME   www                      <- 다른 호스트로 연결

반응형

댓글()

KRNIC 의 .kr 네임서버 업데이트 시간

리눅스/DNS|2015. 1. 26. 17:29
반응형

.kr 네임서버 업데이트 시간
- 전일 18:00 ~ 금일 08:00 변경 건 : 금일 08:40 업데이트 
- 금일 08:00 ~ 금일 12:00 변경 건 : 금일 12:40 업데이트 
- 금일 12:00 ~ 금일 18:00 변경 건 : 금일 18:40 업데이트

반응형

댓글()

BIND 9.3.x 외부에서 질의 안될때

리눅스/DNS|2015. 1. 26. 17:29
반응형

/etc/named.conf 파일을 수정합니다.


options {
    listen-on port 53 { any; };    <- 127.0.0.1 을 any 로 변경
    listen-on-v6 port 53 { ::1; };
    directory   "/var/named";
    dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

    // Those options should be used carefully because they disable port
    // randomization
    // query-source    port 53;
    // query-source-v6 port 53;

    allow-query     { any; };    <- localhost 를 any 로 변경
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
    match-clients      { any; };    <- localhost 를 any 로 변경
    match-destinations { any; };    <- localhost 를 any 로 변경
    recursion yes;
    include "/etc/named.rfc1912.zones";
};

반응형

댓글()

DNS 라운드 로빈(round-robin)

리눅스/DNS|2015. 1. 26. 17:28
반응형

일반적으로 Round-Robin DNS는 서버의 부하를 분산하고자 할때 유용하게 사용될 수 있습니다.
로빈(Round Robin)기능의 활성화를 위한 설정은 해당 도메인에 대한 간단한 zone 파일 설정만으로 해결됩니다. 


1. zone 파일 수정
    # vi /var/named/chroot/var/named/sysdocu.com.zone

    내용중
    IN  A   222.122.157.41
    IN  A   222.122.157.42    <- 추가
    IN  A   222.122.157.43    <- 추가


2. named 재시작
    # /etc/init.d/named reload   (또는 /etc/init.d/named restart)


3. nslookup 으로 조회
    # nslookup
    > sysdocu.com
    Server:         localhost
    Address:        127.0.0.1#53

    Name:   sysdocu.com
    Address: 222.122.157.43    <- 확인

    Name:   sysdocu.com
    Address: 222.122.157.41

    Name:   sysdocu.com
    Address: 222.122.157.42    <- 확인
    >


반응형

댓글()