区域遍历DNSSEC
DNSSEC
- DNSSEC通过向现有DNS记录添加加密签名来提供一层安全性
- 这些签名与常见的记录类型(如A,AAAA,MX)一起存储
DNSSEC - 新记录
记录 | 目的 |
---|---|
RRSIG | 包含加密签名。 |
NSEC和NSEC3 | 用于明确拒绝存在DNS记录 |
DNSKEY | 包含公共签名密钥 |
DS | 包含DNSKEY记录的哈希值 |
$ dig +multi +dnssec A paypal.com
... snipped ...
;; ANSWER SECTION:
paypal.com. 54 IN A 64.4.250.33
paypal.com. 54 IN A 64.4.250.32
paypal.com. 54 IN RRSIG A 5 2 300 (
20170804231420 20170705224524 11811 paypal.com.
U5vZ/hpuquFk3M9
bg
SFlSngl3DBJTJiJZzprBSU50jgB
KKj0e8D3UkRgAntYyS3Em85ddO3AGTviWbZu/amCk7Rj
bdm2PnqkljtdZtzLmNXMZ6a5WqjyIbYwdeIVGcA/uX1V
E6P/dL4W78tkPbRfl49klvd/kwrzId9OKSzd1Cg= )
... snipped ...
DNSSEC - 经过身份验证的拒绝存在(RFC 7129)
在DNS中,当客户端查询不存在的域时,服务器必须拒绝该域的存在。由于加密签名,在DNSSEC中更难做到这一点。
认证拒绝存在的问题(DNSSEC)
- NXDOMAIN响应是通用的,攻击者可以欺骗响应
- 即时签署响应意味着性能和安全问题
- 不可能预先签署每个可能的NXDOMAIN记录,因为会有无限的可能性
NSEC
- 区域条目按字母顺序排序,NextSECure(NSEC)记录指向您查找的记录之后的记录
- 基本上,NSEC记录说,“子域X和子域Y之间没有子域。”
$ dig +dnssec @ns1.insecuredns.com firewallll.insecuredns.com
... snipped ...
firewall.insecuredns.com. 604800 IN NSEC mail.insecuredns.com. A RRSIG NSEC
... snipped ...
安装ldnsutils的ldns-walk
(部分ldnsutils
)可用于在区域遍历DNSSEC签名的NSEC区。
# On Debian/Ubuntu
$ sudo apt-get install ldnsutils
# On Redhat/CentOS
$ sudo yum install ldns
# You may need to do
$ sudo yum install -y epel-release
区域遍历NSEC - LDNS
$ ldns-walk @name_server domain_name
区域遍历NSEC - 挖掘
- 您可以按照现有域的NSEC记录的链接列表列出所有子域。
$ dig +short NSEC api.nasa.gov
apm.nasa.gov. CNAME RRSIG NSEC
$ dig +short NSEC apm.nasa.gov
apmcpr.nasa.gov. A RRSIG NSEC
从NSEC中提取子域
- 您可以使用
awk
实用程序提取特定的子域部分。
$ dig +short NSEC api.nasa.gov | awk '{print $1;}'
apm.nasa.gov.
NSEC3
- NSEC3记录就像NSEC记录,但NSEC3提供了NSEC没有的域名哈希的签名。
- 返回哈希旨在防止区域枚举(或使区域枚举变得难以执行,增加其攻击代价)。
231SPNAMH63428R68U7BV359PFPJI2FC.example.com. NSEC3 1 0 3 ABCDEF
NKDO8UKT2STOL6EJRD1EKVD1BQ2688DM A NS SOA TXT AAAA RRSIG DNSKEY NSEC3PARAM
NKDO8UKT2STOL6EJRD1EKVD1BQ2688DM.example.com. NSEC3 1 0 3 ABCDEF
231SPNAMH63428R68U7BV359PFPJI2FC A TXT AAAA RRSIG
NSEC3 - 哈希的链接列表
为域名生成NSEC3哈希
ldns-nsec3-hash
(ldnsutils的一部分)为给定的salt值和迭代次数生成域名的NSEC3哈希迭代次数和盐值可作为NSEC3记录的一部分。
$ ldns-nsec3-hash -t 3 -s ABCDEF example.com 231spnamh63428r68u7bv359pfpji2fc.
$ ldns-nsec3-hash -t 3 -s ABCDEF www.example.com nkdo8ukt2stol6ejrd1ekvd1bq2688dm.
区域遍历NSEC3
- 攻击者可以收集所有子域哈希并使用像nsec3walker,nsec3map这样的工具进行哈希离线破解,从而帮助我们自动收集NSEC3 hases并破解哈希
安装nsec3walker
- 有关安装说明,请访问https://dnscurve.org/nsec3walker.html
- 在Ubuntu 16.04上使用以下命令安装
nsec3walker
- build-essential包需要预先安装。
# Installing nsec3walker
$ wget https://dnscurve.org/nsec3walker-20101223.tar.gz
$ tar -xzf nsec3walker-20101223.tar.gz
$ cd nsec3walker-20101223
$ make
区域行走NSEC3
使用nsec3walker区域行走NSEC3保护区:
# Collect NSEC3 hashes of a domain
$ ./collect insecuredns.com > insecuredns.com.collect
# Undo the hashing, expose the sub-domain information.
$ ./unhash< insecuredns.com.collect > insecuredns.com.unhash
区域行走NSEC3
# Checking the number of sucessfully cracked sub-domain hashes
$ cat icann.org.unhash | grep "icann" | wc -l
45
# Listing only the sub-domain part from the unhashed data
$ cat icann.org.unhash | grep "icann" | awk '{print $2;}'
del.icann.org.
access.icann.org.
charts.icann.org.
communications.icann.org.
... snipped ...
redis.icann.org.
svn.icann.org.
admin.icann.org.
orbis.icann.org.
jira.icann.org.
omblog.icann.org.
pptr.icann.org.
splunk.icann.org.
nomcom.icann.org.
rssac.icann.org.
sftp.icann.org.
netscan.icann.org.