17 KiB
53 - DNSのペンテスト
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする
- ハッキングトリックを共有するためにPRを提出して HackTricks および HackTricks Cloud のGitHubリポジトリに
![](/.gitbook/assets/image%20%282%29.png)
脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
基本情報
ドメインネームシステム(DNS)はインターネットの電話帳です。人間はnytimes.comやespn.comなどのドメイン名を通じてオンライン情報にアクセスします。Webブラウザはインターネットプロトコル(IP)アドレスを介して対話します。DNSはドメイン名をIPアドレスに変換して、ブラウザがインターネットリソースを読み込めるようにします。
ここから。
デフォルトポート: 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)
異なるDNSサーバー
-
DNSルートサーバー
-
最上位ドメイン(TLD)の責任はDNSルートサーバーによって保持されます。これらのサーバーは、名前サーバーが応答しない場合にのみクエリされ、ドメインとIPアドレスをリンクしてユーザーとインターネットコンテンツとの中央インターフェースとして機能します。これらのサーバーの運用は、世界中に13台存在するICANN(インターネット割り当て名前および番号協会)によって調整されます。
-
権威あるネームサーバー
-
特定のゾーンに対する権限を持つのは権威あるネームサーバーであり、それらの責任範囲内のクエリに対するバインディング回答を提供します。これらのサーバーがクエリに応答できない場合、ルートネームサーバーが責任を引き継ぎます。
-
非権威あるネームサーバー
-
特定のDNSゾーンの責任を持たないのは非権威あるネームサーバーです。代わりに、彼らは再帰的または繰り返し的なクエリを通じてDNSゾーンの情報を取得します。
-
キャッシュDNSサーバー
-
キャッシュDNSサーバーは、他の名前サーバーからの情報を一定期間キャッシュし、この保存期間は権威あるネームサーバーによって設定されます。
-
フォワーディングサーバー
-
フォワーディングサーバーは、DNSクエリを別のサーバーに転送する唯一の機能を果たします。
-
リゾルバ
-
コンピュータやルーターでローカルに名前解決を行うリゾルバは、権威あるDNSサーバーとは見なされません。
列挙
バナー取得
DNSには取得する「バナー」がありません。最も近い相当物は、ほとんどのBINDネームサーバーで機能するversion.bind. CHAOS TXT
のマジッククエリです。
dig
を使用してこのクエリを実行できます:
dig version.bind CHAOS TXT @DNS
もし機能しない場合は、リモートサーバーのバージョンを特定するためにフィンガープリント技術を使用できます -- fpdns
ツールがその1つのオプションですが、他にもあります。
nmap スクリプトでもバナーを取得できます:
--script dns-nsid
任意のレコード
ANY レコードは、DNSサーバーにすべての利用可能なエントリを返すように要求します。それが開示することを意図しているエントリをすべて返します。
dig any victim.com @<DNS_IP>
ゾーン転送
この手順は Asynchronous Full Transfer Zone
(AXFR
) と略されます。
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
より詳しい情報
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)
自動化
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の使用
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...
便利なMetasploitモジュール
auxiliary/gather/enum_dns #Perform enumeration actions
便利なnmapスクリプト
#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 - 逆BF
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
{% hint style="info" %} 内部IPアドレスに解決されるサブドメインを見つけることができる場合、そのIP範囲を持つNSsに逆DNS BFを実行してみるべきです。 {% endhint %}
これを行うための別のツール:https://github.com/amine7536/reverse-scan
逆IP範囲をクエリすることができます:https://bgp.he.net/net/205.166.76.0/24#_dns(このツールはBGPでも役立ちます)。
DNS - サブドメインBF
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 サーバー
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
DNSSec
#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
サブドメインのIPv6を収集するために "AAAA" リクエストを使用したブルートフォース。
dnsdict6 -s -t <domain>
IPv6 addresses
IPv6 addresses are 128 bits long, compared to the 32 bits of IPv4 addresses. This makes brute-forcing reverse DNS infeasible due to the vast address space. However, tools like dnsrecon
can help automate the process by querying DNS servers for PTR records associated with IPv6 addresses.
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
DNS再帰DDoS
もしDNS再帰が有効になっている場合、攻撃者はUDPパケットでoriginをスプーフィングして、DNSがレスポンスを被害者サーバーに送信するようにすることができます。攻撃者は、ANYまたはDNSSECレコードタイプを悪用することができます。なぜなら、これらはより大きなレスポンスを持つことが一般的だからです。
DNSが再帰をサポートしているかどうかを確認する方法は、ドメイン名をクエリし、レスポンスにフラグ "ra"(再帰可能)が含まれているかどうかを確認することです:
dig google.com A @<IP>
利用不可:
利用可能:
![](/.gitbook/assets/image%20%282%29.png)
脆弱性評価および侵入テストのための即座に利用可能なセットアップ。レコンからレポート作成まで、20以上のツールと機能で完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げ、シェルをポップし、楽しんでもらえる時間を与えます。
{% embed url="https://pentest-tools.com/" %}
存在しないアカウントへのメール
ターゲットドメイン内の無効なアドレスに送信されたメールによってトリガーされた配信不能通知(NDN)の調査を通じて、貴重な内部ネットワークの詳細がしばしば開示されます。
提供される配信不能レポートには、次の情報が含まれます:
- 生成サーバーは
server.example.com
として識別されました。 user@example.com
に対するエラーコード#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found
での失敗通知が返されました。- 元のメッセージヘッダーには内部IPアドレスとホスト名が開示されました。
The original message headers were modified for anonymity and now present randomized data:
Generating server: server.example.com
user@example.com
#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##
Original message headers:
Received: from MAILSERVER01.domain.example.com (192.168.1.1) by
mailserver02.domain.example.com (192.168.2.2) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Mon, 25 May 2015 14:52:22 -0700
Received: from filter.example.com (203.0.113.1) by
MAILSERVER01.domain.example.com (192.168.1.1) with Microsoft SMTP Server (TLS)
id 14.3.174.1; Mon, 25 May 2015 14:51:22 -0700
X-ASG-Debug-ID: 1432576343-0614671716190e0d0001-zOQ9WJ
Received: from gateway.domainhost.com (gateway.domainhost.com [198.51.100.37]) by
filter.example.com with ESMTP id xVNPkwaqGgdyH5Ag for user@example.com; Mon,
25 May 2015 14:52:13 -0700 (PDT)
X-Envelope-From: sender@anotherdomain.org
X-Apparent-Source-IP: 198.51.100.37
設定ファイル
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/*
危険な設定を行う際のBindサーバーの構成:
オプション | 説明 |
---|---|
allow-query |
DNSサーバーにリクエストを送信することが許可されているホストを定義します。 |
allow-recursion |
DNSサーバーに再帰的なリクエストを送信することが許可されているホストを定義します。 |
allow-transfer |
DNSサーバーからゾーン転送を受信することが許可されているホストを定義します。 |
zone-statistics |
ゾーンの統計データを収集します。 |
参考文献
- https://www.myrasecurity.com/en/knowledge-hub/dns/
- 書籍: Network Security Assessment 3rd edition
HackTricks Automatic Commands
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'
![](/.gitbook/assets/image%20%282%29.png)
脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイテーションモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学びましょう!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする
- HackTricksおよびHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。