모의해킹 및 보안

Infromation Gattering Tool - DNS

잉여토끼 2024. 10. 19. 17:02

DNS

  • 공통 원리
    1. DNS 레코드 및 관련 정보를 시스템에 대한 표준 쿼리를 통해 정보를 수집. 이 방법은 DNS 서버에서 직접 쿼리를 실행하여 알려진 정보를 요청하여 얻는다.
    2. 가능한 서브도메인 이름을 탐색하기 위해 단어 목록을 사용하여 브루트 포스를 통해 서브 도메인 탐색

dnsmap

  • DNS 서브도메인 및 네트워크 매핑 도구로, 주로 특정 도메인에 대한 서브도메인을 찾기 위해 사용
  • 주어진 단어 목록을 기반으로 가능한 서브도메인을 브루트포스 방식으로 탐색하여 발견된 서브도메인 정보를 제공

 

사용법: dnsmap <대상-도메인> [옵션]

옵션:
-w <단어목록-파일>      사용할 단어 목록 파일을 지정합니다.
-r <일반결과-파일>      일반 결과를 저장할 파일을 지정합니다.
-c <csv-결과-파일>      결과를 CSV 파일로 저장합니다.
-d <지연시간-밀리초>    각 요청 사이에 대기할 시간(밀리초)을 지정합니다.
-i <무시할 IP들>        (잘못된 긍정 결과가 발생하는 경우 유용함) 무시할 IP 목록을 지정합니다.

예시:
dnsmap example.com
dnsmap example.com -w yourwordlist.txt -r /tmp/domainbf_results.txt
dnsmap example.com -r /tmp/ -d 3000
dnsmap example.com -r ./domainbf_results.txt

 

  •  특징
    1. 워드리스트: 사용자 정의 단어 목록을 사용하여 서브도메인 이름을 검색한다. 이를 통해 특정 도메인의 예상 서브도메인을 찾는 데 도움이 된다.
    2. 지연 시간 설정 가능: 각 요청 간의 지연 시간을 설정하여 과도한 요청으로 인한 차단을 방지할 수 있다.
  • 출력 내용
    1. 도메인 이름: 쿼리한 대상 도메인.
    2. IP 주소: 서브도메인이나 도메인에 대한 A 레코드와 함께 반환된 IP 주소.
    3. 서브도메인: 쿼리 결과에서 발견된 서브도메인 목록.
    4. 결과 파일: 결과를 저장한 파일 경로(지정한 경우).
    5. 검사된 레코드 수: 브루트포스 시도한 서브도메인의 수와 확인된 레코드 수.
  • 출력 예시
┌──(root㉿kaya)-[~]
└─# dnsmap iqsp.com
dnsmap 0.36 - DNS Network Mapper

[+] searching (sub)domains for iqsp.com using built-in wordlist
[+] using maximum random delay of 10 millisecond(s) between requests

bw.iqsp.com
IP address #1: 172.16.20.100
[+] warning: internal IP address disclosed

dw.iqsp.com
IP address #1: 172.16.20.101
[+] warning: internal IP address disclosed

ma.iqsp.com
IP address #1: 172.16.20.7
[+] warning: internal IP address disclosed

mx1.iqsp.com
IP address #1: 172.16.20.6
[+] warning: internal IP address disclosed

nk.iqsp.com
IP address #1: 172.16.20.7
[+] warning: internal IP address disclosed

ns.iqsp.com
IP address #1: 172.16.20.6
[+] warning: internal IP address disclosed

py.iqsp.com
IP address #1: 172.16.20.6
[+] warning: internal IP address disclosed

ub.iqsp.com
IP address #1: 172.16.20.9
[+] warning: internal IP address disclosed

[+] 8 (sub)domains and 8 IP address(es) found
[+] 8 internal IP address(es) disclosed
[+] completion time: 5 second(s)

 

 

dnsrecorn

  • DNS 열거 및 정보 수집을 위한 강력한 도구로, 다양한 기능을 통해 도메인에 대한 상세한 정보를 수집하고 분석
  • 여러 유형의 DNS 쿼리를 수행하여 서브도메인, A 레코드, MX 레코드, NS 레코드 등을 찾고, DNSSEC, AXFR, Whois 조회 등의 기능이 있다.
사용법: dnsrecon [-h] [-d 도메인] [-n 네임서버] [-r 범위] [-D 사전]
                [-f] [-a] [-s] [-b] [-y] [-k] [-w] [-z] [--threads 스레드 수]
                [--lifetime 생명 주기] [--tcp] [--db 데이터베이스] [-x XML] [-c CSV]
                [-j JSON] [--iw] [--disable_check_recursion]
                [--disable_check_bindversion] [-V] [-v] [-t 유형]

옵션:
  -h, --help            도움말 메시지를 표시하고 종료한다
  -d 도메인, --domain 도메인
                        타겟 도메인이다
  -n 네임서버, --name_server 네임서버
                        사용할 도메인 서버이다. 주어지지 않으면 타겟의 SOA가 사용된다. 여러 서버는 쉼표로 구분하여 지정할 수 있다.
  -r 범위, --range 범위
                        역 조회 브루트포스를 위한 IP 범위 (형식: 첫번째-마지막 또는 범위/비트마스크)이다.
  -D 사전, --dictionary 사전
                        브루트포스에 사용할 서브도메인 및 호스트 이름의 사전 파일이다.
  -f                    브루트포스 도메인 조회에서 와일드카드로 정의된 IP 주소로 해결되는 레코드를 필터링한다.
  -a                    표준 열거로 AXFR을 수행한다.
  -s                    표준 열거로 SPF 레코드에서 IPv4 범위의 역 조회를 수행한다.
  -b                    표준 열거로 Bing 열거를 수행한다.
  -y                    표준 열거로 Yandex 열거를 수행한다.
  -k                    표준 열거로 crt.sh 열거를 수행한다.
  -w                    표준 열거 중 Whois를 통해 발견된 IP 범위의 심층 WHOIS 기록 분석 및 역 조회를 수행한다.
  -z                    표준 열거로 DNSSEC 존 워크를 수행한다.
  --threads 스레드 수   역 조회, 정방향 조회, 브루트포스 및 SRV 레코드 열거에 사용할 스레드 수이다.
  --lifetime 생명 주기   서버가 쿼리에 응답하기까지 대기할 시간이다. 기본값은 3.0초이다.
  --tcp                 쿼리를 수행하기 위해 TCP 프로토콜을 사용한다.
  --db 데이터베이스      발견된 레코드를 저장할 SQLite 3 파일이다.
  -x XML, --xml XML     발견된 레코드를 저장할 XML 파일이다.
  -c CSV, --csv CSV     출력을 CSV 파일로 저장한다.
  -j JSON, --json JSON   출력을 JSON 파일로 저장한다.
  --iw                  와일드카드 레코드가 발견되더라도 도메인에 대한 브루트포스를 계속 수행한다.
  --disable_check_recursion
                        네임 서버에서 재귀 확인을 비활성화한다
  --disable_check_bindversion
                        네임 서버에서 BIND 버전 확인을 비활성화한다
  -V, --version         DNSrecon 버전을 표시한다
  -v, --verbose         상세 출력을 활성화한다
  -t 유형, --type 유형  수행할 열거 유형이다.
                        가능한 유형:
                            std:      SOA, NS, A, AAAA, MX 및 SRV.
                            rvl:      주어진 CIDR 또는 IP 범위의 역 조회.
                            brt:      주어진 사전을 사용하여 도메인 및 호스트를 브루트포스한다.
                            srv:      SRV 레코드.
                            axfr:     모든 NS 서버에 대해 존 전송을 테스트한다.
                            bing:     서브도메인 및 호스트에 대한 Bing 검색을 수행한다.
                            yand:     서브도메인 및 호스트에 대한 Yandex 검색을 수행한다.
                            crt:      서브도메인 및 호스트에 대한 crt.sh 검색을 수행한다.
                            snoop:    주어진 도메인에 대해 모든 NS 서버에 대한 캐시 스누핑을 수행하며,
                                      -D 옵션으로 제공된 파일에 포함된 도메인으로 테스트한다.

                            tld:      주어진 도메인의 TLD를 제거하고 IANA에 등록된 모든 TLD에 대해 테스트한다.
                            zonewalk: NSEC 레코드를 사용하여 DNSSEC 존 워크를 수행한다.

 

  •  특징
    1. 일반 열거: SOA, NS, A, AAAA, MX 및 SRV 레코드를 조회한다.
    2. 브루트포스: 특정 도메인에 대해 서브도메인을 찾기 위해 사용자가 제공하는 사전을 기반으로 검색한다.
    3. Bing, Yandex, crt.sh 검색: 서브도메인 및 호스트 정보를 찾아 추가적인 데이터를 수집한다.
    4. 역 조회: WHOIS 정보를 기반으로 IP 범위의 역 조회를 수행한다.
    5. DNSSEC 지원: DNSSEC이 활성화된 도메인에 대해 존 워크를 수행할 수 있다.
  • 출력 내용
    1. 도메인 이름: 쿼리한 대상 도메인.
    2. IP 주소: A 레코드에 대한 IP 주소.
    3. 네임서버(NS) 레코드: 해당 도메인에 대한 네임서버 정보.
    4. SOA 레코드: Start of Authority 레코드, 도메인의 기본 정보를 포함.
    5. TXT 레코드: 도메인에 대한 TXT 레코드 정보.
    6. SRV 레코드: 서비스 레코드 정보 (해당하는 경우).
    7. Wildcard resolution: 와일드카드 레코드 여부 및 해당 IP 주소
  • 출력 예시
└─# dnsrecon -d iqsp.com
[*] std: Performing General Enumeration against: iqsp.com...
[-] DNSSEC is not configured for iqsp.com
[*]      SOA ns.iqsp.com 172.16.20.6
[*]      NS ns.iqsp.com 172.16.20.6
[-]      Recursion enabled on NS Server 172.16.20.6
[*]      Bind Version for 172.16.20.6 "9.16.23-RH"
[*]      MX mx1.iqsp.com 172.16.20.6
[*]      A iqsp.com 127.0.0.1
[*]      AAAA iqsp.com ::1
[*] Enumerating SRV Records
[-] No SRV Records Found for iqsp.com

 

 

dnsenum

  • DNS 정보를 수집하고 분석하기 위한 도구로, 다양한 쿼리를 통해 도메인에 대한 상세한 정보를 수집
  • 서브도메인 및 네임 서버 정보를 찾는 데 효과적
dnsenum 버전 1.3.1
사용법 dnsenum [옵션] <도메인>
[옵션]:
참고: -f 태그가 제공되지 않으면 기본적으로 /usr/share/dnsenum/dns.txt 또는 dnsenum과 동일한 디렉토리에 있는 dns.txt 파일이 사용된다
일반 옵션:
  --dnsserver <서버>
                        A, NS 및 MX 쿼리를 위해 이 DNS 서버를 사용한다
  --enum                스레드 5, 서브도메인 15, 브루트포스를 포함하는 단축키 옵션이다
  -h, --help            도움말 메시지를 출력한다
  --noreverse           역 조회 작업을 생략한다
  --nocolor             ANSI 색상 출력을 비활성화한다
  --private             프라이빗 IP 주소를 domain_ips.txt 파일의 끝에 표시하고 저장한다
  --subfile <파일>      모든 유효한 서브도메인을 이 파일에 기록한다
  -t, --timeout <값>    TCP 및 UDP 타임아웃 값을 초 단위로 설정한다 (기본값 10초)
  --threads <값>        다양한 쿼리를 수행할 스레드 수를 설정한다
  -v, --verbose         진행 상황과 모든 오류 메시지를 자세히 표시한다
Google 스크래핑 옵션:
  -p, --pages <값>      이름을 스크래핑할 때 처리할 Google 검색 페이지 수를 설정한다
                        기본값은 5 페이지이며 -s 스위치가 필요하다
  -s, --scrap <값>      Google에서 스크래핑할 최대 서브도메인 수를 설정한다 (기본값 15)
브루트포스 옵션:
  -f, --file <파일>     브루트포스를 수행하기 위해 이 파일에서 서브도메인을 읽어들인다
                        기본 dns.txt보다 우선한다
  -u, --update <a|g|r|z>
                        -f 스위치로 지정된 파일을 유효한 서브도메인으로 업데이트한다
        a (all)         모든 결과로 업데이트한다
        g               Google 스크래핑 결과만으로 업데이트한다
        r               역 조회 결과만으로 업데이트한다
        z               존 트랜스퍼 결과만으로 업데이트한다
  -r, --recursion       NS 레코드가 있는 모든 발견된 서브도메인에 대해 재귀적으로 브루트포스한다
WHOIS 네트워크 범위 옵션:
  -d, --delay <값>     WHOIS 쿼리 사이의 최대 대기 시간을 설정한다
                        기본값은 3초이며 무작위로 정의된다
  -w, --whois           C 클래스 네트워크 범위에 대한 WHOIS 쿼리를 수행한다
                        경고: 이는 매우 큰 네트워크 범위를 생성할 수 있으며
                        역 조회를 수행하는 데 많은 시간이 소요될 수 있다
역 조회 옵션:
  -e, --exclude <정규식>
                        역 조회 결과에서 정규식 표현과 일치하는 PTR 레코드를 제외한다
                        유효하지 않은 호스트 이름에 유용하다
출력 옵션:
  -o --output <파일>    XML 형식으로 출력하며 MagicTree에 가져올 수 있다
  • 특징
    1. DNS 레코드 조회: A, NS, MX, SOA 등의 다양한 DNS 레코드를 조회하여 도메인 구조를 파악할 수 있다.
    2. 서브도메인 브루트포스: 미리 정의된 단어 목록을 사용하여 서브도메인을 찾는 브루트포스 기능을 제공한다.
    3. Google 스크래핑: Google 검색을 통해 서브도메인을 수집할 수 있다.
    4. 역 조회: IP 주소에 대한 역 조회를 수행하여 도메인 소속의 호스트를 찾는다.
  • 출력 내용
    1. 도메인 이름: 쿼리한 대상 도메인.
    2. IP 주소: A 레코드에 대한 IP 주소.
    3. 네임서버(NS) 레코드: 해당 도메인에 대한 네임서버 정보.
    4. MX 레코드: 메일 서버에 대한 정보.
    5. SOA 레코드: Start of Authority 레코드, 도메인의 기본 정보를 포함.
    6. PTR 레코드: 역방향 조회에 대한 정보.
    7. 서브도메인: 발견된 서브도메인에 대한 목록.
    8. 브루트 포싱 결과: 서브도메인 및 호스트를 브루트 포스하여 찾은 결과.
  • 출력 예시
┌──(root㉿kaya)-[~]
└─# dnsenum iqsp.com    
dnsenum VERSION:1.3.1

-----   iqsp.com   -----                                                     


Host's addresses:                                                            
__________________                                                           

iqsp.com.                                86400    IN    A         127.0.0.1  


Name Servers:                                                                
______________                                                               

ns.iqsp.com.                             86400    IN    A        172.16.20.6 


Mail (MX) Servers:                                                           
___________________                                                          

mx1.iqsp.com.                            86400    IN    A        172.16.20.6 


Trying Zone Transfers and getting Bind Versions:                             
_________________________________________________                            


Trying Zone Transfer for iqsp.com on ns.iqsp.com ... 
iqsp.com.                                86400    IN    SOA               (
iqsp.com.                                86400    IN    NS       ns.iqsp.com.
iqsp.com.                                86400    IN    A         127.0.0.1
iqsp.com.                                86400    IN    AAAA            ::1
iqsp.com.                                86400    IN    MX               10
172.16.20.7.iqsp.com.                    86400    IN    PTR      ma.iqsp.com.
bw.iqsp.com.                             86400    IN    A        172.16.20.100
dw.iqsp.com.                             86400    IN    A        172.16.20.101
lamp.iqsp.com.                           86400    IN    A        172.16.20.13
ma.iqsp.com.                             86400    IN    A        172.16.20.7
mon.iqsp.com.                            86400    IN    A        172.16.1.15
mx1.iqsp.com.                            86400    IN    A        172.16.20.6
nk.iqsp.com.                             86400    IN    A        172.16.20.7
ns.iqsp.com.                             86400    IN    A        172.16.20.6
py.iqsp.com.                             86400    IN    A        172.16.20.6
r9.iqsp.com.                             86400    IN    A        172.16.20.6
ub.iqsp.com.                             86400    IN    A        172.16.20.9
w22.iqsp.com.                            86400    IN    A        172.16.20.3


Brute forcing with /usr/share/dnsenum/dns.txt:                               
_______________________________________________                              



iqsp.com class C netranges:                                                  
____________________________                                                 



Performing reverse lookup on 0 ip addresses:                                 
_____________________________________________                                


0 results out of 0 IP addresses.


iqsp.com ip blocks:                                                          
____________________                                                         


done.

 

 

fiernce

  • DNS 및 네트워크 정찰 도구로, 주로 도메인 이름 시스템(DNS) 정보를 수집
  • 특정 도메인에 대한 다양한 정보를 추출하고, 하위 도메인을 찾아내며, 관련된 IP 주소를 식별
[--traverse TRAVERSE] [--search SEARCH [SEARCH ...]]
[--range RANGE] [--delay DELAY]
[--subdomains SUBDOMAINS [SUBDOMAINS ...] | --subdomain-file
SUBDOMAIN_FILE] [--dns-servers DNS_SERVERS [DNS_SERVERS ...]
| --dns-file DNS_FILE] [--tcp]

DNS 정찰 도구로 비연속 IP 공간을 찾기 위한 것이다.

옵션:
  -h, --help            도움말 메시지를 표시하고 종료한다
  --domain DOMAIN       테스트할 도메인 이름을 지정한다
  --connect             비 RFC 1918 호스트에 대한 HTTP 연결을 시도한다
  --wide                발견된 레코드의 전체 클래스 C를 스캔한다
  --traverse TRAVERSE   발견된 레코드 근처의 IP를 스캔하되 인접한 클래스 C에는 들어가지 않는다
  --search SEARCH [SEARCH ...]
                        조회 확장을 필터링할 도메인을 지정한다
  --range RANGE         내부 IP 범위를 스캔하며 CIDR 표기법을 사용한다
  --delay DELAY         조회 간 대기 시간을 설정한다
  --subdomains SUBDOMAINS [SUBDOMAINS ...]
                        사용할 서브도메인을 지정한다
  --subdomain-file SUBDOMAIN_FILE
                        파일에 지정된 서브도메인(각 한 줄에 하나)을 사용한다
  --dns-servers DNS_SERVERS [DNS_SERVERS ...]
                        역 조회를 위해 사용할 DNS 서버를 지정한다
  --dns-file DNS_FILE   역 조회를 위해 파일에 지정된 DNS 서버(각 한 줄에 하나)를 사용한다
  --tcp                 UDP 대신 TCP를 사용한다

 

  • 특징
    1. 하위 도메인 검색: 주어진 도메인에 대한 하위 도메인을 자동으로 찾는다. 이를 통해 공격 surface를 넓힐 수 있다.
    2. IP 주소 스캔: 도메인에 대한 IP 주소를 찾고, 이 IP 주소가 속한 네트워크 범위를 스캔할 수 있다.
    3. DNS 서버 정보 수집: 도메인에 대한 DNS 서버 정보를 수집하고, 이를 통해 DNS 구성의 취약점을 분석할 수 있다.
    4. 네트워크 탐색: 비연속 IP 공간을 찾고, 인접한 IP 주소를 탐색하여 추가적인 정보를 제공한다.
    5. 리버스 DNS 조회: IP 주소를 기반으로 도메인 이름을 조회하는 기능을 제공한다.
  • 출력 내용
    1. 도메인 이름: 쿼리한 대상 도메인.
    2. 서브도메인 목록: 발견된 서브도메인 이름.
    3. IP 주소: 각 서브도메인에 대한 IP 주소.
    4. 네임서버(NS) 레코드: 해당 도메인에 대한 네임서버 정보.
    5. 메일 서버(MX) 레코드: 해당 도메인에 대한 메일 서버 정보.
    6. 기타 DNS 레코드: 발견된 다른 관련 DNS 레코드.
  • 출력 예시
┌──(root㉿kaya)-[~]
└─# fierce --domain iqsp.com
NS: ns.iqsp.com.
SOA: ns.iqsp.com. (172.16.20.6)
Zone: success
{<DNS name @>: '@ 86400 IN SOA ns iqsp.google.com 24080601 86400 3600 604800 '
               '10800\n'
               '@ 86400 IN NS ns\n'
               '@ 86400 IN A 127.0.0.1\n'
               '@ 86400 IN AAAA ::1\n'
               '@ 86400 IN MX 10 mx1',
 <DNS name 172.16.20.7>: '172.16.20.7 86400 IN PTR ma',
 <DNS name bw>: 'bw 86400 IN A 172.16.20.100',
 <DNS name dw>: 'dw 86400 IN A 172.16.20.101',
 <DNS name lamp>: 'lamp 86400 IN A 172.16.20.13',
 <DNS name ma>: 'ma 86400 IN A 172.16.20.7',
 <DNS name mon>: 'mon 86400 IN A 172.16.1.15',
 <DNS name mx1>: 'mx1 86400 IN A 172.16.20.6',
 <DNS name nk>: 'nk 86400 IN A 172.16.20.7',
 <DNS name ns>: 'ns 86400 IN A 172.16.20.6',
 <DNS name py>: 'py 86400 IN A 172.16.20.6',
 <DNS name r9>: 'r9 86400 IN A 172.16.20.6',
 <DNS name ub>: 'ub 86400 IN A 172.16.20.9',
 <DNS name w22>: 'w22 86400 IN A 172.16.20.3'}