갈루아의 반서재

host 명령을 이용한 DNS 스캔


모든 서브 도메인을 앞서의 방법으로 찾을 수는 없다. host 명령을 통해 이를 찾는 방법을 알아보자. 전체를 대상으로 검색하는 경우에는 -a 플래그를, 그리고 특정 타겟만 검색하는 경우에는 -t 플래그를 붙인다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
root@kali:~# host -a google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45075
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4
 
;; QUESTION SECTION:
;google.com.            IN    ANY
 
;; ANSWER SECTION:
google.com.        90    IN    AAAA    2404:6800:4004:801::200e
google.com.        80    IN    A    216.58.197.174
google.com.        165378    IN    NS    ns2.google.com.
google.com.        165378    IN    NS    ns3.google.com.
google.com.        165378    IN    NS    ns4.google.com.
google.com.        165378    IN    NS    ns1.google.com.
 
;; AUTHORITY SECTION:
google.com.        165378    IN    NS    ns4.google.com.
google.com.        165378    IN    NS    ns1.google.com.
google.com.        165378    IN    NS    ns3.google.com.
google.com.        165378    IN    NS    ns2.google.com.
 
;; ADDITIONAL SECTION:
ns1.google.com.        338375    IN    A    216.239.32.10
ns2.google.com.        341300    IN    A    216.239.34.10
ns3.google.com.        338758    IN    A    216.239.36.10
ns4.google.com.        338811    IN    A    216.239.38.10
 
Received 264 bytes from 202.86.8.100#53 in 6 ms
root@kali:~# host -t ns google.com
google.com name server ns2.google.com.
google.com name server ns1.google.com.
google.com name server ns4.google.com.
google.com name server ns3.google.com.
cs


해당 도메인의 메일 서버에 대한 상세 내용 검색

1
2
3
4
5
6
root@kali:~# host -t mx google.com
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
cs


google.com 도메인과 연관된 정보를 더 보고 싶다면

1
2
3
4
5
6
7
8
root@kali:~# host google.com
google.com has address 216.58.197.174
google.com has IPv6 address 2404:6800:4004:818::200e
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
cs



만약 존재하지 않는 정보를 요청하면 다음과 같은 메시지가 출력된다. 해당 서브도메인은 존재하지 않는다는 에러가 발생한다. 서브도메인 존재 유무를 확인할 때 유용하다. 

1
2
root@kali:~# host made.google.com
Host made.google.com not found: 3(NXDOMAIN)
cs


host 명령을 통해 zone transfers 도 가능하다. 네임서버 주소와 분석 대상 도메인이 필요하다. 일반적으로 DNS 는 트랜서퍼가 불가능하게 구성된다는 것을 유념해야한다. 앞서 찾은 네임서버 ns1.google.com 을 이용하여 google.com 트랜서퍼를 실행해보자. 

1
2
3
4
5
6
7
root@kali:~# host -l google.com ns1.google.com
Using domain server:
Name: ns1.google.com
Address: 216.239.32.10#53
Aliases: 
 
; Transfer failed.
cs

다수의 네임서버를 가지고 있는 경우도 있다. 이 경우, 해당 프로세스를 자동화하는 것이 현명하다. 

아래의 bash 스크립트를 통해서, 주어진 도메인의 네임서버 리스트를 생성한다. 그리고나서 각각의 네임서버에 대해 트랜서퍼 작업을 반복한다. 

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
if [ ! $1 ]; then 
echo "Usage: #./dns-find-transfer.sh <domain>"
exit; 
fi
for server in $(host -t ns $1 |cut -d" " -f4);do
printf $server | sed 's/.$//'
host -l $1 $server |grep "Address: " | cut -d: -f2 |
 sed 's/...$//'
done
cs


다음과 같이 위에서 만든 파일을 실행한다. 

1
2
3
4
5
6
7
8
root@kali:~# chmod 755 dns-find-transfer.sh
root@kali:~# ./dns-find-transfer.sh
Usage: #./dns-find-transfer.sh <domain>
root@kali:~# ./dns-find-transfer.sh google.com
ns2.google.com 216.239.34.10
ns3.google.com 216.239.36.10
ns4.google.com 216.239.38.10
ns1.google.com 216.239.32.10
cs