
Concurrent DNS takeover scanner detecting CNAME, NS, AXFR, SPF, MX, SRV, and stale A record vulnerabilities across cloud providers, with multi-level chain analysis.
DNS Takeover Scanner
Subjack은 Go로 작성된 DNS 탈취 스캐너로, 도메인 목록을 동시에 스캔하여 탈취 가능한 도메인을 식별하도록 설계되었습니다. Go의 속도와 효율성 덕분에 이 도구는 대량 테스트에서 특히 두각을 나타냅니다. 오탐을 배제하기 위해 항상 결과를 수동으로 다시 확인하세요.
Subjack이 탐지하는 항목:
include: 지시문 내 만료된 도메인Go가 필요합니다.
go install github.com/haccer/subjack@latest
Linux, macOS, Windows용 사전 빌드된 바이너리도 릴리스 페이지에서 사용할 수 있습니다 — 컴파일이 느린 소규모 VPS에 유용합니다.
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
| 플래그 | 설명 | 기본값 |
|---|---|---|
-d | 확인할 단일 도메인 | |
-w | 서브도메인 워드리스트 경로 | |
-t | 동시 스레드 수 | 10 |
-timeout | 연결 타임아웃 전 대기할 초 | 10 |
-o | 결과를 파일로 출력 (JSON 출력은 .json 확장자 사용) | |
-ssl | HTTPS 연결 강제 (정확도가 높아질 수 있음) | false |
-a | 식별된 CNAME이 있는 URL뿐만 아니라 모든 URL에 요청 전송 (권장) | false |
-m | 도메인이 등록 가능하지 않더라도 죽은 CNAME 레코드로 표시 | false |
-r | DNS 리졸버 목록 경로 (줄당 하나의 IP 또는 host:port, 실패 시 8.8.8.8로 폴백) | |
-ns | NS 탈취 확인 (만료된 NS 도메인 + dangling 클라우드 DNS 위임) | false |
-ar | 죽은 IP를 가리키는 오래된 A 레코드 확인 (ICMP에 root 권한이 필요할 수 있음) | false |
-axfr | 존 전송 (AXFR) 확인, NS 브루트포스 포함 | false |
-mail | SPF include 및 MX 레코드 탈취 확인 | false |
-srv | SRV 레코드 탈취 확인 (도메인당 약 28개의 DNS 쿼리 추가) | false |
-v | 요청당 더 많은 정보 표시 | false |
Subjack은 stdin에서 도메인을 읽을 수 있어 다른 도구의 출력을 파이프로 연결하기 쉽습니다:
subfinder -d example.com | subjack -ssl -o results.json
cat domains.txt | subjack -t 20 -o results.txt
-ns 플래그를 사용하면 subjack은 두 가지 유형의 네임서버 탈취 검사를 수행합니다:
만료된 NS 도메인: 도메인의 네임서버 중 만료되어 구매 가능한 것이 있는지 확인합니다. 만료된 네임서버를 등록한 공격자는 해당 도메인의 모든 DNS를 완전히 제어할 수 있습니다 — 모든 레코드를 어디든 가리키게 하고, 이메일을 가로채고, 인증서를 발급하는 등의 행위가 가능합니다.
Dangling NS 위임: 도메인의 NS 레코드가 클라우드 DNS 제공업체를 가리키지만 호스팅된 존이 삭제된 경우를 탐지합니다. Subjack은 각 네임서버에 직접 SOA 레코드를 질의합니다 — 모두 SERVFAIL 또는 REFUSED를 반환하면 존이 사라진 것이며 잠재적으로 소유 가능합니다. 지원 제공업체:
ns-*.awsdns-*)ns-cloud-*.googledomains.com)ns*-*.azure-dns.*)ns*.digitalocean.com)ns*.vultr.com)ns*.linode.com)subjack -w subdomains.txt -ns -o results.json
-ar 플래그를 사용하면 subjack은 A 레코드를 확인하고 IP 주소가 실제로 살아있는지 검사합니다. 회사가 클라우드 서버를 종료하면서 DNS A 레코드를 제거하는 것을 잊으면, 해당 IP는 제공업체의 풀에 반환됩니다. 공격자는 해당 제공업체에서 새 인스턴스를 생성하여 동일한 IP를 할당받을 때까지 시도함으로써 서브도메인의 제어권을 얻을 수 있습니다.
Subjack은 가능한 경우 클라우드 제공업체(AWS, GCP, Azure, DigitalOcean, Linode, Vultr, Oracle)를 식별하여 올바른 플랫폼을 대상으로 삼기 쉽게 합니다. 탐지는 ICMP ping(root 필요)을 사용하며 포트 80/443에서 TCP 폴백을 사용합니다.
sudo subjack -w subdomains.txt -ar -o results.json
결과는 STALE A RECORD로 표시되며 수동으로 확인해야 합니다 — 응답하지 않는 IP가 항상 재획득 가능하다는 의미는 아닙니다.
-axfr 플래그를 사용하면 subjack은 전체 도메인의 DNS 레코드를 노출할 수 있는 DNS 존 전송 (AXFR)을 시도합니다. Subjack은 도메인의 공식 네임서버를 테스트하는 것에 그치지 않고 일반적인 네임서버 호스트명(ns1, dns-0, ns-backup 등)도 브루트포싱합니다. 숨겨지거나 잊힌 네임서버는 기본 네임서버가 잠긴 후에도 보안이 설정되지 않은 채로 남아 있는 경우가 많기 때문입니다.
subjack -d example.com -axfr -o results.json
subjack -w domains.txt -axfr -o results.json
결과는 취약한 네임서버와 노출된 레코드 수와 함께 ZONE TRANSFER로 표시됩니다.
-mail 플래그를 사용하면 subjack은 두 가지 이메일 기반 탈취 벡터를 확인합니다:
SPF include 탈취: SPF TXT 레코드를 파싱하고 include: 도메인 중 만료되어 등록 가능한 것이 있는지 확인합니다. include된 도메인을 등록한 공격자는 SPF와 DMARC를 우회하여 대상으로 완전히 인증된 이메일을 보낼 수 있습니다.
MX 레코드 탈취: MX 레코드 대상 중 만료되어 등록 가능한 것이 있는지 확인합니다. 메일 서버를 제어하는 공격자는 모든 수신 이메일을 가로챌 수 있습니다 — 비밀번호 재설정, 2FA 코드 등.
subjack -w domains.txt -mail -o results.json
CNAME 체인 탈취는 모든 스캔에서 자동으로 실행됩니다: 다단계 CNAME 체인(최대 10단계 깊이)을 따라가며 중간 대상이 소유 가능한지 확인합니다. 표준 CNAME 탐지는 첫 번째 홉만 확인합니다 — 체인은 더 깊은 탈취 기회를 잡아냅니다.
SRV 레코드 탈취는 -srv 플래그로 선택적으로 활성화됩니다. 일반적인 SRV 위치(SIP, XMPP, LDAP, Kerberos, IMAP, CalDAV 등)를 탐색하면 도메인당 약 28개의 DNS 쿼리가 추가되기 때문입니다:
subjack -w domains.txt -srv -o results.json
Rapid7의 Project Sonar 결과를 사용하여 취약한 서브도메인을 대량으로 찾아내는 일종의 PoC 스크립트인 scanio.sh를 사용할 수 있습니다. 이 스크립트는 덤프를 파싱하고 grep하여 원하는 CNAME 레코드를 찾아내고, 적대적 서브도메인 탈취에 취약한지 subjack으로 확인할 대규모 서브도메인 목록을 만듭니다. 책임감 있게 사용하세요.
워드리스트에는 서브도메인 목록이 한 줄에 하나씩 포함되어야 합니다:
assets.xen.world
assets.github.com
b.xen.world
big.example.com
cdn.xen.world
dev.xen.world
dev2.twitter.com
테스트 스위트는 폐쇄적입니다 — 로컬 DNS 및 HTTP 픽스처에 대해 실행되며 네트워크가 필요하지 않습니다:
go test -race ./...
DNS 탈취에 관한 추가 정보:
subjack은 MIT 라이선스에 따라 배포됩니다.