dig 활용방법 가이드
'리눅스 > DNS' 카테고리의 다른 글
DNS 의 Cache Poisoning 취약점 및 패치안내 (0) | 2015.01.26 |
---|---|
국내 통신사와 IDC 네임서버(DNS) IP (0) | 2015.01.26 |
[칼럼] DNS Cache Poisoning (0) | 2015.01.26 |
DNS 운용시 알아 두면 좋은 것 (0) | 2015.01.26 |
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
DNS 의 Cache Poisoning 취약점 및 패치안내 (0) | 2015.01.26 |
---|---|
국내 통신사와 IDC 네임서버(DNS) IP (0) | 2015.01.26 |
[칼럼] DNS Cache Poisoning (0) | 2015.01.26 |
DNS 운용시 알아 두면 좋은 것 (0) | 2015.01.26 |
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
안녕하세요^^ 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 )
국내 통신사와 IDC 네임서버(DNS) IP (0) | 2015.01.26 |
---|---|
dig 활용방법 가이드 (0) | 2015.01.26 |
DNS 운용시 알아 두면 좋은 것 (0) | 2015.01.26 |
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
CNAME, SRV 레코드 등록 형식 (0) | 2015.01.26 |
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
dig 활용방법 가이드 (0) | 2015.01.26 |
---|---|
[칼럼] DNS Cache Poisoning (0) | 2015.01.26 |
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
CNAME, SRV 레코드 등록 형식 (0) | 2015.01.26 |
2차 네임서버 구축 (존 트랜스퍼) (0) | 2015.01.26 |
# dig -x 211.110.10.126 +trace
위처럼 해당 IP로 질의해보면 최종적으로 어느 서버에 리버스도메인을 등록해야하는지 나옵니다.
[칼럼] DNS Cache Poisoning (0) | 2015.01.26 |
---|---|
DNS 운용시 알아 두면 좋은 것 (0) | 2015.01.26 |
CNAME, SRV 레코드 등록 형식 (0) | 2015.01.26 |
2차 네임서버 구축 (존 트랜스퍼) (0) | 2015.01.26 |
리버스 도메인의 이해와 등록 방법 (0) | 2015.01.26 |
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 : 포트
DNS 운용시 알아 두면 좋은 것 (0) | 2015.01.26 |
---|---|
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
2차 네임서버 구축 (존 트랜스퍼) (0) | 2015.01.26 |
리버스 도메인의 이해와 등록 방법 (0) | 2015.01.26 |
CNAME 사용 (0) | 2015.01.26 |
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
IP로 리버스 도메인 등록서버 확인하기 (0) | 2015.01.26 |
---|---|
CNAME, SRV 레코드 등록 형식 (0) | 2015.01.26 |
리버스 도메인의 이해와 등록 방법 (0) | 2015.01.26 |
CNAME 사용 (0) | 2015.01.26 |
KRNIC 의 .kr 네임서버 업데이트 시간 (0) | 2015.01.26 |
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 |
zone 파일 수정
[형식]
호스트 IN CNAME 목적지 주소.
[예]
start IN CNAME ghs.google.com. <- zone파일내에 도메인을 적을 경우 항상 뒤에 . 을 잊지말것
mail IN CNAME ghs.google.com.
title IN CNAME www <- 다른 호스트로 연결
2차 네임서버 구축 (존 트랜스퍼) (0) | 2015.01.26 |
---|---|
리버스 도메인의 이해와 등록 방법 (0) | 2015.01.26 |
KRNIC 의 .kr 네임서버 업데이트 시간 (0) | 2015.01.26 |
BIND 9.3.x 외부에서 질의 안될때 (0) | 2015.01.26 |
DNS 라운드 로빈(round-robin) (0) | 2015.01.26 |
.kr 네임서버 업데이트 시간
- 전일 18:00 ~ 금일 08:00 변경 건 : 금일 08:40 업데이트
- 금일 08:00 ~ 금일 12:00 변경 건 : 금일 12:40 업데이트
- 금일 12:00 ~ 금일 18:00 변경 건 : 금일 18:40 업데이트
리버스 도메인의 이해와 등록 방법 (0) | 2015.01.26 |
---|---|
CNAME 사용 (0) | 2015.01.26 |
BIND 9.3.x 외부에서 질의 안될때 (0) | 2015.01.26 |
DNS 라운드 로빈(round-robin) (0) | 2015.01.26 |
퓨니코드를 이용한 한글도메인 등록 (예:한글.com) (0) | 2015.01.26 |
/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";
};
CNAME 사용 (0) | 2015.01.26 |
---|---|
KRNIC 의 .kr 네임서버 업데이트 시간 (0) | 2015.01.26 |
DNS 라운드 로빈(round-robin) (0) | 2015.01.26 |
퓨니코드를 이용한 한글도메인 등록 (예:한글.com) (0) | 2015.01.26 |
mx 레코드 정보 (gmail) (0) | 2015.01.26 |
일반적으로 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 <- 확인
>
KRNIC 의 .kr 네임서버 업데이트 시간 (0) | 2015.01.26 |
---|---|
BIND 9.3.x 외부에서 질의 안될때 (0) | 2015.01.26 |
퓨니코드를 이용한 한글도메인 등록 (예:한글.com) (0) | 2015.01.26 |
mx 레코드 정보 (gmail) (0) | 2015.01.26 |
mx 레코드, spf레코드 값 확인 (0) | 2015.01.26 |