mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
251 lines
12 KiB
Markdown
251 lines
12 KiB
Markdown
# 53 - Pentesting DNS
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
<figure><img src="../images/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin**
|
||
|
||
**Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın.** Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürebilirsiniz.
|
||
|
||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||
|
||
## **Temel Bilgiler**
|
||
|
||
**Alan Adı Sistemi (DNS)**, kullanıcıların google.com veya facebook.com gibi **hatırlaması kolay alan adları** aracılığıyla web sitelerine erişmesini sağlayarak internetin dizini olarak hizmet eder; bu, sayısal İnternet Protokolü (IP) adresleri yerine geçer. Alan adlarını IP adreslerine çevirerek, DNS web tarayıcılarının internet kaynaklarını hızlı bir şekilde yüklemesini sağlar ve çevrimiçi dünyada gezinmeyi basitleştirir.
|
||
|
||
**Varsayılan port:** 53
|
||
```
|
||
PORT STATE SERVICE REASON
|
||
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
|
||
5353/udp open zeroconf udp-response
|
||
53/udp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
|
||
```
|
||
### Farklı DNS Sunucuları
|
||
|
||
- **DNS Kök Sunucuları**: Bunlar DNS hiyerarşisinin en üstünde yer alır, üst düzey alan adlarını yönetir ve yalnızca alt düzey sunucular yanıt vermezse devreye girer. Atanan İsimler ve Numaralar için İnternet Kurumu (**ICANN**) onların işletimini denetler ve dünya genelinde 13 adet bulunmaktadır.
|
||
- **Yetkili İsim Sunucuları**: Bu sunucular, belirlenen bölgelerdeki sorgular için nihai karara sahiptir ve kesin yanıtlar sunar. Eğer yanıt veremezlerse, sorgu kök sunuculara yükseltilir.
|
||
- **Yetkisiz İsim Sunucuları**: DNS bölgeleri üzerinde sahiplikleri olmayan bu sunucular, diğer sunuculara sorgular aracılığıyla alan bilgilerini toplar.
|
||
- **Önbellekli DNS Sunucusu**: Bu tür sunucular, gelecekteki talepler için yanıt sürelerini hızlandırmak amacıyla önceki sorgu yanıtlarını belirli bir süre boyunca hafızasında tutar; önbellek süresi yetkili sunucu tarafından belirlenir.
|
||
- **Yönlendirme Sunucusu**: Basit bir rol üstlenen yönlendirme sunucuları, sorguları başka bir sunucuya iletir.
|
||
- **Çözücü**: Bilgisayarlar veya yönlendiriciler içinde entegre olan çözücüler, ad çözümlemesini yerel olarak gerçekleştirir ve yetkili olarak kabul edilmezler.
|
||
|
||
## Sayım
|
||
|
||
### **Afiş Alma**
|
||
|
||
DNS'te afiş yoktur ama `version.bind. CHAOS TXT` için sihirli sorguyu alabilirsiniz; bu, çoğu BIND isim sunucusunda çalışacaktır.\
|
||
Bu sorguyu `dig` kullanarak gerçekleştirebilirsiniz:
|
||
```bash
|
||
dig version.bind CHAOS TXT @DNS
|
||
```
|
||
Ayrıca, araç [`fpdns`](https://github.com/kirei/fpdns) sunucunun parmak izini alabilir.
|
||
|
||
Ayrıca, bir **nmap** betiği ile de banner'ı almak mümkündür:
|
||
```
|
||
--script dns-nsid
|
||
```
|
||
### **Her kayıt**
|
||
|
||
Kayıt **ANY**, DNS sunucusundan **açıklamaya istekli olduğu** tüm mevcut **girişleri** **dönmesini** isteyecektir.
|
||
```bash
|
||
dig any victim.com @<DNS_IP>
|
||
```
|
||
### **Zone Transfer**
|
||
|
||
Bu işlem `Asynchronous Full Transfer Zone` (`AXFR`) olarak kısaltılır.
|
||
```bash
|
||
dig axfr @<DNS_IP> #Try zone transfer without domain
|
||
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
|
||
fierce --domain <DOMAIN> --dns-servers <DNS_IP> #Will try toperform a zone transfer against every authoritative name server and if this doesn'twork, will launch a dictionary attack
|
||
```
|
||
### Daha fazla bilgi
|
||
```bash
|
||
dig ANY @<DNS_IP> <DOMAIN> #Any information
|
||
dig A @<DNS_IP> <DOMAIN> #Regular DNS request
|
||
dig AAAA @<DNS_IP> <DOMAIN> #IPv6 DNS request
|
||
dig TXT @<DNS_IP> <DOMAIN> #Information
|
||
dig MX @<DNS_IP> <DOMAIN> #Emails related
|
||
dig NS @<DNS_IP> <DOMAIN> #DNS that resolves that name
|
||
dig -x 192.168.0.2 @<DNS_IP> #Reverse lookup
|
||
dig -x 2a00:1450:400c:c06::93 @<DNS_IP> #reverse IPv6 lookup
|
||
|
||
#Use [-p PORT] or -6 (to use ivp6 address of dns)
|
||
```
|
||
#### Otomasyon
|
||
```bash
|
||
for sub in $(cat <WORDLIST>);do dig $sub.<DOMAIN> @<DNS_IP> | grep -v ';\|SOA' | sed -r '/^\s*$/d' | grep $sub | tee -a subdomains.txt;done
|
||
|
||
dnsenum --dnsserver <DNS_IP> --enum -p 0 -s 0 -o subdomains.txt -f <WORDLIST> <DOMAIN>
|
||
```
|
||
#### nslookup Kullanımı
|
||
```bash
|
||
nslookup
|
||
> SERVER <IP_DNS> #Select dns server
|
||
> 127.0.0.1 #Reverse lookup of 127.0.0.1, maybe...
|
||
> <IP_MACHINE> #Reverse lookup of a machine, maybe...
|
||
```
|
||
### Kullanışlı metasploit modülleri
|
||
```bash
|
||
auxiliary/gather/enum_dns #Perform enumeration actions
|
||
```
|
||
### Yararlı nmap betikleri
|
||
```bash
|
||
#Perform enumeration actions
|
||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||
```
|
||
### DNS - Ters BF
|
||
```bash
|
||
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||
dnsrecon -r 127.0.1.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||
dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||
```
|
||
> [!NOTE]
|
||
> Eğer iç IP adreslerine çözümleyen alt alan adlarını bulabiliyorsanız, o IP aralığı için alan adının NS'lerine ters dns BF gerçekleştirmeyi denemelisiniz.
|
||
|
||
Bunu yapmak için başka bir araç: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||
|
||
Ters IP aralıklarını sorgulayabilirsiniz [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (bu araç BGP ile de faydalıdır).
|
||
|
||
### DNS - Alt Alan Adları BF
|
||
```bash
|
||
dnsenum --dnsserver <IP_DNS> --enum -p 0 -s 0 -o subdomains.txt -f subdomains-1000.txt <DOMAIN>
|
||
dnsrecon -D subdomains-1000.txt -d <DOMAIN> -n <IP_DNS>
|
||
dnscan -d <domain> -r -w subdomains-1000.txt #Bruteforce subdomains in recursive way, https://github.com/rbsec/dnscan
|
||
```
|
||
### Active Directory sunucuları
|
||
```bash
|
||
dig -t _gc._tcp.lab.domain.com
|
||
dig -t _ldap._tcp.lab.domain.com
|
||
dig -t _kerberos._tcp.lab.domain.com
|
||
dig -t _kpasswd._tcp.lab.domain.com
|
||
|
||
nslookup -type=srv _kerberos._tcp.<CLIENT_DOMAIN>
|
||
nslookup -type=srv _kerberos._tcp.domain.com
|
||
|
||
nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"
|
||
```
|
||
### DNSSec
|
||
```bash
|
||
#Query paypal subdomains to ns3.isc-sns.info
|
||
nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal.com ns3.isc-sns.info
|
||
```
|
||
### IPv6
|
||
|
||
"AAAA" isteklerini kullanarak alt alan adlarının IPv6'sını toplamak için brute force.
|
||
```bash
|
||
dnsdict6 -s -t <domain>
|
||
```
|
||
IPv6 adreslerini kullanarak ters DNS brute force saldırısı
|
||
```bash
|
||
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
|
||
```
|
||
### DNS Rekürsiyonu DDoS
|
||
|
||
Eğer **DNS rekürsiyonu etkinse**, bir saldırgan **UDP paketindeki** **kaynağı** **sahteleyerek** **DNS'in yanıtı kurban sunucusuna göndermesini** sağlayabilir. Bir saldırgan, daha büyük yanıtlar alabilmek için **ANY** veya **DNSSEC** kayıt türlerini kötüye kullanabilir.\
|
||
Bir DNS'in **rekürsiyonu** destekleyip desteklemediğini **kontrol etmenin** yolu, bir alan adını sorgulamak ve yanıtın içinde **"ra" bayrağının** (_rekürsiyon mevcut_) olup olmadığını **kontrol etmektir**:
|
||
```bash
|
||
dig google.com A @<IP>
|
||
```
|
||
**Mevcut Değil**:
|
||
|
||
.png>)
|
||
|
||
**Mevcut**:
|
||
|
||
.png>)
|
||
|
||
<figure><img src="../images/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin**
|
||
|
||
**Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın.** Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürebilirsiniz.
|
||
|
||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||
|
||
### Mevcut Olmayan Hesaba Mail Gönderme
|
||
|
||
**Kurbanın alan adını kullanarak mevcut olmayan bir adrese e-posta göndermek**, kurbanın ilginç bilgiler içerebilecek **başlıklar** içeren bir teslim edilmeme bildirimi (NDN) mesajı göndermesini tetikleyebilir; bu bilgiler arasında **iç sunucuların isimleri ve IP adresleri** bulunabilir.
|
||
|
||
## Post-Exploitation
|
||
|
||
- Bir Bind sunucusunun yapılandırmasını kontrol ederken, **`allow-transfer`** parametresinin yapılandırmasını kontrol edin, çünkü bu, kimlerin alan transferi gerçekleştirebileceğini gösterir ve **`allow-recursion`** ve **`allow-query`** parametreleri, kimlerin ona özyinelemeli istekler ve istekler gönderebileceğini gösterir.
|
||
- Aşağıdakiler, makinelerde aramak için ilginç olabilecek DNS ile ilgili dosyaların isimleridir:
|
||
```
|
||
host.conf
|
||
/etc/resolv.conf
|
||
/etc/bind/named.conf
|
||
/etc/bind/named.conf.local
|
||
/etc/bind/named.conf.options
|
||
/etc/bind/named.conf.log
|
||
/etc/bind/*
|
||
```
|
||
## Referanslar
|
||
|
||
- [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
||
- Kitap: **Ağ Güvenliği Değerlendirmesi 3. baskı**
|
||
|
||
## HackTricks Otomatik Komutlar
|
||
```
|
||
Protocol_Name: DNS #Protocol Abbreviation if there is one.
|
||
Port_Number: 53 #Comma separated if there is more than one.
|
||
Protocol_Description: Domain Name Service #Protocol Abbreviation Spelled out
|
||
|
||
Entry_1:
|
||
Name: Notes
|
||
Description: Notes for DNS
|
||
Note: |
|
||
#These are the commands I run every time I see an open DNS port
|
||
|
||
dnsrecon -r 127.0.0.0/24 -n {IP} -d {Domain_Name}
|
||
dnsrecon -r 127.0.1.0/24 -n {IP} -d {Domain_Name}
|
||
dnsrecon -r {Network}{CIDR} -n {IP} -d {Domain_Name}
|
||
dig axfr @{IP}
|
||
dig axfr {Domain_Name} @{IP}
|
||
nslookup
|
||
SERVER {IP}
|
||
127.0.0.1
|
||
{IP}
|
||
Domain_Name
|
||
exit
|
||
|
||
https://book.hacktricks.xyz/pentesting/pentesting-dns
|
||
|
||
Entry_2:
|
||
Name: Banner Grab
|
||
Description: Grab DNS Banner
|
||
Command: dig version.bind CHAOS TXT @DNS
|
||
|
||
Entry_3:
|
||
Name: Nmap Vuln Scan
|
||
Description: Scan for Vulnerabilities with Nmap
|
||
Command: nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" {IP}
|
||
|
||
Entry_4:
|
||
Name: Zone Transfer
|
||
Description: Three attempts at forcing a zone transfer
|
||
Command: dig axfr @{IP} && dix axfr @{IP} {Domain_Name} && fierce --dns-servers {IP} --domain {Domain_Name}
|
||
|
||
|
||
Entry_5:
|
||
Name: Active Directory
|
||
Description: Eunuerate a DC via DNS
|
||
Command: dig -t _gc._{Domain_Name} && dig -t _ldap._{Domain_Name} && dig -t _kerberos._{Domain_Name} && dig -t _kpasswd._{Domain_Name} && nmap --script dns-srv-enum --script-args "dns-srv-enum.domain={Domain_Name}"
|
||
|
||
Entry_6:
|
||
Name: consolesless mfs enumeration
|
||
Description: DNS enumeration without the need to run msfconsole
|
||
Note: sourced from https://github.com/carlospolop/legion
|
||
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
|
||
```
|
||
<figure><img src="../images/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin**
|
||
|
||
**Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın.** Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürebilirsiniz.
|
||
|
||
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|