はじめに
レッドチームが行う DNS Enumeration
インターネットでは DNS(Domain Name System) がドメイン名と IP アドレスを対応付けています。
通常、DNS クエリでは次のようなレコードを取得できます。
| レコード | 説明 |
|---|---|
| A | ドメイン → IPv4 |
| AAAA | ドメイン → IPv6 |
| CNAME | 別名レコード |
| MX | メールサーバ |
| TXT | SPFや検証情報など |
しかし、DNS サーバが管理している すべてのレコードを取得できる場合があります。
それが DNS Zone Transfer(ゾーン転送) です。
レッドチームの Recon(偵察)フェーズでは、この機能が非常に重要な情報収集手段になります。
DNS Zone Transfer(ゾーン転送)とは
DNS Zone Transfer は、本来 DNS サーバ同士がゾーン情報を同期するための仕組みです。
例えば次のような構成です。
Primary DNS
│
│ AXFR
▼
Secondary DNS
プライマリ DNS が管理しているゾーン情報を
セカンダリ DNS にコピーするために使われます。
しかし設定ミスがあると、外部の誰でもゾーン情報を取得できる可能性があります。
Zone Transfer が成功すると何が分かるか
もし Zone Transfer が許可されている場合、次のような情報を取得できます。
例
example.com
mail.example.com
vpn.example.com
dev.example.com
internal.example.com
db.example.com
この情報から次のことが分かります。
- VPN サーバ
- メールサーバ
- 開発環境
- データベース
- 内部ネットワーク
つまり
企業のネットワーク構造が丸見えになる
可能性があります。
dig コマンドで Zone Transfer を試す
DNS Zone Transfer を試す最も簡単な方法が dig コマンドです。
基本構文
dig -t AXFR DOMAIN_NAME @DNS_SERVER
オプション
| オプション | 説明 |
|---|---|
| -t AXFR | Zone Transfer を要求 |
| DOMAIN_NAME | 対象ドメイン |
| @DNS_SERVER | 問い合わせる DNS サーバ |
実行例
まず NS レコードを確認します。
dig NS example.com
結果
example.com. 86400 IN NS ns1.example.com
example.com. 86400 IN NS ns2.example.com
次に Zone Transfer を試します。
dig -t AXFR example.com @ns1.example.com
成功すると次のような結果が表示されます。
example.com. 86400 IN SOA ns1.example.com admin.example.com
example.com. 86400 IN NS ns1.example.com
example.com. 86400 IN NS ns2.example.com
mail.example.com. 86400 IN A 10.10.10.5
vpn.example.com. 86400 IN A 10.10.10.20
dev.example.com. 86400 IN A 10.10.10.30
db.example.com. 86400 IN A 10.10.10.40
この結果から
- メールサーバ
- VPN サーバ
- 開発サーバ
- DB サーバ
などが確認できます。
Zone Transfer が失敗する場合
多くの企業では Zone Transfer は制限されています。
例
Transfer failed.
または
connection refused
これは正常なセキュリティ設定です。
通常は
セカンダリ DNS の IP のみ許可
されています。
なぜ DNS Zone Transfer が危険なのか
もし公開 DNS で Zone Transfer が可能だと、攻撃者は
- サブドメイン一覧
- 内部ホスト
- VPN
- 管理サーバ
- 開発サーバ
- 内部 IP
などを取得できます。
つまり
攻撃前の Recon(偵察)が非常に簡単になります。
防御方法
DNS 管理者は次の対策を行う必要があります。
Zone Transfer の制限
BIND の設定例
allow-transfer { secondary-dns-ip; };
内部 DNS と外部 DNS を分離
Internal DNS
External DNS
DNS ログ監視
AXFR リクエストを監視します。
レッドチームの調査手順
一般的な DNS Enumeration 手順
1. NS レコード取得
2. DNS サーバ特定
3. Zone Transfer 試行
例
dig NS example.com
dig -t AXFR example.com @ns1.example.com
まとめ
DNS Zone Transfer は
DNS サーバの設定ミスで発生する情報漏洩の一つです。
レッドチームにとっては
- サブドメイン列挙
- 内部サーバ発見
- 攻撃対象の特定
に非常に有効な Recon 手法です。
一方、防御側は
- AXFR 制限
- DNS 分離
- DNS ログ監視
を徹底する必要があります。