
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 인수 스캐너
Subjack은 Go로 작성된 DNS 인수 스캐너로, 도메인 목록을 동시에 스캔하여 하이재킹이 가능한 도메인을 식별하도록 설계되었습니다. Go의 속도와 효율성 덕분에 이 도구는 대량 테스트에서 특히 두드러집니다. 가양성을 배제하기 위해 결과를 항상 수동으로 다시 확인하세요.
Subjack이 감지하는 항목:
include: 지시문 내 만료된 도메인으로 이메일 스푸핑 가능Go가 필요합니다.
go install github.com/haccer/subjack@latest
subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
Subjack은 표준 입력에서 도메인을 읽을 수 있어 다른 도구의 출력을 쉽게 파이프할 수 있습니다:
subfinder -d example.com | subjack -ssl -o results.json
cat domains.txt | subjack -t 20 -o results.txt
-ns 플래그를 사용하면 subjack이 두 가지 유형의 네임서버 인수 확인을 수행합니다:
만료된 NS 도메인: 도메인의 네임서버 중 만료되어 구매 가능한 것이 있는지 확인합니다. 만료된 네임서버를 등록한 공격자는 해당 도메인의 모든 DNS를 완전히 제어할 수 있습니다. 모든 레코드를 원하는 대로 지정하고, 이메일을 가로채고, 인증서를 발급하는 등이 가능합니다.
방치된 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 핑(root 권한 필요)과 TCP 포트 80/443 폴백을 사용합니다.
sudo subjack -w subdomains.txt -ar -o results.json
결과는 STALE A RECORD로 표시되며 수동으로 확인해야 합니다. 응답하지 않는 IP가 항상 회수 가능한 것은 아닙니다.
-axfr 플래그를 사용하면 subjack이 DNS 영역 전송(AXFR)을 시도하여 전체 도메인의 DNS 레코드를 노출할 수 있습니다. 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: 도메인 중 만료되어 등록 가능한 것이 있는지 확인합니다. 포함된 도메인을 등록한 공격자는 대상으로 완전히 인증된 이메일을 보낼 수 있어 SPF 및 DMARC를 우회합니다.
MX 레코드 인수: MX 레코드 대상 중 만료되어 등록 가능한 것이 있는지 확인합니다. 메일 서버를 제어하는 공격자는 비밀번호 재설정, 2FA 코드 등 모든 인바운드 이메일을 가로챌 수 있습니다.
subjack -w domains.txt -mail -o results.json
이러한 검사는 모든 스캔에서 자동으로 실행됩니다:
CNAME 체인 인수: 다단계 CNAME 체인(최대 10단계)을 따라가며 중간 대상이 청구 가능한지 확인합니다. 표준 CNAME 감지는 첫 번째 홉만 확인하는 반면, 체인 감지는 더 깊은 인수 기회를 포착합니다.
SRV 레코드 인수: 일반적인 SRV 레코드(SIP, XMPP, LDAP, Kerberos, IMAP, CalDAV 등)의 대상이 만료되어 등록 가능한지 확인합니다.
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 인수에 대한 추가 정보:
| 플래그 | 설명 | 기본값 |
|---|
-d | 확인할 단일 도메인 | |
-w | 서브도메인 목록 파일 경로 | |
-t | 동시 스레드 수 | 10 |
-timeout | 연결 시간 초과까지 대기할 시간(초) | 10 |
-o | 결과를 파일로 출력 (JSON 출력 시 .json 확장자 사용) | |
-ssl | HTTPS 연결 강제 (정확도 향상 가능) | false |
-a | 식별된 CNAME뿐만 아니라 모든 URL에 요청 전송 (권장) | false |
-m | 등록 가능하지 않아도 죽은 CNAME 레코드 표시 | false |
-r | DNS 리졸버 목록 파일 경로 (각 줄에 IP 하나, 실패 시 8.8.8.8으로 대체) | |
-ns | NS 인수 확인 (만료된 NS 도메인 + 방치된 클라우드 DNS 위임) | false |
-ar | 죽은 IP를 가리키는 유령 A 레코드 확인 (ICMP에 root 권한 필요할 수 있음) | false |
-axfr | 영역 전송(AXFR) 확인 (NS 무차별 대입 포함) | false |
-mail | SPF include 및 MX 레코드 인수 확인 | false |
-v | 요청당 더 많은 정보 표시 | false |