Zum Inhalt springen

DNSx DNS Toolkit Spickzettel

Überblick

DNSx ist ein schnelles und vielseitiges DNS-Toolkit, das von Project Discovery entwickelt wurde und es ermöglicht, mehrere DNS-Sonden mit der retryabledns-Bibliothek auszuführen. Es ist darauf ausgelegt, verschiedene DNS-Abfragen mit Fokus auf Geschwindigkeit und Zuverlässigkeit durchzuführen. DNSx kann mehrere DNS-Datensatztypen verarbeiten und unterstützt benutzerdefinierte Resolver, was es zu einem vielseitigen Werkzeug für DNS-Reconnaissance und -Enumeration macht.

Was DNSx von anderen DNS-Tools unterscheidet, ist seine Fähigkeit, große Mengen an Domains effizient zu verarbeiten und seine Integrationsfähigkeiten mit anderen Sicherheitstools. Es kann Wildcard-DNS-Einträge herausfiltern, DNS-Walking durchführen und wertvolle Informationen aus DNS-Antworten extrahieren. DNSx wird häufig in der Reconnaissance-Phase von Sicherheitsbewertungen verwendet, um Informationen über Ziel-Domains und deren Infrastruktur zu sammeln.

DNSx unterstützt verschiedene Eingabeformate und kann leicht mit anderen Tools in einer Pipeline integriert werden, was es zu einer wesentlichen Komponente in vielen Sicherheits-Testworkflows macht. Seine Fähigkeit, Ergebnisse nach verschiedenen Kriterien zu filtern, hilft Sicherheitsprofis, sich auf die relevantesten Ziele zu konzentrieren.

Installation

Mit Go

Would you like me to continue with the remaining sections?```bash

Install using Go (requires Go 1.20 or later)

go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest

Verify installation

dnsx -version


### Using Docker

```bash
# Pull the latest Docker image
docker pull projectdiscovery/dnsx:latest

# Run DNSx using Docker
docker run -it projectdiscovery/dnsx:latest -h

Using Homebrew (macOS)

# Install using Homebrew
brew install dnsx

# Verify installation
dnsx -version

Using PDTM (Project Discovery Tools Manager)

# Install PDTM first if not already installed
go install -v github.com/projectdiscovery/pdtm/cmd/pdtm@latest

# Install DNSx using PDTM
pdtm -i dnsx

# Verify installation
dnsx -version

On Kali Linux

# Install using apt
sudo apt install dnsx

# Verify installation
dnsx -version

Basic Usage

DNS Lookups

# Perform A record lookup for a single domain
dnsx -d example.com -a

# Perform A record lookup for multiple domains
dnsx -d example.com,hackerone.com -a

# Perform A record lookup from a list of domains
dnsx -l domains.txt -a

# Perform A record lookup from STDIN
cat domains.txt|dnsx -a

Record Types

# Query A records (IPv4 addresses)
dnsx -l domains.txt -a

# Query AAAA records (IPv6 addresses)
dnsx -l domains.txt -aaaa

# Query CNAME records (Canonical names)
dnsx -l domains.txt -cname

# Query NS records (Name servers)
dnsx -l domains.txt -ns

# Query TXT records (Text records)
dnsx -l domains.txt -txt

# Query MX records (Mail exchange servers)
dnsx -l domains.txt -mx

# Query SOA records (Start of authority)
dnsx -l domains.txt -soa

# Query PTR records (Pointer records)
dnsx -l domains.txt -ptr

# Query multiple record types
dnsx -l domains.txt -a -cname -ns

Output Options

# Save results to a file
dnsx -l domains.txt -a -o results.txt

# Output in JSON format
dnsx -l domains.txt -a -json -o results.json

# Output in CSV format
dnsx -l domains.txt -a -csv -o results.csv

# Silent mode (only results)
dnsx -l domains.txt -a -silent

Advanced Usage

Resolver Configuration

# Use specific DNS resolvers
dnsx -l domains.txt -a -resolver 1.1.1.1,8.8.8.8

# Use resolvers from a file
dnsx -l domains.txt -a -resolver-file resolvers.txt

# Use system resolvers
dnsx -l domains.txt -a -system-resolver

Response Filtering

# Filter by response containing specific string
dnsx -l domains.txt -a -resp-only -resp "1.2.3.4"

# Filter by response matching regex
dnsx -l domains.txt -a -resp-only -resp-regex "^1\.2\.[0-9]+\.[0-9]+$"

Wildcard Filtering

# Enable wildcard filtering
dnsx -l domains.txt -a -wildcard

# Set wildcard threshold
dnsx -l domains.txt -a -wildcard-threshold 5

DNS Walking

# Enable DNS walking
dnsx -l domains.txt -a -walk

# Set DNS walking threads
dnsx -l domains.txt -a -walk -walk-threads 20

Performance Optimization

Concurrency and Rate Limiting

# Set concurrency (default: 100)
dnsx -l domains.txt -a -c 200

# Set rate limit
dnsx -l domains.txt -a -rate-limit 100

# Set retries
dnsx -l domains.txt -a -retries 3

Timeout Options

# Set timeout for DNS queries (milliseconds)
dnsx -l domains.txt -a -timeout 5000

Optimization for Large Scans

# Use stream mode for large inputs
dnsx -l large-domains.txt -a -stream

# Increase concurrency for faster scanning
dnsx -l domains.txt -a -c 500

Integration with Other Tools

Pipeline with Subfinder

# Find subdomains and resolve them
subfinder -d example.com -silent|dnsx -a -silent

# Find subdomains and check for specific record types
subfinder -d example.com -silent|dnsx -a -cname -silent

Pipeline with HTTPX

# Resolve domains and probe for HTTP services
dnsx -l domains.txt -a -silent|httpx -silent

# Resolve domains, filter by IP, and probe for HTTP services
dnsx -l domains.txt -a -silent -resp "1.2.3.4"|httpx -silent

Pipeline with Naabu

# Resolve domains and scan for open ports
dnsx -l domains.txt -a -silent|naabu -silent

# Resolve domains, filter by IP, and scan for open ports
dnsx -l domains.txt -a -silent -resp "1.2.3.4"|naabu -silent

Output Customization

Custom Output Format

# Output only domain and IP
dnsx -l domains.txt -a -resp-only

# Output with additional information
dnsx -l domains.txt -a -json

# Count unique IPs
dnsx -l domains.txt -a -resp-only|sort -u|wc -l

# Sort output by IP
dnsx -l domains.txt -a -resp-only|sort -t ' ' -k2

Filtering Output

# Filter by IP
dnsx -l domains.txt -a -resp-only|grep "1.2.3.4"

# Filter by domain
dnsx -l domains.txt -a -resp-only|grep "example.com"

# Find unique IPs
dnsx -l domains.txt -a -resp-only|awk '\\\\{print $2\\\\}'|sort -u
```## Erweiterte Filterung
```bash
# Filter by specific IP
dnsx -l domains.txt -a -resp-only -resp "1.2.3.4"

# Filter by IP range
dnsx -l domains.txt -a -resp-only -resp-regex "^1\.2\.3\.[0-9]+$"
```### Domänen-Filterung
```bash
# Filter by domain pattern
dnsx -l domains.txt -a -resp-only|grep "api"

# Filter by specific TLD
dnsx -l domains.txt -a -resp-only|grep "\.com$"
```### CNAME-Filterung
```bash
# Find domains with specific CNAME
dnsx -l domains.txt -cname -resp-only -resp "cdn.example.com"

# Find domains with CNAME pointing to specific services
dnsx -l domains.txt -cname -resp-only -resp-regex "amazonaws\.com$"
```## Verschiedene Funktionen
```bash
# Perform reverse DNS lookup
dnsx -l ips.txt -ptr

# Perform reverse DNS lookup with response filtering
dnsx -l ips.txt -ptr -resp-only -resp "example.com"
```### Reverse DNS Lookup
```bash
# Perform DNS trace
dnsx -d example.com -trace

# Perform DNS trace with specific resolver
dnsx -d example.com -trace -resolver 1.1.1.1
```### DNS-Trace
```bash
# Check resolver health
dnsx -hc -resolver 1.1.1.1,8.8.8.8

# Check resolver health with timeout
dnsx -hc -resolver 1.1.1.1,8.8.8.8 -timeout 5000
```## Fehlerbehebung
```bash
   # Try different resolvers
   dnsx -l domains.txt -a -resolver 1.1.1.1,8.8.8.8

   # Check resolver health
   dnsx -hc -resolver 1.1.1.1,8.8.8.8
   ```### Häufige Probleme
```bash
   # Increase timeout
   dnsx -l domains.txt -a -timeout 10000

   # Increase retries
   dnsx -l domains.txt -a -retries 5
   ```1. **Resolver-Probleme**
```bash
   # Reduce concurrency
   dnsx -l domains.txt -a -c 50

   # Set rate limit
   dnsx -l domains.txt -a -rate-limit 50
   ```2. **Timeout-Probleme**
```bash
   # Use stream mode for large inputs
   dnsx -l large-domains.txt -a -stream
   ```3. **Ratenlimitierung**
```bash
# Enable verbose mode
dnsx -l domains.txt -a -v

# Show debug information
dnsx -l domains.txt -a -debug

# Show statistics
dnsx -l domains.txt -a -stats
```4. **Speicherprobleme**
`$HOME/.config/dnsx/config.yaml`### Debugging
```yaml
# Example configuration file
concurrency: 100
rate-limit: 100
retries: 3
timeout: 5000
resolvers:
  - 1.1.1.1
  - 8.8.8.8
```## Konfiguration
```bash
# Set DNSx configuration via environment variables
export DNSX_CONCURRENCY=100
export DNSX_RATE_LIMIT=100
export DNSX_RETRIES=3
export DNSX_TIMEOUT=5000
export DNSX_RESOLVERS=1.1.1.1,8.8.8.8
```### Konfigurationsdatei

| Flagge | Beschreibung |
|------|-------------|
| `-d, -domain` | Ziel-Domain für Abfrage |
| `-l, -list` | Datei mit Liste von Domains zum Abfragen |
| `-a` | A-Einträge abfragen |
| `-aaaa` | AAAA-Einträge abfragen |
| `-cname` | CNAME-Einträge abfragen |
| `-ns` | NS-Einträge abfragen |
| `-txt` | TXT-Einträge abfragen |
| `-mx` | MX-Einträge abfragen |
| `-soa` | SOA-Einträge abfragen |
| `-ptr` | PTR-Einträge abfragen |
| `-o, -output` | Datei zum Schreiben der Ausgabe |
| `-json` | Ausgabe im JSON-Format schreiben |
| `-csv` | Ausgabe im CSV-Format schreiben |
| `-silent` | Zeige nur Ergebnisse in der Ausgabe |
| `-v, -verbose` | Ausführliche Ausgabe anzeigen |
| `-resolver` | DNS-Resolver zum Verwenden |
| `-resolver-file` | Datei mit DNS-Resolvern |
| `-system-resolver` | Systemresolves verwenden |
| `-resp-only` | Zeige nur Antwort in Ausgabe |
| `-resp` | Antwort filtern, die Zeichenfolge enthält |
| `-resp-regex` | Antwort mit Regex filtern |
| `-wildcard` | Platzhalter-Filterung aktivieren |
| `-wildcard-threshold` | Wildcard-Filtergrenzwert |
| `-walk` | DNS Walking aktivieren |
| `-walk-threads` | Anzahl der DNS Walking-Threads |
| `-c, -concurrency` | Anzahl gleichzeitiger Abfragen |
| `-rate-limit` | Maximale Anzahl von Abfragen pro Sekunde |
| `-retries` | Anzahl der Wiederholungsversuche für fehlgeschlagene Abfragen |
| `-timeout` | Timeout für DNS-Anfragen in Millisekunden |
| `-stream` | Stream-Modus für große Eingaben |
| `-hc` | Resolver-Gesundheit prüfen |
| `-trace` | DNS-Trace durchführen |
| `-version` | DNSx-Version anzeigen |DNSx verwendet eine Konfigurationsdatei, die sich an folgendem Speicherort befindet:

| Typ | Beschreibung |
|------|-------------|
| `A` | IPv4-Adresseinträge |
| `AAAA` | IPv6-Adresseinträge |
| `CNAME` | Kanonische Namenseinträge |
| `NS` | Name Server-Einträge |
| `TXT` | Textaufzeichnungen |
| `MX` | Mail Exchange-Einträge |
| `SOA` | Start der Autoritätsdatensätze |
| `PTR` | Pointer-Einträge |Sie können verschiedene Einstellungen in dieser Datei anpassen:
https://docs.projectdiscovery.io/tools/dnsx##

# Umgebungsvariablen
https://github.com/projectdiscovery/dnsx#

# Referenz
https://discord.gg/projectdiscovery##

# Befehlszeilenoptionen