Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/projectdiscovery/dnsx
ReconnaissanceDNS & Subdomain EnumerationInformation GatheringUtilities & FrameworksDNS Analysis
GitHubprojectdiscovery/dnsx

dnsx

dnsx는 사용자가 제공한 리졸버 목록을 사용하여 원하는 여러 DNS 쿼리를 실행할 수 있는 빠르고 다목적 DNS 툴킷입니다.

저장소 보기
2.8k3273일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

dnsx

DNS 쿼리 실행을 위해 설계된 빠르고 다목적 DNS 툴킷

기능 • 설치 • 사용법 • dnsx 실행 • 와일드카드 • 참고사항 • Discord 참여


dnsx는 retryabledns 라이브러리를 통해 다양한 프로브를 실행하도록 설계된 빠르고 다목적 DNS 툴킷입니다. 여러 DNS 쿼리, 사용자 제공 리졸버, shuffledns와 유사한 DNS 와일드카드 필터링 등을 지원합니다.

기능

dnsx

  • DNS 레코드를 조회하는 간단하고 편리한 유틸리티
  • A, AAAA, CNAME, PTR, NS, MX, TXT, SRV, SOA 쿼리 지원
  • DNS 해석 / 무차별 대입 지원
  • 사용자 정의 리졸버 입력 지원
  • 다양한 리졸버 형식 (TCP/UDP/DOH/DOT) 지원
  • stdin 및 stdout 지원
  • 자동 와일드카드 처리 지원

설치 지침

dnsx를 성공적으로 설치하려면 go1.21이 필요합니다. 다음 명령어를 실행하여 최신 버전을 설치하세요:

root@kitploit:~
go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest

사용법

root@kitploit:~
dnsx -h

그러면 도구에 대한 도움말이 표시됩니다. 지원하는 모든 스위치는 다음과 같습니다.

root@kitploit:~
INPUT:
   -l, -list string      list of sub(domains)/hosts to resolve (file or stdin)
   -d, -domain string    list of domain to bruteforce (file or comma separated or stdin)
   -w, -wordlist string  list of words to bruteforce (file or comma separated or stdin)

QUERY:
   -a                       query A record (default)
   -aaaa                    query AAAA record
   -cname                   query CNAME record
   -ns                      query NS record
   -txt                     query TXT record
   -srv                     query SRV record
   -ptr                     query PTR record
   -mx                      query MX record
   -soa                     query SOA record
   -any                     query ANY record
   -axfr                    query AXFR
   -caa                     query CAA record
   -recon                   query all the dns records (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa)
   -e, -exclude-type value  dns query type to exclude (a,aaaa,cname,ns,txt,srv,ptr,mx,soa,axfr,caa) (default none)

FILTER:
   -re, -resp          display dns response
   -ro, -resp-only     display dns response only
   -rc, -rcode string  filter result by dns status code (eg. -rcode noerror,servfail,refused)

PROBE:
   -cdn  display cdn name
   -asn  display host asn information

RATE-LIMIT:
   -t, -threads int      number of concurrent threads to use (default 100)
   -rl, -rate-limit int  number of dns request/second to make (disabled as default) (default -1)

UPDATE:
   -up, -update                 update dnsx to latest version
   -duc, -disable-update-check  disable automatic dnsx update check

OUTPUT:
   -o, -output string           file to write output
   -j, -json                    write output in JSONL(ines) format
   -omit-raw, -or               omit raw dns response from jsonl output
   -ot, -output-template string custom output template (e.g. -ot '{{host}} {{a}}')

DEBUG:
   -hc, -health-check  run diagnostic check up
   -silent             display only results in the output
   -v, -verbose        display verbose output
   -raw, -debug        display raw dns response
   -stats              display stats of the running scan
   -version            display version of dnsx
   -nc, -no-color      disable color in output

OPTIMIZATION:
   -retry int                number of dns attempts to make (must be at least 1) (default 2)
   -hf, -hostsfile           use system host file
   -trace                    perform dns tracing
   -trace-max-recursion int  Max recursion for dns trace (default 32767)
   -resume                   resume existing scan
   -stream                   stream mode (wordlist, wildcard, stats and stop/resume will be disabled)
   -timeout value            maximum time to wait for a DNS query to complete (default 3s)

CONFIGURATIONS:
   -auth                         configure projectdiscovery cloud (pdcp) api key (default true)
   -r, -resolver string          list of resolvers to use (file or comma separated)
   -wt, -wildcard-threshold int  wildcard filter threshold (default 5)
   -auto-wildcard                automatically detect wildcard domains for filtering
   -wd, -wildcard-domain string  domain name for manual wildcard filtering (mutually exclusive with -auto-wildcard; other flags will be ignored - json output recommended)

dnsx 실행

DNS 해석

다양한 소스에서 얻은 패시브 서브도메인 목록에서 활성 호스트 이름을 필터링합니다:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent

a.ns.hackerone.com
www.hackerone.com
api.hackerone.com
docs.hackerone.com
mta-sts.managed.hackerone.com
mta-sts.hackerone.com
resources.hackerone.com
b.ns.hackerone.com
mta-sts.forwarding.hackerone.com
events.hackerone.com
support.hackerone.com

주어진 서브도메인 목록에 대한 A 레코드 출력:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent -a -resp

www.hackerone.com [104.16.100.52]
www.hackerone.com [104.16.99.52]
hackerone.com [104.16.99.52]
hackerone.com [104.16.100.52]
api.hackerone.com [104.16.99.52]
api.hackerone.com [104.16.100.52]
mta-sts.forwarding.hackerone.com [185.199.108.153]
mta-sts.forwarding.hackerone.com [185.199.109.153]
mta-sts.forwarding.hackerone.com [185.199.110.153]
mta-sts.forwarding.hackerone.com [185.199.111.153]
a.ns.hackerone.com [162.159.0.31]
resources.hackerone.com [52.60.160.16]
resources.hackerone.com [3.98.63.202]
resources.hackerone.com [52.60.165.183]
resources.hackerone.com [read.uberflip.com]
mta-sts.hackerone.com [185.199.110.153]
mta-sts.hackerone.com [185.199.111.153]
mta-sts.hackerone.com [185.199.109.153]
mta-sts.hackerone.com [185.199.108.153]
gslink.hackerone.com [13.35.210.17]
gslink.hackerone.com [13.35.210.38]
gslink.hackerone.com [13.35.210.83]
gslink.hackerone.com [13.35.210.19]
b.ns.hackerone.com [162.159.1.31]
docs.hackerone.com [185.199.109.153]
docs.hackerone.com [185.199.110.153]
docs.hackerone.com [185.199.111.153]
docs.hackerone.com [185.199.108.153]
support.hackerone.com [104.16.51.111]
support.hackerone.com [104.16.53.111]
mta-sts.managed.hackerone.com [185.199.108.153]
mta-sts.managed.hackerone.com [185.199.109.153]
mta-sts.managed.hackerone.com [185.199.110.153]
mta-sts.managed.hackerone.com [185.199.111.153]

주어진 서브도메인 목록에서 A 레코드 추출:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent -a -resp-only

104.16.99.52
104.16.100.52
162.159.1.31
104.16.99.52
104.16.100.52
185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153
104.16.99.52
104.16.100.52
104.16.51.111
104.16.53.111
185.199.108.153
185.199.111.153
185.199.110.153
185.199.111.153

주어진 서브도메인 목록에서 CNAME 레코드 추출:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent -cname -resp

support.hackerone.com [hackerone.zendesk.com]
resources.hackerone.com [read.uberflip.com]
mta-sts.hackerone.com [hacker0x01.github.io]
mta-sts.forwarding.hackerone.com [hacker0x01.github.io]
events.hackerone.com [whitelabel.bigmarker.com]

주어진 서브도메인 목록에서 ASN 레코드 추출:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent  -asn

b.ns.hackerone.com [AS13335, CLOUDFLARENET, US]
a.ns.hackerone.com [AS13335, CLOUDFLARENET, US]
hackerone.com [AS13335, CLOUDFLARENET, US]
www.hackerone.com [AS13335, CLOUDFLARENET, US]
api.hackerone.com [AS13335, CLOUDFLARENET, US]
support.hackerone.com [AS13335, CLOUDFLARENET, US]

주어진 (서브)도메인 목록에서 dns 상태 코드를 사용하여 프로브:

root@kitploit:~
subfinder -silent -d hackerone.com | dnsx -silent -rcode noerror,servfail,refused

ns.hackerone.com [NOERROR]
a.ns.hackerone.com [NOERROR]
b.ns.hackerone.com [NOERROR]
support.hackerone.com [NOERROR]
resources.hackerone.com [NOERROR]
mta-sts.hackerone.com [NOERROR]
www.hackerone.com [NOERROR]
mta-sts.forwarding.hackerone.com [NOERROR]
docs.hackerone.com [NOERROR]

PTR 쿼리를 사용하여 주어진 네트워크 범위에서 서브도메인 추출:

root@kitploit:~
echo 173.0.84.0/24 | dnsx -silent -resp-only -ptr

cors.api.paypal.com
trinityadminauth.paypal.com
cld-edge-origin-api.paypal.com
appmanagement.paypal.com
svcs.paypal.com
trinitypie-serv.paypal.com
ppn.paypal.com
pointofsale-new.paypal.com
pointofsale.paypal.com
slc-a-origin-pointofsale.paypal.com
fpdbs.paypal.com

PTR 쿼리를 사용하여 주어진 ASN에서 서브도메인 추출:

root@kitploit:~
echo AS17012 | dnsx -silent -resp-only -ptr 

apiagw-a.paypal.com
notify.paypal.com
adnormserv-slc-a.paypal.com
a.sandbox.paypal.com
apps2.paypal-labs.com
pilot-payflowpro.paypal.com
www.paypallabs.com
paypal-portal.com
micropayments.paypal-labs.com
minicart.paypal-labs.com

사용자 정의 출력 형식

-output-template (-ot) 플래그는 기본 대괄호 레이아웃(예: example.com [A] [104.20.23.154]) 대신 템플릿을 사용하여 출력 형식을 사용자 정의할 수 있습니다. 명령줄에 템플릿을 직접 지정하여 해석된 데이터가 표시되는 방식을 제어합니다.

템플릿 변수는 JSONL 출력(-json)에 사용된 것과 동일한 필드 이름에 매핑되므로 다음 중 하나를 {{field}}로 참조할 수 있습니다:

host, a, aaaa, cname, ns, txt, mx, srv, ptr, soa, caa, ttl, resolver, status_code, cdn-name, cdn-type, , . 편의상 별칭은 와 레코드를 결합하여 보관합니다.

여러 값이 있는 레코드(예: 여러 A 레코드)는 단일 필드 내에서 쉼표로 결합됩니다.

root@kitploit:~
echo example.com | dnsx -silent -a -ot '{{host}} {{a}}'

example.com 104.20.23.154,172.66.147.243
root@kitploit:~
echo example.com | dnsx -silent -a -ot '{{ip}} - {{host}}'

104.20.23.154,172.66.147.243 - example.com

[!NOTE] 지정된 필드가 존재하지 않거나 값이 없으면 출력에서 생략됩니다. -output-template은 -json 또는 -raw와 함께 사용할 수 없습니다.


DNS 무차별 대입

d 및 w 플래그를 사용하여 주어진 도메인 또는 도메인 목록에 대한 서브도메인을 무차별 대입합니다:

root@kitploit:~
dnsx -silent -d facebook.com -w dns_worldlist.txt

blog.facebook.com
booking.facebook.com
api.facebook.com
analytics.facebook.com
beta.facebook.com
apollo.facebook.com
ads.facebook.com
box.facebook.com
alpha.facebook.com
apps.facebook.com
connect.facebook.com
c.facebook.com
careers.facebook.com
code.facebook.com

단일 또는 여러 키워드 입력을 사용하여 대상 서브도메인을 무차별 대입합니다. d 또는 w 플래그는 파일 또는 쉼표로 구분된 키워드 입력을 지원합니다:

root@kitploit:~
dnsx -silent -d domains.txt -w jira,grafana,jenkins

grafana.1688.com
grafana.8x8.vc
grafana.airmap.com
grafana.aerius.nl
jenkins.1688.com
jenkins.airbnb.app
jenkins.airmap.com
jenkins.ahn.nl
jenkins.achmea.nl
jira.amocrm.com
jira.amexgbt.com
jira.amitree.com
jira.arrival.com
jira.atlassian.net
jira.atlassian.com

모든 입력 유형(-list, -domain, -wordlist)에 대해 stdin에서 값을 허용합니다. -list 플래그는 기본적으로 stdin을 사용하지만, 다른 입력 유형의 경우 매개변수로 -(대시)를 추가하여 동일한 효과를 얻을 수 있습니다:

root@kitploit:~
cat domains.txt | dnsx -silent -w jira,grafana,jenkins -d -

grafana.1688.com
grafana.8x8.vc
grafana.airmap.com
grafana.aerius.nl
jenkins.1688.com
jenkins.airbnb.app
jenkins.airmap.com
jenkins.ahn.nl
jenkins.achmea.nl
jira.amocrm.com
jira.amexgbt.com
jira.amitree.com
jira.arrival.com
jira.atlassian.net
jira.atlassian.com

플레이스홀더 기반 단어 목록을 사용한 DNS 무차별 대입

root@kitploit:~
$ cat tld.txt

com
by
de
be
al
bi
cg
dj
bs
root@kitploit:~
dnsx -d google.FUZZ -w tld.txt -resp

      _             __  __
   __| | _ __   ___ \ \/ /
  / _' || '_ \ / __| \  / 
 | (_| || | | |\__ \ /  \ 
  \__,_||_| |_||___//_/\_\ v1.1.2

      projectdiscovery.io

google.de [142.250.194.99] 
google.com [142.250.76.206] 
google.be [172.217.27.163] 
google.bs [142.251.42.35] 
google.bi [216.58.196.67] 
google.al [216.58.196.68] 
google.by [142.250.195.4] 
google.cg [142.250.183.131] 
google.dj [142.250.192.3] 

와일드카드 필터링

dnsx의 특별한 기능은 다중 레벨 DNS 기반 와일드카드를 처리하면서도 DNS 요청 수를 매우 적게 유지하는 것입니다. 때로는 모든 서브도메인이 해석되어 출력에 많은 쓰레기가 포함될 수 있습니다. dnsx는 이 문제를 처리하기 위해 IP를 가리키는 서브도메인 수를 추적하고, 그 수가 특정 임계값을 초과하면 해당 IP의 모든 호스트 레벨에서 와일드카드를 반복적으로 확인합니다.

root@kitploit:~
dnsx -l subdomain_list.txt -wd airbnb.com -o output.txt

단일 실행에서 여러 도메인에 걸쳐 와일드카드 DNS를 자동으로 감지하고 필터링하면서 선택한 출력 모드를 유지하려면:

root@kitploit:~
dnsx -l subdomain_list.txt -auto-wildcard -o output.txt

-auto-wildcard와 -wd / -wildcard-domain은 상호 배타적입니다. 기존의 수동 단일 도메인 와일드카드 필터링 흐름을 사용하려면 -wd를 사용하고, 혼합 도메인 입력에서 와일드카드 루트를 자동으로 감지하려면 -auto-wildcard를 사용하십시오.


라이브러리로 dnsx 사용

Go 프로그램에서 라이브러리를 직접 사용할 수 있습니다. 다음 코드 스니펫은 Go 프로그램에서 사용하는 예입니다. 자세한 패키지 구성 및 사용법은 여기를 참조하세요.

root@kitploit:~
package main

import (
	"fmt"

	"github.com/projectdiscovery/dnsx/libs/dnsx"
)

func main() {
	// 기본 옵션으로 DNS 리졸버 생성
	dnsClient, err := dnsx.New(dnsx.DefaultOptions)
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}

	// DNS A 질의 후 해당 IP 반환
	result, err := dnsClient.Lookup("hackerone.com")
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	for idx, msg := range result {
		fmt.Printf("%d: %s\n", idx+1, msg)
	}

	// 쿼리
	rawResp, err := dnsClient.QueryOne("hackerone.com")
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	fmt.Printf("rawResp: %v\n", rawResp)

	jsonStr, err := rawResp.JSON()
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	fmt.Println(jsonStr)

	return
}

📋 참고사항

  • 기본적으로 dnsx는 A 레코드를 확인합니다.
  • 기본적으로 dnsx는 Google, Cloudflare, Quad9 리졸버를 사용합니다.
  • r 플래그를 사용하여 사용자 정의 리졸버 목록을 로드할 수 있습니다.
  • -auto-wildcard는 단일 실행에서 여러 등록 가능한 루트에 걸쳐 와일드카드 도메인을 자동으로 감지합니다.
  • 도메인 이름(-wd)은 수동 와일드카드 필터링에만 필요하며 -auto-wildcard와 함께 사용할 수 없습니다.
  • -wd를 사용한 수동 와일드카드 필터링 시 다른 DNS 레코드 플래그는 무시되며 JSON 출력이 권장됩니다.
  • DNS 해석(l)과 DNS 무차별 대입(w)은 함께 사용할 수 없습니다.
  • VPN 운영자는 높은 DNS/UDP 트래픽을 필터링하는 경향이 있으므로 도구에서 패킷 손실이 발생할 수 있습니다(예: Mullvad VPN). 이 잠재적 해결책을 확인하세요.

dnsx는 projectdiscovery 팀이 🖤로 만들었습니다.

도구 다운로드
dnsx — dnsx는 사용자가 제공한 리졸버 목록을 사용하여 원하는 여러 DNS 쿼리를 실행할 수 있는 빠르고 다목적 DNS 툴킷입니다. | Kitploit
asn
query-time
{{ip}}
A
AAAA