USFX - Ultimate Subdomain Finder X - Discover subdomains via custom DNS servers
Project description
USFX - Ultimate Subdomain Finder X
===================================
A standalone Python CLI tool for discovering subdomains on internal
networks using custom DNS servers. Designed for air-gapped environments
without internet connectivity.
FEATURES
--------
- Custom DNS Server Support: Specify internal DNS servers
- Offline-Only Modules: All techniques work without internet
- 12 Enumeration Modules:
* DNS Brute Force
* Zone Transfer (AXFR)
* DNSSEC Walking (NSEC/NSEC3)
* DNS Record Mining (MX, NS, TXT, SRV, SOA, CAA)
* Reverse DNS Sweep
* CNAME Chain Analysis
* Subdomain Permutation
* Recursive Sub-subdomain Enumeration
* Virtual Host Discovery
* TLS Certificate SAN Extraction
* Subdomain Takeover Detection
* Web Technology Detection (Wappalyzer)
- Pipeline Modes: Output formats for tool chaining (subs, web, ips, json)
- Multiple Output Formats: JSON, CSV, TXT
- Bundled Wordlists: Small (~500), Medium (~3500), Large (~18000)
- Progress Tracking: Real-time progress with Rich terminal UI
INSTALLATION
------------
From PyPI (Recommended):
pip install usfx
# With Wappalyzer support for web technology detection
pip install usfx[webtech]
From GitHub Releases:
# Download wheel from:
# https://github.com/devastator-x/usfx/releases/latest
pip install usfx-1.2.0-py3-none-any.whl
From Source (Development):
git clone https://github.com/devastator-x/usfx.git
cd usfx
pip install -e .
QUICK START
-----------
Basic Usage:
usfx corp.local # System DNS
usfx corp.local -d 192.168.1.1 # Internal DNS
usfx corp.local -d 192.168.1.1 -d 10.0.0.1 # Multiple DNS
Wordlist Options:
usfx corp.local -d 10.0.0.1 -s small # ~500 words
usfx corp.local -d 10.0.0.1 -s medium # ~3500 words (default)
usfx corp.local -d 10.0.0.1 -s large # ~18000 words
usfx corp.local -d 10.0.0.1 -w /path/to/custom.txt
Output Options:
usfx corp.local -d 10.0.0.1 -o results.json
usfx corp.local -d 10.0.0.1 -o results.csv -f csv
usfx corp.local -d 10.0.0.1 -o results.txt -f txt
Module Selection:
usfx corp.local -d 10.0.0.1 -m bruteforce,zone,records
Available modules:
bruteforce - DNS brute force with wordlist
zone - Zone transfer (AXFR)
dnssec - DNSSEC zone walking
records - DNS record mining
reverse - Reverse DNS sweep
cname - CNAME chain analysis
permutation - Subdomain permutation
recursive - Recursive sub-subdomain enumeration
vhost - Virtual host discovery
tls - TLS certificate analysis
takeover - Subdomain takeover detection
webtech - Web technology detection
Extended Scanning:
# Subdomain takeover vulnerability detection
usfx corp.local -d 10.0.0.1 --takeover
# Web technology detection (optional: python-Wappalyzer)
usfx corp.local -d 10.0.0.1 --web-tech
# Custom web ports for tech detection
usfx corp.local -d 10.0.0.1 --web-tech --web-ports 80,443,8080,8443
Pipeline Modes:
# Output only subdomains (one per line) - pipe to other tools
usfx corp.local -d 10.0.0.1 --pipe-subs | httpx
# Output only web URLs
usfx corp.local -d 10.0.0.1 --web-tech --pipe-web
# Output only IP addresses
usfx corp.local -d 10.0.0.1 --pipe-ips | nmap -iL -
# JSON output to stdout (for jq processing)
usfx corp.local -d 10.0.0.1 --pipe-json | jq '.subdomains'
Advanced Options:
usfx corp.local -d 10.0.0.1 -t 50 --timeout 5.0
usfx corp.local -d 10.0.0.1 --reverse-range 192.168.0.0/24
usfx corp.local -d 10.0.0.1 --vhost-ip 192.168.1.100
usfx corp.local -d 10.0.0.1 -v # Verbose
usfx corp.local -d 10.0.0.1 -q # Quiet
CLI REFERENCE
-------------
Usage: usfx [OPTIONS] DOMAIN
Options:
-d, --dns-server TEXT DNS server IP (can be repeated)
-w, --wordlist PATH Custom wordlist file
-s, --wordlist-size TEXT Wordlist size: small|medium|large
-o, --output PATH Output file path
-f, --format TEXT Output format: json|csv|txt
-t, --threads INTEGER Parallel threads (default: 30, max: 100)
--timeout FLOAT DNS timeout in seconds (default: 3.0)
-m, --modules TEXT Comma-separated module list
--reverse-range TEXT CIDR range for reverse DNS
--vhost-ip TEXT IP for vhost scanning
--takeover Enable subdomain takeover detection
--web-tech Enable web technology detection
--web-ports TEXT Ports for web tech scanning (default: 80,443,8080,8443)
--pipe-subs Pipeline: output subdomains only
--pipe-web Pipeline: output web URLs only
--pipe-ips Pipeline: output IPs only
--pipe-json Pipeline: JSON to stdout
-v, --verbose Verbose output
-q, --quiet Suppress non-essential output
--no-color Disable colored output
--version Show version
--help Show help message
PYTHON API
----------
from usfx import ScanConfig, SubdomainEngine
from usfx.config import WordlistSize
config = ScanConfig(
domain='corp.internal',
dns_servers=['10.0.0.1', '10.0.0.2'],
wordlist_size=WordlistSize.MEDIUM,
threads=50,
timeout=3.0,
takeover=True,
web_tech=True,
)
engine = SubdomainEngine()
result = engine.scan(config)
print(f"Found {result.total_found} subdomains")
for sub in result.subdomains:
print(f" {sub.subdomain} -> {sub.ip}")
# Takeover vulnerabilities
for vuln in result.takeover_results:
print(f" VULN: {vuln.subdomain} -> {vuln.service}")
# Web technologies
for web in result.web_tech_results:
print(f" WEB: {web.url} - {', '.join(web.technologies)}")
MODULE DESCRIPTIONS
-------------------
dns_bruteforce Wordlist-based DNS queries Medium
zone_transfer AXFR zone transfer attempts Fast
dnssec_walker NSEC/NSEC3 zone walking Fast
dns_records MX/NS/TXT/SRV/SOA/CAA mining Fast
reverse_dns PTR lookups on IP ranges Slow
cname_chaser CNAME chain tracking Fast
permutation Subdomain variation generation Medium
recursive_enum Sub-subdomain discovery Medium
vhost_scanner Host header brute force Slow
tls_analyzer TLS certificate SAN extraction Medium
takeover Subdomain takeover detection Fast
web_tech Web technology detection Medium
REQUIREMENTS
------------
- Python 3.10+
- dnspython >= 2.4.0
- click >= 8.1.0
- requests >= 2.28.0
- cryptography >= 41.0.0
- rich >= 13.0.0
Optional:
- python-Wappalyzer >= 0.3.1 (for web technology detection)
USE CASES
---------
Internal Network Penetration Testing:
usfx corp.internal -d 10.0.0.53 -s large --takeover -o findings.json
Active Directory Reconnaissance:
usfx ad.corp.local -d 192.168.1.1 -m records,reverse,zone
IT Asset Discovery:
usfx internal.company -d 172.16.0.1 --reverse-range 172.16.0.0/16
Web Application Mapping:
usfx corp.local -d 10.0.0.1 --web-tech --pipe-web | httpx -silent
Tool Integration:
usfx corp.local --pipe-subs | nuclei -t takeovers/
LICENSE
-------
MIT License - See LICENSE file for details.
================================================================================
한국어 (KOREAN)
================================================================================
USFX - Ultimate Subdomain Finder X
===================================
내부 네트워크에서 커스텀 DNS 서버를 사용하여 서브도메인을 탐지하는
독립 실행형 Python CLI 도구입니다. 인터넷 연결이 없는 에어갭(Air-gapped)
환경에서 사용할 수 있도록 설계되었습니다.
기능
----
- 커스텀 DNS 서버 지원: 내부 DNS 서버 지정 가능
- 오프라인 전용 모듈: 모든 기법이 인터넷 없이 작동
- 12개 열거 모듈:
* DNS 브루트포스
* Zone Transfer (AXFR)
* DNSSEC 워킹 (NSEC/NSEC3)
* DNS 레코드 마이닝 (MX, NS, TXT, SRV, SOA, CAA)
* 역방향 DNS 스윕
* CNAME 체인 분석
* 서브도메인 순열 생성
* 재귀적 서브-서브도메인 열거
* 가상 호스트 탐지
* TLS 인증서 SAN 추출
* 서브도메인 Takeover 탐지
* 웹 기술 탐지 (Wappalyzer)
- 파이프라인 모드: 다른 도구와 연동을 위한 출력 포맷 (subs, web, ips, json)
- 다중 출력 포맷: JSON, CSV, TXT
- 번들 워드리스트: Small (~500), Medium (~3500), Large (~18000)
- 진행 상황 추적: Rich 터미널 UI로 실시간 진행 표시
설치
----
PyPI에서 설치 (권장):
pip install usfx
# Wappalyzer 웹 기술 탐지 지원 포함
pip install usfx[webtech]
GitHub Releases에서 설치:
# 다운로드:
# https://github.com/devastator-x/usfx/releases/latest
pip install usfx-1.2.0-py3-none-any.whl
소스에서 설치 (개발용):
git clone https://github.com/devastator-x/usfx.git
cd usfx
pip install -e .
빠른 시작
---------
기본 사용법:
usfx corp.local # 시스템 DNS 사용
usfx corp.local -d 192.168.1.1 # 내부 DNS 지정
usfx corp.local -d 192.168.1.1 -d 10.0.0.1 # 다중 DNS 지정
워드리스트 옵션:
usfx corp.local -d 10.0.0.1 -s small # ~500 단어
usfx corp.local -d 10.0.0.1 -s medium # ~3500 단어 (기본값)
usfx corp.local -d 10.0.0.1 -s large # ~18000 단어
usfx corp.local -d 10.0.0.1 -w /path/to/custom.txt
출력 옵션:
usfx corp.local -d 10.0.0.1 -o results.json
usfx corp.local -d 10.0.0.1 -o results.csv -f csv
usfx corp.local -d 10.0.0.1 -o results.txt -f txt
모듈 선택:
usfx corp.local -d 10.0.0.1 -m bruteforce,zone,records
사용 가능한 모듈:
bruteforce - 워드리스트 기반 DNS 브루트포스
zone - Zone Transfer (AXFR)
dnssec - DNSSEC 존 워킹
records - DNS 레코드 마이닝
reverse - 역방향 DNS 스윕
cname - CNAME 체인 분석
permutation - 서브도메인 순열 생성
recursive - 재귀적 서브-서브도메인 열거
vhost - 가상 호스트 탐지
tls - TLS 인증서 분석
takeover - 서브도메인 Takeover 탐지
webtech - 웹 기술 탐지
확장 스캐닝:
# 서브도메인 Takeover 취약점 탐지
usfx corp.local -d 10.0.0.1 --takeover
# 웹 기술 탐지 (선택사항: python-Wappalyzer)
usfx corp.local -d 10.0.0.1 --web-tech
# 웹 기술 탐지 포트 지정
usfx corp.local -d 10.0.0.1 --web-tech --web-ports 80,443,8080,8443
파이프라인 모드:
# 서브도메인만 출력 (한 줄에 하나) - 다른 도구로 파이프
usfx corp.local -d 10.0.0.1 --pipe-subs | httpx
# 웹 URL만 출력
usfx corp.local -d 10.0.0.1 --web-tech --pipe-web
# IP 주소만 출력
usfx corp.local -d 10.0.0.1 --pipe-ips | nmap -iL -
# JSON으로 stdout 출력 (jq 처리용)
usfx corp.local -d 10.0.0.1 --pipe-json | jq '.subdomains'
고급 옵션:
usfx corp.local -d 10.0.0.1 -t 50 --timeout 5.0
usfx corp.local -d 10.0.0.1 --reverse-range 192.168.0.0/24
usfx corp.local -d 10.0.0.1 --vhost-ip 192.168.1.100
usfx corp.local -d 10.0.0.1 -v # 상세 출력
usfx corp.local -d 10.0.0.1 -q # 조용한 모드
CLI 레퍼런스
------------
사용법: usfx [옵션] 도메인
옵션:
-d, --dns-server TEXT DNS 서버 IP (여러 번 지정 가능)
-w, --wordlist PATH 커스텀 워드리스트 파일
-s, --wordlist-size TEXT 워드리스트 크기: small|medium|large
-o, --output PATH 출력 파일 경로
-f, --format TEXT 출력 포맷: json|csv|txt
-t, --threads INTEGER 병렬 스레드 수 (기본: 30, 최대: 100)
--timeout FLOAT DNS 타임아웃 (초, 기본: 3.0)
-m, --modules TEXT 쉼표로 구분된 모듈 목록
--reverse-range TEXT 역방향 DNS용 CIDR 범위
--vhost-ip TEXT 가상 호스트 스캐닝용 IP
--takeover 서브도메인 Takeover 탐지 활성화
--web-tech 웹 기술 탐지 활성화
--web-ports TEXT 웹 기술 스캐닝 포트 (기본: 80,443,8080,8443)
--pipe-subs 파이프라인: 서브도메인만 출력
--pipe-web 파이프라인: 웹 URL만 출력
--pipe-ips 파이프라인: IP만 출력
--pipe-json 파이프라인: JSON으로 stdout 출력
-v, --verbose 상세 출력
-q, --quiet 불필요한 출력 숨김
--no-color 색상 출력 비활성화
--version 버전 표시
--help 도움말 표시
Python API
----------
from usfx import ScanConfig, SubdomainEngine
from usfx.config import WordlistSize
config = ScanConfig(
domain='corp.internal',
dns_servers=['10.0.0.1', '10.0.0.2'],
wordlist_size=WordlistSize.MEDIUM,
threads=50,
timeout=3.0,
takeover=True, # Takeover 탐지 활성화
web_tech=True, # 웹 기술 탐지 활성화
)
engine = SubdomainEngine()
result = engine.scan(config)
print(f"{result.total_found}개 서브도메인 발견")
for sub in result.subdomains:
print(f" {sub.subdomain} -> {sub.ip}")
# Takeover 취약점
for vuln in result.takeover_results:
print(f" 취약: {vuln.subdomain} -> {vuln.service}")
# 웹 기술
for web in result.web_tech_results:
print(f" 웹: {web.url} - {', '.join(web.technologies)}")
모듈 설명
---------
dns_bruteforce 워드리스트 기반 DNS 쿼리 보통
zone_transfer AXFR 존 전송 시도 빠름
dnssec_walker NSEC/NSEC3 존 워킹 빠름
dns_records MX/NS/TXT/SRV/SOA/CAA 마이닝 빠름
reverse_dns IP 범위 PTR 룩업 느림
cname_chaser CNAME 체인 추적 빠름
permutation 서브도메인 변형 생성 보통
recursive_enum 서브-서브도메인 탐지 보통
vhost_scanner Host 헤더 브루트포스 느림
tls_analyzer TLS 인증서 SAN 추출 보통
takeover 서브도메인 Takeover 탐지 빠름
web_tech 웹 기술 탐지 보통
요구 사항
---------
- Python 3.10+
- dnspython >= 2.4.0
- click >= 8.1.0
- requests >= 2.28.0
- cryptography >= 41.0.0
- rich >= 13.0.0
선택사항:
- python-Wappalyzer >= 0.3.1 (웹 기술 탐지용)
사용 사례
---------
내부 네트워크 침투 테스트:
usfx corp.internal -d 10.0.0.53 -s large --takeover -o findings.json
Active Directory 정찰:
usfx ad.corp.local -d 192.168.1.1 -m records,reverse,zone
IT 자산 탐지:
usfx internal.company -d 172.16.0.1 --reverse-range 172.16.0.0/16
웹 애플리케이션 매핑:
usfx corp.local -d 10.0.0.1 --web-tech --pipe-web | httpx -silent
도구 연동:
usfx corp.local --pipe-subs | nuclei -t takeovers/
라이선스
--------
MIT License - 자세한 내용은 LICENSE 파일을 참조하세요.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
usfx-1.2.1.tar.gz
(108.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
usfx-1.2.1-py3-none-any.whl
(123.3 kB
view details)
File details
Details for the file usfx-1.2.1.tar.gz.
File metadata
- Download URL: usfx-1.2.1.tar.gz
- Upload date:
- Size: 108.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f40bcf11c1c69bcb9681126593c714f3dbc987ea9deb6b813237f5e91fdb7bdb
|
|
| MD5 |
b3be52710dac3974fa39d5b50ccf0724
|
|
| BLAKE2b-256 |
87280bd0ee68b20325971f67a907430dfe8519af69e588da7910c0932c96fada
|
File details
Details for the file usfx-1.2.1-py3-none-any.whl.
File metadata
- Download URL: usfx-1.2.1-py3-none-any.whl
- Upload date:
- Size: 123.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b8b023e14769bc71f585397fccb2eb302e3605ee9ebd3a7ef2c5bac7f695498
|
|
| MD5 |
7fd0239ed23cf097673a3b6d9e9467f7
|
|
| BLAKE2b-256 |
143897066d4247127d6b84b3dea26327267d8ee06a9b3a5e8cd6c5b79c0d5130
|